def multicore_anova(ic50, genomic_features, drug_decode=None, maxcpu=2, sampling=0): """Using 4 cores, the entire analysis took 15 minutes using 4 CPUs (16 Oct 2015). :param ic50: a filename or :class:`IC50` instance. :return: the anova instance itself (not the results); see example below. :: from gdsctool qq qs.anova import multicore master = multicore(dataset, maxcpu=2) results = master.anova_all() from gdsctools import ANOVAReport() report = ANOVAReport(master, results) report.create_html_pages(0 .. warning:: experimental. Seems to work but sometimes hangs forever. """ print("experimental code to run the analysis with several cores") print("May takes lots or resources and slow down your system") t1 = time.time() master = ANOVA(ic50, genomic_features=genomic_features, drug_decode=drug_decode, low_memory=True) master.sampling = sampling drugs = master.ic50.drugIds t = MultiProcessing(maxcpu=maxcpu) # add all jobs (one per drug) for i, drug in enumerate(drugs): t.add_job(analyse_one_drug, master, drug) t.run() # populate the ANOVA instance with the results for this in t.results: drug = this[0] result = this[1] master.individual_anova[drug] = result print("\nTook " + str(time.time() - t1) + "seconds.") return master