comparison tRNAscan.py @ 1:65d282ef088e draft

Uploaded
author bjoern-gruening
date Tue, 19 Mar 2013 16:56:25 -0400
parents
children
comparison
equal deleted inserted replaced
0:b46d3df3eb9e 1:65d282ef088e
1 #!/usr/bin/env python
2
3 """
4
5 Converts tRNAScan output back to fasta-sequences.
6
7 """
8
9 import sys
10 from Bio import SeqIO
11 from Bio.SeqRecord import SeqRecord
12 import subprocess
13
14
15 def main(args):
16 """
17 Call from galaxy:
18 tRNAscan.py $organism $mode $showPrimSecondOpt $disablePseudo $showCodons $tabular_output $inputfile $fasta_output
19
20 tRNAscan-SE $organism $mode $showPrimSecondOpt $disablePseudo $showCodons -d -Q -y -q -b -o $tabular_output $inputfile;
21 """
22 cmd = """tRNAscan-SE -Q -y -q -b %s""" % ' '.join( args[:-1] )
23 child = subprocess.Popen(cmd.split(),
24 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
25 stdout, stderr = child.communicate()
26 return_code = child.returncode
27 if return_code:
28 sys.stdout.write(stdout)
29 sys.stderr.write(stderr)
30 sys.stderr.write("Return error code %i from command:\n" % return_code)
31 sys.stderr.write("%s\n" % cmd)
32 else:
33 sys.stdout.write(stdout)
34 sys.stdout.write(stderr)
35
36 outfile = args[-1]
37 sequence_file = args[-2]
38 tRNAScan_file = args[-3]
39
40 with open( sequence_file ) as sequences:
41 sequence_recs = SeqIO.to_dict(SeqIO.parse(sequences, "fasta"))
42
43 tRNAs = []
44 with open(tRNAScan_file) as tRNA_handle:
45 for line in tRNA_handle:
46 line = line.strip()
47 if not line or line.startswith('#'):
48 continue
49 cols = line.split()
50 iid = cols[0].strip()
51 start = int(cols[2])
52 end = int(cols[3])
53 aa = cols[4]
54 codon = cols[5]
55 rec = sequence_recs[ iid ]
56 if start > end:
57 new_rec = rec[end:start]
58 new_rec.seq = new_rec.seq.reverse_complement()
59 new_rec.description = "%s %s %s %s %s" % (rec.description, aa, codon, start, end)
60 new_rec.id = rec.id
61 new_rec.name = rec.name
62 tRNAs.append( new_rec )
63 else:
64 new_rec = rec[start:end]
65 new_rec.id = rec.id
66 new_rec.name = rec.name
67 new_rec.description = "%s %s %s %s %s" % (rec.description, aa, codon, start, end)
68 tRNAs.append( new_rec )
69
70 SeqIO.write(tRNAs, open(outfile, 'w+'), "fasta")
71
72
73 if __name__ == '__main__':
74 main(sys.argv[1:])