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

Notas de la versión para 4.0.0

OpenSesame 4.0 Melodramatic Milgram es una nueva versión importante con muchas características y mejoras nuevas.

Importante: Cambios incompatibles con versiones anteriores

  • El registro de variables ha cambiado ligeramente. Específicamente, las variables que se definen en la interfaz de usuario, como las columnas en una tabla de loop o las variables seleccionadas explícitamente en un logger, siempre se registran. Las variables que se definen en un inline_script o inline_javascript solo se registran si son números (int y float), cadenas (str y bytes) y valores None. Esto es para evitar que los archivos de registro se vuelvan irrazonablemente grandes debido al registro de listas largas y otros valores grandes.
  • El contenido de las etiquetas <script> en elementos inline_html no se evalúa. Esto ya no es necesario, porque simplemente puede hacer referencia a las variables experimentales como lo haría en cualquier otro lugar en JavaScript (ver más abajo).
  • Las expresiones condicionales solo se interpretan como script de OpenSesame si contienen referencias de variables utilizando la notación de corchetes o las palabras 'always' o 'never'. De lo contrario, se interpretan como expresiones de Python como se describe a continuación.

Nuevo módulo de Python de OpenSesame (sin GUI)

Para aquellos de ustedes que prefieren programar en lugar de usar una GUI: Ahora puede usar OpenSesame como un módulo de Python.

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

# Iniciar la ventana del experimento usando el backend heredado
exp, win, clock, log = Experiment(canvas_backend='legacy')
# Preparar un lienzo de estímulo y un teclado
cnv = Canvas()
cnv += Text('Hola mundo')
kb = Keyboard()
# Mostrar el lienzo, esperar una pulsación de tecla y luego finalizar el experimento
cnv.show()
kb.get_key()
exp.end()

Ver también:

Mejor integración con Python y JavaScript

La integración entre OpenSesame y Python (en el escritorio) / JavaScript (en el navegador) ahora es más intuitiva. Específicamente, la sintaxis específica de OpenSesame ha sido reemplazada en parte por la sintaxis estándar de Python/JavaScript, y ya no hay distinción entre variables experimentales y variables globales en Python/JavaScript.

{} en lugar de []: Soporte para literales de cadena formateada (f-strings)

La notación preferida para referirse a variables en la interfaz de usuario ahora es usando llaves ({my_var}), en lugar de corchetes ([my_var]).

Incluso puede incluir expresiones completas de Python dentro de las llaves. Por ejemplo, el siguiente texto en un sketchpad incluirá el texto '¡Bien hecho!' si la precisión es superior al 70% y el texto '¡Esfuérzate más!' en caso contrario.

Tu precisión es del {acc} %. {'¡Bien hecho!' if acc > 70 else '¡Esfuérzate más!'}

Al ejecutar un experimento con OSWeb en un navegador, el código de Python dentro de las llaves se convierte automáticamente en JavaScript. Esto significa que puede utilizar las mismas expresiones de Python dentro de las llaves en el escritorio y en un navegador.

Para obtener más información, consulte:

Soporte para expresiones condicionales estilo Python

La sintaxis preferida para las expresiones condicionales run-if, break-if, show-if y otras es Python, en lugar del script de OpenSesame. Esto significa que la siguiente expresión run-if da como resultado que un ítem solo se ejecute cuando la variable correct sea igual a 1, es decir, después de una respuesta correcta. (Esto también está relacionado con el hecho de que las variables experimentales ahora son globales, ver más abajo).

correct == 1

Al ejecutar un experimento con OSWeb en un navegador, las expresiones condicionales de Python se convierten automáticamente en JavaScript. Esto significa que puede utilizar las mismas expresiones condicionales de Python run-if, break-if, show-if y otras en el escritorio y en un navegador.

Espacio de trabajo de JavaScript persistente

El espacio de trabajo de JavaScript ahora es persistente. Esto significa que puede definir una función o variable en un inline_javascript y luego hacer referencia a ella en otro inline_javascript.

Las variables experimentales son globales

Las variables experimentales, como response_time y las variables definidas en los elementos loop, ahora son variables globales dentro de Python y JavaScript. Esto significa que ya no tienes que usar el objeto var (Python) o vars, sino que puedes referirte directamente a las variables experimentales por su nombre.

Python:

# Accede a una variable experimental existente por su nombre
print('response = ', response)
# Define una nueva variable experimental (que también se puede usar en la GUI)
new_experimental_variable = 'example'

JavaScript:

// Accede a una variable experimental existente por su nombre
console.log('response = ' + response)
// Define una nueva variable experimental (que también se puede usar en la GUI)
// Nota: ¡Las variables definidas con `let` *no* están disponibles globalmente!
var new_experimental_variable = 'example'

Mejora de la interfaz de usuario

Se han hecho mejoras en la usabilidad a través de la interfaz de usuario:

  • Mejora de iconos: Los íconos de abrir y guardar se han rediseñado porque algunos usuarios los encontraban confusos.
  • Las expresiones condicionales run-if, break-if, show-if y otras están anotadas para mayor claridad ('Siempre ejecutar')
  • OSWeb ahora aparece como un backend
  • Los elementos que no son compatibles con las configuraciones del experimento están deshabilitados
  • Los elementos de un experimento se pueden deshabilitar. Esto es principalmente útil para fines de desarrollo, por ejemplo, para deshabilitar temporalmente las instrucciones.
  • Los mensajes de error son ahora mucho más informativos.
  • Una nueva extensión de actualizador verifica automáticamente las actualizaciones de paquetes seleccionados. Esto proporciona una forma fácil de mantener OpenSesame actualizado sin tener que volver a descargar e instalar el software.

Escalera de Quest entrelazada

Los elementos quest_staircase_init y quest_staircase_next ahora aceptan un nombre, lo que te permite ejecutar múltiples procedimientos de Quest en paralelo. Esto es principalmente útil si deseas ejecutar procedimientos Quest independentes y entrelazados para diferentes condiciones experimentales.

Sketchpad enlazado en mouse_response soportado en OSWeb

El mouse_response ahora admite elementos sketchpad enlazados en OSWeb, lo que facilita trabajar con regiones de interés en experimentos basados en navegadores tanto como en experimentos basados en laboratorios.

Para desarrolladores: Mejorada API de plugins y extensiones

La API de plugins y extensiones ha sido simplificada y revisada para reflejar las mejores prácticas actuales en el desarrollo de Python:

Créditos

OpenSesame se basa directa e indirectamente en el trabajo de muchas personas. Pero un agradecimiento especial a Robbert van der Mijn por construir los paquetes de Mac OS, y a Elio Sjak-Shie por sugerir una forma de implementar un espacio de trabajo persistente de JavaScript para OSWeb.

Supported by