How to have DomainPools reuse existing strands when possible and generate new ones if not.
DurhamSmith opened this issue · 2 comments
Hello,
I am making some DNA brick structures. Each brick has 4 domains of 13nts (52nts total for a brick)
We have various 52nt strands which we have used for other designs sitting in our fridge.
I have created a nuad.constraints.Design
for my intended structure.
I would like to know if there is a way to give a list of the 52nt sequences we already have and specify that these should be preferentially chosen as the strand sequences is the nuad.constraints.Design
but that new sequences/strands should also be generated if no strand in our existing library fits the design.
I had a look at setting possible_sequences
of nuad.constraints.Domain
but as far as I am understanding that doesn't work since we have strands that have 4 domains as well as the fact that the strands in the fridge might not be sufficient to realize the design and may require some additional strands.
There's no "preferential" option. You can call the method Domain.set_fixed_sequence
to say that a Domain should have a fixed sequence you give it, which will not be changed by the search. For example you if you have a single-stranded tile such as
a b
+=============-=============]
|
+=============-=============>
c d
where domains a
and b
need to have some sequence for whatever reason, you can set their sequences to be fixed, but still let the search look for good sequences for c
and d
, e.g., finding choices that minimize secondary structure of the whole strand (to whatever extent possible given the fact that a
and b
can't be changed).
But to encode that you "prefer" a certain sequence probably requires doing something like creating a new constraint that numerically penalizes other sequences (but allows them).
Thanks!
I have used set_fixed_sequence
to constrain some of my domains (for adding poly T's outer domains of the whole structure).
Unfortunately that approach will not work for reusing the existing strands in our fridge. I'll have a look into writing a new constraint.