# LIBTBX_SET_DISPATCHER_NAME phenix.ensembler
# LIBTBX_SET_DISPATCHER_NAME phaser.ensembler
# LIBTBX_PRE_DISPATCHER_INCLUDE_SH PHENIX_GUI_ENVIRONMENT=1
# LIBTBX_PRE_DISPATCHER_INCLUDE_SH export PHENIX_GUI_ENVIRONMENT

from phaser import ensembler
from phaser import cli
from phaser import output

parser = cli.PCLIParser(
    master_phil = ensembler.PHIL_MASTER,
    description = "Create ensemble by superposing chains",
    usage = "%(prog)s [options] phils"
    )

parser.add_argument(
    "-v", "--verbosity",
    action = "store",
    choices = output.SingleStream.LEVEL_FOR.keys(),
    default = "INFO",
    help = "verbosity level"
    )

parser.add_argument(
    "--version",
    action = "version",
    version = "%s %s" % ( ensembler.PROGRAM, ensembler.VERSION )
    )

if __name__ == "__main__":
    params = parser.parse_args()
    
    from libtbx.utils import Sorry
    import sys
    
    try:
        ensembler.run(
            args = params.phils,
            out = sys.stdout,
            verbosity = output.SingleStream.LEVEL_FOR[ params.verbosity ]
            )
        
    except Sorry:
        raise
    
    except Exception, e:
        print "An internal error has occurred"
        print "The traceback is as follows:"
        import traceback
        print traceback.format_exc()
        print "Terminating..."
        sys.exit( 1 )

