def setUp(self): if os.path.isfile('c3d-test-data.h5'): unlink('c3d-test-data.h5') logging.info('AntRawDataAccess Test') self.c3dFile = C3.open('test-data/test.c3d') self.cwriter = C3DDataAccess('c3d-test-data.h5','/test', videoSamplingRate=self.c3dFile.getVideoSamplingRate(), videoFrames=self.c3dFile.getVideoFrames(), scale=self.c3dFile.getScale() )
def test_load_c3d(self): c3dFile = C3.open('test-data/test.c3d') self.assertEqual(c3dFile.Scale,-0.10000000149011612) self.assertEqual(c3dFile.VideoFrameRate,120) self.assertEqual(len(c3dFile.ParameterGroups),9) self.assertEqual(c3dFile.NvideoFrames,3236) Markers = c3dFile.readline(); MarkerNames = c3dFile.getMarkerNames() self.assertEqual(Markers['LBO'].x,501.4815368652344) self.assertEqual(Markers[MarkerNames[0]].x,501.4815368652344) self.assertEqual(Markers[MarkerNames[5]].x,383.5377502441406) self.assertEqual(Markers[MarkerNames[6]].z,1.4693679385278594e-39) self.assertEqual(Markers['*8'].z,1.4693679385278594e-39) logging.debug(Markers) markers = 1; read = True; first = Markers['LBO'].x second = first while(read): Markers = c3dFile.readline(); if Markers == False: read = False continue #logging.debug(Markers) self.assertEqual(len(Markers),7) first = second second = Markers if second[MarkerNames[0]].x != 1.4693679385278594e-39: self.assertNotEqual(first, second) markers += 1 self.assertEqual(c3dFile.NvideoFrames,markers) self.assertEqual(second[MarkerNames[0]].x,501.502197265625) self.assertEqual(second[MarkerNames[0]].z,960.3297729492188) self.assertEqual(second[MarkerNames[5]].x,334.42401123046875) self.assertEqual(second[MarkerNames[5]].z,962.0659790039062) self.assertEqual(second[MarkerNames[6]].z,1.4693679385278594e-39) self.assertEqual(second[MarkerNames[6]].Timestamp, markers/c3dFile.VideoFrameRate)
def importdata(infile, outfile, runName, description, shouldParse, shouldCsv): """ Standard function used to import data into the file """ print '\n-------------------------------\nImporting information' + \ '\n-------------------------------\n' if(infile == None): print "Specify the in file (--infile filename)" exit() if(outfile == None): print "Specify the out file (--outfile filename)" exit() if(runName == None): print "Specify the rest run name (--runName 01CornerTestRun) " exit() extension = os.path.splitext(infile) infileName = extension[0] extension = extension[1] csvOut = infileName + '-sofie.csv' csvOutParsed = infileName + '-sofie-parsed.csv' if extension == '.gce': runNameExtended = getGESubDirectory(runName) theOriginalFile = GE.open(infile) parser = ant_sample parser_interpret = ant_sample_interpret theWriter = AntRawDataAccess(outfile, runName=runNameExtended, description=description) elif extension == '.ant': runNameExtended = getSparkSubDirectory(runName) theOriginalFile = SF.open(infile) parser = ant_sample parser_interpret = ant_sample_interpret theWriter = AntRawDataAccess(outfile, runName=runNameExtended, description=description) elif extension == '.c3d' or extension == '.C3D': runNameExtended = getC3DSubDirectory(runName) theOriginalFile = C3.open(infile) parser = c3d_sample parser_interpret = c3d_sample_interpret theWriter = C3DDataAccess(outfile, runName=runNameExtended, description=description, allowDuplicates=True, videoSamplingRate=theOriginalFile.getVideoSamplingRate(), videoFrames=theOriginalFile.getVideoFrames(), scale=theOriginalFile.getScale()) elif extension == '.csv': runNameExtended = getCSVImportSubDirectory(runName) theOriginalFile = scf.open(infile) parser = csv_sample parser_interpret = csv_sample_interpret theWriter = SofieCsvPyTableAccess(outfile, runName=runNameExtended, description=description, fieldNames=theOriginalFile.getTableStructure()) elif extension == '.tab': runNameExtended = getAdamsSubDirectory(runName) theOriginalFile = adams.open(infile) parser = csv_sample parser_interpret = csv_sample_interpret theWriter = SofieCsvPyTableAccess(outfile, runName=runNameExtended, description=description, fieldNames=theOriginalFile.getTableStructure()) elif extension == '.bag': runNameExtended = getBagSubDirectory(runName) theWriter = SofieCsvPyTableAccess(outfile, runName=runNameExtended, description=description, fieldNames=['A HACK']) theWriter.writeFile(infile) print '\n-------------------------------\n{0} Saved to file'.format(outfile) theWriter.close() return else: raise FileNotSupportedException('File not Supported: ' + str(extension)) print '\n-------------------------------\nSaving to file', print outfile if shouldParse: print 'File is going to be parsed' print 'CSV Parsed File: ' + csvOutParsed if shouldCsv: print 'CSV File: ' + csvOut + '\n-----------------------------------\n' awritercsv = SofieCsvAccess(csvOut) for theLine in theOriginalFile: logging.debug(theLine) try: parsedLine = parser(theLine) except Exception, e: print 'Parsing Failed: ' + str(e) continue try: logging.debug(parsedLine) theWriter.write(parsedLine) print '.', if shouldCsv: awritercsv.write(parsedLine) print 'c', except AntRawParserLengthNotCorrect, e: print 'x'