1
0

distributions.py 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import numpy as np
  2. import scipy.stats as st
  3. # Bulge distributions
  4. class radialPlummer(st.rv_continuous):
  5. def _pdf(self, x):#(3M/4πa3)(1+(r/a)2)−5/2
  6. return 3/(4*np.pi**3) * (1 + x**2)**(-5/2) * 4*np.pi*x**2
  7. PLUMMER = radialPlummer(a=0, b=5, name='rPlummer')
  8. # [TODO: Check Hernquist. Not currently in use]
  9. class radialHernquist(st.rv_continuous):
  10. def _pdf(self, x):
  11. return 1/(2*np.pi) * 1/(x**4) * 4*np.pi*x**2
  12. HERNQUIST = radialHernquist(a=0, b=5, name='rHernquist')
  13. # Disk distributions
  14. class radialUniform(st.rv_continuous):
  15. def _pdf(self, x):
  16. return 2*x if x<1 else 0
  17. UNIFORM = radialUniform(a=0, b=10, name='rUniform')
  18. class radialExp(st.rv_continuous):
  19. def _pdf(self, x):
  20. return x*np.exp(-x)
  21. EXP = radialExp(a=0, b=10, name='rExp')
  22. # Halo distributions
  23. class radialNFW(st.rv_continuous):
  24. def _pdf(self, x):
  25. y = 1 / (x * (1 + x)**2) * x**2
  26. # Normalize pdf in (0, 5) range
  27. y /= (-5/6 + np.log(6))
  28. NFW = radialNFW(a=0, b=5, name='rNFW')