Adding to Existing Tracking Data File

Here's an example showing how to add to the tracking data file that is included. This example is adding the right hand position: 

Note that the first two numbers in blue (12 and 11) are the number of headers and the second two numbers 11 and 10 are the number of float values (as "flag" is a string)


def updateGaze():

    gazeMat = eyeTracker.getMatrix()

    gazeMat.postMult(viz.MainView.getMatrix())

    line = gazeMat.getLineForward(1000)

    info = viz.intersect(line.begin, line.end)

    global flag, writeToggle


    gazeTime.updateGazeObject(info.object)

    currentTime = viz.tick() - startTime

    

    if info.valid:

        data = [currentTime, info.point, viz.MainView.getPosition(),rightHand.getPosition(), flag]

        objects[1].setPosition(info.point)

    else:

        fake_info = [0.00, 0.00, 0.00]

        data = [currentTime, fake_info, viz.MainView.getPosition(),rightHand.getPosition(), flag]

        

    set_flag('-')

    if use_vive_pro:

        data.append(eyeTracker.getPupilDiameter())

    trackingData.append(data)

    

    if writeToggle:

        writeEvent(data)

    

def writeEvent(data):

    global firstWrite, participant, trackingData, trialNumber, trackingFile

    

    if firstWrite:

        firstWrite = False

        fileNameTracking = 'data/{p.id}_tracking_data_trial_{t}.txt'.format(p=participant, t=trialNumber+1)

        trackingFile = open(fileNameTracking, "w")


        if use_vive_pro:

            headers = ['seconds', 'point x', 'point y', 'point z', 'position x', 'position y', 'position z', 'rHand x', 'rHand y', 'rHand z','pupil diameter','flag']

            fmt = '{:<8s}\t' * 12 + '\n\n'

            fileHeaders = fmt.format(*headers)

            trackingFile.write(fileHeaders)

        else:

            headers = ['seconds', 'point x', 'point y','point z', 'position x', 'position y', 'position z', 'rHand x', 'rHand y', 'rHand z','flag']

            fmt = '{:<8s}\t' * 11 + '\n\n'

            fileHeaders = fmt.format(*headers)

            trackingFile.write(fileHeaders)

        

    else:

        if use_vive_pro:

            tick, point, position, rHand, flag, pupilDiameter = data

            fmt = '{:<8.2f}\t' * 11 + '{:<8s}\t'+ '\n'

            writeString = fmt.format(tick, point[0], point[1], point[2], position[0], position[1], position[2], rHand[0], rHand[1], rHand[2],pupilDiameter, flag)

            trackingFile.write(writeString)

            if not flag == '-':

                timeLine.append([flag, viz.tick() - startTime]) 

        else:

            tick, point, position, rHand, flag  = data

            fmt = '{:<8.2f}\t' * 10 + '{:<8s}\t' + '\n'

            writeString = fmt.format(tick, point[0], point[1], point[2], position[0], position[1], position[2], rHand[0], rHand[1], rHand[2],flag)

            trackingFile.write(writeString)

            if not flag == '-':

                timeLine.append([flag, viz.tick() - startTime]) 


Lastly, adjust Session Replay to update new number of values on line 255: 


for i in range(11, len(s)):

f += s[i] + ' '

else:

self.pupilDiameter[self.timestamps[self.replayIter]] = s[11]

f = ''

for i in range(12, len(s)):

f += s[i] + ' '

self.gazePoints.append([x,y,z])

self.gazeTime.append(t)

self.gazeFlags.append(f) 



To have this data appear in the Session Replay: 

Line 197 

Self.rightHand


Line 277

self.rightHandText = viz.addText('', parent=viz.ORTHO, color=viz.RED, fontSize=30, pos=[5,180,0])


Line 607

if not self.config == 'vizconnect_config_desktop.py' and self.currTimeStamp in self.rightHand:

self.rightHandText.message(self.rightHande[self.currTimeStamp])


Line 255


#add s[8] for new value and increase range by number of new values


else:

self.pupilDiameter[self.timestamps[self.replayIter]] = s[7]

self.rightHand[self.timestamps[self.replayIter]] = s[8]

f = ''

for i in range(11, len(s)):

f += s[i] + ' '