Open variable sets from client side

Hi (again) Chris,

I have been trying to open variable sets from the client side, but without any success. Is this feature supposed to be working already? (I was told it is a fairly new option). I am running the 0.8dev on both client and server sides. The first thing I tried was to create a variable set via the client while running the experiment on the server––this successfully created a variable set in the “Documents/Mworks/Experiment Storage/Name-of-the-experiment/Saved Variables” folder on the server computer. Then, I copied the variable set file in the exact some folder (same path name) on the client computer; however, when I then run the experiment, nothing shows up in the “Load local (client-side) variable set” dropdown menu (I cannot even click on it). At first I thought it was because the variable set had to be created from the computer used as a server (and could not simply be copied from one computer to another). So what I tried was to open a server on the computer I was originally using just as a client, and then run a client on that same computer to create the variable set. Again, the variable set was successfully created, but when I then switched the configuration back to the original one, the variable set is still not accessible from the client side… I hope that was clear… Can you help me with that?

Thanks,
Nicolas

Hi Nicolas,

Client-side variable sets have never been supported. The “Load local (client-side) variable set” option is just a placeholder. (It was added before I started working on MWorks, and honestly I had forgotten it was there.)

Can I ask why you wanted to use client-side (as opposed to server-side) variable sets? If it’s something that would be useful, I can start thinking about how to implement it. Alternatively, there may be a different feature that better meets your needs.

Cheers,
Chris

Hi Chris,

The reason I was interested in this feature is that I think it would make my experiment better self-contained. Let me explain: I am launching my human psychophysics experiment on a remote computer (server-side) via my personal computer (client-side). The experiment file itself is actually on the client-side only and I am loading for each subject a specific variable set––which currently has to be stored on the server-side, i.e, not my own computer. I would definitely prefer if I could store the variable sets on the client-side, especially because I may need to adjust parameters values in a variable set in-between two sessions of a given subject; currently, I have to go on the experiment computer (server-side) and do the changes from there directly… which is not ideal.

An interesting alternative that one of my coworker in the lab suggested to me is to define small protocols within your experiment .xml file that you run before running the main experiment protocol and which you use to initialize a given set a variables to specific values (effectively acting like a "variable set protocol”). Although there is a risk of forgetting to run those initializing protocols before starting the main experiment, he used a series of “asserts” action to make sure variables had been initialized to reasonable values. In any case, even with regular variable sets, there is still a risk of forgetting to load a variable set, unless there is a way to make sure that Mworks “asserts” that a variable set has been loaded before starting the experiment (is there such a feature?)…

Hope that makes sense what I’m trying to get at!

Thanks,
Nicolas

Hi Nicolas,

I would definitely prefer if I could store the variable sets on the client-side, especially because I may need to adjust parameters values in a variable set in-between two sessions of a given subject; currently, I have to go on the experiment computer (server-side) and do the changes from there directly… which is not ideal.

That makes sense. Let me look in to what would be involved in supporting client-side variable sets.

In any case, even with regular variable sets, there is still a risk of forgetting to load a variable set, unless there is a way to make sure that Mworks “asserts” that a variable set has been loaded before starting the experiment (is there such a feature?)

There’s no built-in support for that. Probably the simplest thing would be to add a variable named “variable_set_loaded” (or whatever) to your experiment, with a default value of 0/false. At the start of your protocol, first assert that variable_set_loaded is true (with stop_on_failure set to YES). Then, immediately after the assertion, reset variable_set_loaded to false. Finally, ensure that all your variable sets set variable_set_loaded to true.

Chris

Hi Chris,

I like your solution (using a “variable_set_loaded” variable). I will probably go with that for now; let me know when loading variable sets from the client side is supported (but there is really no rush since the alternative you gave me works for me).

I have one last question for you (I promise! after that, I should be able to run my experiment). So, I tried to upgrade Mworks to v0.8dev (the one where you implemented the mouse pointer resetting) on the iMac I will be using for the actual experiment (until now I was testing it on my laptop and on my own very recent iMac). It turns out the iMac I will use is fairly old (OS 10.9.5), and Mworks 0.8dev is not supported (requires 10.10 or above). The issue is that the iMac is too old to be upgraded to the most recent OS (10.12, Sierra), and I cannot find a safe way to install an intermediate version of the OS (these versions are not available in the app store any more). Is there any chance you could release a version of Mworks that includes the mouse pointer resetting feature but is still supported on OS 10.9.5 (which was the case for Mworks up to v0.7)? That would save me a lot of trouble!

Thank you for your help
Nicolas