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