{"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/sam-structural-agnostic-model-causal","title":"Structural Agnostic Modeling: Adversarial Learning of Causal Graphs","arxiv_id":"1803.04929","date":"2018-03-13","proceeding":null,"authors":["Diviyan Kalainathan","Olivier Goudet","Isabelle Guyon","David Lopez-Paz","Michèle Sebag"],"abstract":"A new causal discovery method, Structural Agnostic Modeling (SAM), is presented in this paper. Leveraging both conditional independencies and distributional asymmetries, SAM aims to find the underlying causal structure from observational data. The approach is based on a game between different players estimating each variable distribution conditionally to the others as a neural net, and an adversary aimed at discriminating the generated data against the original data. A learning criterion combining distribution estimation, sparsity and acyclicity constraints is used to enforce the optimization of the graph structure and parameters through stochastic gradient descent. SAM is extensively experimentally validated on synthetic and real data.","url_abs":"https://arxiv.org/abs/1803.04929v5","url_pdf":"https://arxiv.org/pdf/1803.04929v5.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":"sam-structural-agnostic-model-causal","repo_url":"https://github.com/Diviyan-Kalainathan/SAM","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1803.04929","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1803.04929"}},"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/Diviyan-Kalainathan/SAM","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"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":"57a5622b077cb3f5","entry":"compute_total_effect","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/treillis.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/treillis.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"57a5622b077cb3f5"}},{"code_sha256_prefix":"83a4439ffaf78634","entry":"decompress_list","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/treillis.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/treillis.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"83a4439ffaf78634"}},{"code_sha256_prefix":"6938344c3e48f119","entry":"functional_linear3d","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/linear3d.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/linear3d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6938344c3e48f119"}},{"code_sha256_prefix":"1189b0c4307ca015","entry":"gumbel_sigmoid","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/gumble_utils.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/gumble_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"1189b0c4307ca015"}},{"code_sha256_prefix":"8db23fb76184682b","entry":"gumbel_softmax","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/gumble_utils.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/gumble_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8db23fb76184682b"}},{"code_sha256_prefix":"51299d5807965bcd","entry":"notears_constr","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/graph.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/graph.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"51299d5807965bcd"}},{"code_sha256_prefix":"61d0fe3ddc34ced1","entry":"parallel_run","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/parlib.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/parlib.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"61d0fe3ddc34ced1"}},{"code_sha256_prefix":"bbb2e37df4189911","entry":"run_SAM","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/sam.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/sam.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"bbb2e37df4189911"}},{"code_sha256_prefix":"576131778bd22221","entry":"treillis","repo":"Diviyan-Kalainathan/SAM","repo_kind":"official","path":"sam/utils/treillis.py","file_url":"https://github.com/Diviyan-Kalainathan/SAM/blob/HEAD/sam/utils/treillis.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"576131778bd22221"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}