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.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
Related searches
- 1 or 2 374 374 1 0 0 0 1 168 1 1 default username and password
- 1 or 3 374 374 1 0 0 0 1 168 1 1 default username and password
- 1 or 2 711 711 1 0 0 0 1 168 1 1 default username and password
- 1 or 3 711 711 1 0 0 0 1 168 1 1 default username and password
- 1 or 2 693 693 1 0 0 0 1 168 1 1 default username and password
- 1 or 3 693 693 1 0 0 0 1 168 1 1 default username and password
- 1 or 2 593 593 1 0 0 0 1 or 2dvchrbu 168 1 1 default username and password
- 1 or 3 593 593 1 0 0 0 1 or 2dvchrbu 168 1 1 default username and password
- 1 or 2 910 910 1 0 0 0 1 168 1 1 default username and password
- 1 or 3 910 910 1 0 0 0 1 168 1 1 default username and password
- 192 1 or 2 33 33 1 0 0 0 1 1 1 default username and password
- 1 or 2 364 364 1 0 0 0 1 168 1 1 admin username and password