fivel_lab
03-16-2011, 06:13 PM
i recently created a makeshift balance board apparatus which was to be used as part of an experiment for a visuo-motor psychology experiment. after alot of trial, error, and some invaluable advice from the folks on this forum, i finally got the physics of the experiment running, but now i'm having difficulty getting the experiment to run as a series of trials.
this is the framework i'm going off of:
def experiment():
yield participantInfo()
yield loadWorld()
yield prePhase()
yield testPhase()
yield postPhase()
viztask.schedule(experiment)
the participant info and load world phases work well, and within the the participantInfo() phase i open a data file:
experiment_data = open(str(id) + '_experiment_data.txt','w')
#write participant data to file
data = "Participant ID: %s\tName: %s\tGender: %s\n\n" % (id,name,gender)
experiment_data.write(data)
and what i would like to do is open the same file within the the pre/test/post phases and write to it how long each participant is able to stay on task, which is measured by how long participants are able to keep a "ball" balanced on the center of the balance board.
right now, i have a loop set in the pre phase:
trials = [10]
#for loop for trials
for trial in trials:
global isDone
isDone = False
trialCount = 1
global writeData
def isIn():
inThere = 0
if abs(ball.getPosition()[0]) < TARGET_REGION:
inThere = 1
data = '%d' % trialCount
data = data + str(round(viz.tick(),3))
data = data + '\t%d\n' % inThere
experiment_data.write(data)
the stopping condition for each trial occurs when either the ball falls off the end of the balance board or the time hits 20 seconds:
while isDone is False:
startTime=viz.tick()
global elapsedTime
elapsedTime = viz.tick() - startTime
if abs(ball.getPosition()[0]) > BARLENGTH/2:
ball.setPosition((CENTERPOS[0],CENTERPOS[1]+5,CENTERPOS[2]))
trialCount = trialCount+1
isDone = True
i know i'm throwing alot out there for a single post, but i'm pulling my hair out trying to get this to work... for now, what i'd really like to know is to write the data during the prephase to the global "experiment_data" that i created in the participantInfo phase, and how to get each trial to run properly...
any help would be greatly appreciated, thanks in advance.
this is the framework i'm going off of:
def experiment():
yield participantInfo()
yield loadWorld()
yield prePhase()
yield testPhase()
yield postPhase()
viztask.schedule(experiment)
the participant info and load world phases work well, and within the the participantInfo() phase i open a data file:
experiment_data = open(str(id) + '_experiment_data.txt','w')
#write participant data to file
data = "Participant ID: %s\tName: %s\tGender: %s\n\n" % (id,name,gender)
experiment_data.write(data)
and what i would like to do is open the same file within the the pre/test/post phases and write to it how long each participant is able to stay on task, which is measured by how long participants are able to keep a "ball" balanced on the center of the balance board.
right now, i have a loop set in the pre phase:
trials = [10]
#for loop for trials
for trial in trials:
global isDone
isDone = False
trialCount = 1
global writeData
def isIn():
inThere = 0
if abs(ball.getPosition()[0]) < TARGET_REGION:
inThere = 1
data = '%d' % trialCount
data = data + str(round(viz.tick(),3))
data = data + '\t%d\n' % inThere
experiment_data.write(data)
the stopping condition for each trial occurs when either the ball falls off the end of the balance board or the time hits 20 seconds:
while isDone is False:
startTime=viz.tick()
global elapsedTime
elapsedTime = viz.tick() - startTime
if abs(ball.getPosition()[0]) > BARLENGTH/2:
ball.setPosition((CENTERPOS[0],CENTERPOS[1]+5,CENTERPOS[2]))
trialCount = trialCount+1
isDone = True
i know i'm throwing alot out there for a single post, but i'm pulling my hair out trying to get this to work... for now, what i'd really like to know is to write the data during the prephase to the global "experiment_data" that i created in the participantInfo phase, and how to get each trial to run properly...
any help would be greatly appreciated, thanks in advance.