{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/170309710","title":"Fast and scalable Gaussian process modeling with applications to astronomical time series","arxiv_id":"1703.09710","date":"2017-03-28","proceeding":null,"authors":["Daniel Foreman-Mackey","Eric Agol","Sivaram Ambikasaran","Ruth Angus"],"abstract":"The growing field of large-scale time domain astronomy requires methods for probabilistic data analysis that are computationally tractable, even with large datasets. Gaussian Processes are a popular class of models used for this purpose but, since the computational cost scales, in general, as the cube of the number of data points, their application has been limited to small datasets. In this paper, we present a novel method for Gaussian Process modeling in one-dimension where the computational requirements scale linearly with the size of the dataset. We demonstrate the method by applying it to simulated and real astronomical time series datasets. These demonstrations are examples of probabilistic inference of stellar rotation periods, asteroseismic oscillation spectra, and transiting planet parameters. The method exploits structure in the problem when the covariance function is expressed as a mixture of complex exponentials, without requiring evenly spaced observations or uniform noise. This form of covariance arises naturally when the process is a mixture of stochastically-driven damped harmonic oscillators -- providing a physical motivation for and interpretation of this choice -- but we also demonstrate that it can be a useful effective model in some other cases. We present a mathematical description of the method and compare it to existing scalable Gaussian Process methods. The method is fast and interpretable, with a range of potential applications within astronomical data analysis and beyond. We provide well-tested and documented open-source implementations of this method in C++, Python, and Julia.","url_abs":"http://arxiv.org/abs/1703.09710v2","url_pdf":"http://arxiv.org/pdf/1703.09710v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"170309710","repo_url":"https://github.com/dfm/celerite","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"170309710","repo_url":"https://github.com/dfm/celerite2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"170309710","repo_url":"https://github.com/exoplanet-dev/celerite2","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1703.09710","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1703.09710"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dfm/celerite","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/exoplanet-dev/celerite2","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/dfm/celerite2","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":14},"by_repo_kind":{"official":{"samples":10,"ran":0,"repositories":1},"listed":{"samples":4,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"31a82fde8c05f918","entry":"allclose","repo":"dfm/celerite2","repo_kind":"listed","path":"python/celerite2/testing.py","file_url":"https://github.com/dfm/celerite2/blob/HEAD/python/celerite2/testing.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"31a82fde8c05f918"}},{"code_sha256_prefix":"1cb463502f2fb2ea","entry":"band_e","repo":"dfm/celerite","repo_kind":"official","path":"paper/figures/matrix.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/paper/figures/matrix.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1cb463502f2fb2ea"}},{"code_sha256_prefix":"89742dd28562c866","entry":"benchmark","repo":"dfm/celerite","repo_kind":"official","path":"celerite/timer.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/celerite/timer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"89742dd28562c866"}},{"code_sha256_prefix":"06632162048ffe78","entry":"cpp_flag","repo":"dfm/celerite","repo_kind":"official","path":"celerite/build.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/celerite/build.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"06632162048ffe78"}},{"code_sha256_prefix":"27a32807adc7aa37","entry":"factor","repo":"dfm/celerite2","repo_kind":"listed","path":"python/celerite2/jax/ops.py","file_url":"https://github.com/dfm/celerite2/blob/HEAD/python/celerite2/jax/ops.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"27a32807adc7aa37"}},{"code_sha256_prefix":"d286cc7c36eef825","entry":"get_figsize","repo":"dfm/celerite","repo_kind":"official","path":"celerite/plot_setup.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/celerite/plot_setup.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d286cc7c36eef825"}},{"code_sha256_prefix":"4831b0942e89543f","entry":"has_flag","repo":"dfm/celerite","repo_kind":"official","path":"celerite/build.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/celerite/build.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4831b0942e89543f"}},{"code_sha256_prefix":"b8eff7fd0c0117a6","entry":"has_library","repo":"dfm/celerite","repo_kind":"official","path":"celerite/build.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/celerite/build.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b8eff7fd0c0117a6"}},{"code_sha256_prefix":"d03bfd8ea027807c","entry":"lorentz_psd","repo":"dfm/celerite","repo_kind":"official","path":"paper/figures/sho.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/paper/figures/sho.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d03bfd8ea027807c"}},{"code_sha256_prefix":"8a0c509170cc3245","entry":"rename","repo":"dfm/celerite","repo_kind":"official","path":"paper/publish.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/paper/publish.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8a0c509170cc3245"}},{"code_sha256_prefix":"d760887b0c3739aa","entry":"sho_acf","repo":"dfm/celerite","repo_kind":"official","path":"paper/figures/sho.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/paper/figures/sho.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d760887b0c3739aa"}},{"code_sha256_prefix":"318e4a66a868c0f3","entry":"sho_psd","repo":"dfm/celerite","repo_kind":"official","path":"paper/figures/sho.py","file_url":"https://github.com/dfm/celerite/blob/HEAD/paper/figures/sho.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"318e4a66a868c0f3"}},{"code_sha256_prefix":"7da09b9ffb483935","entry":"solve_lower","repo":"dfm/celerite2","repo_kind":"listed","path":"python/celerite2/jax/ops.py","file_url":"https://github.com/dfm/celerite2/blob/HEAD/python/celerite2/jax/ops.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7da09b9ffb483935"}},{"code_sha256_prefix":"60b73af5b84ae6f8","entry":"solve_upper","repo":"dfm/celerite2","repo_kind":"listed","path":"python/celerite2/jax/ops.py","file_url":"https://github.com/dfm/celerite2/blob/HEAD/python/celerite2/jax/ops.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"60b73af5b84ae6f8"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}