{"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/classifying-anomalies-through-outer-density","title":"Classifying Anomalies THrough Outer Density Estimation (CATHODE)","arxiv_id":"2109.00546","date":"2021-09-01","proceeding":null,"authors":["Anna Hallin","Joshua Isaacson","Gregor Kasieczka","Claudius Krause","Benjamin Nachman","Tobias Quadfasel","Matthias Schlaffer","David Shih","Manuel Sommerhalder"],"abstract":"We propose a new model-agnostic search strategy for physics beyond the standard model (BSM) at the LHC, based on a novel application of neural density estimation to anomaly detection. Our approach, which we call Classifying Anomalies THrough Outer Density Estimation (CATHODE), assumes the BSM signal is localized in a signal region (defined e.g. using invariant mass). By training a conditional density estimator on a collection of additional features outside the signal region, interpolating it into the signal region, and sampling from it, we produce a collection of events that follow the background model. We can then train a classifier to distinguish the data from the events sampled from the background model, thereby approaching the optimal anomaly detector. Using the LHC Olympics R&D dataset, we demonstrate that CATHODE nearly saturates the best possible performance, and significantly outperforms other approaches that aim to enhance the bump hunt (CWoLa Hunting and ANODE). Finally, we demonstrate that CATHODE is very robust against correlations between the features and maintains nearly-optimal performance even in this more challenging setting.","url_abs":"https://arxiv.org/abs/2109.00546v3","url_pdf":"https://arxiv.org/pdf/2109.00546v3.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":"classifying-anomalies-through-outer-density","repo_url":"https://github.com/hepml-anomalydetection/cathode","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"classifying-anomalies-through-outer-density","repo_url":"https://github.com/uhh-pd-ml/sk_cathode","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2109.00546","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2109.00546"}},"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/uhh-pd-ml/sk_cathode","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/hepml-anomalydetection/cathode","reach":null}],"summary":{"ran_draft_wrong":3,"ran_honours":1,"unverified":16},"by_repo_kind":{"official":{"samples":3,"ran":3,"repositories":1},"listed":{"samples":17,"ran":1,"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":3,"samples":[{"code_sha256_prefix":"12cf7248903b7f0c","entry":"create_namespace_DE_training","repo":"hepml-anomalydetection/cathode","repo_kind":"official","path":"run_all.py","file_url":"https://github.com/hepml-anomalydetection/cathode/blob/HEAD/run_all.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"12cf7248903b7f0c"}},{"code_sha256_prefix":"cb3121c2357324c1","entry":"create_namespace_classifier_creation","repo":"hepml-anomalydetection/cathode","repo_kind":"official","path":"run_all.py","file_url":"https://github.com/hepml-anomalydetection/cathode/blob/HEAD/run_all.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"cb3121c2357324c1"}},{"code_sha256_prefix":"cb566f2040e7fa1c","entry":"create_namespace_classifier_training","repo":"hepml-anomalydetection/cathode","repo_kind":"official","path":"run_all.py","file_url":"https://github.com/hepml-anomalydetection/cathode/blob/HEAD/run_all.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":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"cb566f2040e7fa1c"}},{"code_sha256_prefix":"d580682a49233ab6","entry":"get_mask","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/flows.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/flows.py","link_basis":"harvester_set","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d580682a49233ab6"}},{"code_sha256_prefix":"c744e101573e38f0","entry":"class_weight_to_sample_weight","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/classifier_models/boosted_decision_tree.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/classifier_models/boosted_decision_tree.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":"c744e101573e38f0"}},{"code_sha256_prefix":"7ac0c8933b00c421","entry":"class_weight_to_sample_weight","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/classifier_models/neural_network_classifier.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/classifier_models/neural_network_classifier.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":"7ac0c8933b00c421"}},{"code_sha256_prefix":"8b615ac08adc2b4b","entry":"compute_loss_over_batches","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_flow_matching.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_flow_matching.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":"8b615ac08adc2b4b"}},{"code_sha256_prefix":"40a27ec70bfe22aa","entry":"compute_loss_over_batches","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_normalizing_flow_nflows.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_normalizing_flow_nflows.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":"40a27ec70bfe22aa"}},{"code_sha256_prefix":"2a3b4049a4d29c3e","entry":"compute_loss_over_batches","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_normalizing_flow_pyro.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_normalizing_flow_pyro.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":"2a3b4049a4d29c3e"}},{"code_sha256_prefix":"b71ded1550ff5634","entry":"get_CL_mask","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/flows.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/flows.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":"b71ded1550ff5634"}},{"code_sha256_prefix":"6d64d44fec2b30fc","entry":"numpy_to_torch_loader","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/classifier_models/neural_network_classifier.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/classifier_models/neural_network_classifier.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":"6d64d44fec2b30fc"}},{"code_sha256_prefix":"34eec1e2c5622b5c","entry":"numpy_to_torch_loader","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_flow_matching.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_flow_matching.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":"34eec1e2c5622b5c"}},{"code_sha256_prefix":"0ec2721a4bf5e622","entry":"numpy_to_torch_loader","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_normalizing_flow_nflows.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_normalizing_flow_nflows.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":"0ec2721a4bf5e622"}},{"code_sha256_prefix":"27dde8341772bf1d","entry":"plot_roc_and_sic","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/utils/evaluation_functions.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/utils/evaluation_functions.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":"27dde8341772bf1d"}},{"code_sha256_prefix":"4f53ededc22efba7","entry":"profile_1d","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/utils/evaluation_functions.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/utils/evaluation_functions.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":"4f53ededc22efba7"}},{"code_sha256_prefix":"12d0ab31d14e66a2","entry":"separate_SB_SR","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"demos/utils/data_preparation.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/demos/utils/data_preparation.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":"12d0ab31d14e66a2"}},{"code_sha256_prefix":"44ae550f6632f7c1","entry":"sic_curve","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/utils/evaluation_functions.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/utils/evaluation_functions.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":"44ae550f6632f7c1"}},{"code_sha256_prefix":"0286a0665361e516","entry":"sum_except_batch","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/flows.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/flows.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":"0286a0665361e516"}},{"code_sha256_prefix":"37aba3a4ae5719b2","entry":"train_epoch","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_flow_matching.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_flow_matching.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":"37aba3a4ae5719b2"}},{"code_sha256_prefix":"fd1f2958063d7cda","entry":"train_epoch","repo":"uhh-pd-ml/sk_cathode","repo_kind":"listed","path":"sk_cathode/generative_models/conditional_normalizing_flow_nflows.py","file_url":"https://github.com/uhh-pd-ml/sk_cathode/blob/HEAD/sk_cathode/generative_models/conditional_normalizing_flow_nflows.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":"fd1f2958063d7cda"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}