dials.import で処理の準備をする

dials.import *.osc

とすると、画像のヘッダを元に sweep.json と param.phil が作られる。

sweep.json

{
  "__id__": "imageset", 
  "template": "#####.osc", 
  "beam": {
    "direction": [ 0.0, 0.0, 1.0 ], 
    "wavelength": 1.5418000221252441, 
    "divergence": 0.0, 
    "sigma_divergence": 0.0
  }, 
  "detector": [
    {
      "type": "SENSOR_IMAGE_PLATE", 
      "name": "Panel", 
      "fast_axis": [ 0.0, 1.0, 0.0 ], 
      "slow_axis": [ -1.0, 0.0, 0.0 ], 
      "origin": [ 149.61999734669917, -155.71001208588496, -140.0 ], 
      "pixel_size": [ 0.10000000149011612, 0.10000000149011612 ], 
      "image_size": [ 3000, 3000 ], 
      "trusted_range": [ 0.0, 1000000.0 ]
    }
  ], 
  "goniometer": {
    "rotation_axis": [ 1.0, 0.0, 0.0 ], 
    "fixed_rotation": [ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 ]
  }, 
  "scan": {
    "image_range": [ 1, 3 ], 
    "oscillation": [ 95.0, 0.5 ], 
    "exposure_time": [ 1.0 ], 
    "epochs": [ 1315782000.0, 0.0, 0.0 ]
  }
}

のような感じで、実験のメタデータである。

param.phil は、解析のパラメータ(積分アルゴリズムの選択とか)のようだ。

logging {
  version = 1
  disable_existing_loggers = True
  formatters {
    standard {
      format = "%(asctime)s [%(levelname)s] %(name)s: %(message)s"
    }
  }
  handlers {
    console {
      level = DEBUG INFO *WARN ERROR CRITICAL NOTSET
      class = "logging.StreamHandler"
      formatter = *standard
    }
    file {
      level = DEBUG *INFO WARN ERROR CRITICAL NOTSET
      class = "logging.FileHandler"
      formatter = *standard
      directory = "~/.dials"
    }
  }
  loggers {
    default {
      handlers = *console *file
      level = *DEBUG INFO WARN ERROR CRITICAL NOTSET
      propagate = True
    }
  }
}
lookup {
  mask = None
  gain_map = None
  dark_map = None
}
spotfinder {
  scan_range = None
  threshold {
    algorithm = *xds unimodal lui
    kernel_size = 3 3
    sigma_background = 6
    sigma_strong = 3
    times = 5
    block_size = 5 12
    shift = 10
    dimensions = *2d 3d
  }
  filter {
    min_spot_size = 6
    max_separation = 2
    d_min = None
    d_max = None
  }
  image_viewer = False
}
integration {
  algorithm = sum2d *sum3d sum_rs fit_2d fit_3d fit_rs
  shoebox {
    n_blocks = 1
    n_sigma = 3
    kernel_size = 3 3
    sigma_background = 6
    sigma_strong = 3
  }
  filter {
    by_bbox = False
    by_zeta = 0.05
    by_xds_small_angle = False
    by_xds_angle = False
  }
  background {
    algorithm = none *xds fable flat inclined esmeralda
    min_pixels = 10
    n_sigma = 3
  }
  reciprocal_space {
    grid_size = 5
  }
  profile {
    reference_frame_interval = 10
    reference_signal_threshold = 0.02
  }
  mosflm {
    nblocks = 4
  }
}
refinement {
  parameterisation {
    beam {
      fix = all *in_spindle_plane
    }
    crystal {
      fix = all cell orientation
      scan_varying = False
      num_intervals = 5
    }
    detector {
      panels = *automatic single multiple
      fix = all position orientation
    }
    prediction {
      space = *XYPhi XY
    }
  }
  refinery {
    engine = SimpleLBFGS LBFGScurvs *GaussNewtonIterations LevMarIterations
    track_step = False
    track_gradient = False
    log = None
    max_iterations = None
  }
  target {
    implementation = *basic XY
    rmsd_cutoff = *fraction_of_bin_size absolute
    bin_size_fraction = 0.33333
    absolute_cutoffs = None
  }
  reflections {
    implementation = *rotation stills
    reflections_per_degree = 50
    maximum_number_of_reflections = None
    use_all_reflections = False
    random_seed = 42
    minimum_number_of_reflections = 20
    inclusion_cutoff = 0.1
  }
}