Some ideas that I think they are difficult but possible, and might improve the performance of Foldit
1.- Callback functions for keyboard events, like this
key_pressed=(...) -- key_pressed as reserved name
if key_pressed="?" then
-- break the "for"
-- change C.I.
-- run rutine
-- set variable
In this way you modify the behavior of a script as you see the intermediate results. We can start another way of folding: scripting and handwork together.
2.- Mutate what is not mutable
A function to temporarily mutate to "G", so we can calculate the best neutral position of a backbone. Now a wrong rottamer makes it impossible to reach the best position of backbone and distorts everything around. The function could be like global_wiggle_backbone(n, glic_simul==true).
3.- Conditions as parameter in a function
So you can do wiggling/shake/... until (iters OR condition complied)
In this way you can stop a wiggling with bands outside when score gets down 0.5 points (for example), and you can avoid movements which break your structure.
Something like this: condition_function(foo(),cond())
4.- Batch mode
Feature: Foldit run without GUI. So we can run:
Foldit -recipe my_recipe -time x[s,m,h]
where 'recipe' is in all.macro, and two conditions would have to end: the return of the script, or the end of time.
we can read the standard output (from print in recipe) and program a batch to run other scripts depending on the results.
5.- Meta scripts
The ability to write scripts that can call other scripts
Only those :)