Mercurial > repos > glogobyte > armdb
comparison pre_mirgene.py @ 11:a1dc4c6a0c83 draft
Uploaded
author | glogobyte |
---|---|
date | Tue, 20 Oct 2020 09:41:27 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
10:6731958cdc38 | 11:a1dc4c6a0c83 |
---|---|
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 |