Mercurial > repos > rnateam > viennarna_rnaeval
annotate rnafold_SHAPE.py @ 3:35e2b5fa41c6 draft
planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/rna_tools/vienna_rna commit 3103ebed1a420c7d3415b67ef532ea579edf9faa
author | rnateam |
---|---|
date | Wed, 12 Jul 2017 14:22:55 -0400 |
parents | f9fdedb38919 |
children |
rev | line source |
---|---|
2
f9fdedb38919
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. |
f9fdedb38919
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 |
f9fdedb38919
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. |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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:] |
f9fdedb38919
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 ] |
f9fdedb38919
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 ] |
f9fdedb38919
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) |
f9fdedb38919
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 |
f9fdedb38919
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] |
f9fdedb38919
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=', '') |
f9fdedb38919
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 |
f9fdedb38919
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) |
f9fdedb38919
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 |
f9fdedb38919
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("^>.*$") |
f9fdedb38919
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 = "" |
f9fdedb38919
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: |
f9fdedb38919
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() |
f9fdedb38919
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') |
f9fdedb38919
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: |
f9fdedb38919
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): |
f9fdedb38919
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] |
f9fdedb38919
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:] |
f9fdedb38919
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 |
f9fdedb38919
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: |
f9fdedb38919
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: |
f9fdedb38919
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") |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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 |
f9fdedb38919
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"): |
f9fdedb38919
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) |
f9fdedb38919
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 |
f9fdedb38919
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) |
f9fdedb38919
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()) |
f9fdedb38919
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: |
f9fdedb38919
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)) |
f9fdedb38919
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()) |