{"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/a-strong-gravitational-lens-is-worth-a","title":"A Strong Gravitational Lens Is Worth a Thousand Dark Matter Halos: Inference on Small-Scale Structure Using Sequential Methods","arxiv_id":"2404.14487","date":"2024-04-22","proceeding":null,"authors":["Sebastian Wagner-Carena","Jaehoon Lee","Jeffrey Pennington","Jelle Aalbers","Simon Birrer","Risa H. Wechsler"],"abstract":"Strong gravitational lenses are a singular probe of the universe's small-scale structure $\\unicode{x2013}$ they are sensitive to the gravitational effects of low-mass $(<10^{10} M_\\odot)$ halos even without a luminous counterpart. Recent strong-lensing analyses of dark matter structure rely on simulation-based inference (SBI). Modern SBI methods, which leverage neural networks as density estimators, have shown promise in extracting the halo-population signal. However, it is unclear whether the constraining power of these models has been limited by the methodology or the information content of the data. In this study, we introduce an accelerator-optimized simulation pipeline that can generate lens images with realistic subhalo populations in a matter of milliseconds. Leveraging this simulator, we identify the main methodological limitation of our fiducial SBI analysis: training set size. We then adopt a sequential neural posterior estimation (SNPE) approach, allowing us to iteratively refine the distribution of simulated training images to better align with the observed data. Using only one-fifth as many mock Hubble Space Telescope (HST) images, SNPE matches the constraints on the low-mass halo population produced by our best non-sequential model. Our experiments suggest that an over three order-of-magnitude increase in training set size and GPU hours would be required to achieve an equivalent result without sequential methods. While the full potential of the existing strong lens sample remains to be explored, the notable improvement in constraining power enabled by our sequential approach highlights that the current constraints are limited primarily by methodology and not the data itself. Moreover, our results emphasize the need to treat training set generation and model optimization as interconnected stages of any cosmological analysis using simulation-based inference techniques.","url_abs":"https://arxiv.org/abs/2404.14487v1","url_pdf":"https://arxiv.org/pdf/2404.14487v1.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":"a-strong-gravitational-lens-is-worth-a","repo_url":"https://github.com/swagnercarena/paltax","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2404.14487","atlas_url":"https://app.syntology.ai/?focus=2404.14487","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2404.14487"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/swagnercarena/paltax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":13},"by_repo_kind":{"official":{"samples":13,"ran":13,"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":"46dfe4a99d641bb0","entry":"angular_diameter_distance","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/cosmology_utils.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/cosmology_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"46dfe4a99d641bb0"}},{"code_sha256_prefix":"23876623204ee870","entry":"comoving_distance","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/cosmology_utils.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/cosmology_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"23876623204ee870"}},{"code_sha256_prefix":"aabe89bafcb5d03e","entry":"cored_nfw_draws","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/nfw_functions.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/nfw_functions.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aabe89bafcb5d03e"}},{"code_sha256_prefix":"b38e1a2c3f4f88cf","entry":"encode_constant","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/input_pipeline.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/input_pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b38e1a2c3f4f88cf"}},{"code_sha256_prefix":"efddc701eaed6cfa","entry":"encode_normal","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/input_pipeline.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/input_pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"efddc701eaed6cfa"}},{"code_sha256_prefix":"cc194b3ddf6e1b17","entry":"encode_uniform","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/input_pipeline.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/input_pipeline.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cc194b3ddf6e1b17"}},{"code_sha256_prefix":"0ec30f4c247665b0","entry":"gaussian_product_analytical","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/hierarchical_inference.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/hierarchical_inference.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0ec30f4c247665b0"}},{"code_sha256_prefix":"87414ad5fa237b5f","entry":"log_p_omega","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/hierarchical_inference.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/hierarchical_inference.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"87414ad5fa237b5f"}},{"code_sha256_prefix":"5a8520efd4895d45","entry":"nu_function","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/los.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/los.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5a8520efd4895d45"}},{"code_sha256_prefix":"a4f6e55a048d7d39","entry":"power_law_draw","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/power_law.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/power_law.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a4f6e55a048d7d39"}},{"code_sha256_prefix":"255476f8621cb6d6","entry":"power_law_integrate","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/power_law.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/power_law.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"255476f8621cb6d6"}},{"code_sha256_prefix":"c3b548c9c454e1cb","entry":"psf_convolution","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/image_simulation.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/image_simulation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c3b548c9c454e1cb"}},{"code_sha256_prefix":"ca9fea87be931ee0","entry":"suppressed_power_law_draw","repo":"swagnercarena/paltax","repo_kind":"official","path":"paltax/power_law.py","file_url":"https://github.com/swagnercarena/paltax/blob/HEAD/paltax/power_law.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ca9fea87be931ee0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}