def test_prepend_primerlist(monkeypatch): monkeypatch.setenv("pydna_primers", "primers_linux_line_endings.txt") from pydna import myprimers from pydna.parsers import parse_primers from importlib import reload # >3_primer # aaaaaaaa # >2_primer # cccccccc # >1_primer # gggggggg # >0_primer # tttttttt oldlist = myprimers.primerlist() reload(myprimers) newlist = parse_primers(""" >abc aaa >efg ttt """) np = myprimers.prepend_primerlist(newlist, oldlist) assert [s.name for s in parse_primers(np)] == ["5_abc", "4_efg"]
def test_too_short_primers(): f, r = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") ann = Anneal((f, r), t, limit=22) assert ann.report() == ( "Template name 48 nt linear:\n" "Primer ForwardPrimer anneals forward at position 22\n" "\n" "Primer ReversePrimer anneals reverse at position 26") assert repr(ann) == "Reaction(products = 1)" p = ann.products[0] assert str(p.seq) == str(t.seq) ann = Anneal((f, r), t, limit=23) assert ann.products == [] assert ann.report() == ("Template name 48 nt linear:\n" "No forward primers anneal...\n" "\n" "No reverse primers anneal...") assert repr(ann) == "Reaction(products = 0)"
def test_myprimers(monkeypatch): monkeypatch.setenv("pydna_primers", "primers_linux_line_endings.txt") from pydna import myprimers from pydna.parsers import parse_primers from importlib import reload reload(myprimers) newlist = parse_primers("primers_linux_line_endings.txt")[::-1] primerdict = myprimers.primerdict() assert len(primerdict) == 4 primer_list = myprimers.primerlist() assert primer_list == newlist
def test_myprimers(monkeypatch): monkeypatch.setenv("pydna_primers", "primers_linux_line_endings.txt") from pydna import myprimers from pydna.parsers import parse_primers from importlib import reload reload(myprimers) newlist = parse_primers("primers_linux_line_endings.txt")[::-1] primerdict = myprimers.dict_primers assert len(primerdict) == 4 primer_list = myprimers.list_primers assert primer_list == newlist with pytest.raises(NotImplementedError): myprimers.append_primer_list("slask")
def test_no_fwdprimer_anneal(): f0, r0 = parse_primers('''>ForwardPrimer gctact >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") f = f0 r = r0 t = t0 with pytest.raises(ValueError): pcr(f, r, t)
def test_string_arguments(): f0, r0 = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") f = str(f0.seq) r = str(r0.seq) t = str(t0.seq) assert str(pcr( (f, r), t).seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca"
def test_Primer_arguments(): f0, r0 = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") f = f0 r = r0 t = t0 assert str(pcr( f, r, t).seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca"
def test_Dseq_arguments(): from pydna.dseq import Dseq f0, r0 = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") f = Dseq(str(f0.seq)) r = Dseq(str(r0.seq)) t = Dseq(str(t0.seq)) assert str(pcr( f, r, t).seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca"
def test_feature_label(): f0, r0 = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") t0.add_feature() f = f0 r = r0 t = t0 assert str(pcr( f, r, t).seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca"
def test_Seq_arguments(): from Bio.Seq import Seq f0, r0 = parse_primers(""">ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg""") t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") f = Seq(str(f0.seq)) r = Seq(str(r0.seq)) t = Seq(str(t0.seq)) assert str(pcr( f, r, t).seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca"
def test_pcr_not_specific(): f0, r0 = parse_primers(""">ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg""") t0 = Dseqrecord( "gctactacacacgtactgactgtgctactacacacgtactgactgcctccaagatagagtcagtaaccaca" ) f = f0 r = r0 t = t0 with pytest.raises(ValueError): pcr(f, r, t)
def test_feature_note(): f0, r0 = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") t0.add_feature() del t0.features[0].qualifiers["label"] t0.features[0].qualifiers["note"] = ["note"] f = f0 r = r0 t = t0 assert str(pcr( f, r, t).seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca" assert pcr(f, r, t).name == "note"
def test_set_primer_footprint(): f, r = parse_primers(""">ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg""") t = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") ampl = pcr((f, r), t) assert len(ampl.forward_primer.footprint) == 22 assert len(ampl.reverse_primer.footprint) == 22 ampl.set_forward_primer_footprint(15) ampl.set_reverse_primer_footprint(15) assert len(ampl.forward_primer.footprint) == 15 assert len(ampl.reverse_primer.footprint) == 15
def test_Amplicon_argument(): f0, r0 = parse_primers('''>ForwardPrimer gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg''') t0 = Dseqrecord("gctactacacacgtactgactgcctccaagatagagtcagtaaccaca") f = f0 r = r0 t = t0 ampl = pcr(f, r, t) assert str(ampl.seq) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca" amplicon_from_amplicon = pcr(ampl) assert str(amplicon_from_amplicon.seq ) == "gctactacacacgtactgactgcctccaagatagagtcagtaaccaca"
pYPKa_AjiI = pYPKa.linearize(AjiI) pYPKa_A_saat = ( pYPKa_AjiI + saat_pcr_prod ).looped() pYPKa_Z_prom = read("pYPKa_Z_TEF1.gb") pYPKa_E_term = read("pYPKa_E_TPI1.gb") p567,p577,p468,p467,p568,p578 = parse_primers(''' >567_pCAPsAjiIF (23-mer) GTcggctgcaggtcactagtgag >577_crp585-557 (29-mer) gttctgatcctcgagcatcttaagaattc >468_pCAPs_release_fw (25-mer) gtcgaggaacgccaggttgcccact >467_pCAPs_release_re (31-mer) ATTTAAatcctgatgcgtttgtctgcacaga >568_pCAPsAjiIR (22-mer) GTGCcatctgtgcagacaaacg >578_crp42-70 (29-mer) gttcttgtctcattgccacattcataagt''') p = pcr(p577, p567, pYPKa_Z_prom) g = pcr(p468, p467, pYPKa_A_saat) t = pcr(p568, p578, pYPKa_E_term) pYPKpw = read("pYPKpw.gb")
def test_parse_list(): from pydna.parsers import parse_primers data = str(">1\n" "aaaa\n" ">2\n" "cccc\n") parse_primers([data, data])