예제 #1
0
 def setCommandInput(self, argument_module):
     self.Files = ImageFiles(argument_module, self.horizons_phil)
     self.frames = self.Files.frames()
예제 #2
0
 def setCommandInput(self,argument_module):
   self.Files = ImageFiles(argument_module,self.horizons_phil)
   self.frames = self.Files.frames()
예제 #3
0
class AutoIndexOrganizer:
    def __init__(self, verbose=0, **kwargs):
        self.rundir = os.getcwd()
        self.verbose = verbose
        self.horizons_phil = kwargs["horizons_phil"]
        #self.horizons_phil.persist.show()
        assert 'argument_module' in kwargs
        self.setCommandInput(kwargs['argument_module'])
        if self.verbose:
            print "Process frames in directory:", self.Files.filenames.FN[
                0].cwd

        if 'delegate' in kwargs:
            self.setIndexingDelegate(kwargs['delegate'])
        self.exception_passthru = 0
        if 'exception_passthru' in kwargs:
            self.exception_passthru = kwargs['exception_passthru']
        print '\n'.join(self.Files.filenames())

    def setCommandInput(self, argument_module):
        self.Files = ImageFiles(argument_module, self.horizons_phil)
        self.frames = self.Files.frames()

    def printSpots(self):
        from labelit.procedure import spotfinder_and_pickle
        S = spotfinder_and_pickle(self.rundir,
                                  self.Files,
                                  spots_pickle=self.horizons_phil.spots_pickle,
                                  horizons_phil=self.horizons_phil)

        #print S.images

        NEW = spotfinder_proxy(S, self.horizons_phil, self.Files)
        NEW.images = {}
        NEW.overlapping = False
        NEW.phil_params = S.phil_params
        for frame in self.frames:
            NEW.images[frame] = dict(area=[
                1,
            ]  # not actually used for new horizons
                                     )

        self.S = NEW
        for frame in self.frames:
            if self.verbose:
                from labelit.command_line.stats_distl import pretty_image_stats, notes
                pretty_image_stats(S, frame)
                notes(S, self.frames[0])
        print
        NEW.get_aitbx_inputs()

    def setIndexingDelegate(self, function):
        self.indexing_delegate = function

    def executeDelegate(self):
        self.info = self.indexing_delegate(self.frames, self.Files, self.S)

    def pickle_the_results(self):
        for key in ['best_integration', 'triclinic']:
            if key in self.info:
                if 'minimizer' in self.info[key]:  #not attained when best==tri
                    del self.info[key]['minimizer']  # Must remove

                # temporary section pending an analysis of which data need to be persistent
                if 'results' in self.info[key]["integration"]:
                    #future options 1) make the whole object picklable--write test script
                    #2) just pickle the data needed for the GUI
                    del self.info[key]["integration"]['results']
        from labelit.dptbx.pickle_support import pickle_refinements
        pickle_refinements(self.info, self.horizons_phil.refinements_pickle)

    def process(self):
        self.printSpots()
        self.executeDelegate()
        if 'info' in self.__dict__:  #if indexing worked
            self.pickle_the_results()
            return self.info
예제 #4
0
class AutoIndexOrganizer:

  def __init__(self,verbose = 0,**kwargs):
    self.rundir = os.getcwd()
    self.verbose = verbose
    self.horizons_phil = kwargs["horizons_phil"]
    #self.horizons_phil.persist.show()
    assert kwargs.has_key('argument_module')
    self.setCommandInput(kwargs['argument_module'])
    if self.verbose: print "Process frames in directory:",self.Files.filenames.FN[0].cwd

    if kwargs.has_key('delegate'):
      self.setIndexingDelegate(kwargs['delegate'])
    self.exception_passthru = 0
    if kwargs.has_key('exception_passthru'):
      self.exception_passthru = kwargs['exception_passthru']
    print '\n'.join(self.Files.filenames())

  def setCommandInput(self,argument_module):
    self.Files = ImageFiles(argument_module,self.horizons_phil)
    self.frames = self.Files.frames()

  def printSpots(self):
    from labelit.procedure import spotfinder_and_pickle
    S = spotfinder_and_pickle(self.rundir,self.Files,
        spots_pickle = self.horizons_phil.spots_pickle,
        horizons_phil = self.horizons_phil)

    #print S.images

    NEW = spotfinder_proxy(S,self.horizons_phil,self.Files)
    NEW.images = {}
    NEW.overlapping = False
    NEW.phil_params = S.phil_params
    for frame in self.frames:
      NEW.images[frame]=dict(area=[1,]  # not actually used for new horizons
                            )

    self.S = NEW
    for frame in self.frames:
     if self.verbose:
      from labelit.command_line.stats_distl import pretty_image_stats,notes
      pretty_image_stats(S,frame)
      notes(S,self.frames[0])
    print
    NEW.get_aitbx_inputs()

  def setIndexingDelegate(self,function):
    self.indexing_delegate = function

  def executeDelegate(self):
      self.info = self.indexing_delegate(self.frames,self.Files,self.S)

  def pickle_the_results(self):
      for key in ['best_integration','triclinic']:
        if self.info.has_key(key):
         if self.info[key].has_key('minimizer'): #not attained when best==tri
          del self.info[key]['minimizer'] # Must remove

         # temporary section pending an analysis of which data need to be persistent
         if self.info[key]["integration"].has_key('results'):
          #future options 1) make the whole object picklable--write test script
          #2) just pickle the data needed for the GUI
          del self.info[key]["integration"]['results']
      from labelit.dptbx.pickle_support import pickle_refinements
      pickle_refinements(self.info,self.horizons_phil.refinements_pickle)

  def process(self):
    self.printSpots()
    self.executeDelegate()
    if self.__dict__.has_key('info'): #if indexing worked
      self.pickle_the_results()
      return self.info