"""Basic testing to ensure a pair of galaxies follows the correct orbit."""

import matplotlib.pyplot as plt
import numpy as np
from scipy.signal import savgol_filter

from analysis import utils

f, ax = plt.subplots(1, 1)

time = []
deviations = []

for n in np.linspace(100, 10000, 100):
	# Load the data
	data = utils.loadData('orbit', int(n))
	# Find the deviation
	# The analytical orbit is r = 1/(1 + cos(phi))
	time.append(data['t'])
	phi = np.arctan2(data['r_vec'][0,1], data['r_vec'][0,0])
	truthr = 1/(1 + np.cos(phi))
	print(truthr, np.linalg.norm(data['r_vec'][0,:2]))
	deviation = np.abs(np.linalg.norm(data['r_vec'][0,:2]) - truthr)
	deviations.append(deviation)

# Plot
deviations = savgol_filter(deviations, 11, 3)
ax.plot(time, deviations, color='darkorange')
utils.stylizePlot([ax])
utils.setAxes(ax, x='Time', y='Error in radius', 
	xcoords=(.85,-0.08), ycoords=(-0.1,.75))
ax.set_yscale('log')
ax.set_xlim(0, time[-1])
ax.set_ylim(1E-5, None)

#plt.legend(loc='upper left')
plt.show()
	

