#!/usr/bin/env python
# xia2merger.py
#   Copyright (C) 2011 Diamond Light Source, Graeme Winter
#
#   This code is distributed under the BSD license, a copy of which is
#   included in the root directory of this package.
#
# Wrapper to allow code written to merge reflections to be externalised...

import os
import sys
import time

assert('XIA2_ROOT' in os.environ)

if not os.environ['XIA2_ROOT'] in sys.path:
  sys.path.append(os.environ['XIA2_ROOT'])

from Toolkit.Merger import merger

if __name__ == '__main__':
  import argparse

  parser = argparse.ArgumentParser()

  parser.add_argument("hklin", type = str,
                      help = "input reflection file")
  parser.add_argument("-n", "--nbins", type = float,
                      help = "number of resolution bins")
  parser.add_argument("-r", "--rmerge", type = float,
                      help = "limit on Rmerge")
  parser.add_argument("-c", "--completeness", type = float,
                      help = "limit on completeness [0,1]")
  parser.add_argument("-i", "--isigma", type = float,
                      help = "limit on I/sigma")
  parser.add_argument("-m", "--misigma", type = float,
                      help = "limit on Mn(I/sigma)")
  args = parser.parse_args()

  if args.nbins:
    nbins = args.nbins
  else:
    nbins = 100

  m = merger(args.hklin)
  m.calculate_resolution_ranges(nbins = nbins)

  if args.completeness:
    print 'COMPLETENESS %f' % m.resolution_completeness(
        limit = args.completeness)

  if args.rmerge:
    print 'RMERGE %f' % m.resolution_rmerge(
        limit = args.rmerge)

  if args.isigma:
    print 'ISIGMA %f' % m.resolution_unmerged_isigma(
        limit = args.isigma)

  if args.misigma:
    print 'MISIGMA %f' % m.resolution_merged_isigma(
        limit = args.misigma)
