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
internally:
cb_function keyb(event)
key_pressed=(...) -- key_pressed as reserved name
return
in recipe:
function Main()
...
if key_pressed="?" then
-- break the "for"
-- change C.I.
-- run rutine
-- set variable
-- ...
end
end
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())
function my_function()
...
end
function my_condition()
..
return true/false
end
condition_function(my_function, my_condition)
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 :)
To facilitate running multiple clients:
IRC Disconnect Button
IRC Reconnect Button with built in ghost command
Cookbook sync with disk
...that will give us some time! :-)