From: Sebastiaan Mathot Date: Mon, 26 Sep 2011 11:44:42 +0000 (+0200) Subject: Draft of guest blog post on OpenSesame X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=79ddaad393adbf0df23092340d8db9d4cd1940a1;p=neurodebian.git Draft of guest blog post on OpenSesame [converted from ODT to RST by Michael Hanke] --- diff --git a/sandbox/opensesame.rst b/sandbox/opensesame.rst new file mode 100644 index 0000000..1b2e058 --- /dev/null +++ b/sandbox/opensesame.rst @@ -0,0 +1,118 @@ +:date: 2011-xx-xx 0:00:00 +:tags: neuroscience, software, opensesame, sebastiaan mathot +:author: Sebastiaan Mathôt + +OpenSesame and back-end independence +==================================== + +I suspect that many of you will not be familiar with me or my software, so +let's start with a brief introduction. My name is Sebastiaan Mathôt. I'm the +lead developer of OpenSesame, a graphical tool for creating psychological and +neuroscientific experiments. + +About OpenSesame +---------------- + +The reason that I started working on OpenSesame, aside from the inherent +pleasure that a geek like myself derives from developing software, was my +dissatisfaction with the tools that were available. Not that there's a shortage +of experiment building software, not at all. And for people with reasonable +programming skills there are many viable options: MatLab/ Octave in combination +with the Psychophysics Toolbox, Python in combination with VisionEgg or +PsychoPy, to name but a few (all of these are, incidentally, available through +NeuroDebian). But for people with relatively modest programming skills, such as +most students doing a Bachelor's or Master's project, there aren't that many +options. In my experience, people will generally end up using a proprietary +program, such as E-Prime, Inquisit, or what have you. These offer a reasonably +intuitive graphical interface, but at a price. First, these packages are +expensive and, due to licensing restrictions, people are frequently unable to +install them on their personal computers. Second, they are limited in their +functionality and in their interoperability with other software. + +.. figure:: pics/blog/opensesame_stimulus.png + + One of the unique features of OpenSesame is the ability to draw your + stimuli. You can combine this what-you-see-is-what-you-get approach with + scripting, to easily create flexible stimulus displays. + +Therefore, I wanted to develop a graphical environment for building +experiments, centered around the Python programming language. The idea was to +give users the type of comprehensive graphical interface that they have come to +expect from proprietary packages, but for free, and without taking away any of +the power that Python has to offer. And, almost a year, 12 public releases, and +more than 10,000 downloads later, the result is OpenSesame! + +Back-end independence +--------------------- + +For this post, I was asked to write about one of OpenSesame's features in +particular: back-end independence. This may sound a bit technical and boring, +but it's not. Well... maybe a little boring. In fact, it should be a little +boring, because it's a feature that you're not supposed too notice, unless you +need it. + +So what do I mean by "back-end independence"? Experiments are all about +presenting stimuli. Most often visual stimuli on a computer display, sometimes +sounds, tactile stimuli, etc. From the perspective of a programmer, there are +many ways to present such stimuli. Put differently, there are many programming +libraries that you can use. + +For example, if you want to write a program that controls a computer display, +you can use a Python library called PyGame. PyGame has been designed with +video-games in mind, but, experiments being conceptually so similar (although +not typically as entertaining), it is also well suited for creating +experiments. For this reason, I initially designed OpenSesame around PyGame. + +This seemed like a good idea at the time, but there was a huge drawback. If +people wanted to use OpenSesame, they were forced to use PyGame as well. It was +a package deal, so if PyGame didn't support a particular feature, neither did +OpenSesame. That wasn't very nice. And it also wasn't necessary, because there +was nothing in OpenSesame that inherently required PyGame. It was just an +arbitrary design choice that I had made at the outset. + +So I decided to decouple the "back-end" (i.e., all the functions that had been +handled by PyGame up to that point) from the rest of OpenSesame. This means +that the user can now choose which back-end he or she wants to use for +controlling the display etc. Importantly, OpenSesame continues to function in +the same way, regardless of which back-end is selected. For users who don't +care or know what a back-end is, let alone which back-end they prefer, PyGame +still serves as a default. + +.. figure:: pics/blog/opensesame_backend.png + + You can easily select your favorite back-end using the graphical interface. + The same experiment can be run, (usually) completely unmodified, using any + of the three available back-ends. + +So what's the upshot of all this? Right now, the most direct benefit is that +you can use OpenGL and PsychoPy in your OpenSesame experiments. PsychoPy in +particular provides lots of functions (drawing Gabor patches etc.) that are +very convenient when creating experiments. Previously, users couldn't use +these, because PsychoPy doesn't play nice with PyGame (even though it actually +uses, or can use, PyGame under the hood). Now they can, so that's a definite +plus. And in the future I may add more back-ends, depending on popular demand. +For example, VisionEgg is another library for creating experiments. VisionEgg +is quite popular and could probably be used as a back-end as well. + +This means that users of OpenSesame now have both a comprehensive graphical +interface and powerful programming libraries at their disposal. They can +choose. Most of the experiment can usually be created using the GUI, which is +especially appealing for the less tech-savvy among us. But, for more +complicated parts, Python scripting can be used and, consequently, users have +access to a wide range of libraries. + +I think that OpenSesame's back-end independence is a nice example (one of many, +I hasten to add) of how free software can work together. If it hadn't been +possible to use PsychoPy and OpenGL in OpenSesame, I would have probably ended +up duplicating lots of functionality. That would have been very time consuming. +Time that I have now spent on refining other parts of OpenSesame, unique parts +and not simply duplicates of existing functionality. + +And ultimately, I believe that this type of interoperability is why free +software will continue to grow. + +Links +Cogsci.nl +OpenSesame + + diff --git a/sphinx/pics/blog/opensesame_backend.png b/sphinx/pics/blog/opensesame_backend.png new file mode 100644 index 0000000..cb202d5 Binary files /dev/null and b/sphinx/pics/blog/opensesame_backend.png differ diff --git a/sphinx/pics/blog/opensesame_stimulus.png b/sphinx/pics/blog/opensesame_stimulus.png new file mode 100644 index 0000000..6b78ede Binary files /dev/null and b/sphinx/pics/blog/opensesame_stimulus.png differ