Source code for dendropy.dataio.fastawriter

# !/usr/bin/env python

##############################################################################
##  DendroPy Phylogenetic Computing Library.
##
##  Copyright 2010-2015 Jeet Sukumaran and Mark T. Holder.
##  All rights reserved.
##
##  See "LICENSE.rst" for terms and conditions of usage.
##
##  If you use this work or any portion thereof in published work,
##  please cite it as:
##
##     Sukumaran, J. and M. T. Holder. 2010. DendroPy: a Python library
##     for phylogenetic computing. Bioinformatics 26: 1569-1571.
##
##############################################################################

"""
Implementation of FASTA-format data writer.
"""

from dendropy.dataio import ioservice

class FastaWriter(ioservice.DataWriter):
    """
    Formatter for FASTA writer
    """

[docs] def __init__(self, **kwargs): """ Keyword Arguments ----------------- wrap: boolean, default: |True| If |False|, then sequences are written out as single, unbroken lines. Defaults to |True|: wraps sequences at 70 colums. """ ioservice.DataWriter.__init__(self) self.wrap = kwargs.get("wrap", True) self.wrap_width = kwargs.get("wrap_width", 70)
def _write(self, stream, taxon_namespaces=None, tree_lists=None, char_matrices=None, global_annotations_target=None): for char_matrix in char_matrices: if (self.attached_taxon_namespace is not None and char_matrix.taxon_namespace is not self.attached_taxon_namespace): continue self._write_char_matrix(stream, char_matrix) def _write_char_matrix(self, stream, char_matrix): for taxon in char_matrix: stream.write(">{}\n".format(taxon.label)) seq = char_matrix[taxon] if self.wrap: col_count = 0 for c in seq: if col_count == self.wrap_width: stream.write("\n") col_count = 0 stream.write(str(c)) col_count += 1 else: s = "".join("{}".format(c) for c in seq) stream.write("{}\n".format(s)) stream.write("\n\n")