def get_spot_convention(imagefile): # Maybe 2 if RAXIS else 0.. return 2 from spotfinder.command_line.signal_strength import master_params phil_params = master_params.extract() imageobject = iotbx.detectors.ImageFactory(G["file"][start_frame]) beam_center_convention_from_image_object(imageobject, phil_params) print "SPOT CONVENTION=", phil_params.spot_convention return phil_params.spot_convention
def get_spot_convention(imagefile): # Maybe 2 if RAXIS else 0.. return 2 from spotfinder.command_line.signal_strength import master_params phil_params = master_params.extract() imageobject = iotbx.detectors.ImageFactory(G["file"][start_frame]) beam_center_convention_from_image_object(imageobject, phil_params) print "SPOT CONVENTION=", phil_params.spot_convention return phil_params.spot_convention
def get_spotfinder(self, distl_params ): #following heuristics_base.register_frames() example #application-specific adjustments to parameters #XXX this should probably be a deep copy of parameters. if distl_params.distl.res.inner != None: distl_params.distl_lowres_limit = distl_params.distl.res.inner if distl_params.distl.res.outer != None: distl_params.force_method2_resolution_limit = distl_params.distl.res.outer distl_params.distl_highres_limit = distl_params.distl.res.outer distl_params.distl_force_binning = False distl_params.distl_permit_binning = False distl_params.wedgelimit = 1 distl_params.spotfinder_header_tests = False #unusual location for min spot area tests... from iotbx.detectors.context.config_detector import beam_center_convention_from_image_object beam_center_convention_from_image_object(self, distl_params) # end special min spot area treatment from spotfinder.applications.practical_heuristics import heuristics_base from spotfinder.diffraction.imagefiles import file_names class empty: pass E = empty() E.argv = ["Empty", self.filename] names = file_names(E) this_frame = names.frames()[0] process_dictionary = dict( twotheta="%f" % self.twotheta, ybeam="%f" % self.beamy, xbeam="%f" % self.beamx, distance="%f" % self.distance, wavelength="%f" % self.wavelength, template=[ item.template for item in names.FN if item.number == this_frame ][0], ) Spotfinder = heuristics_base(process_dictionary, distl_params) Spotfinder.images[this_frame] = Spotfinder.oneImage( this_frame, Spotfinder.pd, self) Spotfinder.determine_maxcell(this_frame, Spotfinder.pd) Spotfinder.images[this_frame]['spotoutput']['relpath'] = self.filename from spotfinder.applications.stats_distl import pretty_image_stats pretty_image_stats(Spotfinder, this_frame) return Spotfinder, this_frame
def get_spotfinder(self,distl_params): #following heuristics_base.register_frames() example #application-specific adjustments to parameters #XXX this should probably be a deep copy of parameters. if distl_params.distl.res.inner!=None: distl_params.distl_lowres_limit = distl_params.distl.res.inner if distl_params.distl.res.outer!=None: distl_params.force_method2_resolution_limit = distl_params.distl.res.outer distl_params.distl_highres_limit = distl_params.distl.res.outer distl_params.distl_force_binning = False distl_params.distl_permit_binning = False distl_params.wedgelimit = 1 distl_params.spotfinder_header_tests = False #unusual location for min spot area tests... from iotbx.detectors.context.config_detector import beam_center_convention_from_image_object beam_center_convention_from_image_object(self,distl_params) # end special min spot area treatment from spotfinder.applications.practical_heuristics import heuristics_base from spotfinder.diffraction.imagefiles import file_names class empty:pass E = empty() E.argv = ["Empty",self.filename] names = file_names(E) this_frame = names.frames()[0] process_dictionary = dict(twotheta = "%f"%self.twotheta, ybeam = "%f"%self.beamy, xbeam = "%f"%self.beamx, distance = "%f"%self.distance, wavelength = "%f"%self.wavelength, template = [item.template for item in names.FN if item.number==this_frame][0], ) Spotfinder = heuristics_base(process_dictionary,distl_params) Spotfinder.images[this_frame] = Spotfinder.oneImage(this_frame, Spotfinder.pd, self) Spotfinder.determine_maxcell(this_frame,Spotfinder.pd) Spotfinder.images[this_frame]['spotoutput']['relpath']=self.filename from spotfinder.applications.stats_distl import pretty_image_stats pretty_image_stats(Spotfinder,this_frame) return Spotfinder,this_frame
def initialize_viewer_properties(self, phil_parameters, verbose=True): self._invert_beam_center = False from iotbx.detectors.context.config_detector import \ beam_center_convention_from_image_object bc = beam_center_convention_from_image_object(self, phil_parameters) if verbose: print "beam center convention: %d" % bc # FIXME what about 2-4 & 6-7? if (bc == 0): self._invert_beam_center = True self._invert_y = True elif (bc == 1): self._invert_y = False elif (bc == 5): self._invert_y = True self.image_size_fast = self.size2 # width self.image_size_slow = self.size1 # height self.pixel_resolution = self.pixel_size
def initialize_viewer_properties(self,phil_parameters,verbose=True): self._invert_beam_center = False from iotbx.detectors.context.config_detector import \ beam_center_convention_from_image_object bc = beam_center_convention_from_image_object(self,phil_parameters) if verbose: print "beam center convention: %d" % bc # FIXME what about 2-4 & 6-7? if (bc == 0) : self._invert_beam_center = True self._invert_y = True elif (bc == 1) : self._invert_y = False elif (bc == 5) : self._invert_y = True self.image_size_fast = self.size2 # width self.image_size_slow = self.size1 # height self.pixel_resolution = self.pixel_size
def site_modifications(self,imageobject,filenameobject): from iotbx.detectors.context.config_detector\ import beam_center_convention_from_image_object beam_center_convention = beam_center_convention_from_image_object(imageobject,self.phil_params) #we may elect to override the beam position globally for LABELIT. #Case I. The user has provided a tuple of floats, superceding all else if self.phil_params.autoindex_override_beam != None: imageobject.parameters['BEAM_CENTER_X'],\ imageobject.parameters['BEAM_CENTER_Y']=\ self.phil_params.autoindex_override_beam imageobject.beam_center_reference_frame = "imageblock" #Case II. An XY convention has been defined. elif beam_center_convention != 0: convert_beam_instrument_to_imageblock(imageobject,beam_center_convention) if self.phil_params.autoindex_override_distance != None: imageobject.parameters['DISTANCE']=self.phil_params.autoindex_override_distance if self.phil_params.autoindex_override_wavelength != None: imageobject.parameters['WAVELENGTH']=self.phil_params.autoindex_override_wavelength if self.phil_params.autoindex_override_deltaphi != None: if self.verbose: print "Overriding deltaphi not fully supported: contact authors" print "Altering deltaphi",(filenameobject.number-1)*self.phil_params.autoindex_override_deltaphi imageobject.parameters['OSC_RANGE']=self.phil_params.autoindex_override_deltaphi imageobject.parameters['OSC_START']=(filenameobject.number-1)*self.phil_params.autoindex_override_deltaphi # override twotheta angle if self.phil_params.autoindex_override_twotheta != None: imageobject.parameters['TWOTHETA']=\ self.phil_params.autoindex_override_twotheta if self.phil_params.image_specific_osc_start != None: imageobject.parameters['OSC_START']= \ eval("(%s)(%d)"%( self.phil_params.image_specific_osc_start,filenameobject.number)) #take care of unbinned Quantum 315 if (self.phil_params.distl_permit_binning and \ imageobject.size1 > 4000 and imageobject.vendortype=="ADSC") or \ self.phil_params.distl_force_binning: imageobject.setBin(2) self.phil_params.distl.minimum_spot_area = min( self.phil_params.distl.minimum_spot_area, self.phil_params.distl_binned_image_spot_size) if imageobject.vendortype=="MARCCD": #This section corrects for the fact that ESRF writes the mar ccd header # with beam center in mm instead of pixels. detector_center_in_mm = 0.5*imageobject.size1*imageobject.pixel_size one_tenth_error = 0.1*detector_center_in_mm #offset between given beam and detector center import math def distance(a,b): return math.sqrt((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])) offset1=distance( (detector_center_in_mm,detector_center_in_mm), (imageobject.beamx,imageobject.beamy) ) if offset1>one_tenth_error: newx = imageobject.beamx/imageobject.pixel_size newy = imageobject.beamy/imageobject.pixel_size #offset between corrected beam and detector center offset2=distance( (detector_center_in_mm,detector_center_in_mm), (newx,newy) ) if offset2<one_tenth_error: imageobject.parameters['BEAM_CENTER_X'] = newx imageobject.parameters['BEAM_CENTER_Y'] = newy #Furthermore the x and y are transposed in the one example we've been given convert_beam_instrument_to_imageblock(imageobject, beam_center_convention,force=True) if self.verbose: print "Mar CCD image appears to have beam center %.2f %.2f in mm instead of pixels"%( imageobject.beamx,imageobject.beamy)
def site_modifications(self,imageobject,filenameobject): from iotbx.detectors.context.config_detector\ import beam_center_convention_from_image_object beam_center_convention = beam_center_convention_from_image_object(imageobject,self.phil_params) #we may elect to override the beam position globally for LABELIT. #Case I. The user has provided a tuple of floats, superceding all else if self.phil_params.autoindex_override_beam != None: imageobject.parameters['BEAM_CENTER_X'],\ imageobject.parameters['BEAM_CENTER_Y']=\ self.phil_params.autoindex_override_beam imageobject.beam_center_reference_frame = "imageblock" #Case II. An XY convention has been defined. elif beam_center_convention != 0: convert_beam_instrument_to_imageblock(imageobject,beam_center_convention) if self.phil_params.autoindex_override_distance != None: imageobject.parameters['DISTANCE']=self.phil_params.autoindex_override_distance if self.phil_params.autoindex_override_wavelength != None: imageobject.parameters['WAVELENGTH']=self.phil_params.autoindex_override_wavelength if self.phil_params.autoindex_override_deltaphi != None: if self.verbose: print "Overriding deltaphi not fully supported: contact authors" print "Altering deltaphi",(filenameobject.number-1)*self.phil_params.autoindex_override_deltaphi imageobject.parameters['OSC_RANGE']=self.phil_params.autoindex_override_deltaphi imageobject.parameters['OSC_START']=(filenameobject.number-1)*self.phil_params.autoindex_override_deltaphi # override twotheta angle if self.phil_params.autoindex_override_twotheta != None: imageobject.parameters['TWOTHETA']=\ self.phil_params.autoindex_override_twotheta if self.phil_params.image_specific_osc_start != None: imageobject.parameters['OSC_START']= \ eval("(%s)(%d)"%( self.phil_params.image_specific_osc_start,filenameobject.number)) #take care of unbinned Quantum 315 if (self.phil_params.distl_permit_binning and \ imageobject.size1 > 4000) or \ self.phil_params.distl_force_binning: imageobject.setBin(2) self.phil_params.distl.minimum_spot_area = min( self.phil_params.distl.minimum_spot_area, self.phil_params.distl_binned_image_spot_size) if imageobject.vendortype=="MARCCD": #This section corrects for the fact that ESRF writes the mar ccd header # with beam center in mm instead of pixels. detector_center_in_mm = 0.5*imageobject.size1*imageobject.pixel_size one_tenth_error = 0.1*detector_center_in_mm #offset between given beam and detector center import math def distance(a,b): return math.sqrt((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])) offset1=distance( (detector_center_in_mm,detector_center_in_mm), (imageobject.beamx,imageobject.beamy) ) if offset1>one_tenth_error: newx = imageobject.beamx/imageobject.pixel_size newy = imageobject.beamy/imageobject.pixel_size #offset between corrected beam and detector center offset2=distance( (detector_center_in_mm,detector_center_in_mm), (newx,newy) ) if offset2<one_tenth_error: imageobject.parameters['BEAM_CENTER_X'] = newx imageobject.parameters['BEAM_CENTER_Y'] = newy #Furthermore the x and y are transposed in the one example we've been given convert_beam_instrument_to_imageblock(imageobject, beam_center_convention,force=True) if self.verbose: print "Mar CCD image appears to have beam center %.2f %.2f in mm instead of pixels"%( imageobject.beamx,imageobject.beamy)