I’m playing eterna since a long time ( i think x) ) an i thought to a new tool for the synthesis :
When we have 2 ore more oligos to bind on the same design, a tool could help us to notice the complementary bases, that is to say the bases which can go with all the oligos.
By example with 2 oligos we may have a set of AGGGCGUCA and for the other oligo CAAGUAAGU .
We can see that xGGGCGxxx is complementary to AAGUAxx because for the same bases on the main chain both will be attracted.
Then we also can add a parameter the “tolerance” (or an other name) which defines the number of “jumped” or “ignored” bases as GAC and AUC has a tolerance of 1 because their complement is UxG…
This tool will just serve the designer to see what base is complementary to the 2 oligos ( or more)
An oligo with an A will be noticed by the tool if at the same place or next to this base (with the “toloerance”) on the other(s) oligo(s) there is an A or an G and so on for all the other bases.
I don’t know if my Frenglish was good but tell me if you understood something to what i said and if that’s a good idea or if eternabots are already using this method or if… You have something to say me ! x)
+1
I have implemented one myself but having it integrated in the game might be better. Getting the right requirements would be hard though, as it requires a lot of flexibility when designing more complex puzzles. My tool would take two competing RNAs and produce all possible line-sharing options not limited by any “tolerance”, later I would hand pick the ones I need. The complexity comes when you need to merge the output of different runs for more complex puzzles. This I do in a text editor which I think would be hard to model in a UI in a trivial way.
I think this is a very promising discussion, largely because there is now a way to integrate player-written code into the game, and that’s never been the case before. What makes this possible is “boosters”, which have gotten some mention, but not the attention from players I think they deserve.
This is potentially a very exciting time for Eterna development! But it will require a new batch of player/coders to become engaged if we’re going to take advantage of the opportunities.
I’m developing a “toolbox” booster that includes the ability to copy/cut/paste as well as stamp and shift. It also allows you to create a reversed Watson-Crick complement of what’s in the cut buffer. (Also random bases and random hairpin.) It’s still early/rough, but seems to work OK. Note: because it works asynchronously you need to tweak the script slightly if you copy it so that it has its own ID embedded and can asynchronously “end” itself after initialization. A few more beta testers would be welcome. (The Beta version has less churn than the devops one.) PM me in game if you need help.
If anyone has ideas on how to tackle the combinatorial explosion of possibilities, or which elements might be worth tackling first, please let me know!
Sent a PM to you on this. Once you copy the script (which changes the script id) you have to “edit” it (which leaves the id the same) and change line 20 to match the new id. In your case:
// IMPORTANT: when copying, edit line 20 to reflect your URL script id
var toolboxSid = “7351601”;
After making this change, exit the lab tool and restart it which will offer up the new version. When you select the Booster you will notice the game section goes dark for a few seconds while the booster adds an input form at the bottom and initializes asynchronously. Once it returns to normal you can use the toolbox.
I like your idea. I have made a rough image (I hijacked the glue tool to help me)
Now even such a short stretch may generate several potential midway sequences - not that I got the best match between them. But hope its good illustrate what I think.
But the longer stretch, the more potential calculations to run through. However there may be a way to cut down on calculations. Like having the bases in the blue area locked and not changed and only running a calculation on the orange stretch inbetween for a sequence that would be a somewhat good match for both. (There may still be several) Plus only potentially unlock the blue stretches for watsoncrick matches if there are no solve the other way.
One thought for a matching detector would be to do simple basewise pairing potential detection, possibly followed by a closer analysis.
For each base in a given sequence, determine the potential matching bases as weighted groups of potential pairings. For example a potential GC or CG pairing would have weight 3, AU/UA weight 2, and UG/GU weight 1. The pairings are grouped by the sum of the base offsets, so pair for bases 5 and 46 would be in group 51 as would the pair for bases 6 and 45 and bases 7 and 44. If you run through all of the bases in a given region (e.g. 5:12) and construct the target groups, the higher weighted groups are more likely potential targets for pairing with no bulges (but possible end dangles and N-N loops. Having found a potential match, it may be possible to go back and compute a better estimate of the relative binding Free Energy of the match. If two adjacent groups have high weights, it’s possible that with one or more 0-1 or 1-0 bulges the two regions might match and the matcher could examine various possible bulge configurations for that region.
For generating a potential match site against two same sized regions, one can generate a WCRev (reversed Watson-Crick) strand for each, then “merge” the two strands as follows: (1) if both have the same base, use that base, (2) if one has C and the other U, pick U and credit the U strand +1 point, (3) if one has G and the other A, pick G, and credit the G strand +2 points, (4) otherwise, if one strand seems weaker, prefer a pairing for that strand and credit the difference in estimated strengths e.g. CG versus CU +3, AU vs AG +2, etc.
Hi everyone, I like the idea of using some weights to know wich pair has the best potential. Otherwise, even if I have some difficulty to traduce what you are saying in french to have a relevant notice I’m happy to help science (and I will always try to help as well I can do )