def testCheckParameters(self):
     xsDataInput = XSDataInputAutoRg()
     xsDataInput.sample = XSDataSaxsSample()
     xsDataInput.inputCurve = [XSDataFile()]
     edPluginExecAutoRg = self.createPlugin()
     edPluginExecAutoRg.setDataInput(xsDataInput)
     edPluginExecAutoRg.checkParameters()
 def testCheckParameters(self):
     xsDataInput = XSDataInputAutoRg()
     xsDataInput.sample = XSDataSaxsSample()
     xsDataInput.inputCurve = [XSDataFile()]
     edPluginExecAutoRg = self.createPlugin()
     edPluginExecAutoRg.setDataInput(xsDataInput)
     edPluginExecAutoRg.checkParameters()
 def doSuccessReduce(self, _edPlugin=None):
     self.DEBUG("EDPluginControlSaxsPipelinev1_0.doSuccessReduce")
     self.retrieveSuccessMessages(
         _edPlugin, "EDPluginControlSaxsPipelinev1_0.doSuccessReduce")
     self.inputautorg = XSDataInputAutoRg(
         inputCurve=[_edPlugin.dataOutput.mergedCurve])
     self.inputautorg.sample = self.dataInput.sample
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginControlSaxsAnalysisv1_0.process")
        if self.autoRg is None:
            self.edPluginAutoRg = self.loadPlugin(self.cpAutoRg)
            self.edPluginAutoRg.dataInput = XSDataInputAutoRg(
                inputCurve=[self.dataInput.scatterCurve])
            self.edPluginAutoRg.connectSUCCESS(self.doSuccessRg)
            self.edPluginAutoRg.connectFAILURE(self.doFailureRg)
            self.edPluginAutoRg.executeSynchronous()

        if self.isFailure():
            return

        self.edPluginDatGnom = self.loadPlugin(self.cpDatGnom)
        self.edPluginDatGnom.dataInput = XSDataInputDatGnom(
            inputCurve=self.dataInput.scatterCurve,
            output=XSDataFile(XSDataString(self.gnomFile)),
            rg=self.autoRg.rg,
            skip=XSDataInteger(self.autoRg.firstPointUsed.value - 1))
        self.edPluginDatGnom.connectSUCCESS(self.doSuccessGnom)
        self.edPluginDatGnom.connectFAILURE(self.doFailureGnom)
        self.edPluginDatGnom.executeSynchronous()

        if self.gnom is None:
            return

        self.edPluginDatPorod = self.loadPlugin(self.cpDatPorod)
        self.edPluginDatPorod.dataInput = XSDataInputDatPorod(
            gnomFile=XSDataFile(XSDataString(self.gnomFile)))
        self.edPluginDatPorod.connectSUCCESS(self.doSuccessPorod)
        self.edPluginDatPorod.connectFAILURE(self.doFailurePorod)
        self.edPluginDatPorod.executeSynchronous()
Esempio n. 5
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginBioSaxsHPLCv1_3.process")

        xsdIn = XSDataInputBioSaxsProcessOneFilev1_0(rawImage=self.dataInput.rawImage,
                                                     sample=self.dataInput.sample,
                                                     experimentSetup=self.dataInput.experimentSetup,
                                                     rawImageSize=self.dataInput.rawImageSize,
                                                     normalizedImage=self.dataInput.normalizedImage,
                                                     integratedCurve=self.dataInput.integratedCurve,
                                                     runId=self.dataInput.runId,
                                                     frameId=self.dataInput.frameId)
        self.edPluginProcessOneFile = self.loadPlugin(self.strControlledPluginProcessOneFile)
        self.edPluginProcessOneFile.dataInput = xsdIn
        self.edPluginProcessOneFile.connectSUCCESS(self.doSuccessProcessOneFile)
        self.edPluginProcessOneFile.connectFAILURE(self.doFailureProcessOneFile)
        self.edPluginProcessOneFile.executeSynchronous()

        if self.isFailure():
            return

        xsdIn = XSDataInputDatcmp(inputCurve=[XSDataFile(XSDataString(self.hplc_run.first_curve)),
                                              XSDataFile(XSDataString(self.curve))])
        self.edPluginDatCmp = self.loadPlugin(self.strControlledPluginDatCmp)
        self.edPluginDatCmp.dataInput = xsdIn
        self.edPluginDatCmp.connectSUCCESS(self.doSuccessDatCmp)
        self.edPluginDatCmp.connectFAILURE(self.doFailureDatCmp)
        self.edPluginDatCmp.executeSynchronous()

        if self.isFailure() or self.isBuffer:
            return

        if self.dataInput.subtractedCurve is not None:
            subtracted = self.dataInput.subtractedCurve.path.value
        else:
            subtracted = os.path.splitext(self.curve)[0] + "_sub.dat"
        if self.hplc_run.buffer is not None:
            xsdIn = XSDataInputDatop(inputCurve=[XSDataFile(XSDataString(self.curve)),
                                                  XSDataFile(XSDataString(self.hplc_run.buffer))],
                                     outputCurve=XSDataFile(XSDataString(subtracted)),
                                     operation=XSDataString("sub"))
        else:
            xsdIn = XSDataInputDatop(inputCurve=[XSDataFile(XSDataString(self.curve)),
                                                  XSDataFile(XSDataString(self.hplc_run.first_curve))],
                                     outputCurve=XSDataFile(XSDataString(subtracted)),
                                     operation=XSDataString("sub"))
        self.edPluginDatop = self.loadPlugin(self.strControlledPluginDatop)
        self.edPluginDatop.dataInput = xsdIn
        self.edPluginDatop.connectSUCCESS(self.doSuccessDatop)
        self.edPluginDatop.connectFAILURE(self.doFailureDatop)
        self.edPluginDatop.executeSynchronous()

        if self.subtracted and os.path.exists(self.subtracted):
            self.edPluginAutoRg = self.loadPlugin(self.strControlledPluginAutoRg)
            self.edPluginAutoRg.dataInput = XSDataInputAutoRg(inputCurve=[XSDataFile(XSDataString(self.subtracted))])
            self.edPluginAutoRg.connectSUCCESS(self.doSuccessAutoRg)
            self.edPluginAutoRg.connectFAILURE(self.doFailureAutoRg)
            self.edPluginAutoRg.executeSynchronous()
Esempio n. 6
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginBioSaxsHPLCv1_4.process")

        xsdIn = XSDataInputBioSaxsProcessOneFilev1_0(rawImage=self.dataInput.rawImage,
                                                     sample=self.dataInput.sample,
                                                     experimentSetup=self.dataInput.experimentSetup,
                                                     rawImageSize=self.dataInput.rawImageSize,
                                                     normalizedImage=self.dataInput.normalizedImage,
                                                     integratedCurve=self.dataInput.integratedCurve,
                                                     runId=self.dataInput.runId,
                                                     frameId=self.dataInput.frameId)
        self.edPluginProcessOneFile = self.loadPlugin(self.strControlledPluginProcessOneFile)
        self.edPluginProcessOneFile.dataInput = xsdIn
        self.edPluginProcessOneFile.connectSUCCESS(self.doSuccessProcessOneFile)
        self.edPluginProcessOneFile.connectFAILURE(self.doFailureProcessOneFile)
        self.edPluginProcessOneFile.executeSynchronous()

        if self.isFailure():
            return

        xsdIn = XSDataInputDatcmp(inputCurve=[XSDataFile(XSDataString(self.hplc_run.first_curve)),
                                              XSDataFile(XSDataString(self.curve))])
        self.edPluginDatCmp = self.loadPlugin(self.strControlledPluginDatCmp)
        self.edPluginDatCmp.dataInput = xsdIn
        self.edPluginDatCmp.connectSUCCESS(self.doSuccessDatCmp)
        self.edPluginDatCmp.connectFAILURE(self.doFailureDatCmp)
        self.edPluginDatCmp.executeSynchronous()

        if self.isFailure() or self.isBuffer:
            return


        #######################
        # # DatOp subtraction ##
        #######################

        if self.dataInput.subtractedCurve is not None:
            self.subtracted = self.dataInput.subtractedCurve.path.value
        else:
            self.subtracted = os.path.splitext(self.curve)[0] + "_sub.dat"

        Isub = self.intensity - self.hplc_run.buffer_I
        StdErr = numpy.sqrt(self.stdError * self.stdError + \
                            self.hplc_run.buffer_Stdev * self.hplc_run.buffer_Stdev)

        with open(self.subtracted, "w") as outfile:
            numpy.savetxt(outfile, numpy.vstack((self.hplc_run.q, Isub, StdErr)).T)
        self.xsDataResult.subtractedCurve = XSDataFile(XSDataString(self.subtracted))
        self.frame.subtracted = self.subtracted

        if self.subtracted and os.path.exists(self.subtracted):
            self.edPluginAutoRg = self.loadPlugin(self.strControlledPluginAutoRg)
            self.edPluginAutoRg.dataInput = XSDataInputAutoRg(inputCurve=[XSDataFile(XSDataString(self.subtracted))])
            self.edPluginAutoRg.connectSUCCESS(self.doSuccessAutoRg)
            self.edPluginAutoRg.connectFAILURE(self.doFailureAutoRg)
            self.edPluginAutoRg.executeSynchronous()
Esempio n. 7
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginBioSaxsSmartMergev1_1.process")

        xsdwf = XSDataInputWaitMultiFile(timeOut=XSDataTime(30),
                                        expectedSize=XSDataInteger(10000),
                                        expectedFile=[XSDataFile(i.path) for i in self.lstInput])
        self.__edPluginExecWaitFile.setDataInput(xsdwf)
        self.__edPluginExecWaitFile.connectFAILURE(self.doFailureExecWait)
        self.__edPluginExecWaitFile.connectSUCCESS(self.doSuccessExecWait)
        self.__edPluginExecWaitFile.executeSynchronous()
        if self.isFailure():
            return
        if len(self.lstInput) == 1:
            shutil.copyfile(self.lstInput[0].path.value, self.dataInput.mergedCurve.path.value)
        else:
            self.lstMerged = []
            if (self.absoluteFidelity is not None) or (self.relativeFidelity is not None):
                if self.absoluteFidelity is not None :
                    for idx, oneFile in enumerate(self.lstInput[1:]):
                        self.DEBUG("Calculating similarity of 0 and %s" % idx)
                        edPluginExecAbsoluteFidelity = self.loadPlugin(self.__strControlledPluginDatcmp)
                        xsd = XSDataInputDatcmp(inputCurve=[self.lstInput[0], oneFile])
                        edPluginExecAbsoluteFidelity.setDataInput(xsd)
                        edPluginExecAbsoluteFidelity.connectFAILURE(self.doFailureExecDatcmp)
                        edPluginExecAbsoluteFidelity.connectSUCCESS(self.doSuccessExecDatcmp)
                        edPluginExecAbsoluteFidelity.execute()
                if (self.relativeFidelity is not None):
                    if (self.absoluteFidelity is  None):
                        self.DEBUG("Calculating similarity of 0 and 1")
                        edPluginExecAbsoluteFidelity = self.loadPlugin(self.__strControlledPluginDatcmp)
                        xsd = XSDataInputDatcmp(inputCurve=[self.lstInput[0], self.lstInput[1] ])
                        edPluginExecAbsoluteFidelity.setDataInput(xsd)
                        edPluginExecAbsoluteFidelity.connectFAILURE(self.doFailureExecDatcmp)
                        edPluginExecAbsoluteFidelity.connectSUCCESS(self.doSuccessExecDatcmp)
                        edPluginExecAbsoluteFidelity.execute()
                    if (len(self.lstInput) > 2):
                        for idx, oneFile in enumerate(self.lstInput[2:]):
                            self.DEBUG("Calculating similarity of %s and %s" % (idx, idx + 1))
                            edPluginExecRelativeFidelity = self.loadPlugin(self.__strControlledPluginDatcmp)
                            xsd = XSDataInputDatcmp(inputCurve=[self.lstInput[idx + 1], oneFile])
                            edPluginExecRelativeFidelity.setDataInput(xsd)
                            edPluginExecRelativeFidelity.connectFAILURE(self.doFailureExecDatcmp)
                            edPluginExecRelativeFidelity.connectSUCCESS(self.doSuccessExecDatcmp)
                            edPluginExecRelativeFidelity.execute()
            self.synchronizePlugins()

            for idx, oneFile in enumerate(self.lstInput):
                if idx == 0:
                    self.lstMerged.append(oneFile)
                elif (self.absoluteFidelity is not None) and (self.relativeFidelity is not None):
                    if (idx - 1, idx) not in self.dictSimilarities:
                        self.ERROR("dict missing %i,%i: \n" % (idx - 1, idx) + "\n".join([ "%s: %s" % (key, self.dictSimilarities[key]) for key in self.dictSimilarities]))
                    if (0, idx) not in self.dictSimilarities:
                        self.ERROR("dict missing %i,%i: \n" % (0, idx) + "\n".join([ "%s: %s" % (key, self.dictSimilarities[key]) for key in self.dictSimilarities]))

                    if (self.dictSimilarities[(0, idx)] >= self.absoluteFidelity) and (self.dictSimilarities[(idx - 1, idx)] >= self.relativeFidelity):
                        self.lstMerged.append(oneFile)
                    else:
                        break
                elif (self.absoluteFidelity is not None) :
                    if (0, idx) not in self.dictSimilarities:
                        self.ERROR("dict missing %i,%i: \n" % (0, idx) + "\n".join([ "%s: %s" % (key, self.dictSimilarities[key]) for key in self.dictSimilarities]))

                    if (self.dictSimilarities[(0, idx)] >= self.absoluteFidelity):
                        self.lstMerged.append(oneFile)
                    else:
                        break
                elif (self.relativeFidelity is not None) :
                    if (idx - 1, idx) not in self.dictSimilarities:
                        self.ERROR("dict missing %i,%i: \n" % (idx - 1, idx) + "\n".join([ "%s: %s" % (key, self.dictSimilarities[key]) for key in self.dictSimilarities]))

                    if (self.dictSimilarities[(idx - 1, idx)] >= self.relativeFidelity):
                        self.lstMerged.append(oneFile)
                    else:
                        break
                else:
                    self.lstMerged.append(oneFile)
            self.lstMerged.sort(cmp)
            if len(self.lstMerged) != len(self.lstInput):
                self.strRadiationDamage = "Radiation damage detected, merged %i curves" % len(self.lstMerged)
                self.WARNING(self.strRadiationDamage)
                self.lstSummary.append("WARNING: " + self.strRadiationDamage)
            self.lstSummary.append("Merging files: " + " ".join([os.path.basename(i.path.value) for i in self.lstMerged]))
            if len(self.lstMerged) == 1:
                shutil.copyfile(self.lstMerged[0].path.value, self.dataInput.mergedCurve.path.value)
            else:
                self.__edPluginExecDataver = self.loadPlugin(self.__strControlledPluginDataver)
                xsd = XSDataInputDataver(inputCurve=self.lstMerged)
                #outputCurve=self.dataInput.mergedCurve,
                self.__edPluginExecDataver.setDataInput(xsd)
                self.__edPluginExecDataver.connectSUCCESS(self.doSuccessExecDataver)
                self.__edPluginExecDataver.connectFAILURE(self.doFailureExecDataver)
                self.__edPluginExecDataver.executeSynchronous()

            if self.isFailure():
                return
            self.__edPluginExecAutoRg = self.loadPlugin(self.__strControlledPluginAutoRG)
            xsd = XSDataInputAutoRg(inputCurve=[self.dataInput.mergedCurve])
            self.__edPluginExecAutoRg.setDataInput(xsd)
            self.__edPluginExecAutoRg.connectSUCCESS(self.doSuccessExecAutoRg)
            self.__edPluginExecAutoRg.connectFAILURE(self.doFailureExecAutoRg)
            self.__edPluginExecAutoRg.executeSynchronous()
Esempio n. 8
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginAutoSubv1_0.process")

        basename = os.path.splitext(os.path.basename(self.sampleCurve))[0]
        self.bestBuffer = os.path.join(self.outdir,
                                       "%s_bestbuffer.dat" % basename)
        self.averBuffer = os.path.join(self.outdir,
                                       "%s_averbuffer.dat" % basename)
        for idx, name in enumerate(self.buffers):
            copy(name,
                 os.path.join(self.outdir, "%s_buf%i.dat" % (basename, idx)))
        if len(self.buffers) == 1:
            self.actualBestBuffer = self.buffers[0]
        else:
            self.__edPluginDataver.dataInput = XSDataInputDataver(
                inputCurve=self.dataInput.buffers,
                outputCurve=XSDataFile(XSDataString(self.averBuffer)))
            self.__edPluginDataver.connectSUCCESS(self.doSuccessExecDataver)
            self.__edPluginDataver.connectFAILURE(self.doFailureExecDataver)
            self.__edPluginDataver.execute()

            if len(self.buffers) == 2:
                edPluginDatcmp = self.loadPlugin(self.__strPluginDatcmp)
                edPluginDatcmp.dataInput = XSDataInputDatcmp(
                    inputCurve=self.dataInput.buffers)
                edPluginDatcmp.connectSUCCESS(self.doSuccessExecDatcmp)
                edPluginDatcmp.connectFAILURE(self.doFailureExecDatcmp)
                edPluginDatcmp.executeSynchronous()
                if self.isFailure() or (self.fidelity is None):
                    return
                if self.fidelity < self.BUFFER_SIMILARITY:  #buffer are not the same: keeping the one with lowest Rg/I0
                    edpluginRg = self.loadPlugin(self.__strPluginAutoRg)
                    edpluginRg.dataInput = XSDataInputAutoRg(
                        inputCurve=self.dataInput.buffers)
                    edpluginRg.connectSUCCESS(self.doSuccessExecAutoRg)
                    edpluginRg.connectFAILURE(self.doFailureExecAutoRg)
                    edpluginRg.executeSynchronous()
                    self.actualBestBuffer = self.dictRg.keys()[
                        self.dictRg.values().index(min(self.dictRg.values()))]
                else:
                    self.actualBestBuffer = self.averBuffer
            else:
                self.synchronizePlugins()
                strError = "You should specify exactly 2 buffers for guessing best buffer, I got: " + ", ".join(
                    self.buffers)
                self.WARNING(strError)
                self.lstProcessLog.append(strError)
                self.actualBestBuffer = self.averBuffer

        copy(self.actualBestBuffer, self.bestBuffer)
        self.lstProcessLog.append("Best buffer is %s" % self.actualBestBuffer)
        if self.isFailure() or not os.path.exists(
                self.bestBuffer) or not os.path.exists(self.sampleCurve):
            return
        edPluginDatop = self.loadPlugin(self.__strPluginDatop)
        edPluginDatop.dataInput = XSDataInputDatop(
            operation=XSDataString("SUB"),
            outputCurve=XSDataFile(XSDataString(self.subtractedCurve)),
            inputCurve=[
                XSDataFile(XSDataString(self.sampleCurve)),
                XSDataFile(XSDataString(self.bestBuffer))
            ])
        edPluginDatop.connectSUCCESS(self.doSuccessExecDatop)
        edPluginDatop.connectFAILURE(self.doFailureExecDatop)
        edPluginDatop.executeSynchronous()

        if self.isFailure() or not os.path.exists(self.subtractedCurve):
            return
        self.headers = self.parseHeaders(self.sampleCurve)
        edpluginRg = self.loadPlugin(self.__strPluginAutoRg)
        edpluginRg.dataInput = XSDataInputAutoRg(
            inputCurve=[XSDataFile(XSDataString(self.subtractedCurve))])
        edpluginRg.connectSUCCESS(self.doSuccessExecAutoRg)
        edpluginRg.connectFAILURE(self.doFailureExecAutoRg)
        edpluginRg.executeSynchronous()
Esempio n. 9
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginAutoSubv1_1.process")

        basename = os.path.splitext(os.path.basename(self.sampleCurve))[0]
        self.bestBuffer = os.path.join(self.outdir,
                                       "%s_bestbuffer.dat" % basename)
        self.averBuffer = os.path.join(self.outdir,
                                       "%s_averbuffer.dat" % basename)
        self.data = numpy.loadtxt(self.sampleCurve)
        for idx, name in enumerate(self.buffers):
            copy(name,
                 os.path.join(self.outdir, "%s_buf%i.dat" % (basename, idx)))
        if len(self.buffers) == 1:
            self.actualBestBuffer = self.buffers[0]
            self.bestBufferType = str(self.actualBestBuffer)
            self.bufferIntensity = numpy.loadtxt(self.buffers[0])
        else:
            #             self.__edPluginDataver.dataInput = XSDataInputDataver(inputCurve=self.dataInput.buffers,
            #                                                                   outputCurve=XSDataFile(XSDataString(self.averBuffer)))
            #             self.__edPluginDataver.connectSUCCESS(self.doSuccessExecDataver)
            #             self.__edPluginDataver.connectFAILURE(self.doFailureExecDataver)
            #             self.__edPluginDataver.execute()

            if len(self.buffers) == 2:
                self.bufferData[self.buffers[0]] = numpy.loadtxt(
                    self.buffers[0])
                self.bufferData[self.buffers[1]] = numpy.loadtxt(
                    self.buffers[1])

                #Average
                AverageIntensity = (self.bufferData[self.buffers[0]][:, 1] +
                                    self.bufferData[self.buffers[1]][:, 1]) / 2
                StdErr = numpy.sqrt((self.bufferData[self.buffers[0]][:,2]  * self.bufferData[self.buffers[0]][:,2]+ \
                        self.bufferData[self.buffers[1]][:,2]  * self.bufferData[self.buffers[1]][:,2])/2)
                self.averageBuffer = numpy.vstack(
                    (self.bufferData[self.buffers[0]][:, 0], AverageIntensity,
                     StdErr)).T
                with open(self.averBuffer, "w") as outfile:
                    numpy.savetxt(outfile, self.averageBuffer)

                self.datcmp(self.bufferData[self.buffers[0]],
                            self.bufferData[self.buffers[1]])
                #                 edPluginDatcmp = self.loadPlugin(self.__strPluginDatcmp)
                #                 edPluginDatcmp.dataInput = XSDataInputDatcmp(inputCurve=self.dataInput.buffers)
                #                 edPluginDatcmp.connectSUCCESS(self.doSuccessExecDatcmp)
                #                 edPluginDatcmp.connectFAILURE(self.doFailureExecDatcmp)
                #                 edPluginDatcmp.executeSynchronous()
                if self.isFailure() or (self.fidelity is None):
                    return
                if self.fidelity < self.BUFFER_SIMILARITY:
                    print "Different buffers"
                    # buffer are not the same: keeping the one with lowest Rg/I0 for the subtraction
                    #data = numpy.loadtxt(self.sampleCurve.path.value)
                    for buff in self.buffers:
                        tempName = os.path.splitext(buff)[0] + '.sub'
                        self.doSubtract(self.data, self.bufferData[buff],
                                        tempName)
                        #                         Isub = data [:,1] - self.bufferData[buff][:,1]
                        #                         StdErr = numpy.sqrt(data[:,2] * data[:,2] + \
                        #                         self.bufferData[buff][:,2] * self.bufferData[buff][:,2])
                        #
                        #                         with open(tempName, "w") as outfile:
                        #                             numpy.savetxt(outfile, numpy.vstack((data[:,0], Isub, StdErr)).T)

                        #                         edPluginDatop = self.loadPlugin(self.__strPluginDatop)
                        #                         edPluginDatop.dataInput = XSDataInputDatop(operation=XSDataString("SUB"),
                        #                                    outputCurve=XSDataFile(XSDataString(os.path.splitext(buff)[0] + '.sub')),
                        #                                    inputCurve=[XSDataFile(XSDataString(self.sampleCurve)), XSDataFile(XSDataString(buff))])
                        #                         edPluginDatop.connectSUCCESS(self.doSuccessExecDatop)
                        #                         edPluginDatop.connectFAILURE(self.doFailureExecDatop)
                        #                         edPluginDatop.executeSynchronous()
                        self.tempSub += [XSDataFile(XSDataString(tempName))]

                    edpluginRg = self.loadPlugin(self.__strPluginAutoRg)
                    edpluginRg.dataInput = XSDataInputAutoRg(
                        inputCurve=self.tempSub)
                    edpluginRg.connectSUCCESS(self.doSuccessExecAutoRg)
                    edpluginRg.connectFAILURE(self.doFailureExecAutoRg)
                    edpluginRg.executeSynchronous()
                    actualBestTmp = self.dictRg.keys()[
                        self.dictRg.values().index(min(self.dictRg.values()))]
                    self.actualBestBuffer = os.path.splitext(
                        actualBestTmp)[0] + '.dat'
                    self.bestBufferType = str(self.actualBestBuffer)
                    self.bufferIntensity = self.bufferData[
                        self.actualBestBuffer]
                else:
                    print "similar buffers"
                    self.actualBestBuffer = self.averBuffer
                    self.bestBufferType = "average"
                    self.bufferIntensity = self.averageBuffer
                print self.actualBestBuffer
            else:
                self.synchronizePlugins()
                strError = "You should specify exactly 2 buffers for guessing best buffer, I got: " + ", ".join(
                    self.buffers)
                self.WARNING(strError)
                self.lstProcessLog.append(strError)
                self.actualBestBuffer = self.averBuffer
                self.bufferIntensity = self.averageBuffer

        copy(self.actualBestBuffer, self.bestBuffer)
        print "copied to ", self.bestBuffer
        self.lstProcessLog.append("Best buffer is %s" % self.actualBestBuffer)
        if self.isFailure() or not os.path.exists(
                self.bestBuffer) or not os.path.exists(self.sampleCurve):
            return
#         edPluginDatop = self.loadPlugin(self.__strPluginDatop)
#         edPluginDatop.dataInput = XSDataInputDatop(operation=XSDataString("SUB"),
#                                outputCurve=XSDataFile(XSDataString(self.subtractedCurve)),
#                                inputCurve=[XSDataFile(XSDataString(self.sampleCurve)), XSDataFile(XSDataString(self.bestBuffer))])
#         edPluginDatop.connectSUCCESS(self.doSuccessExecDatop)
#         edPluginDatop.connectFAILURE(self.doFailureExecDatop)
#         edPluginDatop.executeSynchronous()
        self.doSubtract(self.data, self.bufferIntensity, self.subtractedCurve)

        if self.isFailure() or not os.path.exists(self.subtractedCurve):
            return
        self.headers = self.parseHeaders(self.sampleCurve)
        edpluginRg = self.loadPlugin(self.__strPluginAutoRg)
        edpluginRg.dataInput = XSDataInputAutoRg(
            inputCurve=[XSDataFile(XSDataString(self.subtractedCurve))])
        edpluginRg.connectSUCCESS(self.doSuccessExecAutoRg)
        edpluginRg.connectFAILURE(self.doFailureExecAutoRg)
        edpluginRg.executeSynchronous()
Esempio n. 10
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginControlSaxsAnalysisv1_1.process")
        if self.autoRg is None:
            self.edPluginAutoRg = self.loadPlugin(self.cpAutoRg)
            self.edPluginAutoRg.dataInput = XSDataInputAutoRg(inputCurve=[self.dataInput.scatterCurve])
            self.edPluginAutoRg.connectSUCCESS(self.doSuccessRg)
            self.edPluginAutoRg.connectFAILURE(self.doFailureRg)
            self.edPluginAutoRg.executeSynchronous()

        if self.autoRg is None:
            self.setFailure()

        if self.isFailure():
            return

        self.edPluginDatGnom = self.loadPlugin(self.cpDatGnom)
        self.edPluginDatGnom.dataInput = XSDataInputDatGnom(inputCurve=self.dataInput.scatterCurve,
                                             output=XSDataFile(XSDataString(self.gnomFile)),
                                             rg=self.autoRg.rg,
                                             skip=XSDataInteger(self.autoRg.firstPointUsed.value - 1))
        self.edPluginDatGnom.connectSUCCESS(self.doSuccessGnom)
        self.edPluginDatGnom.connectFAILURE(self.doFailureGnom)
        self.edPluginDatGnom.executeSynchronous()

        if self.gnom is None:
            return

        self.edPluginDatPorod = self.loadPlugin(self.cpDatPorod)
        self.edPluginDatPorod.dataInput = XSDataInputDatPorod(gnomFile=XSDataFile(XSDataString(self.gnomFile)))
        self.edPluginDatPorod.connectSUCCESS(self.doSuccessPorod)
        self.edPluginDatPorod.connectFAILURE(self.doFailurePorod)
        self.edPluginDatPorod.execute()

        if self.dataInput.graphFormat:
            ext = self.dataInput.graphFormat.value
            if not ext.startswith("."):
                ext = "." + ext
            plt = sys.modules.get("matplotlib.pyplot")
            try:
                guinierfile = os.path.join(self.getWorkingDirectory(), os.path.basename(self.scatterFile).split(".")[0] + "-Guinier" + ext)
#                 guinierplot = guinierPlot(self.scatterFile, unit="nm",
#                                        filename=guinierfile, format=ext[1:])
                guinierplot = guinierPlot(self.scatterFile, unit="nm",
                                       filename=guinierfile, format=ext[1:], first_point=self.autoRg.firstPointUsed.value,
                                       last_point=self.autoRg.lastPointUsed.value)
                guinierplot.clf()
                if plt:
                    plt.close(guinierplot)
            except Exception as error:
                self.ERROR("EDPluginControlSaxsAnalysisv1_1 in guinierplot: %s" % error)
            else:
                self.xsDataResult.guinierPlot = XSDataFile(XSDataString(guinierfile))

            try:
                kratkyfile = os.path.join(self.getWorkingDirectory(), os.path.basename(self.scatterFile).split(".")[0] + "-Kratky" + ext)
                kratkyplot = kartkyPlot(self.scatterFile, unit="nm",
                                           filename=kratkyfile, format=ext[1:])
                kratkyplot.clf()
                if plt:
                    plt.close(kratkyplot)
            except Exception as error:
                self.ERROR("EDPluginControlSaxsAnalysisv1_1 in kratkyplot: %s" % error)
            else:
                self.xsDataResult.kratkyPlot = XSDataFile(XSDataString(kratkyfile))
            if self.autoRg is not None:    
                if self.autoRg.i0.value > 0 and self.autoRg.rg.value > 0:
                    try:
                        kratkyRgfile = os.path.join(self.getWorkingDirectory(), os.path.basename(self.scatterFile).split(".")[0] + "-KratkyRg" + ext)
                        kratkyRgplot = kratkyRgPlot(self.scatterFile, self.autoRg.i0.value, self.autoRg.rg.value,
                                                   filename=kratkyRgfile, format=ext[1:])
                        kratkyRgplot.clf()
                        if plt:
                            plt.close(kratkyRgplot)
                    except Exception as error:
                        self.ERROR("EDPluginControlSaxsAnalysisv1_1 in kratkyRgplot: %s" % error)
                    else:
                        self.xsDataResult.kratkyRgPlot = XSDataFile(XSDataString(kratkyRgfile))       
            if self.autoRg is not None and self.rti is not None:            
                if self.autoRg.i0.value > 0 and self.rti.vc.value > 0:
                    try:
                        kratkyVcfile = os.path.join(self.getWorkingDirectory(), os.path.basename(self.scatterFile).split(".")[0] + "-KratkyVc" + ext)
                        kratkyVcplot = kratkyVcPlot(self.scatterFile, self.autoRg.i0.value, self.rti.vc.value,
                                                        filename=kratkyVcfile, format=ext[1:])
                        kratkyVcplot.clf()
                        if plt:
                            plt.close(kratkyVcplot)
                    except Exception as error:
                        self.ERROR("EDPluginControlSaxsAnalysisv1_1 in kratkyVcplot: %s" % error)
                    else:
                        self.xsDataResult.kratkyVcPlot = XSDataFile(XSDataString(kratkyVcfile))
            try:
                scatterplotfile = os.path.join(self.getWorkingDirectory(), os.path.basename(self.scatterFile).split(".")[0] + "-scattering" + ext)
                scatterplot = scatterPlot(self.scatterFile, unit="nm", gnomfile=self.gnomFile,
                                           filename=scatterplotfile, format=ext[1:])
                scatterplot.clf()
                if plt:
                    plt.close(scatterplot)
            except Exception as error:
                self.ERROR("EDPluginControlSaxsAnalysisv1_1 in scatterplot: %s" % error)
            else:
                self.xsDataResult.scatterPlot = XSDataFile(XSDataString(scatterplotfile))
            try:
                densityplotfile = os.path.join(self.getWorkingDirectory(), os.path.basename(self.scatterFile).split(".")[0] + "-density" + ext)
                densityplot = densityPlot(gnomfile=self.gnomFile, unit="nm",
                                           filename=densityplotfile, format=ext[1:])
                densityplot.clf()
                if plt:
                    plt.close(densityplot)
            except Exception as error:
                self.ERROR("EDPluginControlSaxsAnalysisv1_1 in scatterplot: %s" % error)
            else:
                self.xsDataResult.densityPlot = XSDataFile(XSDataString(densityplotfile))
            gc.collect()
        self.synchronizePlugins()
Esempio n. 11
0
    def process(self, _edObject=None):
        EDPluginControl.process(self)
        self.DEBUG("EDPluginBioSaxsHPLCv1_5.process")

        xsdIn = XSDataInputBioSaxsProcessOneFilev1_0(rawImage=self.dataInput.rawImage,
                                                     sample=self.dataInput.sample,
                                                     experimentSetup=self.dataInput.experimentSetup,
                                                     rawImageSize=self.dataInput.rawImageSize,
                                                     normalizedImage=self.dataInput.normalizedImage,
                                                     integratedCurve=self.dataInput.integratedCurve,
                                                     runId=self.dataInput.runId,
                                                     frameId=self.dataInput.frameId)
        self.edPluginProcessOneFile = self.loadPlugin(self.strControlledPluginProcessOneFile)
        self.edPluginProcessOneFile.dataInput = xsdIn
        self.edPluginProcessOneFile.connectSUCCESS(self.doSuccessProcessOneFile)
        self.edPluginProcessOneFile.connectFAILURE(self.doFailureProcessOneFile)
        self.edPluginProcessOneFile.executeSynchronous()

        if self.isFailure():
            return
        if self.hplc_run.first_curve == self.curve:
            return
#         xsdIn = XSDataInputDatcmp(inputCurve=[XSDataFile(XSDataString(self.hplc_run.first_curve)),
#                                               XSDataFile(XSDataString(self.curve))])
#         self.edPluginDatCmp = self.loadPlugin(self.strControlledPluginDatCmp)
#         self.edPluginDatCmp.dataInput = xsdIn
#         self.edPluginDatCmp.connectSUCCESS(self.doSuccessDatCmp)
#         self.edPluginDatCmp.connectFAILURE(self.doFailureDatCmp)
#         self.edPluginDatCmp.executeSynchronous()

        self.datcmp(self.hplc_run.firstCurveIntensity, self.intensity)

        if self.isFailure() or self.isBuffer:

            return


        #######################
        # # DatOp subtraction ##
        #######################

        if self.dataInput.subtractedCurve is not None:
            self.subtracted = self.dataInput.subtractedCurve.path.value
        else:
            self.subtracted = os.path.splitext(self.curve)[0] + "_sub.dat"

        Isub = self.intensity - self.hplc_run.buffer_I
        StdErr = numpy.sqrt(self.stdError * self.stdError + \
                            self.hplc_run.buffer_Stdev * self.hplc_run.buffer_Stdev)
        self.SAXSdata= numpy.vstack((self.hplc_run.q, Isub, StdErr)).T
        with open(self.subtracted, "w") as outfile:
            #print "Writing file"
            numpy.savetxt(outfile, self.SAXSdata)
        self.xsDataResult.subtractedCurve = XSDataFile(XSDataString(self.subtracted))
        self.frame.subtracted = self.subtracted
        
        if self.subtracted and os.path.exists(self.subtracted) and self.ATSASRg:
            self.edPluginAutoRg = self.loadPlugin(self.strControlledPluginAutoRg)
            self.edPluginAutoRg.dataInput = XSDataInputAutoRg(inputCurve=[XSDataFile(XSDataString(self.subtracted))])
            self.edPluginAutoRg.connectSUCCESS(self.doSuccessAutoRg)
            self.edPluginAutoRg.connectFAILURE(self.doFailureAutoRg)
            self.edPluginAutoRg.executeSynchronous()
        try:
            #print self.subtracted, autoRg(self.SAXSdata)
            rg_result = autoRg(self.SAXSdata)
            self.frame.RgF, self.frame.Rg_StdevF, self.frame.I0F, self.frame.I0_StdevF, self.frame.Rg_imin, self.frame.Rg_imax  =   rg_result[:6]
        except InsufficientDataError:
            print "Not enough usable data to run autorg"
        except SystemError as SE:
            print "System Error"
            print SE
        except Exception as Err:
            print Err
            raise 
        else: 
            if self.ATSASRg == False:
                self.frame.Rg = max(0,self.frame.RgF)
                self.frame.Rg_Stdev =  max(0,self.frame.Rg_StdevF)
                self.frame.I0 =  max(0,self.frame.I0F)
                self.frame.I0_Stdev =  max(0,self.frame.I0_StdevF)
                self.frame.quality = 0

                """
                Calculate the invariants Vc and Qr from the Rambo&Tainer 2013 Paper,
                also the the mass estimate based on Qr for proteins
                """
            if self.subtracted and os.path.exists(self.subtracted):
                self.subtracted_data = numpy.loadtxt(self.subtracted)
                if self.subtracted_data is not None and\
                    self.frame.RgF and self.frame.Rg_StdevF and self.frame.I0F and self.frame.I0_StdevF:
                    dictRTI = RamboTainerInvariant(self.subtracted_data, self.frame.RgF,
                                                   self.frame.Rg_StdevF, self.frame.I0F,
                                                   self.frame.I0_StdevF, self.frame.Rg_imin)
    #             {'Vc': vc[0], 'dVc': vc[1], 'Qr': qr, 'dQr': dqr, 'mass': mass, 'dmass': dmass}
                    self.frame.Vc = dictRTI.get("Vc")
                    self.frame.Vc_Stdev = dictRTI.get("dVc")
                    self.frame.Qr = dictRTI.get("Qr")
                    self.frame.Qr_Stdev = dictRTI.get("dQ")
                    self.frame.mass = dictRTI.get("mass")
                    self.frame.mass_Stdev = dictRTI.get("dmass")
                    xsdRTI = XSDataRamboTainer(vc=XSDataDouble(self.frame.Vc),
                                               qr=XSDataDouble(self.frame.Qr),
                                               mass=XSDataDouble(self.frame.mass),
                                               dvc=XSDataDouble(self.frame.Vc_Stdev),
                                               dqr=XSDataDouble(self.frame.Qr_Stdev),
                                               dmass=XSDataDouble(self.frame.mass_Stdev))
                    self.xsDataResult.rti = xsdRTI