X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=Documents%2Fsrc%2Fdoc_source.html;h=5f9737f2cde9f3a3b279b13c7a58f2b88d260060;hb=874b25b5b7a0ae7dbcfe9c043447273bf7c546f9;hp=25302b0607ca89d9f580b3a16401929144aa8711;hpb=3fba955cc2d5e71b0e818bc84978e022f394ec4b;p=molby%2FMolby.git diff --git a/Documents/src/doc_source.html b/Documents/src/doc_source.html index 25302b0..5f9737f 100644 --- a/Documents/src/doc_source.html +++ b/Documents/src/doc_source.html @@ -10,17 +10,20 @@
+

Molby

-

An Interactive Molecular Modeling Software
with Integrated Ruby Interpreter

-

Version 0.5.5 build 20110721

+

Interactive Molecular Modeling Software
with Integrated Ruby Interpreter

+

Version 1.1.0

Toshi Nagata

+

http://molby.osdn.jp/index-en.html

Molby

対話型分子モデリングソフトウェア
(Ruby インタプリタ内蔵)

-

Version 0.5.5 build 20110721

+

Version 1.1.0

永田 央

+

http://molby.osdn.jp/index.html


@@ -93,8 +96,8 @@ Molby は、分子を 3D 表示して、画面上で分子モデルを構築す Molby runs on the following platforms.

@@ -103,7 +106,7 @@ Installation procedures are described below for each of these platforms.

2. Get the Software

-Download from the official distribution web site, http://sourceforge.jp/projects/molby/. +Download from the official distribution web site, http://en.osdn.jp/projects/molby/.

3. Installation

@@ -111,24 +114,24 @@ Download from the official distribution web site, MolbyWin32.zip, MolbyWin64.zip) or a standard setup package (SetupMolbyWin32.exe, SetupMolbyWin.exe).

-After installation is finished, you will find the Molby application registered in the "Start" menu under the item "All Programs." +To use the zip archive, expand all contents in your favorite place, and double-click the "Molby" icon.

- -

3-2. Mac OS X

-The Mac version is provided as a disk image (Molby.dmg). Double-click the disk image file, and you will find a virtual disk drive mounted on the desktop. Find the Molby application inside it, and drag it to the "Applications" folder in your hard drive. +To install on your PC, start the setup package, and follow the instructions. After installation is finished, you will find the Molby application registered in the "Start" menu under the item "All Programs."

+ +

3-2. Mac OS X

-Note: The Mac version is provided as a universal binary, which runs natively on both PowerPC and Intel platforms. +The Mac version is provided as a zip archive (MolbyMac.zip, MolbyMacLegacy.zip for MacOS 10.6 to 10.11). Double-click the archive, and you will get a folder including the Molby application. Drag it to the "Applications" folder in your hard drive.

4. Uninstallation

4-1. Microsoft Windows

-Use the uninstaller in the Molby folder. You can access the Molby folder from the "Start" menu (Start -> All Programs -> Molby). +If you install Molby, use the uninstaller in the Molby folder. You can access the Molby folder from the "Start" menu (Start -> All Programs -> Molby).

4-2. Mac OS X

@@ -143,8 +146,8 @@ Trash the Molby application in the "Applications" folder. Molbyは以下のプラットフォームで動作します。

    -
  • Microsoft Windows (XPまたはそれ以降).
  • -
  • Mac OS X (10.4またはそれ以降, PowerPCまたはIntel).
  • +
  • Microsoft Windows (7またはそれ以降, 32ビットまたは64ビット).
  • +
  • Mac OS X (10.12 またはそれ以降、64ビット).

@@ -153,7 +156,7 @@ Molbyは以下のプラットフォームで動作します。

2. ソフトウェアの入手

-公式配布サイト http://sourceforge.jp/projects/molby/ から最新版をダウンロードしてください。 +公式配布サイト http://osdn.jp/projects/molby/ から最新版をダウンロードしてください。

3. インストール

@@ -161,24 +164,24 @@ Molbyは以下のプラットフォームで動作します。

3-1. Microsoft Windows

-Windows版は、標準のセットアップパッケージ (SetupMolby.exe) で配布されています。セットアップパッケージをダブルクリックして、指示に従ってください。どうしたらよいかわからない時は、"OK"を押して進んで構いません。 +Windows版は、zip アーカイブ(MolbyWin32.zip:32 ビット版, MolbyWin64.zip: 64ビット版)、または標準のセットアップパッケージ (SetupMolbyWin32.exe: 32ビット版、SetupMolbyWin64.exe: 64ビット版) で配布されています。

-インストールが終了したら、「スタート」メニューの「すべてのプログラム」の中に Molby が入っているはずです。 +Zip アーカイブを使う時は、最初に内容をすべて展開してください。展開したフォルダの中に Molby アプリケーションがあるので、ダブルクリックして起動してください。

- -

3-2. Mac OS X

-Mac版は、ディスクイメージ (Molby.dmg) で配布されています。ディスクイメージをダブルクリックすると、仮想ディスクがデスクトップにマウントされます。Molby アプリケーションがその中にありますので、ハードディスクの「アプリケーション」フォルダにドラッグコピーしてください。 +セットアップパッケージを使う時は、ダブルクリックして指示に従ってください。インストールが終了したら、「スタート」メニューの「すべてのプログラム」の中に Molby が入っているはずです。

+ +

3-2. Mac OS X

-注: Mac 版は universal binary です。PowerPC, Intel の両方のマシンで動作します。 +Mac版は、zip アーカイブ (MolbyMac.zip, MolbyMacLegacy.zip [10.6〜10.11用]) で配布されています。アーカイブをダブルクリックすると、内容が展開されて新しいフォルダができます。Molby アプリケーションがその中にありますので、ハードディスクの「アプリケーション」フォルダにドラッグコピーしてください。

4. アンインストール

4-1. Microsoft Windows

-Molbyフォルダの中にアンインストーラがあります。「スタート」メニューで「すべてのプログラム」-> Molby とたどってください。 +インストールした Molby を PC から除きたい時には、Molbyフォルダの中のアンインストーラを使ってください。「スタート」メニューで「すべてのプログラム」-> Molby とたどってください。

4-2. Mac OS X

@@ -200,8 +203,18 @@ Molbyフォルダの中にアンインストーラがあります。「スター Molby is a copyrighted product of Toshi Nagata.

-Copyright (C) 2009-2010 Toshi Nagata +Copyright (C) 2008-2022 Toshi Nagata +

+

+I ask for citation of the following paper in published works that utilize Molby: +

+
+

+Toshi Nagata, "Molby - Graphical Molecular Modeling Software with Integrated Ruby Interpreter," +
+Bull. Chem. Soc. Jpn. 2014, 87, 902-904. DOI:10.1246/bcsj.20140093

+

Molby includes the following softwares, which are copyrighted products as described below:

@@ -210,31 +223,42 @@ Molby includes the following softwares, which are copyrighted products as descri AmberTools 1.3: Copyright (C) Junmei Wang, Ross C. Walker, Michael F. Crowley, Scott Brozell and David A. Case
  • -wxWidgets 2.8.9: Copyright (C) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other members of the wxWidgets team. Portions (c) 1996 Artificial Intelligence Applications Institute +wxWidgets 3.2.0: Copyright (C) 1992-2022 Julian Smart, Robert Roebling, Vadim Zeitlin and other members of the wxWidgets team. Portions (c) 1996 Artificial Intelligence Applications Institute
  • -Ruby 1.8.7: Copyright (C) 1993-2009 Yukihiro Matsumoto +Ruby 2.0.0: Copyright (C) 1993-2013 Yukihiro Matsumoto
  • CLAPACK: Copyright (C) 1992-2008 The University of Tennessee. All rights reserved.
  • +
  • +FFTW 3.3.2: Copyright (C) 2003, 2007-11 Matteo Frigo and Massachusetts Institute of Technology +
  • +
  • +ORTEP III: The citation is made like below. There are no copyright notice, but it is likely to be put in public domain.
    +Burnett, M. N.; Johnson, C. K. ORTEP-III: Oak Ridge Thermal Ellipsoid Plot Program for Crystal Structure Illustrations, Oak Ridge National Laboratory Report ORNL-6895, 1996. +
  • +
  • +JANPA: Copyright (C) 2014, Tymofii Nikolaienko.
    +See the software license for JANPA package of programs. +
  • 2. License

    -Molby is distributed under the GNU General Public License (version 2). +Molby is distributed under the GNU General Public License (version 3).

    -Molby: An Interactive Molecular Modeling Software with Integrated Ruby Interpreter +Molby: Interactive Molecular Modeling Software with Integrated Ruby Interpreter

    -Copyright (C) 2009 Toshi Nagata +Copyright (C) 2008-2022 Toshi Nagata

    This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or +the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

    @@ -252,8 +276,17 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Molby の著作権は永田 央が保持しています。

    -Copyright (C) 2009-2010 Toshi Nagata +Copyright (C) 2008-2022 Toshi Nagata +

    +

    +Molby を利用した成果を発表される際は、以下の論文を引用していただくようお願いします。 +

    +
    +

    +Toshi Nagata, "Molby - Graphical Molecular Modeling Software with Integrated Ruby Interpreter,"
    +Bull. Chem. Soc. Jpn. 2014, 87, 902-904. DOI:10.1246/bcsj.20140093

    +

    Molby は以下のソフトウェアを含んでいます。それぞれの著作権表示は下の通りです。

    @@ -262,33 +295,47 @@ Molby は以下のソフトウェアを含んでいます。それぞれの著 AmberTools 1.3: Copyright (C) Junmei Wang, Ross C. Walker, Michael F. Crowley, Scott Brozell and David A. Case
  • -wxWidgets 2.8.9: Copyright (C) 1992-2008 Julian Smart, Robert Roebling, Vadim Zeitlin and other members of the wxWidgets team. Portions (c) 1996 Artificial Intelligence Applications Institute +wxWidgets 3.2.0: Copyright (C) 1992-2022 Julian Smart, Robert Roebling, Vadim Zeitlin and other members of the wxWidgets team. Portions (c) 1996 Artificial Intelligence Applications Institute +
  • +
  • +Ruby 2.0.0: Copyright (C) 1993-2013 Yukihiro Matsumoto +
  • +
  • +CLAPACK: Copyright (C) 1992-2008 The University of Tennessee. All rights reserved. +
  • +
  • +FFTW 3.3.2: Copyright (C) 2003, 2007-11 Matteo Frigo and Massachusetts Institute of Technology +
  • +
  • +ORTEP III: The citation is made like below. There are no copyright notice, but it is likely to be put in public domain.
    +Burnett, M. N.; Johnson, C. K. ORTEP-III: Oak Ridge Thermal Ellipsoid Plot Program for Crystal Structure Illustrations, Oak Ridge National Laboratory Report ORNL-6895, 1996.
  • -Ruby 1.8.7: Copyright (C) 1993-2009 Yukihiro Matsumoto +JANPA: Copyright (C) 2014, Tymofii Nikolaienko.
    +See the software license for JANPA package of programs.
  • 2. ライセンス

    -Molby は GNU General Public License (GNU 一般公衆利用許諾契約書, version 2) に従って配布します。 +Molby は GNU General Public License (GNU 一般公衆利用許諾契約書, version 3) に従って配布します。

    Molby: 対話型分子モデルソフトウェア(Ruby インタプリタ内蔵)

    -Copyright (C) 2009 Toshi Nagata +Copyright (C) 2008-2022 Toshi Nagata

    -このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン2か、希望によってはそれ以降のバージョンのうちどれか)の定める条件の下で再頒布または改変することができます。 +このプログラムはフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行された GNU 一般公衆利用許諾契約書(バージョン3か、希望によってはそれ以降のバージョンのうちどれか)の定める条件の下で再頒布または改変することができます。

    このプログラムは有用であることを願って頒布されますが、*全くの無保証* です。商業可能性の保証や特定の目的への適合性は、言外に示されたものも含め全く存在しません。詳しくはGNU 一般公衆利用許諾契約書をご覧ください。

    -参考のため、GNU 一般公衆利用許諾契約書の非公式日本語訳を添付します。ただし、正式な文書は英語版の方です。 +参考のため、GNU 一般公衆利用許諾契約書の非公式日本語訳を添付します。ただし、正式な文書は英語版の方です。

    @@ -318,20 +365,20 @@ Copyright (C) 2009 Toshi Nagata

    Start up Molby. You will see a blank window like below. This is the main window to manipulate your molecule.

    -

    +

    Suppose you want a benzene molecule. Double-click on the black area, and you will be asked to "enter formula". Type "C6H6" and hit "OK".

    -

    +

    Then you see a benzene molecule in the black area. The atoms and bonds are drawn in red, which means these atoms and bonds are "selected". On the left to this area, there is a table, which shows in numbers the positions of all atoms, and other useful information. We will get into this part in more details later.

    -

    +

    2. Rotate the Molecule

    You can rotate the molecule around by use of the three bars on the both sides and the bottom of the black area. Press the left button of the mouse on one of these bars, and try dragging.

    -

    +

    第三段階:分子を編集する:カット・コピー・ペースト

    @@ -667,67 +714,378 @@ Make one more iteration to make the octamer.

    ふたたびトルエン分子から始めます。メチル基を選択して、コピーします。

    -

    +

    メチル基の選択を解除して、ペーストを実行します。他の原子と結合していないメチル基がもう一つ現れます。原子が選択されていない状態で「ペースト」すると、このような動作になります。

    -

    +

    今度は、ペーストする前に原子が選択されているときにどうなるかを見てみます。上と同じように、トルエンから始めて、メチル基を選択して、コピーします。メチル基の選択を解除して、今度はメチル基のオルト位の水素原子を選択します。

    -

    +

    ペーストを実行します。選択された水素原子がメチル基に置き換わります。オルト位の炭素とメチル基の間に新しい結合ができ、その長さと結合角が適切なものになっていることがわかります。

    -

    -二面角は適切とはいえないかも知れません。その場合は、ペーストされたグループを左の回転バーを使って回転させて、適切な二面角にします。 +二面角は適切でないこともあります。その場合は、ペーストされたグループを左の回転バーを使って回転させて、適切な二面角にします。

    +

    この「選択してペースト」のテクニックは、大きな分子を作るときにたいへん役に立ちます。たとえば、オリゴベンズアミドを作りたいとします。

    -

    +

    まず、「モノマー」となる N-メチル-4-アセトアミドベンズアミドを作ります。次のようにします:(1) ベンゼンを作る、(2) H1 を選択してダブルクリックし、「CONHCH3」とタイプする、(3) H4 を選択してダブルクリックし、「NHCOCH3」とタイプする。化学式をタイプしたあとは、作成したフラグメントを回転させて二面角を調整しておきます。

    -

    +

    左端の COCH3 以外全部を選択し、コピーします。

    -

    +

    右端の NHCH3 を選択し、「ペースト」を実行します。

    -

    +

    -新しく作られたアミド結合は二面角が不適切です。左の回転バーを使ってペーストしたフラグメントを回転し、アミド結合が正しく trans になるようにします。 +新しくアミド結合が作られ、二量体ができます。

    -

    +

    "Show" メニューから "Fit to Screen" を選び、分子全体が見えるようにします。

    -

    -

    +

    この操作を繰り返して、四量体を作ります。

    -

    -

    -

    +

    +

    +

    +

    もう一度繰り返して、八量体を作ります。

    -

    +

    -
    +
    -

    Step Four: Energy Minimization by Molecular Mechanics

    +

    Step Four: Ring Fusion

    +

    1. Ring fusion by double-click and type-in

    +

    +Molby has a capability to create a fused ring structure. As an example, here is presented yet another method to make indane. This time, we start from a benzene. +

    +

    +

    +Choose "select" mode, and select C1 and C2 by clicking on the C1-C2 bond. +

    +

    +

    +Double-click on the selection, and enter "cyclopentane" in the dialog box. +

    +

    +

    +After pressing "OK", you will see a five-membered ring fused to the benzene ring. +

    +

    +

    +Ring fusion also works when three or more atoms are selected in the original structure. For example, select the consecutive three carbons in indane as follows. +

    +

    +

    +Double-click on the selection, and enter "C6H6" (or "benzene"). +

    +

    +

    +Now we have acenaphthene...almost. +

    +

    +

    +As shown in the above figure, there is an extra, leftover hydrogen atom on one bridgehead carbon. After all, Molby is not so smart --- it just removes one hydrogen from each terminal carbon atoms in the selection, and connect a portion of the fusing fragment ("benzene" in this case) so that the newly created ring has the same number of atoms. Consequently, the stereochemistry may become strange when sp3 carbons are present either in the original structure or in the fusing fragment. You may need to remove/append hydrogen atoms and clean up structures (see "Energy Minimization" for detail). +

    +

    2. Ring fusion by copy-and-paste

    +

    +There is another way to make a ring fused structure, which includes copy and paste. Starting again from a benzene. +

    +

    +

    +Open the "File" menu, and select "Open Predefined" → "Alicyclic" → "cyclopentane". +

    +

    +

    +A new window named "*cyclopentane*" opens with one cyclopentane molecule. Select a portion containing three CH2 groups, and copy it by command-C or ctrl-C. +

    +

    +

    +Return to the benzene molecule again, and this time select H1 and H2 (not C1 and C2). +

    +

    +

    +Do paste by command-V or ctrl-V. You now get a indane molecule. +

    +

    +

    +This "copy-and-paste" actually works in a similar way to previously described example (see "Cut/Copy/Paste"). When both the current selection and the fragment in the pasteboard have two terminals, they are connected and ring fusion takes place. This method of ring fusion is slightly more complicated than the "double-click and type-in" method, but it may be easier to understand. +

    +
    +
    +

    第四段階:縮環構造の作成

    +

    1. ダブルクリック/キー入力による縮環

    +

    +Molby は縮環構造を作るための機能を持っています。例として、インダンを作るもう一つの方法を紹介します。今回は、ベンゼンから始めます。 +

    +

    +

    +"Select" モードにして、C1-C2 結合をクリックして C1 と C2 を選択します。 +

    +

    +

    +選択部分をダブルクリックして、ダイアログボックスに "cyclopentane" と入力します。 +

    +

    +

    +"OK" を押すと、5員環がベンゼン環に縮環します。 +

    +

    +

    +選択部分が3個以上の原子を含んでいても、縮環は可能です。例えば、インダンで図のように3つの連続した炭素原子を選択してみます。 +

    +

    +

    +選択部分をダブルクリックして、"C6H6"(または "benzene")と入力します。 +

    +

    +

    +そうすると、アセナフテンができます...だいたい。 +

    +

    +

    +上の図に示したように、橋頭位の炭素に1つ余分な水素原子が残ってしまいます。実のところ、Molby はあんまり賢くありません。選択部分の両端の原子から水素原子を1つずつ取り除いて、縮環する分子(この場合はベンゼン)の一部をかわりに結合して、生成する環の原子数が一致するようにしているだけです。このため、元の選択部分または縮環する分子が sp3 炭素を含んでいると、立体化学が変になることがあります。水素原子を除いたり付け加えたりして、さらに構造を最適化する必要があるでしょう(詳しくは「エネルギー最小化」を見てください)。 +

    +

    2. コピー/ペーストによる縮環

    +

    +縮環構造を作るには、コピー/ペーストを使ったもう一つの方法があります。またベンゼンから始めましょう。 +

    +

    +

    +"File" メニューを開き、"Open Predefined" → "Alicyclic" → "cyclopentane" を選んでください。 +

    +

    +

    +"*cyclopentane*"という名前の新しいウィンドウが開き、シクロペンタン分子が入っています。3つのメチレン基を選択して、コマンド-C またはコントロール-C でコピーしてください。 +

    +

    +

    +ベンゼン分子に戻って、今度は H1 と H2(C1 と C2 ではなく)を選択してください。 +

    +

    +

    +コマンド-V またはコントロール-V でペーストしてください。インダンができます。 +

    +

    +

    +この「コピー/ペースト」は、実は前に説明したのと (カット/コピー/ペースト) 同じように機能しています。現在の選択部分とクリップボードの内容がともに「2つの末端」を持っているとき、末端同士がつなぎあわされ、縮環したように見えるのです。この方法による縮環は「ダブルクリック/入力」の方法よりも少し複雑ですが、何が起きているかはこちらの方が理解しやすいかもしれません。 +

    +
    + +
    + +
    + + + +
    +

    Step Five: Edit a Molecule: Using a Property Table

    +

    1. The Property Table of a Molecule

    +

    +A molecule has many properties. It has a set of atoms and bonds. An atom has a name, an atom type, an element, a weight (which can be derived from the element), a charge, coordinates, and so on. According to the custom in the biomolecular modeling, atoms are grouped in "residues." It also has a set of parameters used in molecular mechanics. Molby also has a limited support for quantum chemical calculations. In relation to that, a molecule in Molby can retain extra information such as MO coefficients. +

    +

    +Many of these information are accessible via the property table. The table is on the left side of the model window. +

    +

    +

    +The table now shows the properties of each atom, namely its name, type, element, "residue" name and index, coordinates and partial charge. The property can be edited by double-clicking on the text. +

    +

    +

    +When return (enter) or tab key is pressed, the edited value is finalized, and editing will continue on another cell. Pressing return, shift-return, tab, or shift-tab should cause editing of the bottom, above, right, or left cell, respectively. If you want to finish editing, use option- (or alt-) return key combination. +

    +

    +Several points are worth mentioning here. +

    +

    +(1) The atom index (the leftmost column) cannot be edited. If you want to change the order of the atoms, try using a "drag-and-drop" feature, as shown in the figure below. +

    +

    +

    +

    +(2) The residue column shows the residue name and index separated by a period. Manual editing of this cell may lead to a surprising result. For example, if you change the residue name of atom 0 from "RES" to "XXX", all atoms having residue index "1" will also have the new residue name "XXX". +

    +

    +

    +

    +This behavior is based on the principle that all residue names and indices should be consistent, i.e. the atoms having the same residue index should have the same residue name. This is sometimes convenient, but in many cases it causes confusion. +

    +

    +A more recommended way to change the residue name and index is to use the menu command "Assign Residue...", in the "Script" menu, after selecting atoms you want to assign one residue name and index. +

    +

    + +     + +

    +

    + +

    + +

    2. The Bond/Angle/Dihedral/Improper Table

    +

    +The property table can also show other information. The type of information can be selected at the popup menu. +

    +

    +

    +The bond, angle, dihedral, and improper tables show the indices, names, and types of the constituent atoms. In addition, the quantities (bond lengths, angles, etc.) and the molecular mechanics parameters (only after MM/MD calculation is performed) are also shown. +

    +

    +

    +The bonds, angles, etc. are not editable in the property table. At present, the only way to create/delete bonds from GUI is to use the mouse operation "Bond" or "Erase". +

    + +

    3. The Parameter Table

    +

    +The parameter table shows the molecular mechanics parameters in one table. +

    +

    +

    +The parameters are grouped in several classes, namely "VDWs", "Bonds", "Angles", "Dihedrals", "Impropers", and "VDW Pairs". +

    +

    +The "VDWs" parameters are for the van der Waals nonbonding interaction, described by "eps" (the energy at the potential minimum in kcal/mol), "r" (the van der Waals radius in Å, which is half of the interatomic distance at the equilibrium state), "eps14", "r14" (eps and r for the pair of atoms separated by exactly three bonds. In many applications, the same parameters with the ordinary pair are used with a specific factor multiplied), "atomNo" (the atomic number), "weight" (the atomic weight). The last two are usually overridden by the atom parameters. +

    +

    +The "Bonds" parameters consist of "k" (the force constant in kcal/mol/Å2) and "r0" (the equilibrium bond length). The "Angles" parameters consist of "k" (the force constant in kcal/mol/radian2) and "a0" (the equilibrium bond angle). The "Dihedrals" and "Impropers" parameters consist of "k" (the force constant in kcal/mol/radian2), "period" (the periodicity), and "phi0" (the equilibrium torsion angle in degree). The "VDW Pairs" parameters are (rarely) used to describe pair-specific van der Waals interactions, and consist of "eps", "r", "eps14", and "r14". +

    +

    +There is another important property for each parameter, that is, whether the parameter is taken from the "global" source (i.e. not specific to this molecule), or it is "local" (specific to this molecule), or "undefined". This property is shown by the color of the row. The global parameters are shown in white cells, the local ones in pale yellow, and the undefined ones in red. +

    +

    +

    +You can edit the parameters (although you need to be familiar with MM parameters and to know what you are doing!), but only if they are "local" or "undefined" parameters. The "global" parameters cannot be edited because it may be also used in other molecules, where the edited parameters may not be appropriate. If you want to modify some parameters but they are "global", then you can make them "local" by copying the parameters and the pasting. +

    +

    +

    +Another way to create a "local" parameter is to use the "Create New Parameter" menu command in the Edit menu. You can choose the parameter type in the submenu. +

    +

    +

    +

    +If some parameters are not to be used for calculation, you can "cut" the parameters from the table. This feature is useful when you have many duplicated parameters having different force constants. (In actual calculation, the parameter appearing later in the table will be used.) +

    + +
    +
    +

    第五段階:分子を編集する:属性テーブルを使う

    +

    1. 分子の属性テーブル

    +

    +分子はいろいろな属性を持っています。まず原子と結合があります。原子は名前、原子タイプ、元素、原子量(元素が決まれば決まる)、電荷、座標、など。また、生化学の習慣に従い、原子は「残基」でグループ化されています。分子はまた、分子力学のパラメータを持っています。Molby はまた量子化学計算も部分的にサポートします。それと関連して、分子に分子軌道係数などの情報を持たせることができます。 +

    +

    +これらの情報の多くは「属性テーブル」で見ることができます。属性テーブルは、分子モデルのウィンドウの左半分にあります。 +

    +

    +

    +図では、テーブルは原子の属性を表示しています。名前、原子タイプ、元素、残基名と残基番号、座標、部分電荷です。これらの属性はダブルクリックして編集することができます。 +

    +

    +

    +リターン(エンター)またはタブキーを押すと、編集した値は確定され、別のセルが編集状態になります。リターン、シフト+リターン、タブ、シフト+タブでそれぞれ下・上・右・左のセルに移動します。編集を終了したい時は、オプション(Windows では Alt)+リターンを使ってください。 +

    +

    +いくつか注意点があります。 +

    +

    +(1) 原子のインデックス(一番左の列)は編集できません。原子の順序を変えたい時は、下の図にあるように「ドラッグ・アンド・ドロップ」操作を使ってください。 +

    +

    +

    +

    +(2) 残基の列には、残基の名前と残基番号がピリオドでつないで表示されています。このセルを編集すると、妙なことが起きて驚くかもしれません。たとえば、原子0の残基名を "RES" から "XXX" に変えると、残基番号が "1" であるすべての原子の残基名が "XXX" に変わります。 +

    +

    +

    +

    +この挙動は、すべての残基名と残基番号は統一されていなければならない、という原理によります。つまり、同じ残基番号を持つ原子の残基名は同じでなければなりません。時にはこの挙動が便利に使えますが、混乱を招くことも多くあります。 +

    +

    +残基名と残基番号を変更するお勧めの方法は、変更したい原子を選択して "Script" メニューの "Assign Residue..." コマンドを使うことです。 +

    +

    + +     + +

    +

    + +

    + +

    2. Bond/Angle/Dihedral/Improper テーブル

    +

    +属性テーブルは他の情報も表示することができます。テーブルの種類はポップアップメニューで選択できます。 +

    +

    +

    +Bond, angle, dihedral, improper テーブルは、それぞれ結合・結合角・二面角・improper 二面角の構成原子のインデックス、名前、原子タイプを表示します。また、現在の値(結合長、角度、など)と、分子力学パラメータ(MM/MD 計算を行った直後に限られますが)も表示されます。 +

    +

    +

    +このテーブルで、結合、結合角などを編集することはできません。現在、画面上のインターフェイスを使って結合を作ったり削除したりする唯一の方法は、"Bond", "Erase" のマウス操作を使うことです。 +

    + +

    3. パラメータテーブル

    +

    +パラメータテーブルは、分子力学パラメータを表示します。 +

    +

    +

    +パラメータはいくつかの種類にグループ分けされています。"VDWs", "Bonds", "Angles", "Dihedrals", "Impropers", そして "VDW Pairs" です。 +

    +

    +"VDWs" パラメータは、van der Waals 相互作用のためのもので、必要な値は "eps"(ポテンシャル極小値、kcal/mol)、"r"(van der Waals 半径、Å。ポテンシャル極小状態での原子間距離の 1/2)、"eps14", "r14"(結合3つで隔てられた2つの原子間の eps と r。多くの分子力学パッケージでは、通常の原子間と同じパラメータに一定の係数をかけて用いることが多い)、"atomNo"(原子番号)、"weight"(原子量)。最後の2つは、ふつうは各原子のパラメータで上書きされます。 +

    +

    +"Bonds" パラメータは、"k"(結合の力の定数、kcal/mol/Å2)、"r0"(平衡結合長さ、Å)から成ります。"Angles" パラメータは、"k"(結合角の力の定数、kcal/mol/radian2)、"a0"(平衡結合角、degree)から成ります。'Dihedrals", "Impropers" パラメータは、"k"(力の定数、kcal/mol/radian2)、"period"(周期)、"phi0"(平衡二面角、degree)から成ります。"VDW Pairs" パラメータは滅多に使われませんが、ある原子の組み合わせに特有の van der Waals 相互作用を記述するもので、"eps", "r", "eps14", "r14" から成ります。 +

    +

    +それぞれのパラメータにはもう一つ重要な特性があります。それは、そのパラメータが「グローバル」なのか(つまり、他の分子にも使われる共通の値なのか)、または「ローカル」なのか(この分子に特有)、または「未定義」なのか、です。この特性は、テーブルの行の色で区別できます。「グローバル」なパラメータは白、「ローカル」はうすい黄色、「未定義」は赤色のセルです。 +

    +

    +

    +パラメータは編集することができます(あなたが分子力学パラメータに詳しくて、何をしているかわかっていればの話だけど!)。ただし、パラメータが「ローカル」「未定義」の場合だけです。「グローバル」パラメータは、他の分子でも使われている可能性があるため、編集できません。「グローバル」なパラメータを編集したい時は、そのパラメータをコピー・ペーストすることで「ローカル」パラメータにすることができます。 +

    +

    +

    +「ローカル」なパラメータを作るもう1つの方法は、"Edit" メニューの "Create New Parameter" コマンドを使うことです。パラメータの種類をサブメニューから選ぶことができます。 +

    +

    +

    +

    +もしあるパラメータは計算に使わないという場合には、そのパラメータをテーブルから削除することができます。この機能は、同じパラメータで異なる値を持つものが複数ある場合に有用です。(実際の計算では、テーブルの後ろの方にあるパラメータが優先されます。) +

    +
    + +
    + +
    + + + +
    +

    Step Six: Energy Minimization by Molecular Mechanics

    1. About Molecular Mechanics Implementation in Molby

    The molecular models built by hand generally include unnatural bond lengths, bond angles, van der Waals contacts, and so on. Molecular mechanics is a useful technique to remove such unnatural structures. @@ -748,7 +1106,7 @@ Following are the original papers published by the AMBER team. Please be sure to

  • Wang, J.; Wolf, R.M.; Caldwell, J.W.; Kollamn, P.A.; Case, D.A. Development and testing of a general Amber force field. J. Comput. Chem., 2004, 25, 1157–1174.
  • Wang, B.; Merz, K.M. Jr. A fast QM/MM (quantum mechanical/molecular mechanical) approach to calculate nuclear magnetic resonance chemical shifts for macromolecules. J. Chem. Theory Comput., 2006, 2, 209–215.
  • -

    2. Energy Minimization How-to

    +

    2. Energy Minimization How-to

    Now we try energy minimization. We use 2,2'-dimethoxybiphenyl as an example.

    @@ -756,66 +1114,67 @@ Now we try energy minimization. We use 2,2'-dimethoxybiphenyl as an example.

    Build this molecule. The easiest way is, (1) double-click the empty editing area and type "C6H5C6H5", (2) select one ortho hydrogen, double-click, and type "OCH3", (3) repeat (2) for another ortho hydrogen on the other ring.

    -

    +

    -Open the "MM/MD" menu, and select "antechamber/parmchk..." command in the "Tools" submenu. +Open the "MM/MD" menu, and select "Guess MM/MD Parameters..." command.

    -

    +

    -A dialog like below shows up. Turn off the first two checkboxes. The "log" directory is used by AmberTools for storing intermediate files; the default value would be acceptable, but you can change it here. +A dialog like below shows up. This is for execution of Antechamber on the current molecule. Turn off the "Calculate partial charges" checkbox, and turn on the "Guess atom types" checkbox. The "log" directory is used by AmberTools for storing intermediate files; the default value would be acceptable, but you can change it here.

    -

    +

    After pressing "OK", two dialog boxes appear in turn. They disappear so quickly that you may not recognize what they are saying; actually, the first one says "Running antechamber" and the second one "Running parmchk." These are programs included in AmberTools. In the present case, both programs complete successfully, and the following dialog appears.

    -

    +

    Press "OK", and you will return to the molecule window. Do you notice what change has been made? It is the atom types that are modified. Specifically, the types of the atoms 0 and 10 are changed from "ca" to "cp".

    -

    +

    If you are wondering what "ca" or "cp" mean, look at the global parameter table (MM/MD → View Global Parameters...), and find comment(s) in the "vdw" record.

    -

    +

    Return to the molecule, and select MM/MD → Minimize.

    -

    +

    A setting dialog opens. "Steps per frame" means the screen is updated every this number of steps. "Number of frames" means the maximum number of "frames" (i.e. screen updates) to calculate. If the minimization completes before this number of frames, the calculation will stop. The numbers 10 and 200 are reasonable choice in many cases.

    -

    +

    -Press "OK", and minimization starts. As you expect, the dihedral angle between the two phenyl rings becomes large. The calculation will stop after 200 frames. You can see the number "199" at the right bottom of the window, and the slider at the bottom of the window is now active. Move the slider, and you can see how the molecular structure changed during the minimization. +Press "OK", and minimization starts. As you expect, the dihedral angle between the two phenyl rings becomes large. The calculation will stop after 200 frames. You can see the number "200" at the right bottom of the window, and the slider at the bottom of the window is now active. Move the slider, and you can see how the molecular structure changed during the minimization.

    -

    +

    If you save this molecule at this stage, all the frames will be also saved (when you select the "mbsf" format), and the resulting file may be very large. If you do not want this, then you can remove all the frames by use of "Delete Frames..." command in the "Script" menu.

    -

    -

    -

    3. Handling electrostatic interaction

    +

    +

    +

    3. Handling electrostatic interaction

    The above description is sufficient for initial cleanup of the molecular structure. However, we should go one further step to take electrostatic interaction into consideration. This is particularly important in molecules with polar functional groups (such as carbonyl).

    -Continue our study on 2,2'-dimethoxybiphenyl. Open "MM/MD" → "Tools" → "Antechamber/parmchk...", and this time turn on the top checkbox. Also make sure the net molecular charge is correct. +Continue our study on 2,2'-dimethoxybiphenyl. Open "MM/MD" → "Guess MM/MD Parameters...", and this time turn on the top checkbox. Also make sure the net molecular charge is correct.

    -

    +

    Press "OK", and calculation starts. This time the calculation should take much longer than before, because semi-empirical calculation is carried out for optimizing the structure and getting the partial charges.

    -

    +

    When calculation is done, the molecular structure may change, because structure optimization has been done by semi-empirical calculation. However, even more important is the "charge" values. You can see the charge values by scrolling the table to the right. By use of these "charge" values, interaction energies of the polar functional groups can be taken into account.

    -

    +

    -Note that the atomic charges given in the above method are derived from semi-empirical quantum chemical calculations. On the other hand, it is generally considered that the charges derived from ab initio calculations are better. Molby does not have capability to perform ab initio calculations, but it can help creating necessary input files for external quantum chemical programs. This will be described elsewhere in this User's Manual (not yet written, but coming soon). +Note that the atomic charges given in the above method are derived from semi-empirical quantum chemical calculations. On the other hand, it is generally considered that the charges derived from ab initio calculations are better. Molby does not have capability to perform ab initio calculations, but it can help creating necessary input files for external quantum chemical programs. This will be described elsewhere in this User's Manual.

    +
    -

    第四段階:分子力学計算によるエネルギー最小化

    +

    第六段階:分子力学計算によるエネルギー最小化

    1. Molby の分子力学計算について

    手作業で作成した分子モデルは、不自然な結合長、結合角、van der Waals 接触などを含んでいます。このような不自然な構造を修正するには、分子力学のテクニックが便利です。 @@ -836,7 +1195,7 @@ Molby の分子力学計算は、基本的な分子力場(結合の伸縮、

  • Wang, J.; Wolf, R.M.; Caldwell, J.W.; Kollamn, P.A.; Case, D.A. Development and testing of a general Amber force field. J. Comput. Chem., 2004, 25, 1157–1174.
  • Wang, B.; Merz, K.M. Jr. A fast QM/MM (quantum mechanical/molecular mechanical) approach to calculate nuclear magnetic resonance chemical shifts for macromolecules. J. Chem. Theory Comput., 2006, 2, 209–215.
  • -

    2. エネルギー最小化の方法

    +

    2. エネルギー最小化の方法

    さて、エネルギー最小化をやってみましょう。例として 2,2'-ジメトキシビフェニルを使うことにします。

    @@ -844,138 +1203,1684 @@ Molby の分子力学計算は、基本的な分子力場(結合の伸縮、

    この分子のモデルを作ってください。簡単なやり方は、(1) 空の編集エリアでダブルクリックして "C6H5C6H5" とタイプする。(2) オルト位の水素原子を1つ選択し、ダブルクリックして "OCH3" とタイプする。(3) もう1つの環のオルト位の水素原子について、(2) を繰り返す。

    -

    +

    -"MM/MD"メニューを開き、"Tools" サブメニューから "Antechamber/parmchk..." コマンドを実行します。 +"MM/MD"メニューを開き、"Guess MM/MD Parameters..." コマンドを実行します。

    -

    +

    -下のようなダイアログが現れます。上の2つのチェックボックスをオフにしてください。"Log" ディレクトリは、AmberTools のプログラムが中間ファイルを保存するのに使います。デフォルトの位置で問題はないでしょうが、変更してもかまいません。 +下のようなダイアログが現れます。これは現在の分子に対して Antechamber を実行するためのものです。一番上のチェックボックス "Calculate partial charge" をオフ、その下の "Guess Atom Types" をオンにしてください。"Log" ディレクトリは、AmberTools のプログラムが中間ファイルを保存するのに使います。デフォルトの位置で問題はないでしょうが、変更してもかまいません。

    -

    +

    "OK"を押すと、2つのダイアログが順に現れます。すぐに消えてしまうので、何と書いてあるか読めないかも知れません。最初のものは "Running antechamber", 2つめのものは "Running parmchk" と書いてあります。これらは AmberTools に含まれているプログラムです。今の場合は、両方とも正しく実行され、次のダイアログが現れます。

    -

    +

    "OK"を押して、分子のウィンドウに戻ってください。何が変わったかわかるでしょうか? 変わったのは原子タイプです。具体的には、原子0と原子10のタイプが "ca" から "cp" に変わっています。

    -

    +

    "ca" や "cp" が何の意味か知りたければ、"MM/MD" メニューから "View Global Parameters..." を選んでみてください。Molby に同梱されているパラメータの一覧表が出てきます。"vdw" (van der Waals パラメータの意味ですが、原子タイプの定義も兼ねています)の中で "ca", "cp" を見つけて、表の右端にあるコメントを見てみてください。

    -

    +

    分子のウィンドウに戻り、"MM/MD" → "Minimize" を選んでください。

    -

    +

    設定ダイアログが開きます。"Steps per frame" は、構造最適化計算がこのステップ数進んだところで画面を更新する、という意味です。"Number of frames" は、この数だけ画面を更新したら計算を止める、という意味です。その前に構造最適化が終了すれば、その時点で計算は止まります。下の図にある 10, 200 を入れておけば、たいていの場合はよいでしょう。

    -

    +

    -"OK" を押すと、構造最適化が始まります。この分子の場合、期待される通り、2つのベンゼン環の間の二面角がだんだん大きくなります。指定通り、200回画面が更新されると計算は止まります。ウィンドウの右下に "199" という数字があり、ウィンドウの下辺にあるスライダーが有効になっています。更新された画面は、それぞれ独立したフレームとして保存されており、このスライダーを動かすと、初期状態からどのように構造が変わって行くかを再現することができます。 +"OK" を押すと、構造最適化が始まります。この分子の場合、期待される通り、2つのベンゼン環の間の二面角がだんだん大きくなります。指定通り、200回画面が更新されると計算は止まります。ウィンドウの右下に "200" という数字があり、ウィンドウの下辺にあるスライダーが有効になっています。更新された画面は、それぞれ独立したフレームとして保存されており、このスライダーを動かすと、初期状態からどのように構造が変わって行くかを再現することができます。

    -

    +

    この時点で分子を "mbsf" フォーマットで保存すると、全部のフレームの情報が保存され、ファイルがとても大きくなります。これが好ましくない場合は、現在表示されている以外のフレームを削除することもできます。"Script" メニューから "Delete Frames..." コマンドを使ってください。

    -

    -

    -

    3. 静電相互作用の取り扱い

    +

    +

    +

    3. 静電相互作用の取り扱い

    上の説明は、分子構造のひずみを取り除く最初の段階としては十分です。しかしながら、次の段階として、静電相互作用を考慮しなければなりません。特に、カルボニル基などの極性官能基が含まれている場合は、これは重要です。

    -2,2'-ジメトキシビフェニルについて検討を続けましょう。"MM/MD" → "Tools" → "Antechamber/parmchk...", を開き、今度は一番上のチェックボックスをオンにします。そして、分子の総電荷が正しいことを確認してください。この場合は中性分子なので、"0" で結構です。 +2,2'-ジメトキシビフェニルについて検討を続けましょう。"MM/MD" → "Guess MM/MD Parameters...", を開き、今度は一番上のチェックボックスをオンにします。そして、分子の総電荷が正しいことを確認してください。この場合は中性分子なので、"0" で結構です。

    -

    +

    "OK" を押すと、計算が始まります。今度は、前回よりもずっと長く計算時間がかかります。半経験的分子軌道法により、構造最適化と部分電荷の計算を行うからです。

    -

    +

    計算が終了すると、分子構造は少し変化することがあります。半経験的分子軌道計算で構造最適化が行われたからです。また、"charge" の値が設定されていることがわかります。テーブルを右にスクロールすると、与えられた電荷の値を見ることができます。この電荷の値を用いて静電相互作用の計算を行うことにより、極性官能基の相互作用エネルギーをより正しく見積もることができます。

    -

    +

    -上の方法で計算した電荷は、半経験的分子軌道計算によるものです。一方、一般的には ab initio 計算で求めた電荷の方が良いと考えられています。Molby は ab initio 計算を行う機能を持っていませんが、外部の量子化学計算プログラムへの入力ファイルを作成する機能があります。これは、このマニュアルの別のところで解説します(まだできていませんが、近いうちに)。 +上の方法で計算した電荷は、半経験的分子軌道計算によるものです。一方、一般的には ab initio 計算で求めた電荷の方が良いと考えられています。Molby は ab initio 計算を行う機能を持っていませんが、外部の量子化学計算プログラムへの入力ファイルを作成する機能があります。これは、このマニュアルの別のところで解説します。

    +
    -
    +
    -

    Step Five: Edit a Molecule: Using a Property Table

    -

    1. The Property Table of a Molecule

    +

    Step Seven: Molecular Dynamics (MD) Calculation

    +

    1. MD Calculation within Molby

    -A molecule has many properties. It has a set of atoms and bonds. An atom has a name, an atom type, an element, a weight (which can be derived from the element), a charge, coordinates, and so on. According to the custom in the biomolecular modeling, atoms are grouped in "residues." It also has a set of parameters used in molecular mechanics. Molby also has a limited support for quantum chemical calculations. In relation to that, a molecule in Molby can retain extra information such as MO coefficients. +Molby implements molecular dynamics (MD) calculation which uses the same force fields as the energy minimization by molecular mechanics (MM). This implementation is suitable only for preliminary calculations (to check parameters quickly, etc.); for production runs, it is strongly recommended that you use one of the established software packages.

    -Most of these information are accessible via the property table. The table is on the left side of the model window. +An example of preliminary MD run is presented here. We use 2,2'-dimethoxybiphenyl again. In a similar way as in the step six, create a model and assign MM parameters (including the partial charges on the atoms).

    -

    - -
    -
    -

    第五段階:分子を編集する:属性テーブルを使う

    -
    - -
    - -
    - - - -
    -

    Step Six: Collaboration with Other Quantum Chemistry Softwares

    -
    -
    -

    第六段階:他の量子化学ソフトウェアとの連携

    -
    - -
    - -
    - - - -
    -

    Step Seven: Using Embedded Ruby Interpreter

    -
    -
    -

    第七段階:組み込み Ruby インタプリタを使う

    -
    - -
    - -
    - - - -
    -

    Reference

    - -
    -
    -

    リファレンス

    - -
    +

    +

    +Select MM/MD → Molecular Dynamics. A setting dialog opens. Although this dialog resembles that in MM minimization, it shows different parameters that are relevant to the MD calculation. +

    +

    +

    +The "timestep" parameter defines the minimum time increment in solving the equation of motions. The "target temperature" defines the temperature of the system. Before running the MD calculation, all atoms are let to have random velocities with the Boltzmann distribution corresponding to the target temperature. In addition, the velocities are modified so that the temperature is kept constant. The "steps per frame" and "number of frames" parameters have the same meaning as in the MM minimization. The screenshot shows 10 as the "steps per frame"; this is an appropriate value for MM minimization, however for MD calculations a larger value would be more appropriate (like 100). +

    +

    +Pressing the "Advanced..." button opens another dialog with other parameters. The meanings of the parameters are described in the embedded Ruby document, in the MDArena page. +

    +

    +

    +Return to the original MD dialog (by pressing "Close" in the advanced settings dialog), and press "OK". The MD run starts, and new frames are accumulated. If you find something is wrong, or want to stop before getting the specified number of frames, you can stop the MD run by pressing Command-period (Mac) or Control-period (Windows). +

    +

    2. Using Molby with AMBER: Creating Inputs and Importing Outputs

    +

    +For production runs, you can create AMBER input files from Molby. More specifically, you can create "prmtop" and "inpcrd" files for the SANDER module. +

    +

    +Note: There is no guarantee that Molby creates the exactly same input as the official AMBER modeling tools, nor the generated files are valid inputs for the SANDER module. You may need to modify them by hand. +

    +

    +To creat SANDER input files, select "Create SANDER input..." command in the "MM/MD" menu. +

    +

    +

    +You will be asked first for the file name for the "prmtop" file. Please be sure to add ".prmtop" extension. The other file, "inpcrd" file, is created as the same name with the ".prmtop" extension replaced by the ".inpcrd" extension. +

    +

    +

    +Subsequently, you will be asked to select one of the two versions of the prmtop files. The older one, "AMBER8/NAMD", allows you to use the output file by NAMD (see below). +

    +

    +

    +Now you can transfer your files to the workstation running SANDER. To perform the simulation, you still need to create the instruction file for SANDER, which you should already know if you are using AMBER. +

    +

    +After the simulation is over, you can get the trajectory file ("mdcrd" file) back and import to Molby. Use "Import..." command in the "File" menu, select "AMBER mdcrd file (*.crd; *.mdcrd)", and specify the file. +

    +

    +

    3. Using Molby with NAMD: Creating Inputs and Importing Outputs

    +

    +You can also use the NAMD software package for production run. NAMD is developed by the Theoretical Biophysics Group in the University of Illinois at Urbana-Champaign, and the official information is found at their web site (http://www.ks.uiuc.edu/Research/namd/). NAMD can use the AMBER "prmtop" as the input, by use of the instruction amber yes. See NAMD Users' Guide for details. +

    +

    +You can also import the NAMD output by importing the dcd file. The file format is also listed in the "Import..." file dialog. +

    +

    4. Building Solvated Structures

    +

    +When you want to perform MD simulations in explicit solvent, you need to build a box of solvent molecules around the target molecule. Molby can help creating solvated structures. +

    +

    +To build a solvated structure, you need to open the file containing the predefined box of the desired solvent. The following solvent box is included in the Molby package, and can be accessed from "File" → "Open Predefined" → "Solvent boxes" submenu. The tip3box was taken from the AmberTool package, and other solvent boxes were taken from Amber parameter database. +

    + + + + + + + + + + + + + + + + + +
    namesolventreference
    tip3pboxwaterJorgensen, W. L.; Chandrasekhar, J.; Madura, J.; Klein, M. L.
    +J. Chem. Phys. 1983, 79, 926. +
    chcl3boxchloroformCieplak, P.; Caldwell, J. W.; Kollman, P. A.
    +J. Comp. Chem. 2001, 22, 1048.
    +
    dmsoboxdimethylsulfoxideFox, T.; Kollman, P. A.
    +J. Phys. Chem. B 1998, 102, 8070. +
    meohboxmethanolCaldwell, J. W.; Kollman, P. A.
    +J. Phys. Chem. 1995, 99, 6208. +
    nmaboxN-methylacetamideCaldwell, J. W.; Kollman, P. A.
    +J. Phys. Chem. 1995, 99, 6208. +
    +

    +

    +While keeping the solvent box open, create or open the target (solute) molecule in a separate window. With this solute molecule in the front window, select "Solvate..." command in the "MM/MD" menu. +

    +

    +

    +A dialog box opens. +

    +

    +

    +In the popup menu "Choose solvent box:", you will find the solvent box you opened earlier. Note that this popup menu lists all open molecules that have the associated periodic box (or unit cell). This can lead to a confusing situation that, if you have another solvated structure also open, that structure will also be listed in this popup menu, because a solvated structure always have a periodic box. Therefore, please take care so that you choose the right solvent box.

    +

    +If you open the solvent box from the "Open Predefined" menu, you can easily recognize it in the popup menu, because the name has asterisks at the beginning and the end, like "*CHCl3*". +

    +

    +The "Box offset" parameters define the thickness of the solvent layer surrounding the solute molecule. More specifically, the periodic box of the solvated structure is determined as follows: the minimum cuboid that can surround the solute molecule is defined, and all the faces are offset by the "Box offset" distances to the outside direction. On the other hand, it is possible to define the size of the periodic box explicitly for any of the three (x, y, z) directions. If you wish to do this, give a negative number for that direction. (For example, if you want the periodic box to be 40 Å in the x direction, give -40 as the first "Box offset" parameter.) +

    +

    +The size of the periodic box can be checked by selecting "Xtal" → "Unit Cell..." menu command, or in the property table (the "unit cell" property). +

    +

    +The "Exclusion limit distance" defines the minimum allowed distance between the solvent and solute molecules. The solvent molecule is removed when it has atoms with smaller distances than this parameter from the solute molecule. +

    + +
    +
    +

    第七段階:分子動力学計算

    +

    1. Molby 組み込みの分子動力学 (MD) 計算

    +

    +Molby は分子動力学 (MD) 計算を実装しています。これは分子力学によるエネルギー最小化と同じ分子力場を使います。この機能は、パラメータのチェックなどの予備的な計算に使うことを想定しています。本格的な計算には、実績のある他のソフトウェアパッケージを使うことを強くおすすめします。 +

    +

    +予備的な MD 計算の例を示します。また 2,2'-ジメトキシビフェニルを使います。第六段階と同様に、モデルを作成して分子力場パラメータを決定してください(原子上の部分電荷も)。 +

    +

    +

    +MM/MD メニューの "Molecular Dynamics" を選ぶと、設定ダイアログが開きます。このダイアログは分子力場によるエネルギー最小化の時と似ていますが、MD 計算に使う他のパラメータを表示しています。 +

    +

    +

    +"Timestep" パラメータは、運動方程式を解くときの最小時間刻みを表します。"Target temperature" は系の温度を表します。MD 計算が始まる際に、すべての原子はこの温度に対応するボルツマン分布に従ってランダムな速度を与えられます。さらに、MD 計算中は温度が一定に保たれるように速度が調整されます。"Steps per frame" と "number of frames" パラメータは分子力学によるエネルギー最小化の時と同じ意味を持ちます。このスクリーンショットでは "steps per frame" が 10 になっています。これはエネルギー最小化では適切な値ですが、分子動力学の場合はもう少し大きな値(たとえば 100)の方がより適切です。 +

    +

    +"Advanced..." ボタンを押すと、他のパラメータを持つ別のダイアログが開きます。これらのパラメータの意味は、内蔵 Ruby インタプリタのリファレンスで MDArena のページに書かれています。 +

    +

    +

    +元の MD 設定ダイアログに戻り(詳細設定ダイアログで "Close" ボタンを押す)、"OK" を押します。MD 計算が始まり、新しいフレームが追加されて行きます。何か問題があったり、指定したフレーム数よりも前に計算を止めたいときは、コマンド-ピリオド (Mac) かコントロール-ピリオド (Windows) を使ってください。 +

    +

    2. AMBER とともに使う:入力の作成と出力結果のインポート

    +

    +本格的な計算を行うために、Molby で AMBER への入力ファイルを作成することができます。具体的には、SANDER モジュールの入力となる "prmtop" と "inpcrd" ファイルを作ることができます。 +

    +

    +注: Molby が AMBER 付属のモデリングツールと同じ入力ファイルを作成する保証はありませんし、SANDER モジュールへの正しい入力になっている保証もありません。手作業で修正が必要な場合もあるかもしれません。 +

    +

    +SANDER の入力ファイルを作るには、"MM/MD" メニューから "Create SANDER input..." コマンドを選んでください。 +

    +

    +

    +最初に "prmtop" ファイルの名前を聞かれます。必ず ".prmtop" 拡張子をつけるようにしてください。もう一つの "inpcrd" ファイルは、".prmtop" を ".inpcrd" に置き換えた名前で保存されます。 +

    +

    +

    +次に、prmtop ファイルの2つのバージョンのうち1つを選ぶように促されます。古い方、"AMBER8/NAMD" を使えば、NAMD ソフトウェアパッケージ(下記参照)でも使える入力ファイルができます。 +

    +

    +

    +これで、SANDER が走るワークステーションにファイルを転送することができます。シミュレーションを実行するためには、SANDER の命令ファイルを作らなければなりませんが、AMBER をお使いの方ならやり方はよくご存知でしょう。 +

    +

    +計算が終了したら、トラジェクトリファイル ("mdcrd" ファイル) を取得して、Molby にインポートすることができます。"File" メニューの "Import..." コマンドを選び、ファイルタイプとして "AMBER mdcrd file (*.crd; *.mdcrd)" を選んで、ファイルを読み込んでください。 +

    +

    +

    3. NAMD とともに使う:入力の作成と出力結果のインポート

    +

    +本格的な計算を行うために NAMD を使うこともできます。NAMD はイリノイ大学アーバナ・シャンペーン校の理論生物物理グループが開発したソフトウェアパッケージです。公式ウェブサイトは http://www.ks.uiuc.edu/Research/namd/ です。NAMD は AMBER の "prmtop" を入力として使うことができます(amber yes 命令を使う)。詳しくは NAMD のユーザーズガイドをご覧ください。 +

    +

    +NAMD の出力の dcd ファイルもインポートが可能です。"Import..." コマンドのファイルタイプで選択することができます。 +

    +

    4. 溶媒和構造の作成

    +

    +明示的な溶媒中での MD シミュレーションを行うためには、目的分子の回りに溶媒分子の箱を作る必要があります。Molby でこのような溶媒和構造を作成することができます。 +

    +

    +溶媒和構造を作るためには、まず使用する溶媒の箱を読み込む必要があります。以下の溶媒の箱が Molby に同梱されており、"File" → "Open Predefined" → "Solvent boxes" サブメニューから選ぶことができます。Tip3box は AmberTool パッケージから得たものであり、他の溶媒箱は Amber parameter database で公開されているものです。 +

    + + + + + + + + + + + + + + + + + +
    namesolventreference
    tip3pboxwaterJorgensen, W. L.; Chandrasekhar, J.; Madura, J.; Klein, M. L.
    +J. Chem. Phys. 1983, 79, 926. +
    chcl3boxchloroformCieplak, P.; Caldwell, J. W.; Kollman, P. A.
    +J. Comp. Chem. 2001, 22, 1048.
    +
    dmsoboxdimethylsulfoxideFox, T.; Kollman, P. A.
    +J. Phys. Chem. B 1998, 102, 8070. +
    meohboxmethanolCaldwell, J. W.; Kollman, P. A.
    +J. Phys. Chem. 1995, 99, 6208. +
    nmaboxN-methylacetamideCaldwell, J. W.; Kollman, P. A.
    +J. Phys. Chem. 1995, 99, 6208. +
    +

    +

    +溶媒箱を開いたまま、目的とする分子(溶質)を新しいウィンドウで開くか作成します。溶質分子のウィンドウを最前面にした状態で、"MM/MD" メニューから "Solvate..." コマンドを選びます。 +

    +

    +

    +ダイアログが開きます。 +

    +

    +

    +ポップアップメニュー "Choose solvent box:" には、さきほど開いた溶媒箱がリストされているはずです。注意していただきたいのは、このポップアップメニューには周期境界(または単位格子)を持つすべての分子がリストされることです。このため、紛らわしいことに、別の溶媒和構造を同時に開いていると、その構造もこのポップアップメニューに登場してしまいます(溶媒和構造は必ず周期境界を持っていますから)。ですから、正しい溶媒箱を選ぶように十分に注意してください。 +

    +

    +"Open Predefined" メニューから選んで開いた溶媒箱はすぐに区別できます。名前の前後に * がついているからです ("*CHCl3*" のように)。 +

    +

    +"Box offset" パラメータは、溶質分子の回りを囲む溶媒層の厚さを指定します。言い換えると、これから作成する溶媒和構造の周期境界は次のように決められます:まず溶質を囲む最小の直方体を算出し、それぞれの面を外側に向かって Box offsect パラメータ分だけ移動させます。一方、x, y, z のそれぞれの方向に対して、周期境界の大きさを決めたい場合もあります。このときは、その方向の Box offset パラメータに負の値を指定してください。(たとえば、x 方向の周期境界を大きさを 40 Šにしたい時は、"Box offset" の最初のパラメータを -40 にしてください。) +

    +

    +周期境界の箱の大きさは、"Xtal" → "Define Unit Cell" メニューを選ぶと見ることができます。また、属性テーブルの "unit cell" でも見られます。

    +

    +"Exclusion limit distance" は、溶質分子と溶媒分子の原子間距離の最小値を定めます。溶媒分子のある原子が溶質分子からこの距離以内に近づいているとき、その溶媒分子は取り除かれます。 +

    +
    + +
    + +
    + + + +
    +

    Step Eight: MM/MD Calculation of Coordination Compounds

    +

    1. Use of UFF (Universal Force Field) Parameters

    +

    +Building molecular models of coordination compounds is often problematic. This is mainly due to the lack of appropriate MM parameters for metal atoms. One reasonable approach is to use UFF (universal force field) parameters developed by Rappé and coworkers (J. Am. Chem. Soc. 114, 10024-10035 (1992)). Although estimation of the UFF parameters from the molecular structure is rather complicated, it can be automated by computer programs. In the following, you will see how Molby can help modeling of coordination compounds with the UFF parameters. +

    +

    +Suppose we want to build a model of (terpy)PtCl, where terpy is 2,2':6',2"-terpyridine. +

    +

    +

    +We need to build the molecular structure first. One approach is to build the organic part (terpy), and put metal atoms afterwards. Here, we will go through another route, namely start from the metal fragment and add ligands afterwards. In general, this approach should be more successful in building models of coordination compounds. +

    +

    +Select "Open Predefined..." menu item, and find "MX4 square-planar" like below. +

    +

    +

    +A square planar fragment of "CuCl4" appears on the screen. +

    +

    +

    +Choose the "Select" tool, double click on one of the chlorine atoms, and type "C6H5". +

    +

    +

    +You see now a phenyl group is attached to the metal atom. The orientation of the phenyl ring needs to be fixed. Select the metal-C bond, and rotate the phenyl ring so that the ring is approximately coplanar with the metal-ligand plane. +

    +

    +

    +Attach two other phenyl groups in a similay manner. +

    +

    +

    +Remove the hydrogen atoms and create C-C bonds. Double-click on the carbon atoms connected to the metal, and change them to "N". Double-click on the metal atom and change it to "Pt". +

    +

    +

    +Now the molecular structure is complete. Next we need to assign the MM parameters. To do this, select the "Guess UFF Parameters..." from the "MM/MD" menu. +

    +

    +

    +A dialog like below opens up. Here are listed the atoms that are (1) the metal atoms, (2) the ligand atoms that are connected to the metal atoms, and (3) the ligand atoms that are connected to any of the atoms in (2). In other words, the atoms within "two-bonds" distances are shown in this dialog. The Pt atom is shown in red, because it does not have predefined MM parameters. The ligand atoms already have their MM parameters, but if you look closely not all atoms are correctly recognized. For example, the pyridine N atoms are incorrectly assigned as "n3", which is a sp3 nitrogen. +

    +

    +

    +The UFF parameter estimation consists of two stages. The first stage is to assign the types of the ligand atoms. This is basically the same as the procedure described in Step 6, but this time we need to run Antechamber for the non-metal part only. By hitting the button "Run Antechamber for Non-Metal Fragment", Antechamber is executed for each non-metal fragments. You may need to assign the charge for each fragment; for example, if you are using catecholato ligand, that fragment should have charge of -2. +

    +

    +

    +The fragment that are being assigned by Antechamber is shown in the main window as the selection. In this example, the first fragment contains only the chlorine atom, and the second fragment is the terpyridine ligand. +

    +

    +

    +After running Antechamber, the table looks like below. Note that the values in the "type" column have been changed. +

    +

    +

    +Next, we need to assign the "UFF types" to each atoms. In fact, the UFF types are already set in the previous stage. We still need to look at them, and correct the types if necessary. You can select the predefined UFF types from the popup menu. +

    +

    +

    +Now we need to assign UFF parameters for the metal atoms. Click the button "Guess UFF Parameters for Bonds and Angles Including Metal Atoms". +

    +

    +

    +Open the "Bonds" page, and check the columns "k" and "r0". You will find there the proposed values of force constant and equilibrium bond length, according to the UFF force field. If you find, by some reason, the values are not appropriate, then you can change them by hand. +

    +

    +

    +You can check the "Angles" page as well. Check the columns "k" and "a0", for the force constant and equilibrium bond angle. Note that, in the case of square planar or octahedral metal center, there are "cis" and "trans" angles. The program will assign "trans" if the current bond angle is larger than 135 degree, and "cis" otherwise. So, if your starting geometry is not quite optimal, be careful to check the angle parameters. +

    +

    +

    +Close this dialog, and go into MM/MD calculations as usual. For example, you can perform energy minimization and get the structure like below. +

    +

    +

    2. Compounds Containing Metal-π Bonds

    +

    +Compounds containing metal-π bonds are also problematic in molecular mechanics calculations. The implementation of metal-π bonds in Molby is based on the proposal by Doman and coworkers (J. Am. Chem. Soc. 114, 7262-7272 (1992)). Herein we will see how to build a molecular model of ferrocene. +

    +

    +

    +We start with the predefined structure "cyclopentadienyl." +

    +

    +

    +Select the five carbon atoms, and do "Create Pi Anchor" menu command. +

    +

    +

    +"Pi anchor" is a virtual atom, whose coordinates are defined as the center of mass of the "parent" atoms. In this case, the parent atoms of the pi anchor is the carbon atoms of the Cp ring. In the main screen, the pi anchor is shown as a green dot, and it is connected to the parent atoms by a green thin bonds. +

    +

    +

    +Rotate the ring to show the "side view" of the ring, while keeping the pi anchor barely visible. Create a bond from the pi anchor to a new atom. Change the new atom to Fe. +

    +

    +

    +Copy the cyclopentadienyl ring and the pi anchor, and paste in the same window. Place the new ring to the appropriate position, and bond the Fe atom and the new pi anchor. +

    +

    +

    +Finally, make a bond between the two pi anchors. This is necessary to describe the barrier for ring rotation. The anchor-anchor bond is shown as a half-transparent green stick. +

    +

    The ring rotation can be described as a dihedral term in the form of "ring atom"-"pi anchor"-"metal"-"X". However, in the case of a linear metallocene, "X" is the other pi anchor. Since the "pi anchor"-"metal"-"pi anchor" angle is always close to 180 degree, the dihedral angle cannot be defined. For this reason, the linear metallocene requires special treatment of the dihedral term in the form of "ring atom"-"pi anchor"-"pi anchor"-"ring atom". That is why we need to make a bond between two pi anchors. This is not the case for the bent metallocenes (like Cp2TiCl2), or half-sandwich complexes. +

    +

    +

    +Now we can go on to the UFF dialog as before. This time, we skip the "non-metal fragments" part, because Antechamber cannot handle cyclopentadienyl anion. Our cyclopentadienyl ring already has correct atom types, so we will use them as they are. +

    +

    +Change the UFF type of the Fe atom to "Fe2+ octahedral". +

    +

    +

    +Click on the "Bonds" label, and change the "r0" parameter of the two bonds of "##-fe" or "fe-##" type ("##" represents the pi anchor). This should be the metal-pi distance, which is 1.66 Å for ferrocene. +

    +

    +

    +The "Angle" page should also be edited. The "a0" parameter is set to 90.0 for the "fe-##-ca" type angles (ten lines from the top), and 180.0 for the "##-fe-##" type angle (the last line). +

    +

    +

    +Hit the "Guess UFF Parameters..." button to complete the calculation of the UFF parameters. +

    +

    +

    +You can now try the MM/MD calculation. Energy minimization results in an eclipsed conformation. MD at 298K shows that the Cp rings freely rotate at this temperature. +

    +

    +
    +
    +

    第八段階:配位化合物のMM/MD計算

    +

    1. UFF (Universal Force Field) パラメータを使う

    +

    +配位化合物の分子モデル作成にはいろいろ問題があります。主な問題は、金属原子の分子力学パラメータが用意されていないことです。一つの合理的な方法は、Rappéらによって提案された UFF (universal force field) パラメータを使うことです (J. Am. Chem. Soc. 114, 10024-10035 (1992))。 分子構造から UFF パラメータを見積もるのはやや複雑な作業ですが、プログラムによって自動化することは可能です。以下に、UFF を用いた配位化合物のモデルングに Molby がどのように利用できるかを示します。 +

    +

    +例として、(terpy)PtCl の分子モデルを作ってみましょう。terpy は 2,2':6',2"-terpyridine です。 +

    +

    +

    +最初に分子構造を作らなくてはいけません。一つの方法は、まず有機分子の部分 (terpy) を作成し、金属を後から付け加えることです。ここでは、別の方法を使ってみます。つまり、最初に金属回りの配位構造から始め、あとで配位子を付け加えます。一般的には、こちらの方が配位化合物のモデリングには適しています。 +

    +

    +"File" メニューから "Open Predefined..." を選び、下のように "MX4 square-planar" を見つけてください。 +

    +

    +

    +平面四配位の "CuCl4" 構造が現れます。 +

    +

    +

    +"Select" ツールを選び、塩素原子の1つをダブルクリックして、"C6H5" とタイプします。 +

    +

    +

    +金属原子にフェニル基が結合しました。環はこの向きではいけませんので、金属-炭素結合を選択して、フェニル基を回転させ、環が金属・配位子平面と同一平面になるようにします。 +

    +

    +

    +他の2つの塩素原子も同様にフェニル基に置き換えます。 +

    +

    +

    +水素原子を削除して炭素−炭素結合を作成します。それから、金属に結合している炭素原子をダブルクリックして、"N"原子に変えます。金属原子をダブルクリックして、 "Pt" に変えます。 +

    +

    +

    +これで分子構造はできあがりました。次に、分子力学パラメータを設定します。"MM/MD"メニューから "Guess UFF Parameters..." コマンドを選択します。 +

    +

    +

    +下のようなダイアログが開きます。表に原子が並んでいますが、この原子は (1) 金属原子、(2) 金属原子に結合している原子、(3) (2) の原子のいずれかに結合している原子、のどれかです。言い換えれば、金属原子から「結合2つ分」以内の原子が表示されています。Pt 原子の行は赤色で表示されています。分子力学パラメータが定義されていないことを表しています。配位子の原子はすでに分子力学パラメータを持っていますが、よく見ると、間違っているものもあります。例えば、ピリジンの N 原子は "n3" タイプになっていますが、これは sp3 窒素です。 +

    +

    +

    +UFF パラメータの作成はいくつかの段階を要します。最初に、配位子の原子タイプを正しく設定します。この作業は、第六段階 で行ったのとほぼ同じですが、今回は金属原子を除いた部分構造について Antechamber を実行する必要があります。"Run Antechamber for Non-Metal Fragment" ボタンを押すと、この作業が自動的に行われます。各部分構造について、電荷を与える必要があるかも知れません。例えば、カテコラト配位子を使っているなら、電荷は -2 となります。 +

    +

    +

    +Antechamber を走らせる部分構造は、メインウィンドウで選択されて表示されます。ここの例では、1番目の部分構造は塩素原子1個だけを含み、2番目の部分構造はターピリジンになります。 +

    +

    +

    +Antechamber を走らせると、表は下のようになります。"type" 列の値が変わっていることに注意してください。 +

    +

    +

    +次に、各原子の "UFF type" を設定します。前の段階で UFF type を仮に設定してありますが、一通り見直して、必要なら変更してください。UFF type はポップアップメニューで選択することができます。 +

    +

    + +

    +今度は、金属原子のパラメータを設定します。"Guess UFF Parameters for Bonds and Angles Including Metal Atoms" ボタンを押してください。 +

    +

    +

    +"Bonds" ページを開いて、"k" と "r0" の列を見てください。UFF 分子力場から予測された「力の定数」と「結合長」が入っているはずです。何らかの理由で、値が適切ではないと考えた場合は、手動で変更することもできます。 +

    +

    +

    +"Angles" ページも同じようにチェックしてください。"k" と "a0" の列に「力の定数」と「結合角」が入っています。金属中心が、平面正方形、または八面体構造の場合は、"cis" と "trans" の角度があります。プログラムは、現在の結合角が 135度よりも大きければ "trans" とみなし、小さければ "cis" とみなします。現在の構造が理想的な構造から離れている場合は、角度のパラメータを注意深くチェックしてください。 +

    +

    +

    +このダイアログを閉じて、MM/MD 計算を通常のように進めます。例えば、エネルギー最小化を行うと、下のような構造が得られます。 +

    +

    +

    2. 金属-π 結合を持つ化合物

    +

    +分子力学計算では、金属-π結合を持つ化合物の取り扱いも厄介です。Molby は、Doman らの方法 (J. Am. Chem. Soc. 114, 7262-7272 (1992)) に準じて金属-π結合の分子力学計算を実装しています。ここでは、フェロセンの分子モデルを作成してみます。 +

    +

    +

    +"Open Predefined" から "cyclopentadienyl" を選びます。 +

    +

    +

    +5つの炭素原子を選択し、"Create Pi Anchor" メニューコマンドを実行します。 +

    +

    +

    +"Pi anchor" とは、「親」原子の重心を座標とする仮想的な原子です。今回は、シクロペンタジエニル環の5つの炭素原子(上で選択したもの)が pi anchor の親になります。スクリーン上では、pi anchor は緑色の小さな球で表し、親原子とは緑色の半透明の棒でつないで表示されます。 +

    +

    +

    +環を回転させて、横から見た向きにします。Pi anchor はぎりぎり見えるようにしておきます。Pi anchor から結合を出して、新しい原子を作ります。新しい原子を Fe に変えます。 +

    +

    +

    +シクロペンタジエニル環と pi anchor をコピーして、同じウィンドウ内にペーストします。新しい環を Fe 原子をはさんで反対側に移動し、新しい pi anchor と Fe 原子を結合させます。 +

    +

    +

    +最後に、2つの pi anchor の間に結合を作ります。これは、環の回転障壁を正しく見積もるために必要になります。Anchor 同士の結合は、半透明の緑色で示されます。 +

    +

    +環の回転は「環の原子-pi anchor-金属-他の原子」という二面角項で表されます。メタロセンの場合、「他の原子」はもう一つの pi anchor になります。ところが、直線型のメタロセンだと、「pi anchor-金属-pi anchor」の角度は常に 180°付近であるため、二面角を正しく定義することができません。このため、直線型メタロセンでは、特別に「環の原子-pi anchor-pi anchor-環の原子」という二面角で環の回転を表現します。この理由で、2つの pi anchor の間に結合を作る必要があるのです。曲がったメタロセン (Cp2TiCl2 など) や、ハーフサンドイッチ型の錯体では、このような扱いは不必要です。 +

    +

    +

    +ここからは、前と同じように UFF のダイアログを使うことが出来ます。今回は、"non-metal fragments" の計算は省略します。Antechamber はシクロペンタジエニルアニオンを正しく取り扱うことができないためです。私たちのシクロペンタジエニル環はすでに正しい原子タイプを持っていますので、これをそのまま使います。 +

    +

    +Fe の UFF タイプを "Fe2+ octahedral" に変更します。 +

    +

    +

    +"Bonds" ラベルをクリックし、"##-fe" または "fe-##" タイプの結合の "r0" パラメータの値を変更します("##" は pi anchor を意味します)。この値は金属-π結合の距離です。フェロセンの場合は 1.66 Šになります。 +

    +

    +

    +"Angles" ページも編集が必要です。今回は手動で金属原子を作成したため、角度が正しくなっていないからです。"fe-##-ca" タイプの角度は 90.0(上から10行分)、"##-fe-##" タイプの角度は 180.0(一番下の行)にします。 +

    +

    +

    +"Guess UFF Parameters..." ボタンを押して、UFF パラメータの計算を行います。 +

    +

    +

    +これで MM/MD 計算を試すことができます。エネルギー最小化を行うと、重なり型の配置が得られます。298K で MD を行うと、Cp 環がこの温度で自由回転していることがわかります。 +

    +

    +
    + +
    + +
    + + + +
    +

    Step Nine: Collaboration with Other Quantum Chemistry Softwares

    +

    +Molby has a capability to export and import files for quantum chemistry softwares, namely Gaussian and GAMESS. At present, the capability is quite limited, and in many cases it would be much better to use other established softwares. Nevertheless, if you are already familiar with Molby, you may want to use Molby for creating input files for Gaussian and GAMESS and processing outputs. Here are instructions how to do it. +

    +

    +Needless to say, you need to have access to Gaussian or GAMESS program packages. They can be on the same machine or on other machines (workstations) than Molby. Please learn how to use these packages before using Molby as described in this section. +

    +

    1. Using Gaussian

    +

    +The Gaussian input can be created by selecting "Export..." command in the "File" menu. The file extension is either "gjf" (as is the convention in GaussianW) or "com" (as in UNIX version of Gaussian). +

    +

    +

    +The output will look like this. Although Molby can create only one type of Gaussian input (optimize with PM3), it should be relatively easy to modify the generated input file by hand. +

    +

    %Chk=benzene.chk +# PM3 Opt + + unnamed1; created by Molby at Sat Feb 11 00:30:21 +0900 2012 + + 0 1 +C -0.653000 0.585000 -1.068000 +H -1.158000 1.039000 -1.898000 +C 0.729000 0.607000 -1.003000 +H 1.295000 1.076000 -1.783000 +C 1.382000 0.021000 0.069000 +H 2.452000 0.038000 0.119000 +C 0.651000 -0.586000 1.076000 +H 1.156000 -1.039000 1.906000 +C -0.732000 -0.607000 1.012000 +H -1.298000 -1.077000 1.792000 +C -1.384000 -0.021000 -0.060000 +H -2.455000 -0.038000 -0.110000 + +

    +

    +When you do geometrical optimization, you may want to examine how the structure changes as the calculation proceeds. This can be done by importing the Gaussian output file. The extention should be either ".out" or ".log". +

    +

    +

    2. Using GAMESS

    +

    +Creating GAMESS input can be more complicated than Gaussian, so that Molby provides a simple dialog to help creating GAMESS input. The dialog is accessible from the "Creating GAMESS input..." command in the "QChem" menu. +

    +

    +

    +You can specify various settings in the dialog. +

    +

    +
      +
    • SCF Type: RHF, ROHF, or UHF.
    • +
    • Run Type: Energy, Property, or Optimize.
    • +
    • Use internal coordinates for structure optimization: Add instructions for automatic generation of internal Z-matrix. (Note: It cannot be used for linear molecules.)
    • +
    • Charge: The (formal) charge of the molecule.
    • +
    • Multiplicity: The spin multiplicity.
    • +
    • Use DFT: Check if you want to use DFT.
    • +
    • DFT type: At present only B3LYP is available in this dialog.
    • +
    • Basis set: One of PM3, STO-3G, 3-21G, 6-31G, 6-31G(d), 6-31G(d, p), 6-311G, 6-311G(d, p), or LanL2DZ.
    • +
    • Load Basis Set: Additional basis set can be imported from a file. The file should be in the GAMESS standard format. See the "basis_sets" directory in the "Script" directory for examples.
    • +
    • Use secondary basis set: Check if you want to use another basis set for certain elements.
    • +
    • Elements: The elements (comma separated) to use secondary basis set.
    • +
    • Basis set: The secondary basis set.
    • +
    • Calculate electrostatic potential: This is used for RESP charge calculation for AMBER.
    • +
    • Include NBO instructions: When GAMESS is built with NBO (natural bond orbital) support, these checkboxes generate instructions for running NBO program for the designated properties.
    • +
    • Execute GAMESS on this machine: (0.6.5 and later) Execute GAMESS, provided that GAMESS is installed on the same computer. Specify the full path of the GAMESS executable in "Path", and the number of CPU cores for calculation in "N of CPUs."
      +(Note: GAMESS may not work depending on the version of the executable.)
    • +
    +

    +When the calculation of GAMESS is complete, you will find two output files, namely *.log and *.dat. Either format can be imported by use of the "Import..." menu command. Some informations are included in both (e.g. coordinates during structural optimization), but other informations are only in one of these files (e.g. the full description of gaussian functions is only in the *.log file, whereas the orbital coefficients with full precision are only in the *.dat file). You need to be familiar with the structure of the GAMESS output files to fully utilize the GAMESS import capability of Molby. +

    +

    3. Using GAMESS for calculation of the RESP charges

    +

    +We already saw how to assign partial charges for evaluation of electrostatic interactions in MM calculations. There we used semi-empirical calculations, although ab initio calculations will give better results if possible. Here are instructions how to do it using GAMESS. +

    +

    +Select "MM/MD" → "GAMESS/RESP...". +

    +

    +

    +The following window pops up. As the first step, press the "Create GAMESS Input..." button. +

    +

    +

    +The familiar GAMESS dialog opens up. It is most important to turn on the "Calculate electrostatic potential (ESP)" checkbox (it should be turned on if you follow the steps as described here, but please double-check). Also make sure that the charge and multiplicity are correct, and select a suitable basis set (6-31G(d) is recommended). +

    +

    +

    +Press OK to create the GAMESS input, and send it to GAMESS. The calculation will take time, so that you can finish Molby (after saving the molecule as a msbf file!), and work on something else at this stage. +

    +

    +After the GAMESS calculation is complete, open the same molecule, and select "MM/MD" → "Tools" → "GAMESS/RESP..." again. This time, follow the second step by pressing the "Import GAMESS dat..." button. +

    +

    +

    +Select the GAMESS dat file (which should be available when the GAMESS calculation ends successfully), and import it. When the import is complete, the "Run RESP..." button should be enabled. If it does not, the imported dat file does not have the electrostatic potential information. Start over from the step 1, and make sure that the "Calculate electrostatic potential (ESP)" checkbox is on. +

    +

    +

    +Press the "Run RESP..." button, and the following dialog opens. This is almost the same as the dialog for Antechamber described before. +

    +

    +

    +Press the "OK" button, and the RESP charge will be assigned to the atoms. +

    +
    +
    +

    第九段階:他の量子化学ソフトウェアとの連携

    +

    +Molby は量子化学計算ソフトウェア Gaussian、GAMESS のファイルを作成/読み込みする機能を持っています。現状では、Molby には極めて制限された機能しかないため、おそらく他の実績あるソフトウェアを使った方がよいでしょう。しかし、Molby の操作に慣れているなら、Gaussian や GAMESS の入力を作成して結果を読み込むのに Molby を使いたいことがあるかもしれません。どのようにすればよいかを説明します。 +

    +

    +当然のことながら、Gaussian や GAMESS のプログラムパッケージが使えることが前提です。これらが走るのは、Molby と同じマシン上でも異なるマシン(ワークステーション)上でも構いません。この項で説明するやり方で Molby を使う前に、これらのプログラムパッケージをどのように使うかを学んでおいてください。 +

    +

    1. Gaussian を使う

    +

    +Gaussian の入力は "File" → "Export..." コマンドを使えば作成することができます。ファイルの拡張子は "gjf"(GaussianW での習慣)、または "com"(UNIX 版での習慣)です。 +

    +

    +

    +できあがったファイルは次のようになります。Molby が作成できるのは、一種類の Gaussian 入力ファイル(PM3 による構造最適化)だけですが、Gaussian の入力ファイルを手作業で修正するのは比較的簡単です。 +

    +

    %Chk=benzene.chk +# PM3 Opt + + unnamed1; created by Molby at Sat Feb 11 00:30:21 +0900 2012 + + 0 1 +C -0.653000 0.585000 -1.068000 +H -1.158000 1.039000 -1.898000 +C 0.729000 0.607000 -1.003000 +H 1.295000 1.076000 -1.783000 +C 1.382000 0.021000 0.069000 +H 2.452000 0.038000 0.119000 +C 0.651000 -0.586000 1.076000 +H 1.156000 -1.039000 1.906000 +C -0.732000 -0.607000 1.012000 +H -1.298000 -1.077000 1.792000 +C -1.384000 -0.021000 -0.060000 +H -2.455000 -0.038000 -0.110000 + +

    +

    +構造最適化を行ったあとは、構造がどのように変化するか見てみたいと思うでしょう。これは、Gaussian 出力ファイルを読み込めば実現できます。拡張子は ".out" または ".log" でなくてはなりません。 +

    +

    +

    2. GAMESS を使う

    +

    +GAMESS の入力を作成するのは Gaussian よりもずっと複雑なので、専用のダイアログが用意されています。このダイアログは、"QChem" → "Creating GAMESS input..." コマンドで開くことができます。 +

    +

    +

    +このダイアログでは、いろいろな設定を決めることができます。 +

    +

    +
      +
    • SCF Type: RHF, ROHF, または UHF.
    • +
    • Run Type: Energy, Property, または Optimize.
    • +
    • Use internal coordinates for structure optimization: 内部的に Z-matrix を自動生成するための命令を付け加えます。(注: 直線状分子には使えません。)
    • +
    • Charge: 分子の形式電荷。
    • +
    • Multiplicity: スピン多重度。
    • +
    • Use DFT: DFT 計算を行うときチェックします。
    • +
    • DFT type: このダイアログでは B3LYP のみ指定できます。
    • +
    • Basis set: 以下の基底が指定できます:PM3, STO-3G, 3-21G, 6-31G, 6-31G(d), 6-31G(d, p), 6-311G, 6-311G(d, p), または LanL2DZ.
    • +
    • Load Basis Set: ファイルから追加の基底関数を読み込みます。ファイルは GAMESS の標準的なフォーマットに従っている必要があります。ファイルの例として、"Scripts" ディレクトリの中の "basis sets" ディレクトリを見てみてください。
    • +
    • Use secondary basis set: 特定の元素のみ別の基底を使いたいときチェックします。
    • +
    • Elements: 別の基底を使う元素(コンマで区切って複数指定できます)。
    • +
    • Basis set: 別の基底。
    • +
    • Calculate electrostatic potential: RESP 電荷を求めるための静電ポテンシャルの計算を行う。
    • +
    • Include NBO instructions: GAMESS が NBO (natural bond orbital) をサポートしている場合は、これらのチェックボックスで指定したものを NBO プログラムで計算させるように、コマンドを生成します。
    • +
    • Execute GAMESS on this machine: (0.6.5 以降) Molby と同じコンピュータに GAMESS がインストールされているとき、GAMESS を実行することができます。Path に GAMESS の実行ファイルのフルパス名、N of CPUs に使用する CPU のコア数を指定します。
      +(注: GAMESS のバージョンによっては動作しないことがあります。)
    • +
    +

    +GAMESS の計算が終了すると、*.log と *.dat の2つのファイルができます。どちらも "Import..." コマンドで読み込むことができます。ある種の情報(たとえば構造最適化途中の座標)はどちらのファイルにも含まれていますが、その他の情報はどちらか一方にしか含まれません(たとえば、基底を構成する Gaussian 関数の完全な係数は *.log ファイルにしかなく、精度の高い軌道係数は *.dat にしかありません)。GAMESS 読み込み機能を十分に活用するには、GAMESS の出力が何を含んでいるかをよく理解する必要があります。 +

    +

    3. GAMESS を用いて RESP 電荷を計算する

    +

    +分子力学計算で静電相互作用を評価するための部分電荷の計算についてはすでに説明しました。そこでは半経験的分子軌道計算を用いましたが、可能ならば ab initio 計算の方がよい結果を与えます。GAMESS を使って計算する方法を説明します。 +

    +

    +メニューより "MM/MD" → "GAMESS/RESP..." を選びます。 +

    +

    +

    +次のウィンドウが開きます。第1のステップとして、"Create GAMESS Input..." ボタンを押します。 +

    +

    +

    +GAMESS のダイアログが開きます。大切なのは、"Calculate electrostatic potential (ESP)" チェックボックスをオンにすることです(ここの手順に従えば、自動的にオンになっているはずですが、一応確認してください)。分子の電荷・スピン多重度が正しいことを確かめ,基底関数 (6-31G(d) がおすすめ) を指定してください。 +

    +

    +

    +OK ボタンを押して GAMESS 入力を作成し、GAMESS で計算を実行してください。計算には時間がかかりますから、この時点で Molby を終了して他の作業をしていただいて構いません(ただし、分子ファイルを mbsf 形式で保存することを忘れないで!)。 +

    +

    +GAMESS 計算が完了したら、同じ分子ファイルを開き、"MM/MD" → "Tools" → "GAMESS/RESP..." をもう一度選択してください。今度は、第2ステップの "Import GAMESS dat..." ボタンを押します。 +

    +

    +

    +GAMESS の dat ファイルを選択し(GAMESS の計算が成功すればこれができているはずです)、読み込んでください。読み込みが完了したら、"Run RESP..." ボタンが有効になっているはずです。もしそうならなかったら、読み込んだ dat ファイルに静電ポテンシャルのデータが含まれなかったということです。もう一度第1ステップからやり直し、特に "Calculate electrostatic potential (ESP)" チェックボックスがオンになっていることを確かめてください。 +

    +

    +

    +"Run RESP..." ボタンを押すと、次のダイアログが開きます。これは、前に説明した Antechamber のダイアログとほとんど同じです。 +

    +

    +

    +"OK"ボタンを押すと、RESP 部分電荷が各原子に対してアサインされます。 +

    +
    + +
    + +
    + + + +
    +

    Step Ten: Working with Crystal Structures

    +

    +Information obtained from single-crystal X-ray analysis is a very important source of molecular structure. Molby can import crystallographic information files (CIFs) and handle structural data included in them. Although Molby does not have capability of solving structures from diffraction data, it does provide convenient features for viewing and examining crystal structures. +

    +

    1. Importing a CIF file

    +

    +Select "Open..." menu command in the "File" menu, and choose "Crystallographic Information File (CIF)" as the file type. +

    +

    +

    +Select a CIF file and hit "Open". If the molecule has crystallographic symmetry, it should have bonds including symmetry related atoms. In this case, a dialog like below is shown and you are asked how to handle such bonds. +

    +

    +

    +If the molecule is discrete with an imposed crystallographic symmetry, the default selection (the second one) should work all right. In other cases, where the molecule is an infinite chain, the first choice may make more sense. Expansion by symmetry is also available as a separate command, so it is also safe to ignore extra bonds at this stage (the third choice) and do symmetry expansion later. +

    +

    +After expansion, the molecule looks like this. The atoms with darker colors are "expanded atoms." +

    +

    +

    +Molby internally handles all atomic positions as cartesian coordinates. However, the fractional coordinates can be calculated "on-the-fly." In the property table, you can choose to display the fractional coordinates (together with the site occupancies and isotropic temperature factors) as below. +

    +

    + +

    2. Examining the Crystal Structure

    +

    +Commands for examining the crystal structure are available in the "Xtal" menu. +

    +

    +

    2-1. Unit Cell

    +

    +The "Unit Cell" command is used to set the unit cell parameters. It is also possible to set the origin and the unit cell axes directly. +

    +

    +

    2-2. Symmetry Operation

    +

    +The "Symmetry Operation" command is used to add/remove the symmetry operation, or change the space group. +

    +

    +

    +Hitting the "Select..." button causes another dialog to open, where you can choose one of the predefined space groups. All 230 space groups are included with various origin and axis settings (not all possible choices are covered though). +

    +

    +

    2-3. Symmetry Expansion

    +

    +The "Complete by Symmetry" command is used to expand the molecular fragment in the asymmetric unit. It is supposed to work similarly as the "expand fragments" option in loading CIFs, but the result may be different. (This is because, in the "Complete by Symmetry" command, the bonds between different asymmetric units are "guessed" based on interatomic distances instead of being read from the CIF file.) +

    +

    +

    +The "Create Packing Diagram" command generates symmetry-related atoms within the given range of the fractional coordinates. +

    +

    +

    +The "Show Periodic Image" command does not generate new atoms, but shows the periodic images of the present unit cell. +

    +

    +

    +The "Remove Expanded Atoms" command removes the atoms generated by symmetry expansion. There are two options; one is to remove all expanded atoms, and the other is to remove only those atoms that are included in completely expanded fragments (i.e. the fragments containing at least one non-expanded atoms will be kept unchanged). +

    +

    +

    +The result looks like below. Note that the periodic images are still shown, because they are not expanded atoms but just images shown on the screen. +

    +

    + +

    2-4. Bonds, Angles, and Planes

    +

    +The "Bonds and Angles with Sigma..." command is used to calculate the interatomic distances and angles with the standard deviations. +

    +

    +

    +Hit "Add Bond" or "Add Angle" button to create a new entry, then select the atoms one by one in the main window. After adding one "bond" and one "angle", the window looks like below. Note that you can choose atoms that are not connected via chemical bonds. +

    +

    +

    +To use the calculated information in other applications (like pasting into a word processor), select the table rows and hit "Export to Clipboard." The information is copied as a plain text (one line per row) that can be pasted into other applications. +

    +

    +

    +The "Best-Fit Planes" command is used for calculating mean planes, angles between the planes, and distances of atoms from the plane. After the dialog is opened, the set of atoms can be assigned by selecting the atoms in the main window and hit one of the "Set Current Selection" buttons. +

    +

    + +

    2-5. ORTEP Drawing

    +

    +The "Show ORTEP" command open the dialog like below. +

    +

    +

    +The ORTEP drawing is created by the bundled ORTEP-III program. The following citation should be made when using the output. +

    +
      +
    • +Burnett, M. N.; Johnson, C. K. ORTEP-III: Oak Ridge Thermal Ellipsoid Plot Program for Crystal Structure Illustrations, Oak Ridge National Laboratory Report ORNL-6895, 1996. +
    • +
    +

    +On this dialog, you can choose the appearance of the atoms and bonds. The orientation of the drawing is similar (although not completely the same) as in the main window. The drawing can be exported as an ORTEP input file or a graphic file (either as an encapsulated PostScript file, a PNG file or a TIFF file). When exporting to a bitmap file, the drawing is done at resolution of 360 dpi. +

    +

    +
    +
    +

    第十段階:結晶構造を取り扱う

    +

    +単結晶X線構造解析は、分子構造の重要な情報源です。Molby は、結晶情報ファイル (CIF) を読み込み、構造データを取り扱うことができます。回折データから構造解析を行うことはできませんが、結晶構造を表示したり調べたりするのに便利な機能を持っています。 +

    +

    1. CIFデータの読み込み

    +

    +"File" メニューから "Open..." コマンドを選び、ファイルタイプとして "Crystallographic Information File (CIF)" を選択します。 +

    +

    +

    +CIF を選んで "Open" を押します。CIF の中の分子は、対称操作で関連づけられた原子との間に結合を持っていることがあります。このような場合は、下のダイアログが表示されます。 +

    +

    +

    +分子が無限鎖でなく、自分自身の中に結晶学的な対称性を持っている場合は、2番目の選択肢(これが標準です)でうまくいきます。分子が無限鎖の場合は、1番目の選択肢の方が合理的です。また、対称操作で分子を拡大する機能は後でも使うことができますので、この段階では「外との結合」を無視する(3番目の選択肢)ことにしても構いません。 +

    +

    +対称操作によって拡大すると、分子は下のようになります。暗い色で表示されているのは、対称操作によって作られた原子です。 +

    +

    +

    +Molby の内部では、すべての原子座標は直交座標で扱われています。しかし、単位格子内の部分座標も計算することができます。属性テーブルで "xtal coords" を選ぶと、部分座標と占有数・温度因子を表示できます。 +

    +

    + +

    2. 結晶構造を調べる

    +

    +結晶構造を調べるためのコマンドは "Xtal" メニューにあります。 +

    +

    +

    2-1. 単位格子

    +

    +"Unit Cell" コマンドは、単位格子のパラメータを設定するのに使います。原点と単位格子の軸ベクトルを直接設定することもできます。 +

    +

    +

    2-2. 対称操作

    +

    +"Symmetry Operation" コマンドでは、対称操作を追加・削除したり、空間群を設定したりできます。 +

    +

    +

    +"Select..." ボタンを押すと、もう一つ別のダイアログが開きます。ここでは、あらかじめ定義された空間群を選択することができます。230 の空間群すべてがいろいろな原点・軸の設定で登録されています(すべての選択肢が網羅されている訳ではありませんが)。 +

    +

    +

    2-3. 対称操作による拡大

    +

    +"Complete by Symmetry" コマンドは、非対称単位内の分子の部分を対称操作によって拡大するために使います。これは、CIF を読み込む時のオプションと同様に機能しますが、結果は少し違うこともあります。(その理由は、"Complete by Symmetry" コマンドでは、異なる非対称単位中の原子間の結合の有無を、結合距離から推測するためです。CIF 読み込みの場合は、CIF に書かれた結合の情報を使います。) +

    +

    +

    +"Create Packing Diagram" コマンドは、指定した部分座標の範囲(標準は単位格子全体)に存在する原子を対称操作によって生成します。 +

    +

    +

    +"Show Periodic Image" コマンドは、新しく原子を作るのではなく、単位格子の繰り返しイメージを画面上で表示するためのものです。 +

    +

    +

    +"Remove Expanded Atoms" コマンドは、対称操作によって生成された原子を削除します。2つのオプションがあります。1つは、すべての生成原子を削除するものです。もう1つは、拡張原子のみから成る部分分子を削除するものです(この場合、元の原子と同じ分子に属する拡張原子はそのまま残されます)。 +

    +

    +

    +結果は下のようになります。"Show Periodic Image" で表示している繰り返しイメージはまだ表示されていることに注意してください。これは拡張原子ではないため、削除はされません。(このイメージを消すには、"Show Periodic Image" コマンドで表示を無効にしてください。) +

    +

    + +

    2-4. 結合・角度・最適平面

    +

    +"Bonds and Angles with Sigma..." コマンドは、原子間の距離・角度を標準偏差付きで計算するものです。 +

    +

    +

    +"Add Bond" または "Add Angle" ボタンを押して新しいエントリーを作り、それからメインウィンドウで原子を1つずつクリックして指定します。例えば、"Bond" を1つ、"Angle" を1つ作ると、下のようになります。直接結合されていない原子を指定することもできます。 +

    +

    +

    +計算結果を他のソフトウェアで使うためには(例えばワードプロセッサにペーストする場合)、表の行を選択して "Export to Clipboard" ボタンを押してください。計算結果はプレーンテキストでコピーされ、他のアプリケーションにペーストできるようになります。 +

    +

    +

    +"Best-Fit Planes" コマンドは、最適平面を計算し、二面角や原子・平面間距離を計算するのに使います。ダイアログが開いたら、指定したい原子をメインウィンドウで選択して "Set Current Selection" ボタンを押してください。 +

    +

    + +

    2-5. ORTEP 描画

    +

    +"Show ORTEP" コマンドは、下のようなウィンドウを開きます。 +

    +

    +

    +ORTEP 描画は、ORTEP-III プログラムで作成しています。この結果を使う時には、下のように引用してください。 +

    +
      +
    • +Burnett, M. N.; Johnson, C. K. ORTEP-III: Oak Ridge Thermal Ellipsoid Plot Program for Crystal Structure Illustrations, Oak Ridge National Laboratory Report ORNL-6895, 1996. +
    • +
    +

    +このウィンドウで、原子や結合の表示方法を指定することができます。分子の向きは、メインウィンドウでの向きとだいたい同じです(完全に同じとは言えませんが)。描画結果は、ORTEP 入力ファイルで書き出すことができます。また、グラフィックファイル(EPS, PNG, TIFF)で書き出すこともできます。ビットマップ型 (PNG, TIFF) で書き出す時には、解像度は 360 dpi になります。 +

    +

    +
    + +
    + +
    + + + +
    +

    Step Eleven: Using Embedded Ruby Interpreter

    +

    +One of the most useful features of Molby is the embedded Ruby interpreter. When working on molecular modeling, it is often necessary to modify the model according to some mathematical relations. It is also convenient if we can extract some molecular information by automated "scripts" (i.e. computer programs), and export as a text file that can be processed by graphing software. The embedded Ruby interpreter is very useful under these circumstances. Actually, many functions of Molby itself are implemented by Ruby scripts. +

    +

    +To use the embedded Ruby interpreter in Molby, you need to be familiar with the Ruby programming language. You can find several good on-line tutorials in the Internet. However, you can also get the idea by going through the following sections. +

    +

    1. Using the Ruby Console

    +

    +The Ruby console window is open when Molby starts up. +

    +

    +

    +On this window, you can execute Ruby scripts in an interactive manner. Let us try something on it now. Make the console window active by clicking on it, and type "1+2" followed by hitting the Return key. You will find this: +

    +

    % 1+2 +--> 3 +% +

    +

    +The Ruby interpreter calculated "1+2", and displayed the answer (3) in the following line. +

    +

    +You can give a longer expression including parenthesis. +

    +

    % (13.0*13.0+7.0*7.0)/1.365 +-->159.70695970696 +% +

    +

    +Or use common mathematical functions. +

    +

    % exp(-2.0) * (sin(0.25) + cos(0.25)) +-->0.1646105219232536 +% +

    +

    Usually in Ruby, you need to say Math.exp or Math.sin when using these mathematical functions. In Molby, the prefix Math is not necessary, because Molby automatically "includes" the Math module on startup.

    +

    +You can also use Strings, which is a series of characters. +

    +

    % "C" + "32" +-->"C32" +% +

    +

    +The "32" here is not a number but a string, because it is surrounded by quotation marks. If you omit these quotation marks, what happens? +

    +

    % "C" + 32 +

    +

    +

    +Molby complains with this error dialog. It says "no implicit conversion of Fixnum into String," which means the integer 32 cannot be added to a string "C". Such kind of "type mismatch" error occurs very often, so please get used to it and learn how to fix it. +

    +

    +Another useful feature of Ruby is an Array, which is an ordered collection of other Ruby objects. An array is expressed by comma-separated values surrounded by a pair of brackets. +

    +

    % [1, 2, 3] +-->[1, 2, 3] +% +

    +

    +Any Ruby object can be stored in a variable. The name of variables should begin with a lowercase alphabet and should consist of alphabets, number characters and underline "_". +

    +

    % a = ["apple", "orange", "grape"] +-->["apple", "orange", "grape"] +% a[0] # This shows how to access the array elements +-->"apple" +

    + +

    2. How to Handle Molecules in Molby Scripts

    +

    +The examples so far used only built-in types (Integer, String, Array) in Ruby, but you will definitely need to handle Molecules from your Molby scripts. Suppose we have a benzene molecule (again). +

    +

    +

    +What if you want to convert it to chlorobenzene? There are two GUI ways; double-click on the H1 atom, and enter "Cl" into the dialog box, or double-click on the "H" text in the "element" column of the property table and change it to "Cl". But there is also a "Ruby" way, as follows: +

    +

    % atoms[1].element = "Cl" +-->"Cl" +% +

    +

    +

    +This short piece of code implies some important concepts for coding in Molby. First, atoms denotes the atoms in the current molecule, which is the molecule in the frontmost window (except for the console window). atoms is not really an Array (as in the Ruby terminology), but can be used in a similar way as Array in many aspects. Specifically, it can be "indexed" to extract a specific atom. +

    +

    atoms[i] # Gives the i-th atom in the current molecule +

    +

    +Please make sure to say atoms[i], not atom[i]. This may be confusing, but it is because atoms is a collection of atoms and [] denotes "extraction of the i-th element." +

    +

    +The second point in the above example is .element = "Cl". In Ruby, a period (.) followed by a word (element) indicates a "method call." Method is a technical term in Ruby programming language; it is a function that is specific to an object. In this case, atoms[1] is an object, and it has a method named element= (including the last equal sign) whose meaning is "to change the element as indicated by the string value in the right side." In this way, the script atoms[1].element = "Cl" causes the element of the atom 1 changed to chlorine. +

    +

    +What if you want to change all hydrogen atoms to chlorine? Here is the code: +

    +

    % natoms.times { |i| if atoms[i].element == "H"; atoms[i].element = "Cl"; end } +-->12 +% +

    +

    +This is far more complicated than the previous example. A step-by-step explanation follows. +

    +

    +natoms gives the number of atoms in the current molecule as an integer number. This is actually a method call (natoms is a method of a Molecule object). Why a method is called even though no period is preceding the word? It is because Ruby has a feature called "implicit method call." This will be explained in more detail later. +

    +

    natoms # Gives 12 +

    +

    +times is a method of Integer (which is a built-in class of Ruby), which causes the following code surrounded by a pair of braces to be repeated the given number of times. +

    +

    natoms.times { ... } # { ... } is executed 12 times +

    +

    The code within the braces is called "block" in Ruby terminology.

    +

    +In the repeated code (or "block"), it is very likely that you want to know "how many times have I repeated?" This is achieved by declaring a variable name at the top of the block, surrounded by two vertical bars. +

    +

    natoms.times { |i| ... } # In { ... }, the variable i indicates the number of repeats +

    +

    +The following piece of codes is often used for testing. (puts prints the arguments to the console.) +

    +

    % natoms.times { |i| puts i } +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +-->12 +

    +

    +The "12" in the last line is the "result value" of the method times, and the numbers 0 to 11 are the outputs from the puts method. Now you can see the block was executed 12 times with changing the variable i from 0 to 11. +

    +

    +In the block, there is an if statement: +

    +

    if atoms[i].element == "H"; atoms[i].element = "Cl"; end +

    +

    +The if statement has the following general form: +

    +

    if <condition>; <statements>; end +

    +

    +The <condition> is evaluated first, and if it is "true", the <statements> are executed; otherwise the <statements> are skipped. +

    +

    +Note: Ruby interprets only false and nil as non-true values. Other values are all "true". Specifically, the number 0 (zero) and an empty string ("") are evaluated to "true" (this is unlike other programming language such as Perl). Many Ruby methods returns nil in case of failure; such methods are suitable for the condition part. +

    +

    +Finally, the element method in the following code is different from the element= method that we previously used: +

    +

    atoms[i].element == "H" +

    +

    +In this case, the following symbol is "==", which means "are these equal?". This is distinct from the symbol "=", which means "the right side is assigned to the left side." The element symbol is interpreted as the element= method only when it is followed by the assignment symbol "=". The above code is not the case, so that it is interpreted as the element method, which returns the present element symbol as a String. +

    +

    +After execution of the script, the molecule should look like this: +

    +

    + +

    3. About the "Implicit" Method Call

    +

    +In the preceding section, we saw that natoms was a method of a Molecule object. +

    +

    natoms # 12, in case of benzene +

    +

    +Why this symbol natoms is regarded as a method call? Actually, when the Ruby interpreter finds a symbol beginning with a lowercase alphabet, it looks for a (local) variable first, and if none is found, then it assumes that the symbol is a method belonging to the "current object". Since Ruby is an object-oriented language, there is always a "current object", which is denoted as self. We can see it on our console: +

    +

    % self +-->Molecule["unnamed1"] +% +

    +

    +This piece of code indicates that the "current object" is a Molecule object. In fact, the Molecule object corresponding to the frontmost window becomes the "current object" when a script is executed on the Molby console. +

    +

    When no molecule is open, the "current object" is "main", which is the standard toplevel object in Ruby.

    +

    +Sometimes you happen to define a variable with the same name as a method of Molecule. In that case, access to the variable is preferred and the method is no longer called. +

    +

    % natoms = 2 # Define a variable +-->2 +% natoms # Now this is an access to the variable, not a method call +-->2 +% +

    +

    +In this situation, you can explicitly request a method call by specifying self. +

    +

    % self.natoms # This is a method call +-->12 +% +

    +

    +A special case is the methods with the assignment symbol ("="). For example, a method show_hydrogens= can control whether the hydrogen atoms are shown or not. However, without specifying self, the expression is always regarded as the assignment to a local variable. Therefore, self should be always explicitly given. +

    +

    % show_hydrogens = false # This does not change the Molecule's state, just changes a local variable +-->false +% self.show_hydrogens = false # This changes the Molecule's state +-->false +% +

    +

    4. Executing a Ruby Script on a File

    +

    +From the Ruby console, you can only execute a one-line script. For more complex scripts, or if you want to use the script many times over, it will be more convenient to store the script in a file and execute it. The "Execute Script..." command in the "Script" menu does this job. +

    +

    +

    +There are endless possibilities for the script; here are presented only a few examples. The first script is to create a table of bond lengths including metal atoms (Fe): +

    +

    # Create a bond table including Fe +# Requires Molby +fp = open("bond_table.txt", "w") # Create an output file +atoms.each { |ap| # This is another way to repeat over all atoms; + # ap points to the atom on each iteration + if ap.element == "Fe" + r1 = ap.r # The cartesian coordinate of Fe + ap.connects.each { |n| # ap.connects is an array of atom indices connected to this atom + ap2 = atoms[n] # The atom connected to Fe + r2 = ap2.r # The cartesian coordinate of the atom + d = (r - r2).length # The bond length + fp.printf "%s-%s %.3f\n", ap.name, ap2.name, d # Write a table entry to the file + } # End loop (ap.connects) + end # End if +} # End loop (atoms.each) +fp.close # We are done with this file +

    +

    +Save this text to a file, select "Execute Script..." command (be sure that the target molecule is on the front), and choose the script file. After execution, a file named "bond_table.txt" will be generated in the same directory as the script file. +

    +

    +Here is another example, which works on a MD trajectory. For each frame, the molecule is reoriented so that the atom 0 is at the origin and atoms 1 and 2 are on the xy plane (with the atom 1 on the x-axis), and calculate the center of mass of the atoms 6 to 11. Such processing is useful to visualize how a particular part of the molecule moves around throughout the MD run. +

    +

    # Reorient the molecule and extract center of some group +# Requires Molby +fp = open("extract_group.txt", "w") # Create an output file +each_frame { |n| # This is an idiom to iterate over all frames + rotate_with_axis(1, 2, 0) # Reorientation of the molecule is so frequently used + # that the Molecule class has a method to do it + r = center_of_mass(6..11) # Also has a method to calculate the center of mass + fp.printf "%d %.6f %.6f %.6f\n", n, r.x, r.y, r.z # Write the coordinates +} +fp.close # We are done with this file +

    +

    +The last example generates a model of carbon nanotube with any chirality and length as you like. +

    +

    # Create a model of carbon nanotube +# Requires Molby +r = 1.42 # The C-C bond length +n = 10 # The default chirality index +m = 5 # (ibid) +aspect = 5.0 # The default aspect ratio (length / diameter) + +# Dialog to ask the chirality index and the aspect ratio +h = Dialog.run("Create Carbon Nanotube") { + layout(3, + item(:text, :title=>"Chirality Index"), + item(:textfield, :width=>80, :tag=>"n", :value=>n.to_s), + item(:textfield, :width=>80, :tag=>"m", :value=>m.to_s), + item(:text, :title=>"Aspect Ratio"), + item(:textfield, :width=>160, :tag=>"aspect", :value=>sprintf("%.1f", aspect)), + -1) +} + +exit if h[:status] != 0 +aspect = h["aspect"].to_f +n = h["n"].to_i +m = h["m"].to_i + +k = aspect / (PI * sqrt(3.0)) +points = [] +# The limiting points are (0, 0), (n, m), (k(n+2m), -k(2n+m)), (k(n+2m)+n, -k(2n+m)+n) +# Search for the lattice points that are within the parallelogram +# surrounded by the above points +# det is the determinant of the matrix that converts the unit cell to the above parallelogram +delta = 2 * k * (n * n + m * m + n * m) +(0..(k * (n + 2 * m) + n).ceil).each { |s| + ((-k * (2 * n + m)).floor..m).each { |t| + [0, 2.0/3.0].each { |d| # For two lattice points within the unit cell + ss = (k * (2 * n + m) * (s + d) + k * (n + 2 * m) * (t + d)) / delta + tt = (m * (s + d) - n * (t + d)) / delta + if ss >= 0.0 && ss < 1.0 && tt >= 0.0 && tt <= 1.0 + points.push([ss, tt, s, t]) # This point is within the parallelogram + end + } + } +} +# Create nanotube: line up [ss, tt] into cylindric shape +rad = sqrt(3.0) * r * sqrt(n * n + m * m + n * m) / (2 * PI) +len = rad * 2 * aspect +mol = Molecule.new +points.each { |p| + ap = mol.create_atom + ap.element = "C" + ap.atom_type = "ca" + ap.r = [rad * cos(2 * PI * p[0]), rad * sin(2 * PI * p[0]), len * p[1]] +} +mol.guess_bonds +# Show the result in a new window +mol2 = Molecule.open +mol2.add(mol) +

    +

    + +

    5. Where to Go from Here

    +

    +The embedded Ruby capability is very strong, and cannot be fully explained in this short tutorial. If you are interested, read carefully the reference of the Ruby extension. There are also many scripts in the Molby application, which you can examine by opening the "Scripts" folder (which is within the Application package in Mac OS X, and in the same folder as the Molby application in Windows). +

    +
    +
    +

    第十一段階:組み込み Ruby インタプリタを使う

    +

    +Molby の最も有用な機能の1つは、内蔵の Ruby インタプリタです。分子モデリングを行うとき、ある数学的な規則に従ってモデルを変更したいことがしばしばあります。また、分子のある種の情報を自動化された「スクリプト」(コンピュータプログラム)で抽出してテキストとして書き出し、グラフ描画ソフトウェアで処理することも有用です。内蔵 Ruby インタプリタは、このような場合に威力を発揮します。実は、Molby の機能の多くの部分は Ruby スクリプトで実装されているのです。 +

    +

    +Molby の内蔵 Ruby インタプリタを使うためには、プログラミング言語 Ruby の知識が必要です。インターネット上で良いオンラインチュートリアルを見つけてください。もっとも、以下の解説を読めば、ある程度のイメージはつかめるでしょう。 +

    +

    1. Ruby コンソールを使う

    +

    +Molby が起動すると、Ruby の「コンソールウィンドウ」が開きます。 +

    +

    +

    +このウィンドウ上で、Ruby スクリプトを対話的に実行することができます。いくつか試してみましょう。コンソールウィンドウをクリックしてアクティブにして、"1+2"、続いてリターンキーをタイプしてください。次のようになります。 +

    +

    % 1+2 +--> 3 +% +

    +

    +Ruby インタプリタが "1+2" を計算し、答え (3) を次の行に表示したところです。 +

    +

    +カッコを含む長い式も計算できます。 +

    +

    % (13.0*13.0+7.0*7.0)/1.365 +-->159.70695970696 +% +

    +

    +数学関数も使うことができます。 +

    +

    % exp(-2.0) * (sin(0.25) + cos(0.25)) +-->0.1646105219232536 +% +

    +

    通常 Ruby では、これらの数学関数を使うときには Math.exp, Math.sin のように書かなくてはなりません。Molby では、Math という接頭辞は必要ありません。これは Molby が起動時に Math モジュールを "include" するためです。

    +

    +文字列 (Strings) を使うこともできます。 +

    +

    % "C" + "32" +-->"C32" +% +

    +

    +ここの "32" は数ではなく文字列です。引用符で囲まれているからです。引用符を省略するとどうなるでしょう? +

    +

    % "C" + 32 +

    +

    +

    +Molby はエラーメッセージ "no implicit conversion of Fixnum into String" を表示します。これは、「整数」32 を「文字列」"C" に足すことはできないことを意味しています。このような「型が違う」エラーはとてもよく起きるので、どのように直せばいいかをよく理解しておいてください。 +

    +

    +Ruby のもう1つの便利な機能は「配列」(Array) です。これは、他の Ruby オブジェクトを順番に並べたものです。配列は、値をコンマで区切って角括弧 [] で囲むことで表します。 +

    +

    % [1, 2, 3] +-->[1, 2, 3] +% +

    +

    +Ruby のオブジェクトは「変数」に格納することができます。変数の名前は、小文字のアルファベットで始まり、数字またはアルファベット ("_" を含む) の並びでなくてはなりません。 +

    +

    % a = ["apple", "orange", "grape"] +-->["apple", "orange", "grape"] +% a[0] # 配列の要素を指定する +-->"apple" +

    + +

    2. Molby スクリプトで分子を扱う

    +

    +ここまでの例では、Ruby の組み込み型 Integer, String, Array を使ってきましたが、Molby スクリプトでは「分子」を扱うことが必要になります。ベンゼン分子があるとしましょう。 +

    +

    +

    +これをクロロベンゼンに変えたいとします。グラフィックインターフェイスでは2つのやり方があります。H1原子をダブルクリックしてダイアログボックスに "Cl" と入力するか、属性テーブルの "element" のセルで "H" を "Cl" に変えます。これを Ruby スクリプトで行うには、次のようにします。 +

    +

    % atoms[1].element = "Cl" +-->"Cl" +% +

    +

    +

    +この短いコードに、Molby でのコーディングの重要な技法が含まれています。まず、atoms は「現在の分子」(コンソールウィンドウを除いて最も手前側にあるウィンドウの分子)に含まれる原子の並びを表します。atoms は Ruby の配列 (Array) ではありませんが、多くの点で配列と同じように使うことができます。特に、「添字」をつけて特定の原子を指定することができます。 +

    +

    atoms[i] # 現在の分子の i 番目の原子 +

    +

    +atom[i] ではなく atoms[i] であることに注意してください。混乱しますが、これは atoms が原子の並びで [] が「…番目の要素を取り出す」という機能を表すためです。 +

    +

    +次は .element = "Cl" です。Ruby では、ピリオド (.) に続けて単語 (element) を書くと、「メソッド呼び出し」になります。「メソッド」とはプログラミング言語 Ruby の用語で、ある対象(オブジェクト)に固有の動作を指します。この場合は、atoms[1] がオブジェクトで、element= という名前のメソッドを持っています(最後の '=' を含みます)。このメソッドは、「その原子の元素記号を右辺の文字列で表されたものに変える」という働きをします。このようにして、スクリプト atoms[1].element = "Cl" は、原子1の元素記号を Cl に変えます。 +

    +

    +もし、全部の水素原子を塩素に変えたいとしたらどうでしょう? 次のようにします。 +

    +

    % natoms.times { |i| if atoms[i].element == "H"; atoms[i].element = "Cl"; end } +-->12 +% +

    +

    +これは前の例よりずっと複雑です。ステップごとに説明していきます。 +

    +

    +natoms は、現在の分子の原子数を整数で返します。これは実はメソッド呼び出しで、Molecule 型オブジェクトのメソッド natoms を呼んでいます。ピリオドがないのにメソッドが呼び出されているのはなぜでしょう? これは Ruby 言語の仕様に、「暗黙のメソッド呼び出し」があるためです。あとでもう少し詳しく説明します。 +

    +

    natoms # 12 となる +

    +

    +times は、Integer (これは Ruby の組み込み型です)のメソッドです。その後ろの中括弧 {} で囲まれたコードを、指定した回数実行します。 +

    +

    natoms.times { ... } # { ... } が 12 回実行される +

    +

    中括弧で囲んだコードを Ruby の用語で「ブロック」と呼びます。

    +

    +繰り返すコード(ブロック)の中で、「今実行しているのは何回目?」かを知りたいことがあります。このためには、ブロックの先頭で、2本の縦棒 "|" で囲んで変数を指定します。 +

    +

    natoms.times { |i| ... } # { ... } の中で、変数 i は繰り返し回数を表す +

    +

    +次のようなコードがテストのためによく使われます。(puts は与えられたオブジェクトをコンソールに出力します。) +

    +

    % natoms.times { |i| puts i } +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +-->12 +

    +

    +最後の行の "12" は、times メソッドの「戻り値」です。その上の 0 から 11 の数は、puts メソッドからの出力です。ブロックが 12 回実行され、変数 i が 0 から 11 まで変化したことがわかりますね。 +

    +

    +ブロックの中には、if 文があります。 +

    +

    if atoms[i].element == "H"; atoms[i].element = "Cl"; end +

    +

    +if 文の一般形は次の通りです。 +

    +

    if <条件>; <実行文>; end +

    +

    +まず <条件> が評価されます。それが「真」ならば、<実行文> が実行されます。条件が「真」でなければ、<実行文> はスキップされます。 +

    +

    +注: Ruby は false と nil だけを「真でない」値とします。その他の値はすべて「真」です。特に、数値の 0(ゼロ)と空の文字列 ("") も「真」となります(これは Perl などの他のプログラミング言語とは異なります)。多くの Ruby メソッドは、失敗したときに nil を返します。これらのメソッドは条件部分にそのまま使えます。 +

    +

    +最後に出てくる element メソッドは、先に出て来た element= メソッドとは違います。 +

    +

    atoms[i].element == "H" +

    +

    +この場合は、element の次に来る記号は "==" で、これは「2つの値は等しいか?」という意味です。この記号は "=" とは違います。後者は「右辺を左辺に代入する」という意味です。element という記号は、その次に "=" 記号が来るときに限って、"element=" メソッドとして解釈されます。この場合はそうではないので、element メソッドが呼び出されます。このメソッドは、現在の元素記号を String (文字列)として返します。 +

    +

    +スクリプトを実行したら、分子は次のようになるはずです。 +

    +

    + +

    3. 暗黙のメソッド呼び出し

    +

    +前の節で、natoms は Molecule オブジェクトのメソッドであることを学びました。 +

    +

    natoms # 12 (ベンゼンの場合) +

    +

    +なぜこの natoms はメソッド呼び出しと見なされるのでしょう? 実は、Ruby インタプリタ(Ruby スクリプトを実行するプログラム)は小文字のアルファベットで始まる単語を見つけると、まず変数(ローカル変数)を探し、それが見つからなければ「現在のオブジェクト」に属するメソッドであると見なすのです。Ruby は「オブジェクト指向言語」なので、Ruby スクリプトの実行中は必ず「現在のオブジェクト」が存在しています。これを self と呼びます。コンソールで試してみましょう: +

    +

    % self +-->Molecule["unnamed1"] +% +

    +

    +この結果は、「現在のオブジェクト」が "unnamed1" という分子を表す Molecule オブジェクトであることを示しています。Molby コンソールでスクリプトを実行する時は、最前面にあるウィンドウの分子に対応する Molecule オブジェクトが「現在のオブジェクト」になります。 +

    +

    分子のウィンドウが1つも開いていない時は、現在のオブジェクトは main になります。これは Ruby 起動時の「現在のオブジェクト」と同じものです。

    +

    +ときどき、Molecule が持つメソッド名と同じ名前の変数を作ってしまうことがあります。この場合、変数へのアクセスが優先されますので、メソッドを呼び出すことはできなくなります。 +

    +

    % natoms = 2 # 変数 natoms を定義 +-->2 +% natoms # これは変数へのアクセスになり、メソッド呼び出しではない +-->2 +% +

    +

    +この場合でも、self を指定すればメソッドを呼び出すことができます。 +

    +

    % self.natoms # これはメソッド呼び出し +-->12 +% +

    +

    +特に注意が必要なのは、代入記号 ("=") を持つメソッドです。例えば、show_hydrogens= というメソッドは、水素原子を表示するかどうかを指定するものです。しかし、self を使わないと、ローカル変数への代入になってしまいます。従って、この場合は常に self を指定する必要があります。 +

    +

    % show_hydrogens = false # これはローカル変数への代入で、分子の状態は変わらない +-->false +% self.show_hydrogens = false # これはメソッド呼び出しで、分子の状態を変える +-->false +% +

    +

    4. ファイル上の Ruby スクリプトを実行する

    +

    +Ruby コンソール上では、1行のスクリプトしか実行できません。もっと複雑なスクリプトを実行したい時や、同じスクリプトを何度も実行したい時は、ファイルにスクリプトを格納して実行する方が便利です。"Script" メニューの "Execute Script..." コマンドでこれが実現できます。 +

    +

    +

    +スクリプトには無限の可能性があります。いくつかの例をここに示します。最初のものは、「鉄原子を含む結合長のテーブルを作る」スクリプトです。 +

    +

    # Create a bond table including Fe +# Requires Molby +fp = open("bond_table.txt", "w") # Create an output file +atoms.each { |ap| # This is another way to repeat over all atoms; + # ap points to the atom on each iteration + if ap.element == "Fe" + r1 = ap.r # The cartesian coordinate of Fe + ap.connects.each { |n| # ap.connects is an array of atom indices connected to this atom + ap2 = atoms[n] # The atom connected to Fe + r2 = ap2.r # The cartesian coordinate of the atom + d = (r - r2).length # The bond length + fp.printf "%s-%s %.3f\n", ap.name, ap2.name, d # Write a table entry to the file + } # End loop (ap.connects) + end # End if +} # End loop (atoms.each) +fp.close # We are done with this file +

    +

    +このテキストをファイルに保存し、"Execute Script..." コマンドを実行し(目的の分子が一番前のウィンドウに表示されていることを確かめて)、スクリプトファイルを選びます。実行後、"bond_table.txt" というファイルが、スクリプトファイルと同じディレクトリに作成されています。 +

    +

    +次の例は、MD トラジェクトリを処理するものです。各フレームに対して、原子 0 が原点、原子 1, 2 が xy 平面上(原子 1 が x 軸上)に来るように分子を再配向して、原子 6 から 11 の重心を計算します。このような処理は、MD の結果分子のある部分がどのように動くかを可視化するのに便利です。 +

    +

    # Reorient the molecule and extract center of some group +# Requires Molby +fp = open("extract_group.txt", "w") # Create an output file +each_frame { |n| # This is an idiom to iterate over all frames + rotate_with_axis(1, 2, 0) # Reorientation of the molecule is so frequently used + # that the Molecule class has a method to do it + r = center_of_mass(6..11) # Also has a method to calculate the center of mass + fp.printf "%d %.6f %.6f %.6f\n", n, r.x, r.y, r.z # Write the coordinates +} +fp.close # We are done with this file +

    +

    +最後の例は、任意のキラリティ・長さのカーボンナノチューブのモデルを作成するスクリプトです。 +

    +

    # Create a model of carbon nanotube +# Requires Molby +r = 1.42 # The C-C bond length +n = 10 # The default chirality index +m = 5 # (ibid) +aspect = 5.0 # The default aspect ratio (length / diameter) + +# Dialog to ask the chirality index and the aspect ratio +h = Dialog.run("Create Carbon Nanotube") { + layout(3, + item(:text, :title=>"Chirality Index"), + item(:textfield, :width=>80, :tag=>"n", :value=>n.to_s), + item(:textfield, :width=>80, :tag=>"m", :value=>m.to_s), + item(:text, :title=>"Aspect Ratio"), + item(:textfield, :width=>160, :tag=>"aspect", :value=>sprintf("%.1f", aspect)), + -1) +} + +exit if h[:status] != 0 +aspect = h["aspect"].to_f +n = h["n"].to_i +m = h["m"].to_i + +k = aspect / (PI * sqrt(3.0)) +points = [] +# The limiting points are (0, 0), (n, m), (k(n+2m), -k(2n+m)), (k(n+2m)+n, -k(2n+m)+n) +# Search for the lattice points that are within the parallelogram +# surrounded by the above points +# det is the determinant of the matrix that converts the unit cell to the above parallelogram +delta = 2 * k * (n * n + m * m + n * m) +(0..(k * (n + 2 * m) + n).ceil).each { |s| + ((-k * (2 * n + m)).floor..m).each { |t| + [0, 2.0/3.0].each { |d| # For two lattice points within the unit cell + ss = (k * (2 * n + m) * (s + d) + k * (n + 2 * m) * (t + d)) / delta + tt = (m * (s + d) - n * (t + d)) / delta + if ss >= 0.0 && ss < 1.0 && tt >= 0.0 && tt <= 1.0 + points.push([ss, tt, s, t]) # This point is within the parallelogram + end + } + } +} +# Create nanotube: line up [ss, tt] into cylindric shape +rad = sqrt(3.0) * r * sqrt(n * n + m * m + n * m) / (2 * PI) +len = rad * 2 * aspect +mol = Molecule.new +points.each { |p| + ap = mol.create_atom + ap.element = "C" + ap.atom_type = "ca" + ap.r = [rad * cos(2 * PI * p[0]), rad * sin(2 * PI * p[0]), len * p[1]] +} +mol.guess_bonds +# Show the result in a new window +mol2 = Molecule.open +mol2.add(mol) +

    +

    + +

    5. 次に学ぶべきこと

    +

    +組み込み Ruby インタプリタは非常に強力であるため、この短いチュートリアルでは説明しきれません。興味があるなら、Ruby 拡張のリファレンス に目を通してください。また、Molby アプリケーション本体にはたくさんの Ruby スクリプトが内蔵されています。"Scripts" フォルダを参照してください(Mac OS X では Molby アプリケーションパッケージの中、Windows では Molby アプリケーションと同じフォルダにあります)。 +

    +
    + +
    + +
    + + + +
    +

    Appendix

    + +
    +
    +

    付録

    + +
    - +

    Ruby Extension Reference

    The following classes/module/exception are defined in the embedded Ruby interpreter in Molby. The methods defined in the module Kernel can be used as if they are builtin functions, like in the standard Ruby interpreter. All other classes and MolbyError exception are defined under the a module Molby. However, Molby:: prefix is not necessary because include Molby is invoked on startup.

    +

    +On startup, include Math is also invoked, so that the methods and constants in the Math module can also be used without prefix. +

    It is recommended for you to read the document of the most important class Molecule. Follow the links as necessary, and you will understand how other classes are defined and used.

    @@ -985,6 +2890,7 @@ It is recommended for you to read the document of the most important class Dialog
  • DialogItem
  • IntGroup
  • +
  • LAMatrix
  • MDArena
  • MolEnumerable
  • Molecule
  • @@ -997,6 +2903,7 @@ It is recommended for you to read the document of the most important class Module

    Exception

    +
    + + + +
    +

    Filter Kit How-to

    +

    +In the research of chemistry, we sometimes a simple processing of text files. Ruby is particularly suitable for such purposes. To make the use of Ruby easier, Molby provides a special capability called "filter kit" (version 0.6.4 and later). The name originates from the "UNIX" culture, where small programs for text processing are called "filters". +

    +

    +Here is a description of making a filter script. As a demonstration, the filter here is a very simple function; it appends a sequential line number on each line. +

    +

       

    +

    +To write a filter, we create a new text file, with extention ".rb" or ".mrb". Former is conventional as a Ruby script, but latter may be useful to specify Ruby scripts for Molby. +

    +

    +We start from the following line: +

    +

    Dialog.filter_kit("Filter Sample", "This is a sample filter.") { |args| +

    +

    +The method Dialog.filter_kit takes two arguments, the window title and the message. It also requires a block, which actually contains the main program. +

    +

    +When the user presses the "Select Files" button and choose files (which can be multiple), the block is executed with the array of the chosen file names as the argument. The block body is written as follows: +

    +

    1 Dialog.filter_kit("Filter Sample", "This is a sample filter.") { |args| + 2 args.each { |fname| + 3 fp = open(fname, "r") + 4 if fp == nil + 5 error_message_box("Cannot open file: #{arg}") + 6 next + 7 end + 8 puts fname + 9 a = fp.readlines + 10 fp.close + 11 File.rename(fname, fname + "~") + 12 fp2 = open(fname, "w") + 13 a.each_with_index { |ln, n| + 14 ln = (n + 1).to_s + " " + ln + 15 fp2.print ln + 16 } + 17 fp2.close + 18 } +

    +
      +
    • Line 2: The code in the following braces ({}) is repeated over all files.
    • +
    • Line 3: Open the file for reading.
    • +
    • Lines 4-7: If the file cannot be opened, then show the error message and continue to the next file.
    • +
    • Line 8: Display the filename as information. The output will be displayed in the text box within the filter dialog.
    • +
    • Line 9: Read all lines from the file and store in an array.
    • +
    • Line 10: Now we are done with this file, so close the file.
    • +
    • Line 11: Rename the file name with a tilda (~) at the end. (It is also possible to change the extension, for example; however, you need to learn about "regular expression" to write the code.)
    • +
    • Line 12: Open the file with the same name, this time for writing. We also need error handling for this operation as in line 4-7, which is omitted here for clarity.
    • +
    • Line 13: Repeat the following block (the code in the braces) for all elements in the array. The element and its index are given to the block as ln and n, respectively.
    • +
    • Line 14: Append the line number. (n + 1) denotes the line number (because the array index begins with zero), and to_s generates a String object from an Integer.
    • +
    • Line 15: Write the line to the file.
    • +
    • Line 17: Close the file.
    • +
    +

    +The above text is saved as "filter_sample.rb" (the filename can be arbitrary except for the extension). Open it with Molby, and you will get the filter running. +

    +
    +
    +

    Filter Kit の使い方

    +

    +化学の研究では、テキストファイルに簡単な処理を加えたいことがときどきあります。Ruby はこの目的に特に適しています。Ruby を簡単に使えるようにするため、Molby は "filter kit" という特別な機能を持っています(バージョン 0.6.4 以降)。Filter という名前は "UNIX" の文化から来ており、テキストを処理する小さなプログラムのことを指します。 +

    +

    +以下にフィルタスクリプトの作り方を解説します。説明のため、ごく単純な機能を持ったものを作ります。ファイルの各行に行番号をつけるものです。 +

    +

       

    +

    +フィルタを書くためには、新しいテキストファイルを作って、拡張子を ".rb" か ".mrb" とします。前者が Ruby スクリプトとして一般的なものですが、後者は Molby 専用のスクリプトを示すために使うことができます。 +

    +

    +まず次の行から始めます。 +

    +

    Dialog.filter_kit("Filter Sample", "This is a sample filter.") { |args| +

    +

    +Dialog.filter_kit というメソッドは2つの引数をとります。ウィンドウのタイトルと、メッセージです。この他にブロックが必要で、その中にメインプログラムを置きます。 +

    +

    +フィルタのユーザーが "Select Files" ボタンでファイルを選ぶと(複数のファイルを選択できます)、ブロックが実行され、選択されたファイル名の配列 (Array) が引数として渡されます。ブロックの本体は次のように書きます。 +

    +

    1 Dialog.filter_kit("Filter Sample", "This is a sample filter.") { |args| + 2 args.each { |fname| + 3 fp = open(fname, "r") + 4 if fp == nil + 5 error_message_box("Cannot open file: #{arg}") + 6 next + 7 end + 8 puts fname + 9 a = fp.readlines + 10 fp.close + 11 File.rename(fname, fname + "~") + 12 fp2 = open(fname, "w") + 13 a.each_with_index { |ln, n| + 14 ln = (n + 1).to_s + " " + ln + 15 fp2.print ln + 16 } + 17 fp2.close + 18 } +

    +
      +
    • 2行: 以下のブレース ({}) 内のコードを各ファイルに対して繰り返します。
    • +
    • 3行: ファイルを読み取り用にオープンします。
    • +
    • 4-7行: ファイルがオープンできなければ、エラーメッセージを表示して、次のファイルに進みます。
    • +
    • 8行: ファイル名を表示します。出力は、ダイアログの中のテキストボックスに表示されます。
    • +
    • 9行: ファイルのすべての行を読み込んで配列に格納します。
    • +
    • 10行: 読み込みが終わったので、ファイルを閉じます。
    • +
    • 11行: ファイル名の後ろにチルダ (~) をつけます。(たとえば拡張子を変更する、などの処理も可能ですが、コードを書くには「正規表現」を学ぶ必要があります。)
    • +
    • 12行: ファイルを同じ名前で、今度は書き込み用にオープンします。本当は 4-7 行と同じようにエラー処理が必要ですが、ここでは簡単のため省略してあります。
    • +
    • 13行: 以下のブロック(ブレース内のコード)を配列内のすべての要素(つまりすべての行)について繰り返します。配列要素(つまりそれぞれの行)とそのインデックスがそれぞれ ln and n としてブロックに渡されます。
    • +
    • 14行: 行番号をつけます。(n + 1) が行番号になります(インデックスは0から始まるため)。to_s は整数を文字列に変換します。
    • +
    • 15行: 行をファイルに書き出します。
    • +
    • 17行: ファイルを閉じて書き込みを完結します。
    • +
    +

    +上のテキストを "filter_sample.rb" として保存します(拡張子が正しければ、ファイル名は何でも構いません)。このファイルを Molby で開けば、フィルタとして使うことができます。 +

    +
    + +
    +