コード例 #1
0
ファイル: iota_image.py プロジェクト: keitaroyam/cctbx_fork
  def import_int_file(self, init):
    """ Replaces path settings in imported image object with new settings
        NEED TO RE-DO LATER """

    # Generate paths to output files
    self.params = init.params
    self.main_log = init.logfile
    self.input_base = init.input_base
    self.conv_base = init.conv_base
    self.int_base = init.int_base
    self.obj_base = init.obj_base
    self.fin_base = init.fin_base
    self.viz_base = init.viz_base
    self.obj_path = misc.make_image_path(self.conv_img, self.input_base, self.obj_base)
    self.obj_file = os.path.abspath(os.path.join(self.obj_path,
            os.path.basename(self.conv_img).split('.')[0] + ".int"))
    self.fin_path = misc.make_image_path(self.conv_img, self.input_base, self.fin_base)
    self.fin_file = os.path.abspath(os.path.join(self.fin_path,
            os.path.basename(self.conv_img).split('.')[0] + "_int.pickle"))
    self.final['final'] = self.fin_file
    self.final['img'] = self.conv_img
    if self.viz_base != None:
      self.viz_path = misc.make_image_path(self.raw_img, self.input_base, self.viz_base)
      self.viz_file = os.path.join(self.viz_path,
                   os.path.basename(self.conv_img).split('.')[0] + "_int.png")

    # Generate output folders and files:
    # Grid search subfolder or final integration subfolder
    if not os.path.isdir(self.obj_path):
      os.makedirs(self.obj_path)
    if not os.path.isdir(self.fin_path):
      os.makedirs(self.fin_path)

    # Grid search / integration log file
    self.int_log = os.path.join(self.fin_path,
                          os.path.basename(self.conv_img).split('.')[0] + '.log')

    # Visualization subfolder
    if self.viz_path != None and not os.path.isdir(self.viz_path):
        os.makedirs(self.viz_path)

    # Reset status to 'grid search' to pick up at selection (if no fail)
    if self.fail == None:
      self.status = 'grid search'

    return self
コード例 #2
0
ファイル: iota_image.py プロジェクト: keitaroyam/cctbx_fork
  def convert_image(self):
    """ Converts images into pickle format; crops and masks out beamstop if
        selected """

    self.status = 'imported'
    img_data, self.img_type = self.load_image()
    info = []

    self.log_info.append('\n{:-^100}\n'.format(self.raw_img))
    self.log_info.append('Imported image  : {}'.format(self.raw_img))
    self.log_info.append('Parameters      : BEAM_X = {:<4.2f}, BEAM_Y = {:<4.2f}, '\
                         'PIXEL_SIZE = {:<8.6f}, IMG_SIZE = {:<4} X {:<4}, '\
                         'DIST = {}'.format(img_data['BEAM_CENTER_X'],
                                            img_data['BEAM_CENTER_Y'],
                                            img_data['PIXEL_SIZE'],
                                            img_data['SIZE1'],
                                            img_data['SIZE2'],
                                            img_data['DISTANCE']))

    if self.params.image_conversion.beamstop != 0 or\
       self.params.image_conversion.beam_center.x != 0 or\
       self.params.image_conversion.beam_center.y != 0 or\
       self.params.image_conversion.distance != 0 or\
       self.params.image_conversion.rename_pickle_prefix != 'Auto' or\
       self.params.image_conversion.rename_pickle_prefix != None:
      self.status = 'unconverted'

    if self.img_type == 'unconverted':
      # Check for and/or create a converted pickles folder
      try:
        if not os.path.isdir(self.conv_base):
          os.makedirs(self.conv_base)
      except OSError:
        pass


      # Generate converted image pickle filename
      if self.params.image_conversion.rename_pickle_prefix != None:
        if str(self.params.image_conversion.rename_pickle_prefix).lower() == "auto":
          prefix = os.getlogin()
          suffix = int(os.path.basename(self.conv_base))
        else:
          prefix = self.params.image_conversion.rename_pickle_prefix
          suffix = int(os.path.basename(self.conv_base))
        self.conv_img = os.path.abspath(os.path.join(self.conv_base,
                    "{}_{}_{:05d}.pickle".format(prefix, suffix, self.img_index)))
      else:
        img_path = misc.make_image_path(self.raw_img, self.input_base, self.conv_base)
        self.conv_img = os.path.abspath(os.path.join(img_path,
             os.path.basename(self.raw_img).split('.')[0] + ".pickle"))

        # Make subfolder for converted pickles
        try:
          if not os.path.isdir(img_path):
            os.makedirs(img_path)
        except OSError:
          pass

      # Convert raw image to image pickle
      beamstop = self.params.image_conversion.beamstop
      distance = self.params.image_conversion.distance
      beam_center = [self.params.image_conversion.beam_center.x,
                     self.params.image_conversion.beam_center.y]
      square = self.params.image_conversion.square_mode
      if beam_center != [0,0]:
        pixel_size = img_data['PIXEL_SIZE']
        img_data['BEAM_CENTER_X'] = int(round(beam_center[0] * pixel_size))
        img_data['BEAM_CENTER_Y'] = int(round(beam_center[1] * pixel_size))
      if distance != 0:
        img_data['DISTANCE'] = distance
      if square != "None":
        img_data = self.square_pickle(img_data)
      if beamstop != 0:
        img_data = self.mask_image(img_data)
      self.log_info.append('Converted image : {}'.format(self.conv_img))
      self.log_info.append('Parameters      : BEAM_X = {:<4.2f}, BEAM_Y = {:<4.2f}, '\
                           'PIXEL_SIZE = {:<8.6f}, IMG_SIZE = {:<4} X {:<4}, '\
                           'DIST = {}'.format(img_data['BEAM_CENTER_X'],
                                              img_data['BEAM_CENTER_Y'],
                                              img_data['PIXEL_SIZE'],
                                              img_data['SIZE1'],
                                              img_data['SIZE2'],
                                              img_data['DISTANCE']))
      self.img_type = 'converted'
      self.input_base = self.conv_base

      # Save converted image pickle
      ep.dump(self.conv_img, img_data)

    self.status = 'converted'
    if self.params.image_triage.flag_on and self.status == 'converted':
      self.fail = self.triage_image()
      self.status = 'triaged'
    else:
      self.fail = None

    # Generate names for output folders and files:
    if not self.params.image_conversion.convert_only:
      self.obj_path = misc.make_image_path(self.conv_img, self.input_base, self.obj_base)
      self.obj_file = os.path.abspath(os.path.join(self.obj_path,
              os.path.basename(self.conv_img).split('.')[0] + ".int"))
      self.fin_path = misc.make_image_path(self.conv_img, self.input_base, self.fin_base)
      self.fin_file = os.path.abspath(os.path.join(self.fin_path,
        "int_{}.pickle".format(os.path.basename(self.conv_img).split('.')[0])))
      self.final['final'] = self.fin_file
      self.final['img'] = self.conv_img
      self.int_log = os.path.join(self.fin_path,
                        os.path.basename(self.conv_img).split('.')[0] + '.log')
      if self.viz_base != None:
        self.viz_path = misc.make_image_path(self.conv_img, self.input_base, self.viz_base)
        self.viz_file = os.path.join(self.viz_path,
            "int_{}.png".format(os.path.basename(self.conv_img).split('.')[0]))

      # Create actual folders (if necessary)
      try:
        if not os.path.isdir(self.obj_path):
          os.makedirs(self.obj_path)
        if not os.path.isdir(self.fin_path):
          os.makedirs(self.fin_path)
        if self.viz_base != None:
          if not os.path.isdir(self.viz_path):
            os.makedirs(self.viz_path)
      except OSError:
        pass

      # Save image object to file
      ep.dump(self.obj_file, self)

    return self