4 replies [Last post]
Joined: 03/28/2020
Groups: Go Science

What it is for and what it does:
I implemented an Autohotkey-program which is capable of monitoring and controlling multiple Foldit-clients.
I got this idea from Loci's excellent youtube-video: "Running Foldit in Multiclients" (https://www.youtube.com/watch?v=TWaHyCHhFZo) and I thought it would be nice to control all of those clients automatically and globally by Autohotkey. If a recipe is run on each slave-client, then the "Foldit_ctrl" program evaluates the current score of each slave-client (based on a global loop-wait-interval) and if one or more falls
too far behind in score, then its recipe is stopped, this slave-client is updated with the solution of the currently best-scoring client and then its recipe is started up again.
Like this, a quick progression in score can be achieved in most cases and many different recipes can be run in parallel since it is not always known which recipe is the best to use at the current state. Foldit_ctrl
will take care of this automatically.
I have added the AHK-script "Foldit_upd" which can in addition update/initialize all slave-clients from the solution of a master-client so that Foldit_ctrl can run properly. I strongly recommend using Foldit_upd
first before running Foldit_ctrl.
Foldit_ctrl has two main modes: parallel and sequential. The parallel mode was described roughly already in the introductory sentences above. But with the sequential mode it is possible to pre-program one or more
clients with a sequence of recipes that shall run. Whenever a recipe stalls for this client, the next one in the program-list is called up. I found this very useful for prediction-puzzles or when multiple puzzles
shall be worked on in parallel. The client in the sequential-mode will be excluded from the client-list for parallel-mode so they will not interfere with eachother. Both modes can be used in parallel and they are
both controlled by Foldit_ctrl.
Foldit_ctrl has the ability to do all necessary mouse-clicks, button-presses and so on so that the slave-clients can perform the actions that they need to perform. In addition, Foldit_ctrl can recover a client
when it has crashed and restart it and resume its recipe. This is particularly nice because it may sometimes happen that recipes crash a client (I never found out why exactly; DeepRemixWiggle likes to do this)
and with Foldit_ctrl this can be recovered. Took some doing to get this function running smoothly in AHK but for me it works very well now.
There is some basic log-functionality in Foldit_ctrl so it can be investigated afterwards at which point a client has crashed and how often.

See further information and installation instruction in the Readme in the installation package.

Happy folding! And I welcome any feedback that you can give. Greetz, iwdn

Download: https://filehorst.de/d/dngJCfAn

Joined: 03/28/2020
Groups: Go Science
Additional notes

I knew I forgot something. Even though this will probably not be the last one I forgot.
You have to turn on "Selection Interface" in every client. Only then will the subwindows be at the correct positions. Especially the cookbook.
This should generally work with the provided options.txt, but there seems to be a bug in Foldit that the setting that "Selection Interface" shall be active on client startup is ignored. This was working properly before the recent major update so I hope this will be fixed again soon.

Greetings and happy folding, iwdn

Joined: 09/29/2016
Groups: Gargleblasters

Thanks for sharing this Ichwill! :D

However, regarding the Subwindows placement...
Technically, all of those windows can, or even WILL (in my case heh) be at different screen positions when dealing with Selection Interface :( They are completely dynamic and save that location to the options.txt file.

Ideally, Original Interface would be used for that purpose, since it ensures all menus are in their statically defined places.


Joined: 03/28/2020
Groups: Go Science
Subwindow placement

Thanks for trying/looking into this Formula350!
The reason why I chose Selection Interface instead of Original interface is simply because I only use Selection Interface. Therefore I wanted to get this going with Selection Interface. Anyway I don't really see a problem with that. The options.txt I provided has the correct positions for Selection Interface stored in it and it works well with that if each slave-client uses this ootions.txt. Of course you may not change the window-positions (or the new coordinates would have to be updated in Foldit_ctrl) but this is manageable. I do not use the slave-clients for anything else than Foldit_ctrl so their subwindows are never changed. If I want to modify some solution, I copy it to the master or another Foldit-client and do it there.
Greetings iwdn

Joined: 09/29/2016
Groups: Gargleblasters
Aah ok...

I didn't realize that you had provided the options.txt as well. Yes, that will certainly make things more reliable then. :D



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