__author__ = 'omniscope'
import numpy as np

import simulate_visibilities.simulate_visibilities as sv
import time

bnside = 256
freqs = range(110, 200, 10)

raw_beam_data = np.concatenate([np.fromfile('/home/omniscope/data/mwa_beam/healpix_%i_%s.bin' % (bnside, p), dtype='complex64').reshape(
    (len(freqs), 12 * bnside ** 2, 2)) for p in ['x', 'y']], axis=-1).transpose(0, 2, 1) #freq by 4 by pix
sv.plot_jones(raw_beam_data[5])


vstest = sv.Visibility_Simulator()
vstest.initial_zenith = np.array([0, np.pi/4])
tm = time.time()
beam_heal_equ = np.array(
            [sv.rotate_healpixmap(beam_healpixi, 0, np.pi / 2 - vstest.initial_zenith[1], vstest.initial_zenith[0]) for
             beam_healpixi in raw_beam_data[5]])
print (time.time()-tm) / 60.
sv.plot_jones(beam_heal_equ)

# print "alpha0", sv.ctos(alpha0)/PI
# phi1t = np.cross(local_zenith_vect, -ps_vec)
#
# if np.min(la.norm(local_zenith_vect-(-ps_vec), axis = -1)) == 0.:
#     if la.norm(np.cross([0,0,1], -ps_vec)) != 0:
#         phi1t[np.argmin(la.norm(local_zenith_vect-(-ps_vec), axis = -1))] = np.cross([0,0,1], -ps_vec)
#     else:
#         phi1t[np.argmin(la.norm(local_zenith_vect-(-ps_vec), axis = -1))] = np.array([0, 1, 0])
# phi1t = phi1t / (la.norm(phi1t, axis=-1))
# print "phi1t", sv.ctos(phi1t)/PI
# Ranglet = np.arctan2(phi1t.dot(alpha0), phi1t.dot(phi0))
# print "final", Ranglet/PI
# sys.exit(0)


sv.plot_jones(local_beam(160))

vstest = sv.Visibility_Simulator()
vstest.initial_zenith = np.array([0, 0])

beam_heal_equ = np.array(
            [sv.rotate_healpixmap(beam_healpixi, 0, np.pi / 2 - vstest.initial_zenith[1], vstest.initial_zenith[0]) for
             beam_healpixi in local_beam(160)])
print beam_heal_equ.shape

# ps_xxxyyxyy = [1,0,0,0]
# plt.subplot(2,1,1)
# plt.plot(np.abs(vstest.calculate_pol_pointsource_visibility(0, 0, [0,1,0], 160, beam_healpix_hor=local_beam(160), tlist=np.arange(-12,12,.01)%24)[0].dot(ps_xxxyyxyy)).reshape(4,2400).transpose())
# plt.subplot(2,1,2)
# plt.plot(np.angle(vstest.calculate_pol_pointsource_visibility(0, 0, [0,1,0], 160, beam_healpix_hor=local_beam(160), tlist=np.arange(-12,12,.01)%24)[0].dot(ps_xxxyyxyy)).reshape(4,2400).transpose())
# plt.show()