25
|
1 #!/usr/bin/env python
|
|
2
|
|
3 """
|
|
4 antiSMASH 2.0 output plugin to write all cluster proteins to a file (*_genecluster_proteins.fa)
|
|
5 """
|
|
6 import logging
|
|
7 import textwrap
|
|
8 from os import path
|
|
9 from antismash import utils
|
|
10
|
|
11 name = "genecluster_proteins"
|
|
12 short_description = "Ouptut gene clusters as FASTA sequences"
|
|
13 # Output plugins are sorted by priority, lower numbers get run first
|
|
14 priority = 9
|
|
15
|
|
16 def write(seq_records, options):
|
|
17 """Write all cluster proteins to a file
|
|
18
|
|
19 Args:
|
|
20 seq_records (iterable): An iterable containing Bio.SeqRecords
|
|
21 options (argparse.Namespace): The options passed to the program
|
|
22 """
|
|
23 basename = seq_records[0].id
|
|
24 output_name = path.join(options.outputfoldername, "%s_genecluster_proteins.fa" % basename)
|
|
25 logging.debug("Writing seq_records to %r" % output_name)
|
|
26
|
|
27 with open(output_name, 'w+') as handle:
|
|
28 for seq_record in seq_records:
|
|
29 clusters = utils.get_cluster_features(seq_record)
|
|
30 for cluster in clusters:
|
|
31 clustertype = utils.get_cluster_type(cluster)
|
|
32 clusternr = utils.get_cluster_number(cluster)
|
|
33 for feature in utils.get_cluster_cds_features(cluster, seq_record):
|
|
34 qual = feature.qualifiers
|
|
35 fasta_header = '>%s:%s %s #%s - %s\n' % (qual['locus_tag'][0], qual['protein_id'][0], clustertype, clusternr, qual['product'][0])
|
|
36 handle.write( fasta_header )
|
|
37 handle.write( '%s\n' % '\n'.join( textwrap.wrap(qual['translation'][0], 60) ) )
|