Communitygithub.com

rowan

Rowan é uma plataforma de workflows de modelagem molecular e química medicinal nativa da nuvem com API Python. Use para previsão de pKa e macropKa, conjuntos de conformeros e tautômeros, docking e docking análogo, co-dobramento proteína-ligante, geração de MSA, dinâmica molecular, permeabilidade, workflows de descritores e tarefas relacionadas de modelagem de pequenas moléculas ou proteínas. Ideal para triagem programática em lote, pipelines químicos de múltiplas etapas e workflows que exigiriam manutenção de infraestrutura HPC/GPU local.

O que é rowan?

Rowan é uma plataforma de workflow de modelagem molecular e design de fármacos nativa da nuvem. Ela fornece uma API Python unificada para uma ampla gama de tarefas computacionais, incluindo previsão de propriedades (pKa, descritores, permeabilidade), geração de conformeros e tautômeros, docking molecular (simples e análogo), dinâmica molecular, geração de MSA e co-dobramento proteína-ligante. A plataforma elimina a necessidade de gerenciar infraestrutura HPC ou GPU local, lidando com escalonamento, gerenciamento de resultados e execução de pipelines complexos. Rowan é particularmente útil para workflows programáticos, triagem em lote e campanhas de química medicinal que exigem consistência e escalabilidade, como a execução de uma série de análogos seguida por docking e análise de poses.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Rowan: Workflows de Modelagem Molecular e Design de Fármacos Nativos da Nuvem

Visão Geral

Rowan é uma plataforma de workflow nativa da nuvem para simulação molecular, química medicinal e design baseado em estrutura. Sua API Python expõe uma interface unificada para modelagem de pequenas moléculas, previsão de propriedades, docking, dinâmica molecular e workflows de estrutura com IA.

Use Rowan quando quiser executar workflows de química medicinal ou design molecular programaticamente sem manter infraestrutura HPC local, provisionamento de GPU ou uma coleção de ferramentas de modelagem separadas. Rowan lida com toda infraestrutura, gerenciamento de resultados e escalonamento de computação.

Quando usar Rowan

Rowan é uma boa opção para:

  • Química quântica, métodos semiempíricos ou potenciais de redes neurais
  • Previsão de propriedades em lote (pKa, descritores, permeabilidade, solubilidade)
  • Geração de conjuntos de conformeros e tautômeros
  • Workflows de docking (ligante único, série análoga, refinamento de pose)
  • Co-dobramento proteína-ligante e geração de MSA
  • Pipelines químicos de múltiplas etapas (ex.: busca de tautômeros → docking → análise de pose)
  • Campanhas de química medicinal em lote onde você precisa de infraestrutura consistente e escalável

Rowan não é adequado para:

  • E/S molecular simples (use RDKit diretamente)
  • Química quântica ab initio pós-HF ou cálculos relativísticos

Início Rápido

uv pip install rowan-python
import rowan
rowan.api_key = "your_api_key_here"  # ou defina a variável de ambiente ROWAN_API_KEY

# Descritores exigem uma Molécula 3D, não uma string SMILES simples.
mol = rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O")
wf = rowan.submit_descriptors_workflow(mol, name="aspirin")
result = wf.result()

print(result.descriptors["MW"])       # 180.042 — massa exata
print(result.descriptors["SLogP"])    # 1.31
print(result.descriptors["TopoPSA"])  # 63.6 — PSA topológica

Se isso imprimir sem erros, você está configurado corretamente. Esses valores e exemplos foram verificados em relação ao rowan-python 3.1.13.

Instalação

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

Gerenciamento de Usuário e Webhooks

Autenticação

Defina uma chave de API via variável de ambiente (recomendado):

export ROWAN_API_KEY="your_api_key_here"

Ou defina diretamente em Python:

import rowan
rowan.api_key = "your_api_key_here"

Verifique a autenticação:

import rowan
user = rowan.whoami()  # Retorna informações do usuário se autenticado
print(f"User: {user.email}")
print(f"Credits available: {user.credits_available_string()}")

Formatos de Entrada de Moléculas

Rowan aceita moléculas nos seguintes formatos:

  • SMILES (preferido): "CCO", "c1ccccc1O"
  • Padrões SMARTS (para alguns workflows): subconjunto de SMARTS para correspondência de subestrutura
  • InChI (se suportado na sua versão da API): "InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3"

A API valida entradas de moléculas e levanta ValueError para um SMILES não analisável ou um tipo de entrada incompatível com o workflow. Sempre use SMILES canônicos para reprodutibilidade.

Strings SMILES versus objetos Molécula

Os tipos de entrada aceitos variam por workflow no rowan-python 3.1.13. Apenas esses workflows comuns aceitam uma string simples: pKa, busca de conformeros, permeabilidade de membrana, ADMET, LogP, macropKa, solubilidade e MD de análise de pose. A maioria dos outros — incluindo descritores, busca de tautômeros, docking, docking análogo, BDE, NMR e Fukui — requerem rowan.Molecule.from_smiles(smiles) ou um RDKit Mol/RWMol. Um tipo errado levanta ValueError antes da submissão.

Dica: Use RDKit para validar SMILES antes da submissão:

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

Padrão de Uso Principal

A maioria das tarefas do Rowan segue o mesmo padrão de três etapas:

  1. Submeter um workflow
  2. Aguardar a conclusão (com streaming opcional)
  3. Recuperar resultados tipados com propriedades de conveniência
import rowan

# 1. Submeter — use a função de workflow específica (não a submit_workflow genérica)
workflow = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O"),
    name="aspirin descriptors",
)

# 2. & 3. Aguardar e recuperar
result = workflow.result()  # Bloqueia até terminar (padrão: wait=True, poll_interval=5)
print(result.data)              # Dicionário bruto
print(result.descriptors["MW"]) # 180.042 massa exata; sem propriedade result.molecular_weight

Para workflows de longa duração, use streaming:

for partial in workflow.stream_result(poll_interval=5):
    print(f"Complete: {partial.complete}")  # bool, não uma porcentagem
    print(partial.data)

result() vs. stream_result()

PadrãoQuando UsarDuração
result()Você pode esperar pelo resultado completo<5 min típico
stream_result()Você quer feedback de progresso ou precisa de resultados parciais antecipados>5 min, ou uso interativo

Diretriz: Use result() para descritores, pKa. Use stream_result() para busca de conformeros, docking, co-dobramento.

Trabalhando com Resultados

A API do Rowan inclui objetos de resultado de workflow tipados com propriedades de conveniência.

Usando propriedades tipadas e .data

Os resultados têm dois padrões de acesso:

  1. Propriedades de conveniência (recomendado primeiro): result.descriptors, result.best_pose, result.scores. As classes de resultado diferem: busca de conformeros usa métodos get_energies() e get_conformers().
  2. Fallback bruto: result.data — dicionário bruto da API

Exemplo:

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

# Propriedade de conveniência (retorna todos os descritores):
print(result.descriptors["MW"])       # massa exata/monoisotópica
print(result.descriptors["SLogP"])
print(result.descriptors["TopoPSA"])  # PSA topológica usual

# Fallback de dados brutos:
print(result.data["descriptors"])

Nota: DescriptorsResult não tem uma propriedade molecular_weight. MW é massa exata/monoisotópica, não peso molecular médio. TPSA é um descritor de superfície carregada 3D; use TopoPSA para a área de superfície polar topológica usual usada em regras de semelhança a fármacos.

Invalidação de cache

Algumas propriedades de resultado são carregadas preguiçosamente (ex.: geometrias de conformeros, estruturas de proteínas). Para atualizar:

result.clear_cache()
new_structures = result.get_conformers()  # Recuperado novamente para ConformerSearchResult

Projetos, Pastas e Organização

Para campanhas não triviais, use projetos e pastas para manter o trabalho organizado.

Projetos

import rowan

# Criar um projeto
project = rowan.create_project(name="CDK2 lead optimization")
rowan.set_project("CDK2 lead optimization")

# Todos os workflows subsequentes vão para este projeto
wf = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CCO"), name="test compound"
)

# retrieve_project recebe um UUID; list_workflows escopa com parent_uuid.
project = rowan.retrieve_project(project.uuid)
workflows = rowan.list_workflows(parent_uuid=project.uuid, size=50)

Pastas

# Criar uma estrutura de pastas hierárquica
folder = rowan.create_folder(name="docking/batch_1/screening")

wf = rowan.submit_docking_workflow(
    # ... parâmetros de docking ...
    folder=folder,
    name="compound_001",
)

# Listar workflows em uma pasta
results = rowan.list_workflows(parent_uuid=folder.uuid)

Árvores de Decisão de Workflow

pKa vs. MacropKa

Use pKa microscópico quando:

  • Você precisa do pKa de um único grupo ionizável
  • Você está interessado em transições ácido-base e termodinâmica de protonação
  • A molécula tem um ou dois sítios ionizáveis
  • A velocidade é crítica (mais rápido, menos créditos)

Use macropKa quando:

  • Você precisa de comportamento dependente de pH em uma faixa fisiologicamente relevante (ex.: 0–14)
  • Você deseja populações agregadas de carga e estado de protonação em diferentes pH
  • A molécula tem múltiplos grupos ionizáveis com protonação acoplada
  • Você precisa de propriedades downstream como solubilidade aquosa em diferentes pH

Exemplo de decisão:

Fenol (pKa ~10): Use pKa microscópico
Amina (pKa ~9–10): Use pKa microscópico
Fármaco multi-ionizável (N, O, grupo ácido): Use macropKa
Avaliação ADME em pH GI: Use macropKa

Busca de conformeros vs. busca de tautômeros

Use busca de conformeros quando:

  • Uma única forma tautômera é conhecida
  • Você precisa de um conjunto 3D diverso para docking, MD ou análise SAR
  • Ligações rotacionáveis dominam o espaço químico

Use busca de tautômeros quando:

  • O equilíbrio tautômero é incerto (ex.: heterociclos, sistemas ceto-enol)
  • Você precisa modelar todos os isômeros de protonação relevantes
  • Cálculos downstream (docking, pKa) dependem da forma tautômera

Workflow combinado:

# Passo 1: Encontrar o melhor tautômero
taut_wf = rowan.submit_tautomer_search_workflow(
    initial_molecule=rowan.Molecule.from_smiles("O=c1[nH]ccnc1"),
    name="imidazole tautomers",
)
best_taut = taut_wf.result().best_tautomer

# Passo 2: Gerar conformeros a partir do melhor tautômero
conf_wf = rowan.submit_conformer_search_workflow(
    initial_molecule=best_taut,
    name="imidazole conformers",
)

Docking vs. docking análogo vs. co-dobramento

WorkflowQuando UsarEntradaSaída
DockingLigante único, bolsa conhecidaProteína + SMILES + coordenadas da bolsaPose, pontuação, dG
Docking análogo5–100+ compostos relacionadosProteína + lista de SMILES + ligante de referênciaTodas as poses, alinhadas à referência
Co-dobramento proteína-liganteSequência + ligante, sem estrutura cristalinaSequência da proteína + SMILESComplexo ligado previsto por ML

Utilitários de Proteínas

Upload de proteínas

# A partir de arquivo PDB local
protein = rowan.upload_protein(
    name="egfr_kinase_domain",
    file_path="egfr_kinase.pdb",
)

# A partir do banco de dados PDB
protein_from_pdb = rowan.create_protein_from_pdb_id(
    name="CDK2 (1M17)",
    code="1M17",
)

# Recuperar proteína enviada anteriormente
protein = rowan.retrieve_protein("protein-uuid")

# Listar todas as proteínas
my_proteins = rowan.list_proteins()

Orientação para preparação de proteínas

  • Formato de arquivo: PDB, mmCIF (Rowan detecta automaticamente)
  • Moléculas de água: Rowan geralmente mantém água relevante; remova água em massa antes se desejado
  • Heteroátomos: Cofatores, íons e ligantes ligados são geralmente preservados; remova heteroátomos indesejados antes do upload
  • Proteínas de múltiplas cadeias: Totalmente suportado
  • Resolução: Funciona com estruturas NMR, modelos de homologia e cryo-EM; a qualidade é importante para previsões downstream
  • Validação: Rowan valida sintaxe PDB; arquivos severamente malformados podem ser rejeitados

Catálogo de Workflows

Nove categorias comuns de workflow — descritores, pKa microscópico, MacropKa, busca de conformeros, busca de tautômeros, docking, docking análogo, geração de MSA e co-dobramento proteína-ligante — cada uma com código de submissão e formatos de resultado, mais a lista completa de cada tipo de workflow suportado (modelagem principal, design baseado em estrutura, química computacional avançada, química de reação, propriedades avançadas, energia livre de ligação e biologia sequencial e estrutural) estão em references/workflow_catalog.md.

Submissão em Lote, Webhooks e Trabalho Assíncrono

Submissão/poll/recuperação em lote, o padrão de disparar e verificar não bloqueante, configuração de webhook, criação e rotação de segredos, verificação de payload e assinatura (com um manipulador FastAPI) e melhores práticas de webhook estão em references/batch_and_webhooks.md.

Acesso, Preços e Créditos

Limites do nível gratuito, consumo de crédito por workflow e estimativas de custo típicas estão em references/access_and_pricing.md.

Exemplo Prático e Solução de Problemas

Uma campanha completa de otimização de lead — configuração de projeto, tautômeros, pKa em uma série análoga, coleta de resultados e acompanhamento de docking — está em references/end_to_end_example.md.

Erros comuns com suas correções e dicas de depuração estão em references/troubleshooting.md.

Padrões de Uso Recomendados

  • Prefira workflows nativos do Rowan em vez de montagem de baixo nível quando existirem
  • Use projetos e pastas para qualquer campanha não trivial (>5 workflows)
  • Use result() para bloquear até a conclusão (padrão: wait=True, poll_interval=5)
  • Use propriedades de resultado tipadas primeiro, recorra a .data para campos não mapeados
  • Use submissão em lote para bibliotecas de compostos ou séries análogas
  • Encadeie workflows para campanhas químicas de múltiplas etapas:
    • pKa → macropKa → permeabilidade (avaliação ADME)
    • busca de tautômeros → docking → MD de análise de pose (refinamento de pose)
    • geração de MSA → co-dobramento proteína-ligante (previsão de estrutura com IA)
  • Use webhooks para campanhas de longa duração (>50 workflows) ou pipelines assíncronos
  • Use streaming para feedback interativo em grandes buscas de conformeros/docking

Resumo

Use Rowan quando seu workflow exigir execução em nuvem para tarefas de design molecular, especialmente quando você quiser uma API unificada e tratamento consistente de resultados em modelagem de pequenas moléculas, proteínas, docking, previsão ADME e geração de estrutura com ML.

Rowan é uma plataforma de workflow de design molecular, não apenas um motor de química remoto. Ela lida com escalonamento de infraestrutura, persistência de resultados e orquestração de pipelines de múltiplas etapas para que você possa se concentrar na ciência.

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.

Habilidades Relacionadas