Ejemplo n.º 1
0
def deletedata(options):
    if(options.runname == None):
        print "Specify the rest run name (--runname 01CornerTestRun) "
        exit()
    extension = os.path.splitext(options.infile)
    extension = extension[1]
    if extension != '.h5':
        print "Can only lsit .h5 files: " + options.infile
        exit()
    theReader = SofiePyTableAccess(options.infile, runName='/')
    if options.recursive:
        recursively = ' (recursively enabled) '
    else:
        recursively = ' (recursively disabled)'
    if theReader.deleteRun(options.runname, options.recursive):
        print "\n\n==============================="
        print "==============================="
        print "RUN: " + options.runname + ' DELETED' + recursively + \
            "\n-------------------------------"
    else:
        print "\n\n==============================="
        print "==============================="
        print "RUN: " + options.runname + ' NOT DELETED' + recursively + \
            "\n-------------------------------"
    theReader.close()
Ejemplo n.º 2
0
 def test_makesafekey(self):
     csvWriter = SofiePyTableAccess('simple-test-data.h5')
     self.assertEqual('test19', csvWriter._makesafekey('test.1_9'))
     self.assertEqual('test19', csvWriter._makesafekey('_test.1_9_'))
     self.assertEqual('test19', csvWriter._makesafekey('.test.1_9.'))
     self.assertEqual('test19', csvWriter._makesafekey('__.test.1_9.__'))
     self.assertEqual('test19', csvWriter._makesafekey('__#$%^&*!#$%^^.test.1_9.__'))
Ejemplo n.º 3
0
 def test_createNiceRunName(self):
     runName = SofiePyTableAccess._createNiceRunName('/')   
     self.assertEqual('/',runName)
     runName = SofiePyTableAccess._createNiceRunName('//')
     self.assertEqual('/',runName)
     runName = SofiePyTableAccess._createNiceRunName('//')
     self.assertEqual('/',runName)
Ejemplo n.º 4
0
 def test_deleteNode(self):
     writer = SofiePyTableAccess('simple-test-data.h5', '/test')
     self.assertEqual(writer.getRunName(), '/test')
     writer.setRunName('goat')
     self.assertEqual(writer.getRunName(), '/goat')
     self.assertEqual(writer.getRuns('goat'), [])
     writer.setRunName('goat1', False)
     self.assertEqual(writer.getRuns('goat1'), [])
     self.assertEqual(writer.getRunName(), '/')
Ejemplo n.º 5
0
 def write(self,thePayloadList):
     """ Writes the data into a table with each byte in a separate column. 
     
     Throws an IncorrectAntDataError if thePayloadList is not equal 
     to sofiehdfformat.AntParser.ANTDATALENGTH
     """
     if len(thePayloadList)!=ANTPARSERRAWLISTLENTH:
         raise AntRawParserLengthNotCorrect()
     SofiePyTableAccess.write(self,thePayloadList)
 def __init__(self,filename,runName='/test',fieldNames={},description=''):
     """
     For now only handles CSV files where all columns are float.
     """
     SofiePyTableAccess.__init__(self,filename,runName=runName,
         description=description,allowDuplicates=True);
     fieldNamesDict = {}
     for field in fieldNames:
         fieldNamesDict[self._makesafekey(field)] = FloatCol()
     self.setTable(CsvImportDataName,fieldNamesDict)
Ejemplo n.º 7
0
    def write(self,thePayloadList):
        """ Writes the data into a table with each byte in a separate column.

        Throws an IncorrectAntDataError if thePayloadList is not equal
        to sofiehdfformat.AntParser.ANTDATALENGTH
        """
        if len(thePayloadList)!=ANTPARSERPARSEDLISTLENTH:
            raise AntParserLengthNotCorrect('The length should be: '+\
                str(ANTPARSERPARSEDLISTLENTH)+
                ': BUT is: '+ str(len(thePayloadList))
                )
        SofiePyTableAccess.write(self,thePayloadList)
Ejemplo n.º 8
0
 def __init__(self, filename, runName='/test',
              allowDuplicates=True,
              description='',
              videoSamplingRate=-1,
              videoFrames=-1,
              scale=-0.1):
     SofiePyTableAccess.__init__(self, filename, runName=runName,
                                 allowDuplicates=allowDuplicates,
                                 description=description);
     self.setTable(C3DMetaName, C3DMeta)
     SofiePyTableAccess.write(self, [videoSamplingRate, videoFrames, scale,
                              time.time()])
     self.allowDuplicates()
Ejemplo n.º 9
0
    def test_sync(self):
        writer = SofiePyTableAccess('simple-test-data.h5', runName='/sync',
                description='our description')
        time1 = writer.writeSync(sample=11)
        time2 = writer.writeSync(sample=26)

        syncs = writer.getSyncs()
        logging.debug(syncs)
        self.assertFalse(syncs[0]['Timestamp'] == time2)
        self.assertEqual(syncs[0]['Sample'], 11)
        self.assertEqual(syncs[1]['Sample'], 26)
        self.assertEqual(syncs[0]['Timestamp'], time1)
        self.assertFalse(syncs[1]['Timestamp'] == time1)
        self.assertEqual(syncs[1]['Timestamp'], time2)
 def _setRunMeta(self,runName):
     if not runName:
         logging.debug('Run name not set.')
         return
     runName = self._getBaseRunName(runName)
     runMeta = {'runName':runName,
                 'runExperimentType': self.components.runExperimentType.getLineText(0),
                        'runSubject':self.components.runSubject.getLineText(0),
                        'runObject':self.components.runObject.getLineText(0),
                        'runSuccessful':self.components.runSuccessful.checked,
                        'runCorrupted':self.components.runCorrupted.checked,
                        'runNotes':self._getTextArea('runNotes')
                        }
     logging.debug(runMeta)
     SofiePyTableAccess.setRunMetaInFile(self.filename,runName,runMeta)
Ejemplo n.º 11
0
    def write(self, theMarkers):
        """ Writes the data into a table with each Marker Label in a separate Table
        """
        #logging.debug(theMarkers)
        if theMarkers == False:
            return
        for key in theMarkers.keys():
            theMarker = theMarkers[key]
            key = key.replace('*', '_STAR')

            #logging.debug('The Marker'+str(theMarker))
            #logging.debug('Writing Marker: '+key)

            self.setTable(C3DMarkerName + key, C3DMarker)
            SofiePyTableAccess.write(self, theMarker)
 def _setRunMeta(self, runName):
     if not runName:
         logging.debug("Run name not set.")
         return
     runName = self._getBaseRunName(runName)
     runMeta = {
         "runName": runName,
         "runExperimentType": self.components.runExperimentType.getLineText(0),
         "runSubject": self.components.runSubject.getLineText(0),
         "runObject": self.components.runObject.getLineText(0),
         "runSuccessful": self.components.runSuccessful.checked,
         "runCorrupted": self.components.runCorrupted.checked,
         "runNotes": self._getTextArea("runNotes"),
     }
     logging.debug(runMeta)
     SofiePyTableAccess.setRunMetaInFile(self.filename, runName, runMeta)
 def _updateRunList(self):
     self.components.runList.clear()
     runList = list(set([self._getBaseRunName(runName) for runName in 
                 SofiePyTableAccess.getRunsInTheFile(self.filename)
                 if runName != '/RunMeta'
                 ] ))      
     self.components.runList.insertItems(runList,0)
 def _getRunMeta(self,runName):
     runMeta = SofiePyTableAccess.getRunMetaInFile(self.filename, runName)
     if runMeta:
         runNotes =runMeta['runNotes']
         runSubject =runMeta['runSubject']
         runObject =runMeta['runObject']
         runSuccessful =runMeta['runSuccessful']
         runCorrupted =runMeta['runCorrupted']
         runExperimentType =runMeta['runExperimentType']
         
         self._setText('runExperimentType',runExperimentType)
         self._setText('runNotes',runNotes)
         self._setText('runSubject',runSubject)
         self._setText('runObject',runObject)
         self.components.runSuccessful.checked = runSuccessful
         self.components.runCorrupted.checked = runCorrupted
         self._setText('runExperimentType',runExperimentType)
     else:
         self._setText('runExperimentType',None)
         self._setText('runNotes',None)
         self._setText('runSubject',None)
         self._setText('runObject',None)
         self.components.runSuccessful.checked = False
         self.components.runCorrupted.checked = False
         self._setText('runExperimentType',None)
    def _getRunMeta(self, runName):
        runMeta = SofiePyTableAccess.getRunMetaInFile(self.filename, runName)
        if runMeta:
            runNotes = runMeta["runNotes"]
            runSubject = runMeta["runSubject"]
            runObject = runMeta["runObject"]
            runSuccessful = runMeta["runSuccessful"]
            runCorrupted = runMeta["runCorrupted"]
            runExperimentType = runMeta["runExperimentType"]

            self._setText("runExperimentType", runExperimentType)
            self._setText("runNotes", runNotes)
            self._setText("runSubject", runSubject)
            self._setText("runObject", runObject)
            self.components.runSuccessful.checked = runSuccessful
            self.components.runCorrupted.checked = runCorrupted
            self._setText("runExperimentType", runExperimentType)
        else:
            self._setText("runExperimentType", None)
            self._setText("runNotes", None)
            self._setText("runSubject", None)
            self._setText("runObject", None)
            self.components.runSuccessful.checked = False
            self.components.runCorrupted.checked = False
            self._setText("runExperimentType", None)
Ejemplo n.º 16
0
def listdata(options):
    if(options.runname == None):
        options.runname = '/'
    if(options.infile == None):
        print "Specify the in file (--infile filename)"
        exit()
    extension = os.path.splitext(options.infile)
    extension = extension[1]
    if extension != '.h5':
        print "Can only lsit .h5 files: " + options.infile
        exit()
    theReader = SofiePyTableAccess(options.infile, runName='/')
    runs = theReader.getRuns(options.runname)
    runs.sort()
    for run in runs:
        logging.debug('Setting Run: ' + run);
        splitRun = os.path.split(run);
        theRun, theNode = splitRun
        theReader.setRunName(theRun)
        meta = theReader.getRunMeta(options.runname)
        if meta:
            run, description, timestamp = meta[0]
        else:
            run, description, timestamp = None, None, None
        print "\n\n==============================="
        print "==============================="
        print "RUN: " + theRun + '/' + theNode + "\n-------------------------------"
        if theNode == RunMetaName:

            print "Description: " + str(description)
            print "Time: " + time.strftime('%D,  %H:%M:%S',
                                           time.localtime(timestamp))
        elif options.verbose:
            theReader.setTable(theNode, '')
            x = DUMPLINLINES
            for row in theReader:
                print str(row).lstrip('(').rstrip(')')
                if x == 0:
                    print  '.... ONLY THE FIRST ' + \
                        str(DUMPLINLINES) + ' ENTRIES ARE PRINTED ....'
                    break;
                x -= 1;
            
    else:
        print "\n\n==============================="
        print "==============================="
        print "RUN: " + options.runname + ' DOES NOT EXIST' + \
            "\n-------------------------------"
    theReader.close()
Ejemplo n.º 17
0
 def test_makeSafeValue(self):
     csvWriter = SofiePyTableAccess('simple-test-data.h5')
     self.assertEqual('"test\.1\_9"', csvWriter._makeSafeValue('test.1_9'))
     self.assertEqual('"test\.1\_\\\n9"', csvWriter._makeSafeValue('test.1_\n9'))
     self.assertEqual(10, csvWriter._makeSafeValue(10))
     self.assertEqual(10, csvWriter._makeSafeValue('10'))
     self.assertEqual(10, csvWriter._makeSafeValue('10.000'))
     self.assertEqual(10, csvWriter._makeSafeValue('1e1'))
    def write(self,thePayloadList):
        """ Writes the data into a table with each byte in a separate column. 
        """
        logging.debug(thePayloadList)
        newPayLoadList = {}
        for key in thePayloadList.keys():
            newPayLoadList[self._makesafekey(key)] = thePayloadList[key]
            if thePayloadList[key] == None:
                continue
            if isinstance(thePayloadList[key], basestring):
                converted = thePayloadList[key].strip('\'')
                if len(converted) == 0 or converted == None:
                    newPayLoadList[self._makesafekey(key)] = None
                else:
                    logging.debug(thePayloadList[key].strip('\''))
                    newPayLoadList[self._makesafekey(key)] = float(converted)
        logging.debug(newPayLoadList)

        SofiePyTableAccess.write(self,newPayLoadList)
 def on_runName_loseFocus(self, event=None):
     self.runName = self.components.runName.getLineText(0)
     if not self.runName:
         dialog.alertDialog(self,'The Run Name is not set.','Check you run name')
         return False
     self._setRunMeta(self.runName)
     if self.filename:
         theRuns = [self._getBaseRunName(runName) for runName in SofiePyTableAccess.getRunsInTheFile(self.filename)];
         if self.runName in theRuns:
             dialog.alertDialog(self,'The Run Name already exists.','Check you run name')
             return False
     return True
 def on_runName_loseFocus(self, event=None):
     self.runName = self.components.runName.getLineText(0)
     if not self.runName:
         dialog.alertDialog(self, "The Run Name is not set.", "Check you run name")
         return False
     self._setRunMeta(self.runName)
     if self.filename:
         theRuns = [self._getBaseRunName(runName) for runName in SofiePyTableAccess.getRunsInTheFile(self.filename)]
         if self.runName in theRuns:
             dialog.alertDialog(self, "The Run Name already exists.", "Check you run name")
             return False
     return True
 def _updateRunList(self):
     self.components.runList.clear()
     runList = list(
         set(
             [
                 self._getBaseRunName(runName)
                 for runName in SofiePyTableAccess.getRunsInTheFile(self.filename)
                 if runName != "/RunMeta"
             ]
         )
     )
     self.components.runList.insertItems(runList, 0)
Ejemplo n.º 22
0
def exportFile(options):
    """
    Function used to export data.
    """
    print '\n-------------------------------\nExporting information' + \
        '\n-------------------------------\n'
    if(options.runname == None):
        print "Specify the complete node/run to export (--runname runNameOrPath)"
        exportpath = options.runname
    if(options.infile == None):
        print "Specify the in file (--infile filename)"
        exit()
    if(options.outfile == None):
        print "Specify the out file (--outfile theExportedFileName    )"
        exit()
    extension = os.path.splitext(options.infile)
    extension = extension[1]
    if extension != '.h5':
        print "Can only export .h5 files: " + options.infile
        exit()
    else:
        theReader = SofiePyTableAccess(options.infile)
        theReader.readFile(options.runname, options.outfile)
        theReader.close()
Ejemplo n.º 23
0
def exportdata(options):
    """
    Function used to export data.
    """
    print '\n-------------------------------\nExporting information' + \
        '\n-------------------------------\n'
    if(options.runname == None):
        exportpath = '/'
    else:
        exportpath = options.runname
    if(options.infile == None):
        print "Specify the in file (--infile filename)"
        exit()
    if(options.outdir == None):
        print "Specify the out file (--exportdir directoryname)"
        exit()
    extension = os.path.splitext(options.infile)
    extension = extension[1]

    if extension != '.h5':
        print "Can only export .h5 files: " + options.infile
        exit()
    else:
        theReader = SofiePyTableAccess(options.infile, runName='/')
        theRuns = theReader.getRuns(exportpath)
        for run in theRuns:
            exportFile = os.sep.join([options.outdir] + run.split('/')) + '.csv'
            if not os.path.isdir(os.path.dirname(exportFile)):
                os.makedirs(os.path.dirname(exportFile))
            if os.path.isfile(exportFile):
                os.unlink(exportFile)
            print '\n-------------------------------\n' + \
                'Exporting: ' + run + ' to ' + str(exportFile)

            theReader.setTable(run, '')
            fieldNames = theReader.getTableStructure(asList=True)
            csvWriter = SofieCsvAccess(exportFile, fieldNames)
            for row in theReader:
                logging.debug("Read New Row")
                parsed = csv_sample_interpret(row)
                csvWriter.write(parsed)
            #aparsedwritercsv = SofieCsvAccess(csvOutParsed)
    csvWriter.close()
    theReader.close()
Ejemplo n.º 24
0
 def __init__(self,filename,runName='/test'):
     SofiePyTableAccess.__init__(self,filename,runName);
     self.setTable(AntParsedDataName, AntParsedData)
Ejemplo n.º 25
0
 def __init__(self,filename,runName='/test',description=''):
     SofiePyTableAccess.__init__(self,filename,runName=runName,
         description=description);
     self.setTable(AntRawDataName,AntRawData)
Ejemplo n.º 26
0
def exportFile(filename,runName,outFilename):
    """ Exports a file node from a sofiehdfformat file. """
    theReader = SofiePyTableAccess(filename)
    theReader.readFile(runName, outFilename)
    theReader.close()
Ejemplo n.º 27
0
    def test_SofiePyTableAccess(self):
        logging.info('AntPyTableAccess Test')
        writer = SofiePyTableAccess('simple-test-data.h5', '/test')
        self.assertIsInstance(writer, SofiePyTableAccess, 'Root Does not exist')
        writer.close()
        writer = SofiePyTableAccess('simple-test-data.h5', '/test')
        self.assertIsInstance(writer, SofiePyTableAccess, 'Root Exists')

        writer = SofiePyTableAccess('simple-test-data.h5', '/testagain')
        self.assertIsInstance(writer, SofiePyTableAccess, 'New Root')

        writer = SofiePyTableAccess('simple-test-data.h5', '/testagain/new')
        self.assertIsInstance(writer, SofiePyTableAccess, 'New Leaf')

        writer = SofiePyTableAccess('simple-test-data.h5', '/testagain/new')
        self.assertIsInstance(writer, SofiePyTableAccess, 'Repeat Leaf')
        writer.setRunName('test/new2')
        writer.setRunName('testagain/new3/sub1')
        writer.setRunName('testagain/new3/sub1')
        writer.setRunName('testagain/new3/sub2')

        writer = AntRawDataAccess('simple-test-data.h5', '/test')
        writerData = ('1', '2', '3', '4', '5', '6', '7', '8', '9', 111111.101221)
        logging.info('Writing the following data: ' + str(writerData))
        writer.write(writerData)
        logging.info('Came Back from writing.')
        writer.close()

        writer = AntRawDataAccess('simple-test-data.h5', '/test/AntRawData')
        self.assertIsInstance(writer, AntRawDataAccess)
Ejemplo n.º 28
0
 def test_deleteRun(self):
     writer = SofiePyTableAccess('simple-test-data.h5', '/test')
     self.assertEqual(writer.getRunName(), '/test')
     self.assertEqual(writer.getRuns('/'), ['/RunMeta'])
     self.assertFalse(writer.deleteRun('goat'))
     self.assertFalse(writer.deleteRun('test'))
     self.assertEqual(writer.getRuns('/'), ['/RunMeta'])
     self.assertFalse(writer.deleteRun('test', recursive=True))
     self.assertEqual(writer.getRuns('/'), ['/RunMeta'])
     writer.setRunName('/again', True)
     self.assertEqual(writer.getRuns('/'), ['/RunMeta'])
     self.assertFalse(writer.deleteRun('/again/', recursive=True))
Ejemplo n.º 29
0
            format(options.outfile)
        print "\n\n-------------------------------\n"
        exit()
    except OutFileMustBeAbsolutePath:
        print "\n\n-------------------------------\n"
        print "The Outfile ({0}) must be specified as an absolute path.".\
            format(options.outfile)
        print "\n\n-------------------------------\n"
        exit()

    if(options.runname==None):
        print "\n\n-------------------------------\n"
        print "Specify the rest run name (--runname 01CornerTestRun) "
        print "\n\n-------------------------------\n"
        exit()
    currentRuns = SofiePyTableAccess.getRunsInTheFile(options.outfile,
        options.runname)
    if currentRuns:
        print "\n\n-------------------------------\n"
        print "The run '{0}' is already in the file '{1}':\n\nCurrent Runs:\n{2}".\
            format(options.runname,options.outfile,currentRuns)
        print "\n\n-------------------------------\n"
        exit()
    
    listeners = \
        startExperiment(options.outfile, options.runname,
                    options.serialimu,options.serialant,options.serialar,
                    imuPort=options.imuport,imuHost=options.imuhost,
                    arHighRes=options.highres,arMarkerSize=options.bigmarker)
   
    print "\n\n-------------------------------\n"
    print "LOGGING SETUP: CALLIBRATION STILL PERIOD STARTS"
Ejemplo n.º 30
0
    def test_meta(self):
        writer = SofiePyTableAccess('simple-test-data.h5', '/test')
        self.assertEqual(writer.getRuns('/'), ['/RunMeta'])
        data = writer.getRunMeta('test')
        logging.debug('Meta Data for the table:' + str(data))
        self.assertEqual(len(data),8)
        
        writer.setRunMeta('ourRun', 'The Description')
        data = writer.getRunMeta('ourRun')
        self.assertEqual(len(data), 8)
        logging.debug('The Data:'+str(data))
        self.assertEqual('ourRun', data['runName'])
        self.assertEqual('The Description', data['runNotes'])
        
        self.assertTrue(writer.setRunMeta('ourRun', 'The New Description'))
        data = writer.getRunMeta('ourRun')
        logging.debug(data)
        self.assertEqual(len(data), 8)
        logging.debug('The Data:'+str(data))
        self.assertEqual('ourRun', data['runName'])
        self.assertEqual('The New Description', data['runNotes'])

        data = writer.getRunMeta('test')
        self.assertEqual(len(data), 8)

        writer = SofiePyTableAccess('simple-test-data.h5', runName='/testagain',
        description='our description again')
        data = writer.getRunMeta('/testagain')
        self.assertEqual(len(data), 8)
        self.assertEqual('testagain', data['runName'])
        self.assertEqual('our description again', data['runNotes'])
        data = writer.getRunMeta('testagain')
        self.assertEqual(len(data), 8)
        self.assertEqual('testagain', data['runName'])
        self.assertEqual('our description again', data['runNotes'])

        self.assertIsNone(writer.setRunName('/'));
        self.assertIsNone(writer.setRunName('/'));
        self.assertIsNone(writer.setTable('/', ''));