1)



Física 1 (Biólogos y Geólogos) – Laboratorio – Clase 1

Variaciones en los Tiempos de Respuesta según la tarea,

medidos con la computadora.

1) Tiempo de Respuesta

Instrucción: Responde lo más rápido posible cuando aparece el estímulo, y luego cuando desaparece. Es importante por un lado estar atento, y por otro responder al estímulo sin anticiparse.

f1bg_TRlargo.py

Número total de presentaciones: 400

Tiempo de Onset: al azar [500, 550, 600, 650, 700]

Duración del Estímulo: al azar (pero balanceado) [500, 1000, 1500, 2000, 2500]

Tiempo de Finalización: 500 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 1000 seg

Output:

|N |Onset |Duración |Respuesta Inicio |Tiempo Inicio |Respuesta |Tiempo Finaliz. |

| | | | | |Finaliz. | |

Nota: los tiempos están medidos respecto de la aparición o desaparición del estímulo.

f1bg_TRcorto.py

Número total de presentaciones: 200

Tiempo de Onset: al azar [500, 550, 600, 650, 700]

Duración del Estímulo: al azar (pero balanceado) [500, 1500]

Tiempo de Finalización: 500 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 420 seg

Output:

|N |Onset |Duración |Respuesta Inicio |Tiempo Inicio |Respuesta |Tiempo Finaliz. |

| | | | | |Finaliz. | |

Nota: los tiempos están medidos respecto de la aparición o desaparición del estímulo.

2) Sincronización

Instrucción: Intenta sincronizarte con los estímulos. Es importante por un lado estar atento. Si te perdés, parás por dos estímulos y volvés a empezar... esto te permite buscar el punto en que te perdiste al analizarlo, y borrar estos y los inmediatamente anteriores, salvando el resto de los datos.

f1bg_dec_sincro500.py

Número total de presentaciones: 200

Tiempo de Onset: 150 ms

Duración del Estímulo: 200 ms

Tiempo de Finalización: 150 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 100 seg

Output:

|N |Respuesta |Tiempo |

Nota: el tiempo está medido respecto de la aparición del estímulo.

f1bg_dec_sincro700.py

Número total de presentaciones: 200

Tiempo de Onset: 200 ms

Duración del Estímulo: 200 ms

Tiempo de Finalización: 300 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 140 seg

Output:

|N |Respuesta |Tiempo |

Nota: el tiempo está medido respecto de la aparición del estímulo.

f1bg_dec_sincro1000.py

Número total de presentaciones: 200

Tiempo de Onset: 200 ms

Duración del Estímulo: 200 ms

Tiempo de Finalización: 600 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 200 seg

Output:

|N |Respuesta |Tiempo |

Nota: el tiempo está medido respecto de la aparición del estímulo.

f1bg_dec_sincro3000.py

Número total de presentaciones: 200

Tiempo de Onset: 1400 ms

Duración del Estímulo: 200 ms

Tiempo de Finalización: 1400 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 600 seg

Output:

|N |Respuesta |Tiempo |

Nota: el tiempo está medido respecto de la aparición del estímulo.

3) Con Toma de Decisión:

Instrucción: Responde lo más rápido posible a los estímulos, intentado contestar bien dentro de esta restricción (no hay que pensarlo mucho porque los estímulos vienen rápido). Es importante por un lado estar atento. Si te equivocas, no importa, se deja pasar y después se analiza como error.

Contestar 1 si es una “x” y 2 si es un “+”.

f1bg_dec_obj.py

Número total de presentaciones: 400

Tiempo de Onset: al azar [500, 550, 600, 650, 700]

Duración del Estímulo: 200 ms

Tiempo de Finalización: 1000 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 10 min

Output:

|N |Onset |Estímulo |Respuesta |Tiempo |Performance |

Nota: el tiempo está medido respecto de la aparición del estímulo.

Código:

Objeto

X = 0

+ = 1

Tecla

1 = 0

2 = 1

Performance = Estímulo + Respuesta

0 = X, Correcto

1 = Error

2 = +, Correcto

100, 101 = No Contesto

f1bg_dec_color.py

Instrucción: Responde lo más rápido posible a los estímulos, intentado contestar bien dentro de esta restricción (no hay que pensarlo mucho porque los estímulos vienen rápido). Es importante por un lado estar atento. Si te equivocas, no importa, se deja pasar y después se analiza como error.

Contestar 1 si la x es azul y 2 si es roja.

Número total de presentaciones: 400

Tiempo de Onset: al azar [500, 550, 600, 650, 700]

Duración del Estímulo: 200 ms

Tiempo de Finalización: 1000 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 10 min

Output:

|N |Onset |Estímulo |Respuesta |Tiempo |Performance |

Nota: el tiempo está medido respecto de la aparición del estímulo.

Código:

Color

Azul = 0

Rojo = 1

Tecla

1 = 0

2 = 1

Performance = Estímulo + Respuesta

0 = X, Correcto

1 = Error

2 = +, Correcto

100, 101 = No Contesto

4) Stroop Task:

f1bg_dec_stroop.py

Instrucción: Responde lo más rápido posible a los estímulos, intentado contestar bien dentro de esta restricción (no hay que pensarlo mucho porque los estímulos vienen rápido). Es importante por un lado estar atento. Si te equivocas, no importa, se deja pasar y después se analiza como error.

Contestar 7 si es el color de las letras es azul, 8 si es el color de las letras es rojo y 9 si es el color de las letras es verde.

Número total de presentaciones: 600

Tiempo de Onset: al azar [400, 450, 500, 550, 600]

Duración del Estímulo: 200 ms

Tiempo de Finalización: 1100 ms

Tiempo del experimento = (Tiempo de Onset + Duración del Estímulo + Tiempo de Finalización) * Número total de presentaciones = 15 min

Output:

|N |Onset |Letra |Color |Respuesta |Tiempo |Performance |Congruencia |

Nota: el tiempo está medido respecto de la aparición del estímulo.

Código:

Letra

Azul = 0

Rojo = 1

Verde = 2

Color

Azul = 0

Rojo = 1

Verde = 2

Tecla

7 = 0

8 = 1

9 = 2

Performance = Color - Respuesta

0 = Correcto

-2, -1, 1, 2 = Error

100, 101, 102 = No Contesto

Congruencia

Congruente=1

Incongruente=0

PROGRAMAS...

f1bg_TRlargo.py

from sys import *

import pygame, random, os

from pygame.locals import *

from pygame.font import *

from pygame.mouse import *

from math import *

from Numeric import *

from random import uniform

from random import randint

from random import Random

import time

import re # Para cortar strings y eso...

N_repeticiones=80 # numero de minibloques de cada secuencia

W, H = 800, 600 # SCREEN RESOLUTION

CX, CY= W/2, H/2 # CENTER OF THE SCREEN

data_directory='D:\python\endesarrollo\F1BG' ## para la DELL

stim_dur_list=[500,1000,1500,2000,2500]

def estructura_trials(stim_dur_list):

TRIALS=[]

for i in range(0,N_repeticiones):

for temp in stim_dur_list:

TRIALS.append(temp)

print TRIALS

random.shuffle(TRIALS)

return TRIALS

def displayblank(): # pone la pantalla en negro

surf.fill(Color("gray"))

pygame.display.flip()

def displaytext(text): # muestra texto

police = pygame.font.SysFont("times", 28)

surf.fill(Color("gray"))

t = police.render(text, 1, (0, 0, 0))

textpos = t.get_rect()

textpos.centerx = CX

textpos.centery = CY

surf.blit(t, textpos)

pygame.display.flip()

def begin_trial(tecla): # empieza cuando se toca una tecla.

begtrial = 0

while begtrial==0:

if pygame.event.peek():

ev = pygame.event.peek()

pygame.event.clear()

if ev.type == KEYDOWN:

if ev.key == tecla:

displayblank()

begtrial=1

pygame_initialized = file_opened = False

try:

## get subject information and open data file

subject = raw_input("subject: ")

output_file = data_directory + '/' + subject + '_TR.txt'

if not os.path.isdir(data_directory): os.makedirs(data_directory)

out = open(output_file, 'at')

file_opened = True

## initialize hardware

pygame.init()

pygame_initialized = True

surf = pygame.display.set_mode((W, H), FULLSCREEN|HWSURFACE|DOUBLEBUF)

pygame.event.set_allowed(None)

pygame.event.set_allowed((KEYDOWN)) # solo permito keydown events (ni keyup ni mouse)

font = pygame.font.Font(None, 32)

background = pygame.Surface(surf.get_size())

background = background.convert()

## comienzo

displaytext('Presione la barra para comenzar')

begin_trial(K_SPACE)

n_rep=1

TRIALS=estructura_trials(stim_dur_list)

for stim_dur in TRIALS:

## seteos nuevos

t_onset = 500 + randint(0,4)*50 # onset variable para que no se anticipe

t_end = 500 # tiempo para terminar de contestar

t_trial = t_onset + stim_dur + t_end # el tiempo que va a durar el trial

## contadores y flags...

stimpresent = 0

totresp=0

totresp_max=2

## inicializa cosas...

tresps=[]

respkeys=[]

## inicializa tiempos...

t0trial=pygame.time.get_ticks()

t=t0trial

pygame.event.clear() ## es redundante, pero disminuyo los problemas con la barra

## loop continuo para tomar respuestas

while (t-t0trial) sale

if ev.key == K_ESCAPE:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

raise Exception()

else:

tresp = pygame.time.get_ticks() - t0trial

resp_key = ev.key

if totresp == 0:

temp=tresp-t_onset

tresps.append(temp)

respkeys.append(resp_key)

if totresp == 1:

temp=tresp-(t_onset+stim_dur)

tresps.append(temp)

respkeys.append(resp_key)

totresp += 1

## presenta estimulo

if stimpresent == 0:

if (t-t0trial) > t_onset:

displaytext('x')

stimpresent+=1

## presenta estimulo

if stimpresent == 1:

if (t-t0trial)>(t_onset + stim_dur):

displayblank()

stimpresent+=1

respval, tval = [0,0], [0,0]

for i in [0,1]:

if totresp > i:

respval[i]=respkeys[i]

tval[i]=tresps[i]

print n_rep,"\t",t_onset,"\t",stim_dur,"\t",respval[0],"\t",tval[0],"\t",respval[1],"\t",tval[1]

print >> out, n_rep,"\t",t_onset,"\t",stim_dur,"\t",respval[0],"\t",tval[0],"\t",respval[1],"\t",tval[1]

n_rep+=1

finally:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

f1bg_TRcorto.py

from sys import *

import pygame, random, os

from pygame.locals import *

from pygame.font import *

from pygame.mouse import *

from math import *

from Numeric import *

from random import uniform

from random import randint

from random import Random

import time

import re # Para cortar strings y eso...

N_repeticiones=100 # numero de minibloques de cada secuencia

W, H = 800, 600 # SCREEN RESOLUTION

CX, CY= W/2, H/2 # CENTER OF THE SCREEN

data_directory='D:\python\endesarrollo\F1BG' ## para la DELL

stim_dur_list=[500,1500]

def estructura_trials(stim_dur_list):

TRIALS=[]

for i in range(0,N_repeticiones):

for temp in stim_dur_list:

TRIALS.append(temp)

print TRIALS

random.shuffle(TRIALS)

return TRIALS

def displayblank(): # pone la pantalla en negro

surf.fill(Color("gray"))

pygame.display.flip()

def displaytext(text): # muestra texto

police = pygame.font.SysFont("times", 28)

surf.fill(Color("gray"))

t = police.render(text, 1, (0, 0, 0))

textpos = t.get_rect()

textpos.centerx = CX

textpos.centery = CY

surf.blit(t, textpos)

pygame.display.flip()

def begin_trial(tecla): # empieza cuando se toca una tecla.

begtrial = 0

while begtrial==0:

if pygame.event.peek():

ev = pygame.event.peek()

pygame.event.clear()

if ev.type == KEYDOWN:

if ev.key == tecla:

displayblank()

begtrial=1

pygame_initialized = file_opened = False

try:

## get subject information and open data file

subject = raw_input("subject: ")

output_file = data_directory + '/' + subject + '_TR.txt'

if not os.path.isdir(data_directory): os.makedirs(data_directory)

out = open(output_file, 'at')

file_opened = True

## initialize hardware

pygame.init()

pygame_initialized = True

surf = pygame.display.set_mode((W, H), FULLSCREEN|HWSURFACE|DOUBLEBUF)

pygame.event.set_allowed(None)

pygame.event.set_allowed((KEYDOWN)) # solo permito keydown events (ni keyup ni mouse)

font = pygame.font.Font(None, 32)

background = pygame.Surface(surf.get_size())

background = background.convert()

## comienzo

displaytext('Presione la barra para comenzar')

begin_trial(K_SPACE)

n_rep=1

TRIALS=estructura_trials(stim_dur_list)

for stim_dur in TRIALS:

## seteos nuevos

t_onset = 500 + randint(0,4)*50 # onset variable para que no se anticipe

t_end = 500 # tiempo para terminar de contestar

t_trial = t_onset + stim_dur + t_end # el tiempo que va a durar el trial

## contadores y flags...

stimpresent = 0

totresp=0

totresp_max=2

## inicializa cosas...

tresps=[]

respkeys=[]

## inicializa tiempos...

t0trial=pygame.time.get_ticks()

t=t0trial

pygame.event.clear() ## es redundante, pero disminuyo los problemas con la barra

## loop continuo para tomar respuestas

while (t-t0trial) sale

if ev.key == K_ESCAPE:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

raise Exception()

else:

tresp = pygame.time.get_ticks() - t0trial

resp_key = ev.key

if totresp == 0:

temp=tresp-t_onset

tresps.append(temp)

respkeys.append(resp_key)

if totresp == 1:

temp=tresp-(t_onset+stim_dur)

tresps.append(temp)

respkeys.append(resp_key)

totresp += 1

## presenta estimulo

if stimpresent == 0:

if (t-t0trial) > t_onset:

displaytext('x')

stimpresent+=1

## presenta estimulo

if stimpresent == 1:

if (t-t0trial)>(t_onset + stim_dur):

displayblank()

stimpresent+=1

respval, tval = [0,0], [0,0]

for i in [0,1]:

if totresp > i:

respval[i]=respkeys[i]

tval[i]=tresps[i]

print n_rep,"\t",t_onset,"\t",stim_dur,"\t",respval[0],"\t",tval[0],"\t",respval[1],"\t",tval[1]

print >> out, n_rep,"\t",t_onset,"\t",stim_dur,"\t",respval[0],"\t",tval[0],"\t",respval[1],"\t",tval[1]

n_rep+=1

finally:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

f1bg_sincro500.py

from sys import *

import pygame, random, os

from pygame.locals import *

from pygame.font import *

from pygame.mouse import *

from math import *

from Numeric import *

from random import uniform

from random import randint

from random import Random

import time

import re # Para cortar strings y eso...

N_repeticiones=200 # numero de minibloques de cada secuencia

W, H = 800, 600 # SCREEN RESOLUTION

CX, CY= W/2, H/2 # CENTER OF THE SCREEN

data_directory='D:\python\endesarrollo\F1BG' ## para la DELL

def displayblank(): # pone la pantalla en negro

surf.fill(Color("gray"))

pygame.display.flip()

def displaytext(text): # muestra texto

police = pygame.font.SysFont("times", 28)

surf.fill(Color("gray"))

t = police.render(text, 1, (0, 0, 0))

textpos = t.get_rect()

textpos.centerx = CX

textpos.centery = CY

surf.blit(t, textpos)

pygame.display.flip()

def begin_trial(tecla): # empieza cuando se toca una tecla.

begtrial = 0

while begtrial==0:

if pygame.event.peek():

ev = pygame.event.peek()

pygame.event.clear()

if ev.type == KEYDOWN:

if ev.key == tecla:

displayblank()

begtrial=1

pygame_initialized = file_opened = False

try:

## get subject information and open data file

subject = raw_input("subject: ")

output_file = data_directory + '/' + subject + '_sincro500.txt'

if not os.path.isdir(data_directory): os.makedirs(data_directory)

out = open(output_file, 'at')

file_opened = True

## initialize hardware

pygame.init()

pygame_initialized = True

surf = pygame.display.set_mode((W, H), FULLSCREEN|HWSURFACE|DOUBLEBUF)

pygame.event.set_allowed(None)

pygame.event.set_allowed((KEYDOWN)) # solo permito keydown events (ni keyup ni mouse)

font = pygame.font.Font(None, 32)

background = pygame.Surface(surf.get_size())

background = background.convert()

## seteos nuevos (ESTOS TIEMPOS SON LOS QUE CAMBIAN EN LOS DISTINTOS EJEMPLOS)

t_onset = 150 # onset fijo para mirar sincro

t_end = 150 # tiempo para terminar de contestar

stim_dur = 200 # fijo

t_trial = t_onset + stim_dur + t_end # el tiempo que va a durar el trial

## comienzo

displaytext('Presione la barra para comenzar')

begin_trial(K_SPACE)

for n_rep in range(0,N_repeticiones):

## contadores y flags...

stimpresent = 0

totresp = 0

## inicializa tiempos...

t0trial=pygame.time.get_ticks()

t=t0trial

pygame.event.clear() ## es redundante, pero disminuyo los problemas con la barra

## loop continuo para tomar respuestas

while (t-t0trial) sale

if ev.key == K_ESCAPE:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

raise Exception()

elif totresp==0:

tresp = pygame.time.get_ticks() - t0trial - t_onset

respkey = ev.key

totresp+=1

## presenta estimulo

if stimpresent == 0:

if (t-t0trial) > t_onset:

displaytext('x')

stimpresent+=1

## presenta estimulo

if stimpresent == 1:

if (t-t0trial)>(t_onset + stim_dur):

displayblank()

stimpresent+=1

respval, tval = 0,0

if totresp > 0:

respval=respkey

tval=tresp

print n_rep,"\t",respval,"\t",tval

print >> out, n_rep,"\t",respval,"\t",tval

finally:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

f1bg_dec_obj.py

from sys import *

import pygame, random, os

from pygame.locals import *

from pygame.font import *

from pygame.mouse import *

from math import *

from Numeric import *

from random import uniform

from random import randint

from random import Random

import time

import re # Para cortar strings y eso...

N_repeticiones=200 # numero de minibloques de cada secuencia

W, H = 800, 600 # SCREEN RESOLUTION

CX, CY= W/2, H/2 # CENTER OF THE SCREEN

data_directory='D:\python\endesarrollo\F1BG' ## para la DELL

stim_list=['x','+']

stim_id=[0,1]

def estructura_trials(stim_id):

STIMS=[]

for i in range(0,N_repeticiones):

for temp in stim_id:

STIMS.append(temp)

random.shuffle(STIMS)

return STIMS

def displayblank(): # pone la pantalla en negro

surf.fill(Color("gray"))

pygame.display.flip()

def displaytext(text): # muestra texto

police = pygame.font.SysFont("times", 28)

surf.fill(Color("gray"))

t = police.render(text, 1, (0, 0, 0))

textpos = t.get_rect()

textpos.centerx = CX

textpos.centery = CY

surf.blit(t, textpos)

pygame.display.flip()

def begin_trial(tecla): # empieza cuando se toca una tecla.

begtrial = 0

while begtrial==0:

if pygame.event.peek():

ev = pygame.event.peek()

pygame.event.clear()

if ev.type == KEYDOWN:

if ev.key == tecla:

displayblank()

begtrial=1

pygame_initialized = file_opened = False

try:

## get subject information and open data file

subject = raw_input("subject: ")

output_file = data_directory + '/' + subject + '_obj.txt'

if not os.path.isdir(data_directory): os.makedirs(data_directory)

out = open(output_file, 'at')

file_opened = True

## initialize hardware

pygame.init()

pygame_initialized = True

surf = pygame.display.set_mode((W, H), FULLSCREEN|HWSURFACE|DOUBLEBUF)

pygame.event.set_allowed(None)

pygame.event.set_allowed((KEYDOWN)) # solo permito keydown events (ni keyup ni mouse)

font = pygame.font.Font(None, 32)

background = pygame.Surface(surf.get_size())

background = background.convert()

## seteos nuevos

t_onset = 500 + randint(0,4)*50 # onset variable para que no se anticipe

t_end = 1000 # tiempo para terminar de contestar

stim_dur = 200 # fijo

t_trial = t_onset + stim_dur + t_end # el tiempo que va a durar el trial

tr=1

## comienzo

displaytext('Presione la barra para comenzar')

begin_trial(K_SPACE)

STIMS=estructura_trials(stim_id)

for st in STIMS:

## contadores y flags...

stimpresent = 0

totresp = 0

## inicializa tiempos...

t0trial=pygame.time.get_ticks()

t=t0trial

pygame.event.clear() ## es redundante, pero disminuyo los problemas con la barra

## loop continuo para tomar respuestas

while (t-t0trial) sale

if ev.key == K_ESCAPE:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

raise Exception()

elif totresp==0:

tresp = pygame.time.get_ticks() - t0trial - t_onset

respkey = ev.key

totresp+=1

## presenta estimulo

if stimpresent == 0:

if (t-t0trial) > t_onset:

temp=stim_list[st]

displaytext(temp)

stimpresent+=1

## presenta estimulo

if stimpresent == 1:

if (t-t0trial)>(t_onset + stim_dur):

displayblank()

stimpresent+=1

respval, tval = 100,0

if totresp > 0:

if respkey==50:

respval=1

if respkey==49:

respval=0

tval=tresp

correct=st+respval

print tr,"\t",t_onset,"\t",st,"\t",respval,"\t",tval,"\t",correct

print >> out, tr,"\t",t_onset,"\t",st,"\t",respval,"\t",tval,"\t",correct

tr+=1

finally:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

f1bg_dec_color.py

from sys import *

import pygame, random, os

from pygame.locals import *

from pygame.font import *

from pygame.mouse import *

from math import *

from Numeric import *

from random import uniform

from random import randint

from random import Random

import time

import re # Para cortar strings y eso...

N_repeticiones=200 # numero de minibloques de cada secuencia

W, H = 800, 600 # SCREEN RESOLUTION

CX, CY= W/2, H/2 # CENTER OF THE SCREEN

data_directory='D:\python\endesarrollo\F1BG' ## para la DELL

##(0,0,255)=blue;(255,0,0)=rojo

stim_list=[(0,0,255),(255,0,0)]

stim_id=[0,1]

def estructura_trials(stim_id):

STIMS=[]

for i in range(0,N_repeticiones):

for temp in stim_id:

STIMS.append(temp)

random.shuffle(STIMS)

return STIMS

def displayblank(): # pone la pantalla en negro

surf.fill(Color("gray"))

pygame.display.flip()

def displaytext(text,st): # muestra texto

police = pygame.font.SysFont("times", 28)

surf.fill(Color("gray"))

t = police.render(text, 1, st)

textpos = t.get_rect()

textpos.centerx = CX

textpos.centery = CY

surf.blit(t, textpos)

pygame.display.flip()

def begin_trial(tecla): # empieza cuando se toca una tecla.

begtrial = 0

while begtrial==0:

if pygame.event.peek():

ev = pygame.event.peek()

pygame.event.clear()

if ev.type == KEYDOWN:

if ev.key == tecla:

displayblank()

begtrial=1

pygame_initialized = file_opened = False

try:

## get subject information and open data file

subject = raw_input("subject: ")

output_file = data_directory + '/' + subject + '_color.txt'

if not os.path.isdir(data_directory): os.makedirs(data_directory)

out = open(output_file, 'at')

file_opened = True

## initialize hardware

pygame.init()

pygame_initialized = True

surf = pygame.display.set_mode((W, H), FULLSCREEN|HWSURFACE|DOUBLEBUF)

pygame.event.set_allowed(None)

pygame.event.set_allowed((KEYDOWN)) # solo permito keydown events (ni keyup ni mouse)

font = pygame.font.Font(None, 32)

background = pygame.Surface(surf.get_size())

background = background.convert()

## seteos nuevos

t_onset = 500 + randint(0,4)*50 # onset variable para que no se anticipe

t_end = 1000 # tiempo para terminar de contestar

stim_dur = 200 # fijo

t_trial = t_onset + stim_dur + t_end # el tiempo que va a durar el trial

tr=1

## comienzo

displaytext('Presione la barra para comenzar',(0,0,0))

begin_trial(K_SPACE)

STIMS=estructura_trials(stim_id)

for st in STIMS:

## contadores y flags...

stimpresent = 0

totresp = 0

## inicializa tiempos...

t0trial=pygame.time.get_ticks()

t=t0trial

pygame.event.clear() ## es redundante, pero disminuyo los problemas con la barra

## loop continuo para tomar respuestas

while (t-t0trial) sale

if ev.key == K_ESCAPE:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

raise Exception()

elif totresp==0:

tresp = pygame.time.get_ticks() - t0trial - t_onset

respkey = ev.key

totresp+=1

## presenta estimulo

if stimpresent == 0:

if (t-t0trial) > t_onset:

temp=stim_list[st]

displaytext('x',temp)

stimpresent+=1

## presenta estimulo

if stimpresent == 1:

if (t-t0trial)>(t_onset + stim_dur):

displayblank()

stimpresent+=1

respval, tval = 100,0

if totresp > 0:

if respkey==50:

respval=1

if respkey==49:

respval=0

tval=tresp

correct=st+respval

print tr,"\t",t_onset,"\t",st,"\t",respval,"\t",tval,"\t",correct

print >> out, tr,"\t",t_onset,"\t",st,"\t",respval,"\t",tval,"\t",correct

tr+=1

finally:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

f1bg_dec_stroop.py

from sys import *

import pygame, random, os

from pygame.locals import *

from pygame.font import *

from pygame.mouse import *

from math import *

from Numeric import *

from random import uniform

from random import randint

from random import Random

import time

import re # Para cortar strings y eso...

N_repeticiones=100 # numero de minibloques de cada secuencia

W, H = 800, 600 # SCREEN RESOLUTION

CX, CY= W/2, H/2 # CENTER OF THE SCREEN

data_directory='D:\python\endesarrollo\F1BG' ## para la DELL

##(0,0,255)=blue;(255,0,0)=rojo;(50,200,50)=verde

color_list=[(0,0,255),(255,0,0),(50,200,50)]

color_id=[0,1,2]

def estructura_colores(color_id):

COLOR=[]

for i in range(0,N_repeticiones):

for temp in color_id:

COLOR.append(temp)

random.shuffle(COLOR)

return COLOR

letra_list=['azul','rojo','verde']

letra_id=[0,1,2]

def estructura_letras(letra_id):

LETRA=[]

for i in range(0,N_repeticiones):

for temp in letra_id:

LETRA.append(temp)

random.shuffle(LETRA)

return LETRA

def displayblank(): # pone la pantalla en negro

surf.fill(Color("gray"))

pygame.display.flip()

def displaytext(text,st): # muestra texto

police = pygame.font.SysFont("times", 28)

surf.fill(Color("gray"))

t = police.render(text, 1, st)

textpos = t.get_rect()

textpos.centerx = CX

textpos.centery = CY

surf.blit(t, textpos)

pygame.display.flip()

def begin_trial(tecla): # empieza cuando se toca una tecla.

begtrial = 0

while begtrial==0:

if pygame.event.peek():

ev = pygame.event.peek()

pygame.event.clear()

if ev.type == KEYDOWN:

if ev.key == tecla:

displayblank()

begtrial=1

pygame_initialized = file_opened = False

try:

## get subject information and open data file

subject = raw_input("subject: ")

output_file = data_directory + '/' + subject + '_stroop.txt'

if not os.path.isdir(data_directory): os.makedirs(data_directory)

out = open(output_file, 'at')

file_opened = True

## initialize hardware

pygame.init()

pygame_initialized = True

surf = pygame.display.set_mode((W, H), FULLSCREEN|HWSURFACE|DOUBLEBUF)

pygame.event.set_allowed(None)

pygame.event.set_allowed((KEYDOWN)) # solo permito keydown events (ni keyup ni mouse)

font = pygame.font.Font(None, 32)

background = pygame.Surface(surf.get_size())

background = background.convert()

## seteos nuevos

t_onset = 400 + randint(0,4)*50 # onset variable para que no se anticipe

t_end = 1100 # tiempo para terminar de contestar

stim_dur = 200 # fijo

t_trial = t_onset + stim_dur + t_end # el tiempo que va a durar el trial

tr=1

## comienzo

displaytext('Presione la barra para comenzar',(0,0,0))

begin_trial(K_SPACE)

LETRA=estructura_letras(letra_id)

COLOR=estructura_letras(color_id)

for inds in range(0,3*N_repeticiones):

## contadores y flags...

stimpresent = 0

totresp = 0

## inicializa tiempos...

t0trial=pygame.time.get_ticks()

t=t0trial

pygame.event.clear() ## es redundante, pero disminuyo los problemas con la barra

## loop continuo para tomar respuestas

while (t-t0trial) sale

if ev.key == K_ESCAPE:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

raise Exception()

elif totresp==0:

tresp = pygame.time.get_ticks() - t0trial - t_onset

respkey = ev.key

totresp+=1

## presenta estimulo

if stimpresent == 0:

if (t-t0trial) > t_onset:

temp_color=color_list[COLOR[inds]]

temp_letra=letra_list[LETRA[inds]]

displaytext(temp_letra,temp_color)

stimpresent+=1

## presenta estimulo

if stimpresent == 1:

if (t-t0trial)>(t_onset + stim_dur):

displayblank()

stimpresent+=1

respval, tval, congruente = 100,0,0

if LETRA[inds] == COLOR[inds]:

congruente = 1

if totresp > 0:

if respkey==55:

respval = 0

if respkey==56:

respval = 1

if respkey==57:

respval = 2

tval=tresp

correcto=COLOR[inds]-respval

print tr,"\t",t_onset,"\t",LETRA[inds],"\t",COLOR[inds],"\t",respval,"\t",tval,"\t",correcto,"\t",congruente

print >> out, tr,"\t",t_onset,"\t",LETRA[inds],"\t",COLOR[inds],"\t",respval,"\t",tval,"\t",correcto,"\t",congruente

tr+=1

finally:

if file_opened: out.close()

if pygame_initialized: pygame.quit()

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download