#!/usr/bin/env python

import argparse

import numpy as np
import pandas as pd

from trilearn import mh_greenthomas

def main(trajectory_length, data_filename, seed, randomize, reps, parallel, output_directory, **args):
    if seed is not None:
        np.random.seed(seed)

    df = pd.read_csv(data_filename, sep=',', header=None)
    if parallel is True:
        mh_greenthomas.sample_trajectories_ggm_parallel(df, trajectory_length, randomize=randomize, reps=reps,
                                                        output_directory=output_directory)
    else:
        mh_greenthomas.sample_trajectories_ggm_to_file(df, trajectory_length, randomize=randomize, reps=reps,
                                               output_directory=output_directory)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument(
        '-M', '--trajectory_length',
        type=int, required=True, nargs='+',
        help="Number of Metropolis-Hastings samples"
        )
    parser.add_argument(
        '-f', '--data_filename',
        required=True,
        help="Filename of dataset"
        )
    parser.add_argument(
        '-s', '--seed',
        type=int, required=False
        )
    parser.add_argument(
        '-r', '--randomize',
        type=int, required=False, nargs='+', default=[1000],
        help = "Randomize every r iteration."
        )
    parser.add_argument(
        '-o', '--output_directory',
        required=False, default=".",
        help="Output directory"
        )
    parser.add_argument(
        '--reps',
        type=int, required=False, default=1,
        help='Number of trajectories to sample for each parameter setting'
    )
    parser.add_argument(
        '--parallel',
        required=False, action="store_true", default=False
    )

    args = parser.parse_args()
    main(**args.__dict__)