コンテンツにスキップ

外部ツール・エコシステム連携

FBTKは、既存の強力なツール群と組み合わせることで真価を発揮します。

FBTK で構築したバルク系を OpenFF のエコシステムへ直接流し込むことができます。これにより、FBTK の高速な構造生成能力と、OpenFF (Sage 力場など) の高精度なパラメータ割り当てをシームレスに組み合わせることが可能です。

  • 双方向変換: FBTK ↔ OpenFF 間で構造、トポロジー、電荷、ユニットセル情報を相互に変換できます。
  • セル同期: Å から nm への単位変換と、Box ベクトルの設定が自動化されています。
  • 電荷維持: OpenFF で計算した高精度な電荷(AM1-BCC等)を FBTK に持ち込んだり、逆に FBTK で設定した電荷を OpenFF の力場適用時に維持させたりすることが可能です。

パターン A: FBTK で構築し OpenFF でシミュレーション

Section titled “パターン A: FBTK で構築し OpenFF でシミュレーション”
  1. FBTK: 混合系・ポリマーバルクを高速構築。
  2. OpenFF: to_openff(forcefield="...") を呼び出し、一撃で Interchange(力場適用済みオブジェクト)を生成。
  3. 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 の構築に利用”
  1. OpenFF: モノマーに対して AM1-BCC 電荷を計算。
  2. FBTK: Molecule.from_openff(off_mol) でインポート。
  3. FBTK: 高精度な電荷を維持したままポリマー重合やパッキングを実行。
import fbtk
from 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 は高分子の物性計算を自動化する優れたライブラリですが、大規模なアモルファスセルの構築や初期緩和には時間がかかる場合があります。FBTK を「高速なパッキングエンジン」として差し込むことで、ワークフローを劇的に加速できます。

  1. RadonPy: 分子(モノマー・ポリマー)のトポロジ生成。
  2. FBTK: ユニットセルへの高速パッキングと初期緩和。
  3. 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 で生成した特定の立体規則性や複雑な官能基を持つ分子を、座標とトポロジを維持したまま FBTK に取り込めます。

from rdkit import Chem
mol = Chem.MolFromSmiles("...")
fbtk_mol = fbtk.Molecule.from_rdkit(mol)

ASE (Atomic Simulation Environment) 連携

Section titled “ASE (Atomic Simulation Environment) 連携”

FBTK の解析機能は ASE の拡張ライブラリのように振る舞います。

import fbtk
from ase.io import read
# 既存の MD 軌跡を読み込んで Rust エンジンで高速解析
traj = read("production.lammpstrj", index=":")
r, g_r = fbtk.compute_rdf(traj, query="element C - element O")

外部ファイルや 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 は必須の依存ライブラリを持たないため、KNIMEPipeline Pilot といったデータ分析プラットフォームとの相性が抜群です。

  • Python Script ノード: pip install fbtk するだけで動作します。
  • 高速バッチ処理: スタンドアロンの CLI ツール(fbtk-build 等)を外部実行ノードから直接呼び出すことで、Python を介さない高速なパイプラインを構築可能です。