rowan について
Rowanは、クラウド上で分子モデリングやメディシナルケミストリーのワークフローを実行するPython APIです。物性予測、ドッキング、シミュレーション、構造解析を統一された手順で扱えます。
主な機能
- 01分子物性予測
- 02コンフォマー・互変異性体検索
- 03ドッキングと類縁体ドッキング
- 04タンパク質・リガンド共フォールディング
- 05ワークフロー連結と一括実行
活用シーン
- 01化合物系列の物性予測
- 02タンパク質構造へのリガンドドッキング
- 03多段階のリード最適化ワークフロー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-skills --skill rowanインストール後、Claude Code で/rowanを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/access_and_pricing.mdbatch_and_webhooks.mdend_to_end_example.mdtroubleshooting.mdworkflow_catalog.md詳細
Rowan:クラウドネイティブな分子モデリングと創薬設計のワークフロー
概要
Rowan は、分子シミュレーション、メディシナルケミストリー、構造ベース設計のためのクラウドネイティブなワークフロープラットフォームです。Python API は、小分子モデリング、物性予測、ドッキング、分子動力学、AI 構造ワークフローの統一インターフェースを提供します。
ローカルの HPC インフラストラクチャ、GPU のプロビジョニング、複数の個別モデリングツールの維持管理をせずに、メディシナルケミストリーや分子設計のワークフローをプログラムから実行したい場合は、Rowan をご利用ください。Rowan がインフラストラクチャ、結果管理、計算リソースのスケーリングをすべて処理します。
Rowan を使用する場面
Rowan が適している用途:
- 量子化学、半経験的手法、ニューラルネットワークポテンシャル
- バッチ物性予測(pKa、記述子、透過性、溶解度)
- 配座および互変異性体アンサンブルの生成
- ドッキングワークフロー(単一リガンド、類縁体シリーズ、ポーズの精密化)
- タンパク質・リガンドのコフォールディングと MSA 生成
- 複数ステップの化学ワークフロー(例:互変異性体検索 → ドッキング → ポーズ解析)
- 一貫性のあるスケーラブルなインフラストラクチャが必要な、バッチ型メディシナルケミストリーキャンペーン
Rowan が適していない用途:
- 単純な分子 I/O(RDKit を直接ご利用ください)
- ポスト HF ab initio 量子化学計算や相対論的計算
クイックスタート
uv pip install rowan-python
import rowan
rowan.api_key = "your_api_key_here" # or set ROWAN_API_KEY env var
# Descriptors require a 3D Molecule, not a bare SMILES string.
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 — exact mass
print(result.descriptors["SLogP"]) # 1.31
print(result.descriptors["TopoPSA"]) # 63.6 — topological PSA
エラーなしで出力された場合、セットアップは完了です。以下の値と例は
rowan-python 3.1.13 で検証済みです。
インストール
uv pip install rowan-python
# or: 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() # Returns user info if authenticated
print(f"User: {user.email}")
print(f"Credits available: {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"Invalid SMILES: {smiles}")
基本的な使用パターン
Rowan のタスクのほとんどは、次の 3 ステップのパターンに従います:
- 送信:ワークフローを送信します
- 待機:完了を待ちます(ストリーミングはオプションです)
- 取得:便利なプロパティを使って型付きの結果を取得します
import rowan
# 1. Submit — use the specific workflow function (not the generic submit_workflow)
workflow = rowan.submit_descriptors_workflow(
rowan.Molecule.from_smiles("CC(=O)Oc1ccccc1C(=O)O"),
name="aspirin descriptors",
)
# 2. & 3. Wait and retrieve
result = workflow.result() # Blocks until done (default: wait=True, poll_interval=5)
print(result.data) # Raw dict
print(result.descriptors["MW"]) # 180.042 exact mass; no result.molecular_weight property
実行時間の長いワークフローでは、ストリーミングを使用します:
for partial in workflow.stream_result(poll_interval=5):
print(f"Complete: {partial.complete}") # bool, not a percentage
print(partial.data)
result() と stream_result() の違い
| パターン | 使用する場面 | 所要時間 |
|---|---|---|
result() | 結果全体を待てる場合 | 通常は 5 分未満 |
stream_result() | 進捗状況の確認や、部分的な結果の早期取得が必要な場合 | 5 分超、または対話的な使用 |
**ガイドライン:**記述子と pKa には result() を使用します。配座検索、ドッキング、コフォールディングには stream_result() を使用します。
結果の取り扱い
Rowan の API には、便利なプロパティを備えた型付きワークフロー結果オブジェクトが含まれています。
型付きプロパティと .data の使用
結果には、2 つのアクセス方法があります。
- 便利なプロパティ(最初に使うことをおすすめします):
result.descriptors、result.best_pose、result.scores。結果クラスによって異なります。配座探索では、get_energies()とget_conformers()メソッドを使用します。 - 生データへのフォールバック:
result.data— API からの生の辞書
例:
result = rowan.submit_descriptors_workflow(
rowan.Molecule.from_smiles("CCO"),
name="ethanol",
).result()
# Convenience property (returns all descriptors):
print(result.descriptors["MW"]) # exact/monoisotopic mass
print(result.descriptors["SLogP"])
print(result.descriptors["TopoPSA"]) # usual topological PSA
# Raw data fallback:
print(result.data["descriptors"])
注: DescriptorsResult に molecular_weight プロパティはありません。
MW は正確質量/単同位体質量であり、平均分子量ではありません。TPSA は 3D の荷電表面記述子です。薬物らしさのルールで一般的に使われる通常のトポロジカル極性表面積には、TopoPSA を使用してください。
キャッシュの無効化
一部の結果プロパティは遅延読み込みされます(例:配座の幾何構造、タンパク質構造)。更新するには:
result.clear_cache()
new_structures = result.get_conformers() # Refetched for ConformerSearchResult
プロジェクト、フォルダー、整理
複雑なキャンペーンでは、プロジェクトとフォルダーを使用して作業を整理してください。
プロジェクト
import rowan
# Create a project
project = rowan.create_project(name="CDK2 lead optimization")
rowan.set_project("CDK2 lead optimization")
# All subsequent workflows go into this project
wf = rowan.submit_descriptors_workflow(
rowan.Molecule.from_smiles("CCO"), name="test compound"
)
# retrieve_project takes a UUID; list_workflows scopes with parent_uuid.
project = rowan.retrieve_project(project.uuid)
workflows = rowan.list_workflows(parent_uuid=project.uuid, size=50)
フォルダー
# Create a hierarchical folder structure
folder = rowan.create_folder(name="docking/batch_1/screening")
wf = rowan.submit_docking_workflow(
# ... docking params ...
folder=folder,
name="compound_001",
)
# List workflows in a folder
results = rowan.list_workflows(parent_uuid=folder.uuid)
ワークフローの判断ツリー
pKa と MacropKa
微視的 pKa を使用する場合:
- 単一のイオン化可能な基の pKa が必要な場合
- 酸塩基遷移とプロトン化の熱力学に関心がある場合
- 分子のイオン化可能な部位が 1 つまたは 2 つの場合
- 速度が重要な場合(より高速で、クレジット消費が少ない)
MacropKa を使用する場合:
- 生理学的に妥当な範囲(例:0~14)にわたる、pH 依存の挙動が必要な場合
- pH ごとの総電荷とプロトン化状態の集団を知りたい場合
- 分子に、プロトン化が相互に影響する複数のイオン化可能な基がある場合
- pH ごとの水溶解度など、後続処理で使う物性が必要な場合
判断例:
Phenol (pKa ~10): Use microscopic pKa
Amine (pKa ~9–10): Use microscopic pKa
Multi-ionizable drug (N, O, acidic group): Use macropKa
ADME assessment across GI pH: Use macropKa
配座探索と互変異性体探索
配座探索を使用する場合:
- 互変異性体の形が 1 つに特定されている場合
- ドッキング、MD、または SAR 解析用に多様な 3D アンサンブルが必要な場合
- 回転可能結合が化学空間の大部分を占める場合
互変異性体探索を使用する場合:
- 互変異性体平衡が不確かな場合(例:複素環、ケト–エノール系)
- 関連するすべてのプロトン化異性体をモデル化する必要がある場合
- 後続の計算(ドッキング、pKa)が互変異性体の形に依存する場合
組み合わせたワークフロー:
# Step 1: Find best tautomer
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
# Step 2: Generate conformers from best tautomer
conf_wf = rowan.submit_conformer_search_workflow(
initial_molecule=best_taut,
name="imidazole conformers",
)
ドッキング、類縁体ドッキング、共フォールディング
| ワークフロー | 使用する場面 | 入力 | 出力 |
|---|---|---|---|
| ドッキング | リガンドが 1 つで、ポケットが既知 | タンパク質 + SMILES + ポケット座標 | ポーズ、スコア、dG |
| 類縁体ドッキング | 関連化合物が 5~100 個以上 | タンパク質 + SMILES リスト + 参照リガンド | すべてのポーズ、参照構造にアラインメント済み |
| タンパク質・リガンド共フォールディング | 配列とリガンドがあり、結晶構造がない | タンパク質配列 + SMILES | ML が予測した結合複合体 |
タンパク質ユーティリティ
タンパク質のアップロード
# From local PDB file
protein = rowan.upload_protein(
name="egfr_kinase_domain",
file_path="egfr_kinase.pdb",
)
# From PDB database
protein_from_pdb = rowan.create_protein_from_pdb_id(
name="CDK2 (1M17)",
code="1M17",
)
# Retrieve previously uploaded protein
protein = rowan.retrieve_protein("protein-uuid")
# List all proteins
my_proteins = rowan.list_proteins()
タンパク質の準備に関するガイダンス
- ファイル形式:PDB、mmCIF(Rowan が自動検出します)
- 水分子:Rowan は通常、関連する水分子を保持します。必要に応じて、事前にバルク水を削除してください
- ヘテロ原子:補因子、イオン、結合リガンドは通常保持されます。不要なヘテロ原子はアップロード前に削除してください
- 複数鎖タンパク質:完全にサポートされています
- 分解能:NMR 構造、ホモロジーモデル、クライオ電子顕微鏡に対応しています。後続の予測には品質が重要です
- 検証:Rowan は PDB の構文を検証します。形式が著しく不正なファイルは拒否される場合があります
ワークフローのカタログ
よく使われる 9 つのワークフローカテゴリ(記述子、微視的 pKa、MacropKa、配座探索、互変異性体探索、ドッキング、類縁体ドッキング、MSA 生成、タンパク質・リガンド共フォールディング)について、送信コードと結果の形式を掲載しています。また、サポートされているすべてのワークフロータイプ(コアモデリング、構造ベース設計、高度な計算化学、反応化学、高度な物性、結合自由エネルギー、配列および構造生物学)の完全なリストは、 references/workflow_catalog.md にあります。
バッチ送信、Webhook、非同期処理
バッチ送信/ポーリング/取得、ノンブロッキングの実行して確認するパターン、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 → permeability(ADME 評価)tautomer search → docking → pose-analysis MD(ポーズの精密化)MSA generation → protein-ligand cofolding(AI による構造予測)
- 実行時間の長いキャンペーン(ワークフローが 50 件超)や非同期パイプラインには Webhook を使用してください
- 大規模なコンフォマー探索やドッキング探索で対話的にフィードバックを得るには、ストリーミングを使用してください
まとめ
Rowan は、特に小分子モデリング、タンパク質、ドッキング、ADME 予測、ML による構造生成にわたって、統一された API と一貫した結果処理を利用したい場合に、分子設計タスクのクラウド実行が必要なワークフローで役立ちます。
Rowan は単なるリモート化学エンジンではなく、分子設計ワークフローのプラットフォームです。インフラストラクチャのスケーリング、結果の永続化、複数ステップのパイプラインのオーケストレーションを担うため、科学研究に専念できます。
関連スキル
diffdock:DiffDock および DiffDock-L による分子ドッキング。tamarind:REST API または MCP を通じて、Tamarind Bio プラットフォーム上のオープンソース分子設計・構造生物学ツールのコレクションにアクセスします。molecular-dynamics:OpenMM と MDAnalysis を使用して、分子動力学シミュレーションを実行・解析します。