You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently seamless designs have somewhat adhoc methods for controlling primer design. The amplification tm is controlled by the core targettm pragma but the tail length is a side effect of the seamlessoverlaptm optimization and constrained to be shorter than the sum of the length of the fwd and rev primers for amplification. This code is controlled in PrimerDesign.fs in the seamless function.
current logic
Is approximately
Allocate half of the primer to forward and reverse
let maxFwd = dp.pp.maxLength / 2
let maxRev = dp.pp.maxLength - maxFwd
Design fwd and rev amp regions. There are small optimizations in case primer design fails on one side and not the other, reallocating capacity to one side or the other.
Now design tails in the success function with f and r oligos as material. This plays with the tails of the primers to get the overlap Tm correct. This is where the possibly suboptimal planning occurs. Note the tail length can never exceed the length of the original fwd and rev primers that were designed. It makes it impossible for example to have a normal amplification tm e.g. 60 and long (60bp) tails.
// Get optimal tail lengths ( ~~~s below) to get the right internal seamlessoverlaptm
let bestF,bestR =
optOverlapTm
(min (dp.overlapMinLen/2) f.oligo.Length)
(min (dp.overlapMinLen/2) r.oligo.Length)
f.oligo.Length
r.oligo.Length
9999.0<C>
Proposal
Add an extra #seamlesstaillen pragma to allow control of the tail length. If that pragma is available, the tails are simply set to explicitly requested length with caveat that it can not exceed the primermaxlen constraint. It would override the seamlessoverlaptm constraint if present. The main complication implementing this is that currently the fwd and rev primers are the only passed in material that the success function can use. To exceed the original primer body length, we would need to pass in a longer runway to the success function in addition to the primers. The template / substrate is available at time of primer design in the designSingle function. One final complication to be aware of is that the design with variable ends (approxEnds) can result in a primer which isn't a simple prefix of the template.
Currently seamless designs have somewhat adhoc methods for controlling primer design. The amplification tm is controlled by the core targettm pragma but the tail length is a side effect of the seamlessoverlaptm optimization and constrained to be shorter than the sum of the length of the fwd and rev primers for amplification. This code is controlled in
PrimerDesign.fs
in theseamless
function.current logic
Is approximately
Allocate half of the primer to forward and reverse
Design fwd and rev amp regions. There are small optimizations in case primer design fails on one side and not the other, reallocating capacity to one side or the other.
Now design tails in the
success
function with f and r oligos as material. This plays with the tails of the primers to get the overlap Tm correct. This is where the possibly suboptimal planning occurs. Note the tail length can never exceed the length of the originalfwd
andrev
primers that were designed. It makes it impossible for example to have a normal amplification tm e.g. 60 and long (60bp) tails.Proposal
Add an extra
#seamlesstaillen
pragma to allow control of the tail length. If that pragma is available, the tails are simply set to explicitly requested length with caveat that it can not exceed theprimermaxlen
constraint. It would override the seamlessoverlaptm constraint if present. The main complication implementing this is that currently the fwd and rev primers are the only passed in material that the success function can use. To exceed the original primer body length, we would need to pass in a longer runway to the success function in addition to the primers. The template / substrate is available at time of primer design in thedesignSingle
function. One final complication to be aware of is that the design with variable ends (approxEnds) can result in a primer which isn't a simple prefix of the template.Example code
Fwdbody is 39 bp, Fwdtail is 34bp, overlap is 73bp
The text was updated successfully, but these errors were encountered: