Mercurial > repos > glogobyte > armdb
comparison pre_mirgene.py @ 2:fc313f2879f7 draft
Uploaded
| author | glogobyte |
|---|---|
| date | Fri, 16 Oct 2020 18:40:45 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1:b6f0a1a02a30 | 2:fc313f2879f7 |
|---|---|
| 1 import subprocess | |
| 2 import argparse | |
| 3 import time | |
| 4 import urllib | |
| 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.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 |
