def doSuccessPowderIntegration(self, _edPlugin=None): EDVerbose.DEBUG( "*** EDPluginControlDiffractionCTv1_0.doSuccessPowderIntegration") self.retrieveSuccessMessages( _edPlugin, "EDPluginControlDiffractionCTv1_0.doSuccessPowderIntegration") self.m_xsDataResultDiffractionCT = XSDataResultDiffractionCT() # Copy file to final destination and add path to result object xsDataFileIntegratedIntensities = self.m_edPluginPowderIntegration.getDataOutput( ).getIntegratedIntensities() EDVerbose.DEBUG("Path to cif: " + xsDataFileIntegratedIntensities.getPath().getValue()) EDVerbose.DEBUG("%s" % xsDataFileIntegratedIntensities) if (xsDataFileIntegratedIntensities is not None): strOutputFilePath = xsDataFileIntegratedIntensities.getPath( ).getValue() strDestinationDirectory = self.getDataInput( ).getDestinationDirectory().getPath().getValue() strPowderDiffractionSubdirectory = self.getDataInput( ).getPowderDiffractionSubdirectory().getValue() if not os.path.isdir(strDestinationDirectory): os.mkdir(strDestinationDirectory) if self.m_xsDataDiffractionCTInstrument.get_tomo_scan_type( ).getValue().lower() in ["flat", "spiral"]: # pyintLineNumber = int( abs( float( self.cif[ "_tomo_spec_displ_rotation" ] ) / float( self.cif[ "_tomo_spec_displ_rotation_inc" ] ) ) ) pyintLineNumber = int( abs(self.m_xsDataDiffractionCTInstrument. get_tomo_spec_displ_rotation().getValue()) / self.m_xsDataDiffractionCTInstrument. get_tomo_spec_displ_rotation_inc().getValue()) elif self.m_xsDataDiffractionCTInstrument.get_tomo_scan_type( ).getValue().lower( ) == "mapping": #I agree mappings are not sinograms but the really looks like, no ? # pyintLineNumber = int( abs( ( float( self.cif[ "_tomo_spec_displ_z" ]) - float ( self.cif [ "_tomo_spec_displ_z_min" ] ) ) / float( self.cif["_tomo_spec_displ_z_inc"] ) ) ) pyintLineNumber = int( abs(self.m_xsDataDiffractionCTInstrument. get_tomo_spec_displ_z().getValue() - self.m_xsDataDiffractionCTInstrument. get_tomo_spec_displ_z_min().getValue()) / self.m_xsDataDiffractionCTInstrument. get_tomo_spec_displ_z_inc().getValue()) else: pyintLineNumber = None if pyintLineNumber is not None: pystrDestinationSubDir = "%s%04i" % ( strPowderDiffractionSubdirectory, pyintLineNumber) strDestinationDirectoryWithSub = os.path.join( strDestinationDirectory, pystrDestinationSubDir) strDestinationFilePath = os.path.join( strDestinationDirectoryWithSub, os.path.basename(strOutputFilePath)) if not os.path.isdir( os.path.join(strDestinationDirectoryWithSub)): os.mkdir(strDestinationDirectoryWithSub) EDVerbose.DEBUG("Full path should be now: %s" % strDestinationFilePath) else: EDVerbose.DEBUG( "No modification of the output directory: I was not able to determine on which line of the sinogram I am." ) strDestinationFilePath = os.path.abspath( os.path.join(strDestinationDirectory, EDUtilsFile.getBaseName(strOutputFilePath))) EDUtilsFile.copyFile(strOutputFilePath, strDestinationFilePath) xsDataFileDestination = XSDataFile() xsDataFileDestination.setPath(XSDataString(strDestinationFilePath)) self.m_xsDataResultDiffractionCT.setIntegratedIntensities( xsDataFileDestination) xsDataPathSinogramDirectory = XSDataFile() xsDataPathSinogramDirectory.setPath( XSDataString(strDestinationDirectory)) xsDataInputWriteSinogram = XSDataInputWriteSinogram() xsDataInputWriteSinogram.setSinogramDirectory( xsDataPathSinogramDirectory) xsDataInputWriteSinogram.setIntegratedIntensities( xsDataFileDestination) xsDataInputWriteSinogram.setSinogramFileNamePrefix( self.getDataInput().getSinogramFileNamePrefix()) self.m_edPluginWriteSinogram.setDataInput(xsDataInputWriteSinogram) self.m_edPluginWriteSinogram.executeSynchronous()
def doSuccessPowderIntegration(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginControlDiffractionCTv1_2.doSuccessPowderIntegration") self.retrieveSuccessMessages(_edPlugin, "EDPluginControlDiffractionCTv1_2.doSuccessPowderIntegration") self.xsDataResultDiffractionCT = XSDataResultDiffractionCT() xsDataFileIntegratedIntensities = _edPlugin.getDataOutput().getIntegratedIntensities() if (xsDataFileIntegratedIntensities is not None): # EDVerbose.DEBUG(self.edPluginPowderIntegration.getDataOutput().mashal()) xsdPathFileIntegratedIntensities = xsDataFileIntegratedIntensities.getPath() if self.powderDiffractionFormat == "edf": self.xsDataResultDiffractionCT.setIntegratedIntensities(xsDataFileIntegratedIntensities) else: xsdInput1DPowderEDF = XSDataInput1DPowderEDF() xsdInput1DPowderEDF.setEdfFile(xsDataFileIntegratedIntensities) xsdOutFile = XSDataFile() xsdOutFile.setPath(XSDataString(os.path.splitext(xsdPathFileIntegratedIntensities.getValue())[0] + "." + self.powderDiffractionFormat)) xsdInput1DPowderEDF.setOutputFile(xsdOutFile) xsdInput1DPowderEDF.setOutputFormat(XSDataString(self.powderDiffractionFormat)) self.edPluginExportAsciiPowder.setDataInput(xsdInput1DPowderEDF) xsDataInputHDF5MapSpectra = XSDataInputHDF5MapSpectra() xsDataMesh = XSDataMeshScan() xsDataSpectrum = XSDataSpectrum() xsDataSpectrum.setPath(xsdPathFileIntegratedIntensities) strDestinationFile = os.path.join(self.getDataInput().getDestinationDirectory().getPath().getValue(), \ self.getDataInput().getSinogramFileNamePrefix().getValue() + ".h5") xsDataPathSinogram = XSDataFile() xsDataPathSinogram.setPath(XSDataString(strDestinationFile)) xsDataInputHDF5MapSpectra.setHDF5File(xsDataPathSinogram) xsDataInputHDF5MapSpectra.setInternalHDF5Path(XSDataString("RawDCT")) if self.xsDataDiffractionCTInstrument.get_tomo_scan_type().getValue().lower() in ["flat", "spiral"]: xsDataSpectrum.setFastMotorPosition(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x()) xsDataMesh.setFastMotorStart(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_min()) xsDataMesh.setFastMotorStop(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_max()) xsSteps = XSDataInteger(int(round(\ (self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_max().getValue() - \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_min().getValue()) / \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_inc().getValue() \ ))) xsDataMesh.setFastMotorSteps(xsSteps) xsDataMesh.setSlowMotorStart(XSDataDouble(0.0)) xsDataMesh.setSlowMotorStop(self.xsDataDiffractionCTInstrument.get_tomo_scan_ampl()) xsSteps = XSDataInteger(int(round(\ self.xsDataDiffractionCTInstrument.get_tomo_scan_ampl().getValue() / \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_rotation_inc().getValue()))) xsDataMesh.setSlowMotorSteps(xsSteps) xsDataSpectrum.setSlowMotorPosition(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_rotation()) elif self.xsDataDiffractionCTInstrument.get_tomo_scan_type().getValue().lower() == "mapping": #I agree mappings are not sinograms but the really looks like, no ? xsDataSpectrum.setFastMotorPosition(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x()) xsDataSpectrum.setSlowMotorPosition(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_z()) xsSteps = XSDataInteger(int(round(\ (self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_max().getValue() - \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_min().getValue()) / \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_inc().getValue() \ ))) xsDataMesh.setFastMotorSteps(xsSteps) xsDataMesh.setFastMotorStop(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_max()) xsDataMesh.setFastMotorStart(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_x_min()) xsSteps = XSDataInteger(int(round(\ (self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_z_max().getValue() - \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_z_min().getValue()) / \ self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_z_inc().getValue() \ ))) xsDataMesh.setSlowMotorSteps(xsSteps) xsDataMesh.setSlowMotorStop(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_z_max()) xsDataMesh.setSlowMotorStart(self.xsDataDiffractionCTInstrument.get_tomo_spec_displ_z_min()) xsDataSpectrum.setMeshScan(xsDataMesh) xsDataInputHDF5MapSpectra.setInputSpectrumFile([xsDataSpectrum]) self.edPluginHDF5MapSpectra.setDataInput(xsDataInputHDF5MapSpectra)