def all_obs(bins512 = False, date_lim=False):
  if bins512: template = '/data1/Daniele/B2217+47/ephemeris/160128_profile_template_512.std'
  else: template = '/data1/Daniele/B2217+47/ephemeris/151109_profile_template.std'
  template = psrchive.Archive_load(template).get_data().flatten()

  dates,obs_list = cum_profile.plot_lists(template=template, bin_reduc=bins512, date_lim=date_lim)
  observations = np.array(obs_list)
  date_list = np.array(dates)

  #Remove bad observation
  #if bins512:
  #  idx = np.where(date_list == datetime.date(2011,10,30))[0][0]
  #  date_list = np.hstack((date_list[:idx],date_list[idx+1:]))
  #  observations = np.vstack((observations[:idx],observations[idx+1:]))

  #Add earliest LOFAR observations
  old_date, old_obs = cum_profile.load_early_obs(template=template,bin_reduc=bins512)
  old_date = np.array(old_date)
  old_obs = np.array(old_obs)
  #if bins512:
  #  old_obs = np.mean(np.reshape(old_obs,(old_obs.shape[0],old_obs.shape[1]/2,2)),axis=2)

  observations = np.vstack((old_obs,observations))
  date_list = np.hstack((old_date,date_list))
  idx = np.argsort(date_list)
  date_list = date_list[idx]
  observations = observations[idx]

  return date_list,observations
def weak_comp():
  date_lim = [datetime.date(2013,01,01),datetime.date(2017,01,01)]
  dates,obs_list = cum_profile.plot_lists(template=template,date_lim=date_lim)
  
  observations = np.array(obs_list)
  date_list = np.array(dates)
  idx = np.argsort(date_list)
  date_list = date_list[idx]
  observations = observations[idx]
  
  #Average over dt
  avg = []
  avg_date = []
  avg_num = []
  date0 = date_list[0]
  dt = 60
  for idx,date in enumerate(date_list):
    if date - date0 < datetime.timedelta(dt):
      temp.append(observations[idx])
    else:
      if len(temp) > 5: avg.append(np.mean(temp,axis=0))
      if len(temp) > 5: avg_date.append(date0+datetime.timedelta(dt/2))
      if len(temp) > 5: avg_num.append(len(temp))
      temp = []
      date0 += datetime.timedelta(dt)
  #avg.append(np.mean(temp,axis=0))
  #avg_date.append(date0+datetime.timedelta(dt/2))
  avg = np.array(avg)
  avg_date = np.array(avg_date)
def shifting_post():
  date_lim = [datetime.date(2000,01,01),datetime.date(2013,01,01)]
  dates,obs_list = cum_profile.plot_lists(template=template,date_lim=date_lim)

  observations = np.array(obs_list)
  date_list = np.array(dates)
  idx = np.argsort(date_list)
  date_list = date_list[idx]
  observations = observations[idx]

  date_list = np.hstack((date_list[0:2],date_list[3],date_list[14:]))
  observations = np.vstack((observations[0:2],np.mean(observations[2:14],axis=0),observations[14:]))
  old_obs = ['L25192','L22946','L08909']
  for obs in old_obs:
    file = '/data1/Daniele/B2217+47/Products/{obs}/{obs}_Profile.b512.dat'.format(obs=obs)
    prof = np.loadtxt(file,skiprows=30,usecols=[1,])
    prof = normalize_profile(prof,template)
    observations = np.vstack((prof,observations))
  date_list = np.hstack(([datetime.date(2010,07,28),datetime.date(2011,01,25),datetime.date(2011,04,13)],date_list))

  observations = observations[:,200:320]
  for n in observations:
    n -= np.median(n)
    n /= n.max()
import numpy as np
import matplotlib.pyplot as plt
import psrchive
import matplotlib as mpl
import cum_profile
import os
from mpl_toolkits.axes_grid1 import make_axes_locatable

plt.rc('font',size=15,weight='bold')
bins512 = False

if bins512: template = '/data1/Daniele/B2217+47/ephemeris/160128_profile_template_512.std'
else: template = '/data1/Daniele/B2217+47/ephemeris/151109_profile_template.std'
template = psrchive.Archive_load(template).get_data().flatten()

dates,obs_list = cum_profile.plot_lists(template=template,bin_reduc=bins512)
observations = np.array(obs_list)
date_list = np.array(dates)

#Remove bad observation
if bins512:
  idx = np.where(date_list == datetime.date(2011,10,30))[0][0]
  date_list = np.hstack((date_list[:idx],date_list[idx+1:]))
  observations = np.vstack((observations[:idx],observations[idx+1:]))

#Add earliest LOFAR observations
old_date, old_obs = cum_profile.load_early_obs(template=template,bin_reduc=bins512)
old_date = np.array(old_date)
old_obs = np.array(old_obs)

observations = np.vstack((old_obs,observations))