コンテンツにスキップ

ユニットセル作成

FBTKは、分子シミュレーションの最初の難関である「初期構造(ユニットセル)の作成」を自動化します。

独自の立体構造生成エンジン (SMILES to 3D)

Section titled “独自の立体構造生成エンジン (SMILES to 3D)”

FBTK は、SMILES 文字列から 3D 構造を生成するための Rust ネイティブエンジンを搭載しています。RDKit 等の外部ライブラリに依存せず、以下のステップで妥当な座標を自動生成します。

  1. VSEPR 理論: 原子価殻電子対反発則に基づき、結合角や立体配置の初期値を決定します。
  2. UFF 最適化: ユニバーサル力場 (UFF) を用いて、結合距離や歪みを高速に緩和します。

これにより、テキスト 1 行から MD 計算に即座に使用可能な 3D テンプレートが作成されます。


SMILES 文字列を指定して、特定の密度のユニットセルを構築する標準的なフローです。

import fbtk
# 1. ビルダーの初期化
builder = fbtk.Builder(density=0.8)
# 2. SMILES から分子テンプレートを作成し、個数を指定して追加
# (内部で VSEPR + UFF による 3D 構造生成が自動実行されます)
water = fbtk.Molecule.from_smiles("O", name="WAT")
builder.add_molecule(water, count=500)
# 3. システムの構築
system = builder.build()
# 4. 構築後の全体緩和 (重なりの解消)
system.relax()
# 5. 保存
system.to_file("system.mol2")

ファイルから読み込んだ分子(.mol.mol2)の座標が不自然な場合、システムに追加する前に単体で構造最適化を行うことができます。

# 外部ファイルから読み込み(座標が未最適化の可能性がある)
mol = fbtk.Molecule.from_file("raw_structure.mol")
# 分子単体で構造緩和を実行し、幾何構造を整える
mol.relax()
# 整形した分子をビルダーに追加
builder.add_molecule(mol, count=100)

複数成分の混合系 (Mixing Small Molecules)

Section titled “複数成分の混合系 (Mixing Small Molecules)”

溶媒と溶質、あるいは異なる種類の分子を混ぜた系を簡単に構築できます。

import fbtk
builder = fbtk.Builder(box_size=[40, 40, 40])
# 複数種類の低分子を異なる個数で追加
water = fbtk.Molecule.from_smiles("O", name="WAT")
ethanol = fbtk.Molecule.from_smiles("CCO", name="EtOH")
builder.add_molecule(water, count=800)
builder.add_molecule(ethanol, count=200)
system = builder.build()

FBTK は、モノマーの SMILES からポリマー鎖を高速に生成する機能を備えています。

SMILES 内に *(アスタリスク)を含めることで、重合時の接続点を自動的に指定できます。

# * が接続点。隣接水素は自動で除去されます
builder.add_polymer(
name="PS",
smiles="*C(C*)c1ccccc1",
count=10,
degree=20
)

2. インデックスによる明示的指定

Section titled “2. インデックスによる明示的指定”

* を含まない通常の SMILES を使用する場合、重合に関与する原子のインデックス(0始まり)を指定します。

# 0番目のC (Head) と 1番目のC (Tail) を接続点にする
builder.add_polymer(
name="PS",
smiles="CCc1ccccc1",
count=10,
degree=20,
head=0,
tail=1
)

配置メカニズム (Grid-based Placement)

Section titled “配置メカニズム (Grid-based Placement)”

FBTK の Builder は、箱のサイズに基づき分子の回転半径を考慮した 3D グリッドを定義し、Rust 側の空間ハッシュを用いて O(N) の計算量で高速にパッキングを完了します。配置時には各分子にランダムな 3D 回転が適用され、等方的なバルク構造が形成されます。