view src/genecluster_sequence/__init__.py @ 25:99435bb90725 draft

Uploaded
author bgruening
date Fri, 18 Oct 2013 03:35:17 -0400
parents
children
line wrap: on
line source

#!/usr/bin/env python

"""
    antiSMASH 2.0 output plugin to write all cluster proteins to a file (*_genecluster_proteins.fa)
"""
import logging
import textwrap
from os import path
from antismash import utils

name = "genecluster_proteins"
short_description = "Ouptut gene clusters as FASTA sequences"
# Output plugins are sorted by priority, lower numbers get run first
priority = 9

def write(seq_records, options):
    """Write all cluster proteins to a file

    Args:
        seq_records (iterable): An iterable containing Bio.SeqRecords
        options (argparse.Namespace): The options passed to the program
    """
    basename = seq_records[0].id
    output_name = path.join(options.outputfoldername, "%s_genecluster_proteins.fa" % basename)
    logging.debug("Writing seq_records to %r" % output_name)

    with open(output_name, 'w+') as handle:
        for seq_record in seq_records:
            clusters = utils.get_cluster_features(seq_record)
            for cluster in clusters:
                clustertype = utils.get_cluster_type(cluster)
                clusternr = utils.get_cluster_number(cluster)
                for feature in utils.get_cluster_cds_features(cluster, seq_record):
                    qual = feature.qualifiers
                    fasta_header = '>%s:%s %s #%s - %s\n' % (qual['locus_tag'][0], qual['protein_id'][0], clustertype, clusternr, qual['product'][0])
                    handle.write( fasta_header )
                    handle.write( '%s\n' % '\n'.join( textwrap.wrap(qual['translation'][0], 60) ) )