예제 #1
0
def dxtbx_spotfinder_factory(phil_params):

  from dxtbx.format.Registry import Registry
  reader = Registry.find(phil_params.distl.image[0])
  from spotfinder.dxtbx_toolbox.practical_heuristics import heuristics_base
  Spotfinder = heuristics_base(phil_params)
  return Spotfinder
예제 #2
0
파일: wrappers.py 프로젝트: dials/cctbx
def dxtbx_spotfinder_factory(phil_params):

    import dxtbx.format.Registry
    reader = dxtbx.format.Registry.get_format_class_for_file(
        phil_params.distl.image[0])
    from spotfinder.dxtbx_toolbox.practical_heuristics import heuristics_base
    Spotfinder = heuristics_base(phil_params)
    return Spotfinder
예제 #3
0
def spotfinder_factory(absrundir,frames,phil_params):

  local_frames=frames.frames()

  A = frames.images[0]
  #A.readHeader()--deprecate this because it squashes any overrides
  #                from dataset_preferences processed in imagefiles.py
  pd = {'directory':frames.filenames.FN[0].cwd,
        'template': frames.filenames.FN[0].template,
        'identifier':frames.filenames.FN[0].fileroot,
        'vendortype':A.vendortype,
        'binning':'%d'%A.bin,
        'distance':'%f'%A.distance,
        'wavelength':'%f'%A.wavelength,
        'deltaphi':'%f'%A.deltaphi,
        }

  #temp values for getting coordinate convention
  pd['pixel_size']='%f'%A.pixel_size
  pd['size1']='%f'%A.size1
  pd['size2']='%f'%A.size2
  pd['ybeam'] = '%f'%A.beamy
  pd['xbeam'] = '%f'%A.beamx
  try:
    pd['twotheta'] = '%f'%A.twotheta
  except Exception:
    pd['twotheta'] = '0.0'

  from spotfinder.applications.practical_heuristics import heuristics_base
  Spotfinder = heuristics_base(pd,phil_params)

  from libtbx import easy_mp

  def run_spotfinder(args):
    assert len(args) == 2
    framenumber, frames = args
    try:
      assert Spotfinder.images.has_key(framenumber)
    except Exception:
      Spotfinder.register_frames(framenumber,frames)
      if phil_params.spotfinder_verbose: Spotfinder.show()
    return Spotfinder

  iterable = [(framenumber, frames) for framenumber in local_frames]
  results = easy_mp.parallel_map(
    func=run_spotfinder,
    iterable=iterable,
    processes=phil_params.distl.nproc,
    method="multiprocessing",
    preserve_order=True
  )
  for result in results:
    Spotfinder.images.update(result.images)
  return Spotfinder
예제 #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
예제 #5
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
예제 #6
0
파일: wrappers.py 프로젝트: dials/cctbx
def spotfinder_factory(absrundir, frames, phil_params):

    local_frames = frames.frames()

    A = frames.images[0]
    #A.readHeader()--deprecate this because it squashes any overrides
    #                from dataset_preferences processed in imagefiles.py
    pd = {
        'directory': frames.filenames.FN[0].cwd,
        'template': frames.filenames.FN[0].template,
        'identifier': frames.filenames.FN[0].fileroot,
        'vendortype': A.vendortype,
        'binning': '%d' % A.bin,
        'distance': '%f' % A.distance,
        'wavelength': '%f' % A.wavelength,
        'deltaphi': '%f' % A.deltaphi,
    }

    #temp values for getting coordinate convention
    pd['pixel_size'] = '%f' % A.pixel_size
    pd['size1'] = '%f' % A.size1
    pd['size2'] = '%f' % A.size2
    pd['ybeam'] = '%f' % A.beamy
    pd['xbeam'] = '%f' % A.beamx
    try:
        pd['twotheta'] = '%f' % A.twotheta
    except Exception:
        pd['twotheta'] = '0.0'

    from spotfinder.applications.practical_heuristics import heuristics_base
    Spotfinder = heuristics_base(pd, phil_params)

    for framenumber in local_frames:
        try:
            assert framenumber in Spotfinder.images
        except Exception:
            Spotfinder.register_frames(framenumber, frames)
            if phil_params.spotfinder_verbose: Spotfinder.show()

    return Spotfinder
예제 #7
0
def spotfinder_factory(absrundir,frames,phil_params):

  local_frames=frames.frames()

  A = frames.images[0]
  #A.readHeader()--deprecate this because it squashes any overrides
  #                from dataset_preferences processed in imagefiles.py
  pd = {'directory':frames.filenames.FN[0].cwd,
        'template': frames.filenames.FN[0].template,
        'identifier':frames.filenames.FN[0].fileroot,
        'vendortype':A.vendortype,
        'binning':'%d'%A.bin,
        'distance':'%f'%A.distance,
        'wavelength':'%f'%A.wavelength,
        'deltaphi':'%f'%A.deltaphi,
        }

  #temp values for getting coordinate convention
  pd['pixel_size']='%f'%A.pixel_size
  pd['size1']='%f'%A.size1
  pd['size2']='%f'%A.size2
  pd['ybeam'] = '%f'%A.beamy
  pd['xbeam'] = '%f'%A.beamx
  try:
    pd['twotheta'] = '%f'%A.twotheta
  except Exception:
    pd['twotheta'] = '0.0'

  from spotfinder.applications.practical_heuristics import heuristics_base
  Spotfinder = heuristics_base(pd,phil_params)

  for framenumber in local_frames:
    try:
      assert Spotfinder.images.has_key(framenumber)
    except Exception:
      Spotfinder.register_frames(framenumber,frames)
      if phil_params.spotfinder_verbose: Spotfinder.show()

  return Spotfinder