#1
|
|||
|
|||
Flagging the Data
So I'm collecting position data through a flock of birds and writing the data to text files on the computer. I have:
Code:
flock1 = viz.add('flockofbirds.dls') flock2 = viz.add('flockofbirds.dls') flock3 = viz.add('flockofbirds.dls') flock4 = viz.add('flockofbirds.dls') flock1.command(6) flock2.command(6) flock3.command(6) flock4.command(6) tracking_data = open('prism_ve data/headdata_'+ str(Subnum) + " " + str(Trial) + '.txt', 'a') tracking_data2 = open('prism_ve data/hipdata_'+ str(Subnum) + " " + str(Trial) + '.txt', 'a') tracking_data3 = open('prism_ve data/kneedata_'+ str(Subnum) + " " + str(Trial) + '.txt', 'a') tracking_data4 = open('prism_ve data/ankledata_'+ str(Subnum) + " " + str(Trial) + '.txt', 'a') #""" flags = ['A', 'H', 'I', 'M', 'O', 'T', 'U', 'V', 'W', 'X', 'Y'] flagIndex = 0 def WriteFlag(): global flags, flagIndex letter = flags[flagIndex] flagIndex = flagIndex + 1 tracking_data.write('*** Reached point ' + letter + 'in', clock(), 'seconds' + '\n') tracking_data2.write('*** Reached point ' + letter + 'in', clock(), 'seconds' + '\n') tracking_data3.write('*** Reached point ' + letter + 'in', clock(), 'seconds' + '\n') tracking_data4.write('*** Reached point ' + letter + 'in', clock(), 'seconds' + '\n') vizact.onkeydown('f',WriteFlag) #('*** Reached point ' + letter + '\n'+ "Elapsed time =", clock(), " seconds") def WriteFlag2(): tracking_data.write('*** Time of Trial =', clock(), "seconds" + '\n') tracking_data2.write('*** Time of Trial =', clock(), "seconds"+ '\n') tracking_data3.write('*** Time of Trial =', clock(), "seconds"+ '\n') tracking_data4.write('*** Time of Trial =', clock(), "seconds"+ '\n') vizact.onkeydown('w',WriteFlag2) Code:
def onkeydown(key): if key == 'q': viz.quit() print "Time of Trial =", clock(), "seconds" # WriteFlag2() viz.callback(viz.KEYDOWN_EVENT,onkeydown) So when I run my script I get this error: raceback (most recent call last): File "C:\Program Files\Vizard25\vizact.py", line 1981, in __onkeydown item.call() File "C:\Program Files\Vizard25\vizact.py", line 1897, in call _paramargs_(self.func,0)(*(_paramargs_(self.args,0 ))) File "Prism_VE_Updated_Maze_7_BASELINE.py", line 152, in WriteFlag tracking_data.write('*** Reached point ' + letter + 'in', clock(), 'seconds' + '\n') TypeError: function takes exactly 1 argument (3 given) Traceback (most recent call last): File "C:\Program Files\Vizard25\vizact.py", line 1981, in __onkeydown item.call() File "C:\Program Files\Vizard25\vizact.py", line 1897, in call _paramargs_(self.func,0)(*(_paramargs_(self.args,0 ))) File "Prism_VE_Updated_Maze_7_BASELINE.py", line 162, in WriteFlag2 tracking_data.write('*** Time of Trial =', clock(), "seconds" + '\n') TypeError: function takes exactly 1 argument (3 given) And I have no idea why it thinks I'm trying to give it 3 arguments. If I change the WriteFlag function to: Code:
flags = ['A', 'H', 'I', 'M', 'O', 'T', 'U', 'V', 'W', 'X', 'Y'] flagIndex = 0 def WriteFlag(): global flags, flagIndex letter = flags[flagIndex] flagIndex = flagIndex + 1 tracking_data.write('*** Reached point ' + letter + '\n') tracking_data2.write('*** Reached point ' + letter + '\n') tracking_data3.write('*** Reached point ' + letter + '\n') tracking_data4.write('*** Reached point ' + letter + '\n') vizact.onkeydown('f',WriteFlag) I would love to be able to press "f" and get which letter was reached and at what time it was reached and I would like to know how to make it so that when I press "q" to quit the program that the time at that point could be written to the file as well. Last edited by Elittdogg; 04-10-2008 at 01:04 PM. |
#2
|
|||
|
|||
You are passing the write function 3 arguments and it only accepts 1. Change the code in your WriteFlag2 function to concatenate the flock value to the string:
Code:
tracking_data.write('*** Time of Trial =' + str(clock()) + "seconds" + '\n') |
#3
|
|||
|
|||
Is there a way to get it to say what I want (even though it's 3 arguments?) Can I make it so that the write function can handle 3 arguments?
And is there a way to include WriteFlag2 to ONLY write the time of the trial when I quit the program by pressing "q"? |
#4
|
|||
|
|||
Or would it be better to write a 3rd flag with the same button press that reports the time. So i'd have one write which letter and another the time both would work while pressing "f"?
|
#5
|
|||
|
|||
Here is a function that wraps calls around the write function and allows multiple arguments:
Code:
def writeData(f,*args): f.write(''.join([str(v) for v in args])) Code:
writeData(tracking_data,'*** Reached point ' + letter + 'in', clock(), 'seconds' + '\n') |
#6
|
|||
|
|||
Thank you for the help. I really appreciate it.
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Flock of Birds recognized, but no data sent | sjroorda | Vizard | 9 | 03-01-2016 08:48 PM |
data glove navigation | arielasso | Vizard | 6 | 10-24-2007 02:15 PM |
Data Files | betancourtb82 | Vizard | 6 | 05-04-2006 02:43 PM |
Get position data in an own little program | Researcher | Precision Position Tracker (PPT) | 2 | 02-01-2006 02:55 AM |
tracking using quaternarion data | jfreeman | Vizard | 2 | 06-01-2005 08:48 AM |