Introducing PsychoPy Studio

PsychoPy Studio is a full rebuild of the PsychoPy desktop app using web-based libraries (Svelte and Electron). You can download PsychoPy Studio from psychopy.org or from the PsychoPy repo on GitHub.

The underlying experiment engine (the PsychoPy library) is still Python, but Studio gives a new front-end application for creating, editing and running experiments, with some major advantages over the existing Python-based standalone app:

Modern interface

A lot of software engineers in the world of user-interface development, in recent years, have been focussed on building web applications. This means that JavaScript is where the most modern user interfaces are being written, so by moving to web-based libraries for Studio we’re able to create a much more polished, modern-feeling app. It doesn’t look vastly different, because we think there were a lot of good things about the existing interface that we wanted to keep, but we’re hoping you’ll notice a lot of small improvements to the usability and overall feel of the app.

For example: Components and Routines in Studio can be rearranged by drag n’ drop (see below…).

Faster load times

We all know that the PsychoPy application has always taken a very long time to launch. You don’t want to shut it down for fear of having to watch another iteration of that splash screen!

PsychoPy Studio is much faster to load as we don’t have to start Python for the app itself to appear; all that can happen in the background once the app is open, meaning you can get to editing your experiment quicker.

Easier installations

PsychoPy Studio doesn’t come with Python baked in; when you first open the app, it uses a package manager called uv to set up its own environment and install just the PsychoPy library, without any of the app-specific dependencies like wxPython (which is pretty large and tricky to compile). This makes the installation process much quicker and easier.

In particular, installing on Linux is much easier, as we’re now able to offer a standalone (.AppImage) Linux installer.

Better version independence

PsychoPy has, for many years, supported the rare (possibly unique?) ability to switch itself to an older state so that you could install a newer version of the app but run your study in the version of the library you created it in. We think that’s a very important feature of the software for the sake of reproducibility.

However, we’ve always been limited by the Python version and dependencies of the app. If you installed a version of PsychoPy that shipped with Python 3.10, then you could only use version of the library which supported Python 3.10 (which means at least PsychoPy 2023.2.x).

As PsychoPy Studio doesn’t have Python baked in, it can setup a whole environment on the fly, meeting the needs of a given legacy version. Each environment can even have its own plugins installed, independent of one another. And you can have as many environments as you like, for as many versions as you need to support in your lab!

The future: Creating studies in Pavlovia and on tablets

When we say PsychoPy Studio is made using web-based technology, what we mean is that the interface of the app is a webpage which we package inside of a desktop app. With a bit of work, this same webpage could be hosted online and accessed by your web browser, meaning editing experiments on a tablet, a Chromebook, etc. would be possible with no installation required! We’re hoping to take Studio in this direction in the near future, so watch this space.

3 Likes

Very excited to play with Studio!

I am, however, having an issue with linking to a Pavlovia project in Studio. I can log in to Pavlovia in the app from the No User dropdown in the menu bar, but when I do No Project > New Project, or if I do No Project > Search Projects, nothing happens.

(With developer tools enabled, nothing appears in the console while doing these)

Similarly, if I open an existing experiment that is already linked to a Pavlovia project (i.e., there is a .git folder in the project directory), Studio doesn’t seem to know that it’s got a Pavlovia project.

Is this currently expected behavior, with Pavlovia support still to come; or am I doing something wrong/is this a bug?

That does sound like a bug, I think it’s best to create a new thread for it here and/or report it on the github issues for psychopy-studio .

Thanks— I’ll go post a github issue.