# DF (`galpy.df`)¶

`galpy.df` contains tools for dealing with distribution functions of stars in galaxies. It mainly contains a number of classes that define different types of distribution function, but `galpy.df.jeans` also has some tools for solving the Jeans equations for equilibrium systems.

## Spherical distribution functions¶

Isotropic and anisotropic distribution functions for spherical systems. Documentation of these is limited at this point, but generally, one can use them as:

```from galpy import potential
from galpy.df import isotropicNFWdf
np= potential.NFWPotential(amp=1.2,a=2.3)
ndf= isotropicNFWdf(pot=np)
# sample
sam= ndf.sample(n=int(1e6))
print(numpy.std(sam[numpy.fabs(sam.r()-1.2) < 0.1].vr()))
# 0.2156787374302913
# Compute vel. dispersion
print(ndf.sigmar(1.2))
# 0.21985277878647172
```

or:

```from galpy.df import kingdf
kdf= kingdf(M=2.3,rt=1.4,W0=3.)
sam= kdf.sample(n=int(1e6))
print(numpy.amax(sam.r()))
# 1.3883460662897116
print(numpy.std(sam[numpy.fabs(sam.r()-0.2) < 0.01].vr()))
# 1.081298923132113
print(kdf.sigmar(0.2))
# 1.0939934290993467
```

Various spherical DFs are explicitly implemented (e.g., Hernquist, NFW using a new approximation, King, Plummer) in isotropic and various anisotropic forms. General methods for computing isotropic, constant-beta anisotropic, and Osipkov-Merritt anisotropic for any potential/density pair are also included. Use of interpolated spherical potentials (`galpy.potential.interpSphericalPotential`) is also supported with DFs, however numerical issues can arise during sampling or calculation of moments of the DF, and so caution is recommended when using these potentials. It is advisable to use a very finely spaced radial grid, and ensure that it spans a range of radii much larger than the radii of interest for the DF.

### Specific distribution functions¶

The following are isotropic distribution functions

Anisotropic versions also exist:

## Two-dimensional, axisymmetric disk distribution functions¶

Distribution function for orbits in the plane of a galactic disk.

## Two-dimensional, non-axisymmetric disk distribution functions¶

Distribution function for orbits in the plane of a galactic disk in non-axisymmetric potentials. These are calculated using the technique of Dehnen 2000, where the DF at the current time is obtained as the evolution of an initially-axisymmetric DF at time `to` in the non-axisymmetric potential until the current time.

## Three-dimensional disk distribution functions¶

Distribution functions for orbits in galactic disks, including the vertical motion for stars reaching large heights above the plane. Currently only the quasi-isothermal DF.

## The distribution function of a gap in a tidal stream¶

From Sanders, Bovy, & Erkal 2015; see Modeling gaps in streams using action-angle coordinates. Implemented as a subclass of `streamdf`. No full implementation is available currently, but the model can be set up and sampled as in the above paper.

## The distribution function of a tidal stream using a particle-spray technique¶

Model from Fardal et al. (2015) with full details of the `galpy` implementation given in Qian et al. (2022); see Particle-spray modeling of streams with streamspraydf.