annotate mirbase_functions.py @ 1:561b0abcae87 draft

Uploaded
author glogobyte
date Fri, 16 Oct 2020 12:15:50 +0000
parents 258aaaa465f3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
1 import itertools
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
2 import time
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
3 import sys
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
4 import os
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
5 import urllib.request
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
6 import gzip
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
7 from multiprocessing import Process, Queue, Lock, Pool, Manager, Value
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
8 import subprocess
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
9 import argparse
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
10 from collections import OrderedDict
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
11 from matplotlib.backends.backend_pdf import PdfPages
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
12 import pandas as pd
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
13 from math import pi
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
14 import numpy as np
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
15 import matplotlib.pyplot as plt
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
16 from matplotlib.ticker import PercentFormatter
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
17 import seaborn as sns
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
18 import scipy.stats as stats
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
19 from plotnine import *
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
20 import math
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
21 import re
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
22 import matplotlib.ticker as mtick
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
23 import copy
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
24
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
25
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
26 """---------------------- Simple Functions -----------------------"""
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
27
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
28 # Read a file and return it as a list
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
29 def read(path, flag):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
30 if flag == 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
31 with open(path) as fp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
32 file=fp.readlines()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
33 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
34 return file
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
35
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
36 if flag == 1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
37 with open(path) as fp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
38 file = fp.read().splitlines()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
39 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
40 return file
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
41
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
42 # Write a list to a txt file
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
43 def write(path, list):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
44 with open(path,'w') as fp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
45 for x in list:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
46 fp.write(str("\t".join(x[1:-1])))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
47 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
48
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
49 """---------------------- RNA-seq Functions ----------------------"""
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
50
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
51 # Detect the longest common substring sequence between two mirnas
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
52 def longestSubstring(str1, str2):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
53
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
54 from difflib import SequenceMatcher
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
55 # initialize SequenceMatcher object with
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
56 # input string
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
57 seqMatch = SequenceMatcher(None, str1, str2)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
58
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
59 # find match of longest sub-string
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
60 # output will be like Match(a=0, b=0, size=5)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
61 match = seqMatch.find_longest_match(0, len(str1), 0, len(str2))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
62
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
63 # print longest substring
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
64 if (match.size != 0):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
65 return str1[match.a: match.a + match.size]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
66 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
67 print('No longest common sub-string found')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
68
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
69
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
70
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
71 ########################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
72
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
73 def collapse_sam(path):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
74
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
75 ini_sam=read(path,0)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
76 main_sam = [x.rstrip("\n").split("\t") for x in ini_sam if "@" not in x.split("\t")[0]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
77 intro_sam = [x.rstrip("\n").split("\t") for x in ini_sam if "@" in x.split("\t")[0]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
78
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
79 uni_seq = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
80 for x in main_sam:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
81
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
82 if [x[2], x[9]] not in uni_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
83 uni_seq.append([x[2], x[9]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
84
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
85 new_main_sam=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
86 incr_num=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
87 for i in range(len(uni_seq)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
88 count=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
89 incr_num+=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
90 for y in main_sam:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
91 if uni_seq[i][1]==y[9] and uni_seq[i][0]==y[2]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
92 count+=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
93 temp=y
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
94 temp[10]="~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
95 temp[0]=str(incr_num)+"-"+str(count)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
96 new_main_sam.append(temp)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
97
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
98 new_sam=intro_sam+new_main_sam
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
99
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
100 return new_sam
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
101
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
102 #################################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
103
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
104 def duplicate_chroms_isoforms(List):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
105
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
106 dupes=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
107
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
108 for num in range(len(List)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
109
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
110 if [List[num][9],List[num][0],List[num][2]] not in dupes :
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
111 dupes.append([List[num][9],List[num][0],List[num][2]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
112
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
113 for x in List:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
114 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
115 if x[9]==y[0] and x[0]==y[1] and x[2].split("_")[0]==y[2].split("_")[0] and x[2]!=y[2]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
116 y.append(x[2])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
117
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
118
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
119 double_List = [x[:] for x in List]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
120
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
121 chr_order=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
122 for x in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
123 temp = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
124 for i in range(2,len(x)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
125 if x[i].split("chr")[1].split("(")[0].isdigit():
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
126 temp.append(int(x[i].split("chr")[1].split("(")[1][0]+x[i].split("chr")[1].split("(")[0]))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
127 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
128 temp.append(x[i].split("chr")[1][0:4])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
129
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
130 for z in temp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
131 if 'X(-)'==z or 'Y(-)'==z or 'X(+)'==z or 'Y(+)'==z:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
132 temp = [str(j) for j in temp]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
133 temp=list(set(temp))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
134 temp.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
135 chr_order.append(temp)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
136
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
137 final_dupes=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
138 for i in range(len(dupes)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
139 final_dupes.append([dupes[i][0],dupes[i][2].split("_")[0],dupes[i][1]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
140 for x in chr_order[i]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
141 result = re.match("[-+]?\d+$", str(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
142 if len(chr_order[i]) == len(set(chr_order[i])):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
143 if result is not None:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
144
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
145 if int(x)<0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
146 final_dupes[i][1]=final_dupes[i][1]+"_chr"+str(abs(int(x)))+"(-)"
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
147 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
148 final_dupes[i][1] = final_dupes[i][1] + "_chr" + str(abs(int(x)))+"(+)"
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
149 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
150 final_dupes[i][1] = final_dupes[i][1] + "_chr" + str(x)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
151 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
152 if result is not None:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
153 if int(x) < 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
154 final_dupes[i][1] = final_dupes[i][1] +dupes[i][2].split("_")[1]+ "_chr" + str(abs(int(x))) + "(-)"
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
155 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
156 final_dupes[i][1] = final_dupes[i][1] +dupes[i][2].split("_")[1]+ "_chr" + str(abs(int(x))) + "(+)"
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
157 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
158 final_dupes[i][1] = final_dupes[i][1] +dupes[i][2].split("_")[1]+ "_chr" + str(x)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
159
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
160 final_dupes.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
161 final_dupes=list(final_dupes for final_dupes,_ in itertools.groupby(final_dupes))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
162
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
163 for i in range(len(double_List)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
164 for x in final_dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
165
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
166 if double_List[i][9] == x[0] and double_List[i][0] == x[2] and len(double_List[i][2].split("_")) >3 and double_List[i][2].split("_")[0]==x[1].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
167 gg=str("_"+double_List[i][2].split("_")[-2]+"_"+double_List[i][2].split("_")[-1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
168 double_List[i][2] = x[1]+gg
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
169
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
170 if double_List[i][9]==x[0] and double_List[i][0]== x[2] and len(double_List[i][2].split("_"))==3 and double_List[i][2].split("_")[0]==x[1].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
171 double_List[i][2]=x[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
172 List[i][2] = x[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
173
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
174 List.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
175 new_list=list(List for List,_ in itertools.groupby(List))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
176
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
177 double_List.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
178 new_double_List = list(double_List for double_List, _ in itertools.groupby(double_List))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
179
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
180 return new_list, new_double_List
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
181
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
182
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
183 #############################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
184
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
185 def sam(mature_mirnas,path,name,con,l,samples,data,names,unmap_seq,samples_mirna_names,deseq,LHE_names,umi,ini_sample,unmap_counts):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
186
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
187 # read the sam file
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
188 ini_sam=read(path,0)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
189 new_main_sam = [x.rstrip("\n").split("\t") for x in ini_sam if "@" not in x.split("\t")[0]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
190 unique_seq = [x for x in new_main_sam if x[1] == '0' and len(x[9])>=18 and len(x[9])<=26]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
191
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
192 sorted_uni_arms = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
193
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
194 for i in range(len(mature_mirnas)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
195 tmp_count_reads = 0 # calculate the total number of reads
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
196 tmp_count_seq = 0 # calculate the total number of sequences
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
197 for j in range(len(unique_seq)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
198
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
199 if "{" in unique_seq[j][2].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
200 official=unique_seq[j][2].split("_")[0][:-4]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
201 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
202 official=unique_seq[j][2].split("_")[0]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
203
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
204 if mature_mirnas[i].split(" ")[0][1:] == official:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
205
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
206 temp_mature = mature_mirnas[i+1].strip().replace("U", "T")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
207 off_part = longestSubstring(temp_mature, unique_seq[j][9])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
208
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
209 mat_diff = temp_mature.split(off_part)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
210 mat_diff = [len(mat_diff[0]), len(mat_diff[1])]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
211
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
212 unique_diff = unique_seq[j][9].split(off_part)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
213 unique_diff = [len(unique_diff[0]), len(unique_diff[1])]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
214
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
215 # Problem with hsa-miR-8485
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
216 if mat_diff[1]!=0 and unique_diff[1]!=0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
217 unique_seq[j]=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
218 pre_pos = 0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
219 post_pos = 0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
220
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
221 elif mat_diff[0]!=0 and unique_diff[0]!=0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
222 unique_seq[j]=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
223 pre_pos = 0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
224 post_pos = 0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
225
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
226 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
227 pre_pos = mat_diff[0]-unique_diff[0]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
228 post_pos = unique_diff[1]-mat_diff[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
229 tmp_count_reads = tmp_count_reads + int(unique_seq[j][0].split("-")[1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
230 tmp_count_seq = tmp_count_seq+1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
231
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
232 if pre_pos != 0 or post_pos != 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
233 if pre_pos == 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
234 unique_seq[j][2] = unique_seq[j][2] + "_" +str(pre_pos) + "_" + '{:+d}'.format(post_pos)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
235 elif post_pos == 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
236 unique_seq[j][2] = unique_seq[j][2] + "_" + '{:+d}'.format(pre_pos) + "_" + str(post_pos)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
237 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
238 unique_seq[j][2] = unique_seq[j][2]+"_"+'{:+d}'.format(pre_pos)+"_"+'{:+d}'.format(post_pos)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
239
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
240 for x in range(unique_seq.count(1)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
241 unique_seq.remove(1)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
242 if tmp_count_reads != 0 and tmp_count_seq != 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
243 sorted_uni_arms.append([mature_mirnas[i].split(" ")[0][1:], tmp_count_seq, tmp_count_reads])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
244 sorted_uni_arms = sorted(sorted_uni_arms, key=lambda x: x[1], reverse=True)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
245 dedup_unique_seq,double_fil_uni_seq=duplicate_chroms_isoforms(unique_seq)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
246
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
247 for y in sorted_uni_arms:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
248 counts=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
249 seqs=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
250 for x in double_fil_uni_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
251 if y[0]==x[2].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
252 counts+=int(x[0].split("-")[1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
253 seqs+=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
254
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
255 y[1]=seqs
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
256 y[2]=counts
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
257
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
258 LHE=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
259 l.acquire()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
260 if con=="c":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
261 LHE.extend(z[2] for z in double_fil_uni_seq)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
262 for y in double_fil_uni_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
263 samples_mirna_names.append([y[2],y[9]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
264 deseq.append([[x[2], x[0].split('-')[1], x[9]] for x in double_fil_uni_seq])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
265 LHE_names.extend(LHE)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
266 unmap_seq.value += sum([1 for x in new_main_sam if x[1] == '4'])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
267 unmap_counts.value += sum([int(x[0].split("-")[1]) for x in new_main_sam if x[1] == '4'])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
268 names.append(name)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
269 samples.append(dedup_unique_seq)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
270 data.append([con,name,double_fil_uni_seq,sorted_uni_arms])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
271 ini_sample.append(new_main_sam)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
272
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
273 if con=="t":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
274 LHE.extend(z[2] for z in double_fil_uni_seq)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
275 for y in double_fil_uni_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
276 samples_mirna_names.append([y[2],y[9]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
277 deseq.append([[x[2], x[0].split('-')[1], x[9]] for x in double_fil_uni_seq])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
278 LHE_names.extend(LHE)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
279 unmap_seq.value += sum([1 for x in new_main_sam if x[1] == '4'])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
280 unmap_counts.value += sum([int(x[0].split("-")[1]) for x in new_main_sam if x[1] == '4'])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
281 names.append(name)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
282 samples.append(dedup_unique_seq)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
283 data.append([con,name,double_fil_uni_seq,sorted_uni_arms])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
284 ini_sample.append(new_main_sam)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
285 l.release()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
286
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
287
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
288 ######################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
289
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
290 """
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
291
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
292 Read a sam file from Bowtie and do the followings:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
293
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
294 1) Remove reverse stranded mapped reads
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
295 2) Remove unmapped reads
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
296 3) Remove all sequences with reads less than 11 reads
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
297 4) Sort the arms with the most sequences in decreading rate
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
298 5) Sort the sequences of every arm with the most reads in decreasing rate
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
299 6) Calculate total number of sequences of every arm
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
300 7) Calculate total number of reads of sequences of every arm.
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
301 8) Store all the informations in a txt file
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
302
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
303 """
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
304
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
305 def non_sam(mature_mirnas,path,name,con,l,data,names,n_deseq,n_samples_mirna_names,n_LHE_names):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
306
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
307 ini_sam=read(path,0)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
308 new_main_sam = [x.rstrip("\n").split("\t") for x in ini_sam if "@" not in x.split("\t")[0]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
309 unique_seq=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
310 unique_seq = [x for x in new_main_sam if x[1] == '4' and len(x[9])>=18 and len(x[9])<=26]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
311
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
312 uni_seq=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
313 # Calculate the shifted positions for every isomir and add them to the name of it
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
314 sorted_uni_arms = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
315 for i in range(1,len(mature_mirnas),2):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
316 tmp_count_reads = 0 # calculate the total number of reads
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
317 tmp_count_seq = 0 # calculate the total number of sequences
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
318
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
319 for j in range(len(unique_seq)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
320
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
321 temp_mature = mature_mirnas[i].strip().replace("U", "T")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
322
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
323 if temp_mature in unique_seq[j][9]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
324
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
325 off_part = longestSubstring(temp_mature, unique_seq[j][9])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
326
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
327 mat_diff = temp_mature.split(off_part)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
328 mat_diff = [len(mat_diff[0]), len(mat_diff[1])]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
329
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
330 unique_diff = unique_seq[j][9].split(off_part)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
331 if len(unique_diff)<=2:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
332 unique_diff = [len(unique_diff[0]), len(unique_diff[1])]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
333
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
334 pre_pos = mat_diff[0]-unique_diff[0]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
335 post_pos = unique_diff[1]-mat_diff[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
336
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
337 lengthofmir = len(off_part) + post_pos
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
338 if pre_pos == 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
339 tmp_count_reads = tmp_count_reads + int(unique_seq[j][0].split("-")[1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
340 tmp_count_seq = tmp_count_seq + 1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
341
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
342 if pre_pos == 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
343
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
344 t_name=unique_seq[j].copy()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
345 t_name[2]=mature_mirnas[i - 1].split(" ")[0][1:] + "__" + str(pre_pos) + "_" + '{:+d}'.format(post_pos) + "_" + str(unique_seq[j][9][len(off_part):])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
346 uni_seq.append(t_name)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
347
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
348
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
349 if tmp_count_reads != 0 and tmp_count_seq != 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
350 sorted_uni_arms.append([mature_mirnas[i-1].split(" ")[0][1:], tmp_count_seq, tmp_count_reads])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
351
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
352
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
353 sorted_uni_arms = sorted(sorted_uni_arms, key=lambda x: x[1], reverse=True)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
354 unique_seq = list(map(list, OrderedDict.fromkeys(map(tuple,uni_seq))))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
355
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
356 LHE=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
357
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
358 l.acquire()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
359 if con=="c":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
360 LHE.extend(x[2] for x in unique_seq if x[2]!="*")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
361 for x in unique_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
362 if x[2]!="*":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
363 n_samples_mirna_names.append([x[2],x[9]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
364 n_deseq.append([[x[2], x[0].split('-')[1], x[9]] for x in unique_seq if x[2]!="*"])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
365 n_LHE_names.extend(LHE)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
366 names.append(name)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
367 data.append([con,name,unique_seq,sorted_uni_arms])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
368
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
369
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
370 if con=="t":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
371 LHE.extend(x[2] for x in unique_seq if x[2]!="*")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
372 for x in unique_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
373 if x[2]!="*":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
374 n_samples_mirna_names.append([x[2],x[9]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
375 n_deseq.append([[x[2], x[0].split('-')[1], x[9]] for x in unique_seq if x[2]!="*"])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
376 n_LHE_names.extend(LHE)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
377 names.append(name)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
378 data.append([con,name,unique_seq,sorted_uni_arms])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
379 l.release()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
380
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
381 #####################################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
382 def deseq2_temp(samples_mirna_names,deseq,con,l):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
383
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
384 samples_mirna_names.sort(key=lambda x:[0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
385 for i in range(len(deseq)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
386 for y in samples_mirna_names:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
387 flag = 0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
388 for x in deseq[i]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
389 if y[0] == x[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
390 flag = 1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
391 break
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
392
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
393 if flag == 0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
394 deseq[i].append([y[0], "0", y[1]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
395
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
396 [deseq[i].sort(key=lambda x: x[0]) for i, _ in enumerate(deseq)]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
397 deseq_final = [[x[0],x[2]] for x in deseq[0]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
398 [deseq_final[z].append(deseq[i][j][1]) for z,_ in enumerate(deseq_final) for i, _ in enumerate(deseq) for j,_ in enumerate(deseq[i]) if deseq_final[z][0] == deseq[i][j][0]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
399
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
400 l.acquire()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
401 if con=="c":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
402 q1.put(deseq_final)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
403
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
404 if con=="t":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
405 q2.put(deseq_final)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
406 l.release()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
407
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
408
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
409 ####################################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
410
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
411 def main_temp(LH2E, LH2E_names, LH8E, LH8E_names,flag,names_con,names_tre,filter_LH8E,filter_LH2E,raw_LH8E,raw_LH2E,per,count):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
412
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
413 LH8E_add_names = [x for x in LH2E_names if x not in LH8E_names]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
414 LH2E_add_names = [x for x in LH8E_names if x not in LH2E_names]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
415
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
416 LH8E_add_names.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
417 LH2E_add_names.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
418 LH8E_add_names = list(LH8E_add_names for LH8E_add_names,_ in itertools.groupby(LH8E_add_names))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
419 LH2E_add_names = list(LH2E_add_names for LH2E_add_names,_ in itertools.groupby(LH2E_add_names))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
420
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
421 LH2E.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
422 LH8E.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
423 LH2E = list(LH2E for LH2E,_ in itertools.groupby(LH2E))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
424 LH8E = list(LH8E for LH8E,_ in itertools.groupby(LH8E))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
425
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
426 print("LHE_names")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
427 print([len(LH8E_add_names),len(LH2E_add_names)])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
428 print([len(LH8E),len(LH2E)])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
429
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
430 zeros=["0"]*(len(LH8E[0])-2)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
431 [LH8E_add_names[i].extend(zeros) for i,_ in enumerate(LH8E_add_names)]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
432 LH8E=LH8E+LH8E_add_names
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
433
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
434 zeros=["0"]*(len(LH2E[0])-2)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
435 [LH2E_add_names[i].extend(zeros) for i,_ in enumerate(LH2E_add_names)]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
436 LH2E=LH2E+LH2E_add_names
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
437
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
438 dupes=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
439 final_LH2E =[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
440
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
441 for num,_ in enumerate(LH2E):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
442
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
443 if LH2E[num][1] not in final_LH2E and LH2E[num][0] not in final_LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
444 final_LH2E.append(LH2E[num][1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
445 final_LH2E.append(LH2E[num][0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
446 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
447 dupes.append(LH2E[num][1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
448
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
449
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
450 dupes=list(set(dupes))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
451
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
452 dupes=[[x] for x in dupes]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
453
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
454 for x in LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
455 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
456 if x[1]==y[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
457 fl=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
458 if len(y)==1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
459 y.append(x[0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
460 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
461 for i in range(1,len(y)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
462 if y[i].split("_")[0]==x[0].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
463 fl=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
464 if len(x[0])<len(y[i]):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
465 del y[i]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
466 y.append(x[0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
467 break
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
468
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
469 if fl==0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
470 y.append((x[0]))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
471
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
472 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
473 if len(y)>2:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
474 for i in range(len(y)-1,1,-1):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
475 y[1]=y[1]+"/"+y[i]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
476 del y[i]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
477
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
478 for x in LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
479 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
480 if x[1]==y[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
481 x[0]=y[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
482
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
483 for x in LH8E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
484 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
485 if x[1]==y[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
486 x[0]=y[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
487
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
488
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
489 LH2E.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
490 LH2E=list(LH2E for LH2E,_ in itertools.groupby(LH2E))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
491
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
492 LH8E.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
493 LH8E=list(LH8E for LH8E,_ in itertools.groupby(LH8E))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
494
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
495 if int(per)!=-1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
496 percent=int(per)/100
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
497 print(percent)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
498 print(count)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
499
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
500 c_col_filter=round(percent*(len(LH2E[1])-2))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
501 t_col_filter=round(percent*(len(LH8E[1])-2))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
502
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
503 for i, _ in enumerate(LH2E):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
504 c_cols=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
505 t_cols=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
506
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
507 c_cols=sum([1 for j in range(len(LH2E[i])-2) if int(LH2E[i][j+2])>=int(count)])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
508 t_cols=sum([1 for j in range(len(LH8E[i])-2) if int(LH8E[i][j+2])>=int(count)])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
509
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
510 if c_cols>=c_col_filter or t_cols>=t_col_filter:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
511 filter_LH8E.append(LH8E[i])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
512 filter_LH2E.append(LH2E[i])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
513
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
514 raw_LH2E.extend(LH2E)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
515 raw_LH8E.extend(LH8E)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
516
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
517 ##################################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
518
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
519 def write_main(raw_LH2E, raw_LH8E, fil_LH2E, fil_LH8E, names_con, names_tre, flag, per, n1, n2):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
520
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
521 if flag == 1 and int(per)!=-1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
522 fp = open('Counts/Filtered '+n2 +' Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
523 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
524 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
525 for y in names_tre:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
526 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
527
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
528 for x in fil_LH8E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
529 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
530 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
531
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
532 fp = open('Counts/Filtered '+n1+' Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
533 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
534 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
535 for y in names_con:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
536 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
537
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
538 for x in fil_LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
539 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
540 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
541
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
542
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
543 if flag == 2 and int(per)!=-1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
544 fp = open('Counts/Filtered '+n2+' Non-Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
545 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
546 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
547 for y in names_tre:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
548 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
549
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
550
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
551 for x in fil_LH8E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
552 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
553 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
554
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
555 fp = open('Counts/Filtered '+n1+' Non-Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
556 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
557 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
558 for y in names_con:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
559 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
560
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
561 for x in fil_LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
562 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
563 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
564
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
565
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
566 if flag == 1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
567 fp = open('Counts/Raw '+n2+' Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
568 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
569 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
570 for y in names_tre:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
571 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
572
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
573 for x in raw_LH8E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
574 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
575 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
576
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
577 fp = open('Counts/Raw '+n1+' Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
578 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
579 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
580 for y in names_con:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
581 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
582
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
583 for x in raw_LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
584 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
585 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
586
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
587
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
588 if flag == 2:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
589 fp = open('Counts/Raw '+n2+' Non-Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
590 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
591 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
592 for y in names_tre:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
593 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
594
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
595
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
596 for x in raw_LH8E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
597 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
598 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
599
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
600 fp = open('Counts/Raw '+n1+' Non-Templated Counts', 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
601 fp.write("Name\t")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
602 fp.write("Sequence")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
603 for y in names_con:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
604 fp.write("\t"+y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
605
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
606 for x in raw_LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
607 fp.write("\n%s" % "\t".join(x))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
608 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
609
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
610
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
611 #########################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
612
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
613 def ssamples(names,samp,folder,pro):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
614
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
615 for i in range(2,len(samp[0])):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
616
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
617 fp = open(folder+names[i-2]+'.txt','w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
618 fp.write("miRNA id"+"\t"+names[i-2]+"\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
619
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
620 for x in samp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
621 fp.write("%s" % "\t".join([x[0],x[i]])+"\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
622 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
623
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
624 ##################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
625
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
626 def DB_write(con,name,unique_seq,sorted_uni_arms,f):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
627
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
628 if f==1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
629 # Write a txt file with all the information
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
630 if con=="c":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
631 fp = open('split1/'+name, 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
632
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
633 fp.write("%s\t%-42s\t%s\n\n" % ("Number of Reads","Name of isomir","Sequence"))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
634 if con=="t":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
635 fp = open('split2/'+name, 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
636 fp.write("%s\t%-42s\t%s\n\n" % ("Number of Reads","Name of isomir","Sequence"))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
637
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
638
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
639 for i in range(len(sorted_uni_arms)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
640 temp = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
641 for j in range(len(unique_seq)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
642
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
643 if sorted_uni_arms[i][0] in unique_seq[j][2].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
644
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
645 temp.append(unique_seq[j])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
646
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
647 temp = sorted(temp, key=lambda x: int(x[0].split('-')[1]), reverse=True)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
648 fp.write("*********************************************************************************************************\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
649 fp.write("%-8s\t%-22s\t%-25s\t%-30s\t%s\n" % ("|",str(sorted_uni_arms[i][0]),"Sequence count = "+str(sorted_uni_arms[i][1]),"Total reads = "+str(sorted_uni_arms[i][2]),"|"))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
650 fp.write("*********************************************************************************************************\n\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
651 [fp.write("%-8s\t%-40s\t%s\n" % (x[0].split("-")[1], x[2],x[9])) for x in temp]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
652 fp.write("\n" + "\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
653 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
654
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
655 if f==2:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
656
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
657 if con=="c":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
658 fp = open('split3/'+name, 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
659 fp.write("%s\t%-42s\t%s\n\n" % ("Number of Reads","Name of isomir","Sequence"))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
660 if con=="t":
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
661 fp = open('split4/'+name, 'w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
662 fp.write("%s\t%-42s\t%s\n\n" % ("Number of Reads","Name of isomir","Sequence"))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
663
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
664
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
665 for i in range(len(sorted_uni_arms)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
666 temp = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
667 for j in range(len(unique_seq)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
668 if sorted_uni_arms[i][0]==unique_seq[j][2].split("__")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
669 temp.append(unique_seq[j])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
670 if temp!=[]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
671 temp = sorted(temp, key=lambda x: int(x[0].split('-')[1]), reverse=True)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
672 fp.write("*********************************************************************************************************\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
673 fp.write("%-8s\t%-22s\t%-25s\t%-30s\t%s\n" % ("|",str(sorted_uni_arms[i][0]),"Sequence count = "+str(sorted_uni_arms[i][1]),"Total reads = "+str(sorted_uni_arms[i][2]),"|"))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
674 fp.write("*********************************************************************************************************\n\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
675 [fp.write("%-8s\t%-40s\t%s\n" % (x[0].split("-")[1], x[2],x[9])) for x in temp]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
676 fp.write("\n" + "\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
677 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
678
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
679
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
680 ##########################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
681
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
682 def new_mat_seq(pre_unique_seq,mat_mirnas,l):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
683
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
684 unique_iso = []
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
685 for x in pre_unique_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
686 if len(x[2].split("_"))==3:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
687 for y in pre_unique_seq:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
688 if x[2] in y[2] and int(x[0].split("-")[1])<int(y[0].split("-")[1]):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
689 if any(y[2] in lst2 for lst2 in unique_iso)==False:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
690 y[2]=">"+y[2]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
691 unique_iso.append(y)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
692 l.acquire()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
693 for x in unique_iso:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
694 mat_mirnas.append(x[2])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
695 mat_mirnas.append(x[9])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
696 l.release()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
697
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
698 #########################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
699
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
700 def merging_names(LH2E_copy,new):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
701
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
702 dupes=[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
703 final_LH2E =[]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
704
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
705 for num in range(len(LH2E_copy)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
706
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
707 if LH2E_copy[num][1] not in final_LH2E and LH2E_copy[num][0] not in final_LH2E:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
708 final_LH2E.append(LH2E_copy[num][1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
709 final_LH2E.append(LH2E_copy[num][0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
710 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
711 dupes.append(LH2E_copy[num][1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
712
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
713 dupes=list(set(dupes))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
714
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
715 for i in range(len(dupes)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
716 dupes[i]=[dupes[i]]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
717
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
718 for x in LH2E_copy:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
719 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
720 if x[1]==y[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
721 fl=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
722 if len(y)==1:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
723 y.append(x[0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
724 else:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
725 for i in range(1,len(y)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
726 if y[i].split("_")[0]==x[0].split("_")[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
727 fl=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
728 if len(x[0])<len(y[i]):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
729 del y[i]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
730 y.append(x[0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
731 break
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
732
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
733 if fl==0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
734 y.append((x[0]))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
735
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
736 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
737 if len(y)>2:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
738 for i in range(len(y)-1,1,-1):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
739 y[1]=y[1]+"/"+y[i]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
740 del y[i]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
741
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
742
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
743 for x in LH2E_copy:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
744 for y in dupes:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
745 if x[1]==y[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
746 x[0]=y[1]
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
747
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
748 LH2E_copy.sort()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
749 LH2E_copy=list(LH2E_copy for LH2E_copy,_ in itertools.groupby(LH2E_copy))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
750
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
751 new.extend(LH2E_copy)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
752
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
753
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
754 ######################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
755
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
756 def ssamples1(tem_names,tem_samp,non_names,non_samp,folder,pro):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
757
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
758 for i in range(2,len(tem_samp[0])):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
759
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
760 fp = open(folder+tem_names[i-2]+'.txt','w')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
761 fp.write("miRNA id"+"\t"+tem_names[i-2]+"\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
762
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
763 for x in tem_samp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
764 fp.write("%s" % "\t".join([x[0],x[i]])+"\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
765
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
766 for j in range(len(non_names)):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
767 if non_names[j]==tem_names[i-2]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
768 for x in non_samp:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
769 fp.write("%s" % "\t".join([x[0],x[j+2]])+"\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
770 fp.close()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
771
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
772 ###################################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
773
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
774 def download_matures(matures,org_name):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
775
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
776 #url = 'ftp://mirbase.org/pub/mirbase/21/mature.fa.gz'
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
777 url = 'ftp://mirbase.org/pub/mirbase/CURRENT/mature.fa.gz'
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
778 data = urllib.request.urlopen(url).read()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
779 file_mirna = gzip.decompress(data).decode('utf-8')
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
780 file_mirna = file_mirna.split("\n")
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
781
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
782 for i in range(0,len(file_mirna)-1,2):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
783
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
784 if org_name in file_mirna[i]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
785 matures.append(file_mirna[i])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
786 matures.append(file_mirna[i+1])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
787
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
788 ###################################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
789 def non_template_ref(sc,st,all_isoforms):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
790
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
791 pre_uni_seq_con = list(sc)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
792 pre_uni_seq_tre = list(st)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
793
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
794 for x in pre_uni_seq_con:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
795 for y in x:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
796 if ">"+y[2] not in all_isoforms and ")_" in y[2] :
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
797 all_isoforms.append(">"+y[2])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
798 all_isoforms.append(y[9])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
799
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
800
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
801 for x in pre_uni_seq_tre:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
802 for y in x:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
803 if ">"+y[2] not in all_isoforms and ")_" in y[2]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
804 all_isoforms.append(">"+y[2])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
805 all_isoforms.append(y[9])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
806
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
807 ################################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
808
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
809 def deseqe2(sample,mir_names,l,new_d,sample_name,sample_order):
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
810
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
811 for y in mir_names:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
812 flag=0
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
813 for x in sample:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
814 if y[0]==x[0]:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
815 flag=1
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
816 break
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
817 if flag==0:
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
818 sample.append([y[0],"0",y[1]])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
819
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
820 sample.sort(key=lambda x: x[0])
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
821 sample=list(sample for sample,_ in itertools.groupby(sample))
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
822
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
823 l.acquire()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
824 new_d.append(sample)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
825 sample_order.append(sample_name)
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
826 l.release()
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
827
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
828 ###############################################################################################################################################################################################
258aaaa465f3 Uploaded
glogobyte
parents:
diff changeset
829