#!/usr/bin/env python
# encoding: utf-8

from __future__ import print_function
import argparse
import numpy as np
from data_loader import DataLoader
from sklearn.metrics.pairwise import euclidean_distances

def median_heuristic(X, beta=0.5):
    max_n = min(30000, X.shape[0])
    D2 = euclidean_distances(X[:max_n], squared=True)
    med_sqdist = np.median(D2[np.triu_indices_from(D2, k=1)])
    beta_list = [beta**2, beta**1, 1, (1.0/beta)**1, (1.0/beta)**2]
    return [med_sqdist * b for b in beta_list]


parser = argparse.ArgumentParser()
parser.add_argument('--data_path', type=str, required=True, help='path to data in matlab format')
parser.add_argument('--trn_ratio', type=float, default=0.6,help='how much data used for training')
parser.add_argument('--val_ratio', type=float, default=0.8,help='how much data used for validation')
parser.add_argument('--wnd_dim', type=int, required=True, default=10, help='window size (past and future)')
parser.add_argument('--sub_dim', type=int, default=1, help='dimension of subspace embedding')
parser.add_argument('--cuda', type=str, default=True, help='use gpu or not')
parser.add_argument('--batch_size', type=int, default=128, help='batch size for training')
args = parser.parse_args()
print(args)

Data = DataLoader(args, trn_ratio=args.trn_ratio, val_ratio=args.val_ratio)
median_list = median_heuristic(Data.Y_subspace, beta=.5)
print(median_list)