{"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/the-causal-chambers-real-physical-systems-as","title":"The Causal Chambers: Real Physical Systems as a Testbed for AI Methodology","arxiv_id":"2404.11341","date":"2024-04-17","proceeding":null,"authors":["Juan L. Gamella","Jonas Peters","Peter Bühlmann"],"abstract":"In some fields of AI, machine learning and statistics, the validation of new methods and algorithms is often hindered by the scarcity of suitable real-world datasets. Researchers must often turn to simulated data, which yields limited information about the applicability of the proposed methods to real problems. As a step forward, we have constructed two devices that allow us to quickly and inexpensively produce large datasets from non-trivial but well-understood physical systems. The devices, which we call causal chambers, are computer-controlled laboratories that allow us to manipulate and measure an array of variables from these physical systems, providing a rich testbed for algorithms from a variety of fields. We illustrate potential applications through a series of case studies in fields such as causal discovery, out-of-distribution generalization, change point detection, independent component analysis, and symbolic regression. For applications to causal inference, the chambers allow us to carefully perform interventions. We also provide and empirically validate a causal model of each chamber, which can be used as ground truth for different tasks. All hardware and software is made open source, and the datasets are publicly available at causalchamber.org or through the Python package causalchamber.","url_abs":"https://arxiv.org/abs/2404.11341v2","url_pdf":"https://arxiv.org/pdf/2404.11341v2.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":"the-causal-chambers-real-physical-systems-as","repo_url":"https://github.com/juangamella/causal-chamber-paper","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"the-causal-chambers-real-physical-systems-as","repo_url":"https://github.com/juangamella/causal-chamber-package","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"},{"task_slug":"causal-inference","task_name":"Causal Inference"},{"task_slug":"change-point-detection","task_name":"Change Point Detection"},{"task_slug":"out-of-distribution-generalization","task_name":"Out-of-Distribution Generalization"},{"task_slug":"symbolic-regression","task_name":"Symbolic Regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2404.11341","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.11341"}},"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/juangamella/causal-chamber-package","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/juangamella/causal-chamber-paper","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran_violates":1,"ran":2,"unverified":26},"by_repo_kind":{"official":{"samples":12,"ran":3,"repositories":1},"listed":{"samples":17,"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":"cc66d68d2046d6a3","entry":"bool_flag","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/utils.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/utils.py","link_basis":"harvester_set","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cc66d68d2046d6a3"}},{"code_sha256_prefix":"69b5fa55a312675e","entry":"compute_metrics","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/metrics.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"69b5fa55a312675e"}},{"code_sha256_prefix":"2fe9d54ddd8520af","entry":"timeout","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/utils.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2fe9d54ddd8520af"}},{"code_sha256_prefix":"860aa91e378e0710","entry":"centering","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/hsic.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/hsic.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":"860aa91e378e0710"}},{"code_sha256_prefix":"64e1fb55950c1610","entry":"coord_grid","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/image_capture.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/image_capture.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":"64e1fb55950c1610"}},{"code_sha256_prefix":"2f7db44ecae76417","entry":"create_logger","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/logger.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/logger.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":"2f7db44ecae76417"}},{"code_sha256_prefix":"ea1ee09f34621131","entry":"dHSIC_calc","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/hsic.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/hsic.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":"ea1ee09f34621131"}},{"code_sha256_prefix":"40e3dc59408a02c9","entry":"discrete_rw","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/datasets/sampling.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/datasets/sampling.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":"40e3dc59408a02c9"}},{"code_sha256_prefix":"4188cf779343ba4b","entry":"edges_to_adjacency","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/utils.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/utils.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":"4188cf779343ba4b"}},{"code_sha256_prefix":"df07fe3baf2d9722","entry":"gaussian_grammat","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/hsic.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/hsic.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":"df07fe3baf2d9722"}},{"code_sha256_prefix":"01cbe9c6ae58100c","entry":"get_infinite_relative_error","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/regressors.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/regressors.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":"01cbe9c6ae58100c"}},{"code_sha256_prefix":"9290aab8c894b039","entry":"get_optimizer","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/optim.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/optim.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":"9290aab8c894b039"}},{"code_sha256_prefix":"3006ede7a0ce2123","entry":"graph_to_tikz","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/utils.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/utils.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":"3006ede7a0ce2123"}},{"code_sha256_prefix":"9709404544a135d2","entry":"hexagon_mask","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/image_capture.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/image_capture.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":"9709404544a135d2"}},{"code_sha256_prefix":"a7e01aac39222e52","entry":"hexagon_vertices","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/image_capture.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/image_capture.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":"a7e01aac39222e52"}},{"code_sha256_prefix":"4b15c33783dc239e","entry":"initialize_exp","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/utils.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/utils.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":"4b15c33783dc239e"}},{"code_sha256_prefix":"c7f1c1cf79cd9544","entry":"model_a1","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/wind_tunnel_models.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/wind_tunnel_models.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":"c7f1c1cf79cd9544"}},{"code_sha256_prefix":"3a5d174bd964aec1","entry":"model_a2","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/wind_tunnel_models.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/wind_tunnel_models.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":"3a5d174bd964aec1"}},{"code_sha256_prefix":"29316726c2ebb066","entry":"model_b1","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/wind_tunnel_models.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/wind_tunnel_models.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":"29316726c2ebb066"}},{"code_sha256_prefix":"b36a092e478f216d","entry":"model_e1","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/light_tunnel_models.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/light_tunnel_models.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":"b36a092e478f216d"}},{"code_sha256_prefix":"91a6b94673648495","entry":"order_data","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/regressors.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/regressors.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":"91a6b94673648495"}},{"code_sha256_prefix":"88810e71bfca6f77","entry":"points_on_circle","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/utils.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/utils.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":"88810e71bfca6f77"}},{"code_sha256_prefix":"1473743688620979","entry":"random_walk","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/datasets/sampling.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/datasets/sampling.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":"1473743688620979"}},{"code_sha256_prefix":"6d122ddfa2b80194","entry":"random_walk_mirrored","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/datasets/sampling.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/datasets/sampling.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":"6d122ddfa2b80194"}},{"code_sha256_prefix":"ac7f89e9241e6a4d","entry":"select_dico_index","repo":"juangamella/causal-chamber-paper","repo_kind":"official","path":"case_studies/src/symbolicregression/envs/environment.py","file_url":"https://github.com/juangamella/causal-chamber-paper/blob/HEAD/case_studies/src/symbolicregression/envs/environment.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":"ac7f89e9241e6a4d"}},{"code_sha256_prefix":"54486aee2089156e","entry":"set_and_measure","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/datasets/utils.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/datasets/utils.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":"54486aee2089156e"}},{"code_sha256_prefix":"84d3204b8e19e60c","entry":"simulator_a1_c2","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/wind_tunnel_simulators.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/wind_tunnel_simulators.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":"84d3204b8e19e60c"}},{"code_sha256_prefix":"158be9e8feb66308","entry":"simulator_a1_c3","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/wind_tunnel_simulators.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/wind_tunnel_simulators.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":"158be9e8feb66308"}},{"code_sha256_prefix":"26c8655502526376","entry":"simulator_a2_c3","repo":"juangamella/causal-chamber-package","repo_kind":"listed","path":"causalchamber/models/wind_tunnel_simulators.py","file_url":"https://github.com/juangamella/causal-chamber-package/blob/HEAD/causalchamber/models/wind_tunnel_simulators.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":"26c8655502526376"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}