OSCR

Applying Deep-Learning-Driven <i>De Novo</i> Design to Hit Identification: A Case Study on A<sub>2A</sub> Adenosine Receptor Antagonists.

Code ↔ Paper

1 match between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 1 match
  1. [1] § Experimental Section › Computational Studies › De Novo Design ↔ running_modes/reinforcement_learning/core_reinforcement_learning.py, lines 23–114 · score 0.54 · reinforcement learning, diversity filter, generative model, network, Augmented, inception

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 114 lines · 6.1 KB · Apache-2.0 · 1 match

  1. import time
  2. import numpy as np
  3. import torch
  4. from reinvent_chemistry.utils import get_indices_of_unique_smiles
  5. from reinvent_models.lib_invent.enums.generative_model_regime import GenerativeModelRegimeEnum
  6. from reinvent_models.model_factory.configurations.model_configuration import ModelConfiguration
  7. from reinvent_models.model_factory.enums.model_type_enum import ModelTypeEnum
  8. from reinvent_models.model_factory.generative_model import GenerativeModel
  9. from reinvent_models.model_factory.generative_model_base import GenerativeModelBase
  10. from reinvent_scoring import FinalSummary
  11. from reinvent_scoring.scoring.diversity_filters.reinvent_core.base_diversity_filter import BaseDiversityFilter
  12. from reinvent_scoring.scoring.function.base_scoring_function import BaseScoringFunction
  13. from running_modes.configurations import ReinforcementLearningConfiguration
  14. from running_modes.constructors.base_running_mode import BaseRunningMode
  15. from running_modes.reinforcement_learning.inception import Inception
  16. from running_modes.reinforcement_learning.logging.base_reinforcement_logger import BaseReinforcementLogger
  17. from running_modes.reinforcement_learning.margin_guard import MarginGuard
  18. from running_modes.utils.general import to_tensor
  19. class CoreReinforcementRunner(BaseRunningMode):
  20. def __init__(self, critic: GenerativeModelBase, actor: GenerativeModelBase,
  21. configuration: ReinforcementLearningConfiguration,
  22. scoring_function: BaseScoringFunction, diversity_filter: BaseDiversityFilter,
  23. inception: Inception, logger: BaseReinforcementLogger):
  24. self._prior = critic
  25. self._agent = actor
  26. self._scoring_function = scoring_function
  27. self._diversity_filter = diversity_filter
  28. self.config = configuration
  29. self._logger = logger
  30. self._inception = inception
  31. self._margin_guard = MarginGuard(self)
  32. self._optimizer = torch.optim.Adam(self._agent.get_network_parameters(), lr=self.config.learning_rate)
  33. def run(self):
  34. self._logger.log_message("starting an RL run")
  35. start_time = time.time()
  36. self._disable_prior_gradients()
  37. for step in range(self.config.n_steps):
  38. seqs, smiles, agent_likelihood = self._sample_unique_sequences(self._agent, self.config.batch_size)
  39. # switch signs
  40. agent_likelihood = -agent_likelihood
  41. prior_likelihood = -self._prior.likelihood(seqs)
  42. score_summary: FinalSummary = self._scoring_function.get_final_score_for_step(smiles, step)
  43. score = self._diversity_filter.update_score(score_summary, step)
  44. augmented_likelihood = prior_likelihood + self.config.sigma * to_tensor(score)
  45. loss = torch.pow((augmented_likelihood - agent_likelihood), 2)
  46. loss, agent_likelihood = self._inception_filter(self._agent, loss, agent_likelihood, prior_likelihood,
  47. self.config.sigma, smiles, score)
  48. loss = loss.mean()
  49. self._optimizer.zero_grad()
  50. loss.backward()
  51. self._optimizer.step()
  52. self._stats_and_chekpoint(score, start_time, step, smiles, score_summary,
  53. agent_likelihood, prior_likelihood,
  54. augmented_likelihood)
  55. self._logger.save_final_state(self._agent, self._diversity_filter)
  56. self._logger.log_out_input_configuration()
  57. self._logger.log_out_inception(self._inception)
  58. def _disable_prior_gradients(self):
  59. # There might be a more elegant way of disabling gradients
  60. for param in self._prior.get_network_parameters():
  61. param.requires_grad = False
  62. def _stats_and_chekpoint(self, score, start_time, step, smiles, score_summary: FinalSummary,
  63. agent_likelihood, prior_likelihood, augmented_likelihood):
  64. self._margin_guard.adjust_margin(step)
  65. mean_score = np.mean(score)
  66. self._margin_guard.store_run_stats(agent_likelihood, prior_likelihood, augmented_likelihood, score)
  67. self._logger.timestep_report(start_time, self.config.n_steps, step, smiles,
  68. mean_score, score_summary, score,
  69. agent_likelihood, prior_likelihood, augmented_likelihood, self._diversity_filter)
  70. self._logger.save_checkpoint(step, self._diversity_filter, self._agent)
  71. def _sample_unique_sequences(self, agent, batch_size):
  72. seqs, smiles, agent_likelihood = agent.sample(batch_size)
  73. unique_idxs = get_indices_of_unique_smiles(smiles)
  74. seqs_unique = seqs[unique_idxs]
  75. smiles_np = np.array(smiles)
  76. smiles_unique = smiles_np[unique_idxs]
  77. agent_likelihood_unique = agent_likelihood[unique_idxs]
  78. return seqs_unique, smiles_unique, agent_likelihood_unique
  79. def _inception_filter(self, agent, loss, agent_likelihood, prior_likelihood, sigma, smiles, score):
  80. exp_smiles, exp_scores, exp_prior_likelihood = self._inception.sample()
  81. if len(exp_smiles) > 0:
  82. exp_agent_likelihood = -agent.likelihood_smiles(exp_smiles)
  83. exp_augmented_likelihood = exp_prior_likelihood + sigma * exp_scores
  84. exp_loss = torch.pow((to_tensor(exp_augmented_likelihood) - exp_agent_likelihood), 2)
  85. loss = torch.cat((loss, exp_loss), 0)
  86. agent_likelihood = torch.cat((agent_likelihood, exp_agent_likelihood), 0)
  87. self._inception.add(smiles, score, prior_likelihood)
  88. return loss, agent_likelihood
  89. def reset(self, reset_countdown=0):
  90. model_type_enum = ModelTypeEnum()
  91. model_regime = GenerativeModelRegimeEnum()
  92. actor_config = ModelConfiguration(model_type_enum.DEFAULT, model_regime.TRAINING,
  93. self.config.agent)
  94. self._agent = GenerativeModel(actor_config)
  95. self._optimizer = torch.optim.Adam(self._agent.get_network_parameters(), lr=self.config.learning_rate)
  96. self._logger.log_message("Resetting Agent")
  97. self._logger.log_message(f"Adjusting sigma to: {self.config.sigma}")
  98. return reset_countdown

core_reinforcement_learning.py at commit 1cff392, under Apache-2.0 · at the source

Overview

Authors: Margherita Persico1, Alessandra Micoli2, Veronica Salmaso3, Agostino Cianciulli2, Stefano Moro3, Giampiero Spalluto1, Michela Buccioni4, Gabriella Marucci4, Rosaria Volpini4, Alfonso Pozzan2, Fabrizio Micheli2, Stephanie Federico1
  1. Department of Chemical and Pharmaceutical Sciences, Via Licio Giorgieri 1, Trieste 34127, Italy
  2. Aptuit, an Evotec Company, Via Alessandro Fleming 4, Verona 37135, Italy
  3. Molecular Modeling Section (MMS), Department of Pharmaceutical and Pharmacological Sciences, University of Padova, via Marzolo 5, Padova 35131, Italy
  4. Medicinal Chemistry Unit, School of Pharmacy, University of Camerino, Camerino 62032, Italy
Institutions: University of Trieste (Italy); Aptuit (Italy) (Italy); University of Padua (Italy); Università di Camerino (Italy)
Journal: Journal of medicinal chemistry, volume 69, issue 13, pages 15403-15422
Dates: received 22 January 2026; accepted 10 June 2026; published online 19 June 2026; in print July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1021/acs.jmedchem.6c00231 · PMID 42319230 · PMCID PMC13370865 · OpenAlex W7165184709
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), cellular / molecular (subfield)
MeSH: Adenosine A2 Receptor Antagonists*, Deep Learning*, Drug Design*, Receptor, Adenosine A2A*, Animals, Blood-Brain Barrier, Humans, Ligands, Structure-Activity Relationship, Triazoles (* major topic)
Topic: Receptor Mechanisms and Signaling (Molecular Biology, Biochemistry, Genetics and Molecular Biology), according to OpenAlex
Citations: not cited yet (Europe PMC); 99 references in the paper

Abstract

Artificial intelligence is increasingly applied in early drug discovery to accelerate hit identification and reduce costs. In this study, we implemented an AI-driven de novo design workflow using REINVENT to generate novel antagonists for the A2A adenosine receptor, a validated target for neurodegenerative diseases. The approach combined ligand-based and structure-based components with pharmacokinetic considerations, including blood–brain barrier permeability, within a multiparameter optimization scoring function. Two generative runs were performed: the first, with balanced scoring weights, yielded inactive 1,2,4-triazole derivatives, while an alternative filtering pipeline identified a micromolar hit. A second run emphasizing structural constraints and key receptor interactions produced three active compounds with nanomolar affinity and predicted CNS permeability. These findings highlight the critical role of scoring function parametrization and filtering strategies in AI-driven drug design and demonstrate the potential of reinforcement learning to explore chemical space for CNS-targeted ligands.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 1 match between paragraphs and lines of code.

MolecularAI/Reinvent

License: Apache-2.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 1cff392b9525499736089b63873bae71a64d9033, 19 October 2023
Languages: Python (275)
Size: 282 files, 275 scripts
Software Heritage: not archived
Found in: the text, “Results and Discussion”
Holds: README, license file, environment (Dockerfile), tests
Not found: CITATION.cff, continuous integration, documentation
Tools: PyTorch (63 files), NumPy (51 files), pandas (4 files), RDKit (2 files), SciPy (2 files), Pillow (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
277 files

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 275 scripts, each with its path and the digest of its content;
  • 1 match between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 2, 28 September 2026

  • Publisher: n/a → American Chemical Society

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 12 authors, 10 MeSH terms, 1 funder, 93 references.

Cite

This paper

Persico, M., Micoli, A., Salmaso, V., Cianciulli, A., Moro, S., Spalluto, G., Buccioni, M., Marucci, G., Volpini, R., Pozzan, A., Micheli, F., & Federico, S. (2026). Applying Deep-Learning-Driven <i>De Novo</i> Design to Hit Identification: A Case Study on A<sub>2A</sub> Adenosine Receptor Antagonists. Journal of medicinal chemistry, 69(13), 15403-15422. https://doi.org/10.1021/acs.jmedchem.6c00231

BibTeX

@article{persico2026applying,
author = {Persico, Margherita and Micoli, Alessandra and Salmaso, Veronica and Cianciulli, Agostino and Moro, Stefano and Spalluto, Giampiero and Buccioni, Michela and Marucci, Gabriella and Volpini, Rosaria and Pozzan, Alfonso and Micheli, Fabrizio and Federico, Stephanie},
title = {{Applying Deep-Learning-Driven \<i\>De Novo\</i\> Design to Hit Identification: A Case Study on A\<sub\>2A\</sub\> Adenosine Receptor Antagonists}},
journal = {Journal of medicinal chemistry},
year = {2026},
month = jun,
volume = {69},
number = {13},
pages = {15403--15422},
publisher = {American Chemical Society},
issn = {0022-2623},
doi = {10.1021/acs.jmedchem.6c00231},
url = {https://doi.org/10.1021/acs.jmedchem.6c00231},
pmid = {42319230},
pmcid = {PMC13370865}
}

RIS

TY - JOUR
AU - Persico, Margherita
AU - Micoli, Alessandra
AU - Salmaso, Veronica
AU - Cianciulli, Agostino
AU - Moro, Stefano
AU - Spalluto, Giampiero
AU - Buccioni, Michela
AU - Marucci, Gabriella
AU - Volpini, Rosaria
AU - Pozzan, Alfonso
AU - Micheli, Fabrizio
AU - Federico, Stephanie
TI - Applying Deep-Learning-Driven <i>De Novo</i> Design to Hit Identification: A Case Study on A<sub>2A</sub> Adenosine Receptor Antagonists
T2 - Journal of medicinal chemistry
J2 - J Med Chem
PY - 2026
DA - 2026/06/19
VL - 69
IS - 13
SP - 15403
EP - 15422
SN - 0022-2623
PB - American Chemical Society
DO - 10.1021/acs.jmedchem.6c00231
UR - https://doi.org/10.1021/acs.jmedchem.6c00231
LA - en
ER -

CSL-JSON

{
"id": "10.1021/acs.jmedchem.6c00231",
"type": "article-journal",
"title": "Applying Deep-Learning-Driven <i>De Novo</i> Design to Hit Identification: A Case Study on A<sub>2A</sub> Adenosine Receptor Antagonists",
"container-title": "Journal of medicinal chemistry",
"author": [
{
"family": "Persico",
"given": "Margherita"
},
{
"family": "Micoli",
"given": "Alessandra"
},
{
"family": "Salmaso",
"given": "Veronica"
},
{
"family": "Cianciulli",
"given": "Agostino"
},
{
"family": "Moro",
"given": "Stefano"
},
{
"family": "Spalluto",
"given": "Giampiero"
},
{
"family": "Buccioni",
"given": "Michela"
},
{
"family": "Marucci",
"given": "Gabriella"
},
{
"family": "Volpini",
"given": "Rosaria"
},
{
"family": "Pozzan",
"given": "Alfonso"
},
{
"family": "Micheli",
"given": "Fabrizio"
},
{
"family": "Federico",
"given": "Stephanie"
}
],
"container-title-short": "J Med Chem",
"volume": "69",
"issue": "13",
"page": "15403-15422",
"DOI": "10.1021/acs.jmedchem.6c00231",
"PMID": "42319230",
"PMCID": "PMC13370865",
"ISSN": "0022-2623",
"publisher": "American Chemical Society",
"URL": "https://doi.org/10.1021/acs.jmedchem.6c00231",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
19
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1038/s41598-026-48239-2 [code]
LigGen-a GEN-AI based ligand generation approach for de-novo drug design.
Journal: Scientific reports
In common: RDKit, PyTorch, SciPy, 1 other tool, 2 references
[2] doi:10.34133/csbj.0184 [code]
Cross-Species Multitask Learning with Molecular and ADME Descriptors for Liver Microsomal Metabolic Stability.
Journal: Computational and structural biotechnology journal
In common: RDKit, Pillow, PyTorch, 2 other tools, cellular / molecular, 1 reference
[3] doi:10.1038/s42003-026-10957-8 [code]
Brain defence by the extracellular matrix protein Cochlin.
Journal: Communications biology
In common: RDKit, Pillow, PyTorch, 3 other tools, cellular / molecular
[4] doi:10.1093/bib/bbag118 [code]
Drug screening for α-synuclein aggregation inhibitors via multimodal graph neural network.
Journal: Briefings in bioinformatics
In common: RDKit, Pillow, PyTorch, 3 other tools, cellular / molecular
[5] doi:10.1186/s13321-026-01177-7 [code]
A pipeline for developing AI-driven models to predict molecular initiating events: a case study on neural tube defects.
Journal: Journal of cheminformatics
In common: RDKit, PyTorch, pandas, 2 other tools, 1 reference
[6] doi:10.3390/ph19081319 [code]
DeepBBB: A Data-Composition-Aware Graph Screening Workflow for BBB-Focused CNS Library Construction and Prospective PAMPA-BBB Evaluation.
Journal: Pharmaceuticals (Basel, Switzerland)
In common: RDKit, PyTorch, pandas, 2 other tools, 1 reference
[7] doi:10.34133/csbj.0036 [code]
HYG-mol: An Interpretable Multimodal Hypergraph Framework for Molecular Property Prediction.
Journal: Computational and structural biotechnology journal
In common: RDKit, PyTorch, pandas, 1 other tool, cellular / molecular, 1 reference
[8] doi:10.1021/acs.jcim.6c01299 [code]
Targeting BCL-2 through Deep Learning-Based Drug Repurposing: A Multimodal Approach Combining Diffusion-Based Generative Modeling, Neural Relational Inference, and In Vitro Validation.
Journal: Journal of chemical information and modeling
In common: RDKit, PyTorch, pandas, 2 other tools, cellular / molecular
[9] doi:10.1038/s41598-026-53415-5 [code]
Computational design and immunoinformatics validation of a T cell multi-epitope vaccine targeting glioblastoma stem cells.
Journal: Scientific reports
In common: RDKit, PyTorch, pandas, 2 other tools, cellular / molecular
[10] doi:10.1038/s41586-026-10391-0 [code]
Cell-type-targeted mitochondrial transplantation rescues cell degeneration.
Journal: Nature
In common: RDKit, PyTorch, pandas, 2 other tools, cellular / molecular

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.