GUI Recipes are the original type of recipe in Foldit. ("GUI" is jargon for "Graphic User Interface".)
Lua scripting can also be used to create recipes. Lua recipes are more complicated than GUI recipes, but offer much greater control.
As the name implies, GUI recipes can be created in the Foldit client mainly by clicking and picking. Typing is only required if you add comments to the recipe, and when you give the recipe a name and description. In contrast, Lua recipes are written in programming language, and it's generally best to use an external editor.
When a GUI recipe runs, each command in the recipe is performed in order, one time.
GUI recipe commands have may options. For example, shake, wiggle, and mutate have an "iterations" option, limiting how long the command runs. Mutate, freeze, and band have a "segments" option, restricting the commands to certain segments. These options can be set using sliders. Other commands have different options.
GUI recipes simplify repetitive tasks, and expand the capabilities of the basic tools. For example, a single "Local Wiggle Sequence" command wiggles many separate sections of the protein. It would be extremely time-consuming to do this manually.
Getting started with GUI recipesEdit
When you install Foldit, the cookbook contains four GUI recipes, "Example 1" through "Example 4". These recipes are intended to introduce how to use the recipe editor to create a GUI recipe. To open the recipe editor, hover over the recipe name in the cookbook and click the notepad icon.
In the recipe editor, a GUI recipe has one or more commands separated by blue dashed lines. Clicking on the blue dashed lines lets you add a command at that spot.
Clicking on an existing command shows up and down arrows to the left of the command. The arrows can be used to move the command to a different spot in the recipe. Clicking on a command also show a question mark help button and a red "X" icon to the right of the command. The help button displays a short popup explaining the purpose of the command. The "X" icon deletes the command.
The "example" GUI recipes are not very useful by themselves, but many players have created new recipes using them as a starting point. The All Example Macros page, shared by all four recipes, has a long list of "children" recipes. (Not all these "shared" recipes are available to download, players may have used the "share with group" or "share with self" option.)
In addition to the sample recipes and their offspring, the Foldit recipes page contains many GUI recipes. Most, but not all, have "GUI" in the title to distinguish them from Lua recipes.
An early recipe, full 2-6-3 auto walk by Madde from 2009, is a good example of a GUI recipe. It performs a Local Wiggle Sequence command on different-sized sections of the protein. It also freezes the segments before and after the local wiggle sequence area, which tends to improve results. Many Foldit recipes, both GUI and Lua, use a similar technique. The Local Wiggle Sequence command is often used toward the end of a puzzle to find small gains.
Another GUI recipe, Blue Fuse GUI, is an example of "fusing", shaking and wiggling with different values for clashing importance. Fusing often improves the score, but not always. The recipe includes "Restore Recent Best" as the last command, to ensure that it doesn't leave the protein in a worse position than when it started.
GUI recipe command optionsEdit
The most common options are "iterations", which determines how long a command runs, and "segments", which determines the segments a command applies to. There are also other options which are specific to one or two commands.
The commands Shake, Wiggle, Local Wiggle Sequence, and Mutate all have an "iterations" option. The value of this option corresponds to the counter seen in the upper left of the Foldit window when a command is running. The number of iterations or cycles needed depends on the command. Shake generally finishes its work in the first cycle, while wiggle requires more cycles.
The value "Until Stopped" can also be selected for iterations. "Until stopped" means the command continues until the user cancels it. This setting should be used sparingly.
The commands Local Wiggle Sequence, Freeze, Unfreeze, Set Structure, Set Amino Acid, Mutate, and Add Bands have a segments option. Add Bands has two segments options.
Initially, the options for segments are "All", "By stride", and "User pick".
The "All" option means the command applies to all segments in the protein.
The "By stride" option means the command applies to every nth segment, starting at a specified segment. For example, a command might apply to every fourth segment starting at segment 3.
The "User pick" option requires the user select the segments by clicking on them. The command then operates on the selected segments.
The same set of selected segments is available to use later in the recipe. When "User pick" is first specified, "User pick <seg 1>" appears in the command.
On subsequent commands,"Reuse <seg 1>" is an option for any segment selection. A recipe can have multiple "user pick" commands, and each set of picks becomes available for later use.
The Set Amino Acid command lets you pick the amino acid desired from a menu.
Three banding commands, Disable Bands, Enable Bands, Delete, and Change Band Strength, have options that are somewhat similar to segments: "All", "Connected", and "User pick".
For these banding commands, "All" means all bands, and "Connected" means bands that are connecting two segments. (A band can also extend from a segment to a point in space.)
When "User pick" appears for a banding command, the user is prompted to select bands by clicking on them. When "User pick" is first specified, "User pick <band 1>" appears in the command, and "Reuse <band 1>" is available on subsequent band commands.
Other commands have miscellaneous options:
- Change Band Strength - band strength, a real number between 0.0 and 10.0
- Clashing Importance - clashing importance, a real number between 0.0 and 1.0
- Quicksave, Quickload - quicksave slot, an integer between 1 and 100
Limitations of GUI recipesEdit
The main advantage of GUI recipes over Lua recipes is that no debugging is required for a GUI recipe. There's no possibility of having a GUI recipe fail due to a syntax error in its programming.
While lack of debugging is a major plus, there are a large number of minuses to GUI recipes.
GUI recipes don't involve typing, and there's no "source code" format. GUI recipes must be created in the Foldit client. There's no equivalent to copying and pasting, so there's no way to merge parts of two different recipes, except by manually adding steps.
There is no way to perform a set of steps repeatedly in a GUI recipe. The only options are either to run the recipe repeatedly, or add the commands to the recipe repeatedly.
In general, GUI recipes lack many of the key features that a programming language like Lua provides. There are no variables, no if-then-else statements, and no for or while loops.
Several Foldit tools can't be used from a GUI recipe.
The "add bands" command can only band between the backbone of segments. It can't band between the sidechains of segments, and it can't band from a segment to a point in space.
Some GUI recipes commands allow for complex segment selections to be specified, but these options may have limited practical use.
For example, the "add band" command can add multiple bands in a single operation, but lacks precise control. So, if the "add band" command specifies adding a band starting every fifth segment starting at segment 1 and ending every seventh segment starting at segment 12, that pattern is followed until the end of the protein is reached. There's no ability to restrict banding to only a section of the protein.
GUI recipes require the Foldit window to be visible while they are running. If the Foldit window is minimized, GUI recipes essentially stop until the window is visible again.
GUI recipes generally consume more computer resources than Lua recipes. For example, in the Windows environment, a GUI recipe tends to have two active threads while running, while a Lua recipe running with the Foldit window minimized has only one active thread. The effect is that a GUI recipe can use almost twice the processor power a a Lua recipe.
Historical use of GUI recipesEdit
Some Foldit puzzles have limited players to using GUI recipes. These puzzles often had "hand-folding round" in the title. Generally, group play was also disabled in the hand-folding round. After the hand-folding round was completed, a new puzzle with the same protein would open. In the second round, players could load their soloist solutions from the hand-folding round, and Lua recipes and group play were enabled.
Puzzle 1105 "de-novo freestyle 52", was the last hand-folding puzzle, ending 1 July 2015. This puzzle never had a second round, although the reasons for this are unclear.