分子モデリングライブラリ libuilcule

libuilcule は,本サイトで開発している分子モデリング用のライブラリです.Builcule の非 GUI 部分を切り貼りして開発を始めました.
独立した分子化学ライブラリとして利用可能なレベルをめざしています.
現バージョンは試作段階であり,「Builcule 10 が動くだけ」というレベルです.
バージョン 3 に向けてコードを整理している段階です.

libbuilcule や,このディレクトリで公開している CLI ソフトウェアは,C++ 開発環境があれば他の OS でも動作するはずです.

開発を再開しました.今回のバージョンアップには数か月程度かかると見ています.その間,α,β-版の公開とサイトの更新を進めます.(2025 年 12 月 30 日)


目次(ページ内リンク)


libbuilcule について
ビルドとインストール
libbuilcule を利用したソフトウェア
次期バージョン libbuilcule3 の進捗状況

libbuilcule について

データ構造とアルゴリズム

以前書いたコンテンツを寄せ集めて,紹介ページに再編したものです.

アルゴリズムの開発に係る実験

以下は,ライブラリ開発のための基礎研究です.[基礎研究]ディレクトリに置いています.

ヘッダファイル

大体の雰囲気は掴んでいただけると思います.
次期バージョンではクラスを紹介するページを作成する予定です.

ファイル名説明
adjacent_atom.h隣接原子の数え上げ
adjust_base.h構造調整機能の基底クラス
adjust_mol.h分子単位で構造を調整
align_3d.h三次元アライメント
amino_acid.hアミノ酸の表現
atom.h原子の表現
atom_dist.h中心や半径を計算
babel_mechanics.hOpenBabel の分子力学機能を利用
builcule_unit.h操作対象の系
config_file.h設定ファイルの処理
copy_base.hコピー機能の基底クラス
copy_mol.h分子単位でコピー
copy_pept.hペプチド単位でコピー.ホモロジーモデリング用
copy_region.h分子の一部分をコピー
create_bone.hアルカン骨格を作成
create_pept_bone.hペプチド骨格を作成
create_side.hアミノ酸側鎖を作成
detect_mol.h原子間の距離から分子を検知
dynamic.h動的計画法によるローカルアライメント
elongation.h分子に 1 原子を追加
export_pdb.hPDB 形式でファイル出力
file_io.hファイル入出力
global.hグローバル変数等をまとめたファイル
mol_mol_dist.h分子間の距離を調整
mol_mol_inter.h分子間の相互作用をシミュレート
molecule.h分子の表現
region.h分子の一部の表現
rotate_point.h1 原子を回転
serial_num.hシリアル番号を発生するシングルトン
set_angle.h結合角を設定
shared_data.hクラス間で共有しているデータ
substituent.h置換基を生成
sup_3d.h三次元での重ね合わせ
unit.hBuilcule_Unit の基底クラス

ビルドとインストール

開発環境

ビルドには C++ コンパイラ + GNU Autotools + Eigen + LibOpenBabelが必要です.
下の表は,私がインストールしている開発環境に係るパッケージです.いくつかのパッケージは,依存関係により,同時にインストールされるかもしれません.
プログラミングに,開発環境の練習記録があります.

パッケージ名(バージョン)
g++ (12.2.0)GNU C++ コンパイラ
make (4.3)コンパイルを制御するユーティリティ
automake (1.16.6)GNU標準準拠のMakefile生成ツール
autoconf (2.71)configure スクリプト自動作成プログラム
libtool (2.4.7)汎用ライブラリサポートスクリプト
libeigen3-dev (3.4.0)線形代数用のライブラリ.分子の三次元座標の処理
libopenbabel-dev (3.1.1)ライブラリ版 Open Babel

ソースファイル

libbuilcule のビルドとインストール

常法どおりです.
~$ tar -xzvf libbuilcule-2.3.4.tar.gz
~$ cd libbuilcule-2.3.4
~/libbuilcule-2.3.4$ ./configure
~/libbuilcule-2.3.4$ make
~/libbuilcule-2.3.4$ sudo make install

バージョン 2.2.1 でパラメータを変更しました

ホームディレクトリ ~/.builcule/b10/adjust.prm の 5 行め(VdwFact と書いてある行)の数値を変更しています.
2.2.1 より旧いバージョンから 2.2.1 以上のバージョンに変更する際に削除してください.Builcule などのプログラムで,構造調整機能使用時に新規作成します.
~/libbuilcule-2.3.4$ rm ~/.builcule/b10/adjust.prm

共有ライブラリのパスを設定

このライブラリを利用するプログラムががこのライブラリをロードできるように,パスを設定しておく必要があります.
~/libbuilcule-2.3.4$ sudo ldconfig

libbuilcule のアンインストール

アンインストールは,ビルド & インストールした後の状態なら(./configure で Makefile を作成した状態),
~/libbuilcule-2.3.4$ sudo make uninstall
とします.

バージョンアップでファイルの増減や名前の変更をする場合があるので,ディレクトリと一部のファイルが残ったままになるかもしれません.
そのような場合は,
~$ sudo rm /usr/local/lib/liblb2*
~$ sudo rm -rf /usr/local/include/builcule/lb2 あるいは sudo rm -rf /usr/local/include/builcule
とすれば削除できます.

また,ホームディレクイトリに ".builcule/b10" という隠しディレクトリを作成し,その中に設定ファイルや一時ファイルを格納します.
テキストファイルしか入っていませんが,削除する場合は手動で作業してください.例えば,
~$ rm -rf ~/.builcule

不具合

アライメント済みあるいは同一座標のタンパク質をアライメントしようとすると異常終了する場合があります.

ダウンロード等で入手した PDB ファイルでは,数値の記述位置がずれていることがあり,libbuilcule でファイルが開けない場合があります.
ただし,OpenBabel で他の形式に変換するなどの対策を取れば開けることがあります.
libbuilcule の課題と位置づけておきます.

リリース履歴

仕様上の課題

アミノ酸の変異に伴う側鎖の立体障害
ポイントミューテーションやホモロジーモデリングに伴い,内部でアミノ酸側鎖を接続しています.
接続された側鎖は,タンパク質分子の他の部分と重なり合ってしまう場合があります.
側鎖の重なり合いを少なくするためには,エネルギ極小化または構造調整が必要です.
現在のところ,重なり合いを完全に解消できません.

ダウンロードしたタンパク質の編集
PDB ファイルなど,ダウンロードしたタンパク質の編集中に異常終了する場合があります(バグと紛らわしい).
バグでない原因を挙げると,ダウンロードしたファイルには実験結果を説明するために必要な,しかし化学構造上ありえない情報が記述されている場合があることです.
[編集(_E)]-[クリーンアップ(_A)] は,それに対処するために作成した機能です.極端に接近した原子(おそらく 1 つの原子を複数の座標で記述している)を削除します.
これですべて解決というものではありませんが,異常終了する場合にはとりあえず使用して,反応を見てください.

検知されたアミノ酸コードとファイルに記述されているアミノ酸コードとの不一致
実験的に側鎖の三次元座標が決定できなかった場合などが該当します.
例えば,PDB ファイルにコードが LYS と記してあって側鎖が β 炭素までしか記述されていないような場合です.Builcule では Ala と検知されます.

アミノ酸残基の欠失操作での原子の残存
アミノ酸残基の欠失操作では,C-末が修飾(非解離型の水素も)されている場合の修飾基や,異常アミノ酸の側鎖が削除されません.
削除する方がいいのか,残しておく方がいいのか,ケースバイケースだとと考えるからです.


libbuilcule を利用したソフトウェア

libbuilcule は分子モデリングソフト:Builculeのライブラリとして開発していますが,CLI 版分子モデリングソフト用のライブラリとしても利用可能です.
これを示すために,BCMD シリーズと銘打っていくつかのソフトウェアを試作しました.
現在のラインナップは,ペプチドの生成,変異,分子ファイルのマージ,ペプチドの変異,ペプチドの生成,性質の出力です.
さらに利用例を紹介しうるページも作成しました.

BMerge

2 個のファイルに記された分子を一つのファイルにまとめます.
分子どうしが重なり合わないように分子の位置を調整したあとで出力します.

BInter

分子ごとに構造を調整しつつ,分子間相互作用モデルを作成します.
相互作用の計算には 2 種類あります.
「相互作用過程のステップ」では,分子間で静電的相互作用とファンデルワールス反発を発生させることにより,分子間相互作用モデルを作成します.
「凝集過程のステップ」ではこれに加え,系の中心に向かって分子を引き寄せる力を発生させて計算します.
両方のステップを設定した場合は,まず「凝集過程のステップ」をおこない,ついで「相互作用過程のステップ」を実行します.

BMutate

PDB 形式等のファイルに記されたペプチドに,変異を 1 回導入します.
配列上の位置とアミノ酸を指定,乱数を発生させて位置とアミノ酸を設定,乱数に BLOSUM62 で重み付けをして位置とアミノ酸を設定するというオプションがあります.
変異したペプチドは(複数のペプチドが含まれる場合は変異したペプチドのみ),libopenbabel でエネルギー極小化してから出力します.

BPeptGen

配列を直接指定,Fasta ファイルを指定,あるいは設定ファイルを指定することにより PDB 形式のペプチドを生成します.
生成したペプチドは OpenBabel でエネルギー極小化して PDB 形式として出力します.
Builcule と比べて,生成するペプチドの性質を細かく設定できます.

BProperty

BProperty は,分子の性質を出力するソフトウェアです.
分子の性質は,Builcule と Detrial で開発したものです.
ファイルを指定,あるいはディレクトリを指定することにより分子構造ファイルから情報を読み取り,標準エラー出力します.
対応しているファイル形式は PDB,XYZ,および 本サイトの独自形式である BCL の各形式です.

モデリングと開発とを相互参照しながら進めたら,そのうち有用なものができるのではないか,という希望を持って進めています.
画像は,ペプチドとマグネシウムイオンの相互作用モデルです.

ペプチドの in silico コンフォメーション実験

ペプチドの作成と情報の取得は自作ソフトウェアを,コンフォメーション探索は OpenBabel ライブラリを利用する自作ソフトウェアを使った.
シミュレーション実験で,コンフォメーションに電荷が大きく影響しているであろうことが確認できた.

マグネシウムイオンとペプチドとの相互作用モデル

自作ソフトウェアを使い,Mg2+ とペプチドとの複合体がどこまでモデリングできるか in silico 実験している.
Mg2+ が 2 個のカルボキシル基とイオン結合するモデルが構築できた.


次期バージョン libbuilcule3 の進捗状況

libbuilcule2 を再編して libbuilcule3 を作成しています.下に作成中のクラス,構造体,列挙体を紹介します.
進捗度を示す目安にはなろうかと思います.

次期バージョンでは,buic という名前空間を使います.

クラス

構造体

列挙体