外部ツール・エコシステム連携
Ecosystem Integration
Section titled “Ecosystem Integration”FBTKは、既存の強力なツール群と組み合わせることで真価を発揮します。
OpenFF (Open Force Field) 連携
Section titled “OpenFF (Open Force Field) 連携”FBTK で構築したバルク系を OpenFF のエコシステムへ直接流し込むことができます。これにより、FBTK の高速な構造生成能力と、OpenFF (Sage 力場など) の高精度なパラメータ割り当てをシームレスに組み合わせることが可能です。
- 双方向変換: FBTK ↔ OpenFF 間で構造、トポロジー、電荷、ユニットセル情報を相互に変換できます。
- セル同期: Å から nm への単位変換と、Box ベクトルの設定が自動化されています。
- 電荷維持: OpenFF で計算した高精度な電荷(AM1-BCC等)を FBTK に持ち込んだり、逆に FBTK で設定した電荷を OpenFF の力場適用時に維持させたりすることが可能です。
推奨ワークフロー
Section titled “推奨ワークフロー”パターン A: FBTK で構築し OpenFF でシミュレーション
Section titled “パターン A: FBTK で構築し OpenFF でシミュレーション”- FBTK: 混合系・ポリマーバルクを高速構築。
- OpenFF:
to_openff(forcefield="...")を呼び出し、一撃でInterchange(力場適用済みオブジェクト)を生成。 - Export: GROMACS, LAMMPS 等の形式へ出力。
import fbtk
# 1. FBTK でバルク系を構築builder = fbtk.Builder(density=0.8)builder.add_molecule_smiles("Ethanol", count=100, smiles="CCO")system = builder.build()system.relax()
# 2. OpenFF Interchange へ直接変換(力場適用・セル同期を自動実行)# 最新の Sage 2.2.1 力場を適用interchange = system.to_openff(forcefield="openff-2.2.1.offxml")
# 3. 各種シミュレーション形式へ出力interchange.to_lammps("system.data")パターン B: OpenFF の高精度電荷を FBTK の構築に利用
Section titled “パターン B: OpenFF の高精度電荷を FBTK の構築に利用”- OpenFF: モノマーに対して AM1-BCC 電荷を計算。
- FBTK:
Molecule.from_openff(off_mol)でインポート。 - FBTK: 高精度な電荷を維持したままポリマー重合やパッキングを実行。
import fbtkfrom openff.toolkit import Molecule
# 1. OpenFF で高精度電荷を計算off_mol = Molecule.from_smiles("CCO")off_mol.assign_partial_charges("am1bcc") # AmberTools 等が必要
# 2. FBTK へインポート(電荷情報が維持されます)fbtk_mol = fbtk.Molecule.from_openff(off_mol)
# 3. 構築に使用builder = fbtk.Builder(density=0.9)builder.add_molecule(fbtk_mol, count=500)system = builder.build()RadonPy との連携
Section titled “RadonPy との連携”RadonPy は高分子の物性計算を自動化する優れたライブラリですが、大規模なアモルファスセルの構築や初期緩和には時間がかかる場合があります。FBTK を「高速なパッキングエンジン」として差し込むことで、ワークフローを劇的に加速できます。
ハイブリッド・ワークフロー
Section titled “ハイブリッド・ワークフロー”- RadonPy: 分子(モノマー・ポリマー)のトポロジ生成。
- FBTK: ユニットセルへの高速パッキングと初期緩和。
- RadonPy / ASE: 物性計算 MD の実行。
import fbtk
# 1. RadonPy で生成した Mol オブジェクトを FBTK に渡すfbtk_mol = fbtk.Molecule.from_rdkit(radon_mol, name="RadonPoly")
# 2. FBTK で高速パッキングbuilder = fbtk.Builder(density=1.0)builder.add_molecule(fbtk_mol, count=50)system = builder.build()system.relax()
# 3. ASE Atoms に戻して計算へatoms = system.to_ase()RDKit 連携
Section titled “RDKit 連携”RDKit で生成した特定の立体規則性や複雑な官能基を持つ分子を、座標とトポロジを維持したまま FBTK に取り込めます。
from rdkit import Chemmol = Chem.MolFromSmiles("...")fbtk_mol = fbtk.Molecule.from_rdkit(mol)ASE (Atomic Simulation Environment) 連携
Section titled “ASE (Atomic Simulation Environment) 連携”FBTK の解析機能は ASE の拡張ライブラリのように振る舞います。
import fbtkfrom ase.io import read
# 既存の MD 軌跡を読み込んで Rust エンジンで高速解析traj = read("production.lammpstrj", index=":")r, g_r = fbtk.compute_rdf(traj, query="element C - element O")電荷情報の補完
Section titled “電荷情報の補完”外部ファイルや RDKit から構造を読み込んだ際、電荷情報が欠落している(あるいは全て 0.0 である)場合があります。FBTK では assign_partial_charges() メソッドを呼ぶことで、Gasteiger 法に基づく部分電荷を一括で計算・付与できます。
# 外部データから読み込みsystem = fbtk.System.from_file("imported.mol2")
# FBTK の基準で部分電荷を計算・正規化するsystem.assign_partial_charges()KNIME / ワークフローツールとの連携
Section titled “KNIME / ワークフローツールとの連携”FBTK は必須の依存ライブラリを持たないため、KNIME や Pipeline Pilot といったデータ分析プラットフォームとの相性が抜群です。
- Python Script ノード:
pip install fbtkするだけで動作します。 - 高速バッチ処理: スタンドアロンの CLI ツール(
fbtk-build等)を外部実行ノードから直接呼び出すことで、Python を介さない高速なパイプラインを構築可能です。