Communitygithub.com

Rowan

Rowan 是一个云原生的分子建模与药物化学工作流平台,提供 Python API。适用于 pKa 和 macropKa 预测、构象与互变异构体集合、对接与类似物对接、蛋白质-配体共折叠、MSA 生成、分子动力学、渗透性、描述符工作流以及相关的小分子或蛋白质建模任务。

Rowan 是什么?

Rowan 是一个云原生工作流平台,专为分子模拟、药物化学和基于结构的药物设计而构建。它通过统一的 Python API 整合了小分子建模、性质预测、分子对接、分子动力学和 AI 结构工作流。开发者无需维护本地 HPC 或 GPU 基础设施,即可以编程方式运行批处理筛选、多步化学管线(如互变异构体搜索→对接→姿态分析)。Rowan 支持多种输入格式(SMILES、SMARTS、InChI),提供类型化结果对象和便捷属性(如描述符、最佳姿态),并具备项目与文件夹组织、webhook 通知、批量提交和流式结果获取等功能。该平台覆盖九个核心工作流类别(描述符、pKa、构象搜索、对接等),并在参考指南中提供了端到端示例和故障排除。Rowan 特别适合需要可扩展、一致基础设施的药物化学项目,但非用于简单分子 I/O 或后 Hartree-Fock 从头算量子化学。

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

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Rowan:云原生分子建模与药物设计工作流

概述

Rowan 是一个云原生工作流平台,用于分子模拟、药物化学和基于结构的药物设计。其 Python API 提供了一个统一的接口,用于小分子建模、性质预测、对接、分子动力学和 AI 结构工作流。

当你希望以编程方式运行药物化学或分子设计工作流,而无需维护本地 HPC 基础设施、GPU 配置或一组独立的建模工具时,请使用 Rowan。Rowan 处理所有基础设施、结果管理和计算扩展。

何时使用 Rowan

Rowan 适用于:

  • 量子化学、半经验方法或神经网络势
  • 批量性质预测(pKa、描述符、渗透性、溶解度)
  • 构象和互变异构体集合生成
  • 对接工作流(单配体、类似物系列、姿态优化)
  • 蛋白质-配体共折叠和 MSA 生成
  • 多步化学管线(例如:互变异构体搜索 → 对接 → 姿态分析)
  • 批量药物化学项目,需要一致且可扩展的基础设施

Rowan 不适用于:

  • 简单的分子 I/O(直接使用 RDKit)
  • 后 Hartree-Fock ab initio 量子化学或相对论计算

快速开始

uv pip install rowan-python
import rowan
rowan.api_key = "your_api_key_here"  # 或设置 ROWAN_API_KEY 环境变量

# 描述符需要 3D 分子对象,而不是纯 SMILES 字符串。
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 — 精确质量
print(result.descriptors["SLogP"])    # 1.31
print(result.descriptors["TopoPSA"])  # 63.6 — 拓扑极性表面积

如果以上代码无错误打印,说明设置正确。这些值和示例已根据 rowan-python 3.1.13 版验证。

安装

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

用户与 Webhook 管理

身份验证

通过环境变量设置 API 密钥(推荐):

export ROWAN_API_KEY="your_api_key_here"

或直接在 Python 中设置:

import rowan
rowan.api_key = "your_api_key_here"

验证身份:

import rowan
user = rowan.whoami()  # 如果已验证,返回用户信息
print(f"用户:{user.email}")
print(f"可用积分:{user.credits_available_string()}")

分子输入格式

Rowan 接受以下格式的分子:

  • SMILES(首选):"CCO","c1ccccc1O"
  • SMARTS 模式(某些工作流):用于子结构匹配的 SMARTS 子集
  • InChI(如果您的 API 版本支持):"InChI=1S/C2H6O/c1-2-3/h3H,2H2,1H3"

API 会验证分子输入,并对无法解析的 SMILES 或与工作流不兼容的输入类型引发 ValueError。为获得可重现性,请始终使用规范化的 SMILES。

SMILES 字符串与分子对象

在 rowan-python 3.1.13 中,不同的工作流接受的输入类型有所不同。只有以下常见工作流接受纯字符串:pKa、构象搜索、膜渗透性、ADMET、LogP、macropKa、溶解度和姿态分析 MD。大多数其他工作流——包括描述符、互变异构体搜索、对接、类似物对接、BDE、NMR 和 Fukui——需要 rowan.Molecule.from_smiles(smiles) 或 RDKit Mol/RWMol。类型错误会在提交前引发 ValueError。

提示: 在提交前使用 RDKit 验证 SMILES:

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

核心使用模式

大多数 Rowan 任务遵循相同的三步模式:

  1. 提交工作流
  2. 等待完成(可选流式)
  3. 检索带有便捷属性的类型化结果
import rowan

# 1. 提交 — 使用特定的工作流函数(而非通用的 submit_workflow)
workflow = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O"),
    name="阿司匹林描述符",
)

# 2. 和 3. 等待并检索
result = workflow.result()  # 阻塞直至完成(默认为 wait=True, poll_interval=5)
print(result.data)              # 原始字典
print(result.descriptors["MW"]) # 180.042 精确质量;没有 result.molecular_weight 属性

对于长时间运行的工作流,使用流式:

for partial in workflow.stream_result(poll_interval=5):
    print(f"完成:{partial.complete}")  # 布尔值,非百分比
    print(partial.data)

result() 与 stream_result()

模式使用场景持续时间
result()你可以等待完整结果典型 <5 分钟
stream_result()你需要进度反馈或早期部分结果>5 分钟,或交互式使用

指南: 描述符、pKa 使用 result()。构象搜索、对接、共折叠使用 stream_result()。

处理结果

Rowan 的 API 包含类型化工作流结果对象及便捷属性。

使用类型化属性和 .data

结果有两种访问模式:

  1. 便捷属性(首选):result.descriptors、result.best_pose、result.scores。不同的结果类有不同的方法:构象搜索使用 get_energies() 和 get_conformers() 方法。
  2. 原始回退:result.data — 来自 API 的原始字典

示例:

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

# 便捷属性(返回所有描述符):
print(result.descriptors["MW"])       # 精确/单同位素质量
print(result.descriptors["SLogP"])
print(result.descriptors["TopoPSA"])  # 常用拓扑极性表面积

# 原始数据回退:
print(result.data["descriptors"])

注意: DescriptorsResult 没有 molecular_weight 属性。MW 是精确/单同位素质量,而非平均分子量。TPSA 是 3D 带电表面描述符;对于药物相似性规则中常用的拓扑极性表面积,请使用 TopoPSA。

缓存失效

某些结果属性是懒加载的(例如,构象几何、蛋白质结构)。要刷新:

result.clear_cache()
new_structures = result.get_conformers()  # 对于 ConformerSearchResult,会重新获取

项目、文件夹和组织

对于重要项目,使用项目和文件夹来保持工作有序。

项目

import rowan

# 创建项目
project = rowan.create_project(name="CDK2 先导优化")
rowan.set_project("CDK2 先导优化")

# 后续所有工作流都会归入此项目
wf = rowan.submit_descriptors_workflow(
    rowan.Molecule.from_smiles("CCO"), name="测试化合物"
)

# retrieve_project 接受 UUID;list_workflows 通过 parent_uuid 限定范围。
project = rowan.retrieve_project(project.uuid)
workflows = rowan.list_workflows(parent_uuid=project.uuid, size=50)

文件夹

# 创建层次文件夹结构
folder = rowan.create_folder(name="docking/batch_1/screening")

wf = rowan.submit_docking_workflow(
    # ... 对接参数 ...
    folder=folder,
    name="compound_001",
)

# 列出文件夹中的工作流
results = rowan.list_workflows(parent_uuid=folder.uuid)

工作流决策树

pKa 与 MacropKa

在以下情况下使用微观 pKa:

  • 你需要单个可电离基团的 pKa
  • 你对酸碱跃迁和质子化热力学感兴趣
  • 分子只有一个或两个可电离位点
  • 速度至关重要(更快,积分消耗更少)

在以下情况下使用宏观 pKa:

  • 你需要跨生理相关范围(例如 0–14)的 pH 依赖行为
  • 你需要跨 pH 的聚合电荷和质子化状态群体
  • 分子有多个可电离基团且存在耦合质子化
  • 你需要下游性质,如不同 pH 下的水溶解度

决策示例:

苯酚 (pKa ~10):使用微观 pKa
胺 (pKa ~9–10):使用微观 pKa
多可电离药物 (N, O, 酸性基团):使用宏观 pKa
跨胃肠道 pH 的 ADME 评估:使用宏观 pKa

构象搜索与互变异构体搜索

在以下情况下使用构象搜索:

  • 已知单一互变异构体形式
  • 你需要用于对接、MD 或 SAR 分析的多样化 3D 集合
  • 可旋转键主导化学空间

在以下情况下使用互变异构体搜索:

  • 互变异构平衡不确定(例如,杂环、酮-烯醇系统)
  • 你需要建模所有相关的质子化异构体
  • 下游计算(对接、pKa)依赖于互变异构体形式

组合工作流:

# 步骤 1:找到最佳互变异构体
taut_wf = rowan.submit_tautomer_search_workflow(
    initial_molecule=rowan.Molecule.from_smiles("O=c1[nH]ccnc1"),
    name="咪唑互变异构体",
)
best_taut = taut_wf.result().best_tautomer

# 步骤 2:从最佳互变异构体生成构象
conf_wf = rowan.submit_conformer_search_workflow(
    initial_molecule=best_taut,
    name="咪唑构象",
)

对接、类似物对接与共折叠

工作流使用场景输入输出
对接单一配体,已知结合口袋蛋白质 + SMILES + 口袋坐标姿态、分数、dG
类似物对接5–100+ 个相关化合物蛋白质 + SMILES 列表 + 参考配体所有姿态,参考对齐
蛋白质-配体共折叠序列 + 配体,无晶体结构蛋白质序列 + SMILESML 预测的结合复合物

蛋白质实用工具

上传蛋白质

# 从本地 PDB 文件
protein = rowan.upload_protein(
    name="egfr_kinase_domain",
    file_path="egfr_kinase.pdb",
)

# 从 PDB 数据库
protein_from_pdb = rowan.create_protein_from_pdb_id(
    name="CDK2 (1M17)",
    code="1M17",
)

# 检索之前上传的蛋白质
protein = rowan.retrieve_protein("protein-uuid")

# 列出所有蛋白质
my_proteins = rowan.list_proteins()

蛋白质制备指南

  • 文件格式:PDB、mmCIF(Rowan 自动检测)
  • 水分子:Rowan 通常会保留相关水分子;如果希望移除,请在上传前除去自由水
  • 异原子:辅因子、离子和结合配体通常会被保留;在上传前移除不需要的异原子
  • 多链蛋白质:完全支持
  • 分辨率:适用于 NMR 结构、同源模型和冷冻电镜;质量影响下游预测
  • 验证:Rowan 验证 PDB 语法;严重格式错误的文件可能被拒绝

工作流目录

九个常见工作流类别——描述符、微观 pKa、宏观 pKa、构象搜索、互变异构体搜索、对接、类似物对接、MSA 生成和蛋白质-配体共折叠——每个类别都有提交代码和结果形状,以及每个支持工作流类型的完整列表(核心建模、基于结构的设计、高级计算化学、反应化学、高级性质、结合自由能、序列与结构生物学)均位于 references/workflow_catalog.md。

批量提交、Webhooks 和异步工作

批量提交/轮询/检索、非阻塞式 fire-and-check 模式、webhook 设置、密钥创建与轮换、载荷和签名验证(含 FastAPI 处理器)以及 webhook 最佳实践均位于 references/batch_and_webhooks.md。

访问、定价和积分

免费层限制、每个工作流的积分消耗和典型成本估算均位于 references/access_and_pricing.md。

完整示例与故障排除

一个完整的先导优化项目——项目设置、互变异构体、类似物系列 pKa、结果收集和后续对接——位于 references/end_to_end_example.md。

常见错误及其修复方法、调试技巧均位于 references/troubleshooting.md。

推荐使用模式

  • 优先使用 Rowan 原生工作流,而非低级别组装(当存在时)
  • 对于任何重要项目(>5 个工作流),使用项目和文件夹
  • 使用 result() 阻塞直至完成(默认:wait=True, poll_interval=5)
  • 优先使用类型化结果属性,对于未映射的字段回退到 .data
  • 对于化合物库或类似物系列,使用批量提交
  • 链式工作流用于多步化学项目:
    • pKa → macropKa → 渗透性(ADME 评估)
    • 互变异构体搜索 → 对接 → 姿态分析 MD(姿态优化)
    • MSA 生成 → 蛋白质-配体共折叠(AI 结构预测)
  • 对于长时间运行的项目(>50 个工作流)或异步管线,使用 webhooks
  • 对于大型构象/对接搜索的交互式反馈,使用流式

总结

当你的工作流需要针对分子设计任务进行云执行时,尤其是当你希望在整个小分子建模、蛋白质、对接、ADME 预测和 ML 结构生成中拥有统一 API 和一致的结果处理时,请使用 Rowan。

Rowan 是一个分子设计工作流平台,而不仅仅是一个远程化学引擎。它处理基础设施扩展、结果持久化和多步管线编排,让你可以专注于科学。

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.

相关技能