+++ /dev/null
-"""
-Code to deal with alignments written in Fasta format (OBSOLETE).
-
-This module is considered obsolete and likely to be deprecated. Please use
-Bio.AlignIO instead for reading and writing alignments in FASTA format.
-
-This mostly just uses the regular Fasta parsing stuff written by Jeff
-to deal with all of the input and output formats.
-
-functions:
-o parse_file()
-
-classes:
-FastaAlignment"""
-# standard library
-import os
-
-# biopython
-from Bio.Align.Generic import Alignment
-from Bio import Alphabet
-from Bio.Alphabet import IUPAC
-from Bio import Fasta
-
-def parse_file(file_name, type = 'DNA'):
- """Parse the given file into a FastaAlignment object.
-
- Arguments:
- o file_name - The location of the file to parse.
- o type - The type of information contained in the file.
- """
- if type.upper() == 'DNA':
- alphabet = IUPAC.ambiguous_dna
- elif type.upper() == 'RNA':
- alphabet = IUPAC.ambiguous_rna
- elif type.upper() == 'PROTEIN':
- alphabet = IUPAC.protein
- else:
- raise ValueError("Invalid type %s passed. Need DNA, RNA or PROTEIN"
- % type)
-
- # create a new alignment object
- fasta_align = FastaAlignment(Alphabet.Gapped(alphabet))
-
- # now parse the file and fill up the alignment object
- align_file = open(file_name, 'r')
-
- parser = Fasta.RecordParser()
- iterator = Fasta.Iterator(align_file, parser)
-
- cur_align = iterator.next()
- while cur_align:
- fasta_align.add_sequence(cur_align.title, cur_align.sequence)
-
- cur_align = iterator.next()
-
- return fasta_align
-
-class FastaAlignment(Alignment):
- """Work with the Fasta Alignment format.
-
- The fasta alignment format is basically the same as the regular ol'
- Fasta format we know and love, except the sequences have gaps
- (represented by -'s).
- """
- def __init__(self, alphabet = Alphabet.Gapped(IUPAC.ambiguous_dna)):
- Alignment.__init__(self, alphabet)
-
- def __str__(self):
- """Print out a fasta version of the alignment info."""
- return_string = ''
- for item in self._records:
- new_f_record = Fasta.Record()
- new_f_record.title = item.description
- new_f_record.sequence = item.seq.data
-
- return_string = return_string + str(new_f_record) + os.linesep + os.linesep
-
- # have a extra newline, so strip two off and add one before returning
- return return_string.rstrip() + os.linesep
-
-
-
-
-