{"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/targeted-neural-dynamical-modeling","title":"Targeted Neural Dynamical Modeling","arxiv_id":"2110.14853","date":"2021-10-28","proceeding":"NeurIPS 2021 12","authors":["Cole Hurwitz","Akash Srivastava","Kai Xu","Justin Jude","Matthew G. Perich","Lee E. Miller","Matthias H. Hennig"],"abstract":"Latent dynamics models have emerged as powerful tools for modeling and interpreting neural population activity. Recently, there has been a focus on incorporating simultaneously measured behaviour into these models to further disentangle sources of neural variability in their latent space. These approaches, however, are limited in their ability to capture the underlying neural dynamics (e.g. linear) and in their ability to relate the learned dynamics back to the observed behaviour (e.g. no time lag). To this end, we introduce Targeted Neural Dynamical Modeling (TNDM), a nonlinear state-space model that jointly models the neural activity and external behavioural variables. TNDM decomposes neural dynamics into behaviourally relevant and behaviourally irrelevant dynamics; the relevant dynamics are used to reconstruct the behaviour through a flexible linear decoder and both sets of dynamics are used to reconstruct the neural activity through a linear decoder with no time lag. We implement TNDM as a sequential variational autoencoder and validate it on simulated recordings and recordings taken from the premotor and motor cortex of a monkey performing a center-out reaching task. We show that TNDM is able to learn low-dimensional latent dynamics that are highly predictive of behaviour without sacrificing its fit to the neural data.","url_abs":"https://arxiv.org/abs/2110.14853v1","url_pdf":"https://arxiv.org/pdf/2110.14853v1.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":"targeted-neural-dynamical-modeling","repo_url":"https://github.com/henniglab/tndm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"targeted-neural-dynamical-modeling","repo_url":"https://github.com/henniglab/tndm_paper","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"tf","reach":null},{"paper_slug":"targeted-neural-dynamical-modeling","repo_url":"https://github.com/mackelab/LDNS","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"decoder","task_name":"Decoder"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2110.14853","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2110.14853"}},"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/mackelab/LDNS","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/henniglab/tndm_paper","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/henniglab/tndm","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_draft_wrong":1,"unverified":4},"by_repo_kind":{"official":{"samples":5,"ran":1,"repositories":2}},"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":"d2936861d02d8de0","entry":"jsonify_dict","repo":"henniglab/tndm_paper","repo_kind":"official","path":"run_tndm_double.py","file_url":"https://github.com/henniglab/tndm_paper/blob/HEAD/run_tndm_double.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d2936861d02d8de0"}},{"code_sha256_prefix":"b5af07c153c9cd34","entry":"covariance_loss","repo":"henniglab/tndm","repo_kind":"official","path":"tndm/losses/covariance_loss.py","file_url":"https://github.com/henniglab/tndm/blob/HEAD/tndm/losses/covariance_loss.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":"b5af07c153c9cd34"}},{"code_sha256_prefix":"bbc8c44eb1abe94f","entry":"gaussian_kldiv_loss","repo":"henniglab/tndm","repo_kind":"official","path":"tndm/losses/gaussian_kldiv_loss.py","file_url":"https://github.com/henniglab/tndm/blob/HEAD/tndm/losses/gaussian_kldiv_loss.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":"bbc8c44eb1abe94f"}},{"code_sha256_prefix":"14b244c04ab7ae02","entry":"gaussian_loglike_loss","repo":"henniglab/tndm","repo_kind":"official","path":"tndm/losses/gaussian_loglike_loss.py","file_url":"https://github.com/henniglab/tndm/blob/HEAD/tndm/losses/gaussian_loglike_loss.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":"14b244c04ab7ae02"}},{"code_sha256_prefix":"7b8d39fb7374553a","entry":"poisson_loglike_loss","repo":"henniglab/tndm","repo_kind":"official","path":"tndm/losses/poisson_loglike_loss.py","file_url":"https://github.com/henniglab/tndm/blob/HEAD/tndm/losses/poisson_loglike_loss.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":"7b8d39fb7374553a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}