import matplotlib.pyplot as pp
import scipy.stats as statsx
from threading import Thread
import threading
[docs]class Dist:
def __init__(self, beta_list, sample_id, lab):
fl = Transform(beta_list, sample_id, lab)
pp.boxplot(fl, labels=[i.name for i in lab])
pp.show()
[docs]class Ttest(threading.Thread):
def __init__(self,sample1, sample2, probe, diff_id_list):
threading.Thread.__init__(self)
self.sample1 = sample1
self.sample2 = sample2
self.probe = probe
self.diff_id_list = diff_id_list
[docs] def run(self):
sample1_betas = []
sample2_betas = []
for sam1 in self.sample1:
sample1_betas.append(sam1.probes[self.probe])
for sam2 in self.sample2:
sample2_betas.append(sam2.probes[self.probe])
#print(sample1_betas)
#print(sample2_betas)
(t, pval) = statsx.ttest_ind(sample1_betas, sample2_betas)
#print(float(pval))
if float(pval) < float(0.05):
self.diff_id_list.append(self.probe)
print ("DONE...")
[docs]class TopList:
def __init__(self, samples1, samples2, all_probes):
"""
Returns differentially methylated probes among sample 1 and 2
:param samples1: list of sample 1
:param samples2: list of sample 2
:return: a list of probes ids
"""
self.samples1 = samples1
self.samples2 = samples2
self.diff_probe_id = []
no_probe_processed = 0
for probe in all_probes:
try:
#t = Thread(target= self.ttest, args = (self.samples1, self.samples2, probe))
#t.start()
back = Ttest(self.samples1, samples2, probe, self.diff_probe_id)
back.run()
except Exception as ex:
continue
finally:
no_probe_processed += 1
print(no_probe_processed)
#input()
[docs] def ttest(self, samples1, samples2, probe):
sample1_betas = []
sample2_betas = []
for sam1 in samples1:
sample1_betas.append(sam1.probes[probe])
for sam2 in samples2:
sample2_betas.append(sam2.probes[probe])
#print(sample1_betas)
#print(sample2_betas)
(t, pval) = statsx.ttest_ind(sample1_betas, sample2_betas)
#print(float(pval))
if float(pval) < float(0.05):
self.diff_probe_id.append(probe)
[docs] def get(self):
return self.diff_probe_id