コード例 #1
0
ファイル: pvexperiment.py プロジェクト: emayssat/python-eggs
    def saveInFile(self):
        tmpDir = tempfile.mkdtemp(dir="/tmp")
        outputFormats = self.dataContainer.outputFormats

        if self.dataContainer.outputFileName[-1] == "/":
            raise Exception("Invalid filename", "looks like a directory !!!")

        outputDir, outputFileName = os.path.split(self.dataContainer.outputFileName)
        outputDir = os.path.abspath(outputDir)
        outputRootName, extension = os.path.splitext(outputFileName)

        os.chdir(tmpDir)
        os.makedirs(outputRootName)
        os.chdir(outputRootName)

        summaryFileName = SUMMARY_FILE
        verbose(self, "Saving summary in (%s)" % (summaryFileName))
        verbose(self, "outputFormats is %s" % (outputFormats))
        savetxt(summaryFileName, self.lr_summary, fmt=outputFormats)
        if self.verboseLevel > 4:
            cat(summaryFileName)

        for index, measurement in enumerate(self.measurements):
            sampleFileName = "%s.%s" % (measurement.pvName.lower(), LRECARRAY_FILE_EXTENSION)
            names = ["step_%d" % i for i in range(self.numberOfSteps + 1)]
            formats = ["float"] * len(names)
            dt = np.dtype({"names": names, "formats": formats})
            verbose(self, "lr_samples dtype = %s" % dt, 5)
            numberOfSamples = measurement.numberOfSamples
            lr_samples = np.empty(numberOfSamples, dtype=dt).view(LRecArray)
            for stepNumber in range(0, self.numberOfSteps + 1):
                colName = "step_%d" % stepNumber
                lr_samples[colName] = measurement.samples[stepNumber]
            savetxt(sampleFileName, lr_samples, fmt=outputFormats)

        configurationFileName = os.path.join(tmpDir, outputRootName, PVEXPERIMENT_CONF_FILE)
        verbose(self, "Configuration file copy in %s" % configurationFileName, 4)
        self.saveConfigurationFile(configurationFileName)

        os.chdir(tmpDir)
        tar = tarfile.open(outputFileName, "w:gz")
        tar.add(outputRootName)
        tar.close()

        source = os.path.join(tmpDir, outputFileName)
        destination = os.path.join(outputDir, outputFileName)
        if not os.path.exists(outputDir):
            os.makedirs(outputDir)
            verbose(self, "Created %s" % outputDir)

        verbose(self, "%s/%s --> %s/%s" % (tmpDir, outputFileName, outputDir, outputFileName))
        verbose(self, "%s --> %s" % (source, destination))
        shutil.copy(source, destination)

        shutil.rmtree(tmpDir)

        verbose(self, "Data saved in %s / %s" % (outputDir, outputFileName))
コード例 #2
0
ファイル: pvexperiment.py プロジェクト: emayssat/epics-opis
    def saveInFile(self):
        '''
        In this method, the tar archive is created.
        In that archive is included:
            * Summary file
            * Sample files
            * Configuration of pvexperiment
        '''
        curDir = os.getcwd()
        tmpDir = tempfile.mkdtemp(dir='/tmp')
        cellFormats = self.dataContainer.cellFormats
    
        if self.dataContainer.archiveFileName[-1] == '/' :
            raise Exception('Invalid filename', 'looks like a directory !!!')    

        archiveDir, archiveFileName = os.path.split(self.dataContainer.archiveFileName)
        archiveDir = os.path.normpath(os.path.join(os.getcwd(),archiveDir))
        archiveRootName, extension = os.path.splitext(archiveFileName)

        os.chdir(tmpDir)
        os.makedirs(archiveRootName)
        os.chdir(archiveRootName)                                      # archiveRootName is name of topdir of untar'ed archive

        summaryFileName = SUMMARY_FILE
        verbose(self,"Saving summary in (%s)" % (summaryFileName))
        verbose(self,"cellFormats is %s" % (cellFormats))
        savetxt(summaryFileName, self.lr_summary, fmt=cellFormats)
        if self.verboseLevel>4 : 
            cat(summaryFileName)
    
        for index, measurement in enumerate(self.measurements):
            sampleFileName = "%s.%s" % (measurement.pvName.lower(), LRECARRAY_FILE_EXTENSION)
            names = [ 'step_%d' % i for i in range(self.numberOfSteps+1) ] 
            formats = ['float'] * len(names)
            dt = np.dtype({'names': names, 'formats': formats})
            verbose(self,"lr_samples dtype = %s" % dt,5)
            numberOfSamples = measurement.numberOfSamples
            lr_samples = np.empty(numberOfSamples,dtype=dt).view(LRecArray)
            for stepNumber in range(0, self.numberOfSteps+1):
                colName = "step_%d" % stepNumber
                lr_samples[colName] = measurement.samples[stepNumber]
            savetxt(sampleFileName, lr_samples, fmt=cellFormats)
   
        # Save config file with measurements
        configurationFileName = os.path.join(tmpDir, archiveRootName, PVEXPERIMENT_CONF_FILE)
        verbose(self,"Configuration file copy in %s" % configurationFileName, 4)
        self.saveConfigurationFile(configurationFileName)
   
        os.chdir(tmpDir) 
        tar = tarfile.open(archiveFileName, "w:gz") 			# archiveFileName is name of tgxz file (with extension)
        tar.add(archiveRootName)
        tar.close()

        source = os.path.join(tmpDir, archiveFileName)
        destination = os.path.join(archiveDir, archiveFileName)
        if not os.path.exists(archiveDir):
            os.makedirs(archiveDir)
            verbose(self, "Created %s" % archiveDir)

        verbose(self,"%s/%s --> %s/%s" % ( tmpDir, archiveFileName, archiveDir, archiveFileName))
        verbose(self,"%s --> %s" % ( source, destination))
        shutil.copy(source, destination)

        os.chdir(curDir)
        shutil.rmtree(tmpDir)
            
        verbose(self,"Data saved in %s / %s" % (archiveDir, archiveFileName))