$30 off During Our Annual Pro Sale. View Details »

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. °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)
  2. °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)
  3. 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)
  4. 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)
  5. from george.kernels import * k1 = 1.5 * ExpSquaredKernel(2.3) k2

    = 5.5 * Matern32Kernel(0.1) kernel = 0.5 * (k1 + k2)
  6. 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)
  7. 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)
  8. 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)
  9. 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)
  10. +

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

    type of kernel restrictions:
  12. import numpy as np def linear_least_squares(x, y) : A =

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

    jnp.vander(x, 2) return jnp.linalg.lstsq(A, y)[0]
  14. 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]
  15. open software is foundational to astrophysics research let’s consider &

    discuss interface design and user interaction leverage existing infrastructure & learn when to start fresh