Mercurial > repos > rnateam > viennarna_rnapaln
annotate rnafold_SHAPE.py @ 5:e6314cf1d9c6 draft
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit d9f13fd859165e4280412ec73f8f3f8b258d351d-dirty
| author | rnateam | 
|---|---|
| date | Thu, 28 Sep 2017 16:25:57 -0400 | 
| parents | d34bc25fe738 | 
| children | 
| rev | line source | 
|---|---|
| 
2
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
1 ### overcoming the problem of SHAPE data working with a single line. | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
2 ### creating multiple multiple files containg SHAPE data for a single sequence and running RNAfold for every | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
3 ### single sequence. | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
4 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
5 import os | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
6 import sys | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
7 from os import system | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
8 from Bio import SeqIO | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
9 import re | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
10 from subprocess import Popen, PIPE | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
11 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
12 params_list = sys.argv[1:] | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
13 param_list_no_shape = [s for s in params_list if not "--shape=" in s ] | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
14 shape_file = [s for s in params_list if "--shape=" in s ] | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
15 assert (len(shape_file) == 1) | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
16 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
17 shape_file = shape_file[0] | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
18 shape_file = shape_file.replace('--shape=', '') | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
19 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
20 params_no_shape = " ".join(str(x) for x in param_list_no_shape) | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
21 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
22 pattern = re.compile("^>.*$") | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
23 id_line = "" | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
24 with open(shape_file, 'r') as f: | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
25 content = f.read() | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
26 lines = content.split('\n') | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
27 for line in lines: | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
28 if pattern.match(line): | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
29 id_line = line.split()[0] | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
30 id_line = id_line[1:] | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
31 continue | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
32 else: | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
33 with open(id_line +'.tmp', "a") as clFile: | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
34 clFile.write(line + "\n") | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
35 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
36 input_file = sys.stdin | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
37 | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
38 for record in SeqIO.parse(input_file, "fasta"): | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
39 seq = ">{}\n{}".format(record.id,record.seq) | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
40 cmd = " RNAfold --shape=" + record.id + '.tmp ' + params_no_shape | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
41 p = Popen(cmd , stdin=PIPE, shell=True, stdout=PIPE, stderr=PIPE) | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
42 out,err = p.communicate(seq.encode()) | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
43 if err: | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
44 raise RuntimeError("Error in calling RNAfold\n{}\n{}\n".format(out, err)) | 
| 
 
d34bc25fe738
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit b'bd13ffd1c3e126a6dc59dd3c478347ec1b5824a3\n'
 
rnateam 
parents:  
diff
changeset
 | 
45 print (out.decode('utf-8').strip()) | 
