#!/usr/bin/env python

"""Create some input files which an HMM algorithm might find useful.
Each of the three available demos creates three files.
"""

import argparse
import numpy as np

from hmmus import demo


def main(args):
    # instantiate a demo given the user choice
    if args.demo == 'smith':
        mydemo = demo.SmithDemo()
    elif args.demo == 'eddy':
        mydemo = demo.EddyDemo()
    elif args.demo == 'durbin':
        mydemo = demo.DurbinDemo()
    else:
        raise TypeError
    # create the files using the demo
    with open(args.likelihoods_out, 'wb') as fout:
        mydemo.get_likelihoods().tofile(fout)
    with open(args.transitions_out, 'wb') as fout:
        mydemo.get_transitions().tofile(fout)
    with open(args.distribution_out, 'wb') as fout:
        mydemo.get_distribution().tofile(fout)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('--likelihoods_out', default='likelihoods.bin',
            help='likelihoods are written to this file')
    parser.add_argument('--transitions_out', default='transitions.bin',
            help='the transition matrix is written to this file')
    parser.add_argument('--distribution_out', default='distribution.bin',
            help='the initial distribution is written to this file')
    parser.add_argument('demo',
            choices=('smith', 'eddy', 'durbin'),
            default='eddy',
            help='choose a demo')
    main(parser.parse_args())
