In [1]:
from pydna.parsers import parse

seqs = parse(
'''
>random sequence 1 consisting of 100 bases.
agaaacgaatctctgtccccaccaactgtctcaccgatgctgagaatggatgcagcgaat
ttcgagccctcgcccgtggtcgagggctgtaacccggaca

>random sequence 2 consisting of 100 bases.
taactacgttcgcgtgggtctaccaccgaggcagaacaagggtctacgactgaagcataa
atttcaagtaggggatgcccccttgtatcccgatgagatt

>random sequence 3 consisting of 100 bases.
gagtcccgactagtcgcacgttgactaagcggtccgaaatattaagaatacacccttgtg
ccgttcagtccgttctttatacggccgcggttgccgtaac

>random sequence 4 consisting of 100 bases.
ccttaagttgtggaccctactagcttggttccatatcgtacgctcatgatttgtgtctgg
atactctctggcctcgtgcagtgtatagcttatagcataa

>random sequence 5 consisting of 100 bases.
tcccgtttatacgttgttataccgcccggtgcagctagtcgcgggtgctagatgaatcgg
cgtagataaagaggccataattgatcccatcctctaggac

>random sequence 6 consisting of 100 bases.
tgcaatatcgttctgttggtccgttggatatgattgatcttaagctgcccgggagcaaat
cttaaacctattgcgaataactttggaggagtggtaggag

>random sequence 7 consisting of 100 bases.
ggatccatgtgtacatgctagtcggtacttcactatgcgtgttacctgacaaacgcacaa
gtatctctacgctgacgactcatgaactgacacggcaatt

>random sequence 8 consisting of 100 bases.
taagtttaagacgtagttggacagtacgagttggcgcctccggaagtggtgcttcgcatg
aaagtagacacacgctaaggaggaagcccctgatacatac

>random sequence 9 consisting of 100 bases.
cagttattagcggcctgagattcaacaagagcgacgccgcgcggtggtatataggattcc
gcgaactttcagcgttggttaaggtgcgacggaaggggat

>random sequence 10 consisting of 100 bases.
aagcacaatagctcctacatatttcttacccggatcgggcgttaaggaggcaggtcgtat
aggtttgcctgaagtgcgaagacaacctgctagacacact

''')

In [2]:
from pydna.design import primer_design

prods = [primer_design(s) for s in seqs]

s1,s2,s3,s4,s5,s6,s7,s8,s9,s10 = seqs

a1,a2,a3,a4,a5,a6,a7,a8,a9,a10 = prods

assembled = "".join(str(s.seq) for s in seqs)

In [3]:
from pydna.design import assembly_fragments

frags1 = assembly_fragments(prods)

frags2 = assembly_fragments((a1,s2,a3,s4,a5,s6,a7,s8,a9,s10))

frags3 = assembly_fragments((s1,a2,s3,a4,s5,a6,s7,a8,s9,a10))

In [4]:
from pydna.assembly import Assembly

# Three different linear assemblies giving the same resulting sequence

asm1 = Assembly(frags1)
assert str(asm1.assemble_linear()[0].seq)==assembled

asm2 = Assembly(frags2)
assert str(asm2.assemble_linear()[0].seq)==assembled

asm3 = Assembly(frags3)
assert str(asm3.assemble_linear()[0].seq)==assembled

In [5]:
from pydna.amplicon import Amplicon

# how to get the primers:

# Get the fragments that are Amplicons
amplicons1 = [x for x in frags1 if isinstance(x, Amplicon)]

# Get forward and reverse primer for each Amplicon
primers1 = [(y.forward_primer, y.reverse_primer) for y in amplicons1]

# print primers for asm1
for pair in primers1:
    print(pair[0].format("fasta"))
    print(pair[1].format("fasta"))
    print()


>f100 random
agaaacgaatctctgtcc

>r100 random
cccacgcgaacgtagttatgtccgggttacagc


>f100 random
agggctgtaacccggacataactacgttcgcgtg

>r100 random
tgcgactagtcgggactcaatctcatcgggatacaa


>f100 random
ttgtatcccgatgagattgagtcccgactagtcg

>r100 random
agggtccacaacttaagggttacggcaaccgc


>f100 random
ggccgcggttgccgtaacccttaagttgtggaccc

>r100 random
aacaacgtataaacgggattatgctataagctatacactgca


>f100 random
gtatagcttatagcataatcccgtttatacgttgt

>r100 random
caacagaacgatattgcagtcctagaggatgggatc


>f100 random
gatcccatcctctaggactgcaatatcgttctgttg

>r100 random
gcatgtacacatggatccctcctaccactcctccaa


>f100 random
ttggaggagtggtaggagggatccatgtgtacatg

>r100 random
aactacgtcttaaacttaaattgccgtgtcagt


>f100 random
tgaactgacacggcaatttaagtttaagacgtagttggac

>r100 random
tcaggccgctaataactggtatgtatcaggggcttc


>f100 random
gaagcccctgatacataccagttattagcggcct

>r100 random
gtaggagctattgtgcttatccccttccgtcg


>f100 random
ggtgcgacggaaggggataagcacaatagctcctaca

>r100 random
agtgtgtctagcaggttgtc