#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

# Running two connected experiments concurrently?

edited February 2016

I'm going to be building a minimal social situation experiment, requiring the experiment to be run simultaneously on two PCs. The choice made by participant A on computer A should affect the options given to participant B on computer B. Is there any particular way of doing this with OpenSesame? Currently I'm leaning towards connecting the two machines via SSH, or else using one computer with two distantly connected monitors.

• edited 5:14PM

Hi there, yes this is certainly possible. In the past I have done this just by using sockets. I have just asked my collaborator on that experiment for permission to send you our files to use as an example and I hope to hear back from him shortly. If it is ok, I will place the experiment here.

• edited 5:14PM

Ok, I have put a simple example online at Github. Use that and see if it can help you start off. I had a more sophisticated example but I cannot seem to find it currently. Please note that you need OpenSesame 2 to run them. I have not had the time to adapt them to OpenSesame 3. Good luck, and let me know if it works out for you this way.

• edited 5:14PM

Fantastic, thank you so much!

• edited 5:14PM

Hi all,

I just wanted to point out the psynteract plug-ins that a colleague of mine, Felix Henninger, and I are working on at the moment. They are designed to implement real-time interactive experiments in OpenSesame using simple drag&drop items.

The plug-ins are still under active development, but you can download our current version along with some example experiments for OpenSesame 3 from https://github.com/psynteract/psynteract-os

Best,

Pascal

• edited 5:14PM

One additional note regarding the experiment under discussion: I don't know the specifics of the experiment, but I assume that our ultimatum game example (https://github.com/psynteract/psynteract-os/blob/master/examples/ultimatum_game.osexp) could be adapted to fit the purpose.

Two participants are in different roles specified when starting the experiment using the psynteract_connect item (proposer, responder in the ultimatum game, could be A and B in your case). The proposer / participant A makes her decision first (you can use a run if condition that displays certain items depending on the current_role), then this decision is communicated using the psynteract_communicate item. Based on the decision of A, different options are shown to participant B.

This way you can use the same experiment on both computers, have a random assignment of the roles, and communicate the decisions in real-time.

• edited 5:14PM

Hi everybody,

Pascal has already presented our project perfectly (thanks!) -- I have nothing to add, except that you are warmly invited to contact us, and I can provide you with some further written documentation (which is in the works right now).

What our plugins do is synchronize OpenSesame variables across multiple computers, and they require no additional code -- if you try them out, I'd love to hear about your experience!

Kind regards

-Felix

• edited 5:14PM

Wow that looks like an awesome project and feature to me!

• edited 5:14PM

That's perfect, thank you very much! I'll give them a go and let you know how it works out.

• Hey,

I just tried the plug-ins, because I want to implement the ultimatium game in our department. But, it doesn't work for me, maybe because I have the latest version of OpenSesame? Any ideas how to handle that?

Laura

• Hi Laura,

Given that the plugin is 5 years old it is quite likely that there are some compatibility issues. But as one of the developers @Pascal is still active here on the forum, there might be a chance that it can be fixed. For this to be possible, we need a lot more information from your side, though. Such as, what Opensesame version do you run it on? On which operating system. What does it mean when you say "it doesn't work"? You can't install it? It crashes when you want to use it? The plugin doesn't behave it is supposed to?

thanks,

Eduard

• Hey Eduard,

thank you for the kind response!

I struggle with installing the psynteract plugin. I run the OpenSesame version 3.3.10 on Windows.

It get the following error massage (I only copied the explicit error message):

I'm not quite sure what to do.

Best, Laura

• Hi Laura,

The installation instructions were out of date. I shall propose it to be changed. Can you try to run this command:

pip.main(['install',  'https://github.com/eort/psynteract-os/archive/refs/tags/v0.7.1.2-alpha.zip'])

I think this should work, but I am not sure (I'm also new to this :) )

• Hi Eduard,

thank you for the quick response!

Unfortunately, it doesn't work either. I get the following error message:

Best,

Laura

• Can you run Opensesame as adminstrator and retry?

Btw, it is better to copy code and error messages into here, rather than making screenshots (one of the advantages is that like that things can be copied and pasted). Here, on the forum, you can format what you write, so that code is rendered nicely.

• When running OpenSesame as administrator, I got it to work, thank you!! :)

I do have another question, which might be a little bit stupid.

I found the example fpr the ultimatum game at github (thank you Pascal & Felix), however, I don't really understand where to paste the code, so I can run it in OpenSesame. I'm kind of lost here.

Laura

• Either open Opensesame's first item in the overview and select general script. There you can replace all the code in it with what you copied from github. Alternatively, you can go to the start page of psyinteract's github, and download the entire directory as a zip file (https://github.com/eort/psynteract-os/archive/refs/heads/master.zip), unzip it and in examples you'll find the experiment file you want.

Good luck,

Eduard

• Hey Eduard,

Thank you again for your help!

I tried using the way via zip file, but for some reason I get the error message "Failed to load plugin 'psynteract_communicate'" even though it's shown in the drag and drop menu on the left side. Thesame is shown for psynteract_wait and psynteract_connect. I tried to run OpenSesame as an Admin, but it makes no difference.

The traceback is as following:

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\item_store.py", line 190, in new
self.experiment.item_prefix()
File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\plugins.py", line 449, in load_plugin
item = item_class(item_name, experiment, string)
File "C:\Program Files (x86)\OpenSesame\share\opensesame_plugins\psynteract_communicate\psynteract_communicate.py", line 125, in __init__
self.custom_interactions()
File "C:\Program Files (x86)\OpenSesame\share\opensesame_plugins\psynteract_communicate\psynteract_communicate.py", line 152, in custom_interactions
self.custom_variables_widget.setEnabled(self.var.auto_detect_variables=='no')
File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\item.py", line 240, in __getattr__


Thank you!

Laura

• Hi Laura,

These are most likely Python 2/3 compatibility problems, which makes sense given that the plugin was written 5 years ago. I don't know how much work it would be to make it Python3 compatible, nor whether it would be worth the effort. That might be a question more suited to @Pascal and/or Felix Henninger. I guess if you contact them, they can tell you whether it is something they have time for and that it would be worth to wait for you.

(Of course, you can also try the rehaul of the code yourself. It is not terribly complicated, but a good degree of Python knowledge is definitely an advantage.

Eduard

• edited November 2021

Dear Eduard, dear Laura,

please excuse my delayed reply. I left academia last year transitioning into an industry position. I still continue to maintain the open source packages I developed (e.g., the mousetrap plugin for OpenSesame and the mousetrap R package). However, it usually takes me some time to answer questions in the forum as I can only check it in my free time. Thanks so much, Eduard, for filling in from time to time.

Thanks a lot, Eduard, for suggesting an update of the installation instructions for psynteract on GitHub. I have taken a look at these yesterday and added some updates to the README for the psynteract plugin for OpenSesame on GitHub.

Regarding psynteract: I think there are some further issues (beyond the plugin installation which is now fixed) when using psynteract under recent versions of OpenSesame (as you have also just mentioned above). As some of these are related to the general psynteract Python library, I have spoken with Felix (@mezzopiano), who is psynteract's main developer, and we are working on fixing these issues. We will let you know once they are resolved.

Best,

Pascal

• Dear Eduard, dear Laura,

a quick update on psynteract: Felix and I made some changes to both the psynteract library and the psynteract plugin for OpenSesame and things should be working with recent versions of OpenSesame now.

You can find the updated installation instructions at https://github.com/psynteract/psynteract-os#installation (see also below). Please install the development version of psynteract (we have not put together a new release yet).

You can install the latest development version by running the following command in OpenSesame's debug window:

!pip install https://github.com/psynteract/psynteract-os/archive/master.zip

You might run into some issues with the underlying psynteract library as you already have psynteract installed, so you could run the following command in addition to make sure that the psynteract library also gets updated:

!pip install --upgrade --force-reinstall --no-deps https://github.com/psynteract/psynteract-py/releases/download/v0.9.0/psynteract-0.9.0.tar.gz

We noticed a small issue regarding the psynteract extension in the menu (as the OS Web extension somehow gets moved to the psynteract menu). We believe that this might be an issue on the side of the OS Web extension and have raised a corresponding issue on GitHub: https://github.com/open-cogsci/opensesame-extension-osweb/issues/29 (@sebastiaan : Hope this is correct - and sorry in advance in case it is on our end!).

Best,

Pascal

• @Pascal great work! And yes, the menu issue is on the radar, but I haven't had time to look into it yet.

• Dear Pascal,

thank you for the work you've put in, I appreciate it!

I updated Psynteract, but still run into problems. The following error message keeps popping up:

Hello from the pygame community. https://www.pygame.org/contribute.html

Expyriment 0.10.0+opensesame2 (Python 3.7.6)

Main file: Lib\site-packages\opensesame.py (7897e6)

Unable to load numpy_formathandler accelerator from OpenGL_accelerate

[2021-11-12 11:22:49,281:legacy:185:INFO] sampling freq = 48000, buffer size = 1024

[2021-11-12 11:22:50,015:experiment:471:INFO] experiment started

[2021-11-12 11:22:50,015:experiment:475:INFO] disabling garbage collection

[2021-11-12 11:22:52,287:experiment:559:INFO] enabling garbage collection

Unexpected error

item-stack: experiment[run].psynteract_connect[run]

time: Fri Nov 12 11:22:52 2021

exception type: ConnectionError

exception message: HTTPConnectionPool(host='server.example', port=5984): Max retries exceeded with url: /psynteract (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000029BB83D5948>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

Traceback:

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\connection.py", line 157, in _new_conn

(self._dns_host, self.port), self.timeout, **extra_kw

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\util\connection.py", line 61, in create_connection

for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):

File "C:\Program Files (x86)\OpenSesame\lib\socket.py", line 752, in getaddrinfo

for res in _socket.getaddrinfo(host, port, family, type, proto, flags):

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\connectionpool.py", line 672, in urlopen

chunked=chunked,

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request

conn.request(method, url, **httplib_request_kw)

File "C:\Program Files (x86)\OpenSesame\lib\http\client.py", line 1252, in request

File "C:\Program Files (x86)\OpenSesame\lib\http\client.py", line 1298, in _send_request

File "C:\Program Files (x86)\OpenSesame\lib\http\client.py", line 1247, in endheaders

self._send_output(message_body, encode_chunked=encode_chunked)

File "C:\Program Files (x86)\OpenSesame\lib\http\client.py", line 1026, in _send_output

self.send(msg)

File "C:\Program Files (x86)\OpenSesame\lib\http\client.py", line 966, in send

self.connect()

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\connection.py", line 184, in connect

conn = self._new_conn()

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\connection.py", line 169, in _new_conn

self, "Failed to establish a new connection: %s" % e

urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0000029BB83D5948>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\requests\adapters.py", line 449, in send

timeout=timeout

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\connectionpool.py", line 720, in urlopen

method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\urllib3\util\retry.py", line 436, in increment

raise MaxRetryError(_pool, url, error or ResponseError(cause))

urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='server.example', port=5984): Max retries exceeded with url: /psynteract (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000029BB83D5948>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libqtopensesame\misc\process.py", line 158, in run

exp.run()

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\experiment.py", line 477, in run

self.items.execute(self.var.start)

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\item_store.py", line 103, in execute

self.run(name)

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\item_store.py", line 122, in run

self[name].run()

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\sequence.py", line 51, in run

self.experiment.items.run(_item)

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\item_store.py", line 122, in run

self[name].run()

File "C:\Program Files (x86)\OpenSesame\share\opensesame_plugins\psynteract_connect\psynteract_connect.py", line 63, in run

offline=self.var.offline=='yes')

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\psynteract\__init__.py", line 61, in __init__

self.db = self.server.database(db_name)

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\pycouchdb\client.py", line 156, in database

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\pycouchdb\resource.py", line 126, in head

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\pycouchdb\resource.py", line 92, in request

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\requests\sessions.py", line 530, in request

resp = self.send(prep, **send_kwargs)

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\requests\sessions.py", line 643, in send

File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\requests\adapters.py", line 516, in send

raise ConnectionError(e, request=request)

requests.exceptions.ConnectionError: HTTPConnectionPool(host='server.example', port=5984): Max retries exceeded with url: /psynteract (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000029BB83D5948>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

To be honest, I don't really know what it means..

Laura

• Hi Laura,

I think the issue is that the psynteract connect item wants to connect to a psynteract server but you have no server running. You can select the "Offline test mode" option in the psynteract connect item to test your experiments without a server.

However, for running actual interaction experiments, you need to set up your own server and install the psynteract backend on it with the psynteract extension. Further information on that is provided in the BRM paper and also online at https://github.com/psynteract/psynteract-docs

Hope this helps!

Best

Pascal

• Hi Pascal,

thank you for the response. It makes sense! I'll talk to my supervisor to set up the server.

In the meantime I would like to try it offline, however, I did not find the "Offline test mode" checkmark. Do I have to install each plugin seperatly after installing psynteract? I tried to do so, but for some reason I would have to install another OpenSesame version (I'm currently running 3.3.10).

Best,

Laura

• Hi Laura,

once installing the psynteract plugin for OpenSesame using the command above, all six psynteract items should be available within OpenSesame. The option "Offline test mode" can be found within the psynteract connect item.

Best,

Pascal

• Hi Pascal,

I talked to my supervisior and he is willing to set up the server once I got the experiment to work. I chose the "Offline test mode", but the experiment stops at the inline script, with the followint error message:

## Details

• item: process_decision
• phase: run
• item-stack: experiment[run].process_decision[run]
• time: Fri Nov 26 11:51:47 2021
• exception type: osexception
• exception message:  The variable 'partner01_decision' does not exist. Tip: Use the variable inspector (Ctrl+I) to see all variables.

item-stack: experiment[run].process_decision[run] time: Fri Nov 26 11:51:47 2021

## Traceback (also in debug window)

  File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\inline_script.py", line 116, in run
self.workspace._exec(self.crun)
File "C:\Program Files (x86)\OpenSesame\Lib\site-packages\libopensesame\base_python_workspace.py", line 124, in _exec
exec(bytecode, self._globals)
Inline script, line 2, in


Is that because of the offline mode? That the only answer I can possibly find.

Best,

Laura

• Hi Laura,

yes, you are right, this issue is due to the offline test mode (as it does not support roles). However, you should be able to run the prisoner's dilemma example in offline test mode without issues.

Best,

Pascal

• Hey Pascal,

my supervisor will set up the server, thank you so much!

However, I still have a problem with variabel 'partner01_decision' (see screenshot). How can I handle it?

Thank you!

Laura

• Hi Laura,

which experiment are you using for your test? If you are still using the ultimatum game, this cannot be tested in offline test mode (due to the not assigned roles, see above) and you will get the error message that you just shared ("partner01_decision" does not exist, which is the case as there is no partner). However, you could run the prisoner's dilemma experiment in offline test mode, as this paradigm does not have roles and then the own decision is internally used by psynteract to simulate a partner decision.

Best,

Pascal