{"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/automatic-differentiation-to-simultaneously","title":"Automatic Differentiation to Simultaneously Identify Nonlinear Dynamics and Extract Noise Probability Distributions from Data","arxiv_id":"2009.08810","date":"2020-09-12","proceeding":null,"authors":["Kadierdan Kaheman","Steven L. Brunton","J. Nathan Kutz"],"abstract":"The sparse identification of nonlinear dynamics (SINDy) is a regression framework for the discovery of parsimonious dynamic models and governing equations from time-series data. As with all system identification methods, noisy measurements compromise the accuracy and robustness of the model discovery procedure. In this work, we develop a variant of the SINDy algorithm that integrates automatic differentiation and recent time-stepping constrained motivated by Rudy et al. for simultaneously (i) denoising the data, (ii) learning and parametrizing the noise probability distribution, and (iii) identifying the underlying parsimonious dynamical system responsible for generating the time-series data. Thus within an integrated optimization framework, noise can be separated from signal, resulting in an architecture that is approximately twice as robust to noise as state-of-the-art methods, handling as much as 40% noise on a given time-series signal and explicitly parametrizing the noise probability distribution. We demonstrate this approach on several numerical examples, from Lotka-Volterra models to the spatio-temporal Lorenz 96 model. Further, we show the method can identify a diversity of probability distributions including Gaussian, uniform, Gamma, and Rayleigh.","url_abs":"https://arxiv.org/abs/2009.08810v2","url_pdf":"https://arxiv.org/pdf/2009.08810v2.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":"abstracts"},"code_links":[{"paper_slug":"automatic-differentiation-to-simultaneously","repo_url":"https://github.com/dynamicslab/modified-SINDy","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"automatic-differentiation-to-simultaneously","repo_url":"https://github.com/MoSubaiei/modified-SINDy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"denoising","task_name":"Denoising"},{"task_slug":"diversity","task_name":"Diversity"},{"task_slug":"model-discovery","task_name":"Model Discovery"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2009.08810","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2009.08810"}},"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/dynamicslab/modified-SINDy","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/MoSubaiei/modified-SINDy","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":4},"by_repo_kind":{"official":{"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":"7fb84d30abe5e4b6","entry":"ChangeFontSize","repo":"dynamicslab/modified-SINDy","repo_kind":"official","path":"IdentifyNoiseDistribution/NSS_SINDy_Approach_SingleRun_VanderPol_IterativeLearnGamma.py","file_url":"https://github.com/dynamicslab/modified-SINDy/blob/HEAD/IdentifyNoiseDistribution/NSS_SINDy_Approach_SingleRun_VanderPol_IterativeLearnGamma.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":"7fb84d30abe5e4b6"}},{"code_sha256_prefix":"808ba81ffc39645c","entry":"Duffing","repo":"dynamicslab/modified-SINDy","repo_kind":"official","path":"DiscrepancyModeling/utils_NSS_SINDy.py","file_url":"https://github.com/dynamicslab/modified-SINDy/blob/HEAD/DiscrepancyModeling/utils_NSS_SINDy.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":"808ba81ffc39645c"}},{"code_sha256_prefix":"9d1ac900c37430d7","entry":"Lotka","repo":"dynamicslab/modified-SINDy","repo_kind":"official","path":"DiscrepancyModeling/utils_NSS_SINDy.py","file_url":"https://github.com/dynamicslab/modified-SINDy/blob/HEAD/DiscrepancyModeling/utils_NSS_SINDy.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":"9d1ac900c37430d7"}},{"code_sha256_prefix":"d7809f92265d44b7","entry":"VanderPol","repo":"dynamicslab/modified-SINDy","repo_kind":"official","path":"DiscrepancyModeling/utils_NSS_SINDy.py","file_url":"https://github.com/dynamicslab/modified-SINDy/blob/HEAD/DiscrepancyModeling/utils_NSS_SINDy.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":"d7809f92265d44b7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}