rowan について
Rowanは、分子モデリングと創薬設計向けのクラウド型ワークフロープラットフォームです。Python APIから計算を送信し、物性予測、ドッキング、分子動力学、タンパク質構造ワークフローなどの型付き結果を取得できます。
主な機能
- 01Python APIによるホスト型ワークフローの送信
- 02分子物性とpKaの予測
- 03配座・互変異性体・ドッキングのワークフロー
- 04タンパク質・リガンドのコフォールディングとMSA生成
- 05型付き結果とポーリング式ストリーミング
- 06プロジェクトとフォルダーによる整理
活用シーン
- 01記述子や溶解度のバッチ計算
- 02既知の結合ポケットへのリガンドドッキング
- 03関連化合物のドッキング姿勢の比較
- 04タンパク質配列とリガンドから複合体を予測
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-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 構造ワークフローのための統合インターフェースを提供します。
Rowan は、ローカルの HPC インフラストラクチャ、GPU のプロビジョニング、または個別のモデリングツール群を維持することなく、メディシナルケミストリーまたは分子設計のワークフローをプログラムから実行したい場合に使用します。このサービスはホスト型のコンピューティングと結果を管理します。利用可能なワークフローはアカウントによって異なります。
Rowan を使用する場面
Rowan が適している場合:
- 量子化学、半経験的手法、またはニューラルネットワークポテンシャル
- バッチ物性予測(pKa、記述子、透過性、溶解度)
- コンフォマーおよび互変異性体のアンサンブル生成
- ドッキングワークフロー(単一リガンド、類似体シリーズ、ポーズ精密化)
- タンパク質-リガンドのコフォールディングおよび MSA 生成
- 多段階のケミストリーパイプライン(例: 互変異性体探索 → ドッキング → ポーズ解析)
- 一貫性のあるスケーラブルなインフラストラクチャが必要なバッチメディシナルケミストリーキャンペーン
Rowan が適していない場合:
- 単純な分子 I/O(RDKit を直接使用してください)
- 選択したエンジンのドキュメントに記載されたサポート範囲外の手法、または元素・電荷の領域
クイックスタート
uv pip install "rowan-python==3.2.0"
import rowan
# Reads ROWAN_API_KEY from the environment.
# 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"]) # exact/monoisotopic mass
print(result.descriptors["SLogP"])
print(result.descriptors["TopoPSA"]) # topological PSA
これはホスト型の計算を投入し、クレジットを消費します。例は
rowan-python 3.2.0 を対象としており、
2026-09-30 にリリース済み SDK および 公式リファレンス に対してレビューされています。
ローカルのスキーマ/シリアライゼーションのスモークテストには stjames 0.0.279 を使用しました。ホスト型の例は
例示的なものです。この更新にあたり、認証済みのワークフローは実行されていません。再現可能な
キャンペーンのために、両方のパッケージバージョンを固定してください。
インストール
uv pip install "rowan-python==3.2.0"
# Lock dependencies in your own environment; do not install the unrelated "rowan" package.
認証とアカウントアクセス
認証
環境変数で 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()}")
print(user.enabled_workflows) # Account-specific backend workflow slugs
分子入力フォーマット
トポロジーベースの手法には SMILES を、ジオメトリベースの 手法には実際の 3D 構造を使用してください。SMARTS は部分構造クエリ言語であり、一般的な ワークフローの分子入力ではありません。サポートされる入力として渡す前に、ケミストリーツールキットで InChI を変換してください。立体化学、電荷、プロトン化状態、および元の識別子を記録してください。 正規化だけでは、これらの科学的な選択は解決されません。
SMILES 文字列と分子オブジェクトの比較
- pKa:
starlingおよびchemprop_nevolianis2025は SMILES 文字列を必要とし、gxtb_wagen2026(デフォルト)およびaimnet2_wagen2024は座標を必要とします。 - コンフォマー探索: SMILES は OpenConf(デフォルト)または ETKDG で動作します。CREST/MCMM は 3D 分子を必要とします。
- 膜透過性:
gnn-mtlは SMILES を必要とし、pypermmは 3D 分子を必要とします。 - ADMET、LogP、macropKa、および溶解度は SMILES ベースです。ポーズ解析 MD には リガンド SMILES およびその結合ポーズを含むタンパク質複合体 が必要です。
- 記述子、互変異性体、ドッキング、類似体ドッキング、BDE、NMR、およびフクイは、
コンフォマーを持つ
rowan.Molecule、stjames.Molecule、または RDKit 分子を必要とします。Chem.MolFromSmiles()だけでは座標がありません。rowan.Molecule.from_smiles()で明示的に 生成するか、既存のジオメトリをインポートしてください。類似体 ドッキングでは、受容体の座標系で参照ポーズを保持してください。
ヒント: 投入前に 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 — named functions build and validate workflow-specific payloads
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"]) # 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() | プロセスが完了までブロックしてもよい場合 |
stream_result() | ジョブの実行中にポーリングによるスナップショットが有用な場合 |
stream_result() はポーリングを行います。サーバープッシュのイベントストリームではありません。部分的に型付けされた
プロパティは利用できないことがあるため、.complete が true になるまで .data を確認してください。
result(wait=False) は部分的なデータを返すか、まだデータが存在しない場合は WorkflowError を発生させることがあります。done() には成功した実行だけでなく、失敗した実行や停止した実行も含まれます。
結果の扱い
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
プロジェクト、フォルダ、整理
本格的なキャンペーンでは、プロジェクトとフォルダを使用して作業を整理してください。
プロジェクト
Rowan 3.2.0 には未解決の Folder.created_at 型アノテーションがあります。フォルダ操作の前に、以下に示すようにモデルを一度初期化してください(トラブルシューティングを参照)。
import rowan
from datetime import datetime
rowan.Folder.model_rebuild(_types_namespace={"datetime": datetime})
# Create a project
project = rowan.create_project(name="CDK2 lead optimization")
rowan.project_uuid = project.uuid
folder = rowan.create_folder(name="descriptors", parent_uuid=project.root_folder_uuid)
# Pass the destination folder explicitly on submissions
wf = rowan.submit_descriptors_workflow(
rowan.Molecule.from_smiles("CCO"), name="test compound", folder=folder
)
# parent_uuid is a folder UUID, not a project UUID.
project = rowan.retrieve_project(project.uuid)
workflows = rowan.list_workflows(parent_uuid=project.root_folder_uuid, page=0, size=50)
# This lists only workflows directly in the root folder. List folder.uuid for the above job.
フォルダ
例示: protein、pocket、および 3D の ligand を先に準備する必要があります。上記の Folder.model_rebuild の初期化を先に実行してください。get_folder() は欠落しているパスセグメントを作成します。create_folder() は 1 つのフォルダを作成します。
# Create a hierarchical folder structure
folder = rowan.get_folder("docking/batch_1/screening")
wf = rowan.submit_docking_workflow(
protein=protein, pocket=pocket, initial_molecule=ligand,
folder=folder,
name="compound_001",
)
# List workflows in a folder
results = rowan.list_workflows(parent_uuid=folder.uuid, page=0, size=50)
リスト用のヘルパーは 1 ページ分を返します。空のページになるまで、0 始まりの page をインクリメントしてください。size はページサイズであり、すべての一致を返すことを約束するものではありません。フォルダの一覧表示は再帰的ではありません。キャンペーンを棚卸しする際は、子フォルダを個別にたどってください。
ワークフローの決定木
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
コンフォーマー探索と互変異性体探索
コンフォーマー探索を使用する場合:
- 単一の互変異性体形が既知である場合
- ドッキング、MD、または SAR 解析のために多様な 3D アンサンブルが必要な場合
- 回転可能結合が化学空間を支配している場合
互変異性体探索を使用する場合:
- 互変異性平衡が不確かである場合(例: 複素環、ケト-エノール系)
- 同一分子式のプロトン移動異性体が必要な場合。電荷/プロトン化状態は別途列挙してください
- 下流の計算(ドッキング、pKa)が互変異性体形に依存する場合
組み合わせワークフロー:
# Step 1: Find best tautomer
taut_wf = rowan.submit_tautomer_search_workflow(
initial_molecule=rowan.Molecule.from_smiles("O=c1cccc[nH]1"),
name="2-pyridone tautomers",
)
best_taut = taut_wf.result().best_tautomer # Molecule or None, not SMILES
if best_taut is None:
raise RuntimeError("No weighted tautomer structure was returned")
# Step 2: Generate conformers from best tautomer
conf_wf = rowan.submit_conformer_search_workflow(
initial_molecule=best_taut,
name="2-pyridone conformers",
)
ドッキングと類似体ドッキングとコフォールディング
| ワークフロー | 使用する場合 | 入力 | 出力 |
|---|---|---|---|
| ドッキング | 単一リガンド、既知のポケット | タンパク質 + 3D リガンド + ポケット座標 | ポーズとスコアリング記録 |
| 類似体ドッキング | スキャフォールドを共有する関連化合物 | タンパク質 + SMILES リスト + 結合した参照ポーズ | SMILES をキーとするポーズとスコア |
| タンパク質-リガンド コフォールディング | 配列 + リガンド、結晶構造なし | タンパク質配列 + SMILES | ML 予測された結合複合体 |
タンパク質ユーティリティ
タンパク質のアップロード
以下に示す例示的な API 呼び出しには、認証済みアカウントと指定されたローカルファイルが必要です。このドキュメントの修正にあたり、サービスに対して再実行は行われていません。ドッキングキャンペーンを構築する前に、各 PDB アクセッションをそのターゲットと照合して確認してください: 1M17 はエルロチニブに結合した EGFR です。
# 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="EGFR (1M17)",
code="1M17",
)
# Retrieve previously uploaded protein
protein = rowan.retrieve_protein("protein-uuid")
# List the first page of proteins
my_proteins = rowan.list_proteins(page=0, size=20)
タンパク質の調製に関するガイダンス
- ファイル形式:
upload_proteinは.cif/.mmcifには mmCIF を、それ以外には PDB を選択します。 - 調製: アップロード/インポートは構造を保存するだけで、ドッキングの準備が整うわけではありません。 選択したワークフローについて、チェーンの選択、代替コンフォメーション、欠落した原子/残基、プロトン化、 水分子、金属、補因子、および保持されたリガンドを確認してください。
- マルチチェーン構造: 適切な場合は、意図したチェーンを明示的に選択してください。
- 調製ワークフロー:
submit_protein_preparation_workflowは pH、欠落原子の 補完、非ポリマーの保持を設定できます。デフォルトを使用する前に、これらの設定を確認してください。 - ポケット: 調製済みの受容体またはその結合リガンドから座標を導出してください。任意の 例示用座標は構造間で流用できません。既知のリガンドを再ドッキングし、幾何学を確認することで ドッキングを検証してください。スコアは測定された結合自由エネルギーではありません。
ワークフローカタログ
9 つの一般的なワークフローカテゴリ — 記述子、ミクロ pKa、MacropKa、コンフォマー 探索、互変異性体探索、ドッキング、類似体ドッキング、MSA 生成、タンパク質-リガンド 共折り畳み — それぞれに投入コードと結果の形状を示し、さらに ワークフロー関数のディレクトリ (コアモデリング、構造ベース設計、高度な計算 化学、反応化学、高度な特性、結合自由エネルギー、ならびに配列および 構造生物学) は references/workflow_catalog.md にあります。
バッチ投入、Webhook、非同期処理
バッチ投入/ポーリング/取得、ノンブロッキングの fire-and-check パターン、Webhook の設定、 シークレットの作成とローテーション、署名検証 (FastAPI ハンドラーを使用)、および公開されたペイロード契約の制限は、 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 構造予測)
- Webhook を使用する — 長時間実行されるキャンペーン (>50 ワークフロー) または非同期パイプラインの場合
- ストリーミングを使用する — 大規模なコンフォマー/ドッキング探索におけるインタラクティブなフィードバックの場合
概要
ワークフローで分子設計タスクのクラウド実行が必要な場合、特に低分子モデリング、タンパク質、ドッキング、ADME 予測、ML 構造生成にわたって単一の統合 API と一貫した結果処理を求める場合には、Rowan を使用してください。
Rowan は単なるリモートのケミストリーエンジンではなく、分子設計ワークフロープラットフォームです。インフラストラクチャのスケーリング、結果の永続化、マルチステップパイプラインのオーケストレーションを処理するため、あなたは科学に集中できます。