2010.1.25. AmberTools1.3 をバンドルする方向で検討中。antechamber と sqm だけあればいいはず。 config.h, Makefile_at を手動で修正。 src ディレクトリの中で、antechamber, blas, carpack, cblas, clapack, etc, f2c, include, lapack, lib, sff, sqm を残し、他は削除する。 make -f Makefile_at でビルド。 なお、Mac 用の gfortran は http://r.research.att.com/tools/ にあるやつがいい。hpc.sourceforge.net のやつはいろいろと使い方が複雑。 OS 10.4 用のユニバーサルバイナリは、export ISYSROOT='-isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -arch ppc -arch i386' としたあと make -f Makefile_at とすると作ることができる。MacBook 上でビルドして、PowerPC の 10.4 に持って行っても実行できたので、たぶん大丈夫じゃないかと。 原子タイプのアサインだけなら、antechamber を -c オプション無しで走らせればいいんだな。気がついてなかった。(どれぐらい使えるのかは不明だが。) 2010.2.2. MD/Minimize のサブスレッドの処理を整理(よくフリーズしていたので)。 サブスレッドから MM/MD をしているときは、指定したステップが終わるごとにリングバッファに座標データをためこみ、メインスレッドにイベントを投げる。メインスレッドはイベントを捕まえて、リングバッファから座標データを読み込んで、フレームを作成する。サブスレッドから Molecule を直接触ることがなくなったので、少しは安定すると期待しよう。また、ドキュメントを閉じるときにサブスレッドが走っている時は、エラーメッセージを出して閉じるのを拒否するようにした。 2010.2.21. Ruby の Parameter/ParEnumerable の仕様がわかりにくい。グローバルパラメータを自動的に探しに行く機能はlookup メソッドに限定する。Parameter#lookup(par_type, atom_type_string, *options), ParEnumerable#lookup(atom_type_string, *options). Parameter#bond, ParEnumerable#[] などで、原子タイプからの探索はやめにする。また、ローカルな Parameter の nbonds などがグローバルパラメータを含んだ値を返すのはやめる。 Parameter#bond などをクラスメソッド・インスタンスメソッドとして二重に登録するのはやめた。グローバルパラメータはたとえば Parameter.builtin.atoms または Parameter::Builtin.atoms としてアクセスする。 2010.2.27. Parameter タイプの atom というのはなんとも紛らわしい。element の方がまだましかも。 2010.3.8. RubyDialog って名前はよくないな。Ruby のクラス名に "Ruby" って接頭辞をつけてどうすんだよ。全体を Molby というモジュールにして、暗黙に include Molby することにしようか。これなら、RubyDialog は Dialog でもいい。 DialogItem を独立したクラスにしたいんだけど、オーナーシップをどうしようか? DialogItem は常に Dialog#item で作成されるので、このとき作ったオブジェクトを Dialog._items に格納し、常にそれを返す。従って、Dialog#get_item(n) で返されるオブジェクトは常に同一。 DialogItem は Dialog へのポインタとアイテム番号を保持すべき。アイテム番号はともかく、ポインタはどう保持するか? Dialog._items -> DialogItem -> Dialog という循環参照を作っても、Ruby の GC ならちゃんと回収してくれるから、これでいいんじゃないか。他のいい方法が思いつかん。 DialogItem は C レベルのデータは持たず、単なる cDialogItem のインスタンスとする。属性は、今まで Dialog 中のハッシュに保持していたが、DialogItem のインスタンス変数として実装する。 Dialog#item(:type, hash) でアイテムを作成。Dialog#set_attr, Dialog#get_attr はやめて、DialogItem#[], DialogItem#[]= で実装する。DialogItem#属性名, DialogItem#属性名= も実装する(ParameterRef と同様)。また、Dialog#action の引数はアイテム番号でなく DialogItem オブジェクトとする。 DialogItem の action 属性は今までと同様だが、引数としてはアイテム番号でなく DialogItem オブジェクトそのものが渡される。 2010.3.21. Pressure control を使えるようにしたい。フレームごとに unit cell パラメータを保持できるようにしないといけない。→ 一応実装した。 2010.4.25. SVN メモ。タグの付け方。 svn copy svn+ssh://toshinagata1964@svn.sourceforge.jp/svnroot/molby/trunk svn+ssh://toshinagata1964@svn.sourceforge.jp/svnroot/molby/tags/version_x_y_z -m "version x.y.z" 2010.4.25. wxWidgets 絡みの厄介なバグをいくつか退治したのでメモ。 ・wxDocument::Close() が二重に呼ばれる問題。メニューから Close コマンドを選ぶと、普通は wxDocManager::CloseDocument() が呼び出される。これは、最初に wxDocument::Close() を呼び、成功したら wxDocument::DeleteAllViews() を呼ぶのだが、この中から wxView::Close() -> wxView::OnClose() -> wxDocument::Close() という呼び出しがあるため、wxDocument::Close() が2回呼ばれてしまう。2回目に何もしないで true を返せばいいのだが、下手なコーディングをするとおかしくなってしまう。今回は、MoleculeView::OnClose() を修正して、wxDocument::Close() の呼び出しをスキップした。 参考: http://trac.wxwidgets.org/ticket/11367 ・wxDocument::Close() をオーバーライドしたら、元の wxDocument::Close() を呼ばないといけない。こんな感じ。 bool MyDocument::Close() { if (mol != NULL && mol->mutex != NULL) { return false; /* クローズを拒否 */ } return wxDocument::Close(); }  理由は、wxDocument::Close() の中で、未保存のドキュメントを保存するかどうか尋ねる処理があるため。これを忘れて "return true;" としてしまうと、未保存のドキュメントの場合は wxDocument のデストラクタからこの処理が呼ばれてしまい、変なことになる。 ・wxMac で wxMDIParentFrame を使うとき、frame->Move(-10000, -10000); frame->Show(false); などとして不可視にするが、すべてのウィンドウが閉じられている状態でアプリケーションをバックグラウンドからフォアグラウンドに持って来た時など、何かの拍子にこのウィンドウが可視化されて Window メニューに現れてしまうことがある。これを防ぐ方法: (1) wxMDIParentFrame のコンストラクタ中で、 #if defined(__WXMAC__) OSStatus sts; sts = ChangeWindowAttributes((WindowRef)m_macWindow, 0, kWindowInWindowMenuAttribute); #endif  ChangeWindowAttributes には が必要。ちなみに、Ruby のヘッダと同時に #include すると T_DATA が二重定義になるので、#include の前に #undef T_DATA を置く。 (2) wxApp で Activate Event をつかまえて、そのたびに wxMDIParentFrame を不可視にする。なんとも強引だが、確実。 EVT_ACTIVATE(MyApp::OnActivate) void MyApp::OnActivate(wxActivateEvent &event) { #if defined(__WXMAC__) MyFrame *frame = GetMainFrame(); frame->Show(false); #endif event.Skip(); } 2010.4.25. バージョン0.5.3をリリースしました。 ・フレームごとに可変な単位格子を設定可能。 ・パラメータテーブルのコピー/カット/ペーストを改善。 ・Mac 版で、隠れウィンドウの "Molby" がときどき Window メニューに現れる不具合を修正。 ・テーブルの編集時の不具合(Windows はクラッシュ、Mac はテキストフィールドが残ってしまう)の修正。 Version 0.5.3 is out. * Frames can now have variable unit cell parameters. * Improved handling of copy/cut/paste in the parameter table. * Fix the problem in the Mac version in which the hidden top-level window gets sometimes visible in the Window menu. * Bugs in the list control were (hopefully) fixed. 2010.4.29. 4/25 に修正した wxDocument::Close() 二重呼び出しの件、どうも修正の仕方がまずいみたいで、Windows でクラッシュを起こす。元に戻した。 2010.5.4. いろいろ変なクラッシュが起きる。malloc/free 関係のバグくさいのだが、なかなか特定できない。Mac 上では GuardMalloc を使い、MolAction.c:562 の - usave = *up; + ParameterCopyOneWithType(&usave, up, i); が原因と特定できた。つまり、up は BondPar/AnglePar/etc. の配列へのポインタを UnionPar * にキャストしたものなので、up が配列の最後の要素を指しているときに *up をアクセスすると、存在しないメモリ領域を読み出すことになってしまう。(これでバスエラーが起きるのは相当不運なケースだが)。 Windows の方は本当に困ってしまった。開発ツールへの投資をけちるとこういうところでつまづくんだな。チェック用ツールをいろいろ探して、kmmalloc (http://www.vector.co.jp/soft/dos/prog/se026997.html) を使うことにした。使い方は同梱の kmmalloc.txt に全部書いてあるのだが、少し手こずってしまったのでメモしておく。 ・インストールの仕方: (1) kmmalloc-2.5.3.zip をダウンロード、解凍。 (2) $ cd kmmalloc-2.5.3 (3) patch -c < mingw.dif (4) xalloc.h を編集して、次の5行を追加。 #define EFREEP 120 #define EFREEBLK 121 #define EALLOCBLK 122 #define EFREEWRT 123 #define ETRAILWRT 124 (5) mingw.mak を編集する。 -LIBDIR = /usr/local/lib +LIBDIR = /mingw/lib (6) make PACKAGE=KMMALLOC _MEM_DEBUG=1 -f mingw.mak  途中で一回「問題が発生したため、test_mem.exe を終了します。」というダイアログが出る。仕様なのか不具合なのか不明。 (7) mkdir /mingw/include/kmmalloc; cp xalloc.h yalloc.h /mingw/include/kmmalloc ・使い方 (1) ビルド時に -lkmmalloc_debug フラグをリンカに渡す。これで malloc/free/realloc が kmmalloc のものと置き換わる。 (2) 問題のソースに #include を入れておくと、malloc/free/realloc のコール時に __FILE__, __LINE__ を渡すようにしてくれるが、これをしなくてもデバッガを使えば何とかなる。 (3) export MEMCHECK=2 # kmmalloc のデバッグ機能を有効にする。ログを書き出すなら export MEMCHECK=4; export MEMFP=ファイル名 とする。 (4) デバッガで mem_error() 関数にブレークポイントを指定して実行。実行は非常に遅くなる場合がある(それほどでもない場合もある)。 (5) strdup, wcsdup 中の malloc はこの方法では置き換えられないようなので、自前で malloc を使うバージョンを用意して使う。(Missing.c 参照) → どうも wxWidgets の中の strdup コールはこれでは置き換わってくれないらしく、かえって変なことが起きているような気がする。kmmalloc.a をリンクする条件で wxWidgets を再コンパイルしないとだめか? → マルチスレッドに未対応? 無理かも… 2011.4.26.  GaussianW のフォーマットチェックポイントファイルが読めないことが判明。改行コードの問題だった。Molecule.c の sSeparateTokens() を修正して解決。  また、GaussianW では formchk で作ったファイルの拡張子が fch になるので、fch, fchk 両方とも Gaussian Checkpoint File として認識するように修正。 2011.4.26. バージョン 0.5.5 をリリース。 原子座標を修正したあとの MM/MD の不具合を修正。 wrap_unit_cell コマンドの不具合を修正。 単位格子が定義されているときに、周期的なイメージを表示する機能を実装。 周期境界条件での vdW/静電力計算の不具合を修正。 mbsf ファイルにスケール、配向などの表示に関する設定を保存。 MD パラメータがない分子に他の分子からのパラメータをペーストできない不具合を修正。 GaussianW の fch(k) ファイルが読めない不具合を修正。また、拡張子 ".fch" を Gaussian Checkpoint File として認識するよう設定。 Incomplete MM/MD re-initialization after modification of coordinates was fixed. The Ruby command wrap_unit_cell now works correctly. Periodic images can be displayed when a unit cell is defined. Wrong calculation of vdw/elect forces under periodic boundary conditions was fixed. The native format (mbsf) now preserves the display conditions, such as scale, orientation etc. Pasting MD parameters to a molecule with no parameters now works correctly. Importing GaussianW fch(k) files was not working; fixed. The extension ".fch" is now recognized as a Gaussian formatted checkpoint files. 2011.7.5. sander 用入力を作れるようにする。prmtop, inpcrd は一応作れるようになった。あとは sander の入力ファイル。関係ありそうな設定パラメータ: General flags imin = 0 (no minimization), 1 (minimization) ntx = 1 (read coords), 5 (read coords and velocities and box [if ntb>0]. velocities are used only if irest > 0. irest = 0 (no restart), 1 (restart) ntpr : every NTPR steps energy info are printed to mdout/mdinfo (default 50). ntwx : every ntwx steps coords are written to mdcrd (default 0: no output) Minimization and dynamics: maxcyc: maximum number of cycles of minimization nstlim: number of MD-steps to be performed dt: time step (psec). Recommended value is 0.002 when SHAKE is used or 0.001 otherwise. nrespa: frequency for calculation of slow forces. nrespa * dt > 0.004 causes instablitity. Temperature control: ntt: temperature control 0: constant energy, 1: constant temperature, 2: Andersen temperature, 3: Langevin dynamics temp0: target temperature tempi: initial temperature tautp: time constant for heat bath coupling. Should be 0.5-5.0ps. gamma_ln: collision frequency for Langevin dynamics. vlimit: limiting velocity, default 20. Pressure control: ntp: constant pressure dynamics 0: no pressure scaling, 1: isotropic position scaling, 2: anisotropic pressure scaling pres0: reference pressure (default 1 bar) taup: pressure relaxation time (default 1.0 ps) SHAKE constraint: ntc: SHAKE algorithm. generally ntf and ntc should be the same. 1: SHAKE is not perfomred, 2: bonds involving hydrogen are constrained, 3: all bonds are constrained Potential function parameters: ntf: force evaluation 1: complete interaction, 2: omit hydrogen (with ntc=2), 3: omit all bonds (with ntc=3) ntb: 0 (no periodicity), 1 (constant volume), 2 (constant pressure) cut: nonbonded cutoff, default 8.0 (for PME this is good); for igb > 0, larger values should be used Generalized Born/Surface Area: igb: 0 (no GB), 1 (Hawkins/Cramer/Truhlar GB), 2 (Onufriev/Bashford/Case GB), etc. extdiel: external dielectric constant. default 78.5. saltcon: salt concentraction (M), GB plus Debye-Huckel model. rgbmax: cutoff for estimation of effective Born radii. Default 25 A. gbsa: 0 (no surface area calc), 1 (LCPO surface area model), 2 (recursive approximation of spheres; used only in single point calc) surften: surface tension. default 0.005 kcal/mol/A^2 rdt: (only used in LES) sander -O -i min.in -o NAME.out -p NAME.prmtop -c NAME.inpcrd -x NAME.mdcrd -r NAME.restrt 2011.7.8.  MoleculeMerge(), MoleculeUnmerge() の仕様を見直した方がいい。undo サポート用に、bond/angle/dihedral/improper を指定した位置に入れる機能が欲しい。パラメータも、すべての種類のパラメータを指定した位置に入れる機能が必要。IntGroup の配列でパラメータを与えるか? 2011.7.29.  テーブルをクリックしてもフォーカスされないことがあっておかしいと思っていたのだが、発生条件をどうやら特定できた。セル編集中に MyGLCanvas をクリックしてそちらにフォーカスが移ると、テーブルをクリックしても MyGLCanvas からフォーカスが動かない。もう一度セルをダブルクリックして編集状態にすると正常に戻る。この症状は Windows では起こらない。修正する方法がなかなか見つからない。wxMac のソースを読んでも、Carbon だからよくわからんし。→ 編集状態でなくなった時に wxTextCtrl を Destroy するといいみたい。ただし、Windows ではこれでクラッシュすることがある(しないこともある)。よくわからんが、#ifdef で分けてしのぐことにした。 2011.7.30.  バージョン 0.5.6 をリリース。 Gaff, parm99 パラメータ: 結合長を小数点以下3桁まで有効にした。 Antechamber/parmchk ダイアログ(および Ruby で書かれたその他のダイアログ)のクラッシュを修正。 Ruby: 新しいメソッド: AtomRef#exclusion, Molecule#resize_to_fit, Molecule#bond_par/angle_par/dihedral_par/improper_par/vdw_par, $stdin.gets, $stdin.readline. 改良したメソッド: Molecule#each_atom, Molecule#duplicate, Molecule#open, Kernel#message_box, Dialog#item. 分子力学: 構造最適化計算の安定性が向上。"Solvate" コマンドで溶媒分子に "SOLV" セグメント名が付与されるようになった。 新しいメニューコマンド:"Create New Atom", "Create New Parameter", "Create SANDER Input", "Import AMBER Lib", "Import AMBER Frcmod". 新しいファイルフォーマット: cif(読み込み), AMBER mdcrd(読み込み)。 属性テーブルでのカット/コピー/ペーストの安定性が向上。 Mac: 属性テーブルがときどきフォーカスされない問題を解決。 Gaff and parm99 parameters: the equilibrium bond lengths have now three significant digits after the decimal point. Crash on antechamber/parmchk dialog (and other Ruby-based dialogs as well) is fixed. Ruby: New methods: AtomRef#exclusion, Molecule#resize_to_fit, Molecule#bond_par/angle_par/dihedral_par/improper_par/vdw_par, $stdin.gets, $stdin.readline. Improved: Molecule#each_atom, Molecule#duplicate, Molecule#open, Kernel#message_box, Dialog#item. MM/MD: minimization gets improved stability; the "solvate" command now sets the segment name 'SOLV' for the solvent atoms. New menu commands: "Create New Atom", "Create New Parameter", "Create SANDER Input", "Import AMBER Lib", "Import AMBER Frcmod". New file formats: cif (import), AMBER mdcrd (import). Tables: cut/copy/paste in parameter table is improved. Mac: table did not get focus under certain conditions; fixed. 2011.8.3. gfortran 絡みの厄介な問題を発見。AmberTools の resp, sqm が libgfortran.dylib をリンクしているため、実行時に libgfortran がないとクラッシュする。libgfortran.dylib を同梱して DYLD_LIBRARY_PATH を設定するのは一案だが、libgfortran.dylib が 8 MB もあるので、ちょっとどうかと思う。静的にリンクする方法をいろいろ探った。どうやら2つ方法がありそう。 (1) libgfortran.dylib をリネームして見えなくしてしまい、同じディレクトリの libgfortran.a を優先させる。 (2) libgfortran.a を libgfortran-static.a とリネームした上で、明示的にリンクオプションに記述する。-nodefaultlibs -lgfortran-static -lgcc -lc -lm -lSystem -lSystemStubs -lgfortranbegin -lgfortran-static だけではダメ。また、-static-gfortran も機能しない。 (1) の方が簡単だが、開発者が libgfortran.dylib に依存するバイナリを使っていると問題が起きるので、amber11 の Makefile に手を入れて (2) の方針でいく。変更しないといけないのは gfortran を使って実行ファイルを作っているところで、etc/Makefile の nucgen/ambpdb/resp, lib/Makefile の neww2oldparm, sqm/Makefile の sqm ターゲット。config.h に FLDFLAGS= -nodefaultlibs -lgfortran-static -lgcc -lc -lm -lSystem -lSystemStubs -lgfortranbegin という一行を加えて、上のそれぞれのコマンドラインに $(FLDFLAGS) を加えた。 なお、/usr/local/lib/libgfortran.a は、strip しておかないと "can't find atom for N_GSYM stabs" という警告が出る。次のようにする。 % cd /usr/local/lib % sudo cp libgfortran.a libgfortran-static.a % sudo strip -S libgfortran-static.a % sudo ranlib libgfortran-static.a 2011.8.3. 0.5.6.1 を公開。 Crash on running antechamber/parmchk on PPC Mac is (hopefully) fixed. Mac: resp and sqm (semiempirial QM calculation invoked by antechamber) caused crash unless gfortran is installed. To fix this, config.h/Makefiles for AmberTools is modified so that gfortran library is statically linked Occasionally, termination of the subprocess (like antechamber) was not detected properly, and the subprocess was left as a zombie. Improved, but may not be completely fixed. Loading GAMESS dat file now can be interrupted by ESC. Disable close box of RubyDialogFrame. On importing frcmod, atom type with a single character (like "c") was not recognized properly. Fixed. MO import from GAMESS log/dat files are implemented. ruby-1.8.7-p160.tar.gz is added (required for building) PPC Mac での antechamber/parmchk のクラッシュを修正。 Mac: resp, sqm(半経験的量子化学計算)のクラッシュを修正。AmberTools の config.h/Makefile を修正して gfortran のライブラリを静的リンクするようにした。 Antechamber などのサブプロセスの終了が検出できず、ゾンビになっていることがあった。一応修正したが、まだ問題があるかも。 GAMESS dat ファイルの読み込みが ESC で中断できるようになった。 RubyDialogFrame のクローズボタンをなくした。 Frcmod インポート(antechamber/parmchk 後の読み込みを含む)で、原子タイプが一文字のものを正しく読めるように修正。 GAMESS dat, log ファイルから MO を読み込むように修正。 2011.8.23. 0.5.6.2. Gaussian fchk のインポートができなくなっていた (0.5.6.1 で発生)。修正。 最後にコンパイルした日時を 'About' ダイアログで表示するようにした。 Amber mdcrd のインポートで、座標が8桁になる時にエラーが発生していたので修正。 構造最適化で時々クラッシュしていたのを修正。 Fchk import was broken (enbug in 0.5.6.1); fixed. Final compile date/time is now shown in the 'About' window. Fix mdcrd import to allow coordinates using full 8 digits (like -123.456 or 1234.567). Occasional crash during minimization is fixed. 2011.9.30.  Windows の文字コードで厄介なバグを発見。内部コードを UTF-8 にしているのだが、Dir.pwd などは Windows の内部コードそのもの(Shift-JIS?)で動作するので、Molecule#path などと矛盾が生じる。さらに、Ruby_FileStringValuePtr などは Shift-JIS を前提としているので、Molecule#path などもおかしな文字列を生成してしまう。このため、パスに日本語が入っていると open(mol.path + "/test.txt", "w") などがうまくいかない。さてどうしたものか? → wxConvUTF8 の代わりに Windows では *wxConvCurrent を使うようにした。 2011.10.06.  フレームの扱い。「何もフレームがない状態」でも、「現在の状態」は存在する訳だから、nframes = 1 であるべきなのではないか? ・フレームがない時は nframes = 1 とする。 ・nframes が 2 -> 1 になるとき、すべてのフレーム関係のメモリを解放する。 2011.10.15. Version 0.6 Mac: a command line version is included in the binary distribution. On Windows, Molby::{Mbsf,Resource,Script}Path return slash-separated strings instead of backslash-separated strings. The solvate command does not correctly remove conflicting solvent molecules. Fixed. Ruby: find_conflicts now exclude atom pairs separated by 0-3 bonds. export_prmtop can now be used from script Merging molecule was resulting in strange order of merged parameters. Fixed. Occasional crash on merging molecules is fixed. (Duplicating parameters was causing problems.) Some solvent box are included in Scripts/mbsf folder. MolbyResourcePath is now called Molby::ResourcePath (old name is still usable for backward compatibility). Molby::ScriptPath, Molby::MbsfPath are also implemented. rotate_with_axis now can accept atom indices or names as the first three arguments. Setting external forces during MM/MD is implemented. Special parameters with atom indices were not working. Fixed. Inserting/removing frames now work more consistently. The minimum number of frames is 1 instead of 0. Atoms to be excluded from MM/MD calculations can be specified by the atom property "mm_exclude." MM/MD calculation crashed when periodic cell is removed after calculation with non-nil cell. Fixed. On windows, Molecule#path, Molecule#dir does not work correctly when the path includes double-byte characters. Fixed. After MD run, coordinates are copied back to the molecule even when MD stopped abnormally. MDArena#init_velocities and MDArena#scale_velocities are implemented. Improved crd/mdcrd import. The 'r_eq14' parameter was not editable in the property table. Fixed. Crash occurs when a Ruby exception is raised while editing property table. Fixed. Ruby: Molecule#dup now duplicates the unit cell, symmetry operations, and MD settings. Remove 'build xxxxxxxx' string from the version description. AtomRef.exclusion causes bus error when the MDArena is not yet built. Fixed. After loading the molecule, occupancy factors are checked, and if all atoms have zero occupancy then all are set to 1.0. Ruby command get_coord_from_frame(index, group=nil, cflag=nil) is implemented. The MO info table is renamed to MO energy, and the alpha and beta orbitals of same indices are shown in the same row. MO import from GAMESS log file was broken Fchk import: zero is accepted as the number of alpha/beta electrons 2011.11.30. Version 0.6.1 Release Note 縮環構造をコピー・ペースト、および「ダブルクリック+構造入力」で作れるようにした。 さまざまな環構造(シクロアルカン、芳香族)と溶媒ボックスが「Open Predefined」メニューから開けるようにした。 CIFインポートを修正。計算で置いた水素原子を含む結合が表示されないことがあった。 分子動力学の dcd トラジェクトリファイルのインポートを実装。 AMBER の prmtop を作成する際に、AMBER8 コンパチブルなフォーマット(NAMD 等で使える)を指定可能。 Ring fusion can be performed by copy-paste or "double-click and type-in". Various ring structures (cycloalkanes, aromatics) and solvent boxes are accessible from "Open Predefined" menu. CIF import is improved, so that bonds including the calculated hydrogen atoms are created by guess. Import/export of dcd trajectory files is implemented. Creating AMBER input now allows to select between AMBER8 (also for NAMD) and AMBER11 formats. ChangeLog Document on ring fusion capability is written. Selection after ring fusion by 'double-click and type-in' now includes all atoms in the newly formed ring. Behavior of paste is improved when two dangling bonds are present in the fragment and the target molecule (i.e. ring fusion does work) Some typical cyclic structures as well as solvent boxes are now accessible from 'Open Predefined' menu. Ruby: Molecule object is now unique to each open molecule, i.e. the same Molecule object is returned when requested for the same molecule. Ring fusion (e.g. expanding benzene to naphthalene) is implemented; still experimental, but seems to be working. __FILE__ is now set to the script file during execute_script. Some cleanup to suppress warnings CIF import is improved, so that bonds including the calculated hydrogen atoms are created by guess. Ruby: Molecule#find_close_atoms is implemented. Enable undo for importing pdb and dcd. Import/export of dcd format is implemented. Creating AMBER input now allows to select between AMBER8 (also for NAMD) and AMBER11 formats. 2011.11.30. molby_doc.zip の作り方。OS X のコマンドラインで、Documents フォルダに cd したあと、 $ zip -r molby_doc.zip doc -x \*.DS_Store コマンドライン版の zip はリソースフォークなどを付加しないらしい。.DS_Store は残ってしまうので、それは明示的に除く。 2012.2.2. Version 0.6.2 Release note - グラフィックオブジェクトを分子に重ねて書けるようにした。ただし Ruby でのコーディングが必要。 - Ruby ダイアログでモードレスな動作ができるようにした。 - Ruby スクリプトの先頭行コメントに coding:shift-jis または coding:utf-8 が書けるようにした。今のところこの2つしか認識しない。 - Ruby の LAMatrix (linear algebra matrix) クラスを実装し、任意の行列演算ができるようにした。ドキュメントはまだ書いていない。 - Empty Console Window コマンドを実装。 - 分子動力学のドキュメントを作成。 - MM/MD で "log file" フィールドは明示的に指定しない限り空にするようにした。 - CIF ファイルの読み込みで、座標値の標準偏差を認識するようにした。ただしmbsfへの保存はされない。 - Graphic objects can be drawn together with the molecule (requires Ruby coding). - Modeless operation of Ruby Dialog is implemented. - The first comment line of the Ruby script (that is to be imported by "Execute Ruby Script" command) can now contain "coding:shift-jis" or "coding:utf-8" instruction. At present, only these two codings are recognized. - LAMatrix (linear algebra matrix) class is implemented in Ruby, which allow matrix arithmetic of arbitrary dimension. No document is provided yet. - Empty Console Window command is implemented. - Document for MD calculation is written. - Rms of crystallographic parameters (from the CIF file) are now kept in the molecule. Copying/saving of such parameters are not yet supported. ChangeLog - Document is updated to include new graphic objects in the model view. - Ruby: Molecule#make_front, set_name, get_view_rotation, get_view_scale, get_view_translation, set_view_rotation, set_view_scale, set_view_translation, set_graphic_color, hide_graphic, show_graphic are implemented. - Drawing custom graphics on the model view is implemented. - Ruby Dialog: modeless dialog is now implemented, and interval timer is implemented. - Ruby: $KCODE is set on startup, and coding:{shift-jis, utf-8} is recognized as the source code encoding (for executing script from file). - Molecule#all returns IntGroup[0] when the molecule is empty (it should return IntGroup[]), which causes crash on Molecule#delete. - Dialog#layout: the :align and :vertical_align options can now be specified as item attributes - The separator line in the Ruby Dialog was not working correctly. - Vector3D and Transform objects are converted to LAMatrix object with dimensions 3 or 4 depending upon the context. - LAMatrix#new errornously allows matrix with dimension 0. Fixed. - AtomRef#molecule is implemented. - Empty Console Window command is implemented. - LAMatrix.multiply was not working correctly when the first argument is a scalar. Fixed. - General matrix calculation (LAMatrix class in Ruby) is implemented. Seems to be working, but not documented yet. - In the document, navigation between the English/Japanese versions is possible in most pages. - Document for MD calculation is written. - The "log file" field is set to blank unless explicitly set by the user. - The structure Mat33 and Transform are now column-first arrangement (no change on Ruby interface and mbsf file format) - Rms of crystallographic parameters (from the CIF file) are now kept in the molecule. Copying/saving of such parameters are not yet supported. 2012.6.18. Version 0.6.3 リリースノート - LAMatrix クラスのドキュメントを作成。 - 量子化学計算ソフトウェアとの連携のドキュメントを作成。 - CIFファイルから読み込んだ座標値・異方性温度因子・セルパラメータの標準偏差を mbsf ファイルに保存するようにした。 - Ruby コマンド新設: Molecule#fit_coordinates, Molecule#amend_by_symmetry, Molecule#set(get)_view_center, Molecule#hidden_atoms, Molecule#set_hidden_atoms, Molecule#charge, Kernel#lookup_menu - Bond, angle などのテーブルから分子力学パラメータを編集するとき、Universal Force Field (UFF) で力の定数を見積もる機能をつけた。 - 分子力学パラメータを原子のインデックスで指定できるようにした(実はもともとあった機能だが、分子を編集してもパラメータが維持されるようになった)。 - その他バグ修正(ChangeLog を参照) - Document for the LAMatrix class was written. - Document for the collaboration with other quantum chemistry softwares was written. - Mbsf files now retain sigmas for the crystallographic parameters (imported from CIF). - New Ruby commands: Molecule#fit_coordinates, Molecule#amend_by_symmetry, Molecule#set(get)_view_center, Molecule#hidden_atoms, Molecule#set_hidden_atoms, Molecule#charge, Kernel#lookup_menu - When the MM parameters are edited from the bond/angle table, the force constant can be guessed by Universal Force Field (UFF). - The MM parameters can now be specified by explicit atom indices. - Other bug fixes (see the change log). ChangeLog - Features of Molecule#cell and Molecule#box are modified so that the handling of the sigma values of the cell parameters looks more consistent. - Mbsf format now retains anisotropic parameters and sigma (for crystallographic data) - Crash during creating bonds when ellipsoid display is on is fixed. - Ruby: Molecule#fit_coordinates is implemented. - LAMatrix#new, #zero, #submatrix now accept arguments in 'column,row' order. - MM forces are updated after 'run(0)' - Load/save mbsf files were broken when atom type variants were used for atom types with 3 or 4 characters. Fixed. - The order of parameters in cmd_edit_local_parameter_in_mainview dialog was inconsistent. Fixed. Also fixed Ruby exception in UFF guess dialog. - Molecule#transform, rotate, invert, etc. are now aware of symmetry related atoms. That is, the symmetry operation is updated so that the atoms are also symmetry related after transformation. - Ruby: AtomRef#symop can now be set from script. - Ruby: Molecule#amend_by_symmetry is implemented. - Ruby: Molecule#set(get)_view_translation is now obsolete and replaced by set(get)_view_center. - The order of the anisotropic thermal parameters is changed to 'b11, b22, b33, b12, b13, b23'. Inconsistency in some of the codes is fixed. TODO: when symmetry expansion is done, the anisotropic thermal parameters should be correctly converted. - Ruby: Molecule#hidden_atoms and Molecule#set_hidden_atoms are implemented. - The order of columns for MD parameters in the bond/angle/dihedral tables are changed, so that the columns appear in the same order as in the parameter table. - UFF parameter guess is implemented. - Molecule#neutralize was not working correctly. Fixed, and Molecule#charge was implemented. - The load/unload global parameters dialog is sometimes out of the screen. Fixed. - Windows version does not display last build date in the about dialog. Fixed. - Parameters now can be specified by using both explicit indices and atom types, like '7-ca-8'. - Parameter editing is improved. - Restructure MolAction.c. - Atom range specification for the vdw cutoff parameter is now made obsolete. - Vector3D[] and Transform[] are modified to accept an LAMatrix argument. The document is written for LAMatrix. - Load Script Menu caused crash when no window is open. Fixed. - Ruby: Kernel#lookup_menu is implemented. - Document is written for LAMatrix. - LAMatrix#multiply was not working correctly when on-the-fly size conversion was required. Fixed. - Execute Script command was broken. Fixed. - CIF import may fail when _geom_bond_site_symmetry_1 field is missing. Fixed. - Document was written for the collaboration with other quantum chemistry softwares. - .log and .out are both accepted as the extension of the Gaussian and GAMESS log files. - update_version.rb is improved.