コード例 #1
0
ファイル: teaser.py プロジェクト: Cibiv/Teaser
	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"])]
コード例 #2
0
ファイル: teaser.py プロジェクト: alxsimon/Teaser
    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()
コード例 #3
0
ファイル: teaser.py プロジェクト: alxsimon/Teaser
    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)
コード例 #4
0
ファイル: teaser.py プロジェクト: Cibiv/Teaser
	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()
コード例 #5
0
ファイル: teaser.py プロジェクト: Cibiv/Teaser
	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)
コード例 #6
0
ファイル: teaser.py プロジェクト: alxsimon/Teaser
    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"])
        ]