ユニットセル作成
Unit Cell Creation
Section titled “Unit Cell Creation”FBTKは、分子シミュレーションの最初の難関である「初期構造(ユニットセル)の作成」を自動化します。
独自の立体構造生成エンジン (SMILES to 3D)
Section titled “独自の立体構造生成エンジン (SMILES to 3D)”FBTK は、SMILES 文字列から 3D 構造を生成するための Rust ネイティブエンジンを搭載しています。RDKit 等の外部ライブラリに依存せず、以下のステップで妥当な座標を自動生成します。
- VSEPR 理論: 原子価殻電子対反発則に基づき、結合角や立体配置の初期値を決定します。
- UFF 最適化: ユニバーサル力場 (UFF) を用いて、結合距離や歪みを高速に緩和します。
これにより、テキスト 1 行から MD 計算に即座に使用可能な 3D テンプレートが作成されます。
基本的な使い方 (Basic Usage)
Section titled “基本的な使い方 (Basic Usage)”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")分子の整形 (Beautify / Relaxation)
Section titled “分子の整形 (Beautify / Relaxation)”ファイルから読み込んだ分子(.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()ポリマー作成 (Polymerization)
Section titled “ポリマー作成 (Polymerization)”FBTK は、モノマーの SMILES からポリマー鎖を高速に生成する機能を備えています。
1. RadonPy 形式の SMILES (推奨)
Section titled “1. RadonPy 形式の 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 回転が適用され、等方的なバルク構造が形成されます。