Exfasta
Exfasta is a simple but not very efficient (because it works on regular expressions) module for reading and writing FASTA-formatted strings.
Installation
Add Exfasta to your mix.exs dependencies:
def deps do
[{:exfasta, "~> 1.0"}]
endUpdate your dependencies:
$ mix deps.getUsage
read!/1
Reads the contents of the file from given path into a list of Exfasta.FASTA structs.
iex> Exfasta.read!("dysferlin.fasta")
[%Exfasta.FASTA{header: "NG_008694.1:5001-5100 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2",
sequence: "GCGGCCGCCGCCCAGCCAGGTGCAAAATGCCGTGTCATTGGGAGACTCCGCAGCCGGAGCATTAGATTACAGCTCGACGGAGCTCGGGAAGGGCGGCGGG"}]write!/3
Writes given Exfasta.FASTA struct or a list of such structs into a file located at given path.
Allows you to specify a list of write modes if needed.
iex> Exfasta.write!("dysferlin.fasta", [
%Exfasta.FASTA{header: "NG_008694.1:5101-5200 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2",
sequence: "GGTGGAAGATGAGCAGAAGCCCCTGTTCTCGGAACGCCGGCTGACAAGCGGGGTGAGCGCAGCCGGGGCGGGGACCCAGCCTAGCCCACTGGAGCAGCCG"},
%Exfasta.FASTA{header: "NG_008694.1:5201-5300 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2",
sequence: "GGGGTGGCCCGTTCCCCTTTAAGAGCAACTGCTCTAAGCCAGGAGCCAGAGATTCGAGCCGGCCTCGCCCAGCCAGCCCTCTCCAGCGAGGGGACCCACA"}
], [:append])
:okparse!/1
Parses the given FASTA-formatted string into a list of Exfasta.FASTA structs.
iex> Exfasta.parse!(~s"""
>NG_008694.1:5301-5400 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2
AGCGGCGCCTCGGCCCTCCCGACCTTTCCGAGCCCTCTTTGCGCCCTGGGCGCACGGGGCCCTACACGCG
CCAAGCATGCTGAGGGTCTTCATCCTCTAT
""")
[%Exfasta.FASTA{header: "NG_008694.1:5301-5400 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2",
sequence: "AGCGGCGCCTCGGCCCTCCCGACCTTTCCGAGCCCTCTTTGCGCCCTGGGCGCACGGGGCCCTACACGCGCCAAGCATGCTGAGGGTCTTCATCCTCTAT"}]to_string/1
The String.Chars protocol is implemented for the Exfasta.FASTA struct. to_string/1 turns a single Exfasta.FASTA struct into a FASTA-formatted string.
iex> to_string(%Exfasta.FASTA{
header: "NG_008694.1:5401-5500 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2",
sequence: "GCCGAGAACGTCCACACACCCGACACCGACATCAGCGATGCCTACTGCTCCGCGGTGTTTGCAGGTAGGAGGGGCCGACCACCCTCGCCCGGGGTCGGGG"})
">NG_008694.1:5401-5500 Homo sapiens dysferlin (DYSF), RefSeqGene on chromosome 2\nGCCGAGAACGTCCACACACCCGACACCGACATCAGCGATGCCTACTGCTCCGCGGTGTTTGCAGGTAGGAGGGGCCGACCACCCTCGCCCGGGGTCGGGG"License
Released under the MIT License.