def preProcess(self, _edObject=None): """ Gets the Configuration Parameters, if found, overrides default parameters """ EDPluginControl.preProcess(self, _edObject) EDVerbose.DEBUG("EDPluginControlCharacterisationv10.preProcess...") self.__edPluginIndexing = self.loadPlugin(self.__strPluginIndexingName , "Indexing") self.__edPluginIntegration = self.loadPlugin(self.__strPluginIntegrationName, "Integration") self.__edPluginStrategy = self.loadPlugin(self.__strPluginStrategyName , "Strategy") if (self.__edPluginIndexing is not None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.preProcess: " + self.__strPluginIndexingName + " Found... setting Data Input") # create Data Input for indexing xsDataCollection = self.getDataInput() xsDataSample = xsDataCollection.getSample() xsDataSubWedgeList = xsDataCollection.getSubWedge() xsDataExperimentalCondition = xsDataSubWedgeList[0].getExperimentalCondition() xsDataIndexingInput = XSDataIndexingInput() xsDataIndexingInput.setDataCollection(xsDataCollection) xsDataIndexingInput.setExperimentalCondition(xsDataExperimentalCondition) xsDataDiffractionPlan = xsDataCollection.getDiffractionPlan() xsDataStringForcedSpaceGroup = xsDataDiffractionPlan.getForcedSpaceGroup() if (xsDataStringForcedSpaceGroup is not None): xsDataCrystal = XSDataCrystal() xsDataSpaceGroup = XSDataSpaceGroup() xsDataSpaceGroup.setName(xsDataStringForcedSpaceGroup) xsDataCrystal.setSpaceGroup(xsDataSpaceGroup) xsDataIndexingInput.setCrystal(xsDataCrystal) self.__edPluginIndexing.setDataInput(xsDataIndexingInput) # Populate characterisation object self.__xsDataCharacterisation = XSDataCharacterisation() self.__xsDataCharacterisation.setDataCollection(XSDataCollection.parseString(xsDataCollection.marshal()))
def dna_execute_collection3(dna_start,dna_range,dna_number_of_images,dna_exptime,dna_directory,prefix,start_image_number,overlap,dna_res,dna_run_num): global collect_and_characterize_success,dna_have_strategy_results,dna_have_index_results,picture_taken global dna_strategy_exptime,dna_strategy_start,dna_strategy_range,dna_strategy_end,dna_strat_dist global screeningoutputid dna_filename_list = [] print "number of images " + str(dna_number_of_images) + " overlap = " + str(overlap) + " dna_start " + str(dna_start) + " dna_range " + str(dna_range) + " prefix " + prefix + " start number " + str(start_image_number) + "\n" collect_and_characterize_success = 0 dna_have_strategy_results = 0 dna_have_index_results = 0 dg2rd = 3.14159265 / 180.0 if (daq_utils.detector_id == "ADSC-Q315"): det_radius = 157.5 elif (daq_utils.detector_id == "ADSC-Q210"): det_radius = 105.0 else: #default Q4 det_radius = 94.0 theta_radians = daq_lib.get_field("theta") * dg2rd wave = daq_lib.get_field("wavelength0") dx = det_radius/(tan(2.0*(asin(wave/(2.0*dna_res)))-theta_radians)) print "distance = ",dx #skinner - could move distance and wave and scan axis here, leave wave alone for now print "skinner about to take reference images." for i in range(0,int(dna_number_of_images)): print "skinner prefix7 = " + prefix[0:7] + " startnum + " + str(start_image_number) + "\n" if (len(prefix)> 8): if ((prefix[0:7] == "postref") and (start_image_number == 1)): print "skinner postref bail\n" time.sleep(float(dna_number_of_images*float(dna_exptime))) break #skinner roi - maybe I can measure and use that for dna_start so that first image is face on. if (daq_lib.need_auto_align_xtal_pic == 1): daq_lib.measure(1) # dna_start = daq_lib.var_list[daq_lib.var_list["scan_axis"]] + 75.0 dna_start = daq_lib.get_field("datum_omega") colstart = float(dna_start) + (i*(abs(overlap)+float(dna_range))) # colstart = colstart + daq_lib.var_list["datum_omega"] # daq_lib.move_axis_absolute(daq_lib.var_list["scan_axis"],colstart) # daq_lib.move_axis_absolute("dist",dx) dna_prefix = "ref-"+prefix+"_"+str(dna_run_num) image_number = start_image_number+i dna_prefix_long = dna_directory+"/"+dna_prefix filename = daq_lib.create_filename(dna_prefix_long,image_number) if (daq_lib.need_auto_align_xtal_pic == 1): daq_lib.need_auto_align_xtal_pic = 0 camera_offset = float(os.environ["CAMERA_OFFSET"]) beamline_lib.mvr("Omega",float(camera_offset)) ##### daq_lib.move_axis_relative("omega",camera_offset) ##### daq_lib.take_crystal_picture_with_boxes(daq_lib.html_data_directory_name + "/xtal_align_" + str(daq_lib.sweep_seq_id)) ##### daq_lib.move_axis_relative("omega",0-camera_offset) beamline_lib.mvr("Omega",float(0-camera_offset)) if (daq_lib.need_auto_align_xtal_pic == 2 and daq_lib.has_xtalview): daq_lib.need_auto_align_xtal_pic = 0 ##### daq_lib.take_crystal_picture_with_boxes(daq_lib.html_data_directory_name + "/xtal_postalign_" + str(daq_lib.sweep_seq_id)) postalign_jpg = "xtal_postalign_" + str(daq_lib.sweep_seq_id) # postalign_jpg_th = "xtal_postalign_th_" + str(daq_lib.sweep_seq_id) beamline_lib.mva("Omega",float(colstart)) ##### daq_lib.move_axis_absolute(daq_lib.get_field("scan_axis"),colstart) daq_lib.take_image(colstart,dna_range,dna_exptime,filename,daq_lib.get_field("scan_axis"),0,1) dna_filename_list.append(filename) ##### daq_lib.take_crystal_picture_with_boxes(daq_lib.html_data_directory_name + "/xtal_" + str(daq_lib.sweep_seq_id) + "_" + str(i)) picture_taken = 1 # xml_from_file_list(flux,x_beamsize,y_beamsize,max_exptime_per_dc,aimed_completeness,file_list): edna_energy_ev = (12.3985/wave) * 1000.0 ##### xbeam_size = beamline_lib.get_motor_pos("slitHum") ##### ybeam_size = beamline_lib.get_motor_pos("slitVum") # if (xbeam_size == 0.0 or ybeam_size == 0.0): #don't know where to get these from yet if (0): xbeam_size = .1 ybeam_size = .16 else: xbeam_size = xbeam_size/1000 ybeam_size = ybeam_size/1000 aimed_completness = daq_lib.get_field('edna_aimed_completeness') aimed_multiplicity = daq_lib.get_field('edna_aimed_multiplicity') aimed_resolution = daq_lib.get_field('edna_aimed_resolution') aimed_ISig = daq_lib.get_field('edna_aimed_ISig') timeout_check = 0; while(not os.path.exists(dna_filename_list[len(dna_filename_list)-1])): #this waits for edna images timeout_check = timeout_check + 1 time.sleep(1.0) if (timeout_check > 10): break print "generating edna input\n" # edna_input_filename = edna_input_xml.xml_from_file_list(edna_energy_ev,xbeam_size,ybeam_size,1000000,aimed_completness,aimed_ISig,aimed_multiplicity,aimed_resolution,dna_filename_list) flux = 10000000000 * beamline_lib.get_epics_pv("flux","VAL") edna_input_filename = daq_lib.data_directory_name + "/adsc1_in.xml" edna_input_xml_command = "ssh swill \"/h/data/backed-up/pxsys/skinner/edna_header_code/makeAnEDNAXML-bnl.sh 1232 %s %s none %f %f 4000 0.01 0.01 0 xh1223_2_ %f %f %f\" > %s" % (daq_lib.data_directory_name,dna_prefix,3,aimed_ISig,flux,xbeam_size,ybeam_size,edna_input_filename) print edna_input_xml_command os.system(edna_input_xml_command) print "done generating edna input\n" command_string = "ssh swill \"cd %s; /h/crys/usr-local/fc3/crys_test/john_temp/edna/mxv1/bin/edna-mxv1-characterisation.py --verbose --data %s\"" % (daq_lib.data_directory_name,edna_input_filename) # command_string = "$EDNA_HOME/mxv1/bin/edna-mxv1-characterisation --data " + edna_input_filename print command_string # for i in range (0,len(dna_filename_list)): # command_string = command_string + " " + dna_filename_list[i] broadcast_output("\nProcessing with EDNA. Please stand by.\n") if ( os.path.exists( "edna.log" ) ) : os.remove( "edna.log" ) if ( os.path.exists( "edna.err" ) ) : os.remove( "edna.err" ) edna_execution_status = os.system( "%s > edna.log 2> edna.err" % command_string) fEdnaLogFile = open(daq_lib.get_misc_dir_name() + "/edna.log", "r" ) ednaLogLines = fEdnaLogFile.readlines() fEdnaLogFile.close() for outline in ednaLogLines: # for outline in os.popen(command_string,'r',0).readlines(): ####skinner6/11 seg faults? broadcast_output(outline) if (string.find(outline,"EdnaDir")!= -1): (param,dirname) = string.split(outline,'=') strXMLFileName = dirname[0:len(dirname)-1]+"/ControlInterfacev1_2/Characterisation/ControlCharacterisationv1_1_dataOutput.xml" if (string.find(outline,"characterisation successful!")!= -1): collect_and_characterize_success = 1 if (not collect_and_characterize_success): dna_comment = "Indexing Failure" pxdb_lib.update_sweep(2,daq_lib.sweep_seq_id,dna_comment) return 0 xsDataCharacterisation = XSDataCharacterisation.parseFile( strXMLFileName ) xsDataIndexingResult = xsDataCharacterisation.getIndexingResult() xsDataIndexingSolutionSelected = xsDataIndexingResult.getSelectedSolution() xsDataStatisticsIndexing = xsDataIndexingSolutionSelected.getStatistics() numSpotsFound = xsDataStatisticsIndexing.getSpotsTotal().getValue() numSpotsUsed = xsDataStatisticsIndexing.getSpotsUsed().getValue() numSpotsRejected = numSpotsFound-numSpotsUsed beamShiftX = xsDataStatisticsIndexing.getBeamPositionShiftX().getValue() beamShiftY = xsDataStatisticsIndexing.getBeamPositionShiftY().getValue() spotDeviationR = xsDataStatisticsIndexing.getSpotDeviationPositional().getValue() try: spotDeviationTheta = xsDataStatisticsIndexing.getSpotDeviationAngular().getValue() except AttributeError: spotDeviationTheta = 0.0 diffractionRings = 0 #for now, don't see this in xml except message string reflections_used = 0 #for now reflections_used_in_indexing = 0 #for now rejectedReflections = 0 #for now xsDataOrientation = xsDataIndexingSolutionSelected.getOrientation() xsDataMatrixA = xsDataOrientation.getMatrixA() rawOrientationMatrix_a_x = xsDataMatrixA.getM11() rawOrientationMatrix_a_y = xsDataMatrixA.getM12() rawOrientationMatrix_a_z = xsDataMatrixA.getM13() rawOrientationMatrix_b_x = xsDataMatrixA.getM21() rawOrientationMatrix_b_y = xsDataMatrixA.getM22() rawOrientationMatrix_b_z = xsDataMatrixA.getM23() rawOrientationMatrix_c_x = xsDataMatrixA.getM31() rawOrientationMatrix_c_y = xsDataMatrixA.getM32() rawOrientationMatrix_c_z = xsDataMatrixA.getM33() xsDataCrystal = xsDataIndexingSolutionSelected.getCrystal() xsDataCell = xsDataCrystal.getCell() unitCell_alpha = xsDataCell.getAngle_alpha().getValue() unitCell_beta = xsDataCell.getAngle_beta().getValue() unitCell_gamma = xsDataCell.getAngle_gamma().getValue() unitCell_a = xsDataCell.getLength_a().getValue() unitCell_b = xsDataCell.getLength_b().getValue() unitCell_c = xsDataCell.getLength_c().getValue() mosaicity = xsDataCrystal.getMosaicity().getValue() xsSpaceGroup = xsDataCrystal.getSpaceGroup() spacegroup_name = xsSpaceGroup.getName().getValue() pointGroup = spacegroup_name #for now bravaisLattice = pointGroup #for now statusDescription = "ok" #for now try: spacegroup_number = xsSpaceGroup.getITNumber().getValue() except AttributeError: spacegroup_number = 0 xsStrategyResult = xsDataCharacterisation.getStrategyResult() resolutionObtained = -999 if (xsStrategyResult != None): dna_have_strategy_results = 1 xsCollectionPlan = xsStrategyResult.getCollectionPlan() xsStrategySummary = xsCollectionPlan[0].getStrategySummary() resolutionObtained = xsStrategySummary.getRankingResolution().getValue() xsCollectionStrategy = xsCollectionPlan[0].getCollectionStrategy() xsSubWedge = xsCollectionStrategy.getSubWedge() for i in range (0,len(xsSubWedge)): xsExperimentalCondition = xsSubWedge[i].getExperimentalCondition() xsGoniostat = xsExperimentalCondition.getGoniostat() xsDetector = xsExperimentalCondition.getDetector() xsBeam = xsExperimentalCondition.getBeam() dna_strategy_start = xsGoniostat.getRotationAxisStart().getValue() dna_strategy_start = dna_strategy_start-(dna_strategy_start%.1) dna_strategy_range = xsGoniostat.getOscillationWidth().getValue() dna_strategy_range = dna_strategy_range-(dna_strategy_range%.1) dna_strategy_end = xsGoniostat.getRotationAxisEnd().getValue() dna_strategy_end = (dna_strategy_end-(dna_strategy_end%.1)) + dna_strategy_range dna_strat_dist = xsDetector.getDistance().getValue() dna_strat_dist = dna_strat_dist-(dna_strat_dist%1) dna_strategy_exptime = xsBeam.getExposureTime().getValue() dna_strategy_exptime = dna_strategy_exptime-(dna_strategy_exptime%.1) program = "edna-1.0" # for now ##### screeningoutputid = pxdb_lib.insert_dna_index_results(daq_lib.sweep_seq_id,daq_lib.get_field("xtal_id"),program,statusDescription,rejectedReflections,resolutionObtained,spotDeviationR,spotDeviationTheta,beamShiftX,beamShiftY,numSpotsFound,numSpotsUsed,numSpotsRejected,mosaicity,diffractionRings,spacegroup_name,pointGroup,bravaisLattice,rawOrientationMatrix_a_x,rawOrientationMatrix_a_y,rawOrientationMatrix_a_z,rawOrientationMatrix_b_x,rawOrientationMatrix_b_y,rawOrientationMatrix_b_z,rawOrientationMatrix_c_x,rawOrientationMatrix_c_y,rawOrientationMatrix_c_z,unitCell_a,unitCell_b,unitCell_c,unitCell_alpha,unitCell_beta,unitCell_gamma) dna_comment = "spacegroup = " + str(spacegroup_name) + " mosaicity = " + str(mosaicity) + " resolutionHigh = " + str(resolutionObtained) + " cell_a = " + str(unitCell_a) + " cell_b = " + str(unitCell_b) + " cell_c = " + str(unitCell_c) + " cell_alpha = " + str(unitCell_alpha) + " cell_beta = " + str(unitCell_beta) + " cell_gamma = " + str(unitCell_gamma) + " status = " + str(statusDescription) print "\n\n skinner " + dna_comment + "\n" +str(daq_lib.sweep_seq_id) + "\n" ##### pxdb_lib.update_sweep(2,daq_lib.sweep_seq_id,dna_comment) if (dna_have_strategy_results): ##### pxdb_lib.insert_to_screening_strategy_table(screeningoutputid,dna_strategy_start,dna_strategy_end,dna_strategy_range,dna_strategy_exptime,resolutionObtained,program) dna_strat_comment = "\ndna Strategy results: Start=" + str(dna_strategy_start) + " End=" + str(dna_strategy_end) + " Width=" + str(dna_strategy_range) + " Time=" + str(dna_strategy_exptime) + " Dist=" + str(dna_strat_dist) ##### pxdb_lib.update_sweep(2,daq_lib.sweep_seq_id,dna_strat_comment) xsStrategyStatistics = xsCollectionPlan[0].getStatistics() xsStrategyResolutionBins = xsStrategyStatistics.getResolutionBin() now = time.time() # edna_isig_plot_filename = dirname[0:len(dirname)-1] + "/edna_isig_res_" + str(now) + ".txt" edna_isig_plot_filename = dirname[0:len(dirname)-1] + "/edna_isig_res.txt" isig_plot_file = open(edna_isig_plot_filename,"w") for i in range (0,len(xsStrategyResolutionBins)-1): i_over_sigma_bin = xsStrategyResolutionBins[i].getIOverSigma().getValue() maxResolution_bin = xsStrategyResolutionBins[i].getMaxResolution().getValue() print str(maxResolution_bin) + " " + str(i_over_sigma_bin) isig_plot_file.write(str(maxResolution_bin) + " " + str(i_over_sigma_bin)+"\n") isig_plot_file.close() comm_s = "isig_res_plot.pl -i " + edna_isig_plot_filename + " -o " + daq_lib.html_data_directory_name + "/edna_isig_res_plot" + str(int(now)) os.system(comm_s) ##### broadcast_output(dna_comment) if (dna_have_strategy_results): broadcast_output(dna_strat_comment) return 1
class EDPluginControlCharacterisationv10(EDPluginControl): """ The Plugin that controls the whole characterisation. """ def __init__ (self): EDPluginControl.__init__(self) self.setXSDataInputClass(XSDataCollection) self.__strPluginIndexingName = "EDPluginControlIndexingv10" self.__edPluginIndexing = None self.__strPluginIntegrationName = "EDPluginControlIntegrationv10" self.__edPluginIntegration = None self.__strPluginStrategyName = "EDPluginControlStrategyv10" self.__edPluginStrategy = None self.__xsDataCharacterisation = None def checkParameters(self): """ Checks the mandatory parameters """ EDVerbose.DEBUG("EDPluginControlCharacterisationv10.checkParameters") self.checkMandatoryParameters(self.getDataInput(), "Data Input is None") self.checkMandatoryParameters(self.getDataInput().getDiffractionPlan(), "diffractionPlan") def preProcess(self, _edObject=None): """ Gets the Configuration Parameters, if found, overrides default parameters """ EDPluginControl.preProcess(self, _edObject) EDVerbose.DEBUG("EDPluginControlCharacterisationv10.preProcess...") self.__edPluginIndexing = self.loadPlugin(self.__strPluginIndexingName , "Indexing") self.__edPluginIntegration = self.loadPlugin(self.__strPluginIntegrationName, "Integration") self.__edPluginStrategy = self.loadPlugin(self.__strPluginStrategyName , "Strategy") if (self.__edPluginIndexing is not None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.preProcess: " + self.__strPluginIndexingName + " Found... setting Data Input") # create Data Input for indexing xsDataCollection = self.getDataInput() xsDataSample = xsDataCollection.getSample() xsDataSubWedgeList = xsDataCollection.getSubWedge() xsDataExperimentalCondition = xsDataSubWedgeList[0].getExperimentalCondition() xsDataIndexingInput = XSDataIndexingInput() xsDataIndexingInput.setDataCollection(xsDataCollection) xsDataIndexingInput.setExperimentalCondition(xsDataExperimentalCondition) xsDataDiffractionPlan = xsDataCollection.getDiffractionPlan() xsDataStringForcedSpaceGroup = xsDataDiffractionPlan.getForcedSpaceGroup() if (xsDataStringForcedSpaceGroup is not None): xsDataCrystal = XSDataCrystal() xsDataSpaceGroup = XSDataSpaceGroup() xsDataSpaceGroup.setName(xsDataStringForcedSpaceGroup) xsDataCrystal.setSpaceGroup(xsDataSpaceGroup) xsDataIndexingInput.setCrystal(xsDataCrystal) self.__edPluginIndexing.setDataInput(xsDataIndexingInput) # Populate characterisation object self.__xsDataCharacterisation = XSDataCharacterisation() self.__xsDataCharacterisation.setDataCollection(XSDataCollection.parseString(xsDataCollection.marshal())) def process(self, _edObject=None): EDPluginControl.process(self, _edObject) EDVerbose.DEBUG("EDPluginControlCharacterisationv10.process") self.connectProcess(self.__edPluginIndexing.executeSynchronous) self.__edPluginIndexing.connectSUCCESS(self.doIndexingToIntegrationTransition) self.__edPluginIndexing.connectFAILURE(self.doFailureActionIndexing) self.__edPluginIntegration.connectSUCCESS(self.doIntegrationToStrategyTransition) self.__edPluginIntegration.connectFAILURE(self.doFailureActionIntegration) self.__edPluginStrategy.connectFAILURE(self.doFailureActionStrategy) self.__edPluginStrategy.connectSUCCESS(self.doSuccessActionStrategy) def postProcess(self, _edObject=None): EDPluginControl.postProcess(self, _edObject) EDVerbose.DEBUG("EDPluginControlCharacterisationv10.postProcess") if (self.__xsDataCharacterisation is not None): self.setDataOutput(self.__xsDataCharacterisation) def doIndexingToIntegrationTransition(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.doIndexingToIntegrationTransition") self.retrieveSuccessMessages(_edPlugin, "EDPluginControlCharacterisationv10.doIntegrationToStrategyTransition") xsDataIndexingResult = self.__edPluginIndexing.getDataOutput() self.__xsDataCharacterisation.setIndexingResult(xsDataIndexingResult) xsDataIntegrationInput = XSDataIntegrationInput() xsDataIntegrationInput.setDataCollection(self.__xsDataCharacterisation.getDataCollection()) xsDataIntegrationInput.setExperimentalConditionRefined(xsDataIndexingResult.getSelectedSolution().getExperimentalConditionRefined()) xsDataIntegrationInput.setSelectedIndexingSolution(xsDataIndexingResult.getSelectedSolution()) self.__edPluginIntegration.setDataInput(xsDataIntegrationInput) self.__edPluginIntegration.executeSynchronous() def doIntegrationToStrategyTransition(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.doIntegrationToStrategyTransition") self.retrieveSuccessMessages(_edPlugin, "EDPluginControlCharacterisationv10.doIntegrationToStrategyTransition") xsDataIntegrationOutput = self.__edPluginIntegration.getDataOutput() self.__xsDataCharacterisation.setIntegrationResult(xsDataIntegrationOutput) #EDVerbose.DEBUG( self.__xsDataExperimentCharacterisation.marshal() ) xsDataStrategyInput = XSDataStrategyInput() xsDataSolutionSelected = self.__xsDataCharacterisation.getIndexingResult().getSelectedSolution() xsDataStrategyInput.setCrystalRefined(xsDataSolutionSelected.getCrystal()) xsDataStrategyInput.setSample(self.__xsDataCharacterisation.getDataCollection().getSample()) xsDataIntegrationSubWedgeResultList = xsDataIntegrationOutput.getIntegrationSubWedgeResult() xsDataStrategyInput.setBestFileContentDat(xsDataIntegrationSubWedgeResultList[0].getBestfileDat()) xsDataStrategyInput.setBestFileContentPar(xsDataIntegrationSubWedgeResultList[0].getBestfilePar()) xsDataStrategyInput.setExperimentalCondition(xsDataIntegrationSubWedgeResultList[0].getExperimentalConditionRefined()) for xsDataIntegrationSubWedgeResult in xsDataIntegrationSubWedgeResultList: xsDataStrategyInput.addBestFileContentHKL(xsDataIntegrationSubWedgeResult.getBestfileHKL()) xsDataStrategyInput.setDiffractionPlan(self.__xsDataCharacterisation.getDataCollection().getDiffractionPlan()) #print xsDataStrategyInput.marshal() self.__edPluginStrategy.setDataInput(xsDataStrategyInput) self.__edPluginStrategy.executeSynchronous() def doFailureActionIndexing(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.doFailureActionIndexing") self.retrieveFailureMessages(_edPlugin, "EDPluginControlCharacterisationv10.doFailureActionIndexing") def doFailureActionIntegration(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.doFailureActionIntegration") self.retrieveFailureMessages(_edPlugin, "EDPluginControlCharacterisationv10.doFailureActionIntegration") def doFailureActionStrategy(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginControlCharacterisationv10.doFailureActionStrategy") self.retrieveFailureMessages(_edPlugin, "EDPluginControlCharacterisationv10.doFailureActionStrategy") def doSuccessActionStrategy(self, _edPlugin): """ retrieve the potential warning messages """ EDVerbose.DEBUG("EDPluginControlCharacterisationv10.doSuccessActionStrategy") self.retrieveSuccessMessages(_edPlugin, "EDPluginControlCharacterisationv10.doSuccessActionStrategy") xsDataStrategyResult = self.__edPluginStrategy.getDataOutput() self.__xsDataCharacterisation.setStrategyResult(xsDataStrategyResult) def configure(self): EDPluginControl.configure(self) EDVerbose.DEBUG("EDPluginControlCharacterisationv01.configure") pluginConfiguration = self.getConfiguration() if(pluginConfiguration == None): strWarningMessage = EDMessage.WARNING_NO_PLUGIN_CONFIGURATION_ITEM_FOUND_02 % ('EDPluginControlCharacterisationv01.configure', self.getPluginName()) EDVerbose.DEBUG(strWarningMessage) else: strSymopHome = EDConfiguration.getStringParamValue(pluginConfiguration, "KAPPA") if(strSymopHome == None or strSymopHome != "ON"): self.__strPluginStrategyName = "EDPluginControlStrategyv10" else: self.__strPluginStrategyName = "EDPluginControlKappaStrategyv10" strSymopHome = EDConfiguration.getStringParamValue(pluginConfiguration, "POINTLESS") if(strSymopHome == None or strSymopHome != "ON"): self.__strPluginIntegrationName = "EDPluginControlIntegrationv10" else: self.__strPluginIntegrationName = "EDPluginControlIntegrationPointlessv10" def generateExecutiveSummary(self, _edPlugin): """ Generates a summary of the execution of the plugin. """ EDVerbose.DEBUG("EDPluginControlCharacterisationv10.generateExecutiveSummary") self.addExecutiveSummaryLine("Summary of characterisation:") self.addErrorWarningMessagesToExecutiveSummary("Characterisation failure! Error messages: ") self.addExecutiveSummarySeparator() xsDataCollection = self.getDataInput() xsDataDiffractionPlan = xsDataCollection.getDiffractionPlan() self.addExecutiveSummaryLine("Diffraction plan:") if (xsDataDiffractionPlan.getComplexity() is not None): self.addExecutiveSummaryLine("BEST complexity : %s" % xsDataDiffractionPlan.getComplexity().getValue()) if (xsDataDiffractionPlan.getAimedCompleteness() is not None): self.addExecutiveSummaryLine("Aimed completeness : %6.1f [%%]" % (100.0 * xsDataDiffractionPlan.getAimedCompleteness().getValue())) if (xsDataDiffractionPlan.getRequiredCompleteness() is not None): self.addExecutiveSummaryLine("Required completeness : %6.1f [%%]" % (100.0 * xsDataDiffractionPlan.getRequiredCompleteness().getValue())) if (xsDataDiffractionPlan.getAimedIOverSigmaAtHighestResolution() is not None): self.addExecutiveSummaryLine("Aimed I/sigma at highest resolution : %6.1f" % xsDataDiffractionPlan.getAimedIOverSigmaAtHighestResolution().getValue()) if (xsDataDiffractionPlan.getAimedResolution() is not None): self.addExecutiveSummaryLine("Aimed resolution : %6.1f [A]" % xsDataDiffractionPlan.getAimedResolution().getValue()) if (xsDataDiffractionPlan.getRequiredResolution() is not None): self.addExecutiveSummaryLine("Required resolution : %6.1f [A]" % xsDataDiffractionPlan.getRequiredResolution().getValue()) if (xsDataDiffractionPlan.getAimedMultiplicity() is not None): self.addExecutiveSummaryLine("Aimed multiplicity : %6.1f" % xsDataDiffractionPlan.getAimedMultiplicity().getValue()) if (xsDataDiffractionPlan.getRequiredMultiplicity() is not None): self.addExecutiveSummaryLine("Required multiplicity : %6.1f" % xsDataDiffractionPlan.getRequiredMultiplicity().getValue()) if (xsDataDiffractionPlan.getForcedSpaceGroup() is not None): self.addExecutiveSummaryLine("Forced space group : %6s" % xsDataDiffractionPlan.getForcedSpaceGroup().getValue()) if (xsDataDiffractionPlan.getMaxExposureTimePerDataCollection() is not None): self.addExecutiveSummaryLine("Max exposure time per data collection : %6.1f [s]" % xsDataDiffractionPlan.getMaxExposureTimePerDataCollection().getValue()) self.addExecutiveSummarySeparator() if (self.__edPluginIndexing is not None): self.appendExecutiveSummary(self.__edPluginIndexing, "Indexing : ") if (self.__edPluginIntegration is not None): self.appendExecutiveSummary(self.__edPluginIntegration, "Integration : ") if (self.__edPluginStrategy is not None): self.appendExecutiveSummary(self.__edPluginStrategy, "Strategy : ")