Fah V7 Extra Slot Options

Join GitHub today

GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

Sign up New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

FAH Client V7.3.4 has been. Then right click on the slot you want to start folding a pop-up menu will appear, click Fold should start it folding. Can't locate.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Comments

Fah

commented Feb 26, 2017

Extra

In Fah-Control 7.4.16 beta you can open context menu on a folding slot and check the option 'On Idle'.
This adds the slot extra option idle=true. But the fah config is not re-read immediately and the slot with checked 'On Idle' option keeps running.

When the idle=true option is set using the dialog edit slot extra options and dialog is closed again then fah config is re-read and the slot options apply immediately.

Expected behavior: Slot context menu 'On idle' is applied immediately.
https://foldingforum.org/viewtopic.php?f=96&t=29749&p=293533#p293533

changed the titleFah-Control 7.4.16 beta slot context menu 'On Idle' not appliedFeb 26, 2017

commented May 5, 2017

Moved to FoldingAtHome/fah-issues#1198

closed this May 5, 2017
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

The v7 Folding@home client supports a new remote interface which allowsapplications to do the following:

  • Access information about the client.
  • Read and modify the client's configuration.
  • Access information about the work units in the client's queue.
  • Start and stop folding slots.
  • Add, configure or remove folding slots.
  • Access protein models.

The client's GUI, FAHControl, and viewer, FAHViewer, both use this interface soall the functionality they provide and more is accessible.

Historically, third-party software has been written to read the client's logfile and reverse-engineer files like queue.dat in order to access clientinformation. These methods were never officially supported and were oftenbroken by changes in the client or core software. The new v7 client will notsupport these older interfaces. Instead, this new interface will provide a moreconsistent and officially supported method to access the same information andmuch more.

At the lowest level, the client provides a network socket interface whichdefaults to port 36330. This interface is both usable by a machine and bya human connecting directly with a telnet program.

Socket programming can be challenging so Language specific API layers will bedeveloped to simplify connection to the socket level interface. This willallow programmers to access and control Folding@home clients via a few functioncalls via a library in their favorite language.

This socket interface is designed to be usable both by human and machine. Aquick way to gain access to this interface is to connect to a locally runningclient with a telnet program. For example:

Typing help at the prompt will give you a list of commands organized intosection and information on how to use them.

Depending on the client configuration you may have to use theauth <password> command to get access to other commands. The authorizationfunctionality depends on the configuration options command-allow,command-allow-no-pass, the related deny options and where you connectfrom.

Attention Telneting is mainly for developers of 3rd party tools. If you usea compatible telnet program and send complete commands from any applicationsyou develop then everything should work fine. The problem is that FAHClient isnot compatible with the Windows telnet program (at the moment). The clientexpects to receive whole commands than a character at a time. If you telnetremotely from a Linux box to your Windows machines it should work fine. Youcould also try installing a 3rd party telnet program with more options.

Sending commands to the client is very simple. Commands consist of strings ofcharacters followed by one or more arguments separated by spaces followed bya return character (ASCII #10). Arguments which contain spaces may be escapedwith single or double quotes.

For example, to access the value of the pause-on-battery configurationoption you would send this command:

or to set the username to a name with a space in it:

The socket interface has a built-in help system. This can be accessed bytelneting to the client's port and running the help command. This willdump a help screen organized into sections for all the available commands. Youcan get help for a specific command like this:

The help lines are organized as follows:

The arguments may also use a special syntax to describe their usage. Thesymbols of this syntax have the following meaning:

SyntaxMeaning
[]Everything between square brackets is optional.
<>Everything between angle brackets is required.
|A bar means or.
...Ellipsis mean the preceding arguments may be repeated.

Configuration options can be global or folding slot specific. A previoussection showed how to set a single global option. You can set or list one ormore options with a single command using options.

List two options:

List all explicitly set options:

List all options, including those that still have their default values:

List all options, including those with default values, and options which areunset:

Set two options:

You will notice that these commands all print out the value of these optionsin a block starting with the word PyON. This is the data format used bythe socket interface and is described in a section below. Not all commandsthat print in this format will say so in their help string.

The options command allows you to view and modify global options only. Youcan operate on folding slot specific options with the slot-options command:

The number 0 is the folding slot id.

No options are actually saved until the save command is run which writes anew config.xml file which will persist through client restarts.

Folding slot and work unit information can be access with the slot-info andqueue-info commands. Both of these commands dump their information in PyONformat.

Fah V7 Extra Slot Options

Fah V7 Extra Slot Options Free

Adding a new folding slot can be done withslot-add <type> [<name>=<value>]... command. Configuration options for thenew slot can be provided as well to override general options, but the foldingslot type must be provided. Valid folding slot types are uniprocessor orshorter uni, smp and gpu.

For example, adding a uniprocessor slot:

Deleting of an existing slot can be done with slot-delete <slot>. Validfolding slot numbers can be obtained with slot-info command.

Note: Live folding slot manipulation does not require a save command to beeffective, but if you fail to save configuration then all your folding slotmanipulations will get lost after next FAHClient startup.

The socket interface uses the PyON messages to return data to the caller. Thismakes parsing structured data easier and consistent for all commands. It alsomakes handing automatic updates much easier.

PyON Message Format

PyON messages consist of a header, content and a trailer. The header isPyON <version> <message name>n. Where <version> is the PyON versionnumber and <message name> is an arbitrarily chosen name that helps toidentify the contents that can be expected to follow the header. The messagename always consists of only letters, numbers, dash - and underscore _.The trailer is always ---n. You can always count on both the header andtrailer being printed on their own line. In other words, they will alwaysstart and with a return character n.

Detecting PyON Messages

PyON messages can be detected by scanning the socket output for the PyON headerand trailer. Whatever is between the header and trailer will be PyON parsablecontent.

To detect the header scan for the 6 characters nPyON . To detect thetrailer scan for the 5 characters n---n. Data outside of the header andtrailer should be ignored. These character strings cannot occur in the PyONcontent because the return character is escaped as n.

Parsing PyON Content

PyON stands for Python Object Notation. It is a subset of Python's native datalanguage and a subset of [http://en.wikipedia.org/wiki/JSON JSON] (JavaScriptObject Notation) with a few exceptions. PyON differs from JSON two ways.None is used instead of null and boolean values start with an uppercase letter as in Python. E.g. True and False.

Most of the client commands do not use boolean or None/null values so nearly alldata returned by the client can be parsed with a JSON parser. JSON parsers areavailable for many different languages. A list of available parsers can befound here [http://www.json.org/]

In Python the content can be parsed with the following code:

Message Processing Examples

The client GUI, FAHControl, is an Open-Source application. The code infah/Connection.py is a good example of how to access the client's socketinterface. You can check out the code with Git using thefollowing commands:

TODO add examples of how to processes PyON messages in various languages.

Rather than polling the client repeatedly for information you can ask theclient to send a PyON message when something has changed using the updatescommand.

The updates command has 5 subcommands:

SubcommandDescription
add <id> <rate> <expression>Add a update with id and update rate.
del <id>Delete a update by id.
listList all currently running updates.
clearDelete all updates.
resetReset all updates.

For example, we can use the add subcommand to get updates of the work queueat a maximum rate of once every 5 seconds with the following command:

The expression argument is an expression that will be evaluated at mostonce every 5 seconds. The command queue-info must be preceded by a $so that the script interpreter knows it is a command.

We can then add a second update, now with id 1 to get folding slot updateswith:

Both slot-info and queue-info print PyON messages so we just have toscan for these messages and process they come. You can tell which message iswhich by its message name.

The FAHControl program uses the following update commands to get it'sinformation from the client:

The expression parameter is one argument so commands, such as options, whichtake arguments must be wrapped in $(). See the section The ScriptInterpreter.

Log updates are handled slightly differently than the updates described in theprevious section.

When you connect to the client you are accessing the client's internal scriptinterpreter. For the most part, you don't have to worry about the details ofthis interpreter because connections to the socket interface put in a simplecommand loop where each entered line is treated as a command expression andevaluated. However, commands and variables can also be evaluated with the $prefix or with $() for commands with have arguments.

A simple illustration of this processing can be seen using the eval command:

The above command will just print the string queue-info which may not bewhat was expected. Whereas the following command will print the results ofrunning the queue-info command.

Fah V7 Extra Slot Options List

eval $queue-info

The above command is equivalent to just running the queue-info commanddirectly. The difference is you can do things like this:

Most command arguments are automatically evaluated before they are passed tothe command except for a few special commands like if and updates whicheither conditionally evaluate their arguments or evaluate them later.

The client's internal scripting language is actually fairly powerful but most ofthis is not needed to use the socket interface but it does explain why commandslike updates need the $ and $() syntax around the expressions theevaluate.

We will depend on third-party developers to help us create the API layers whichhide the difficulties of socket programming for the most popular programminglanguages. We ask developers of these APIs to follow a few guidelines to helpmake interfacing to Folding@home clients consistent across various platformsand languages.

Fah V7 Extra Slot Options Free

  1. Please release all interface APIs under an Open-Source license such as theGPL, BSD or MIT licenses.
  2. Name API functions using the same names used in the socket level interface.
  3. Use a layered approach which separates higher-level functions form thosesupplied directly by the socket level API.

The API should allow API users access to all the same functions provided by thesocket layer with the same names but with language specific datatypes.

Fah V7 Extra Slot Options 2017

  • Talk about the PyON scanning and parsing loop and asynchronous messageprocessing (i.e. threads are not necessary).
  • This section of the document should be expanded as a consistent APIinterface definition is developed.