{"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/arxiv-2605-19677","title":"Agentic Discovery of Cryomicroneedle Formulations","arxiv_id":"2605.19677","date":"2026-05-19","proceeding":null,"authors":["Hao Li","Lifu Du","Nurul Hameed","Shemonti Saha Authai","Zlata Stefanovic","Chenjie Xu"],"abstract":"Cryomicroneedles offer a route to minimally invasive intradermal delivery of living cells, but their cryogenic formulations must reconcile cell protection with constraints on toxicity and device fabrication. Here we report an AI-assisted, closed-loop workflow for cryomicroneedle cryoprotectant discovery that combines literature curation, Gaussian-process surrogate modelling, Bayesian optimization, and sequential wet-lab validation. A curated dataset of 198 mesenchymal stem-cell cryopreservation formulations from 42 studies was converted into 21 ingredient features and used to train an uncertainty-aware literature prior. This model captured moderate structure in the literature data but failed prospectively, motivating iterative wet-lab correction. Across ten validation iterations and 106 wet-lab observations, the model progressively adapted to cryomicroneedle-specific outcomes: batch RMSE decreased from 41.21 to 6.86 percentage points, later-stage rank correlations became consistently positive, and the cumulative wet-lab predicted-versus-measured summary reached $R^2 = 0.942$. The best validated formulation achieved 95.15\\% post-thaw viability with low DMSO, ectoin, ethylene glycol, and fetal bovine serum. However, high viability alone did not ensure intact cryomicroneedle formation, highlighting the need for future multi-objective optimization. These results demonstrate that agent-assisted computational infrastructure can make data-efficient formulation discovery more accessible to labs with minimal data expertise in-house. Project code is available at https://github.com/baitmeister/ML-for-CryoMN.","url_abs":"https://arxiv.org/abs/2605.19677","url_pdf":"https://arxiv.org/pdf/2605.19677","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.19677","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.19677"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/baitmeister/ML-for-CryoMN","reach":null}],"summary":{"ran":29},"by_repo_kind":{"found_in_text":{"samples":29,"ran":29,"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":"1695733f30e6bf36","entry":"build_iteration_output_path","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/03_optimization/optimize_formulation.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/03_optimization/optimize_formulation.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":"1695733f30e6bf36"}},{"code_sha256_prefix":"ae91965549d22db4","entry":"choose_adaptive_split","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/07_next_formulations/next_formulations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/07_next_formulations/next_formulations.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":"ae91965549d22db4"}},{"code_sha256_prefix":"1d9a2a9fcc63dc81","entry":"classify_peg_mw","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/01_data_parsing/parse_formulations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/01_data_parsing/parse_formulations.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1d9a2a9fcc63dc81"}},{"code_sha256_prefix":"ed48182fa7de89b7","entry":"clean_feature_name","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/explainability.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/explainability.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ed48182fa7de89b7"}},{"code_sha256_prefix":"871a3dcc943b8eaf","entry":"compute_recent_split_diagnostics","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/07_next_formulations/next_formulations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/07_next_formulations/next_formulations.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":"871a3dcc943b8eaf"}},{"code_sha256_prefix":"7ca5eb1090fff71d","entry":"convert_to_molar","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/01_data_parsing/parse_formulations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/01_data_parsing/parse_formulations.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":"7ca5eb1090fff71d"}},{"code_sha256_prefix":"e02536943d92a317","entry":"count_ingredients","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/03_optimization/optimize_formulation.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/03_optimization/optimize_formulation.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e02536943d92a317"}},{"code_sha256_prefix":"65345cb467db4975","entry":"count_nonzero","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/05_bo_optimization/bo_optimizer.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/05_bo_optimization/bo_optimizer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"65345cb467db4975"}},{"code_sha256_prefix":"78d2e910c297e132","entry":"create_gp_model","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model_weighted_prior.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model_weighted_prior.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":"78d2e910c297e132"}},{"code_sha256_prefix":"1330023a659d9c81","entry":"create_validation_template","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model.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":"1330023a659d9c81"}},{"code_sha256_prefix":"cbb02dc068435d7a","entry":"create_validation_template","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model_weighted_prior.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model_weighted_prior.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":"cbb02dc068435d7a"}},{"code_sha256_prefix":"bb76cf41b4f60ec5","entry":"extract_concentration","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/01_data_parsing/parse_formulations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/01_data_parsing/parse_formulations.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":"bb76cf41b4f60ec5"}},{"code_sha256_prefix":"eff6a6457dce63df","entry":"fit_standard_gp","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model.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":"eff6a6457dce63df"}},{"code_sha256_prefix":"696a224b300a5b22","entry":"fit_weighted_gp","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model_weighted_simple.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model_weighted_simple.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":"696a224b300a5b22"}},{"code_sha256_prefix":"877863db38b995d5","entry":"load_json","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/stage_r2_predicted_vs_actual.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/stage_r2_predicted_vs_actual.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":"877863db38b995d5"}},{"code_sha256_prefix":"9923152ee675cec0","entry":"load_parsed_data","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/02_model_training/train_gp_model.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/02_model_training/train_gp_model.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":"9923152ee675cec0"}},{"code_sha256_prefix":"2f47623c99e4355e","entry":"load_pickle","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/stage_r2_predicted_vs_actual.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/stage_r2_predicted_vs_actual.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":"2f47623c99e4355e"}},{"code_sha256_prefix":"a311d71b89642205","entry":"load_validation_results","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model.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":"a311d71b89642205"}},{"code_sha256_prefix":"2de3fb7d8cd34002","entry":"load_validation_results","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/update_model_weighted_prior.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/update_model_weighted_prior.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":"2de3fb7d8cd34002"}},{"code_sha256_prefix":"1cc87fd598ae7663","entry":"parse_args","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/explainability.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/explainability.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":"1cc87fd598ae7663"}},{"code_sha256_prefix":"446562b59a72d5b9","entry":"parse_args","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/stage_r2_predicted_vs_actual.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/stage_r2_predicted_vs_actual.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":"446562b59a72d5b9"}},{"code_sha256_prefix":"a7da1e5c0dae8ee6","entry":"parse_timestamp","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/evaluate_iterations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/evaluate_iterations.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":"a7da1e5c0dae8ee6"}},{"code_sha256_prefix":"74eb6f5f376e2e5e","entry":"parse_validation_dates","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/compare_update_methods.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/compare_update_methods.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":"74eb6f5f376e2e5e"}},{"code_sha256_prefix":"d493b2123d85f367","entry":"prepare_features","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/02_model_training/train_gp_model.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/02_model_training/train_gp_model.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":"d493b2123d85f367"}},{"code_sha256_prefix":"b511b445c5e0a93f","entry":"round_or_none","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/compare_update_methods.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/compare_update_methods.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b511b445c5e0a93f"}},{"code_sha256_prefix":"ea4f607e50f2e6b3","entry":"round_or_none","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/07_next_formulations/next_formulations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/07_next_formulations/next_formulations.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ea4f607e50f2e6b3"}},{"code_sha256_prefix":"54a77b7a00eb3064","entry":"scale_features","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/02_model_training/train_gp_model.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/02_model_training/train_gp_model.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"54a77b7a00eb3064"}},{"code_sha256_prefix":"5518efd0788675b7","entry":"stage_from_experiment_id","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/04_validation_loop/compare_update_methods.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/04_validation_loop/compare_update_methods.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5518efd0788675b7"}},{"code_sha256_prefix":"41f78ea5c6fc98ea","entry":"stage_from_iteration_dir","repo":"baitmeister/ML-for-CryoMN","repo_kind":"found_in_text","path":"src/06_evaluation_explainability/evaluate_iterations.py","file_url":"https://github.com/baitmeister/ML-for-CryoMN/blob/HEAD/src/06_evaluation_explainability/evaluate_iterations.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"41f78ea5c6fc98ea"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}