Exfasta

VersionBuild StatusLicense

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"}]
end

Update your dependencies:

$ mix deps.get

Usage

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])
:ok

parse!/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.