Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Open Software for Astrophysics, AAS241

Open Software for Astrophysics, AAS241

Slides for my plenary talk at the 241st American Astronomical Society meeting.

Dan Foreman-Mackey

January 12, 2023
Tweet

More Decks by Dan Foreman-Mackey

Other Decks in Science

Transcript

  1. OPEN SOFTWARE FOR ASTROPHYSICS Dan Foreman-Mackey

  2. None
  3. case study: Gaussian Processes

  4. AAS 225 / 2015 / Seattle AAS 231 / 2018

    / National Harbor
  5. °0.6 °0.3 0.0 0.3 0.6 raw [ppt] 0 5 10

    15 20 25 time [days] °0.30 °0.15 0.00 de-trended [ppt] N = 1000 reference: DFM+ (2017)
  6. °0.6 °0.3 0.0 0.3 0.6 raw [ppt] 0 5 10

    15 20 25 time [days] °0.30 °0.15 0.00 de-trended [ppt] N = 1000 reference: DFM+ (2017)
  7. reference: Aigrain & DFM (2022)

  8. reference: Aigrain & DFM (2022)

  9. reference: Aigrain & DFM (2022) ignoring correlated noise accounting for

    correlated noise
  10. reference: Aigrain & DFM (2022)

  11. a Gaussian Process is a drop - in replacement for

    chi - squared
  12. more details: Aigrain & Foreman-Mackey (2023) arXiv:2209.08940

  13. 7 [1] model building [2] computational cost

  14. k(tn , tm ; θ) “kernel” or “covariance”

  15. None
  16. import george import celerite import tinygp

  17. my f i rst try: george 1

  18. import numpy as np def log_likelihood(params, x, diag, r) :

    K = build_kernel_matrix(params, x, diag) gof = r.T @ np.linalg.solve(K, r) norm = np.linalg.slogdet(K)[1] return -0.5 * (gof + norm)
  19. import numpy as np def log_likelihood(params, x, diag, r) :

    K = build_kernel_matrix(params, x, diag) gof = r.T @ np.linalg.solve(K, r) norm = np.linalg.slogdet(K)[1] return -0.5 * (gof + norm)
  20. k(tn , tm ; θ) “kernel” or “covariance”

  21. from george.kernels import * k1 = 1.5 * ExpSquaredKernel(2.3) k2

    = 5.5 * Matern32Kernel(0.1) kernel = 0.5 * (k1 + k2)
  22. from george import GP gp = GP(kernel) gp.compute(x, yerr) gp.log_likelihood(y)

  23. from george import GP gp = GP(kernel) gp.compute(x, yerr) gp.log_likelihood(y)

    gp.f i t(y) ???
  24. the astronomical Python ecosystem + MANY MORE!

  25. * API design (library vs scripts) * don’t reinvent the

    wheel
  26. None
  27. faster: celerite* 2 * yes, that truly is how you

    pronounce it…
  28. import numpy as np def log_likelihood(params, x, diag, r) :

    K = build_kernel_matrix(params, x, diag) gof = r.T @ np.linalg.solve(K, r) norm = np.linalg.slogdet(K)[1] return -0.5 * (gof + norm)
  29. import numpy as np def log_likelihood(params, x, diag, r) :

    K = build_kernel_matrix(params, x, diag) gof = r.T @ np.linalg.solve(K, r) norm = np.linalg.slogdet(K)[1] return -0.5 * (gof + norm)
  30. None
  31. “semi/quasi - separable” matrices

  32. 102 103 104 105 number of data points [N] 10

    5 10 4 10 3 10 2 10 1 100 computational cost [seconds] 1 2 4 8 16 32 64 128 256 direct O(N) 100 101 number o reference: DFM, Agol, Ambikasaran, Angus (2017)
  33. 102 103 104 105 number of data points [N] 10

    4 10 3 10 2 10 1 100 computational cost [seconds] 1 2 4 8 16 32 64 128 256 O(N) 100 101 number o reference: DFM, Agol, Ambikasaran, Angus (2017)
  34. None
  35. +

  36. + + vs

  37. * interdisciplinary collaboration * importance of implementation

  38. 7 [1] 1 (ish) dimensional input [2] specif i c

    type of kernel restrictions:
  39. modern infrastructure: tinygp 3

  40. what’s missing from the astronomical Python ecosystem?

  41. 7 [1] differentiable programming [2] hardware acceleration

  42. the broader numerical computing Python ecosystem + SO MANY MORE!

  43. jax.readthedocs.io

  44. import numpy as np def linear_least_squares(x, y) : A =

    np.vander(x, 2) return np.linalg.lstsq(A, y)[0]
  45. import jax.numpy as jnp def linear_least_squares(x, y) : A =

    jnp.vander(x, 2) return jnp.linalg.lstsq(A, y)[0]
  46. import jax.numpy as jnp @jax.jit def linear_least_squares(x, y) : A

    = jnp.vander(x, 2) return jnp.linalg.lstsq(A, y)[0]
  47. None
  48. tinygp.readthedocs.io

  49. the broader numerical computing Python ecosystem + SO MANY MORE!

  50. * I <3 JAX * don’t reinvent the wheel

  51. the why & how of open software in astrophysics

  52. credit: Adrian Price-Whelan / / data: SAO/NASA ADS

  53. None
  54. None
  55. None
  56. None
  57. takeaways

  58. open software is foundational to astrophysics research let’s consider &

    discuss interface design and user interaction leverage existing infrastructure & learn when to start fresh
  59. get in touch! dfm.io github.com/dfm

  60. None