New Functionality Added to Eterna NUPACK Folding Engine is Live

Hello Fellow Eterna Players,

Jonathan merged the Eterna source code with the additions I made to the NUPACK calls. These calls exposed the subopt utility found in nupack and allows us now to see the data in-game through a booster. I made a sample booster for a single sequence, but the new code does also support oligo multifold.

The unique thing for this function call is that as it is currently only available in NUPACK you must load the nupack folder after loading the mainscript and before any subopt calculations.

Command to select NuPACK folder is here and must be passed this exact way or it will not work.

The calls for the single sequence is “applet.subopt_single_sequence(sequence, Kcal_Delta_Range, psuedoknot, temp);”

The call for multi fold oligo is “applet.subopt_oligos(sequence, Oligo_sequence_string_array, Kcal_Delta_Range , psuedoknot, temp);”

These both return a object with multiple arrays for each set of type of data addressable as properties. Each index of each property belong to the same secondary structure.

Examples of the available properties aft the response are
var subopt_secondaryStructures = result.suboptStructures;
var subopt_energyError = result.suboptEnergyError;
var subopt_freeEnergy = result.suboptFreeEnergy;
var numSecondarySructures = subopt_secondaryStructures.length;

Make a note that ensembleDefect is not functional yet and returns a “0”. This was to allow for a quicker future implementation of the function. There is much work needed for it and it would have delayed the release by weeks if not months. So instead I exposed subopt and while I was there, I established a path for ensembleDefectfor the players to access immediately upon getting the source code from nupack working in Eterna’s codebase.

Please let me know in this post if you have any questions or concerns.

Here is a link to an example script for multi fold with oligos

New single state subopt displayed in a new blank window.


A clarification for players who are not programmers. You must open the Console (Developer Tools) in your browser to view the script output.

@DigitalEmbrace Can you make this more public?

Hi Everyone. I just updated the script for the subopt data and it now opens into a new blank window and posts the folds. Here it is!!!


When we execute Jennifer’s new script (thank you Jennifer!), a new window will open containing the ensemble of alternative secondary structures that the molecule can form. These secondary structures are referred to as suboptimal structures. The dot-bracket notation for each suboptimal structure is followed by its minimum free energy (MFE) and delta. Here is an example of my design Internal loop pknot:

This is a pretty good ensemble. There are only 10 alternative structures in addition to #1, which is the one shown in-game. The dot-bracket notations are reasonably similar and the 3’ end is involved in only two of the predicted structures (#6 and #10).

In comparison, the ensemble for my design Bulge pknot is not nearly as clean.

This ensemble has 34 alternative structures but more importantly over half of them involve the 3’ end. My guess is that this sequence might not fold well during testing. The subopt data will help us find sequences with low structure variation that are more likely to fold into a stable pseudoknot for testing.

Jennifer and I talked about the energy delta and she thinks the delta should be under 4 kcal. So far all the designs I looked at haven’t exceeded 2 kcal, even lower. Let us know what you find!


I just fixed a bug in how subopt displays the dot bracket that was causing the weird folding and this was possibly influincing other things. I just submitted a pull request for a fix in EternaJS and if it is good for the pknots stuff I think we should use it everywere. A bit of clarification about the 4 kcal.It is more like I only look at what is going on in the 4 kcal range as anyting past that is just noise and after 4 kcal nupacks ensemble defect looks teh exact same and I use my EV metric that looks at the first 4 and controls for nucleotide position unlike ensemble defect and it rally shins in that it is sensitive to teh smaller energy shifts to detect a signal. I spent a good month coming up with that metric as I was getting annloyed with ensemble defect being just barely not good enough for priedictions.

1 Like

Excellent script, @Jennifer_Pearl!

Thx for the additional explanation and images, @DigitalEmbrace. For those not used to running scripts, the way to get this one running, is to star it as a favorite at the script page itself:

Re-load the pseudoknot lab, to get the script read in. Then open a design where you wish to see how many structures are predicted and call the script from the lightning symbol:

And a new browser window pops up with the results:

Ha, it even works for unsubmitted designs, so one can test ones designs before putting them up. :slight_smile:


AS a heads up I added Ensemble Defect, Ensemble Defect Normalized, MFE Defect, and MFE Defect Normalized to subopt ensemble data tonight. Wont be available until Jonathan merges the changes but wanted to get you all interested…lol

1 Like

Hi Everyone. I just updated the script for the subopt data and it now opens into a new blank window and posts the folds. Here it is!!!

I’ve tried running this version of the script within the pseudoknot lab and haven’t had any luck in getting a window to pop up - however, I am able to get the version that displays results within the console window to work. Has anyone else had this issue too, and if so have you been able to get it to work?

Hi, I did this about a week ago and it worked OK. The white page with the solutions came up on my screen.
The only thing I could do with it was to take a picture of it.

I saw this post and now I can’t get it to work either.

I thought I could hear a musical chime when selecting the booster AND some time later heard a second chime signaling the 1st script was completed, so I repeated after hearing that chime.

This time I don’t get any recognition of the first booster completing.

With this new update, an alert window popped up saying to “go to the script and click ok to unlock it”.

There is no “OK” on the script page. I did unfavorite and then favorite again to see if that produced an unlock. It didn’t.

I am getting a blank window as soon as I click on the script. No sound. After 45 seconds I got the dissonant piano sound. I clicked on the script again and the subopt window with structures opened right away. I believe Jennifer is working on the script right now. @Anamfija If you want to look at the script, I’m sure Jennifer would appreciate the assistance.

Just tried again. got the sound 45 seconds after triggering the 1st script.
Got an “about.blank” window. Triggered again and 45 seconds later, the script reported correctly:)

The script results are in the untitled tab.

I am now doing asyn calls to both subopt and opening the new window which seams to have mayb emade things better in the area of hangups and such but i still have to clikc twice whne getting data to a window. It seams to only be with data from the subopt that has to generated at time of run… If I pass a string that is set at time of “compile” then it will display it on the screen no problem… I still have to do a two window make and write to’s in order to pass this data that i now get from the promise returned by the await async call… @LFP6 @Anamfija any thoughts?