text: from __future__ import absolute_import, division, print_function
  # LIBTBX_SET_DISPATCHER_NAME phenix.find_reticular_twin_laws
  
  import sys
  from cctbx.sgtbx import reticular_twin_laws
  from iotbx.option_parser import option_parser
  
  def run(args, command_name="phenix.find_reticular_twin_laws"):
    command_line = (option_parser(
      usage=command_name+" [options] ",
      description="Example: %s data1.mtz" % command_name)
      .enable_show_defaults()
      .enable_symmetry_comprehensive()
      .option(None, "--max_index",
              action="store", dest="max_index",default=3,type="int",metavar="INT")
      .option(None,"--max_delta", dest="max_delta", default=5.0,type="float",metavar="FLOAT")
    ).process(args=args)
    co = command_line.options
    if (len(args) == 0):
      command_line.parser.show_help()
      return
  
  
    max_delta = co.max_delta
    max_index = co.max_index
    xs = command_line.symmetry
  
    print("----- Input symmetry -----")
    xs.show_summary()
    print()
    print(" Settings:")
    print("   max_delta: ", max_delta)
    print("   max_index: ", max_index)
    print()
    print("----- Finding reticular twin laws -----")
    print()
    print("""
  
  
  
     Reticular twin laws are grouped by their associated sublattice.
     The matrix M acting on the input (base) lattice is listed, as well as the metric R value (\%)
     between the symmetrized sublattice and the unsymmetrized sublattice.
     reticular twin laws of twin index 1, are 'normal' twin laws
  
  
    """)
    tl = reticular_twin_laws.reticular_twin_laws(xs,max_delta,max_index)
    print("--------------- Twin law listing ---------------")
    print()
    tl.show()
  
  
  
  
  
  if __name__ == "__main__":
    run(sys.argv[1:])
  