annotate predict/predict_RNAs.py @ 64:a1ce42d5258d draft

Uploaded
author tyty
date Tue, 18 Nov 2014 15:54:31 -0500
parents
children 96a827962750
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
64
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
1 #RNA structure prediction & Output and illustrate reactivities
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
2
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
3 import sys
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
4 from parse_dis_pac import *
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
5 from read_file import *
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
6 from Bio import SeqIO
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
7 import os
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
8 from rtts_plot import *
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
9 import random
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
10 import string
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
11
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
12
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
13 id_file = sys.argv[1]
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
14 seq_file = sys.argv[2]
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
15 output_file = sys.argv[4]
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
16
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
17
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
18 flag = 0
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
19 if sys.argv[3]!='None': #input reactivity file if provided
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
20 react_file = sys.argv[3]
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
21 react = parse_dist(react_file)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
22 react = react[1]
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
23 flag = 1
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
24
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
25 syspath = os.getcwd()
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
26
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
27 ids = read_t_file(id_file)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
28 sequences = SeqIO.parse(seq_file, 'fasta')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
29
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
30
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
31 seqs = {}
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
32 for seq in sequences:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
33 seqs[seq.id] = seq.seq.tostring()
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
34
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
35 if len(ids)>100: #setup a limit of the number of sequence to be predicted
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
36 print("Number of sequences exceeds limitation!")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
37 sys.exit(0)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
38
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
39
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
40 #predict RNA structures
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
41 output_directory = os.path.join(syspath, "output_files/")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
42 os.makedirs(output_directory)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
43 for i in range(len(ids)):
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
44 id_s = ids[i][0]
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
45 print(id_s)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
46 #Put RNA sequence and reactivities into files
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
47 if id_s in seqs:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
48 f = file(syspath+"temp.txt", 'w')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
49 f.write('>'+id_s)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
50 f.write('\n')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
51 f.write(seqs[id_s])
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
52 f.close()
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
53 if flag == 0:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
54 os.system("Fold "+syspath+"temp.txt"+" "+output_directory+id_s+".ct")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
55 if flag == 1:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
56 if id_s in react:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
57 f = file(syspath+"constraint.txt",'w')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
58 make_plot(react[id_s],id_s,(output_directory)) #make a plot of the distribution of the reactivites of the input RNA
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
59 #h = file(syspath+"output_f/transcript_reactivities.txt", 'w')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
60 #h.write(id_s)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
61 #h.write('\n')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
62 for j in range(0, (len(react[id_s]))):
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
63 if react[id_s][j]!='NA':
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
64 f.write(str(j+1))
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
65 f.write('\t')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
66 f.write(str(react[id_s][j]))
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
67 f.write('\n')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
68 #h.write(str(react[id_s][j])) #Output the reactivities
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
69 #h.write('\t')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
70 f.close()
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
71 #h.write('\n')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
72 #h.write('\n')
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
73 os.system("Fold "+syspath+"temp.txt"+" -sh"+" "+syspath+"constraint.txt"+" "+output_directory+id_s+".ct")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
74 else:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
75 print(id_s+" not in the data of react!")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
76 os.system("draw "+output_directory+id_s+".ct "+output_directory+"/"+id_s+".ps")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
77 else:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
78 print(id_s+" not in the data of sequences!")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
79
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
80 #Remove the unnecessary files
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
81 os.system("tar -zcvPf "+output_file+" "+output_directory+"/"+"*.* 2>"+output_directory+"log.txt")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
82 os.system("rm -f "+syspath+"temp.txt")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
83 os.system("rm -r "+output_directory)
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
84 if flag == 1:
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
85 os.system("rm -f "+syspath+"constraint.txt")
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
86 # h.close()
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
87
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
88
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
89
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
90
a1ce42d5258d Uploaded
tyty
parents:
diff changeset
91