import argparse

def params_setup():
    argparser = argparse.ArgumentParser()
    argparser.add_argument('--mode', type=str, default='train')
    argparser.add_argument('--train_kickoff', type=str, default='first_time')
    argparser.add_argument('--train_url', type=str, default='./train.csv')
    argparser.add_argument('--meta_url', type=str, default='./building_metadata.csv')
    argparser.add_argument('--best_checkpoint_path', type=str, default='./best_ckpt/best_ckpt')
    argparser.add_argument('--every_epoch_checkpoint_path', type=str, default='./every_ckpt/every_ckpt')
    argparser.add_argument('--tf_records_url', type=str, default='./tfrecords')
    argparser.add_argument('--model_num_layers', type=int, default=1)
    argparser.add_argument('--state_num_units', type=int, default=50)
    argparser.add_argument('--involve_dense_in_encoder', type=bool, default=False)
    argparser.add_argument('--num_dense_in_encoder', type=int, default=100)
    argparser.add_argument('--add_dropout_in_encoder', type=bool, default=True)
    argparser.add_argument('--encoder_dropout_rate', type=int, default=0.2)
    argparser.add_argument('--decoder_dropout_rate', type=float, default=0.2)
    argparser.add_argument('--attn_vec_size', type=int, default=50)
    argparser.add_argument('--embedding_len', type=int, default=50)
    argparser.add_argument('--decay_lr', type=bool, default=False)
    argparser.add_argument('--lr_decay_rate', type=float, default=0.995)
    argparser.add_argument('--lr', type=float, default=0.0001)
    argparser.add_argument('--max_global_norm', type=float, default=5.)
    argparser.add_argument('--init_weight', type=float, default = 0.1)
    argparser.add_argument('--batch_size', type=int, default=64)
    argparser.add_argument('--num_epochs', type=int, default = 200)
    argparser.add_argument('--epochs_to_wait', type=int, default = 30)
    argparser.add_argument('--max_saver', type=int, default=1)
    argparser.add_argument('--TS_start_date', type=str, default='2016-01-01')
    argparser.add_argument('--TS_end_date', type=str, default='2016-12-31 23:00:00')
    argparser.add_argument('--train_end_date', type=str, default='2016-10-31 23:00:00')
    argparser.add_argument('--valid_start_date', type=str, default='2016-9-28 00:00:00')    
    argparser.add_argument('--max_zeros_in_example', type=float, default=0.1)
    argparser.add_argument('--building_total_len', type=int, default=8784)
    argparser.add_argument('--features_extractor_len', type=int, default=10)
    argparser.add_argument('--sampling_frequency', type=str, default='4H')    
    argparser.add_argument('--in_sequence_window', type=int, default=390)
    argparser.add_argument('--out_sequence_window', type=int, default=90)    
    argparser.add_argument('--min_std', type=float, default = 2.)

    para = argparser.parse_args()
    
    return para