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

Notes de version pour 4.0.0

OpenSesame 4.0 Melodramatic Milgram est une nouvelle version majeure avec de nombreuses nouvelles fonctionnalités et améliorations.

Important : Changements incompatibles avec les versions précédentes

  • La journalisation des variables a légèrement changé. Plus précisément, les variables définies dans l'interface utilisateur, telles que les colonnes d'un tableau loop ou les variables explicitement sélectionnées dans un logger, sont toujours enregistrées. Les variables définies dans un inline_script ou inline_javascript sont enregistrées uniquement si elles sont des nombres (int et float), des chaînes (str et bytes) et des valeurs None. Cela permet d'éviter que les fichiers de journalisation ne deviennent déraisonnablement volumineux en raison de l'enregistrement de longues listes et d'autres grandes valeurs.
  • Le contenu des balises <script> dans les éléments inline_html n'est pas évalué. Cela n'est plus nécessaire, car vous pouvez simplement vous référer aux variables expérimentales comme vous le feriez ailleurs en JavaScript (voir ci-dessous).
  • Les expressions conditionnelles ne sont interprétées comme script OpenSesame que si elles contiennent des références de variables à l'aide de la notation entre crochets ou des mots "always" ou "never". Sinon, elles sont interprétées comme des expressions Python comme décrit ci-dessous.

Nouveau module Python OpenSesame (sans interface graphique)

Pour ceux d'entre vous qui préfèrent coder plutôt que d'utiliser une interface graphique : vous pouvez désormais utiliser OpenSesame en tant que module Python.

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

# Initialisez la fenêtre d'expérience en utilisant le backend "legacy"
exp, win, clock, log = Experiment(canvas_backend='legacy')
# Préparez un canevas de stimulus et un clavier
cnv = Canvas()
cnv += Text('Bonjour le monde')
kb = Keyboard()
# Affichez le canevas, attendez un appui sur une touche, puis terminez l'expérience
cnv.show()
kb.get_key()
exp.end()

Voir aussi :

Amélioration de l'intégration avec Python et JavaScript

L'intégration entre OpenSesame et Python (sur le bureau) / JavaScript (dans le navigateur) est maintenant plus intuitive. Plus précisément, la syntaxe spécifique à OpenSesame a été en partie remplacée par une syntaxe Python/JavaScript standard, et il n'y a plus de distinction entre les variables expérimentales et les variables globales en Python/JavaScript.

{} au lieu de [] : prise en charge des chaînes de caractères formatées (f-strings)

La notation préférée pour faire référence aux variables dans l'interface utilisateur est maintenant avec des accolades ({my_var}), plutôt qu'avec des crochets ([my_var]).

Vous pouvez même inclure des expressions Python complètes entre les accolades. Par exemple, le texte suivant sur un sketchpad inclura le texte "Bien joué !" si la précision est supérieure à 70% et le texte "Essayez plus fort !" sinon.

Votre précision est de {acc} %. {'Bien joué !' if acc > 70 else 'Essayez plus fort !'}

Lors de l'exécution d'une expérience avec OSWeb dans un navigateur, le code Python à l'intérieur des accolades est automatiquement converti en JavaScript. Cela signifie que vous pouvez utiliser les mêmes expressions Python à l'intérieur des accolades sur le bureau et dans un navigateur.

Pour plus d'informations, consultez :

Prise en charge des expressions conditionnelles de style Python

La syntaxe préférée pour les expressions run-if, break-if, show-if et autres expressions conditionnelles est Python, plutôt que le script OpenSesame. Cela signifie que l'expression run-if suivante fait en sorte que l'élément ne soit exécuté que lorsque la variable correct est égale à 1, c'est-à-dire après une réponse correcte. (Cela est également lié au fait que les variables expérimentales sont maintenant des globales, voir ci-dessous.)

correct == 1

Lors de l'exécution d'une expérience avec OSWeb dans un navigateur, les expressions conditionnelles Python sont automatiquement converties en JavaScript. Cela signifie que vous pouvez utiliser les mêmes expressions run-if, break-if, show-if et autres expressions conditionnelles Python sur le bureau et dans un navigateur.

Espace de travail JavaScript persistant

L'espace de travail JavaScript est maintenant persistant. Cela signifie que vous pouvez définir une fonction ou une variable dans un inline_javascript puis vous y référer dans un autre inline_javascript.

Les variables expérimentales sont globales

Les variables expérimentales, comme response_time et les variables définies dans les éléments loop, sont maintenant des variables globales au sein de Python et JavaScript. Cela signifie que vous n'avez plus besoin d'utiliser l'objet var (Python) ou vars, mais vous pouvez directement référencer les variables expérimentales par leur nom.

Python :

# Accéder à une variable expérimentale existante par son nom
print('response = ', response)
# Définir une nouvelle variable expérimentale (qui peut aussi être utilisée dans l'interface utilisateur)
new_experimental_variable = 'example'

JavaScript :

// Accéder à une variable expérimentale existante par son nom
console.log('response = ' + response)
// Définir une nouvelle variable expérimentale (qui peut aussi être utilisée dans l'interface utilisateur)
// Note : Les variables définies en utilisant `let` ne sont *pas* disponibles globalement !
var new_experimental_variable = 'example'

Interface utilisateur améliorée

Il y a eu des améliorations de l'ergonomie à travers l'interface utilisateur :

  • Icônes améliorées : Les icônes de ouvrir et enregistrer ont été redessinées car elles étaient perçues comme peu claires par certains utilisateurs
  • Les expressions conditionnelles comme run-if, break-if, show-if, etc. sont annotées pour plus de clarté ('Toujours exécuter')
  • OSWeb apparaît maintenant comme un backend
  • Les items qui ne sont pas compatibles avec les paramètres de l'expérience sont désactivés
  • Les items dans une expérience peuvent être désactivés. Ceci est principalement utile à des fins de développement, par exemple pour désactiver temporairement les instructions.
  • Les messages d'erreur sont maintenant beaucoup plus informatifs.
  • Une nouvelle extension de mise à jour vérifie automatiquement les mises à jour des paquets sélectionnés. Cela offre un moyen facile de maintenir OpenSesame à jour sans avoir à re-télécharger et réinstaller le logiciel.

Escalier Quest entrelacé

Les items quest_staircase_init et quest_staircase_next acceptent maintenant un nom, ce qui vous permet d'exécuter plusieurs procédures Quest en parallèle. Cela est principalement utile si vous voulez exécuter des procédures Quest indépendantes et entrelacées pour différentes conditions expérimentales.

Support du sketchpad lié dans mouse_response en OSWeb

mouse_response prend maintenant en charge les éléments sketchpad liés dans OSWeb, ce qui rend aussi facile de travailler avec des régions d'intérêt dans des expériences basées sur le navigateur que dans des expériences basées en laboratoire!

Pour les développeurs : API plug-in et extension améliorée

L'API pour les plugins et extensions a été simplifiée et révisée pour refléter les meilleures pratiques actuelles en développement Python :

Remerciements

OpenSesame repose directement et indirectement sur le travail de nombreuses personnes. Mais un merci particulier à Robbert van der Mijn pour la construction des packages Mac OS, et à Elio Sjak-Shie pour avoir suggéré une façon de mettre en œuvre un espace de travail JavaScript persistant pour OSWeb.

Supported by