Example #1
0
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
Example #2
0
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
Example #3
0
    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
Example #4
0
  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
Example #5
0
    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
Example #6
0
  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
Example #7
0
  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)
Example #8
0
  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)