Exemple #1
0
    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)