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

La estrategia de preparación-ejecución

Acerca de

Los experimentos generalmente consisten en intervalos cortos ('ensayos') durante los cuales los participantes perciben estímulos y realizan una tarea. El tiempo debe ser controlado durante un ensayo, pero cierta variación impredecible en la duración del intervalo entre ensayos es aceptable. Por lo tanto, una buena estrategia es realizar tareas que consumen tiempo antes de un ensayo y mantener al mínimo las operaciones que se realizan durante un ensayo.

OpenSesame hace esto llamando a cada elemento de un elemento sequence dos veces. Esta es la estrategia de preparación-ejecución:

  • Durante la fase de Preparación, se les da la oportunidad a los elementos de prepararse. Por ejemplo, un synth genera un sonido (pero no lo reproduce) y un sketchpad dibuja un lienzo (pero no lo muestra).
  • Durante la fase de Ejecución, los elementos hacen lo menos posible. Por ejemplo, un synth reproduce un sonido preparado previamente y un sketchpad muestra un lienzo preparado previamente.

Esto reduce el riesgo de errores de sincronización. La estrategia de preparación-ejecución se implementa a nivel de elementos sequence, que típicamente contiene las partes críticas en tiempo de un experimento. Esto significa que antes de que se inicie un sequence, hay cierta fluctuación temporal impredecible.

Notas específicas de elementos

Elementos loop

Un elemento loop no se prepara con anticipación. Es importante tener en cuenta esto al usar un loop para implementar partes críticas en tiempo. Por ejemplo, es posible que te sientas tentado a implementar un flujo RSVP usando un elemento loop de la siguiente manera:

rsvp_loop elemento (4 ciclos)
- elemento_estimulo

En esta construcción, elemento_estimulo se preparará y ejecutará cuatro veces en alternancia, de la siguiente manera:

preparar elemento_estimulo
ejecutar elemento_estimulo
preparar elemento_estimulo
ejecutar elemento_estimulo
preparar elemento_estimulo
ejecutar elemento_estimulo
preparar elemento_estimulo
ejecutar elemento_estimulo

Por lo tanto, debes verificar que la preparación de elemento_estimulo no cause fallas en la sincronización.

Elementos sequence

Todos los elementos que forman parte de un sequence se preparan con anticipación. Por lo tanto, la siguiente construcción...

secuencia_prueba
- sketchpad_fijacion
- sketchpad_objetivo
- respuesta_teclado
- registrador

... se ejecutará de la siguiente manera...

preparar sketchpad_fijacion
preparar sketchpad_objetivo
preparar respuesta_teclado
preparar registrador
ejecutar sketchpad_fijacion
ejecutar sketchpad_objetivo
ejecutar respuesta_teclado
ejecutar registrador

Elementos sketchpad y feedback

Los elementos sketchpad y feedback difieren en cuándo se preparan. Para los sketchpad, la preparación ocurre durante la fase de Preparación; para los elementos feedback, la preparación ocurre solo durante la fase de Ejecución.

Para obtener más información, consulte:

Elementos synth y sampler

Para los elementos synth y sampler, el sonido se genera y precarga durante la fase de Preparación.

Elementos inline_script

En un elemento inline_script, puedes elegir cómo deseas implementar la estrategia de preparación y ejecución. En general, es una buena práctica seguir las siguientes pautas:

  • La funcionalidad de preparación que consume tiempo va en la fase de Preparación. Por ejemplo, crear objetos de lienzo y generar sonidos.
  • Se coloca una cantidad mínima de código en la fase de ejecución. Por ejemplo, solo mostrar un lienzo previamente preparado.

Otros elementos y plugins

En general, los elementos deben seguir el principio de realizar la mayor cantidad posible de preparación que consume tiempo durante la fase de Preparación y minimizar la fase de Ejecución. Sin embargo, cada complemento se implementa de manera diferente. Si tiene dudas sobre un caso específico, publique una consulta en el foro.

Expresiones condicionales (run if, show if, break if, etc.)

En los elementos sequence, la condición 'Run if' se evalúa en el último momento, durante la fase de ejecución. Por lo tanto, puedes usar una condición como correct == 0 que depende de los resultados de un elemento keyboard_response que se ha llamado justo antes. Es importante tener en cuenta que la expresión 'Run if' se aplica solo a la fase de ejecución de un elemento: la fase de preparación siempre se ejecuta.

En los elementos coroutines, la condición "Run if" se evalúa durante la fase de Preparación. Por lo tanto, las condiciones no pueden depender de eventos que ocurran durante la ejecución de los coroutines.

En los elementos sketchpad, la condición "Show if" se evalúa durante la fase de Preparación, cuando se construye el lienzo. En los elementos feedback, la condición "Show if" se evalúa durante la fase de Ejecución (porque el lienzo solo se construye en la fase de Ejecución).

Supported by