def test_interpertBlast(self): tempBlast = Blast("", "") tempBlast.makeDatabase("test_data/reference.fasta") tempBlast.aliasTool("test_data/reference.fasta", "test_data") tempBlast.query = "test_data/contigs_1.fasta" tempBlast.doBlast("test_data") tempBlast.interpertBlast("test_data") self.assertEqual(len(tempBlast.hitSet), 3)
def test_doBlast(self): tempBlast = Blast("", "") tempBlast.makeDatabase("test_data/reference.fasta") tempBlast.aliasTool("test_data/reference.fasta", "test_data") tempBlast.query = "test_data/contigs_1.fasta" tempBlast.doBlast("test_data") try: outputFile = open("test_data/blastResult.csv") testResult = True for line in outputFile: if "gi|49175990|ref|NC_000913.2|" not in line: testResult = False self.assertTrue(testResult) except IOError as error: self.fail(error)
def test_aliasTool(self): tempBlast = Blast("", "") tempBlast.makeDatabase("test_data/reference.fasta") tempBlast.aliasTool("test_data/reference.fasta", "test_data") workline = "blastdbcmd -db test_data/others -info" p = subprocess.Popen(workline, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) try: stdout, stderr = p.communicate() testResult = True if p.returncode == 0: if "1 sequences; 10,000 total bases" not in stdout: testResult = False self.assertTrue(testResult) else: raise EnvironmentError(stderr) except EnvironmentError as error: self.fail(error)
genome = PrimerDesign.PrimerDesign.readRefGenome(Main.Main.genomeAdd + Main.Main.refGenomeList[0]) blastList = list() for PipMethod in methodList: fastaFile = PipMethod.rstrip()[:-3]+"fa" PrimerDesign.PrimerDesign.saveFasta(fastaFile, PrimerDesign.PrimerDesign.readGFF(PipMethod, genome)) blastList.append(fastaFile) otherGenomes = copy.copy(Main.Main.refGenomeList) del otherGenomes[0] blastThread = list() allAlias = "" for genome in otherGenomes: Blast.makeDatabase(str(genome), Main.Main.workDir) allAlias += Main.Main.workDir + "/" + genome + " " allAlias = allAlias.rstrip() Blast.aliasTool(allAlias, Main.Main.workDir) for blastItem in blastList: blastResult = Blast(blastItem, otherGenomes) blastResult.start() blastThread.append(blastResult) for blastItem in blastThread: blastItem.join() genome = PrimerDesign.PrimerDesign.readRefGenome(Main.Main.genomeAdd + Main.Main.refGenomeList[0]) for k, blastItem in enumerate(blastList): item = blastItem.rstrip()[:-2] thread = threading.Thread(PrimerDesign.PrimerDesign.generatePrimer3Input( item+"primSets", PrimerDesign.PrimerDesign.readGFF(item+"unique.gff", genome))) thread.start() Main.Main.threadList.append(thread)