from __future__ import division
import sys
from iotbx import mtz
from iotbx import reflection_file_reader 
from iotbx import reflection_file_utils
from libtbx.test_utils import approx_equal

def run():
  mtz_file = reflection_file_reader.any_reflection_file("input.mtz")
  mtz_as_miller_array = mtz_file.as_miller_arrays() 
  f_obs_1 = mtz_as_miller_array[0]
  #
  mtz_out = f_obs_1.as_mtz_dataset(column_root_label="F_iotbx")
  mtz_out.mtz_object().write("output.mtz")
  #
  mtz_file = reflection_file_reader.any_reflection_file("output.mtz")
  mtz_as_miller_array = mtz_file.as_miller_arrays() 
  f_obs_2 = mtz_as_miller_array[0]
  #
  sz1 = f_obs_1.data().size()
  assert f_obs_1.data().size() == f_obs_2.data().size()
  f_obs_1, f_obs_2 = f_obs_1.common_sets(f_obs_2)
  assert f_obs_1.indices().all_eq(f_obs_2.indices())
  sz2 = f_obs_1.data().size()
  assert sz1 == sz2
  assert approx_equal(f_obs_1.data(), f_obs_2.data())
  assert approx_equal(f_obs_1.sigmas(), f_obs_2.sigmas())
  
  
if (__name__ == "__main__"):
  run()

