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

Cambios importantes en OpenSesame 3

Cambios en 3.3

OpenSesame 3.3 presenta varias mejoras importantes que facilitan aún más el desarrollo de experimentos. OpenSesame 3.3 es totalmente compatible con la versión 3.2.

Rapunzel: un nuevo editor de código

Rapunzel es un editor de código centrado en el cálculo numérico con Python y R. Técnicamente, Rapunzel es un conjunto de extensiones para OpenSesame. Sin embargo, se ve y se comporta como un programa independiente. ¡Feliz codificación!

Un nuevo editor de inline_script

Relacionado con el desarrollo de Rapunzel: El elemento inline_script ahora utiliza una biblioteca diferente (PyQode) para el editor de código. Como resultado, el editor de código ahora admite muchas de las características que esperarías de un editor de código moderno, incluida la introspección de código y la verificación estática de código.

Más espacios de color

OpenSesame ahora admite de forma nativa los espacios de color HSV, HSL y CIElab.

Nuevo backend de sonido basado en PsychoPy

El backend predeterminado ahora es psycho. Una de las ventajas de este backend es que la temporización de la presentación de sonido debería ser mejor. Si experimenta tartamudeo (reproducción de sonido con clics), aún puede volver al backend psycho_legacy, que utiliza el antiguo sistema de sonido basado en PyGame.

Soporte para elementos de inline_script en coroutines

Ahora puede utilizar elementos inline_script en coroutines. Esto facilita la combinación de scripts de Python con corutinas, en comparación con el antiguo método de escribir una función generadora personalizada.

OpenSesame:

Cambios en 3.2

OpenSesame 3.2 presenta varias mejoras importantes que facilitan aún más el desarrollo de experimentos. OpenSesame 3.2 es totalmente compatible con la versión 3.1.

Una mejor API de Python compatible con PEP-8

PEP-8 es una guía de estilo para Python. Gran parte del software moderno de Python sigue las pautas de PEP-8, pero, por razones históricas, OpenSesame no lo hizo. A partir de 3.2, la API pública ahora sigue la pauta de que los nombres de las clases (y las funciones de fábrica que generan clases) deben ser CamelCase, mientras que los nombres de los objetos y funciones deben ser underscore_case. En términos prácticos, esto significa que ahora crea objetos Canvas de la siguiente manera:

my_canvas = Canvas() # ¡Fijate en la C mayúscula!
my_canvas.fixdot()
my_canvas.show())

Por supuesto, los antiguos nombres en underscore_case todavía están disponibles como alias, por lo que se mantiene la compatibilidad con versiones anteriores.

La API para formularios también se ha simplificado. Ya no es necesario importar libopensesame.widgets, y ya no es necesario pasar exp como primer argumento:

form = Form()
button = Button(text=u'Ok!')
form.set_widget(button, (0, 0))
form._exec()

Mejoras en el sketchpad y Canvas

Acceso y modificación de elementos del Canvas

Los elementos de un Canvas ahora son objetos que se pueden nombrar, acceder y modificar. Esto significa que ya no es necesario volver a dibujar un canvas completo para cambiar un solo elemento. Por ejemplo, puede dibujar un brazo giratorio de la siguiente manera:

my_canvas = Canvas()
my_canvas['arm'] = Line(0, 0, 0, 0)
for x, y in xy_circle(n=100, rho=100):
    my_canvas['arm'].ex = x
    my_canvas['arm'].ey = y
    my_canvas.show()
    clock.sleep(10)

sketchpad también permite nombrar elementos.

Para obtener más información, consulte:

Soporte mejorado para HTML y escritura no latina

El texto ahora es renderizado por Qt, que es una biblioteca moderna (la misma biblioteca que también se utiliza para la interfaz gráfica). Esto significa que ahora puedes usar HTML real en tu texto. Esto también significa que el texto de izquierda a derecha y otros scripts no latinos se representan mucho mejor.

Las imágenes se pueden rotar

Las imágenes ahora se pueden rotar. Esto funciona tanto en elementos sketchpad como en objetos Canvas.

Trabajar con coordenadas polares

Si hace clic derecho en elementos sketchpad, puede seleccionar 'Especificar coordenadas polares'. Esto le permite calcular coordenadas cartesianas (x, y) basadas en coordenadas polares, lo cual es especialmente útil si desea crear configuraciones circulares.

Mejoras en los formularios

Mejora del rendimiento de los formularios

Los formularios ahora son mucho más rápidos al usar los backends psycho y xpyriment. Esto se debe a que los elementos Canvas ahora pueden actualizarse individualmente, como se describe arriba.

Validación de entrada de formulario

Ahora puede validar la entrada de un formulario; es decir, puede evitar que un formulario se cierre hasta que se cumplan ciertos criterios. Además, puede excluir caracteres como entrada de los widgetsTextInput.

Para más información, consulte:

Mejoras en el teclado

Soporte para eventos de liberación de teclas

El objeto Keyboard() ahora tiene una función get_key_release(), que le permite recopilar liberaciones de teclas. Debido a las limitaciones de las bibliotecas subyacentes, la función tiene dos limitaciones importantes:

  • La teclakey devuelta puede ser incorrecta en teclados que no son QWERTY
  • La función no se ha implementado para el backend psycho

Para más información, consulte:

Mejoras en el mouse

Soporte para eventos de liberación de clic del mouse

El objeto Mouse() ahora tiene una función get_click_release(), que le permite recolectar liberaciones de clic del mouse. Esta función actualmente no está implementada para el backend psycho.

Para más información, consulte:

Usar sketchpads para definir regiones de interés

Ahora puede definir un sketchpad vinculado en un elemento de mouse_response. Si lo hace, los nombres de los elementos en el sketchpad se utilizarán automáticamente como regiones de interés (ROI) para los clics del mouse.

Terminar a la fuerza su experimento

Ahora puede terminar a la fuerza su experimento haciendo clic en el botón Kill en la barra de herramientas principal. ¡Esto significa que ya no necesita abrir un administrador de procesos/tareas para finalizar experimentos incontrolados!

Mejor soporte para Mac OS

Los paquetes de Mac OS han sido reconstruidos desde cero por @dschreij. La experiencia en Mac OS ahora debería ser mucho más fluida, rápida y con menos bloqueos.

Traducción al turco

Una traducción completa al turco ha sido aportada por @aytackarabay. Esto significa que OpenSesame ahora está completamente traducido al francés, alemán y turco. Una traducción parcial está disponible en varios otros idiomas.

Cambios en la versión 3.1

OpenSesame 3.1 trae muchas mejoras que facilitan aún más el desarrollo de experimentos. OpenSesame 3.1 es totalmente compatible con la versión 3.0.

¡Un nuevo aspecto!

OpenSesame tiene un nuevo tema de iconos, basado en Moka de Sam Hewitt. Además, la interfaz de usuario se ha rediseñado basándose en pautasconsistentes de interfaz humana. ¡Esperamos que le guste el nuevo aspecto tanto como a nosotros!

Un bucle rediseñado

El loop ahora es más fácil de usar y le permite restringir la aleatorización; esto hace posible, por ejemplo, evitar que el mismo estímulo ocurra dos veces seguidas.

Para más información, consulte:

Corrutinas: hacer cosas en paralelo

El complemento coroutines ahora está incluido por defecto. coroutines le permite ejecutar varios elementos en paralelo; esto hace posible, por ejemplo, recopilar continuamente pulsaciones de teclas mientras se presenta una serie de sketchpads.

Para más información, consulte:

Integración con Open Science Framework

Ahora puede iniciar sesión en Open Science Framework (OSF) desde OpenSesame, y sincronizar de forma fácil experimentos y datos entre su computadora y OSF. ¡Gracias al Centro de Ciencia Abierta por apoyar esta funcionalidad!

Para más información, consulte:

Un objeto de respuestas

Hay un nuevo objeto estándar de Python: responses. Lleva un registro de todas las respuestas que se han recopilado durante el experimento.

Para obtener más información, consulte:

Cambios en 3.0

OpenSesame 3.0 ha traído muchas mejoras que facilitan aún más el desarrollo de experimentos. La mayoría de los cambios son compatibles con versiones anteriores. Es decir, aún puede hacer las cosas de la manera antigua. Sin embargo, algunos cambios no son compatibles con versiones anteriores y es importante tenerlos en cuenta.

Cambios incompatibles con versiones anteriores

Propiedades del Sampler

El objeto sampler tiene varias propiedades que antes eran funciones. Esto concierne:

  • sampler.fade_in
  • sampler.pan
  • sampler.pitch
  • sampler.volume

Para obtener más información, consulte:

Colores compatibles con CSS3

Ahora puede usar especificaciones de colores compatibles con CSS3, como se describe aquí:

Si utiliza nombres de colores (por ejemplo, 'rojo', 'verde', etc.), esto puede resultar en colores ligeramente diferentes. Por ejemplo, según CSS3, 'verde' es#008000 en lugar de (como era el caso anteriormente) #00FF00.

Nuevo formato de archivo (.osexp)

OpenSesame ahora guarda los experimentos en formato .osexp. Por supuesto, aún puede abrir los formatos antiguos (.opensesame y .opensesame.tar.gz). Para obtener más información, consulte:

API de Python simplificada

No más self y exp

Ya no es necesario utilizar el prefijo self. o exp. al llamar a funciones comúnmente utilizadas. Por ejemplo, esto establecerá programáticamente el número de sujetos en 2:

set_subject_nr(2)

Para obtener una lista de funciones comunes, consulte:

El objeto var: Facilitar la obtención y configuración de variables experimentales

La antigua forma de usar self.get() para obtener y exp.set() para establecer variables experimentales ha sido reemplazada por una sintaxis más simple. Por ejemplo, para establecer la variable condition, de modo que pueda hacer referencia a ella como [condition] en los sketchpads, etc.:

var.condition = 'facil`'

Y para obtener una variable experimental condition que, por ejemplo, se definió en un loop:

print('La condición es %s' % var.condition)

Para obtener más información, consulte:

El objeto clock: Funciones de tiempo

Las funciones de tiempo ahora están disponibles a través del objeto clock:

print('Marca de tiempo actual: %s' % clock.time())
clock.sleep(1000) # Dormir durante 1 s

Para obtener más información, consulte:

El objeto pool: Acceso al repositorio de archivos

El repositorio de archivos ahora es accesible a través del objeto pool, que admite una interfaz similar a dict (pero no es realmente un dict de Python):

path = pool['image.png']
print('El camino completo a image.png es: %s' % path)

Para obtener más información, consulte:

No más de importación from openexp.* import *

Ya no es necesario importar las clases openexp y pasar exp como primer argumento. En cambio, para crear un objeto canvas, simplemente puede hacer:

my_canvas = canvas()

Hay funciones similares de fábrica (como se llaman) para keyboard, mouse y sampler.

Para obtener más información, consulte:

El sintetizador ahora es un sampler

El synth ya no es una clase por sí solo. En cambio, es una función que devuelve un objeto sampler que ha sido llenado con una muestra sintetizada.

Mejoras en la interfaz de usuario

Una ventana de depuración IPython

IPython, un terminal interactivo de Python para computación científica, ahora se usa para la ventana de depuración.

Un inspector de variables en vivo

El inspector de variables ahora muestra los valores reales de sus variables mientras su experimento se está ejecutando y después de que su experimento haya finalizado.

Deshacer

¡Finalmente puedes deshacer acciones!

Un nuevo esquema de colores

El esquema de colores predeterminado ahora es Monokai. Nuevamente, un esquema de colores oscuro, pero con un contraste más alto que el predeterminado anterior, Solarized. Este aumento debe aumentar la legibilidad. ¡Y se ve bien!

Coordenadas consistentes

Anteriormente, OpenSesame usaba coordenadas de pantalla mixtas e inconsistentes: 0,0 era la esquina superior izquierda de la pantalla al usar el código Python, y el centro de la pantalla al trabajar en elementos de sketchpad, etc. A partir de la versión 3.0, el centro de la pantalla siempre es 0,0, también en código Python.

Si desea volver al comportamiento anterior, puede desactivar la opción 'Coordenadas uniformes' en la pestaña general. Para mantener la compatibilidad con versiones anteriores, las 'Coordenadas uniformes' se desactivan automáticamente al abrir un experimento antiguo.

Usando Python en cadenas de texto

Ahora puede incrustar Python en cadenas de texto utilizando la sintaxis [=...]. Por ejemplo, la siguiente cadena de texto en un sketchpad:

Dos veces dos es igual a [=2*2]

... mostrará:

Dos veces dos es igual a 4

Para obtener más información, consulte:

Soporte para Python 3

OpenSesame ahora es compatible con Python >= 3.4. Sin embargo, muchas de las dependencias de OpenSesame, especialmente PsychoPy y Expyriment, son exclusivas de Python 2. Por lo tanto, Python 2.7 sigue siendo la versión predeterminada de Python.