def test_parse_error(): from pydna.parsers import parse data = ''' LOCUS DATA_IS_NOT_A_SEQUENCE //''' parse(data) assert parse(data) == []
def test_misc_parse(): from pydna.parsers import parse from Bio.SeqIO import read as BPread from Bio.SeqIO import parse as BPparse q = BPread("read1.gb", "gb") w = BPread("read2.gb", "gb") e = BPread("read3.fasta", "fasta") r = BPread("read4.fasta", "fasta") with open("pth1.txt", "r", encoding="utf-8") as f: a, b = BPparse(f, "gb") print("|" + a.features[13].qualifiers['label'][0] + "|") print("|" + a.format("gb")[3314:3324] + "|") assert a.features[13].qualifiers['label'][0] == '2micron 2µ' assert a.format("gb")[3268:3278] == '2micron 2µ' x, y = parse("pth1.txt") assert "".join(a.format("gb").splitlines()[1:]) == "".join( x.format("gb").splitlines()[1:]) assert "".join(b.format("gb").strip().splitlines()[4:]) == "".join( y.format("gb").splitlines()[4:])
def test_ypk(): datafiles = '''pth1.txt|pYPK0_CiGXF1_PsXYL2.gb|iM8oDuvJPMPO995IdW3B0oo0Hkc pth2.txt|pYPK0_SsXYL1_SsXYL2.gb|CB_qLhPgemW0XNLQOQEAdJKFujU pth3.txt|pYPK0_NC_006038_CiGXF1_PsXYL2.gb|48_Bek9U1wxXlq1otmE7YHjYpnk pth4.txt|pYPK0_SsXYL1_SsXYL2_ScXKS1.gb|5OxynmwQA3br0cKAG8It7VVNGrg pth5.txt|pYPK0_SsXYL1_SsXYL2_ScXKS1_ScTAL1.gb|K8z4ijkYa0hA0KEOhv7-6PNJgBM pth6.txt|pYPK0_SsXYL1_SsXYL2_ScXKS1_ScTAL1.gb|K8z4ijkYa0hA0KEOhv7-6PNJgBM pth7.txt|pYPK0_SsXYL1_SsXYL2_ScXKS1_ScTAL1.gb|K8z4ijkYa0hA0KEOhv7-6PNJgBM''' for pYPKa_A in (True, False): for datafile in textwrap.dedent(datafiles).split(): file_, name, code = datafile.split("|") print() print("############################") print("datafile = ", file_) print("pYPKa_A = ", pYPKa_A) print("############################") with open(file_, "r",) as f: text = f.read() try: shutil.rmtree(tmp) except OSError: pass pw = pathway( parse(text), tmp, pYPKa_A=pYPKa_A) s = read( os.path.join(tmp, name) ) with open(code+".txt") as f: c = f.read() assert "".join( x for x in c.lower() if not x.isspace()) == str(s.seq).lower()
def test_read_from_unicode(): from pydna.readers import read from pydna.parsers import parse with open("pth1.txt", "r", encoding="utf-8") as f: text = f.read() assert type(text) == str x, y = parse(text) assert x.format()[3268:3278] == '2micron 2µ'
def main(): try: arguments = docopt.docopt(__doc__) except docopt.DocoptExit as e: #print(e) sys.exit(0) dir_ = "ypk_assembly" if arguments["<dir>"]: dir_= str(arguments["<dir>"]) if arguments["--no_pYPKa_A"]: pYPKa_A = False else: pYPKa_A = True if arguments["--version"]: from ._version import get_versions __version__ = get_versions()["version"][:5] del get_versions print("ypkpathway version:",__version__) print(" pydna version:",pydna.__version__) if arguments["<path>"]: file_ = str(arguments["<path>"]) try: with open(file_, "r") as f: text=f.read() except IOError: print(arguments["<path>"], "could not be opened!") sys.exit(1) #dir_ = os.path.splitext(os.path.basename(file_))[0] dir_, ext = os.path.splitext(os.path.abspath(file_)) print("Assembly started! (This might take a while...)") #print(file_) #print(dir_) #print(os.path.abspath(file_)) #print(os.path.abspath(dir_)) #print(os.path.splitext(os.path.abspath(file_))) #print(os.path.basename(dir_)) #import sys;sys.exit(42) fl, log = pathway( parse(text), dir_, pYPKa_A=pYPKa_A ) with open(os.path.join(dir_, "log.txt"),"w") as f: f.write(log) filename = os.path.basename(file_) shutil.copy2( filename, os.path.join(dir_, "INDATA_"+os.path.basename((dir_)+".txt"))) print("opening IPython notebook {}".format(fl.path)) subprocess.Popen(["jupyter", "notebook", os.path.join(dir_, "pw.ipynb")])
def test_circ_pcr(): """ <-----------------------------------------------------58-> <----------------------------33-> ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc ||||||||||||||||||||||||| TCAGGTGAGGCGGAACCAACCCTCCTGGCCATGggaggggccgtggtggacgagggccccacaggcg--> |||||||||||||||||||||||||| ggcggaaccaaccctcctggccATGgactacaaagacgatgacgacaagcttgcggc <----------------------------------------------------------------------42-> <-----------------------------------------------------25-><------------17-> ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc ||||||||||||||||||||||||| ggaggggccgtggtggacgagggccccacaggcgTCAGGTGAGGCGGAACCAACCCTCCTGGCCATG |||||||||||||||||||||||||| ggcggaaccaaccctcctggccATGgactacaaagacgatgacgacaagcttgcggc """ s = parse( """ >MCT4_flaghis_rv gccgcaagcttgtcgtcatcgtctttgtagtcCATggccaggagggttggttccgcc >MCT4_flaghis_fw ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc""", ds=False, ) t = parse(""" >hej circular TCAGGTGAGGCGGAACCAACCCTCCTGGCCATGggaggggccgtggtggacgagggccccacaggcg """) p = pcr(s, t) assert ( str(p.seq).lower() == "ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggccccacaggcgtcaggtgaggcggaaccaaccctcctggccatggactacaaagacgatgacgacaagcttgcggc" )
def solveAssembly(self): printline = self.qprintline self.plainTextEdit_2.clear() self.tabWidget.setCurrentIndex(1) flbase = os.path.basename(str(self.filename)) title = 'Assembly log for ' + flbase printline('='*len(title)) printline(title) printline('='*len(title)) #print(type(self.plainTextEdit.toPlainText())) #qstringobj = self.plainTextEdit.toPlainText().encode('utf-8') #print(type(qstringobj)) #<class 'PyQt4.QtCore.QString'> #print(qstringobj.toUtf8()[3268:3279]) #print(str(qstringobj.toUtf8()[3268:3279])) #print(type(rawtext), "rawtext") #codec0 = .QTextCodec.codecForName("UTF-16"); #rawtext = unicode(codec0.fromUnicode(tmp), 'UTF-16') #unicode(qstringobj.toUtf8(), encoding="UTF-8").decode() qstringobj = self.plainTextEdit.toPlainText() #import sys;sys.exit(42) pth = parse( qstringobj ) #import sys;sys.exit(42) if len(pth)==0: printline("No of sequences found in Data window") return if self.filename is None: self.fileSaveAs() dir_, ext = os.path.splitext( str(self.filename)) fl, log = ypkpathway.pathway( pth, dir_, pYPKa_A = not self.checkbox.isChecked(), print = printline) if not fl: return with open(os.path.join(dir_, "log.txt"),"w") as f: f.write(log) shutil.copy2( str(self.filename), os.path.join(dir_, "INDATA_"+os.path.basename(str(self.filename)))) printline('') printline('\n\nAssembly finished.') printline('click on the Open pathway button above to open the pathway in the default web browser') self.nb = fl.path
def test_circ_pcr(): ''' <-----------------------------------------------------58-> <----------------------------33-> ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc ||||||||||||||||||||||||| TCAGGTGAGGCGGAACCAACCCTCCTGGCCATGggaggggccgtggtggacgagggccccacaggcg--> |||||||||||||||||||||||||| ggcggaaccaaccctcctggccATGgactacaaagacgatgacgacaagcttgcggc <----------------------------------------------------------------------42-> <-----------------------------------------------------25-><------------17-> ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc ||||||||||||||||||||||||| ggaggggccgtggtggacgagggccccacaggcgTCAGGTGAGGCGGAACCAACCCTCCTGGCCATG |||||||||||||||||||||||||| ggcggaaccaaccctcctggccATGgactacaaagacgatgacgacaagcttgcggc ''' s = parse(''' >MCT4_flaghis_rv gccgcaagcttgtcgtcatcgtctttgtagtcCATggccaggagggttggttccgcc >MCT4_flaghis_fw ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc''', ds=False) t = parse(''' >hej circular TCAGGTGAGGCGGAACCAACCCTCCTGGCCATGggaggggccgtggtggacgagggccccacaggcg ''') p = pcr(s, t) assert str(p.seq).lower( ) == 'ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggccccacaggcgtcaggtgaggcggaaccaaccctcctggccatggactacaaagacgatgacgacaagcttgcggc'
def test_parse2(): from Bio.Alphabet.IUPAC import IUPACAmbiguousDNA from pydna.parsers import parse from pydna.readers import read seqs = parse('RefDataBjorn.fas') assert len(seqs) == 771 assert list(set([len(a) for a in seqs])) == [901] for i, s in enumerate(seqs): a = s.description b = a.split() c = "|".join([b[0], b[1], b[3]]) s.id = b[2].replace(" ", "_") + "_" + str(i) s.description = "" if b[3] == "Zenion hololepis": s.id = b[3].replace(" ", "_") + "_" + str(i) s.seq.alphabet = IUPACAmbiguousDNA()
def test_read_from_file(): from pydna.readers import read from pydna.parsers import parse a = read("read1.gb") b = read("read2.gb") c = read("read3.fasta") d = read("read4.fasta") x, y = parse("pth1.txt") a.format("gb") b.format("gb") c.format("gb") d.format("gb") x.format("gb") y.format("gb") assert x.format()[3268:3278] == '2micron 2µ' assert x.features[13].qualifiers['label'][0] == u'2micron 2µ' assert str(a.seq).lower() == str(b.seq).lower() == str( c.seq).lower() == str(d.seq).lower()
def test_parse1(): from pydna.parsers import parse from pydna.readers import read ''' test parsing fasta sequences from a text''' text = ''' points....: 1 The sequence seq below represents a double stranded linear DNA molecule. >seq CTCCCCTATCACCAGGGTACCGATAGCCACGAATCT Give the sequence(s) of the fragment(s) formed after digesting seq with the restriction enzyme Acc65I in the order that they appear in seq. Use FASTA format and give the Watson strand(s) in 5'-3' direction below. Give the sequences the names frag1,frag2,... etc. >frag1 CTCCCCTATCACCAGG >frag2 GTACCGATAGCCACGAATCT *********** Question 4 *********** QuestionID: ''' result = parse(text) correct = [ 'CTCCCCTATCACCAGGGTACCGATAGCCACGAATCT', 'CTCCCCTATCACCAGG', 'GTACCGATAGCCACGAATCT' ] assert [str(s.seq) for s in result] == correct assert [s.linear for s in result] == [True, True, True] input = ''' LOCUS ScCYC1 330 bp DNA UNK 01-JAN-1980 DEFINITION ScCYC1 ACCESSION ScCYC1 VERSION ScCYC1 KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 ATGACTGAAT TCAAGGCCGG TTCTGCTAAG AAAGGTGCTA CACTTTTCAA GACTAGATGT 61 CTACAATGCC ACACCGTGGA AAAGGGTGGC CCACATAAGG TTGGTCCAAA CTTGCATGGT 121 ATCTTTGGCA GACACTCTGG TCAAGCTGAA GGGTATTCGT ACACAGATGC CAATATCAAG 181 AAAAACGTGT TGTGGGACGA AAATAACATG TCAGAGTACT TGACTAACCC AAAGAAATAT 241 ATTCCTGGTA CCAAGATGGC CTTTGGTGGG TTGAAGAAGG AAAAAGACAG AAACGACTTA 301 ATTACCTACT TGAAAAAAGC CTGTGAGTAA // ''' result = parse(input).pop() assert str(result.seq) == str(read(input).seq) correct = '''ATGACTGAATTCAAGGCCGGTTCTGCTAAGAAAGGTGCTACACTTTTCAAGACTAGATGTCTACAATGCCACACCGTGGAAAAGGGTGGCCCACATAAGGTTGGTCCAAACTTGCATGGTATCTTTGGCAGACACTCTGGTCAAGCTGAAGGGTATTCGTACACAGATGCCAATATCAAGAAAAACGTGTTGTGGGACGAAAATAACATGTCAGAGTACTTGACTAACCCAAAGAAATATATTCCTGGTACCAAGATGGCCTTTGGTGGGTTGAAGAAGGAAAAAGACAGAAACGACTTAATTACCTACTTGAAAAAAGCCTGTGAGTAA''' assert str(result.seq) == correct assert result.linear == True assert result.circular == False seqs = parse('RefDataBjorn.fas') assert len(seqs) == 771 assert list(set([len(a) for a in seqs])) == [901] pAG25 = read("pAG25.gb") assert pAG25.circular == True assert pAG25.linear == False pCAPs = read("pCAPs.gb") assert pCAPs.circular == True assert pCAPs.linear == False pUC19 = read("pUC19.gb") assert pUC19.circular == True assert pUC19.linear == False input = ''' ID example standard; DNA; UNC; 3 BP. SQ Sequence 3 BP; aaa 3 // ''' result = parse(input).pop() input = ''' ID name? standard; circular DNA; UNK; 100 BP. XX DT 25-DEC-2017 XX DE description?. XX AC id?; XX SV id? XX KW . XX OS . OC . OC . XX FH Key Location/Qualifiers SQ Sequence 100 BP; aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa 60 aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa aaaaaaaaaa 100 // ''' result = parse(input).pop()
import pytest from pydna.amplify import pcr from pydna.assembly import Assembly from pydna.dseqrecord import Dseqrecord from pydna.design import primer_design from pydna.design import assembly_fragments from pydna.design import circular_assembly_fragments from pydna.parsers import parse from pydna.primer import Primer frags = parse(''' >49 ccaaggacacaatcgagctccgatccgtactgtcgagaaacttgtatcc >50 ctctaactagtatggatagccgtgtcttcactgtgctgcggctacccatc >51 gtagtgaaacatacacgttgctcgggttcaccccggtccgttctgagtcga ''') from Bio.Restriction import BamHI bam = Dseqrecord(BamHI.site) def test_primer_design_all_Dseqrecords(): with pytest.raises(ValueError): assembly_fragments(frags, 20) def test_primer_design_all_pcr_products(): x = [primer_design(f) for f in frags]
def test_shifts(): from pydna.parsers import parse from pydna.parsers import parse_primers from pydna.amplify import pcr #from pydna.amplify import nopcr s = parse(''' >MCT4_flaghis_rv gccgcaagcttgtcgtcatcgtctttgtagtcCATggccaggagggttggttccgcc >MCT4_flaghis_fw ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggcc''', ds=False) t = parse(''' >hej circular TCAGGTGAGGCGGAACCAACCCTCCTGGCCATGggaggggccgtggtggacgagggccccacaggcg ''') p = pcr(s, t) assert str(p.seq).lower( ) == 'ccaccaccaccaccaccaccaccaccaccacggaggggccgtggtggacgagggccccacaggcgtcaggtgaggcggaaccaaccctcctggccatggactacaaagacgatgacgacaagcttgcggc' f, r, t = parse(''' #A >ForwardPrimer actacacacgtactgactg >ReversePrimer ggttactgactctatcttg >MyTemplate gctactacacacgtactgactGcctcCaagatAgagtcagtaaccaca''') a = pcr(f, r, t) assert str( a.seq).lower() == "actacacacgtactgactGcctcCaagatAgagtcagtaacc".lower() f, r, t = parse(''' #B >ForwardPrimer actacacacgtactgactg >ReversePrimer ggttactgactctatcttg >MyTemplate circular gctactacacacgtactgactgcctccaagatagagtcagtaaccaca''') # actacacacgtactgactg> # ||||||||||||||||||| # gctactacacacgtactgactgcctccaagatagagtcagtaaccaca # # cgatgatgtgtgcatgactgacggaggttctatctcagtcattggtgt # ||||||||||||||||||| # <gttctatctcagtcattgg b = pcr(f, r, t) assert a.seq == b.seq a.template = None b.template = None assert a == b f, r, t = parse(''' #C >ForwardPrimer actacacacgtactgactg >ReversePrimer ggttactgactctatcttg >MyTemplate circular cgtactgactgcctccaagatagagtcagtaaccacagctactacaca''') c = pcr(f, r, t) assert b.seq == c.seq f, r, t = parse(''' #D >ForwardPrimer actacacacgtactgactg >ReversePrimer ggttactgactctatcttg >MyTemplate48 circular tccaagatagagtcagtaaccacagctactacacacgtactgactgcc''') ''' 012345678901234567890123456789012345678901234567 ------------27-------------- actacacacgtactgactg tccaagatagagtcagtaaccacagctactacacacgtactgactgcc caagatagagtcagtaacc -- 012345678901234567890123456789012345678901234567 ------------23---------- actacacacgtactgactg actacacacgtactgactgcctccaagatagagtcagtaaccacagct caagatagagtcagtaacc ------------------------------------------ actacacacgtactgactgcctccaagatagagtcagtaacc ''' d = pcr(f, r, t) assert c.seq == d.seq f, r, t = parse(''' #E >ForwardPrimer actacacacgtactgactg >ReversePrimer ggttactgactctatcttg >MyTemplate circular gagtcagtaaccacagctactacacacgtactgactGcctccaagata''') e = pcr(f, r, t) assert d.seq == e.seq f, r, t = parse(''' #F >ForwardPrimer actacacacgtactgactg >ReversePrimer ggttactgactctatcttg >MyTemplate circular actacacacgtactgactGcctccaagatagagtcagtaaccacagct''') f = pcr(f, r, t)
def test_pcr(): ''' test pcr''' raw = [] raw.append(( '7JOV1MJBZJp2Smja/7KFGhS2SWY', parse(''' >524_pFA6aF (29-mer) cacatacgatttaggtgacactatagaac >523_AgTEF1tpR (21-mer) ggttgtttatgttcggatgtg '''), parse("pAG25.gb"), )) raw.append(( '7pPxy/bQvs4+7CaOgiywQVzUFDc', parse(''' >lowgc_f TTTCACTAGTTACTTGTAGTCGacgtgccatctgtgcagacaaacgcatcaggatat >lowgc_r AAGTTGGAAATCTAGCTTTTCTTgacgtcagcggccgcattgcaca '''), parse("pCAPs.gb"), )) raw.append(( '7JOV1MJBZJp2Smja/7KFGhS2SWY', parse(''' >524_pFA6aF (29-mer) cacatacgatttaggtgacactatagaac >523_AgTEF1tpR (21-mer) ggttgtttatgttcggatgtg '''), parse("pAG25.gb"), )) raw.append(( 'yshvYTXr9iXCnh3YytWQRDBNQzI', parse(''' >ForwardPrimer1 gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg LOCUS sequence_50_bp 46 bp DNA circular UNK 08-FEB-2013 DEFINITION sequence_50_bp circular ACCESSION sequence_50_bp VERSION sequence_50_bp KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 ccaagataga gtcagtaacc acagctacta cacacgtact gactgt // '''), )) raw.append(( 'yshvYTXr9iXCnh3YytWQRDBNQzI', parse(''' >ForwardPrimer2 gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg LOCUS template 46 bp DNA circular UNK 15-OCT-2012 DEFINITION template circular ACCESSION template VERSION template KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 ccaagataga gtcagtaacc acagctacta cacacgtact gactgt // '''), )) raw.append(( 'yshvYTXr9iXCnh3YytWQRDBNQzI', parse(''' >ForwardPrimer3 gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg LOCUS template 46 bp DNA circular UNK 08-FEB-2013 DEFINITION template circular ACCESSION template VERSION template KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 tccaagatag agtcagtaac cacagctact acacacgtac tgactg // '''), )) raw.append(( 'yshvYTXr9iXCnh3YytWQRDBNQzI', parse(''' >ForwardPrimer4 gctactacacacgtactgactg >ReversePrimer tgtggttactgactctatcttg LOCUS template 46 bp DNA circular UNK 15-OCT-2012 DEFINITION template circular ACCESSION template VERSION template KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 gtccaagata gagtcagtaa ccacagctac tacacacgta ctgact // '''), )) raw.append(( '60meNXeGKO7ahZwcIl5yXHFC3Yg', parse(''' >fw1 cacatacgatttaggtgacactatagaac >rv ggttgtttatgttcggatgtg LOCUS tm 50 bp DNA circular UNK 15-OCT-2012 DEFINITION tm circular ACCESSION tm VERSION tm KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 cacatccgaa cataaacaac ccacatacga tttaggtgac actatagaac // '''), )) raw.append(( '60meNXeGKO7ahZwcIl5yXHFC3Yg', parse(''' >fw2 cacatacgatttaggtgacactatagaac >rv ggttgtttatgttcggatgtg LOCUS tm 50 bp DNA circular UNK 15-OCT-2012 DEFINITION tm circular ACCESSION tm VERSION tm KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 acatccgaac ataaacaacc cacatacgat ttaggtgaca ctatagaacc // '''), )) raw.append(( '60meNXeGKO7ahZwcIl5yXHFC3Yg', parse(''' >fw3 cacatacgatttaggtgacactatagaac >rv ggttgtttatgttcggatgtg LOCUS tm 50 bp DNA circular UNK 15-OCT-2012 DEFINITION tm circular ACCESSION tm VERSION tm KEYWORDS . SOURCE . ORGANISM . . FEATURES Location/Qualifiers ORIGIN 1 ccacatccga acataaacaa cccacatacg atttaggtga cactatagaa // '''), )) raw.append(( 'y6ohCJ4O+8Is012DItz4F4saxNo', parse(''' >f_Eric_Ma ARATGAGTCTTCTRACCGAGGTCG >r_Eric_Ma TGAAAAGACATCYTCAAGYYTCTG >templ AGCAAAAGCAGGTAGATATTGAAAAATGAGTCTTCTAACCGAGGTCGAAACGTACGTTCTCTCTATCGTCCCGTCAGGCCCCCTCAAAGCCGAGATCGCGCAGAGACTTGAAGATGTCTCTGCAGGGAAGAACACTGATCTCGAGGCTCTCATGGAATGGCTAAAGACAAGACCAATCCTGTCACCTCTGACTAAGGGGATTTTAGGGTTTGTGTTCACGCTCACCGTGCCCAGTGAGCGAGGACTGCAGCGTAGACGCTTTGTCCAGAATGCCTTAAATGGGAATGGAGACCCAAACAACATGGACAGGGCAGTCAAACTATACAGGAAGCTGAAAAGAGAGATAACATTCCATGGGGCTAAAGAGGTTGCACTCAGCTATTCAACCGGTGCACTTGCCAGTTGCATGGGTCTCATATACAACAGGATGGGAACGGTAACCACAGAAGTAGCTTTTGGCCTGGTGTGTGCCACTTGTGAGCAGATTGCTGACTCACAGCATCGATCTCACAGACAGATGGTGACTACCACCAACCCACTAATCAGGCATGAAAACAGAATGGTGCTGGCCAGCACTACAGCTAAGGCTATGGAGCAGATGGCTGGATCGAGTGAACAGGCAGCGGAAGCCATGGAGGTTGCTAGTCAGGCTAGGCAGATGGTGCAGGCAATGAGGACAATTGGGACTCACCCTAGCTCCAGTGCCGGTCTGAAAGATGATCTTCTTGAAAATTTGCAGGCCTACCAGAAGCGGATGGGAGTGCAAATGCAGCGATTCAAGTGATCCTCTCGTTATTGCCGCAAGTATCATTGGGATCTTGCACTTGATATTGTGGATTCTTGATCGTCCTTTCTTCAAATGTATTTATCGTCGCCTTAAATACGGTTTGAAAAGAGGGCCTTCTACGGAAGGAGTGCCTGAGTCTATGAGGGAAGAGTATCGGCAGGAACAGCAGAGTGCTGTGGATGTTGACGATGGTCATTTTGTCAACATAGAGCTGGAGTAAAAAACTACCTTGTTTCTACT '''), )) for key, tst in enumerate(raw): assert tst[0] == seguid(pcr(tst[1:]).seq)