def test_mutli_record_fwd(self): """Test parsing multiple primer sets (NirK forward)""" h = open(os.path.join("Emboss", "NirK.primer3")) targets = list(Primer3.parse(h)) h.close() self.assertEqual(len(targets), 16) for target in targets: self.assertEqual(len(target.primers), 5) self.assertEqual(targets[0].primers[0].forward_seq, "GCAAACTGAAAAGCGGACTC") self.assertEqual(targets[0].primers[1].forward_seq, "GGGACGTACTTTCGCACAAT") self.assertEqual(targets[0].primers[2].forward_seq, "GTCTTATGCGTGGTGGAGGT") self.assertEqual(targets[0].primers[3].forward_seq, "GTACATCAACATCCGCAACG") self.assertEqual(targets[0].primers[4].forward_seq, "CGTACATCAACATCCGCAAC") self.assertEqual(targets[1].primers[0].forward_seq, "GGAAGTGCTTCTCGTTTTCG") self.assertEqual(targets[1].primers[1].forward_seq, "TACAGAGCGTCACGGATGAG") self.assertEqual(targets[1].primers[2].forward_seq, "TTGTCATCGTGCTCTTCGTC") self.assertEqual(targets[1].primers[3].forward_seq, "GACTCCAACCTCAGCTTTCG") self.assertEqual(targets[1].primers[4].forward_seq, "GGCACGAAGAAGGACAGAAG") self.assertEqual(targets[15].primers[0].forward_seq, "TGCTTGAAAATGACGCACTC") self.assertEqual(targets[15].primers[1].forward_seq, "CTCGCTGGCTAGGTCATAGG") self.assertEqual(targets[15].primers[2].forward_seq, "TATCGCACCAAACACGGTAA") self.assertEqual(targets[15].primers[3].forward_seq, "CGATTACCCTCACCGTCACT") self.assertEqual(targets[15].primers[4].forward_seq, "TATCGCAACCACTGAGCAAG")
def primer(self, direction='forward'): tmp_file = '/tmp/' + self.gi + '-' + \ self.strand + str(self.start) + str(self.end) primer3_input_file = tmp_file primer3_output_file = tmp_file + '-output' record = SeqRecord(Seq(self.sequence), id='', description='') with open(primer3_input_file, 'w') as f: SeqIO.write(record, f, 'fasta') primercl = Primer3Commandline(sequence=primer3_input_file, auto=True, hybridprobe=True) primercl.osizeopt = 20 primercl.psizeopt = 200 primercl.outfile = primer3_output_file stdout, stderr = primercl() unpack = lambda r: [[p.forward_seq, p.reverse_seq] for p in r.primers] with open(primer3_output_file, 'r') as f: record = Primer3.parse(f).next() all_primers = [[p.forward_seq, p.reverse_seq] for p in record.primers] if direction == 'forward': return all_primers[0][0] elif direction == 'reverse': return all_primers[0][1] else: return None
def test_simple_parse(self): """Make sure that we can use all single target primer3 files.""" for file in self.test_files: # First using read... with open(file) as handle: Primer3.read(handle) # Now using parse... with open(file) as handle: self.assertEqual(1, len(list(Primer3.parse(handle))))
def test_simple_parse(self): """Make sure that we can use all single target primer3 files.""" for file in self.test_files: # First using read... h = open(file, "r") Primer3.read(h) h.close() # Now using parse... h = open(file, "r") self.assertEqual(1, len(list(Primer3.parse(h)))) h.close()
def test_simple_parse(self): """Make sure that we can use all single target primer3 files.""" for file in self.test_files: # First using read... h = open(file, "r") Primer3.read(h) h.close() # Now using parse... h = open(file, "r") self.assertEqual(1, len(list(Primer3.parse(h)))) h.close()
def test_mutli_record_full(self): """Test parsing multiple primer sets (NirK full)""" h = open(os.path.join("Emboss", "NirK_full.primer3")) targets = list(Primer3.parse(h)) h.close() self.assertEqual(len(targets), 16) for target in targets: self.assertEqual(len(target.primers), 5) self.assertEqual(targets[15].primers[0].forward_seq, "ACTCACTTCGGCTGAATGCT") self.assertEqual(targets[15].primers[1].forward_seq, "GGCGATTAGCGCTGTCTATC") self.assertEqual(targets[15].primers[2].forward_seq, "ACTCACTTCGGCTGAATGCT") self.assertEqual(targets[15].primers[3].forward_seq, "TAGGCGTATAGACCGGGTTG") self.assertEqual(targets[15].primers[4].forward_seq, "AGCAAGCTGACCACTGGTTT") self.assertEqual(targets[15].primers[0].reverse_seq, "CATTTAATCCGGATGCCAAC") self.assertEqual(targets[15].primers[1].reverse_seq, "TGGCCTTTCTCTCCTCTTCA") self.assertEqual(targets[15].primers[2].reverse_seq, "ATTTAATCCGGATGCCAACA") self.assertEqual(targets[15].primers[3].reverse_seq, "CACACATTATTGGCGGTCAC") self.assertEqual(targets[15].primers[4].reverse_seq, "TCTGAAACCACCAAGGAAGC") self.assertEqual(targets[15].primers[0].internal_seq, "CCCACCAATATTTGGCTAGC") self.assertEqual(targets[15].primers[1].internal_seq, "AATCTTCTGTGCACCTTGCC") self.assertEqual(targets[15].primers[2].internal_seq, "CCCACCAATATTTGGCTAGC") self.assertEqual(targets[15].primers[3].internal_seq, "TGAGCCTGTGTTCCACACAT") self.assertEqual(targets[15].primers[4].internal_seq, "CTATGCCCTTCTGCCACAAT")
def test_multi_record_fwd(self): """Test parsing multiple primer sets (NirK forward).""" with open(os.path.join("Emboss", "NirK.primer3")) as handle: targets = list(Primer3.parse(handle)) self.assertEqual(len(targets), 16) for target in targets: self.assertEqual(len(target.primers), 5) self.assertEqual(targets[0].primers[0].forward_seq, "GCAAACTGAAAAGCGGACTC") self.assertEqual(targets[0].primers[1].forward_seq, "GGGACGTACTTTCGCACAAT") self.assertEqual(targets[0].primers[2].forward_seq, "GTCTTATGCGTGGTGGAGGT") self.assertEqual(targets[0].primers[3].forward_seq, "GTACATCAACATCCGCAACG") self.assertEqual(targets[0].primers[4].forward_seq, "CGTACATCAACATCCGCAAC") self.assertEqual(targets[1].primers[0].forward_seq, "GGAAGTGCTTCTCGTTTTCG") self.assertEqual(targets[1].primers[1].forward_seq, "TACAGAGCGTCACGGATGAG") self.assertEqual(targets[1].primers[2].forward_seq, "TTGTCATCGTGCTCTTCGTC") self.assertEqual(targets[1].primers[3].forward_seq, "GACTCCAACCTCAGCTTTCG") self.assertEqual(targets[1].primers[4].forward_seq, "GGCACGAAGAAGGACAGAAG") self.assertEqual(targets[15].primers[0].forward_seq, "TGCTTGAAAATGACGCACTC") self.assertEqual(targets[15].primers[1].forward_seq, "CTCGCTGGCTAGGTCATAGG") self.assertEqual(targets[15].primers[2].forward_seq, "TATCGCACCAAACACGGTAA") self.assertEqual(targets[15].primers[3].forward_seq, "CGATTACCCTCACCGTCACT") self.assertEqual(targets[15].primers[4].forward_seq, "TATCGCAACCACTGAGCAAG")
def GetPrimersFromFasta(inputFile): """ Reads in the sequences and melting temperatures of an eprimer32 fasta file Args: inputFile: where to look for the file Returns: list of <PrimerPair> objects, which have the information we need """ primerList = [] with open(inputFile) as fileHandle: record = Primer3.parse(fileHandle) # XXX check is len>0 primers = record.next().primers numPrimers = len(primers) size=(numPrimers*2,1) seqs= [] temps = [] for i,p in enumerate(primers): primerList.append(PrimerPair(p.forward_seq,p.reverse_tm, p.forward_seq,p.reverse_tm)) return primerList
parser = Primer3Parser() primer_record = parser.parse(open_outfile) # The result is that we get the information into a python ready format that we can readily output. # We write the forward and reverse sequences along with the sequence name to a comma separated value file. primer = primer_record.primers[0] print("%s,%s,%s" % (sequence_name, primer.forward_seq, primer.reverse_seq)) # The result is an output full of primers that you can then deal with. ###### Example 2 ############ from Bio.Emboss import Primer3 inputFile = "./wherever/your/outputfileis.out" with open(inputFile) as fileHandle: record = Primer3.parse(fileHandle) # XXX check is len>0 primers = record.next().primers numPrimers = len(primers) # you should have access to each primer, using a for loop # to check how to access the data you care about. For example: # https://github.com/biopython/biopython/issues/485 #### Example 3 ##### #!/usr/bin/env python # -*- coding: UTF-8 -*- from Bio import SeqIO from Bio.Emboss.Applications import Primer3Commandline from Bio.Seq import Seq