Assembly primers

55 views
Skip to first unread message

briann...@gmail.com

unread,
Oct 5, 2016, 11:56:47 AM10/5/16
to pydna
Hi all,
I am having an issue with my assembly PCR parameters.

So basically I am trying to Gibson assemble some synthetic DNA into a plasmid.
I've done this before, using a protocol from NEB. Now I am trying to make the process
more generic by using pyDNA to give me the right PCR parameters for a gene + plasmid.
I have tried the protocol shown at the bottom of this post and it did not work for me.

There are several possible issues (and by the way I am far from an expert at cloning and assembly):

1. The Tms estimated do not seem to match the Tms I get from online tools.

I am assuming here that the "dbd" temperature (49.1 and 56.9) means the melting
temperature of the gene-specific part of the primer. However, the numbers I get from
online tools are much closer to the other temperature given (62.8 and 69.3).
The melting temperature for the complete 30nt primer is estimated at >>70C.

It seems like this is a known problem, so the Tms are just wrong for now.
https://github.com/BjornFJohansson/pydna/issues/22

2. Why is the annealing temperature so high?

If I assume that the melting temperatures are incorrect,
but that everything else works, then I don't understand why
it chooses such a high Ta.
I don't see how the gene-specific part of the primer could ever anneal at 66C.

The NEB protocol I used that worked had similar primers and a melting temperature of 61C,
which was 0.1C above the Tm of higher of the two gene-specific primers.
By that logic, I would expect the PCR program Ta to be around 57C.
(I realize this would not work with the wrong Tms, but still.)

3. A third possible issue is that I have been using NEB's Q5 enzyme instead of Pfu.
It's just worked better for me. I could switch to Pfu if necessary.
I believe they are very similar though, so a robust program should work for either I think.

I have integrated pyDNA into my workflow, and I have it spitting out primers and PCR programs, but for now it just doesn't work.
I'm not sure what to do to remedy the situation...
I really like using this library!



The program:

5AGGAGGACAGCTATGTCGAAAGGA...CATGGAATGGATGAACTGTATAAA3
|||||||||||||||||||||||| tm 49.1 (dbd) 62.8
3GTACCTTACCTACTTGACATATTTTTAAGTGACCGGCAGCAAAATGTTGCAGCA5
5ACTCTAGAGGATCCCCGGGTACCGAGCTCGAGGAGGACAGCTATGTCGAAAGGA3
|||||||||||||||||||||||| tm 56.9 (dbd) 69.3
3TCCTCCTGTCGATACAGCTTTCCT...GTACCTTACCTACTTGACATATTT5


Pfu-Sso7d (rate 15s/kb)
Three-step| 30 cycles | |Breslauer1986,SantaLucia1998
98.0°C |98.0°C | |SaltC 50mM
__________|_____ 72.0°C |72.0°C|Primer1C 1.0µM
00min30s |10s \ 66.0°C ________|______|Primer2C 1.0µM
| \______/ 0min11s|10min |
| 10s | |4-8°C'

Björn Johansson

unread,
Oct 8, 2016, 12:06:50 PM10/8/16
to pydna, briann...@gmail.com
Hi, Im always happy to know a new pydna user.
Sorry for the late reply, I have had some issues with the anaconda build system
for the new release. 

Just for the record, are you useing python 2 or 3? I have made a decision to port to python 3 and it seems to work much better with some of the newer tools like IPython, Jupyter etc..

Ill look into this and post a reply here as soon as I can.

cheers,
Bjorn 

briann...@gmail.com

unread,
Oct 9, 2016, 9:11:05 AM10/9/16
to pydna, briann...@gmail.com
Hi Bjorn,
thanks for this library by the way! I am hopeful that I can get it to output the right annealing temperature for my PCR.

I was using a python 3 fork (the one we discussed on github....) with minimal differences to your code, but a little out of date.

I just switched to the new py3.5 conda version, and I now get a Ta of 72C instead of 66C (i.e., the same temperature as the extension temperature), which doesn't seem right? Perhaps this 72C problem is the actual bug mentioned in https://github.com/BjornFJohansson/pydna/issues/22 ?

To be honest I'm a bit confused overall since I would expect we would want two separate annealing temperatures: one for the gene-specific portion (dbd?) and one for the full-length primer (to prevent non-specific binding during this part of the amplification). The annealing temperatures I am getting seem too high for the gene-specific portion to ever anneal (my estimate was somewhere around 57C-61C, vs the 66C or 72C given).

Having said that, I have not found a PCR protocol that uses two different annealing temperatures for a reaction like this, so maybe that's just not something that is done.

Best,
Brian

Björn Johansson

unread,
Oct 10, 2016, 6:51:55 AM10/10/16
to pydna, briann...@gmail.com
Hi, thanks for using pydna!

I will try to respond to the numbered questions in your previous post.

1.  The Tms estimated do not seem to match the Tms I get from online tools.
This is a common problem. Tms depend on factors such as the concentration of the primer as well as 
the algorithm used. 

pydna now uses two algorithms by default:

1. Tm_NN from biopython. The previous default was Tm_staluc.
If you look into the link above, they say "Using Tm_staluc and Tm_NN with default parameters gives (essentially) the same results". I have not gone very deep into what this actually means.
 
2. The other algorithm is Pydna tmbresluc. The "dbd" melting temperature is a melting temperature calcualted for DNA polymerases with a DNA binding domain (dbd) and does NOT refer to the whole primer. Polymerases with dbd seem popular for synthetic biology in general and we use it a lot in the lab.

look at the pydna docs here

The first or one of the first commercial dbd polymerases was the Phusion from Finnzymes (has since been bought by Thermo Fisher Scientific). They originally recommended a very stringent way of calculating the Tm (which is higher due to the dbd). Among other things, you had to use their web tool which implemented thermodynamic data which are old and not widely used today. 

I contacted Finnzymes for the thermodynamic data used, but all I got as a response was market speak.

I subsequently decompiled their java applet and extracted the data which is now in the "thermodynamic_data.py" file, which was good since the webtool is no longer available.

This data is used in the "tmbresluc" algorithm in pydna (in amplify.py).  These four alternative algorithms are implemented in pydna.

basictm
tmstaluc98
tmbreslauer86
tmbresluc

The ones used in the Amplicon class and pcr functions are hard coded, but it would not be difficult to make this an option that can be set. Like that you could implement your own formula without much trouble. 

Let me know if you would like to have this option!

2.  Why is the annealing temperature so high?
For the dbd, it is simply what Finnzyme recommended at the time. I know that the current supplier has 
simplified their recommendation, but I don't know if this means that the enzyme or the formulation is different.

If you are referring to the switch of the formula from Biopython Tmbresluc to Tm_NN, I havent looked a lot at the possible differences. Do you perhaps have an example of differences between the two  

3.  A third possible issue is that I have been using NEB's Q5 enzyme instead of Pfu.

The dbd program is meant for enzymes with dbd, I looked up Q5 and it seems to be the same thing.
The Q5 might have other requirements than Phusion. I looked up the Q5 and it seems to be getting rave reviews. I will buy it myself and try it out.

In the program below, the first Tm is meant to be used with Taq polymerase. The second is for enzymes such as Phusion (essentially Pfu with a Sso7 dna binding domain).
The annealing temperature is calculated from the Tms as can be seen from the source code in the amplify module.


                              5AGGAGGACAGCTATGTCGAAAGGA...CATGGAATGGATGAACTGTATAAA3
                                                          |||||||||||||||||||||||| tm 49.1 (dbd) 62.8
                                                         3GTACCTTACCTACTTGACATATTTTTAAGTGACCGGCAGCAAAATGTTGCAGCA5
5ACTCTAGAGGATCCCCGGGTACCGAGCTCGAGGAGGACAGCTATGTCGAAAGGA3
                               |||||||||||||||||||||||| tm 56.9 (dbd) 69.3
                              3TCCTCCTGTCGATACAGCTTTCCT...GTACCTTACCTACTTGACATATTT5


Pfu-Sso7d (rate 15s/kb)
Three-step|          30 cycles   |      |Breslauer1986,SantaLucia1998
98.0°C    |98.0°C                |      |SaltC 50mM
__________|_____          72.0°C |72.0°C|Primer1C 1.0µM
00min30s  |10s  \ 66.0°C ________|______|Primer2C 1.0µM
          |      \______/ 0min11s|10min |
          |        10s           |      |4-8°C'


UPDATE:

It seems that Thermo Fisher has put the original webtool for Phusion after all:

Here they write about the Tm and Ta calculations for this enzyme (see section 5.3).

They recommend this tool.

I added your primers above (only the annealing part):

AGGAGGACAGCTATGTCGAAAGGA

TTTATACAGTTCATCCATTCCATG




As we can see, the result is the same when rounded.

NEB Q5 seems to be fairly similar:

They recommend these conditions and this web tool. Which give a very similar result:

Björn Johansson

unread,
Oct 10, 2016, 7:19:16 AM10/10/16
to pydna, briann...@gmail.com
it seems that Phusion and Q5 polymerases differ by about 4C according to NEB, Q5 needing an annealing temperature that is 4C lower.
I do not know if there is some other formula used or it is just a linear cut. 

If you know how they do it, I might implement it in pydna.

PS: Notebook with the PCR example and program.

/bjorn

briann...@gmail.com

unread,
Oct 10, 2016, 7:34:40 PM10/10/16
to pydna, briann...@gmail.com
Hi Bjorn,
thanks for looking into this in such detail! It's impressive how much work you have put in to making this work well. It's an important resource for synthetic biology to have it all contained in one library.

I think I had a few misconceptions that led me astray (including seeing the github issue that validated my concerns -- oops!)

It looks like the general rule for Q5 is to choose an annealing temperature 0.1-1C above the lower of the two dbd melting temperatures.
Phusion seems to choose a higher temperature (about half-way between the two?) I assumed this would be too high to allow annealing, but I guess not!

I am rerunning the assembly again using a lower temperature (the recommended Phusion Tm - 4C). I think this rule of thumb is ok for now, and I haven't seen a Q5 Ta calculation method published. The Tms from the Phusion calculator vs the Q5 calculator differ by 1-2C too, but I hope it's robust enough not to matter.

The PCR is being performed by robots, which is why I am so hands-off, and why I need a very robust sequence-to-PCR-program system. The main reason I am using Q5 is because that was the first PCR I could get to work well with the robots but it does seem like a lot of people like this enzyme too (original work here if you're interested http://blog.booleanbiotech.com/genetic_engineering_pipeline_python.html)

Thanks,
Brian

briann...@gmail.com

unread,
Oct 10, 2016, 7:53:19 PM10/10/16
to pydna, briann...@gmail.com
Hi Bjorn,
it turns out that NEB uses javascript to calculate their Tms, and they include information for Phusion and other enzymes too. Might be interesting to peruse:

https://gist.github.com/hgbrian/f9b694d2f2b2039f5414b6aa9dc35199

Best,
Brian

briann...@gmail.com

unread,
Oct 12, 2016, 5:04:51 PM10/12/16
to pydna, briann...@gmail.com
Hi Bjorn,
it took me a while to notice it, but it turns out that NEB has published detailed information on how they calculate their Tms.
http://tmcalculator.neb.com/#!/help

I have confirmed in the code that for Q5 Ta they take the lower of the two Tms and add 1C (up to 72C). For Phusion they take the lower of the two and add 3C (up to 72C).

Best,
Brian

Björn Johansson

unread,
Oct 15, 2016, 7:13:09 AM10/15/16
to pydna, briann...@gmail.com
Ok, nice job. That way I could implement the function quite easily.
The code is from their applet?
/bjorn

briann...@gmail.com

unread,
Oct 15, 2016, 9:38:04 AM10/15/16
to pydna, briann...@gmail.com
Hi Bjorn, yes, the code I linked to is from a javascript file linked from the Q5 Ta calculator page (they advertise that no data is sent to their servers...)

However, that script has been minimized so the variable names are not very helpful. It was interesting to check the differences between Phusion and Q5 Ta though (search for 'case "Q5"'. You can also find the Q5 Tm calculation in there too (search for "case 1:").

I am guessing the help page is probably more useful since it looks like it's mostly calculations that are already in pydna (e.g., SantaLucia for Tms). It doesn't mean too much to me though.
Reply all
Reply to author
Forward
0 new messages