#! /usr/bin/python3.6
# -*- coding: utf-8 -*-


"""
"""

import argparse

from nenupy.read import SST, BST
from nenupy.beam import SSTbeam, BSTbeam
from nenupy.skymodel import SkyModel
from nenupy.simulation import Transit, Tracking


__author__ = 'Alan Loh'
__copyright__ = 'Copyright 2018, nenupy'
__credits__ = ['Alan Loh']
__license__ = 'MIT'
__version__ = '0.0.1'
__maintainer__ = 'Alan Loh'
__email__ = 'alan.loh@obspm.fr'
__status__ = 'WIP'



if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('-o', '--obs', type=str, help="Observation directory/file", required=True)
    parser.add_argument('-f', '--freq', type=float, default=50, help="Frequency in MHz", required=False)
    parser.add_argument('-p', '--polar', type=str, default='NW', help="Polarization", required=False)
    parser.add_argument('-t0', '--tstart', type=str, default=None, help="Start time", required=False)
    parser.add_argument('-t1', '--tstop', type=str, default=None, help="Stop time", required=False)
    parser.add_argument('-m', '--ma', type=int, default=0, help="Mini-Array name index", required=False)
    parser.add_argument('-a', '--ana', type=int, default=-1, help="Analogical beam index", required=False)
    parser.add_argument('-d', '--digi', type=int, default=-1, help="Numerical beam index", required=False)
    parser.add_argument('-dt', '--dt', type=int, default=60, help="Simulation time steps (sec)", required=False)
    args = parser.parse_args()
    
    try:
        # ------ SST Observation ------ #
        obs = SST(obsfile=args.obs)
        obs.select(freq=args.freq, polar=args.polar, ma=args.ma) 
        beam = SSTbeam(obs)
    except:
        # ------ BST Observation ------ #
        obs = BST(obsfile=args.obs)
        obs.select(freq=args.freq, polar=args.polar, abeam=args.ana, dbeam=args.digi)
        beam = BSTbeam(obs) 

    sm = SkyModel()
    sm.gsm2008(freq=obs.freq)
    if obs.type == 'transit':
        simul = Transit(obs=obs, beam=beam, skymodel=sm, start=args.tstart, stop=args.tstop)
    else:
        simul = Tracking(obs=obs, skymodel=sm, start=args.tstart, stop=args.tstop)
    simul.dt = args.dt
    simul.plotProfile()