Back to Recipes Homepage
recipe picture
Recipe: Banded Worm Pairs Inf Filt 1.4.8
Created by LociOiling 3 1
Your rating: None Average: 4.5 (54 votes)


Name: Banded Worm Pairs Inf Filt 1.4.8
ID: 103387
Created on: Thu, 04/09/2020 - 13:49
Updated on: Wed, 04/29/2020 - 21:52

Banded worm, with pairs of bands and more random action, including user bands - Filter optimization and infinite run. V1.4.6. improves filter detection. V1.4.7 fixes a bug and adds new controls. V1.4.8 has some performance changes.

Best For


Joined: 12/27/2012
Groups: Beta Folders
better filter detection

Banded Worm Pairs Inf Filt 1.4.6 features better detection of filters, using the relatively new filter.GetNames function.

There are also a few updated messages, for example the run time is now expressed in both seconds and hours at the end.

There are several internal changes, such as detecting symmetry using the relatively new structure.GetSymCount function. (Actually banding to symmetric chains is still on the to-do list.)

The main routine has been restructured to take the length patterns from a table, and repeated calls to InitializePuzzleState have been eliminated. Most of the initialization has been moved inside of InitializePuzzleState to make sure it's protected by the xpcall.

Joined: 09/29/2016
Groups: Gargleblasters
Errored while running on 1825...

Ran for over 4hrs before it did error and cease to run.
Happened right after the 9th Pattern Gain report.

Here's a trimmed output log:

(I had to edit the XML stuff so it would display here properly)

[?xml version="1.0" encoding="UTF-8"?]
[Foldit:Script xmlns:Foldit=""]
[Foldit:ScriptName]Banded Worm Pairs Inf Filt 1.4.6[/Foldit:ScriptName]
[Foldit:ScriptDesc]Banded worm, with pairs of bands and more random action, including user bands - Filter optimization and infinite run. V1.4.6. improves filter detection.[/Foldit:ScriptDesc]
Banded Worm Pairs Inf Filter 1.4.6
Random number seed = 2520305603
Starting BandedWormPairs of len 2, score: 16044.518
>>>> At 132, gain: 0.089, score: 16044.608
>>>> At 133, gain: 0.074, score: 16044.682
>>>> At 134, gain: 0.079, score: 16044.761
>>>> At 137, gain: 0.161, score: 16044.923
>>>> At 139, gain: 0.139, score: 16045.063
>>>> At 124, gain: 0.031, score: 16078.201
>>>> At 137, gain: 0.164, score: 16078.367
>>>> At 167, gain: 0.121, score: 16078.488
>>>> At 185, gain: 0.119, score: 16078.607
Pattern gain: 0.49322989442044
Banded Worm Pairs Inf Filter 1.4.6 error
Unexpected error detected
Error line: 420
Error: "attempt to perform arithmetic on local 'val' (a function value)"

Start score: 16044.518
Final score: 16078.632
Total gain: 34.113
Run time: 17565 seconds, 4.879 hours

Joined: 09/29/2016
Groups: Gargleblasters

That section of code (line 420) is identical to that section from BWP v1.4.5 which I've not experienced this issue with that one (though I've not ran v1.4.5 on puzzle 1825 specifically, but pretty sure I had on previous Corona-Binder puzzles).

This is line 420, for the record:
seed=os.time( )/math.abs( getScore( ) )

Further details of... maybe use....
I started the recipe at April 21st 2020 @ 3:35AM (local time) and its 'failure' occurred at 8:28AM (4.879hrs later, as the log states)

Potentially relevant I'm-Not-A-Coder observation(s)??
- Comparing to v1.4.5, this v1.4.6 has a lot less code; 1051 lines vs 800.
- Change log at start also seems to indicate this is instead based on v1.2? (granted, code comments can easily be deleted; wasn't able to track down v1.2 in order to properly compare.)
- Initial startup option is set to "DEBUGRUN = TRUE", whereas v1.4.5 has it set to FALSE.

Joined: 12/27/2012
Groups: Beta Folders
some code was removed...

Previous versions of the recipe had code which scanned the puzzle comments to determine puzzle properties.

The code looked for things like "dimer" and "trimer" to detect a symmetry puzzle. This used to work in some cases, but the puzzle designers can be inconsistent about descriptions. There are new functions which produce more consistent results. The current version uses the near functions.

I seem to recall there were similar checks related to filters and perhaps some other properties, but again they've been updated to use some more recent features.

I'll compare the versions again, but my main goal has been to preserve the basic behavior of the recipe. The existing filter and symmetry logic didn't work consistently, and this has been fixed. There was also some unneeded work being done, and this has been eliminated.

For the record, line 420 in V 1.4.6 was in the TrimNum function. The actual error was caused by line 386, which called TrimNum, but forgot to include the parentheses on current.GetEnergyScore, so TrimNum ended up with a function instead of a number as its argument.

Joined: 12/27/2012
Groups: Beta Folders
bug fix, new options

As Formula350 noted, V 1.4.6 had a bug which killed the recipe after one pattern. This has been fixed.

V 1.4.7 also has some new features. A dialog will always appear in this version. The dialog has several new sliders to adjust settings in the recipe. There are sliders for "long" and "short" local wiggle, and a wiggle factor slider for regular wiggle. The initial values for the sliders should produce the same behavior as the previous versions of the recipe. Increasing these settings near the end of a puzzle may be helpful.

There are also several sliders the control the odds of making certain types of bands. Again, these sliders start with the longstanding default values, but make it easy to experiment with other settings.

There's another slight improvement in the banding logic. The previous version checked for contact map info whenever it added a band. The recipe actually determines whether there are contacts at the start, allowing the repeated checks to be skipped, potentially speeding things up slightly.

Joined: 12/27/2012
Groups: Beta Folders
more performance changes

Banded Worm Pairs Inf Filt V 1.4.8 has some changes intended to improve performance.

The recipe now detects and works on multiple ranges of unlocked segments. Puzzle 1829 is an example of why this may be helpful. There are two separate ranges of unlocked segments in 1829. The previous versions of BWP IF started working on the first unlocked segment, and continued to the last unlocked segment. This means the recipe was spending time on the locked segments in between, which is unlikely to produce points.

The recipe also avoids repeated calls to determine whether a segment is locked (via structure.IsLocked). Instead, it checks the locked status of all segments at the start, and keeps the results in a table. This approach is usually faster.

Similarly, the recipe previously checked the amino acid type for each segment repeatedly (using structure.GetAminoAcid). All checking is again done at the start, then the saved results are used.

V 1.4.8 now contains Timo van der Laan's segment set, list, and type logic, used to determine the locked status. So the recipe is longer than it was before, although many of the new functions aren't used at this point.

Joined: 09/29/2016
Groups: Gargleblasters

Had JUST started running v1.4.8 on 1831 Evo when... *poof* My client vanished (no error in log entry as a result)

CI was 0.50 on MWP

Recipe Settings (in order, top to bottom):


Here's the Recipe's output portion of the XML:

Banded Worm Pairs Inf Filter 1.4.8
Puzzle: 1831: Coronavirus Binder Design: Round 8
Track: Evo
Random number seed = 1303781327
wiggle factor = 4
"big" local wiggle = 20
probability of 1st band = 1
probability 1st band is band in space (BiS) = 0.25
probability of 2nd band = 0.35
probability 2nd band is band in space (BiS) = 0.5
probability non-BiS band uses random non-default atom = 0.65
disable filters = true
start pattern 1/5
Starting BandedWormPairs of len 2, score: 14860.505
Banded Worm Pairs Inf Filter 1.4.8 error
Puzzle: 1831: Coronavirus Binder Design: Round 8
Track: Evo
Unexpected error detected
Error line: 730
Error: "bad argument #1 to '?' (band index out of bounds)"

No change
Run time: 130 seconds, 0.036 hours

EDIT: I forgot to mention, just in case this is relevant...
When I started the recipe I had forgotten to remove some of my bands. One of which, the recipe decided to use, which was set to Strength 1.5!

I immediately deleted that band AND my 4 other bands (that was the only one in use). It was after that Wiggle finished that it crashed. I imagine probably because it was trying to remove the band that it was using, that I already removed.

If so, I admit to it being a bit of a fringe case :P

Joined: 09/29/2016
Groups: Gargleblasters
Bug the 2nd...?

On version 1.4.7 that I'm now running, but was still noticed right before the previous crash...
It seems to want to use a QuickSave slot INSTEAD of the structure as it is when starting the recipe.

I started it at a score of 14860 with nothing frozen.
I had ran one of Susume's OG recipes overnight and in QS #3 had the top score but with all the frozen Core sidechains. Somehow Foldit made THAT the top score (14863), even though it shouldn't have been.

Either way, the bug being: It doesn't continue to use the solution that the recipe was started on.

Joined: 12/27/2012
Groups: Beta Folders
interesting one

Haven't seen this behavior, but I'll look into quicksave slot usage.

Joined: 12/27/2012
Groups: Beta Folders
likely band.Add

The band.Add function has trig-based parameters, and lots of them. It can cause errors like this one.

Diagnosis is tricky in this case, since the whole band class gets overridden in this recipe for filter control. So you get the question mark for the function name.

I'll look at a better solution for the next version.

(Edit: this one goes with bug the first, order of replies got messed up somehow.)

Want to try?
Add to Cookbook!
To download recipes to your cookbook, you need to have the game client running.

Developed by: UW Center for Game Science, UW Institute for Protein Design, Northeastern University, Vanderbilt University Meiler Lab, UC Davis
Supported by: DARPA, NSF, NIH, HHMI, Amazon, Microsoft, Adobe, Boehringer Ingelheim, RosettaCommons