def test_primer_Design_with_linker():
    ''' test_primer_design'''

    b = Dseqrecord(
        "agctactgactattaggggttattctgatcatctgatctactatctgactgtactgatcta")
    l = Dseqrecord("AAATTTCCCGGG")
    c = Dseqrecord(
        "tctgatctactatctgactgtactgatctattgacactgtgatcattctagtgtattactc")

    frags = assembly_fragments((primer_design(b), l, primer_design(c)))

    asm1 = Assembly(frags)

    assert asm1.assemble_linear()[0].seguid(), (
        b + l + c).seguid() == 'l95igKB8iKAKrvvqE9CYksyNx40'

    frags = assembly_fragments(
        (primer_design(b), l, primer_design(c), primer_design(b)))

    b2 = pcr(frags[-1].forward_primer, frags[0].reverse_primer, b)

    asm2 = Assembly((b2, frags[1], frags[2]))

    assert (b + l +
            c).looped().cseguid() == asm2.assemble_circular()[0].cseguid()

    assert (b + l + c).looped().cseguid() == 'jdHXfQI5k4Sk2ESiZYfKv4oP2FI'
Exemplo n.º 2
0
def test_cut_feat():
    from pydna.readers       import read
    from pydna.amplify       import pcr
    
    from pydna.design        import primer_design
    from pydna.dseqrecord    import Dseqrecord
    
    from Bio.Restriction import EcoRI
    
    puc19 = read('pUC19_MarkBudde.gb')
    assert len(puc19.features) == 19
    puc_lin = puc19[:]
    assert len(puc_lin.features) == 19
    ampl = primer_design(puc_lin)
    pf, pr = ampl.forward_primer, ampl.reverse_primer
    pcrProd = pcr(pf, pr, puc19)
    assert len(pcrProd.features) == 21
    assert len(pcrProd.cut(EcoRI)[1].features) == 16

    def amplicon_to_dseqrecord(a):
        d = Dseqrecord(a.seq)
        d.features = a.features
        return d

    pcrProdDseqrecord = amplicon_to_dseqrecord(pcrProd)
    assert len(pcrProdDseqrecord.cut(EcoRI)[1].features) == 16
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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"
Exemplo n.º 6
0
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"
Exemplo n.º 7
0
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"
Exemplo n.º 8
0
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"
Exemplo n.º 9
0
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"
Exemplo n.º 10
0
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"
Exemplo n.º 11
0
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"
Exemplo n.º 12
0
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"
    )
Exemplo n.º 13
0
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
Exemplo n.º 14
0
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_primer_Design():
    ''' test_primer_design'''

    a = Dseqrecord(
        "atgactgctaacccttccttggtgttgaacaagatcgacgacatttcgttcgaaacttacgatg")
    b = Dseqrecord(
        "ccaaacccaccaggtaccttatgtaagtacttcaagtcgccagaagacttcttggtcaagttgcc")
    c = Dseqrecord(
        "tgtactggtgctgaaccttgtatcaagttgggtgttgacgccattgccccaggtggtcgtttcgtt")

    frags = assembly_fragments([primer_design(r) for r in (a, b, c)])

    asm = Assembly(frags)

    assert asm.assemble_linear()[0].seguid() == "1eNv3d_1PqDPP8qJZIVoA45Www8"

    frags = assembly_fragments([primer_design(r) for r in (a, b, c, a)])

    a2 = pcr(frags[-1].forward_primer, frags[0].reverse_primer, a)

    asm = Assembly((a2, frags[1], frags[2]))

    assert asm.assemble_circular()[0].cseguid(
    ) == "V3Mi8zilejgyoH833UbjJOtDMbc"
Exemplo n.º 16
0
def pcr(template,*primers):
    """ Forward PCR reaction w/ primers and template """
    return amplify.pcr(primers,template)
Exemplo n.º 17
0
pYPKa_Z = pYPKa.linearize(ZraI)
pYPKa_A = pYPKa.linearize(AjiI)
pYPKa_E = pYPKa.linearize(EcoRV)

bbdict = {"Z": pYPKa_Z, "A": pYPKa_A, "E": pYPKa_E}
fdict = {"Z": "promoter", "A": "gene", "E": "terminator"}

csvfile = "promoter_list_003.csv"
with open(csvfile) as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        ins, letter, pf, pr, template, comment = row

        temp = genbank(template)

        insert = pcr(p[int(pf)], p[int(pr)], temp)

        label = f"{ins}_promoter"

        if letter == "Z":

            insert.add_feature(type="promoter",
                               name=label,
                               ApEinfo_label=label,
                               ApEinfo_fwdcolor="#FC6600",
                               ApEinfo_revcolor="#7C4700",
                               fp=p[int(pf)].format("tab").strip(),
                               rp=p[int(pr)].format("tab").strip(),
                               reference=template)

        if letter == "E":
Exemplo n.º 18
0
>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")

from Bio.Restriction import ZraI

pYPKpw_lin = pYPKpw.linearize(ZraI) 

asm = Assembly( (pYPKpw_lin, p, g, t) )

candidate = asm.circular_products[0]
Exemplo n.º 19
0
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)
Exemplo n.º 20
0
def test_wrong_argument_type():
    with pytest.raises(TypeError):
        pcr(1, 2, 3)
Exemplo n.º 21
0
    print(insertname, pf, pr, comment)

    fp = lp[int(pf)]
    rp = lp[int(pr)]

    gbref = p.promoter().description
    gblink = p.cds().id

    template = Dseqrecord(p.promoter())

    templatesize = len(template)
    insertseguid = template.seguid()

    finalcseguidZ = (pYPKa.linearize(ZraI) +
                     pcr(fp, rp, template)).looped().cseguid()
    finalcseguidE = (pYPKa.linearize(EcoRV) +
                     pcr(fp, rp, template)).looped().cseguid()

    content = t.format(tp=insertname,
                       gbref=gbref,
                       gblink=gblink,
                       templatesize=templatesize,
                       insertseguid=insertseguid,
                       finalcseguidZ=finalcseguidZ,
                       finalcseguidE=finalcseguidE,
                       fpn=fp.name,
                       fps=fp.seq,
                       rpn=rp.name,
                       rps=rp.seq)
Exemplo n.º 22
0
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)