Code developed for Sanders & Binney (2014)
This code is designed to estimate actions, angles and frequencies from an orbit time series. Full details are given in Sanders & Binney (2014) but here is a brief overview. The code takes a series of phase-space points (x_i,v_i), and finds the angle-action coordinates in the best-fitting toy potential. If the orbit is a loop this toy potential is the isochrone, whilst if it is a box it is the triaxial harmonic oscillator. The true angle-actions are related to these toy variables via a generating function. The Fourier components of the generating function can be solved for by solving the equations generated by each time sample.
The main routine is find_actions() in genfunc_3d.py. This takes a series of phase-space points, finds the toy angle-actions (toy_potentials.py) and then solves the equations (solver.py).
In genfunc_3d.py there are test cases which are investigated in the paper. These rely on finding the true actions and frequencies in a triaxial St"ackel potential. The code for doing this is in new_struct and requires the Gnu Science Library and boost python. The code for estimating the actions and frequencies does not rely on this code -- it is purely for test purposes.