コード例 #1
0
        def copyfree(self):
            '''Copy the free column from freein into hklin -> hklout.'''

            if not self._hklin_files:
                raise RuntimeError('no hklin files defined')

            if len(self._hklin_files) > 1:
                raise RuntimeError('can have only one hklin to update')

            hklin = self._hklin_files[0]

            # get the resolution limit to give as a limit for the FreeR
            # column

            md = Mtzdump()
            md.set_working_directory(self.get_working_directory())
            md.set_hklin(hklin)
            md.dump()
            resolution_range = md.get_resolution_range()

            self.check_hklout()
            if self._freein is None:
                raise RuntimeError('freein not defined')
            if self._freein_column is None:
                raise RuntimeError('freein column not defined')

            self.add_command_line('hklin1')
            self.add_command_line(self._freein)
            self.add_command_line('hklin2')
            self.add_command_line(hklin)
            self.start()

            self.input('labin file_number 1 E1=%s' % self._freein_column)
            self.input('resolution file_number 1 %f %f' % resolution_range)
            self.input('labin file_number 2 all')

            self.close_wait()

            try:
                self.check_for_errors()
                self.check_ccp4_errors()

            except RuntimeError as e:
                # something went wrong; remove the output file
                try:
                    os.remove(self.get_hklout())
                except Exception:
                    pass
                raise e

            return self.get_ccp4_status()
コード例 #2
0
ファイル: Chef.py プロジェクト: hainm/xia2
      assert(dose_column in columns)
      continue

    if 'DOSE' in columns:

      dose_range = md.get_column_range('DOSE')[:2]
      if dose_range[0] != dose_range[1]:
        dose_column = 'DOSE'

    if 'BATCH' in columns and not dose_column:
      dose_column = 'BATCH'

    if not dose_column:
      raise RuntimeError, 'no DOSE/BATCH column found'

    dmin = min(md.get_resolution_range())

    if overall_dmin is None:
      overall_dmin = dmin
    if dmin > overall_dmin:
      overall_dmin = dmin

  Stdout.write('Selected column: %s' % dose_column)

  for argv in sys.argv[1:]:

    chef.add_hklin(argv)
    chef.set_labin(dose_column)

  chef.set_resolution(overall_dmin)
  chef.write_log_file('chef.log')
コード例 #3
0
ファイル: Chef.py プロジェクト: lizhen-dlut/xia2
      assert(dose_column in columns)
      continue

    if 'DOSE' in columns:

      dose_range = md.get_column_range('DOSE')[:2]
      if dose_range[0] != dose_range[1]:
        dose_column = 'DOSE'

    if 'BATCH' in columns and not dose_column:
      dose_column = 'BATCH'

    if not dose_column:
      raise RuntimeError('no DOSE/BATCH column found')

    dmin = min(md.get_resolution_range())

    if overall_dmin is None:
      overall_dmin = dmin
    if dmin > overall_dmin:
      overall_dmin = dmin

  Stdout.write('Selected column: %s' % dose_column)

  for argv in sys.argv[1:]:

    chef.add_hklin(argv)
    chef.set_labin(dose_column)

  chef.set_resolution(overall_dmin)
  chef.write_log_file('chef.log')