分子モデリングライブラリ libuilcule
libuilcule は,このサイトで開発している分子モデリング用のライブラリです.Builcule の非 GUI 部分を切り貼りして開発を始めました.
独立した分子モデリングライブラリとして利用可能なレベルをめざしています.
現バージョンは試作段階であり,「Builcule 10 が動くだけ」というレベルです.
バージョン 3 に向けてコードを整理している段階です.
libbuilcule や,このディレクトリで公開している CLI ソフトウェアは,C++ 開発環境があれば他の OS でも動作するはずです.
目次(ページ内リンク)
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.h | OpenBabel の分子力学機能を利用 |
| 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.h | PDB 形式でファイル出力 |
| file_io.h | ファイル入出力 |
| global.h | グローバル変数等をまとめたファイル |
| mol_mol_dist.h | 分子間の距離を調整 |
| mol_mol_inter.h | 分子間の相互作用をシミュレート |
| molecule.h | 分子の表現 |
| region.h | 分子の一部の表現 |
| rotate_point.h | 1 原子を回転 |
| serial_num.h | シリアル番号を発生するシングルトン |
| set_angle.h | 結合角を設定 |
| shared_data.h | クラス間で共有しているデータ |
| substituent.h | 置換基を生成 |
| sup_3d.h | 三次元での重ね合わせ |
| unit.h | Builcule_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
- ライブラリは,/usr/local/lib/builcule/ 以下にインストールされます
- ヘッダファイルは,/usr/local/include/builcule/lb2/ 以下にインストールされます
バージョン 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 の課題と位置づけておきます.
リリース履歴
- 2024 年 1 月 2 日 :2.3.4 リリース.結合を切断した後の分子の検知にあったバグを修正しました
- 2023 年 12 月 2 日 :2.3.3 リリース.元素を変更した際に,結合長を変更しないように仕様変更しました
- 2023 年 11 月 27 日 :2.3.2 リリース.分子やアミノ酸の近傍を検知する際には,自分自身を除外するように仕様変更しました
- 2023 年 11 月 25 日 :2.3.1 リリース.アミノ酸の原子のアノテーションに甘い部分を見つけたので修正しました
- 2023 年 11 月 24 日 :2.3.0 リリース.近傍の原子を選択する際に,それらが属するアミノ酸も選択するように仕様変更しました
- 2023 年 11 月 20 日 :2.2.5 リリース.領域をカットしたときに,残った分子が移動しないように仕様変更しました
- 2023 年 11 月 18 日 :2.2.4 リリース.ファイルを開く際にアミノ酸の β 炭素に結合する水素を二重に取得してしまうバグを訂正しました
- 2023 年 11 月 16 日 :2.2.3 リリース.アミノ酸配列の扱いが甘くて異常終了する場合があったので訂正しました
- 2023 年 11 月 7 日:2.2.2 リリース.構造調整機能を利用する際の,ヒドロキシ基に対する部分電荷の設定を修正しました
- 2023 年 11 月 4 日:2.2.1 リリース.構造調整機能および分子間相互作用機能を改変しました
- 2023 年 11 月 2 日:2.2.0 リリース.構造調整機能を改変しました
- 2023 年 10 月 25 日:2.1.2 リリース.分子間相互作用の計算で,座標が異常値となるバグを修正しました.ライブラリ名とインストール先を変更しました
- 2023 年 10 月 20 日:2.1.1 リリース.Pro への変異でのバグを修正しました
- 2023 年 10 月 19 日:2.1.0 リリース.BCMD シリーズの BMutate の開発に伴い変更を加えました
- 2023 年 10 月 1 日:Makefile 作成ツールを qmake から GNU Autotools に変更し,リリースバージョンを 2.0.0 としました.本体に変更はありません
- 2023 年 9 月 4 日 : 20230831 リリース.分子間で結合を生成した際に異常終了する場合があるバグを修正しました
- (略)
- 2023 年 3 月 26 日 : α-1 リリース
仕様上の課題
アミノ酸の変異に伴う側鎖の立体障害
ポイントミューテーションやホモロジーモデリングに伴い,内部でアミノ酸側鎖を接続しています.
接続された側鎖は,タンパク質分子の他の部分と重なり合ってしまう場合があります.
側鎖の重なり合いを少なくするためには,エネルギ極小化または構造調整が必要です.
現在のところ,重なり合いを完全に解消できません.
ダウンロードしたタンパク質の編集
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
Builcule の非 GUI 部分を抽出してライブラリ化したものが libbuilcule2 だったのですが,この整理を進めて libbuilcule3 とします.
進捗状況
ライブラリの,分子を表現するデータ構造の設計に問題があり,設計段階からやり直しています(2026 年 8 月 5 日).