OpenSesame
Rapunzel Code Editor
DataMatrix
Support forum
Python Tutorials
MindProbe
Supported by

Versionshinweise für 4.0.0

OpenSesame 4.0 Melodramatic Milgram ist eine bedeutende neue Version mit vielen neuen Funktionen und Verbesserungen.

Wichtig: Rückwärts inkompabible Änderungen

  • Die Protokollierung von Variablen hat sich leicht geändert. Insbesondere werden Variablen, die in der Benutzeroberfläche definiert sind, wie Spalten in einer loop-Tabelle oder explizit ausgewählte Variablen in einem logger, immer protokolliert. Variablen, die in einem inline_script oder inline_javascript definiert sind, werden nur protokolliert, wenn sie Zahlen (int und float), Zeichenketten(str und bytes) und None-Werte sind. Dies soll verhindern, dass Protokolldateien aufgrund der Protokollierung langer Listen und anderer großer Werte unangemessen groß werden.
  • Der Inhalt von <script>-Tags in inline_html-Elementen wird nicht ausgewertet. Dies ist nicht länger notwendig, da Sie einfach wie anderswo in JavaScript auf experimentelle Variablen verweisen können (siehe unten).
  • Bedingte Ausdrücke werden nur als OpenSesame-Skript interpretiert, wenn sie Variablenverweise mit der eckigen Klammern-Schreibweise enthalten oder die Wörter 'always' oder 'never'. Andernfalls werden sie als Python-Ausdrücke wie unten beschrieben interpretiert.

Neues OpenSesame Python-Modul (ohne GUI)

Für diejenigen, die Codierung gegenüber der Verwendung einer GUI bevorzugen: Sie können OpenSesame jetzt als Python-Modul verwenden.

from libopensesame.python_workspace_api import \
  Experiment, Canvas, Keyboard, Text

# Initialisiere das Experimentfenster mit dem Legacy-Backend
exp, win, clock, log = Experiment(canvas_backend='legacy')
# Bereiten Sie eine Stimulus-Leinwand und eine Tastatur vor
cnv = Canvas()
cnv += Text('Hallo Welt')
kb = Keyboard()
# Zeige die Leinwand, warte auf einen Tastendruck und beende dann das Experiment
cnv.show()
kb.get_key()
exp.end()

Siehe auch:

Verbesserte Integration mit Python und JavaScript

Die Integration zwischen OpenSesame und Python (auf dem Desktop)/ JavaScript (im Browser) ist nun intuitiver. Insbesondere wurde OpenSesame-spezifische Syntax teilweise durch standardmäßige Python/ JavaScript-Syntax ersetzt, und es gibt keine Unterscheidung mehr zwischen experimentellen Variablen und globalen Variablen in Python/ JavaScript.

{} statt []: Unterstützung für formatierte String-Literalen (f-strings)

Die bevorzugte Schreibweise für die Referenzierung von Variablen in der Benutzeroberfläche ist nun die Verwendung von geschweiften Klammern ({my_var}) anstelle von eckigen Klammern ([my_var]).

Sie können sogar vollständige Python-Ausdrücke innerhalb von geschweiften Klammern einschließen. Beispielsweise enthält der folgende Text auf einem sketchpad den Text "Gut gemacht!" wenn die Genauigkeit über 70% liegt und andernfalls den Text "Versuch es härter!".

Deine Genauigkeit beträgt {acc} %. {'Gut gemacht!' if acc > 70 else 'Versuch es härter!'}

Beim Ausführen eines Experiments mit OSWeb in einem Browser wird der Python-Code innerhalb von geschweiften Klammern automatisch in JavaScript konvertiert. Das bedeutet, dass Sie die gleichen Python-Ausdrücke in geschweiften Klammern auf dem Desktop und in einem Browser verwenden können.

Für weitere Informationen siehe:

Unterstützung für Python-artige bedingte Ausdrücke

Die bevorzugte Syntax für Run-If, Break-If, Show-If und andere bedingte Ausdrücke ist Python und nicht OpenSesame-Skript. Das bedeutet, dass der folgende Run-If-Ausdruck dazu führt, dass ein Element nur ausgeführt wird, wenn die Variable correct gleich 1 ist, also nach einer korrekten Antwort. (Dies hängt auch damit zusammen, dass experimentelle Variablen jetzt Globals sind, siehe unten.)

correct == 1

Beim Ausführen eines Experiments mit OSWeb in einem Browser werden Python-bedingte Ausdrücke automatisch in JavaScript konvertiert. Das bedeutet, dass Sie die gleichen Python Run-If, Break-If, Show-If und andere bedingte Ausdrücke auf dem Desktop und im Browser verwenden können.

Persistente JavaScript-Arbeitsumgebung

Die JavaScript-Arbeitsumgebung ist nun persistent. Das bedeutet, dass Sie eine Funktion oder Variable in einem inline_javascript definieren können und dann auf sie in einem anderen inline_javascript verweisen können.

Experimentelle Variablen sind global

Experimentelle Variablen, wie response_time und in loop-Elementen definierte Variablen, sind nun innerhalb von Python und JavaScript globale Variablen. Das bedeutet, dass Sie nicht mehr das var (Python) oder vars Objekt verwenden müssen, sondern direkt auf experimentelle Variablen durch deren Namen zugreifen können.

Python:

# Zugriff auf eine existierende experimentelle Variable durch ihren Namen
print('response = ', response)
# Definiere eine neue experimentelle Variable (die auch im GUI verwendet werden kann)
new_experimental_variable = 'example'

JavaScript:

// Zugriff auf eine existierende experimentelle Variable durch ihren Namen
console.log('response = ' + response)
// Definiere eine neue experimentelle Variable (die auch im GUI verwendet werden kann)
// Hinweis: Variablen, die mit `let` definiert wurden, sind *nicht* global verfügbar!
var new_experimental_variable = 'example'

Verbesserte Benutzeroberfläche

Es gab Benutzerfreundlichkeitsverbesserungen durch die Benutzeroberfläche:

  • Verbesserte Icons: Die Icons zum Öffnen und Speichern wurden neu gestaltet, da sie von einigen Benutzern als unklar empfunden wurden.
  • Run-if, Break-if, Show-if und andere bedingte Ausdrücke sind zur Klarheit annotiert ('Immer ausführen')
  • OSWeb erscheint nun als Backend
  • Elemente, die nicht mit den Experimenteinstellungen kompatibel sind, sind deaktiviert
  • Elemente in einem Experiment können deaktiviert werden. Dies ist hauptsächlich für Entwicklungszwecke nützlich, zum Beispiel um die Anweisungen vorübergehend zu deaktivieren.
  • Fehlermeldungen sind jetzt viel informativer.
  • Eine neue Updater-Erweiterung prüft automatisch auf Updates für ausgewählte Pakete. Dies bietet eine einfache Möglichkeit, OpenSesame auf dem neuesten Stand zu halten, ohne die Software erneut herunterladen und installieren zu müssen.

Interleaved Quest-Treppe

Die Elemente quest_staircase_init und quest_staircase_next akzeptieren nun einen Namen, was es Ihnen ermöglicht, mehrere Quest-Verfahren parallel auszuführen. Dies ist hauptsächlich nützlich, wenn Sie unabhängige, interleaved Quest-Verfahren für verschiedene experimentelle Bedingungen durchführen möchten.

Unterstützung von verlinkten Sketchpad in mouse_response in OSWeb

Die mouse_response unterstützt nun verlinkte sketchpad-Elemente in OSWeb, was es genauso einfach macht, mit Interessensgebieten in browserbasierten Experimenten zu arbeiten wie in Labor-Experimenten!

Für Entwickler: Verbesserte Plugin- und Extension-API

Die Plugin- und Extension-API wurde vereinfacht und überarbeitet, um den aktuellen Best Practices in der Python-Entwicklung Rechnung zu tragen:

Danksagungen

OpenSesame basiert direkt und indirekt auf der Arbeit vieler Menschen. Aber ein besonderer Dank geht an Robbert van der Mijn für das Erstellen der Mac OS-Pakete und an Elio Sjak-Shie für den Vorschlag, einen persistenten JavaScript-Arbeitsraum für OSWeb zu implementieren.

Supported by