Communitygithub.com

Rowan

Rowan est une plateforme de workflows de modélisation moléculaire et de chimie médicinale native du cloud, dotée d'une API Python. Utilisez-la pour la prédiction de pKa et macropKa, les ensembles de conformères et tautomères, le docking et le docking d'analogues, le co-repliement protéine-ligand, la génération de MSA, la dynamique moléculaire, la perméabilité, les workflows de descripteurs, et d'autres tâches de modélisation de petites molécules ou de protéines. Idéal pour le criblage par lots programmatique, les pipelines chimiques en plusieurs étapes, et les workflows qui nécessiteraient autrement le maintien d'une infrastructure HPC/GPU locale.

Qu'est-ce que Rowan ?

Rowan est une plateforme de workflows native du cloud, spécialisée dans la modélisation moléculaire, la chimie médicinale et la conception basée sur la structure. Elle expose une API Python unifiée qui permet d'exécuter des workflows programmatiques pour de petites molécules (prédiction de propriétés, génération de conformères, docking, dynamique moléculaire) et des protéines (co-repliement, génération d'alignements de séquences), le tout sans avoir à gérer une infrastructure HPC ou GPU locale. Rowan gère l'infrastructure, la mise à l'échelle des calculs et la gestion des résultats, avec des objets de résultats typés offrant des propriétés de commodité et un accès aux données brutes. La plateforme prend en charge des workflows courants comme les descripteurs, le pKa, le macropKa, la recherche de conformères, la recherche de tautomères, le docking, le docking d'analogues, la génération de MSA et le co-repliement protéine-ligand, avec la possibilité de les enchaîner en pipelines multi-étapes. Rowan est particulièrement utile pour les campagnes de chimie médicinale par lots, les pipelines chimiques complexes, et toute tâche de conception moléculaire nécessitant une infrastructure évolutive et reproductible.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/rowan

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Rowan : Workflows de Modélisation Moléculaire et Conception de Médicaments Natifs du Cloud

Aperçu

Rowan est une plateforme de workflows native du cloud pour la simulation moléculaire, la chimie médicinale et la conception basée sur la structure. Son API Python expose une interface unifiée pour la modélisation de petites molécules, la prédiction de propriétés, le docking, la dynamique moléculaire et les workflows d'IA structurale.

Utilisez Rowan lorsque vous souhaitez exécuter des workflows de chimie médicinale ou de conception moléculaire de manière programmatique sans maintenir une infrastructure HPC locale, un provisionnement GPU ou une collection d'outils de modélisation séparés. Rowan gère toute l'infrastructure, la gestion des résultats et la mise à l'échelle des calculs.

Quand utiliser Rowan

Rowan est adapté pour :

  • Chimie quantique, méthodes semi-empiriques ou potentiels de réseaux neuronaux
  • Prédiction de propriétés par lots (pKa, descripteurs, perméabilité, solubilité)
  • Génération d'ensembles de conformères et tautomères
  • Workflows de docking (ligand unique, série d'analogues, affinement de pose)
  • Co-repliement protéine-ligand et génération de MSA
  • Pipelines chimiques en plusieurs étapes (par exemple, recherche de tautomères → docking → analyse de pose)
  • Campagnes de chimie médicinale par lots nécessitant une infrastructure cohérente et évolutive

Rowan n'est pas adapté pour :

  • Entrée/sortie moléculaire simple (utilisez RDKit directement)
  • Chimie quantique post-HF ab initio ou calculs relativistes

Démarrage rapide

uv pip install rowan-python
import rowan
rowan.api_key = "votre_clé_api_ici"  # ou définir la variable d'env ROWAN_API_KEY

# Les descripteurs nécessitent une molécule 3D, pas une simple chaîne SMILES.
mol = rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O")
wf = rowan.submit_descriptors_workflow(mol, name="aspirine")
result = wf.result()

print(result.descriptors["MW"])       # 180.042 — masse exacte
print(result.descriptors["SLogP"])    # 1.31
print(result.descriptors["TopoPSA"])  # 63.6 — PSA topologique

Si cela s'imprime sans erreur, vous êtes correctement configuré. Ces valeurs et exemples ont été vérifiés avec rowan-python 3.1.13.

Installation

uv pip install rowan-python
# ou : uv pip install rowan-python

Gestion des utilisateurs et webhooks

Authentification

Définissez une clé API via une variable d'environnement (recommandé) :

export ROWAN_API_KEY="votre_clé_api_ici"

Ou définissez-la directement en Python :

import rowan
rowan.api_key = "votre_clé_api_ici"

Vérifiez l'authentification :

import rowan
user = rowan.whoami()  # Renvoie les infos utilisateur si authentifié
print(f"Utilisateur : {user.email}")
print(f"Crédits disponibles : {user.credits_available_string()}")

Formats d'entrée des molécules

Rowan accepte les molécules dans les formats suivants :

  • SMILES (préféré) : "CCO", "c1ccccc1O"
  • Patterns SMARTS (pour certains workflows) : sous-ensemble de SMARTS pour la correspondance de sous-structures
  • InChI (si pris en charge par votre version d'API) : "InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3"

L'API valide les entrées de molécules et lève une ValueError pour un SMILES non analysable ou un type d'entrée incompatible avec le workflow. Utilisez toujours des SMILES canoniques pour la reproductibilité.

Chaînes SMILES versus objets moléculaires

Les types d'entrée acceptés varient selon le workflow dans rowan-python 3.1.13. Seuls ces workflows courants acceptent une chaîne nue : pKa, recherche de conformères, perméabilité membranaire, ADMET, LogP, macropKa, solubilité et MD d'analyse de pose. La plupart des autres — y compris les descripteurs, la recherche de tautomères, le docking, le docking d'analogues, BDE, NMR et Fukui — nécessitent rowan.Molecule.from_smiles(smiles) ou un objet Mol/RWMol de RDKit. Un mauvais type lève une ValueError avant la soumission.

Astuce : Utilisez RDKit pour valider les SMILES avant la soumission :

from rdkit import Chem
smiles = "CCO"
mol = Chem.MolFromSmiles(smiles)
if mol is None:
    raise ValueError(f"SMILES invalide : {smiles}")

Modèle d'utilisation de base

La plupart des tâches Rowan suivent le même modèle en trois étapes :

  1. Soumettre un workflow
  2. Attendre la fin (avec streaming optionnel)
  3. Récupérer les résultats typés avec des propriétés de commodité
import rowan

# 1. Soumettre — utilisez la fonction de workflow spécifique (pas la générique submit_workflow)
workflow = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O"),
    name="descripteurs aspirine",
)

# 2. & 3. Attendre et récupérer
result = workflow.result()  # Bloque jusqu'à la fin (par défaut : wait=True, poll_interval=5)
print(result.data)              # Dictionnaire brut
print(result.descriptors["MW"]) # 180.042 masse exacte ; pas de propriété result.molecular_weight

Pour les workflows de longue durée, utilisez le streaming :

for partial in workflow.stream_result(poll_interval=5):
    print(f"Complet : {partial.complete}")  # booléen, pas un pourcentage
    print(partial.data)

result() vs. stream_result()

PatternQuand l'utiliserDurée
result()Vous pouvez attendre le résultat complet<5 min typique
stream_result()Vous voulez un retour de progression ou des résultats partiels précoces>5 min, ou utilisation interactive

Recommandation : Utilisez result() pour les descripteurs, pKa. Utilisez stream_result() pour la recherche de conformères, le docking, le co-repliement.

Travailler avec les résultats

L'API de Rowan inclut des objets de résultat de workflow typés avec des propriétés de commodité.

Utiliser les propriétés typées et .data

Les résultats ont deux modes d'accès :

  1. Propriétés de commodité (recommandées en premier) : result.descriptors, result.best_pose, result.scores. Les classes de résultat diffèrent : la recherche de conformères utilise les méthodes get_energies() et get_conformers().
  2. Recours aux données brutes : result.data — dictionnaire brut de l'API

Exemple :

result = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CCO"),
    name="éthanol",
).result()

# Propriété de commodité (renvoie tous les descripteurs) :
print(result.descriptors["MW"])       # masse exacte/monoisotopique
print(result.descriptors["SLogP"])
print(result.descriptors["TopoPSA"])  # PSA topologique usuel

# Recours aux données brutes :
print(result.data["descriptors"])

Remarque : DescriptorsResult n'a PAS de propriété molecular_weight. MW est la masse exacte/monoisotopique, pas le poids moléculaire moyen. TPSA est un descripteur de surface chargée 3D ; utilisez TopoPSA pour la surface polaire topologique usuelle utilisée dans les règles de similarité médicamenteuse.

Invalidation du cache

Certaines propriétés de résultat sont chargées paresseusement (par exemple, géométries de conformères, structures de protéines). Pour rafraîchir :

result.clear_cache()
new_structures = result.get_conformers()  # Réextrait pour ConformerSearchResult

Projets, dossiers et organisation

Pour les campagnes non triviales, utilisez des projets et des dossiers pour garder le travail organisé.

Projets

import rowan

# Créer un projet
project = rowan.create_project(name="Optimisation de tête de série CDK2")
rowan.set_project("Optimisation de tête de série CDK2")

# Tous les workflows suivants vont dans ce projet
wf = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CCO"), name="composé test"
)

# retrieve_project prend un UUID ; list_workflows se limite avec parent_uuid.
project = rowan.retrieve_project(project.uuid)
workflows = rowan.list_workflows(parent_uuid=project.uuid, size=50)

Dossiers

# Créer une structure de dossiers hiérarchique
dossier = rowan.create_folder(name="docking/lot_1/criblage")

wf = rowan.submit_docking_workflow(
    # ... paramètres de docking ...
    folder=dossier,
    name="composé_001",
)

# Lister les workflows dans un dossier
results = rowan.list_workflows(parent_uuid=dossier.uuid)

Arbres de décision de workflows

pKa vs. MacropKa

Utilisez le pKa microscopique lorsque :

  • Vous avez besoin du pKa d'un seul groupe ionisable
  • Vous êtes intéressé par les transitions acide-base et la thermodynamique de protonation
  • La molécule a un ou deux sites ionisables
  • La vitesse est critique (plus rapide, moins de crédits)

Utilisez le macropKa lorsque :

  • Vous avez besoin d'un comportement dépendant du pH sur une plage physiologiquement pertinente (par exemple, 0-14)
  • Vous voulez une charge agrégée et des populations d'état de protonation en fonction du pH
  • La molécule a plusieurs groupes ionisables avec une protonation couplée
  • Vous avez besoin de propriétés en aval comme la solubilité aqueuse à différents pH

Exemple de décision :

Phénol (pKa ~10) : Utilisez le pKa microscopique
Amine (pKa ~9-10) : Utilisez le pKa microscopique
Médicament multi-ionisable (N, O, groupe acide) : Utilisez le macropKa
Évaluation ADME dans le pH gastro-intestinal : Utilisez le macropKa

Recherche de conformères vs. recherche de tautomères

Utilisez la recherche de conformères lorsque :

  • Une seule forme tautomère est connue
  • Vous avez besoin d'un ensemble 3D diversifié pour le docking, la MD ou l'analyse SAR
  • Les liaisons rotatives dominent l'espace chimique

Utilisez la recherche de tautomères lorsque :

  • L'équilibre tautomère est incertain (par exemple, hétérocycles, systèmes céto-énol)
  • Vous devez modéliser tous les isomères de protonation pertinents
  • Les calculs en aval (docking, pKa) dépendent de la forme tautomère

Workflow combiné :

# Étape 1 : Trouver le meilleur tautomère
taut_wf = rowan.submit_tautomer_search_workflow(
    initial_molecule=rowan.Molecule.from_smiles("O=c1[nH]ccnc1"),
    name="tautomères imidazole",
)
best_taut = taut_wf.result().best_tautomer

# Étape 2 : Générer des conformères à partir du meilleur tautomère
conf_wf = rowan.submit_conformer_search_workflow(
    initial_molecule=best_taut,
    name="conformères imidazole",
)

Docking vs. docking d'analogues vs. co-repliement

WorkflowQuand l'utiliserEntréeSortie
DockingLigand unique, poche connueProtéine + SMILES + coordonnées de pochePose, score, dG
Docking d'analogues5-100+ composés apparentésProtéine + liste de SMILES + ligand de référenceToutes les poses, alignées sur la référence
Co-repliement protéine-ligandSéquence + ligand, pas de structure cristallineSéquence protéique + SMILESComplexe lié prédit par ML

Utilitaires protéiques

Télécharger des protéines

# À partir d'un fichier PDB local
proteine = rowan.upload_protein(
    name="domaine_kinase_egfr",
    file_path="egfr_kinase.pdb",
)

# À partir de la base de données PDB
proteine_from_pdb = rowan.create_protein_from_pdb_id(
    name="CDK2 (1M17)",
    code="1M17",
)

# Récupérer une protéine précédemment téléchargée
proteine = rowan.retrieve_protein("uuid-protéine")

# Lister toutes les protéines
mes_proteines = rowan.list_proteins()

Conseils pour la préparation des protéines

  • Format de fichier : PDB, mmCIF (Rowan détecte automatiquement)
  • Molécules d'eau : Rowan conserve généralement l'eau pertinente ; supprimez l'eau en vrac au préalable si souhaité
  • Hétéroatomes : Les cofacteurs, ions et ligands liés sont généralement conservés ; supprimez les hétéroatomes indésirables avant le téléchargement
  • Protéines multi-chaînes : Entièrement prises en charge
  • Résolution : Fonctionne avec les structures NMR, les modèles d'homologie et la cryo-EM ; la qualité est importante pour les prédictions en aval
  • Validation : Rowan valide la syntaxe PDB ; les fichiers gravement malformés peuvent être rejetés

Catalogue de workflows

Neuf catégories de workflows courantes — descripteurs, pKa microscopique, MacropKa, recherche de conformères, recherche de tautomères, docking, docking d'analogues, génération de MSA et co-repliement protéine-ligand — chacune avec du code de soumission et des formes de résultat, plus la liste complète de chaque type de workflow pris en charge (modélisation de base, conception basée sur la structure, chimie computationnelle avancée, chimie réactionnelle, propriétés avancées, énergie libre de liaison, et biologie séquentielle et structurale) se trouvent dans références/catalogue_workflows.md.

Soumission par lots, webhooks et travail asynchrone

La soumission/interrogation/récupération par lots, le modèle feu-et-vérifie non bloquant, la configuration de webhook, la création et la rotation de secrets, la vérification de la charge utile et de la signature (avec un gestionnaire FastAPI), et les bonnes pratiques pour les webhooks se trouvent dans références/lots_et_webhooks.md.

Accès, tarification et crédits

Les limites du niveau gratuit, la consommation de crédits par workflow, et les estimations de coûts typiques se trouvent dans références/acces_et_tarification.md.

Exemple détaillé et dépannage

Une campagne complète d'optimisation de tête de série — configuration du projet, tautomères, pKa sur une série d'analogues, collecte des résultats, et un suivi de docking — se trouve dans références/exemple_complet.md.

Les erreurs courantes avec leurs correctifs, et les conseils de débogage, se trouvent dans références/depannage.md.

Modèles d'utilisation recommandés

  • Préférez les workflows natifs de Rowan plutôt que l'assemblage de bas niveau lorsqu'ils existent
  • Utilisez des projets et dossiers pour toute campagne non triviale (>5 workflows)
  • Utilisez result() pour bloquer jusqu'à la fin (par défaut : wait=True, poll_interval=5)
  • Utilisez d'abord les propriétés de résultat typées, recourez à .data pour les champs non mappés
  • Utilisez la soumission par lots pour les bibliothèques de composés ou les séries d'analogues
  • Enchaînez les workflows pour les campagnes chimiques en plusieurs étapes :
    • pKa → macropKa → perméabilité (évaluation ADME)
    • recherche de tautomères → docking → MD d'analyse de pose (affinement de pose)
    • génération de MSA → co-repliement protéine-ligand (prédiction de structure par IA)
  • Utilisez les webhooks pour les campagnes de longue durée (>50 workflows) ou les pipelines asynchrones
  • Utilisez le streaming pour un retour interactif sur les grandes recherches de conformères/docking

Résumé

Utilisez Rowan lorsque votre workflow nécessite une exécution dans le cloud pour des tâches de conception moléculaire, en particulier lorsque vous souhaitez une API unifiée et une gestion cohérente des résultats pour la modélisation de petites molécules, les protéines, le docking, la prédiction ADME et la génération de structures par ML.

Rowan est une plateforme de workflows de conception moléculaire, pas seulement un moteur de chimie à distance. Elle gère la mise à l'échelle de l'infrastructure, la persistance des résultats et l'orchestration de pipelines en plusieurs étapes afin que vous puissiez vous concentrer sur la science.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

adaptyv

How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.

aeon

This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.

alphagenome

Look up precomputed AlphaGenome Atlas effects for any GRCh38 single-nucleotide variant (AVI score with Phred and 18 SHAP feature attributions, plus raw and quantile scores for RNA-seq, DNase, ATAC, ChIP-TF, ChIP-histone, CAGE, PRO-cap, splicing, polyadenylation and contact-map tracks), score variants or scan windows on demand with the AlphaGenome model for human and mouse (variant scoring, in silico mutagenesis, REF-versus-ALT track prediction), and build Atlas website deep links. Use when the user mentions AlphaGenome, AlphaGenome Atlas, AVI or AlphaGenome Variant Impact, DeepMind variant effect prediction, or wants to prioritise or mechanistically interpret non-coding, regulatory, splicing, enhancer, promoter, or chromatin-accessibility effects of SNVs from a VCF, credible set, or region. Research use only; not a clinical tool.

analytical-method-validation

Plan, execute, and document validation, verification, and transfer of analytical procedures under the governing framework - ICH Q2(R2) and Q14, USP <1220>/<1225>/<1226>, ICH M10 bioanalytical, CLSI EP, or ISO/IEC 17025. Use for HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, and ligand binding or cell-based assays whenever the question is whether a procedure is fit for its intended purpose. Triggers include

anndata

Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.

arbor

Autonomously improve a real artifact (code, training recipe, agent harness, data pipeline, prompt) against an objective and an evaluator, using Hypothesis Tree Refinement (HTR) from the Arbor paper. Use this whenever someone wants to iteratively optimize something over many experiments without overfitting — e.g.

arboreto

Infer gene regulatory networks (GRNs) from gene expression data using scalable algorithms (GRNBoost2, GENIE3). Use when analyzing transcriptomics data (bulk RNA-seq, single-cell RNA-seq) to identify transcription factor-target gene relationships and regulatory interactions. Supports distributed computation for large-scale datasets.

astropy

Core Python library for astronomy and astrophysics workflows that need Astropy APIs, including units/quantities, coordinates, FITS I/O, tables, time systems, WCS, and cosmology. Use when implementing or debugging astronomical data analysis code with Astropy.

autoskill

Observe the user

benchling-integration

Benchling Python SDK and REST API integration for registry entities, inventory, ELN entries, workflows, Benchling Apps, and Data Warehouse queries. Use when automating lab data with benchling-sdk or the v2 API.

bgpt-paper-search

Search scientific papers and retrieve structured experimental data extracted from full-text studies via the BGPT MCP server. Returns 25+ fields per paper including methods, results, sample sizes, quality scores, and conclusions. Use for literature reviews, evidence synthesis, and finding experimental details not available in abstracts alone.

bids

>

biopython

Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.

bioservices

Unified Python interface to 40+ bioinformatics services. Use when querying multiple databases (UniProt, KEGG, ChEMBL, Reactome) in a single workflow with consistent API. Best for cross-database analysis, ID mapping across services. For quick single-database lookups use gget; for sequence/file manipulation use biopython.

bulk-rnaseq

End-to-end bulk RNA-seq orchestrator — takes raw FASTQ reads through QC and trimming (FastQC, fastp/Trim Galore), alignment and quantification (STAR, Salmon, featureCounts), assembles a gene-level counts matrix, then hands off to differential expression (pydeseq2), pathway/GSEA enrichment (pathway-enrichment), and publication figures (scientific-visualization). Use whenever the user has bulk RNA-seq reads or quant output and wants a complete, reproducible differential-expression workflow — e.g.

cellxgene-census

Query the CZ CELLxGENE Census programmatically for versioned public single-cell and spatial transcriptomics data. Use when you need population-scale cell metadata, gene expression slices, Census summary counts, source H5AD URIs/downloads, embeddings, spatial Census data, or reference atlas comparisons across organisms, tissues, diseases, assays, and cell types. For analyzing your own local single-cell data use scanpy, anndata, or scvi-tools.

cirq

Google quantum computing framework. Use when targeting Google Quantum AI hardware, designing noise-aware circuits, or running quantum characterization experiments. Best for Google hardware, noise modeling, and low-level circuit design. For IBM hardware use qiskit; for quantum ML with autodiff use pennylane; for physics simulations use qutip.

citation-management

Comprehensive citation management for academic research. Search OpenAlex, PubMed, and Google Scholar for papers, extract accurate metadata, validate citations, and generate properly formatted BibTeX entries. This skill should be used when you need to find papers, verify citation information, convert DOIs to BibTeX, or ensure reference accuracy in scientific writing.

clinical-decision-support

Prepare and validate research-only clinical decision-support evaluation, evidence-profile, cohort, survival, biomarker/model, privacy, and governance artifacts. Use for aggregate or synthetic research documentation and traceability—not patient care or live clinical operation.

clinical-reports

Create safety-bounded draft structures and run local deterministic checks for clinical case, diagnostic, trial, safety, and aggregate research reports. Use only with synthetic, de-identified, or aggregate inputs and verified source-fact manifests; every output requires qualified review.

Skills associés