11
|
1 import subprocess
|
|
2 import argparse
|
|
3 import time
|
|
4 import urllib.request
|
|
5 from multiprocessing import Process, Queue
|
|
6
|
|
7 subprocess.call(['mkdir', 'out'])
|
|
8 parser = argparse.ArgumentParser()
|
|
9 parser.add_argument("-pos", "--positions", help="", action="store")
|
|
10 parser.add_argument("-tool_dir", "--tool_directory", help="tool directory path", action="store")
|
|
11 parser.add_argument("-sym", "--symbol", help="",action="store")
|
|
12
|
|
13
|
|
14 args = parser.parse_args()
|
|
15
|
|
16 #=======================================================================================================================================
|
|
17
|
|
18 def read_url1(path):
|
|
19
|
|
20 response = urllib.request.urlopen(path)
|
|
21 data = response.read()
|
|
22 data1 = data.decode('utf-8')
|
|
23 data1 = data1.split("\n")
|
|
24 del data1[-1]
|
|
25 q.put(data1)
|
|
26
|
|
27 #===================================================================================================================================
|
|
28
|
|
29 def custom_arms_mirgene(mat_mirna,pri_mirna):
|
|
30 mat_ext=[]
|
|
31 for i in range(0,len(mat_mirna),2):
|
|
32 if args.symbol in mat_mirna[i]:
|
|
33 mat_seq=mat_mirna[i+1]
|
|
34
|
|
35 for j in range(0,len(pri_mirna),2):
|
|
36 if mat_mirna[i].split("_")[0] == pri_mirna[j].split("_")[0]:
|
|
37 temp_ext = pri_mirna[j+1].split(mat_seq)
|
|
38 mat_ext.append([mat_mirna[i],temp_ext[0][-int(args.positions):]+mat_seq+temp_ext[1][0:int(args.positions)]])
|
|
39
|
|
40 print(str(args.positions)+" positions shifted")
|
|
41 return(mat_ext)
|
|
42
|
|
43 #===================================================================================================================================
|
|
44
|
|
45 def write_custom_arms(list,name,c):
|
|
46
|
|
47 f = open(name, "w")
|
|
48 for x in list:
|
|
49 if c==1:
|
|
50 f.write(x[0]+'\n')
|
|
51 f.write(x[1]+'\n')
|
|
52 else:
|
|
53 f.write(x+'\n')
|
|
54
|
|
55 #==================================================================================================================================
|
|
56
|
|
57 if __name__=='__main__':
|
|
58
|
|
59 starttime = time.time()
|
|
60 print(args.symbol)
|
|
61 q = Queue()
|
|
62
|
|
63 mat_url = 'https://mirgenedb.org/fasta/ALL?mat=1'
|
|
64 p = [Process(target=read_url1(mat_url))]
|
|
65 star_url = 'https://mirgenedb.org/fasta/ALL?star=1'
|
|
66 p.extend([Process(target=read_url1(star_url))])
|
|
67 pri_url = 'https://mirgenedb.org/static/data/ALL/ALL--pri-30-30.fas'
|
|
68 p.extend([Process(target=read_url1(pri_url))])
|
|
69 [x.start() for x in p]
|
|
70 [x.join() for x in p]
|
|
71
|
|
72 mat_mirna=q.get()
|
|
73 star_mirna=q.get()
|
|
74
|
|
75 mat_mirna.extend(star_mirna)
|
|
76 for i in range(1,len(mat_mirna),2):
|
|
77 mat_mirna[i]=mat_mirna[i].replace("U","T")
|
|
78 pri_mirna=q.get()
|
|
79
|
|
80 mat_ext=custom_arms_mirgene(mat_mirna,pri_mirna)
|
|
81 p1 = [Process(target=write_custom_arms(mat_mirna,"shifted_mirnas.bed",0))]
|
|
82 p1.extend([Process(target=write_custom_arms(pri_mirna,"original_mirnas.bed",0))])
|
|
83 p1.extend([Process(target=write_custom_arms(mat_ext,"new_ref.fa",1))])
|
|
84 [x.start() for x in p1]
|
|
85 [x.join() for x in p1]
|
|
86
|
|
87 print('That took {} seconds'.format(time.time() - starttime))
|
|
88
|
|
89
|