def main(self): self.mate.pushLogPrefix("Teaser") self.log("Init. Creating %d test datasets." % len(self.tests)) try: self.preprocessTests() except RuntimeError as e: self.mate.error("Teaser: " + str(e)) raise SystemExit force_recreate = self.mate.force_gen for name in sorted(self.tests, key=lambda k: self.tests[k]["order"]): if self.mate.run_only != False: if name not in self.mate.run_only: self.created_count += 1 self.log("Data set %s is excluded, not creating." % name) continue if self.existsTest(self.tests[name]) and not force_recreate: self.mate.getReport().generateProgress() self.created_count += 1 self.log("Data set %s already exists, not creating." % name) continue try: self.createTest(self.tests[name]) except RuntimeError as e: self.mate.error("Teaser: " + str(e)) raise SystemExit util.enterRootDir() self.mate.popLogPrefix() return [name for name in sorted(self.tests, key=lambda k: self.tests[k]["order"])]
def createTest(self, test): start_time = time.time() self.mate.getReport().generateProgress() self.log("") self.log("Creating test %s" % test["name"]) try: os.mkdir(test["dir"]) except: self.log("Failed to create test directory, probably existing") self.rm(test["dir"] + "/" + test["name"] + ".yaml") self.rm(test["dir"] + "/mapping_comparison.sam") self.rm(test["dir"] + "/reads.fastq") self.rm(test["dir"] + "/reads1.fastq") self.rm(test["dir"] + "/reads2.fastq") self.ch(test) try: if test["type"] == "simulated_teaser": if test["sampling"]["enable"]: self.makeDatasetDS(test) else: self.makeDatasetNoDS(test) elif test["type"] == "simulated_custom" or test["type"] == "real": self.makeDatasetNoSim(test) else: self.mate.error( "Teaser: Unknown test type '%s' for test '%s'." % (test["type"], test["name"])) raise except RuntimeError as e: self.mate.error("Teaser: Test creation failed for '%s': %s" % (test["name"], str(e))) raise SystemExit except Exception as e: self.mate.error( "Teaser: Test creation failed for '%s' due to an exception: %s" % (test["name"], str(e))) self.mate.log_traceback("Teaser Error") raise SystemExit end_time = time.time() test["create_time"] = end_time - start_time self.log("Took %d seconds for generating %s" % (test["create_time"], test["name"])) self.writeYAML(test) util.enterRootDir() self.created_count += 1 self.mate.getReport().generateProgress()
def makeDatasetNoSim(self, test): util.enterRootDir() if test["import_read_files"] == None or len( test["import_read_files"]) == 0: self.mate.error( "Teaser: No read files given to import for test '%s'" % test["name"]) test["type"] = None raise RuntimeError if test["paired"]: if len(test["import_read_files"]) != 2: self.mate.error( "Teaser: Expected 2 files in field 'import_read_files' for paired-end test '%s', got %d" % (test["name"], len(test["import_read_files"]))) raise RuntimeError else: if len(test["import_read_files"]) != 1: self.mate.error( "Teaser: Expected 1 file in field 'import_read_files' for paired-end test '%s', got %d" % (test["name"], len(test["import_read_files"]))) raise RuntimeError for filename in test["import_read_files"]: if not self.isFastq(filename): self.mate.error( "Teaser: Unsupported read file type of '%s' for test '%s'. Expected FASTQ." % (filename, test["name"])) raise RuntimeError if test["type"] == "simulated_custom": self.importDatasetCustom(test) elif test["type"] == "real": self.importDatasetReal(test) self.ch(test) self.log("Generate dummy alignments") aligner = fastq2sam.DummyAligner() conv = fastq2sam.Converter(aligner, "mapping_comparison.sam") if test["paired"]: conv.align_pe("reads1.fastq", "reads2.fastq") # self.mv("enc_reads1.fastq", "reads1.fastq") # self.mv("enc_reads2.fastq", "reads2.fastq") else: conv.align_se("reads.fastq") # self.mv("enc_reads.fastq", "reads.fastq") self.mv("enc_mapping_comparison.sam", "mapping_comparison.sam") self.ch(test)
def createTest(self, test): start_time = time.time() self.mate.getReport().generateProgress() self.log("") self.log("Creating test %s" % test["name"]) try: os.mkdir(test["dir"]) except: self.log("Failed to create test directory, probably existing") self.rm(test["dir"] + "/" + test["name"] + ".yaml") self.rm(test["dir"] + "/mapping_comparison.sam") self.rm(test["dir"] + "/reads.fastq") self.rm(test["dir"] + "/reads1.fastq") self.rm(test["dir"] + "/reads2.fastq") self.ch(test) try: if test["type"] == "simulated_teaser": if test["sampling"]["enable"]: self.makeDatasetDS(test) else: self.makeDatasetNoDS(test) elif test["type"] == "simulated_custom" or test["type"] == "real": self.makeDatasetNoSim(test) else: self.mate.error("Teaser: Unknown test type '%s' for test '%s'."%(test["type"],test["name"])) raise except RuntimeError as e: self.mate.error("Teaser: Test creation failed for '%s': %s"%(test["name"],str(e))) raise SystemExit except Exception as e: self.mate.error("Teaser: Test creation failed for '%s' due to an exception: %s"%(test["name"],str(e))) self.mate.log_traceback("Teaser Error") raise SystemExit end_time = time.time() test["create_time"] = end_time - start_time self.log("Took %d seconds for generating %s" % (test["create_time"], test["name"])) self.writeYAML(test) util.enterRootDir() self.created_count += 1 self.mate.getReport().generateProgress()
def makeDatasetNoSim(self,test): util.enterRootDir() if test["import_read_files"] == None or len(test["import_read_files"])==0: self.mate.error("Teaser: No read files given to import for test '%s'"%test["name"]) test["type"]=None raise RuntimeError if test["paired"]: if len(test["import_read_files"]) != 2: self.mate.error("Teaser: Expected 2 files in field 'import_read_files' for paired-end test '%s', got %d"%(test["name"],len(test["import_read_files"]))) raise RuntimeError else: if len(test["import_read_files"]) != 1: self.mate.error("Teaser: Expected 1 file in field 'import_read_files' for paired-end test '%s', got %d"%(test["name"],len(test["import_read_files"]))) raise RuntimeError for filename in test["import_read_files"]: if not self.isFastq(filename): self.mate.error("Teaser: Unsupported read file type of '%s' for test '%s'. Expected FASTQ." % (filename,test["name"]) ) raise RuntimeError if test["type"] == "simulated_custom": self.importDatasetCustom(test) elif test["type"] == "real": self.importDatasetReal(test) self.ch(test) self.log("Generate dummy alignments") aligner = fastq2sam.DummyAligner() conv = fastq2sam.Converter(aligner, "mapping_comparison.sam") if test["paired"]: conv.align_pe("reads1.fastq", "reads2.fastq") self.mv("enc_reads1.fastq", "reads1.fastq") self.mv("enc_reads2.fastq", "reads2.fastq") else: conv.align_se("reads.fastq") self.mv("enc_reads.fastq", "reads.fastq") self.mv("enc_mapping_comparison.sam", "mapping_comparison.sam") self.ch(test)
def main(self): self.mate.pushLogPrefix("Teaser") self.log("Init. Creating %d test datasets." % len(self.tests)) try: self.preprocessTests() except RuntimeError as e: self.mate.error("Teaser: " + str(e)) raise SystemExit force_recreate = self.mate.force_gen for name in sorted(self.tests, key=lambda k: self.tests[k]["order"]): if self.mate.run_only != False: if name not in self.mate.run_only: self.created_count += 1 self.log("Data set %s is excluded, not creating." % name) continue if self.existsTest(self.tests[name]) and not force_recreate: self.mate.getReport().generateProgress() self.created_count += 1 self.log("Data set %s already exists, not creating." % name) continue try: self.createTest(self.tests[name]) except RuntimeError as e: self.mate.error("Teaser: " + str(e)) raise SystemExit util.enterRootDir() self.mate.popLogPrefix() return [ name for name in sorted(self.tests, key=lambda k: self.tests[k]["order"]) ]