{"id":98772,"name":null,"description":"This repository contains glue-code necessary to run dynamic Causal Bayesian optimisation within the Yawning Titan cyber-simulation environment.","url":"https://github.com/alan-turing-institute/causal-cyber-defence","last_synced_at":"2025-09-09T02:24:46.608Z","repository":{"id":53866701,"uuid":"518777810","full_name":"alan-turing-institute/causal-cyber-defence","owner":"alan-turing-institute","description":"This repository contains glue-code necessary to run dynamic Causal Bayesian optimisation within the Yawning Titan cyber-simulation environment.","archived":false,"fork":false,"pushed_at":"2022-08-05T15:17:51.000Z","size":1089,"stargazers_count":9,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-05T17:32:50.316Z","etag":null,"topics":["bayesian-optimization","causal-inference","causal-models","causality","cybersecurity","decision-making-algorithms","decision-making-under-uncertainty","dynamics","gym-environment","time-series"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alan-turing-institute.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-07-28T09:14:15.000Z","updated_at":"2025-03-14T06:56:26.000Z","dependencies_parsed_at":"2022-08-19T21:51:14.204Z","dependency_job_id":null,"html_url":"https://github.com/alan-turing-institute/causal-cyber-defence","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/alan-turing-institute/causal-cyber-defence","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alan-turing-institute","download_url":"https://codeload.github.com/alan-turing-institute/causal-cyber-defence/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231865,"owners_count":25245864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"alan-turing-institute","name":"The Alan Turing Institute","uuid":"18304793","kind":"organization","description":"The UK's national institute for data science and artificial intelligence.","email":"info@turing.ac.uk","website":"https://turing.ac.uk","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/18304793?v=4","repositories_count":477,"last_synced_at":"2024-03-20T20:54:47.403Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/alan-turing-institute","funding_links":[],"total_stars":6118,"followers":null,"following":null,"created_at":"2022-11-09T04:45:51.433Z","updated_at":"2024-03-20T20:56:49.775Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alan-turing-institute","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alan-turing-institute/repositories"},"packages":[],"commits":{"id":1338202,"full_name":"alan-turing-institute/causal-cyber-defence","default_branch":"main","committers":[{"name":"Sam S3","email":"sam.s3@ncsc.gov.uk","login":null,"count":8},{"name":"Neil Dhir","email":"ndhir@turing.ac.uk","login":null,"count":1},{"name":"Neil Dhir","email":"neil.x.dhir@gmail.com","login":null,"count":1}],"total_commits":10,"total_committers":3,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":3.3333333333333335,"dds":0.19999999999999996,"past_year_committers":[],"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":null,"past_year_total_bot_committers":null,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2024-01-24T11:04:37.204Z","last_synced_commit":"5d2b9159c8cd194d54f5f1bb872e8e9c1d8e8c4d","created_at":"2023-09-12T08:02:27.812Z","updated_at":"2024-01-24T11:04:37.204Z","commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-09T00:17:06.873Z","repositories_count":5502285,"commits_count":856637890,"contributors_count":31314440,"owners_count":913743,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"alan-turing-institute/causal-cyber-defence","html_url":"https://github.com/alan-turing-institute/causal-cyber-defence","last_synced_at":"2025-09-09T02:24:13.938Z","status":"active","issues_count":1,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":1,"avg_comments_per_issue":0.0,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":1,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":1,"past_year_avg_comments_per_issue":0.0,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-09-12T08:02:33.771Z","updated_at":"2025-09-09T02:24:13.938Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/alan-turing-institute%2Fcausal-cyber-defence/issues","issue_labels_count":{},"pull_request_labels_count":{},"issue_author_associations_count":{"NONE":1},"pull_request_author_associations_count":{},"issue_authors":{"mhauru":1},"pull_request_authors":{},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-09-09T00:00:11.778Z","repositories_count":10175750,"issues_count":31903541,"pull_requests_count":100006704,"authors_count":10735008,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"NONE":1},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{"mhauru":1},"past_year_pull_request_authors":{},"maintainers":[],"active_maintainers":[]},"events":{"total":{"IssuesEvent":1,"WatchEvent":1},"last_year":{"IssuesEvent":1,"WatchEvent":1}},"keywords":["bayesian-optimization","causal-inference","causal-models","causality","cybersecurity","decision-making-algorithms","decision-making-under-uncertainty","dynamics","gym-environment","time-series"],"dependencies":[{"ecosystem":"pypi","filepath":"environment.yml","sha":null,"kind":"manifest","created_at":"2022-08-19T21:51:13.893Z","updated_at":"2022-08-19T21:51:13.893Z","repository_link":"https://github.com/alan-turing-institute/causal-cyber-defence/blob/main/environment.yml","dependencies":[{"id":2090199553,"package_name":"absl-py","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"runtime","optional":false},{"id":2090199554,"package_name":"astunparse","ecosystem":"pypi","requirements":"==1.6.3","direct":true,"kind":"runtime","optional":false},{"id":2090199555,"package_name":"async-timeout","ecosystem":"pypi","requirements":"==4.0.2","direct":true,"kind":"runtime","optional":false},{"id":2090199556,"package_name":"attrs","ecosystem":"pypi","requirements":"==21.4.0","direct":true,"kind":"runtime","optional":false},{"id":2090199557,"package_name":"black","ecosystem":"pypi","requirements":"==22.3.0","direct":true,"kind":"runtime","optional":false},{"id":2090199558,"package_name":"cachetools","ecosystem":"pypi","requirements":"==5.0.0","direct":true,"kind":"runtime","optional":false},{"id":2090199559,"package_name":"charset-normalizer","ecosystem":"pypi","requirements":"==2.0.12","direct":true,"kind":"runtime","optional":false},{"id":2090199560,"package_name":"click","ecosystem":"pypi","requirements":"==8.1.3","direct":true,"kind":"runtime","optional":false},{"id":2090199561,"package_name":"cloudpickle","ecosystem":"pypi","requirements":"==1.6.0","direct":true,"kind":"runtime","optional":false},{"id":2090199562,"package_name":"cycler","ecosystem":"pypi","requirements":"==0.11.0","direct":true,"kind":"runtime","optional":false},{"id":2090199563,"package_name":"cython","ecosystem":"pypi","requirements":"==0.29.28","direct":true,"kind":"runtime","optional":false},{"id":2090199564,"package_name":"decorator","ecosystem":"pypi","requirements":"==4.4.2","direct":true,"kind":"runtime","optional":false},{"id":2090199565,"package_name":"deprecated","ecosystem":"pypi","requirements":"==1.2.13","direct":true,"kind":"runtime","optional":false},{"id":2090199566,"package_name":"dill","ecosystem":"pypi","requirements":"==0.3.4","direct":true,"kind":"runtime","optional":false},{"id":2090199567,"package_name":"dowhy","ecosystem":"pypi","requirements":"==0.7.1","direct":true,"kind":"runtime","optional":false},{"id":2090199568,"package_name":"emcee","ecosystem":"pypi","requirements":"==3.1.1","direct":true,"kind":"runtime","optional":false},{"id":2090199569,"package_name":"emukit","ecosystem":"pypi","requirements":"==0.4.9","direct":true,"kind":"runtime","optional":false},{"id":2090199570,"package_name":"filelock","ecosystem":"pypi","requirements":"==3.6.0","direct":true,"kind":"runtime","optional":false},{"id":2090199571,"package_name":"flatbuffers","ecosystem":"pypi","requirements":"==2.0","direct":true,"kind":"runtime","optional":false},{"id":2090199572,"package_name":"gast","ecosystem":"pypi","requirements":"==0.4.0","direct":true,"kind":"runtime","optional":false},{"id":2090199573,"package_name":"gensim","ecosystem":"pypi","requirements":"==4.2.0","direct":true,"kind":"runtime","optional":false},{"id":2090199574,"package_name":"google-auth","ecosystem":"pypi","requirements":"==2.6.6","direct":true,"kind":"runtime","optional":false},{"id":2090199575,"package_name":"google-auth-oauthlib","ecosystem":"pypi","requirements":"==0.4.6","direct":true,"kind":"runtime","optional":false},{"id":2090199576,"package_name":"google-pasta","ecosystem":"pypi","requirements":"==0.2.0","direct":true,"kind":"runtime","optional":false},{"id":2090199577,"package_name":"gpy","ecosystem":"pypi","requirements":"==1.10.0","direct":true,"kind":"runtime","optional":false},{"id":2090199578,"package_name":"grpcio","ecosystem":"pypi","requirements":"==1.46.0","direct":true,"kind":"runtime","optional":false},{"id":2090199579,"package_name":"gym","ecosystem":"pypi","requirements":"==0.19.0","direct":true,"kind":"runtime","optional":false},{"id":2090199580,"package_name":"h5py","ecosystem":"pypi","requirements":"==3.6.0","direct":true,"kind":"runtime","optional":false},{"id":2090199581,"package_name":"idna","ecosystem":"pypi","requirements":"==3.3","direct":true,"kind":"runtime","optional":false},{"id":2090199582,"package_name":"imageio","ecosystem":"pypi","requirements":"==2.9.0","direct":true,"kind":"runtime","optional":false},{"id":2090199583,"package_name":"importlib-metadata","ecosystem":"pypi","requirements":"==4.11.3","direct":true,"kind":"runtime","optional":false},{"id":2090199584,"package_name":"iniconfig","ecosystem":"pypi","requirements":"==1.1.1","direct":true,"kind":"runtime","optional":false},{"id":2090199585,"package_name":"joblib","ecosystem":"pypi","requirements":"==1.1.0","direct":true,"kind":"runtime","optional":false},{"id":2090199586,"package_name":"karateclub","ecosystem":"pypi","requirements":"==1.2.2","direct":true,"kind":"runtime","optional":false},{"id":2090199587,"package_name":"keras","ecosystem":"pypi","requirements":"==2.7.0","direct":true,"kind":"runtime","optional":false},{"id":2090199588,"package_name":"keras-preprocessing","ecosystem":"pypi","requirements":"==1.1.2","direct":true,"kind":"runtime","optional":false},{"id":2090199589,"package_name":"kiwisolver","ecosystem":"pypi","requirements":"==1.4.2","direct":true,"kind":"runtime","optional":false},{"id":2090199590,"package_name":"libclang","ecosystem":"pypi","requirements":"==14.0.1","direct":true,"kind":"runtime","optional":false},{"id":2090199591,"package_name":"markdown","ecosystem":"pypi","requirements":"==3.3.7","direct":true,"kind":"runtime","optional":false},{"id":2090199592,"package_name":"matplotlib","ecosystem":"pypi","requirements":"==3.4.2","direct":true,"kind":"runtime","optional":false},{"id":2090199593,"package_name":"mpmath","ecosystem":"pypi","requirements":"==1.2.1","direct":true,"kind":"runtime","optional":false},{"id":2090199594,"package_name":"msgpack","ecosystem":"pypi","requirements":"==1.0.3","direct":true,"kind":"runtime","optional":false},{"id":2090199595,"package_name":"mypy-extensions","ecosystem":"pypi","requirements":"==0.4.3","direct":true,"kind":"runtime","optional":false},{"id":2090199596,"package_name":"networkx","ecosystem":"pypi","requirements":"==2.6.3","direct":true,"kind":"runtime","optional":false},{"id":2090199597,"package_name":"numpy","ecosystem":"pypi","requirements":"==1.22.3","direct":true,"kind":"runtime","optional":false},{"id":2090199598,"package_name":"oauthlib","ecosystem":"pypi","requirements":"==3.2.0","direct":true,"kind":"runtime","optional":false},{"id":2090199599,"package_name":"opt-einsum","ecosystem":"pypi","requirements":"==3.3.0","direct":true,"kind":"runtime","optional":false},{"id":2090199600,"package_name":"pandas","ecosystem":"pypi","requirements":"==1.3.4","direct":true,"kind":"runtime","optional":false},{"id":2090199601,"package_name":"paramz","ecosystem":"pypi","requirements":"==0.9.5","direct":true,"kind":"runtime","optional":false},{"id":2090199602,"package_name":"pathspec","ecosystem":"pypi","requirements":"==0.9.0","direct":true,"kind":"runtime","optional":false},{"id":2090199603,"package_name":"patsy","ecosystem":"pypi","requirements":"==0.5.2","direct":true,"kind":"runtime","optional":false},{"id":2090199604,"package_name":"pillow","ecosystem":"pypi","requirements":"==9.1.0","direct":true,"kind":"runtime","optional":false},{"id":2090199605,"package_name":"platformdirs","ecosystem":"pypi","requirements":"==2.5.2","direct":true,"kind":"runtime","optional":false},{"id":2090199606,"package_name":"plotly","ecosystem":"pypi","requirements":"==5.7.0","direct":true,"kind":"runtime","optional":false},{"id":2090199607,"package_name":"pluggy","ecosystem":"pypi","requirements":"==1.0.0","direct":true,"kind":"runtime","optional":false},{"id":2090199608,"package_name":"protobuf","ecosystem":"pypi","requirements":"==3.20.1","direct":true,"kind":"runtime","optional":false},{"id":2090199609,"package_name":"py","ecosystem":"pypi","requirements":"==1.11.0","direct":true,"kind":"runtime","optional":false},{"id":2090199610,"package_name":"pyasn1","ecosystem":"pypi","requirements":"==0.4.8","direct":true,"kind":"runtime","optional":false},{"id":2090199611,"package_name":"pyasn1-modules","ecosystem":"pypi","requirements":"==0.2.8","direct":true,"kind":"runtime","optional":false},{"id":2090199612,"package_name":"pydot","ecosystem":"pypi","requirements":"==1.4.2","direct":true,"kind":"runtime","optional":false},{"id":2090199613,"package_name":"pygraphviz","ecosystem":"pypi","requirements":"==1.7","direct":true,"kind":"runtime","optional":false},{"id":2090199614,"package_name":"pygsp","ecosystem":"pypi","requirements":"==0.5.1","direct":true,"kind":"runtime","optional":false},{"id":2090199615,"package_name":"pyparsing","ecosystem":"pypi","requirements":"==3.0.8","direct":true,"kind":"runtime","optional":false},{"id":2090199616,"package_name":"pytest","ecosystem":"pypi","requirements":"==6.2.5","direct":true,"kind":"runtime","optional":false},{"id":2090199617,"package_name":"python-graphviz","ecosystem":"pypi","requirements":"==0.18.2","direct":true,"kind":"runtime","optional":false},{"id":2090199618,"package_name":"python-levenshtein","ecosystem":"pypi","requirements":"==0.12.2","direct":true,"kind":"runtime","optional":false},{"id":2090199619,"package_name":"python-louvain","ecosystem":"pypi","requirements":"==0.16","direct":true,"kind":"runtime","optional":false},{"id":2090199620,"package_name":"pytz","ecosystem":"pypi","requirements":"==2022.1","direct":true,"kind":"runtime","optional":false},{"id":2090199621,"package_name":"pyyaml","ecosystem":"pypi","requirements":"==5.4.1","direct":true,"kind":"runtime","optional":false},{"id":2090199622,"package_name":"ray","ecosystem":"pypi","requirements":"==1.6.0","direct":true,"kind":"runtime","optional":false},{"id":2090199623,"package_name":"redis","ecosystem":"pypi","requirements":"==4.3.1","direct":true,"kind":"runtime","optional":false},{"id":2090199624,"package_name":"requests","ecosystem":"pypi","requirements":"==2.27.1","direct":true,"kind":"runtime","optional":false},{"id":2090199625,"package_name":"requests-oauthlib","ecosystem":"pypi","requirements":"==1.3.1","direct":true,"kind":"runtime","optional":false},{"id":2090199626,"package_name":"rsa","ecosystem":"pypi","requirements":"==4.8","direct":true,"kind":"runtime","optional":false},{"id":2090199627,"package_name":"scikit-learn","ecosystem":"pypi","requirements":"==1.0.1","direct":true,"kind":"runtime","optional":false},{"id":2090199628,"package_name":"scipy","ecosystem":"pypi","requirements":"==1.7.3","direct":true,"kind":"runtime","optional":false},{"id":2090199629,"package_name":"seaborn","ecosystem":"pypi","requirements":"==0.11.2","direct":true,"kind":"runtime","optional":false},{"id":2090199630,"package_name":"smart-open","ecosystem":"pypi","requirements":"==6.0.0","direct":true,"kind":"runtime","optional":false},{"id":2090199631,"package_name":"stable-baselines3","ecosystem":"pypi","requirements":"==1.2.0","direct":true,"kind":"runtime","optional":false},{"id":2090199632,"package_name":"statsmodels","ecosystem":"pypi","requirements":"==0.13.2","direct":true,"kind":"runtime","optional":false},{"id":2090199633,"package_name":"sympy","ecosystem":"pypi","requirements":"==1.10.1","direct":true,"kind":"runtime","optional":false},{"id":2090199634,"package_name":"tabulate","ecosystem":"pypi","requirements":"==0.8.9","direct":true,"kind":"runtime","optional":false},{"id":2090199635,"package_name":"tenacity","ecosystem":"pypi","requirements":"==8.0.1","direct":true,"kind":"runtime","optional":false},{"id":2090199636,"package_name":"tensorboard","ecosystem":"pypi","requirements":"==2.9.0","direct":true,"kind":"runtime","optional":false},{"id":2090199637,"package_name":"tensorboard-data-server","ecosystem":"pypi","requirements":"==0.6.1","direct":true,"kind":"runtime","optional":false},{"id":2090199638,"package_name":"tensorboard-plugin-wit","ecosystem":"pypi","requirements":"==1.8.1","direct":true,"kind":"runtime","optional":false},{"id":2090199639,"package_name":"tensorflow","ecosystem":"pypi","requirements":"==2.7.0","direct":true,"kind":"runtime","optional":false},{"id":2090199640,"package_name":"tensorflow-estimator","ecosystem":"pypi","requirements":"==2.7.0","direct":true,"kind":"runtime","optional":false},{"id":2090199641,"package_name":"tensorflow-io-gcs-filesystem","ecosystem":"pypi","requirements":"==0.25.0","direct":true,"kind":"runtime","optional":false},{"id":2090199642,"package_name":"termcolor","ecosystem":"pypi","requirements":"==1.1.0","direct":true,"kind":"runtime","optional":false},{"id":2090199643,"package_name":"threadpoolctl","ecosystem":"pypi","requirements":"==3.1.0","direct":true,"kind":"runtime","optional":false},{"id":2090199644,"package_name":"toml","ecosystem":"pypi","requirements":"==0.10.2","direct":true,"kind":"runtime","optional":false},{"id":2090199645,"package_name":"tomli","ecosystem":"pypi","requirements":"==2.0.1","direct":true,"kind":"runtime","optional":false},{"id":2090199646,"package_name":"torch","ecosystem":"pypi","requirements":"==1.11.0","direct":true,"kind":"runtime","optional":false},{"id":2090199647,"package_name":"tqdm","ecosystem":"pypi","requirements":"==4.62.3","direct":true,"kind":"runtime","optional":false},{"id":2090199648,"package_name":"typing-extensions","ecosystem":"pypi","requirements":"==4.2.0","direct":true,"kind":"runtime","optional":false},{"id":2090199649,"package_name":"urllib3","ecosystem":"pypi","requirements":"==1.26.9","direct":true,"kind":"runtime","optional":false},{"id":2090199650,"package_name":"werkzeug","ecosystem":"pypi","requirements":"==2.1.2","direct":true,"kind":"runtime","optional":false},{"id":2090199651,"package_name":"wrapt","ecosystem":"pypi","requirements":"==1.14.1","direct":true,"kind":"runtime","optional":false},{"id":2090199652,"package_name":"zipp","ecosystem":"pypi","requirements":"==3.8.0","direct":true,"kind":"runtime","optional":false}]}],"score":3.295836866004329,"created_at":"2025-09-08T21:58:07.468Z","updated_at":"2025-10-07T08:30:50.235Z","avatar_url":"https://github.com/alan-turing-institute.png","language":"Jupyter Notebook","category":null,"sub_category":null,"monthly_downloads":0,"funding_links":[],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://science.ecosyste.ms/api/v1/projects/98772","html_url":"https://science.ecosyste.ms/projects/98772"}