galpy is a Python package for galactic dynamics. It supports orbit integration in a variety of potentials, evaluating and sampling various distribution functions, and the calculation of action-angle coordinates for all static potentials. galpy
is an astropy affiliated package and provides full support for astropy’s Quantity framework for variables with units.
Jo Bovy - bovy at astro dot utoronto dot ca
See AUTHORS.txt for a full list of contributors.
If you find this code useful in your research, please let me know. If you use galpy in a publication, please cite Bovy (2015) and link to http://github.com/jobovy/galpy. See the acknowledgement documentation section for a more detailed guide to citing parts of the code. Thanks!
The latest documentation can be found
here. You can also join the
galpy slack community for any questions
related to galpy
; join
here.
If you find any bug in the code, please report these using the Issue Tracker or by joining the galpy slack community.
If you are having issues with the installation of galpy
, please first
consult the Installation
FAQ.
galpy
supports Python 3. Specifically, galpy supports Python 3.8, 3.9, 3.10, 3.11,
and 3.12. GitHub Actions CI builds regularly check support for
Python 3.12 (and of 3.8, 3.9, 3.10, and 3.11 using a more limited, core set of tests)
on Linux and Windows (and 3.12 on Mac OS). Python 2.7 is no longer supported.
This package requires Numpy, Scipy, and Matplotlib. Certain advanced features require the GNU Scientific Library (GSL), with action calculations requiring version 1.14 or higher. Other optional dependencies include:
- Support for providing inputs and getting outputs as Quantities with units is provided through
astropy
. - Querying SIMBAD for the coordinates of an object in the
Orbit.from_name
initialization method requiresastroquery
. - Displaying a progress bar for certain operations (e.g., orbit integration of multiple objects at once) requires
tqdm
. - Plotting arbitrary functions of Orbit attributes requires
numexpr
. - Speeding up the evaluation of certain functions in the C code requires
numba
. - Constant-anisotropy DFs in
galpy.df.constantbetadf
requireJAX
. - Use of
SnapshotRZPotential
andInterpSnapshotRZPotential
requirespynbody
.
Other parts of the code may require additional packages and you will be alerted by the code if they are not installed.
If you are interested in contributing to galpy's development, take a look at this brief guide on the wiki. This will hopefully help you get started!
Some further development notes can be found on the wiki. This includes a list of small and larger extensions of galpy that would be useful here as well as a longer-term roadmap here. Please let the main developer know if you need any help contributing!