View Single Post
  #1  
Old 03-16-2011, 06:13 PM
fivel_lab fivel_lab is offline
Member
 
Join Date: Mar 2011
Posts: 36
running experimental trials

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:
Code:
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:
Code:
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:
Code:
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:
Code:
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.
Reply With Quote