def run_cli():
    """Usage: python draw_database.py DATASET_NAME OUTPUT_name

    Draws the named database.
    """

    import sys

    if len(sys.argv) < 2:
        print run_cli.__doc__
        sys.exit()

    from common import cliutils
    import wgenerator

    args, kwargs = cliutils.extract_variables(sys.argv[1:], "DATASET_NAME OUTPUT_NAME")
    
    if len(args) < 1:
        print "ERROR: Dataset name was not specified."
        sys.exit(1)

    db_name = args[0]
    out_name = args[1]

    db = wdb.StateTransitionDatabase(db_name)
    from_states, to_states = numpy.split(db.get_all_transitions(0), 2)
    """
    from_states[:,0] = 0
    from_states[:,1] = 0
    to_states[:,0] = 0
    to_states[:,1] = 0
    """

    renderer = GWhiskerDatabaseRenderer(5, 150, 5, translate=(256-75, 256), particle_alpha=0.0001)

    imsurf=cairo.ImageSurface(cairo.FORMAT_ARGB32, 512,512)
    ctx = cairo.Context(imsurf)
    #for btm, top in zip(numpy.linspace(0, 1-1.0/8, 8), numpy.linspace(1.0/8, 1, 8)):
    for states, name in ((from_states, "_from"), (to_states, "_to")):
        ctx.identity_matrix()
        ctx.rectangle(0, 0, 512, 512)
        ctx.set_source_rgb(0, 0, 0)
        ctx.fill()
        for s in states:
            #if 0.00002*btm < abs(s[0]) and abs(s[0]) < 0.00002*top:
            renderer.render(ctx, s, alpha=0.05)
	    imsurf.write_to_png(make_run_path(os.path.join("debug","db","%s.png"%(out_name + name))))
def run_cli():
    """Usage: python generate.py GENERATOR_CLASS DATASET_NAME [-o NUM_OBJECTS]
    [-n NUM_TRANSITIONS] [-f NUM_FRAMES] [-m NUM_MOVIES] [--dt TIMESTEP_SIZE]
    [--debug (True|False)] [generator options...]")

    Generates a video and places it in VIDEO_DIRECTORY, as specified in
    common.settings. Also generates a training database and places it in
    DATA_DIRECTORY.

    Generators may have their own parameters, which can be specified after those
    defined here.
    """

    import sys

    if len(sys.argv) < 2:
        print run_cli.__doc__
        sys.exit()

    from common import cliutils
    import wgenerator

    generator_class_name = sys.argv[1]
    helping = False

    if generator_class_name == "help":
        helping = True
        if len(sys.argv) < 3:
            print "What to you want help with?"
            sys.exit(1)
        generator_class_name = sys.argv[2]

    generator_class = None
    try:
        generator_class = getattr(wgenerator, generator_class_name)
    except AttributeError:
        print "Unknown tracker:", generator_class_name
        sys.exit(1)

    if helping:
        print generator_class.__doc__
        sys.exit(0)

    try:
        cli_def = "DATASET_NAME [-o number_of_objects] [-n number_of_transitions] [-f number_of_frames] [-m number_of_movies] [--dt dt] [--debug debug]"
        try:
            cli_def += " " + generator_class.CUSTOM_CLI_DEFINITION
        except AttributeError:
            pass

        args, kwargs = cliutils.extract_variables(sys.argv[2:], cli_def)
    
        generator = generator_class(*args, **kwargs)
        generator.generate()
        sys.exit(1)
    except TypeError:
        print "Syntax error, please consult the documentation for the tracker %s."%(generator_class_name)
        print
        print "Docstring for %s:"%(generator_class_name)
        print
        print generator_class.__doc__