class BsxImageDataProxy(CObjectBase): signals = [Signal('new_curves_data'), Signal('erase_curve')] slots = [Slot('load_files')] def init(self): logging.debug("<BsxImageDataProxy> Created") def load_files(self, filenames): if type(filenames) is types.ListType: for filename in filenames: try: self.load_single_file(filename) except: logging.debug("Problem opening file %s", filename) else: try: self.load_single_file(filenames) except: logging.debug(traceback.format_exc()) logging.debug("Problem opening file %s", filenames) def load_single_file(self, filename): if not os.path.exists(filename): return data = numpy.loadtxt(filename) self.emit('erase_curve', filename) #TODO: DEBUG # Clean up to remove 0.0 data that cause problem in display in Logarithmic scale cleanList = [x if x != 0.0 else 0.0001 for x in list(data[:, 1])] self.emit('new_curves_data', {filename: [list(data[:, 0]), cleanList]}) def erase_curves(self): self.emit('erase_curve', None)
class Login(CObjectBase): signals = [Signal("loggedIn")] slots = [Slot("loginTry")] def __init__(self, *args, **kwargs): CObjectBase.__init__(self, *args, **kwargs) def init(self): pass def loginTry(self, userAndPassword): print "Got a try of login"
class VacPump(CObjectBase): signals = [] slots = [ Slot("exftclose"), Slot("exscclose"), Slot("vacftclose"), Slot("vacscclose"), Slot("vacftopen"), Slot("vacscopen"), Slot("rv5open"), Slot("rv6open"), Slot("getValveThreshold"), Slot("getPumpThreshold"), Slot("getUSThreshold"), Slot("getFTTimeout"), Slot("getSCTimeout"), Slot("getFTVacuum"), Slot("getSCVacuum"), Slot("getUSVacuum") ] def __init__(self, *args, **kwargs): CObjectBase.__init__(self, *args, **kwargs) def init(self): pass def exftclose(self): self.commands["exftclose"]() def exscclose(self): self.commands["exscclose"]() def vacftclose(self): self.commands["vacftclose"]() def vacscclose(self): self.commands["vacscclose"]() def vacftopen(self): self.commands["vacftopen"]() def vacscopen(self): self.commands["vacscopen"]() def rv5open(self): self.commands["rv5open"]() def rv6open(self): self.commands["rv6open"]() def getValveThreshold(self): channel = self.channels.get("valveThreshold") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "0.0" else: return self.channels.get("valveThreshold").value() def getPumpThreshold(self): channel = self.channels.get("pumpThreshold") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "0.0" else: return self.channels.get("pumpThreshold").value() def getUSThreshold(self): channel = self.channels.get("usThreshold") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "0.0" else: return self.channels.get("usThreshold").value() def getFTTimeout(self): channel = self.channels.get("ftTimeout") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "0" else: return self.channels.get("ftTimeout").value() def getSCTimeout(self): channel = self.channels.get("scTimeout") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "0" else: return self.channels.get("scTimeout").value() def getFTVacuum(self): channel = self.channels.get("FTVacuum") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "-1.0" else: return self.channels.get("FTVacuum").value() def getSCVacuum(self): channel = self.channels.get("SCVacuum") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "-1.0" else: return self.channels.get("SCVacuum").value() def getUSVacuum(self): channel = self.channels.get("USVacuum") if channel is None: logging.error("Tried and failed to connect to EXP spec session") return "-1.0" else: return self.channels.get("USVacuum").value()
class BsxAttenuators(CObjectBase): signals = [ Signal("attenuatorsStateChanged"), Signal("attenuatorsFactorChanged") ] slots = [Slot("toggleFilter"), Slot("setTransmission")] def __init__(self, *args, **kwargs): CObjectBase.__init__(self, *args, **kwargs) def init(self): self.__attenuatorsState = None self.__attenuatorsFactor = None self.__attenuatorsList = [] for data_elt in self.config["//data"]: key = data_elt.attrib["name"] bits = map(int, data_elt.attrib['bits'].split()) for b in bits: self.__attenuatorsList.append([key, b]) # the list contains [label, bits] lists # sort by bits self.__attenuatorsList.sort(key=lambda x: x[1]) # Set up all channels self.channels["attenuatorsState_oh"].connect( "update", self.attenuatorsStateChanged) self.channels["attenuatorsState_exp"].connect( "update", self.attenuatorsStateChanged) self.channels["attenuatorsFactor_oh"].connect( "update", self.attenuatorsFactorChanged) self.channels["attenuatorsFactor_exp"].connect( "update", self.attenuatorsFactorChanged) def connectNotify(self, pValue): try: value = getattr(self, pValue[:-7]).value() getattr(self, pValue)(value) except: pass def getAttenuatorsList(self): logging.getLogger().debug('is sending attribute list %s', self.__attenuatorsList) if len(self.__attenuatorsList) == 0: return None else: return self.__attenuatorsList def getAttenuatorsState(self): self.__attenuatorsState = self.channels["attenuatorsState_oh"].value() return self.__attenuatorsState def getAttenuatorsFactor(self): self.__attenuatorsFactor = self.channels["attenuatorsFactor_oh"].value( ) return self.__attenuatorsFactor # ============================================= # COMMANDS # ============================================= def toggleFilter(self, pValue): self.commands["toggleFilter"](pValue) def setTransmission(self, pValue): self.commands["setTransmission"](pValue) # ============================================= # CHANNELS # ============================================= def attenuatorsStateChanged(self, pValue): self.__attenuatorsState = int(pValue) self.emit("attenuatorsStateChanged", self.__attenuatorsState) def attenuatorsFactorChanged(self, pValue): self.__attenuatorsFactor = int(pValue) self.emit("attenuatorsFactorChanged", self.__attenuatorsFactor)
class BiosaxsClient(CObjectBase): signals = [Signal("onSuccess"), Signal("onError")] slots = [ Slot("getExperimentNamesByProposalCodeNumber"), Slot("setUser"), Slot("getRobotXMLByExperimentId") ] def init(self): self.client = None #Prod machine self.URL = 'http://ispyb.esrf.fr:8080/ispyb-ejb3/ispybWS/ToolsForBiosaxsWebService?wsdl' #Test machine #self.URL = 'http://ispyvalid.esrf.fr:8080/ispyb-ejb3/ispybWS/ToolsForBiosaxsWebService?wsdl' #Alejandro's local machine #self.URL = 'http://pcantolinos:8080/ispyb-ejb3/ispybWS/ToolsForBiosaxsWebService?wsdl' print "ISPyB Server: " + self.URL self.selectedExperimentId = None #Login information self.user = None self.password = None self.proposalType = None self.proposalNumber = None self.timeout = 5 self.experiments = None def __initWebservice(self): self.httpAuthenticatedToolsForAutoprocessingWebService = HttpAuthenticated( username=self.user, password=self.password) self.client = Client( self.URL, transport=self.httpAuthenticatedToolsForAutoprocessingWebService, cache=None, timeout=self.timeout) self.experiments = [] self.response = None def setUser(self, user, password, proposalType, proposalNumber): self.user = user #"mx1438" self.password = password #"Rfo4-73" self.proposalType = proposalType self.proposalNumber = proposalNumber #Return list containing [["ExperimentName1", "experimentId1"], ["ExperimentName2", "experimentId2"]] def getExperimentNames(self): # print "------------ Getting experiment Names" experimentNames = [] for experiment in self.experiments: experimentNames.append([ experiment.experiment.name, experiment.experiment.experimentId ]) return experimentNames def getExperimentNamesByProposalCodeNumber(self, code, number): if (self.client is None): self.__initWebservice() response = self.client.service.findExperimentByProposalCode( code, number) self.experiments = [] for experiment in response: self.experiments.append(Experiment(experiment)) experimentNames = self.getExperimentNames() self.emit("onSuccess", "getExperimentNamesByProposalCodeNumber", experimentNames) #self.emit("onSuccess", "getExperimentNamesByProposalCodeNumber", experimentNames) def getPyarchDestination(self): # This happens because I need the experiment ID but because the experiment has not been created yet I have to replace it in the server side # so I will replace /data/pyarch/bm29/%s%s/__ID__ by the good ID if (self.selectedExperimentId is None): self.selectedExperimentId = "__ID__" if (self.URL == 'http://ispyb.esrf.fr:8080/ispyb-ejb3/ispybWS/ToolsForBiosaxsWebService?wsdl' ): return "/data/pyarch/bm29/%s%s/%s" % (self.proposalType, self.proposalNumber, self.selectedExperimentId) return "/data/pyarch/bm29/testing/%s%s/%s" % ( self.proposalType, self.proposalNumber, self.selectedExperimentId) def getSpecimenIdBySampleCode(self, sampleCode): print "[ISPyB] getSpecimenIdBySampleCode " + str(sampleCode) if self.experiment is None: print "[ISPyB] Experiment is None" return None if self.selectedExperimentId is None: print "[ISPyB] Experiment is None" return None for experiment in self.experiments: #print experiment.experiment.experimentId if experiment.experiment.experimentId == self.selectedExperimentId: for sample in experiment.experiment.samples: for specimen in sample.specimen3VOs: if specimen.code == sampleCode: return specimen.specimenId return None # Return an array of samples which a given concentration def getSpecimensByConcentration(self, concentration): print "[ISPyB] getSpecimenByConcentration: " + str(concentration) if self.experiment is None: print "[ISPyB] Experiment is None" return None if self.selectedExperimentId is None: print "[ISPyB] Experiment is None" return None samples = [] for experiment in self.experiments: if experiment.experiment.experimentId == self.selectedExperimentId: for sample in experiment.experiment.samples: if (float(sample.concentration)) == (float(concentration)): samples.append(sample) return samples def getBufferIdByAcronym(self, bufferName): for myBuffer in self.experiment.getBuffers(): if bufferName == myBuffer.acronym: return myBuffer.bufferId return None #It looks for a code in the comments that identifies the measurments # [1] This is a comment # --- # |_ Id def getMeasurementIdByCommentId(self, commentId): try: for experiment in self.experiments: if experiment.experiment.experimentId == self.selectedExperimentId: for sample in experiment.experiment.samples: for specimen in sample.specimen3VOs: if str(specimen.comment).find("[" + str(commentId) + "]") != -1: return specimen.specimenId except: traceback.print_exc() raise Exception return -1 def getMeasurementIdBySampleCodeConcentrationAndSEU( self, sampleCode, concentration, seu, bufferName): try: print "[ISPyB] getMeasurementIdBySampleCodeConcentrationAndSEU " + str( sampleCode) + " " + str(concentration) + " " + str( seu) + " " + str(bufferName) if self.experiment is None: print "[ISPyB] Experiment is None" return None if self.selectedExperimentId is None: print "[ISPyB] Experiment is None" return None bufferId = self.getBufferIdByAcronym(bufferName) print "[ISPyB] bufferId " + str(bufferId) for experiment in self.experiments: #print experiment.experiment.experimentId if experiment.experiment.experimentId == self.selectedExperimentId: samples = self.getSpecimensByConcentration(concentration) for sample in samples: if sample.bufferId == bufferId: for specimen in sample.specimen3VOs: if (float(specimen.exposureTemperature) == float(seu) and (str(specimen.code) == str(sampleCode))): return specimen.specimenId except Exception: print "[ISPyB] error" traceback.print_exc() raise Exception print "[ISPyB] Measurement not found with conc: %s SEU: %s and sampleCode:%s" % ( str(concentration), str(seu), str(sampleCode)) return -1 ### Mode: before, after, sample def saveFrameSet(self, mode, sampleCode, exposureTemperature, storageTemperature, timePerFrame, timeStart, timeEnd, energy, detectorDistance, fileArray, snapshotCapillary, currentMachine, tocollect, pars, specimenId): try: print "[ISPyB] Request for saveFrameSet " + str(mode) + " " + str( sampleCode) if (self.client is None): self.__initWebservice() #specimenId = self.getMeasurementIdBySampleCodeConcentrationAndSEU(sampleCode, concentration, ispybSEUtemperature, bufferName) print "[ISPyB] Specimen: " + str(specimenId) if specimenId is None: specimenId = -1 self.client.service.saveFrame( mode, self.selectedExperimentId, specimenId, sampleCode, exposureTemperature, storageTemperature, timePerFrame, timeStart, timeEnd, energy, detectorDistance, fileArray, snapshotCapillary, currentMachine, str(tocollect), str(pars), pars["beamCenterX"], pars["beamCenterY"], pars["radiationRelative"], pars["radiationAbsolute"], pars["pixelSizeX"], pars["pixelSizeY"], pars["normalisation"], tocollect["transmission"]) except Exception: print "[ISPyB] error", sys.exc_info()[0] #traceback.print_exc() def getPlatesByPlateGroupId(self, plateGroupId, experimentId): plates = [] for experiment in self.experiments: if experiment.experiment.experimentId == experimentId: experimentPlates = experiment.getPlates() for plate in experimentPlates: if plate.plategroup3VO is not None: if plate.plategroup3VO.plateGroupId == plateGroupId: plates.append(plate) return plates def getRobotXMLByExperimentId(self, experimentId): self.selectedExperimentId = experimentId if (self.client is None): self.__initWebservice() for experiment in self.experiments: plates = [] if experiment.experiment.experimentId is experimentId: self.selectedExperimentId = experimentId for plate in experiment.getPlates(): plates.append(plate.samplePlateId) return self.client.service.getRobotXMLByPlateIds( experimentId, plates) return None def getPlateGroupByExperimentId(self, experimentId): self.selectedExperimentId = experimentId for experiment in self.experiments: if experiment.experiment.experimentId == experimentId: print experiment.experiment.experimentId #It works but I don't know how to deserialize in bricks side #return str(experiment.getPlateGroups()) groups = experiment.getPlateGroups() names = [] for group in groups: names.append([group.name, group.plateGroupId]) return names return [] def getRobotXMLByPlateGroupId(self, plateGroupId, experimentId): plates = self.getPlatesByPlateGroupId(plateGroupId, experimentId) ids = [] for plate in plates: ids.append(plate.samplePlateId) xml = self.client.service.getRobotXMLByPlateIds(experimentId, str(ids)) self.emit("onSuccess", "getRobotXMLByPlateGroupId", xml) def setExperimentAborted(self): try: self.updateStatus("ABORTED") except Exception: traceback.print_exc() raise Exception def updateStatus(self, status): try: if (self.client is None): self.__initWebservice() except Exception: print "[ISPyB] It has been not possible to connect with ISPyB. No connection" raise Exception try: if (self.selectedExperimentId is not None): self.client.service.updateStatus(self.selectedExperimentId, status) #If status is inished we compress the folder if status == "FINISHED": #Zipping file zipFilePath = self.getPyarchDestination() + "/" + str( self.selectedExperimentId) + ".zip" temporalPath = "/tmp/" + str( self.selectedExperimentId) + ".zip" self.zipFolder(self.getPyarchDestination(), temporalPath) self.movefile(temporalPath, self.getPyarchDestination()) self.client.service.setDataAcquisitionFilePath( self.selectedExperimentId, zipFilePath) except Exception: traceback.print_exc() raise Exception def zipFolder(self, path, archivename): print "ISPyB: zipping " + path + " on " + archivename myZipFile = zipfile.ZipFile(archivename, 'w') rootlen = len(path) + 1 assert os.path.isdir(path) for base, dirs, files in os.walk(path): for file in files: fn = os.path.join(base, file) myZipFile.write(fn, fn[rootlen:]) myZipFile.close() def movefile(self, afile, destination): try: print "[ISPyB] Moving %s to : %s " % (afile, destination) if not os.path.isdir(destination): print "[ISPyB] Creating directory %s " % (destination) os.makedirs(destination) shutil.move(afile, destination) except IOError as error: print "[ISPyB] Handled error while directory creation in pyarch: %s " % error def copyfile(self, afile, pyarch): try: print "[ISPyB] Copying %s to pyarch: %s " % (afile, pyarch) if not os.path.isdir(pyarch): print "[ISPyB] Creating directory %s " % (pyarch) os.makedirs(pyarch) shutil.copy(afile, pyarch) except IOError as error: print "[ISPyB] Handled error while directory creation in pyarch: %s " % error #def createExperiment( self, proposalCode, proposalNumber, samples, storageTemperature, mode, extraflowTime, experimentType, sourceFile, name ): def createExperiment(self, samples, storageTemperature, mode, extraflowTime, experimentType, sourceFile, name): try: if (self.client is None): self.__initWebservice() except Exception: print "[ISPyB] It has been not possible to connect with ISPyB. No connection" raise Exception try: self.experiment = None self.selectedExperimentId = None expectedXMLFilePath = self.getPyarchDestination() + '/' + name print "[ISPyB] Request to ISPyB: create new experiment for proposal " + str( self.proposalType) + str(self.proposalNumber) experiment = self.client.service.createExperiment( # proposalCode, # proposalNumber, self.proposalType, self.proposalNumber, str(samples), storageTemperature, mode, extraflowTime, experimentType, expectedXMLFilePath, name) if (experiment is None): print "[ISPyB] ISPyB could not create the experiment from robot file" raise Exception print "[ISPyB] Experiment Created: " + str(experiment.experimentId) self.selectedExperimentId = experiment.experimentId self.experiment = Experiment(experiment) self.experiments.append(Experiment(experiment)) print "[ISPyB] selectedExperimentId: " + str( self.selectedExperimentId) except Exception: print "[ISPyB] handled error" traceback.print_exc() raise Exception # Copying xml file to pyarch. It doesnt raise an exception self.copyfile(sourceFile, self.getPyarchDestination())
class EnergyWaveLength(CObjectBase): signals = [Signal("energyChanged")] slots = [ Slot("setEnergy"), Slot("getEnergy"), Slot("pilatusReady"), Slot("pilatusReset"), Slot("setPilatusFill"), Slot("energyAdjustPilatus") ] def __init__(self, *args, **kwargs): CObjectBase.__init__(self, *args, **kwargs) # Threshold in keV (to change the sensitivity) self.__pilatusThreshold = 12.00 self.__energyAdjust = True self.pilatusThreshold = None def init(self): # The keV to Angstrom calc self.hcOverE = 12.3984 self.deltaPilatus = 0.1 # Runnning = Nothing should be possible self.__pilatus_status = "Running" # make another connection self.pilatusFillMode = self.channels.get("fill_mode") # get spec motor as described in href and the corresponding energy.xml self.__energyMotor = self.objects["getEnergy"] if self.__energyMotor is not None: # connect to the [Only if MOVING or ON] - to avoid constant upgrades self.__energyMotor.connect("stateChanged", self.newEnergy) else: logging.error("No connection to energy motor in spec") # Connect to fill_mode and correct it back each time it changes self.channels["fill_mode"].connect("update", self.fillModeChanged) def newEnergy(self, pState): if pState == 'ON': pValue = self.__energyMotor.position() self.__energy = float(pValue) # Calculate wavelength wavelength = self.hcOverE / self.__energy wavelengthStr = "%.4f" % wavelength # set value of BSX_GLOBAL self.channels["collectWaveLength"].set_value(wavelengthStr) self.emit("energyChanged", pValue) # if in movement already, just return.... if not self.pilatusReady(): return self.__currentPilatusThreshold = float( self.channels["pilatus_threshold"].value()) if math.fabs(self.__energy - self.__currentPilatusThreshold) > self.deltaPilatus: if self.__energyAdjust: #TODO: DEBUG print ">> changing energy by motor" # if not set Threshold, try to connect it now if self.pilatusThreshold is None: self.pilatusThreshold = self.channels.get( "pilatus_threshold") if self.pilatusThreshold is None: logging.error( "Tried and failed to connect to Pilatus") else: self.pilatusThreshold.set_value(self.__energy) while not self.pilatusReady(): time.sleep(0.5) else: self.pilatusThreshold.set_value(self.__energy) while not self.pilatusReady(): time.sleep(0.5) def getPilatusThreshold(self): return float(self.channels["pilatus_threshold"].value()) def getEnergy(self): return self.__energyMotor.position() def setEnergy(self, pValue): self.__energy = float(pValue) self.commands["setEnergy"](self.__energy) # Check if we need and can set new Energy on Pilatus first. self.__currentPilatusThreshold = float( self.channels["pilatus_threshold"].value()) if math.fabs(self.__energy - self.__currentPilatusThreshold) > self.deltaPilatus: if self.__energyAdjust: # if not set Threshold, try to connect it now if self.pilatusThreshold is None: self.pilatusThreshold = self.channels.get( "pilatus_threshold") if self.pilatusThreshold is None: logging.error("Tried and failed to connect to Pilatus") else: self.pilatusThreshold.set_value(self.__energy) while not self.pilatusReady(): time.sleep(0.5) else: self.pilatusThreshold.set_value(self.__energy) while not self.pilatusReady(): time.sleep(0.5) def fillModeChanged(self, pValue): # read value first mode = self.pilatusFillMode.value() if mode != "ON": while not self.pilatusReady(): time.sleep(0.5) self.setPilatusFill() def setPilatusFill(self): # Just for safety set fill mode to ON => gapfill -1 self.pilatusFillMode.set_value("ON") def energyAdjustPilatus(self, pValue): # True or false for following energy with Pilatus self.__energyAdjust = pValue def pilatusReady(self): # Check if Pilatus is ready self.__pilatus_status = self.channels["pilatus_status"].value() if self.__pilatus_status == "Ready": return True else: return False def pilatusReset(self): # reset the pilatus self.commands["pilatus_reset"]()
class Reprocess(CObjectBase): __CHANNEL_LIST = [ "reprocessDirectoryChanged", "reprocessPrefixChanged", "reprocessRunNumberChanged", "reprocessFrameFirstChanged", "reprocessFrameLastChanged", "reprocessConcentrationChanged", "reprocessCommentsChanged", "reprocessCodeChanged", "reprocessMaskFileChanged", "reprocessDetectorDistanceChanged", "reprocessWaveLengthChanged", "reprocessPixelSizeXChanged", "reprocessPixelSizeYChanged", "reprocessBeamCenterXChanged", "reprocessBeamCenterYChanged", "reprocessNormalisationChanged", "reprocessBeamStopDiodeChanged", "reprocessMachineCurrentChanged", "reprocessKeepOriginalChanged", "reprocessStatusChanged" ] signals = [Signal(channel) for channel in __CHANNEL_LIST] slots = [Slot("reprocess")] def __init__(self, *args, **kwargs): CObjectBase.__init__(self, *args, **kwargs) def init(self): self.frameFirst = "" self.frameLast = "" self.concentration = "" self.comment = "" self.code = "" self.maskFile = "" self.detectorDistance = "" self.waveLength = "" self.pixelSizeX = "" self.pixelSizeY = "" self.beamCenterX = "" self.beamCenterY = "" self.normalisation = "" self.beamStopDiode = "" self.machineCurrent = "" def reprocess(self, pDirectory, pPrefix, pRunNumber, pFrameFirst, pFrameLast, pConcentration, pComments, pCode, pMaskFile, pDetectorDistance, pWaveLength, pPixelSizeX, pPixelSizeY, pBeamCenterX, pBeamCenterY, pNormalisation, pBeamStopDiode, pMachineCurrent, pKeepOriginal, pTimeOut, pFeedback): # Fixed since 2011 self.detector = "Pilatus" # Fixed by SO 5/9 2012 self.operation = "Complete reprocess" self.directory = pDirectory self.prefix = pPrefix self.runNumber = pRunNumber if pFrameFirst is None: self.frameFirst = pFrameFirst if pFrameLast is None: self.frameLast = pFrameLast if pConcentration is not None: self.concentration = pConcentration if pComments is not None: self.comments = pComments if pCode is not None: self.code = pCode if pMaskFile is not None: self.maskFile = pMaskFile if pDetectorDistance is not None: self.detectorDistance = pDetectorDistance if pWaveLength is not None: self.waveLength = pWaveLength if pPixelSizeX is not None: self.pixelSizeX = pPixelSizeX if pPixelSizeY is not None: self.pixelSizeY = pPixelSizeY if pBeamCenterX is not None: self.beamCenterX = pBeamCenterX if pBeamCenterY is not None: self.beamCenterY = pBeamCenterY if pNormalisation is not None: self.normalisation = pNormalisation if pBeamStopDiode is not None: self.beamStopDiode = pBeamStopDiode if pMachineCurrent is not None: self.machineCurrent = pMachineCurrent self.keepOriginal = pKeepOriginal self.commands["reprocess"]( self.directory, self.prefix, self.runNumber, self.frameFirst, self.frameLast, self.concentration, self.comments, self.code, self.maskFile, self.detectorDistance, self.waveLength, self.pixelSizeX, self.pixelSizeY, self.beamCenterX, self.beamCenterY, self.normalisation, self.beamStopDiode, self.machineCurrent, self.keepOriginal, pTimeOut, pFeedback) def reprocessAbort(self): self.commands["reprocess"].abort() def reprocessDirectoryChanged(self, pValue): self.emit("reprocessDirectoryChanged", pValue) def reprocessPrefixChanged(self, pValue): self.emit("reprocessPrefixChanged", pValue) def reprocessRunNumberChanged(self, pValue): self.emit("reprocessRunNumberChanged", pValue) def reprocessFrameFirstChanged(self, pValue): self.emit("reprocessFrameFirstChanged", pValue) def reprocessFrameLastChanged(self, pValue): self.emit("reprocessFrameLastChanged", pValue) def reprocessConcentrationChanged(self, pValue): self.emit("reprocessConcentrationChanged", pValue) def reprocessCommentsChanged(self, pValue): self.emit("reprocessCommentsChanged", pValue) def reprocessCodeChanged(self, pValue): self.emit("reprocessCodeChanged", pValue) def reprocessMaskFileChanged(self, pValue): self.emit("reprocessMaskFileChanged", pValue) def reprocessDetectorDistanceChanged(self, pValue): self.emit("reprocessDetectorDistanceChanged", pValue) def reprocessWaveLengthChanged(self, pValue): self.emit("reprocessWaveLengthChanged", pValue) def reprocessPixelSizeXChanged(self, pValue): self.emit("reprocessPixelSizeXChanged", pValue) def reprocessPixelSizeYChanged(self, pValue): self.emit("reprocessPixelSizeYChanged", pValue) def reprocessBeamCenterXChanged(self, pValue): self.emit("reprocessBeamCenterXChanged", pValue) def reprocessBeamCenterYChanged(self, pValue): self.emit("reprocessBeamCenterYChanged", pValue) def reprocessNormalisationChanged(self, pValue): self.emit("reprocessNormalisationChanged", pValue) def reprocessBeamStopDiodeChanged(self, pValue): self.emit("reprocessBeamStopDiodeChanged", pValue) def reprocessMachineCurrentChanged(self, pValue): self.emit("reprocessMachineCurrentChanged", pValue) def reprocessKeepOriginalChanged(self, pValue): self.emit("reprocessKeepOriginalChanged", pValue) def reprocessStatusChanged(self, pValue): self.emit("reprocessStatusChanged", pValue)