2 AmberTools1.3 をバンドルする方向で検討中。antechamber と sqm だけあればいいはず。
4 config.h, Makefile_at を手動で修正。
5 src ディレクトリの中で、antechamber, blas, carpack, cblas, clapack, etc, f2c, include, lapack, lib, sff, sqm を残し、他は削除する。
7 make -f Makefile_at でビルド。
8 なお、Mac 用の gfortran は http://r.research.att.com/tools/ にあるやつがいい。hpc.sourceforge.net のやつはいろいろと使い方が複雑。
9 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 に持って行っても実行できたので、たぶん大丈夫じゃないかと。
10 原子タイプのアサインだけなら、antechamber を -c オプション無しで走らせればいいんだな。気がついてなかった。(どれぐらい使えるのかは不明だが。)
13 MD/Minimize のサブスレッドの処理を整理(よくフリーズしていたので)。
14 サブスレッドから MM/MD をしているときは、指定したステップが終わるごとにリングバッファに座標データをためこみ、メインスレッドにイベントを投げる。メインスレッドはイベントを捕まえて、リングバッファから座標データを読み込んで、フレームを作成する。サブスレッドから Molecule を直接触ることがなくなったので、少しは安定すると期待しよう。また、ドキュメントを閉じるときにサブスレッドが走っている時は、エラーメッセージを出して閉じるのを拒否するようにした。
17 Ruby の Parameter/ParEnumerable の仕様がわかりにくい。グローバルパラメータを自動的に探しに行く機能はlookup メソッドに限定する。Parameter#lookup(par_type, atom_type_string, *options), ParEnumerable#lookup(atom_type_string, *options).
18 Parameter#bond, ParEnumerable#[] などで、原子タイプからの探索はやめにする。また、ローカルな Parameter の nbonds などがグローバルパラメータを含んだ値を返すのはやめる。
19 Parameter#bond などをクラスメソッド・インスタンスメソッドとして二重に登録するのはやめた。グローバルパラメータはたとえば Parameter.builtin.atoms または Parameter::Builtin.atoms としてアクセスする。
22 Parameter タイプの atom というのはなんとも紛らわしい。element の方がまだましかも。
25 RubyDialog って名前はよくないな。Ruby のクラス名に "Ruby" って接頭辞をつけてどうすんだよ。全体を Molby というモジュールにして、暗黙に include Molby することにしようか。これなら、RubyDialog は Dialog でもいい。
26 DialogItem を独立したクラスにしたいんだけど、オーナーシップをどうしようか?
27 DialogItem は常に Dialog#item で作成されるので、このとき作ったオブジェクトを Dialog._items に格納し、常にそれを返す。従って、Dialog#get_item(n) で返されるオブジェクトは常に同一。
28 DialogItem は Dialog へのポインタとアイテム番号を保持すべき。アイテム番号はともかく、ポインタはどう保持するか? Dialog._items -> DialogItem -> Dialog という循環参照を作っても、Ruby の GC ならちゃんと回収してくれるから、これでいいんじゃないか。他のいい方法が思いつかん。
29 DialogItem は C レベルのデータは持たず、単なる cDialogItem のインスタンスとする。属性は、今まで Dialog 中のハッシュに保持していたが、DialogItem のインスタンス変数として実装する。
30 Dialog#item(:type, hash) でアイテムを作成。Dialog#set_attr, Dialog#get_attr はやめて、DialogItem#[], DialogItem#[]= で実装する。DialogItem#属性名, DialogItem#属性名= も実装する(ParameterRef と同様)。また、Dialog#action の引数はアイテム番号でなく DialogItem オブジェクトとする。
31 DialogItem の action 属性は今までと同様だが、引数としてはアイテム番号でなく DialogItem オブジェクトそのものが渡される。
34 Pressure control を使えるようにしたい。フレームごとに unit cell パラメータを保持できるようにしないといけない。→ 一応実装した。
38 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"
41 wxWidgets 絡みの厄介なバグをいくつか退治したのでメモ。
42 ・wxDocument::Close() が二重に呼ばれる問題。メニューから Close コマンドを選ぶと、普通は wxDocManager::CloseDocument() が呼び出される。これは、最初に wxDocument::Close() を呼び、成功したら wxDocument::DeleteAllViews() を呼ぶのだが、この中から wxView::Close() -> wxView::OnClose() -> wxDocument::Close() という呼び出しがあるため、wxDocument::Close() が2回呼ばれてしまう。2回目に何もしないで true を返せばいいのだが、下手なコーディングをするとおかしくなってしまう。今回は、MoleculeView::OnClose() を修正して、wxDocument::Close() の呼び出しをスキップした。
43 参考: http://trac.wxwidgets.org/ticket/11367
44 ・wxDocument::Close() をオーバーライドしたら、元の wxDocument::Close() を呼ばないといけない。こんな感じ。
48 if (mol != NULL && mol->mutex != NULL) {
49 return false; /* クローズを拒否 */
51 return wxDocument::Close();
53 理由は、wxDocument::Close() の中で、未保存のドキュメントを保存するかどうか尋ねる処理があるため。これを忘れて "return true;" としてしまうと、未保存のドキュメントの場合は wxDocument のデストラクタからこの処理が呼ばれてしまい、変なことになる。
54 ・wxMac で wxMDIParentFrame を使うとき、frame->Move(-10000, -10000); frame->Show(false); などとして不可視にするが、すべてのウィンドウが閉じられている状態でアプリケーションをバックグラウンドからフォアグラウンドに持って来た時など、何かの拍子にこのウィンドウが可視化されて Window メニューに現れてしまうことがある。これを防ぐ方法:
55 (1) wxMDIParentFrame のコンストラクタ中で、
56 #if defined(__WXMAC__)
58 sts = ChangeWindowAttributes((WindowRef)m_macWindow, 0, kWindowInWindowMenuAttribute);
60 ChangeWindowAttributes には <Carbon/Carbon.h> が必要。ちなみに、Ruby のヘッダと同時に #include すると T_DATA が二重定義になるので、#include <Carbon/Carbon.h> の前に #undef T_DATA を置く。
61 (2) wxApp で Activate Event をつかまえて、そのたびに wxMDIParentFrame を不可視にする。なんとも強引だが、確実。
62 EVT_ACTIVATE(MyApp::OnActivate)
64 MyApp::OnActivate(wxActivateEvent &event)
66 #if defined(__WXMAC__)
67 MyFrame *frame = GetMainFrame();
76 ・パラメータテーブルのコピー/カット/ペーストを改善。
77 ・Mac 版で、隠れウィンドウの "Molby" がときどき Window メニューに現れる不具合を修正。
78 ・テーブルの編集時の不具合(Windows はクラッシュ、Mac はテキストフィールドが残ってしまう)の修正。
80 * Frames can now have variable unit cell parameters.
81 * Improved handling of copy/cut/paste in the parameter table.
82 * Fix the problem in the Mac version in which the hidden top-level window gets sometimes visible in the Window menu.
83 * Bugs in the list control were (hopefully) fixed.
86 4/25 に修正した wxDocument::Close() 二重呼び出しの件、どうも修正の仕方がまずいみたいで、Windows でクラッシュを起こす。元に戻した。
89 いろいろ変なクラッシュが起きる。malloc/free 関係のバグくさいのだが、なかなか特定できない。Mac 上では GuardMalloc を使い、MolAction.c:562 の
91 + ParameterCopyOneWithType(&usave, up, i);
92 が原因と特定できた。つまり、up は BondPar/AnglePar/etc. の配列へのポインタを UnionPar * にキャストしたものなので、up が配列の最後の要素を指しているときに *up をアクセスすると、存在しないメモリ領域を読み出すことになってしまう。(これでバスエラーが起きるのは相当不運なケースだが)。
93 Windows の方は本当に困ってしまった。開発ツールへの投資をけちるとこういうところでつまづくんだな。チェック用ツールをいろいろ探して、kmmalloc (http://www.vector.co.jp/soft/dos/prog/se026997.html) を使うことにした。使い方は同梱の kmmalloc.txt に全部書いてあるのだが、少し手こずってしまったのでメモしておく。
95 (1) kmmalloc-2.5.3.zip をダウンロード、解凍。
96 (2) $ cd kmmalloc-2.5.3
97 (3) patch -c < mingw.dif
98 (4) xalloc.h を編集して、次の5行を追加。
101 #define EALLOCBLK 122
103 #define ETRAILWRT 124
105 -LIBDIR = /usr/local/lib
107 (6) make PACKAGE=KMMALLOC _MEM_DEBUG=1 -f mingw.mak
108 途中で一回「問題が発生したため、test_mem.exe を終了します。」というダイアログが出る。仕様なのか不具合なのか不明。
109 (7) mkdir /mingw/include/kmmalloc; cp xalloc.h yalloc.h /mingw/include/kmmalloc
111 (1) ビルド時に -lkmmalloc_debug フラグをリンカに渡す。これで malloc/free/realloc が kmmalloc のものと置き換わる。
112 (2) 問題のソースに #include <kmmalloc/xalloc.h> を入れておくと、malloc/free/realloc のコール時に __FILE__, __LINE__ を渡すようにしてくれるが、これをしなくてもデバッガを使えば何とかなる。
113 (3) export MEMCHECK=2 # kmmalloc のデバッグ機能を有効にする。ログを書き出すなら export MEMCHECK=4; export MEMFP=ファイル名 とする。
114 (4) デバッガで mem_error() 関数にブレークポイントを指定して実行。実行は非常に遅くなる場合がある(それほどでもない場合もある)。
115 (5) strdup, wcsdup 中の malloc はこの方法では置き換えられないようなので、自前で malloc を使うバージョンを用意して使う。(Missing.c 参照) → どうも wxWidgets の中の strdup コールはこれでは置き換わってくれないらしく、かえって変なことが起きているような気がする。kmmalloc.a をリンクする条件で wxWidgets を再コンパイルしないとだめか? → マルチスレッドに未対応? 無理かも…
118 GaussianW のフォーマットチェックポイントファイルが読めないことが判明。改行コードの問題だった。Molecule.c の sSeparateTokens() を修正して解決。
119 また、GaussianW では formchk で作ったファイルの拡張子が fch になるので、fch, fchk 両方とも Gaussian Checkpoint File として認識するように修正。
124 原子座標を修正したあとの MM/MD の不具合を修正。
125 wrap_unit_cell コマンドの不具合を修正。
126 単位格子が定義されているときに、周期的なイメージを表示する機能を実装。
127 周期境界条件での vdW/静電力計算の不具合を修正。
128 mbsf ファイルにスケール、配向などの表示に関する設定を保存。
129 MD パラメータがない分子に他の分子からのパラメータをペーストできない不具合を修正。
130 GaussianW の fch(k) ファイルが読めない不具合を修正。また、拡張子 ".fch" を Gaussian Checkpoint File として認識するよう設定。
132 Incomplete MM/MD re-initialization after modification of coordinates was fixed.
133 The Ruby command wrap_unit_cell now works correctly.
134 Periodic images can be displayed when a unit cell is defined.
135 Wrong calculation of vdw/elect forces under periodic boundary conditions was fixed.
136 The native format (mbsf) now preserves the display conditions, such as scale, orientation etc.
137 Pasting MD parameters to a molecule with no parameters now works correctly.
138 Importing GaussianW fch(k) files was not working; fixed. The extension ".fch" is now recognized as a Gaussian formatted checkpoint files.
141 sander 用入力を作れるようにする。prmtop, inpcrd は一応作れるようになった。あとは sander の入力ファイル。関係ありそうな設定パラメータ:
144 imin = 0 (no minimization), 1 (minimization)
145 ntx = 1 (read coords), 5 (read coords and velocities and box [if ntb>0]. velocities are used only if irest > 0.
146 irest = 0 (no restart), 1 (restart)
147 ntpr : every NTPR steps energy info are printed to mdout/mdinfo (default 50).
148 ntwx : every ntwx steps coords are written to mdcrd (default 0: no output)
150 Minimization and dynamics:
151 maxcyc: maximum number of cycles of minimization
152 nstlim: number of MD-steps to be performed
153 dt: time step (psec). Recommended value is 0.002 when SHAKE is used or 0.001 otherwise.
154 nrespa: frequency for calculation of slow forces. nrespa * dt > 0.004 causes instablitity.
157 ntt: temperature control 0: constant energy, 1: constant temperature, 2: Andersen temperature, 3: Langevin dynamics
158 temp0: target temperature
159 tempi: initial temperature
160 tautp: time constant for heat bath coupling. Should be 0.5-5.0ps.
161 gamma_ln: collision frequency for Langevin dynamics.
162 vlimit: limiting velocity, default 20.
165 ntp: constant pressure dynamics 0: no pressure scaling, 1: isotropic position scaling, 2: anisotropic pressure scaling
166 pres0: reference pressure (default 1 bar)
167 taup: pressure relaxation time (default 1.0 ps)
170 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
172 Potential function parameters:
173 ntf: force evaluation 1: complete interaction, 2: omit hydrogen (with ntc=2), 3: omit all bonds (with ntc=3)
174 ntb: 0 (no periodicity), 1 (constant volume), 2 (constant pressure)
175 cut: nonbonded cutoff, default 8.0 (for PME this is good); for igb > 0, larger values should be used
177 Generalized Born/Surface Area:
178 igb: 0 (no GB), 1 (Hawkins/Cramer/Truhlar GB), 2 (Onufriev/Bashford/Case GB), etc.
179 extdiel: external dielectric constant. default 78.5.
180 saltcon: salt concentraction (M), GB plus Debye-Huckel model.
181 rgbmax: cutoff for estimation of effective Born radii. Default 25 A.
182 gbsa: 0 (no surface area calc), 1 (LCPO surface area model), 2 (recursive approximation of spheres; used only in single point calc)
183 surften: surface tension. default 0.005 kcal/mol/A^2
184 rdt: (only used in LES)
186 sander -O -i min.in -o NAME.out -p NAME.prmtop -c NAME.inpcrd -x NAME.mdcrd -r NAME.restrt
189 MoleculeMerge(), MoleculeUnmerge() の仕様を見直した方がいい。undo サポート用に、bond/angle/dihedral/improper を指定した位置に入れる機能が欲しい。パラメータも、すべての種類のパラメータを指定した位置に入れる機能が必要。IntGroup の配列でパラメータを与えるか?
192 テーブルをクリックしてもフォーカスされないことがあっておかしいと思っていたのだが、発生条件をどうやら特定できた。セル編集中に MyGLCanvas をクリックしてそちらにフォーカスが移ると、テーブルをクリックしても MyGLCanvas からフォーカスが動かない。もう一度セルをダブルクリックして編集状態にすると正常に戻る。この症状は Windows では起こらない。修正する方法がなかなか見つからない。wxMac のソースを読んでも、Carbon だからよくわからんし。→ 編集状態でなくなった時に wxTextCtrl を Destroy するといいみたい。ただし、Windows ではこれでクラッシュすることがある(しないこともある)。よくわからんが、#ifdef で分けてしのぐことにした。
197 Gaff, parm99 パラメータ: 結合長を小数点以下3桁まで有効にした。
198 Antechamber/parmchk ダイアログ(および Ruby で書かれたその他のダイアログ)のクラッシュを修正。
199 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.
200 分子力学: 構造最適化計算の安定性が向上。"Solvate" コマンドで溶媒分子に "SOLV" セグメント名が付与されるようになった。
201 新しいメニューコマンド:"Create New Atom", "Create New Parameter", "Create SANDER Input", "Import AMBER Lib", "Import AMBER Frcmod".
202 新しいファイルフォーマット: cif(読み込み), AMBER mdcrd(読み込み)。
203 属性テーブルでのカット/コピー/ペーストの安定性が向上。
204 Mac: 属性テーブルがときどきフォーカスされない問題を解決。
206 Gaff and parm99 parameters: the equilibrium bond lengths have now three significant digits after the decimal point.
207 Crash on antechamber/parmchk dialog (and other Ruby-based dialogs as well) is fixed.
208 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.
209 MM/MD: minimization gets improved stability; the "solvate" command now sets the segment name 'SOLV' for the solvent atoms.
210 New menu commands: "Create New Atom", "Create New Parameter", "Create SANDER Input", "Import AMBER Lib", "Import AMBER Frcmod".
211 New file formats: cif (import), AMBER mdcrd (import).
212 Tables: cut/copy/paste in parameter table is improved. Mac: table did not get focus under certain conditions; fixed.
215 gfortran 絡みの厄介な問題を発見。AmberTools の resp, sqm が libgfortran.dylib をリンクしているため、実行時に libgfortran がないとクラッシュする。libgfortran.dylib を同梱して DYLD_LIBRARY_PATH を設定するのは一案だが、libgfortran.dylib が 8 MB もあるので、ちょっとどうかと思う。静的にリンクする方法をいろいろ探った。どうやら2つ方法がありそう。
216 (1) libgfortran.dylib をリネームして見えなくしてしまい、同じディレクトリの libgfortran.a を優先させる。
217 (2) libgfortran.a を libgfortran-static.a とリネームした上で、明示的にリンクオプションに記述する。-nodefaultlibs -lgfortran-static -lgcc -lc -lm -lSystem -lSystemStubs -lgfortranbegin
218 -lgfortran-static だけではダメ。また、-static-gfortran も機能しない。
220 (1) の方が簡単だが、開発者が libgfortran.dylib に依存するバイナリを使っていると問題が起きるので、amber11 の Makefile に手を入れて (2) の方針でいく。変更しないといけないのは gfortran を使って実行ファイルを作っているところで、etc/Makefile の nucgen/ambpdb/resp, lib/Makefile の neww2oldparm, sqm/Makefile の sqm ターゲット。config.h に
221 FLDFLAGS= -nodefaultlibs -lgfortran-static -lgcc -lc -lm -lSystem -lSystemStubs -lgfortranbegin
222 という一行を加えて、上のそれぞれのコマンドラインに $(FLDFLAGS) を加えた。
224 なお、/usr/local/lib/libgfortran.a は、strip しておかないと "can't find atom for N_GSYM stabs" という警告が出る。次のようにする。
226 % sudo cp libgfortran.a libgfortran-static.a
227 % sudo strip -S libgfortran-static.a
228 % sudo ranlib libgfortran-static.a
233 Crash on running antechamber/parmchk on PPC Mac is (hopefully) fixed.
234 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
235 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.
236 Loading GAMESS dat file now can be interrupted by ESC.
237 Disable close box of RubyDialogFrame.
238 On importing frcmod, atom type with a single character (like "c") was not recognized properly. Fixed.
239 MO import from GAMESS log/dat files are implemented.
240 ruby-1.8.7-p160.tar.gz is added (required for building)
242 PPC Mac での antechamber/parmchk のクラッシュを修正。
243 Mac: resp, sqm(半経験的量子化学計算)のクラッシュを修正。AmberTools の config.h/Makefile を修正して gfortran のライブラリを静的リンクするようにした。
244 Antechamber などのサブプロセスの終了が検出できず、ゾンビになっていることがあった。一応修正したが、まだ問題があるかも。
245 GAMESS dat ファイルの読み込みが ESC で中断できるようになった。
246 RubyDialogFrame のクローズボタンをなくした。
247 Frcmod インポート(antechamber/parmchk 後の読み込みを含む)で、原子タイプが一文字のものを正しく読めるように修正。
248 GAMESS dat, log ファイルから MO を読み込むように修正。
253 Gaussian fchk のインポートができなくなっていた (0.5.6.1 で発生)。修正。
254 最後にコンパイルした日時を 'About' ダイアログで表示するようにした。
255 Amber mdcrd のインポートで、座標が8桁になる時にエラーが発生していたので修正。
256 構造最適化で時々クラッシュしていたのを修正。
258 Fchk import was broken (enbug in 0.5.6.1); fixed.
259 Final compile date/time is now shown in the 'About' window.
260 Fix mdcrd import to allow coordinates using full 8 digits (like -123.456 or 1234.567).
261 Occasional crash during minimization is fixed.
264 Windows の文字コードで厄介なバグを発見。内部コードを UTF-8 にしているのだが、Dir.pwd などは Windows の内部コードそのもの(Shift-JIS?)で動作するので、Molecule#path などと矛盾が生じる。さらに、Ruby_FileStringValuePtr などは Shift-JIS を前提としているので、Molecule#path などもおかしな文字列を生成してしまう。このため、パスに日本語が入っていると open(mol.path + "/test.txt", "w") などがうまくいかない。さてどうしたものか?
265 → wxConvUTF8 の代わりに Windows では *wxConvCurrent を使うようにした。
268 フレームの扱い。「何もフレームがない状態」でも、「現在の状態」は存在する訳だから、nframes = 1 であるべきなのではないか?
269 ・フレームがない時は nframes = 1 とする。
270 ・nframes が 2 -> 1 になるとき、すべてのフレーム関係のメモリを解放する。
274 Mac: a command line version is included in the binary distribution.
275 On Windows, Molby::{Mbsf,Resource,Script}Path return slash-separated strings instead of backslash-separated strings.
276 The solvate command does not correctly remove conflicting solvent molecules. Fixed.
277 Ruby: find_conflicts now exclude atom pairs separated by 0-3 bonds.
278 export_prmtop can now be used from script
279 Merging molecule was resulting in strange order of merged parameters. Fixed.
280 Occasional crash on merging molecules is fixed. (Duplicating parameters was causing problems.)
281 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.
282 rotate_with_axis now can accept atom indices or names as the first three arguments.
283 Setting external forces during MM/MD is implemented.
284 Special parameters with atom indices were not working. Fixed.
285 Inserting/removing frames now work more consistently. The minimum number of frames is 1 instead of 0.
286 Atoms to be excluded from MM/MD calculations can be specified by the atom property "mm_exclude."
287 MM/MD calculation crashed when periodic cell is removed after calculation with non-nil cell. Fixed.
288 On windows, Molecule#path, Molecule#dir does not work correctly when the path includes double-byte characters. Fixed.
289 After MD run, coordinates are copied back to the molecule even when MD stopped abnormally.
290 MDArena#init_velocities and MDArena#scale_velocities are implemented.
291 Improved crd/mdcrd import.
292 The 'r_eq14' parameter was not editable in the property table. Fixed.
293 Crash occurs when a Ruby exception is raised while editing property table. Fixed.
294 Ruby: Molecule#dup now duplicates the unit cell, symmetry operations, and MD settings.
295 Remove 'build xxxxxxxx' string from the version description.
296 AtomRef.exclusion causes bus error when the MDArena is not yet built. Fixed.
297 After loading the molecule, occupancy factors are checked, and if all atoms have zero occupancy then all are set to 1.0.
298 Ruby command get_coord_from_frame(index, group=nil, cflag=nil) is implemented.
299 The MO info table is renamed to MO energy, and the alpha and beta orbitals of same indices are shown in the same row.
300 MO import from GAMESS log file was broken
301 Fchk import: zero is accepted as the number of alpha/beta electrons
306 縮環構造をコピー・ペースト、および「ダブルクリック+構造入力」で作れるようにした。
307 さまざまな環構造(シクロアルカン、芳香族)と溶媒ボックスが「Open Predefined」メニューから開けるようにした。
308 CIFインポートを修正。計算で置いた水素原子を含む結合が表示されないことがあった。
309 分子動力学の dcd トラジェクトリファイルのインポートを実装。
310 AMBER の prmtop を作成する際に、AMBER8 コンパチブルなフォーマット(NAMD 等で使える)を指定可能。
312 Ring fusion can be performed by copy-paste or "double-click and type-in".
313 Various ring structures (cycloalkanes, aromatics) and solvent boxes are accessible from "Open Predefined" menu.
314 CIF import is improved, so that bonds including the calculated hydrogen atoms are created by guess.
315 Import/export of dcd trajectory files is implemented.
316 Creating AMBER input now allows to select between AMBER8 (also for NAMD) and AMBER11 formats.
319 Document on ring fusion capability is written.
320 Selection after ring fusion by 'double-click and type-in' now includes all atoms in the newly formed ring.
321 Behavior of paste is improved when two dangling bonds are present in the fragment and the target molecule (i.e. ring fusion does work)
322 Some typical cyclic structures as well as solvent boxes are now accessible from 'Open Predefined' menu.
323 Ruby: Molecule object is now unique to each open molecule, i.e. the same Molecule object is returned when requested for the same molecule.
324 Ring fusion (e.g. expanding benzene to naphthalene) is implemented; still experimental, but seems to be working.
325 __FILE__ is now set to the script file during execute_script.
326 Some cleanup to suppress warnings
327 CIF import is improved, so that bonds including the calculated hydrogen atoms are created by guess.
328 Ruby: Molecule#find_close_atoms is implemented.
329 Enable undo for importing pdb and dcd.
330 Import/export of dcd format is implemented.
331 Creating AMBER input now allows to select between AMBER8 (also for NAMD) and AMBER11 formats.
334 molby_doc.zip の作り方。OS X のコマンドラインで、Documents フォルダに cd したあと、
335 $ zip -r molby_doc.zip doc -x \*.DS_Store
336 コマンドライン版の zip はリソースフォークなどを付加しないらしい。.DS_Store は残ってしまうので、それは明示的に除く。
342 - グラフィックオブジェクトを分子に重ねて書けるようにした。ただし Ruby でのコーディングが必要。
343 - Ruby ダイアログでモードレスな動作ができるようにした。
344 - Ruby スクリプトの先頭行コメントに coding:shift-jis または coding:utf-8 が書けるようにした。今のところこの2つしか認識しない。
345 - Ruby の LAMatrix (linear algebra matrix) クラスを実装し、任意の行列演算ができるようにした。ドキュメントはまだ書いていない。
346 - Empty Console Window コマンドを実装。
348 - MM/MD で "log file" フィールドは明示的に指定しない限り空にするようにした。
349 - CIF ファイルの読み込みで、座標値の標準偏差を認識するようにした。ただしmbsfへの保存はされない。
351 - Graphic objects can be drawn together with the molecule (requires Ruby coding).
352 - Modeless operation of Ruby Dialog is implemented.
353 - 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.
354 - LAMatrix (linear algebra matrix) class is implemented in Ruby, which allow matrix arithmetic of arbitrary dimension. No document is provided yet.
355 - Empty Console Window command is implemented.
356 - Document for MD calculation is written.
357 - Rms of crystallographic parameters (from the CIF file) are now kept in the molecule. Copying/saving of such parameters are not yet supported.
360 - Document is updated to include new graphic objects in the model view.
361 - 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.
362 - Drawing custom graphics on the model view is implemented.
363 - Ruby Dialog: modeless dialog is now implemented, and interval timer is implemented.
364 - Ruby: $KCODE is set on startup, and coding:{shift-jis, utf-8} is recognized as the source code encoding (for executing script from file).
365 - Molecule#all returns IntGroup[0] when the molecule is empty (it should return IntGroup[]), which causes crash on Molecule#delete.
366 - Dialog#layout: the :align and :vertical_align options can now be specified as item attributes
367 - The separator line in the Ruby Dialog was not working correctly.
368 - Vector3D and Transform objects are converted to LAMatrix object with dimensions 3 or 4 depending upon the context.
369 - LAMatrix#new errornously allows matrix with dimension 0. Fixed.
370 - AtomRef#molecule is implemented.
371 - Empty Console Window command is implemented.
372 - LAMatrix.multiply was not working correctly when the first argument is a scalar. Fixed.
373 - General matrix calculation (LAMatrix class in Ruby) is implemented. Seems to be working, but not documented yet.
374 - In the document, navigation between the English/Japanese versions is possible in most pages.
375 - Document for MD calculation is written.
376 - The "log file" field is set to blank unless explicitly set by the user.
377 - The structure Mat33 and Transform are now column-first arrangement (no change on Ruby interface and mbsf file format)
378 - Rms of crystallographic parameters (from the CIF file) are now kept in the molecule. Copying/saving of such parameters are not yet supported.
384 - LAMatrix クラスのドキュメントを作成。
385 - 量子化学計算ソフトウェアとの連携のドキュメントを作成。
386 - CIFファイルから読み込んだ座標値・異方性温度因子・セルパラメータの標準偏差を mbsf ファイルに保存するようにした。
387 - 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
388 - Bond, angle などのテーブルから分子力学パラメータを編集するとき、Universal Force Field (UFF) で力の定数を見積もる機能をつけた。
389 - 分子力学パラメータを原子のインデックスで指定できるようにした(実はもともとあった機能だが、分子を編集してもパラメータが維持されるようになった)。
390 - その他バグ修正(ChangeLog を参照)
392 - Document for the LAMatrix class was written.
393 - Document for the collaboration with other quantum chemistry softwares was written.
394 - Mbsf files now retain sigmas for the crystallographic parameters (imported from CIF).
395 - 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
396 - When the MM parameters are edited from the bond/angle table, the force constant can be guessed by Universal Force Field (UFF).
397 - The MM parameters can now be specified by explicit atom indices.
398 - Other bug fixes (see the change log).
401 - Features of Molecule#cell and Molecule#box are modified so that the handling of the sigma values of the cell parameters looks more consistent.
402 - Mbsf format now retains anisotropic parameters and sigma (for crystallographic data)
403 - Crash during creating bonds when ellipsoid display is on is fixed.
404 - Ruby: Molecule#fit_coordinates is implemented.
405 - LAMatrix#new, #zero, #submatrix now accept arguments in 'column,row' order.
406 - MM forces are updated after 'run(0)'
407 - Load/save mbsf files were broken when atom type variants were used for atom types with 3 or 4 characters. Fixed.
408 - The order of parameters in cmd_edit_local_parameter_in_mainview dialog was inconsistent. Fixed. Also fixed Ruby exception in UFF guess dialog.
409 - 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.
410 - Ruby: AtomRef#symop can now be set from script.
411 - Ruby: Molecule#amend_by_symmetry is implemented.
412 - Ruby: Molecule#set(get)_view_translation is now obsolete and replaced by set(get)_view_center.
413 - 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.
414 - Ruby: Molecule#hidden_atoms and Molecule#set_hidden_atoms are implemented.
415 - 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.
416 - UFF parameter guess is implemented.
417 - Molecule#neutralize was not working correctly. Fixed, and Molecule#charge was implemented.
418 - The load/unload global parameters dialog is sometimes out of the screen. Fixed.
419 - Windows version does not display last build date in the about dialog. Fixed.
420 - Parameters now can be specified by using both explicit indices and atom types, like '7-ca-8'.
421 - Parameter editing is improved.
422 - Restructure MolAction.c.
423 - Atom range specification for the vdw cutoff parameter is now made obsolete.
424 - Vector3D[] and Transform[] are modified to accept an LAMatrix argument. The document is written for LAMatrix.
425 - Load Script Menu caused crash when no window is open. Fixed.
426 - Ruby: Kernel#lookup_menu is implemented.
427 - Document is written for LAMatrix.
428 - LAMatrix#multiply was not working correctly when on-the-fly size conversion was required. Fixed.
429 - Execute Script command was broken. Fixed.
430 - CIF import may fail when _geom_bond_site_symmetry_1 field is missing. Fixed.
431 - Document was written for the collaboration with other quantum chemistry softwares.
432 - .log and .out are both accepted as the extension of the Gaussian and GAMESS log files.
433 - update_version.rb is improved.
440 - bond/angle/dihedral/improper の属性テーブルを開くと、分子力学パラメータを検索するようにした(ただし、結合情報から angle/dihedral テーブルの再構成はやらない。これは MM/MD ウィンドウを開いたときに起きる)
441 - 属性テーブルに単位格子を表示できるようにした。
442 - "Show Graphite" コマンドが間違った C-C 結合距離を使っていたので修正。正しくは 1.42Å。
443 - 最適平面計算を実装(Script メニューの Best-fit Plane)
444 - リビジョン番号を About ダイアログに表示するようにした。
445 - 単位格子の最適化機能を実装(まだ実験的)
446 - 原子当たりの結合数の上限 (12) を撤廃した。
447 - Ruby: Dialog#filter_kit を実装。使い方がドキュメントの付録に書かれている。
448 - Ruby: LAMatrix#svd (singular value decomposition) を実装。
449 - Ruby: bond_par, angle_par, dihedral_par, improper_par, vdw_par メソッドを Molecule から MDArena に移した。
450 - その他多くのバグ修正(ChangeLog 参照)
453 - Opening bond/angle/dihedral/improper table now triggers searching MD parameters (but not rebuilding angle/dihedral/improper tables).
454 - Property table can now list the unit cell parameters.
455 - "Show Graphite" command was using _very_ wrong C-C bond length. Now it uses correct length (1.42 angstrom).
456 - Best-fit plane calculations are implemented.
457 - The revision number is displayed in the about dialog.
458 - Cell parameter minimization is implemented (still experimental).
459 - The restriction on the number of bonds (12) is removed.
460 - Ruby: Dialog#filter_kit is implemented. The how-to is described in the document (appendix).
461 - Ruby: LAMatrix#svd (singular value decomposition) was implemented.
462 - Ruby: The methods bond_par, angle_par, dihedral_par, improper_par, vdw_par are moved from Molecule to MDArena.
463 - Bug fixes (see the ChangeLog)
466 - Ruby: Dialog#filter_kit is implemented.
467 - Crash when loading a new molecule was fixed.
468 - ORTEP export did not generate the same orientation as in the screen. Fixed.
469 - Ruby: Molecule#bond_par, angle_par, dihedral_par, improper_par, vdw_par are made obsolete, and instead MDArena#bond_par, angle_par, dihedral_par, improper_par, vdw_par are implemented. These methods returns the 'cached' parameters in the MDArena. The ParameterRef record for these parameters have a negative index, which represents the parameter belongs to the MDArena instead of the molecule.
470 - Opening bond/angle/dihedral/improper table now triggers search of MD parameters (but not rebuilding angle/dihedral/improper tables from bond information)
471 - Handling of view-related attributes of Molecule is improved (specifically, methods like Molecule#show_periodic_image= now work).
472 - Best-fit plane dialog is not working in Windows; fixed.
473 - Some fields in md_arena were not properly copied when a molecule is duplicated. Fixed.
474 - 'Show Graphite' command was using wrong C-C bond length. Fixed.
475 - Some unused fields of Molecule were removed.
476 - LAMatrix#svd (singular value decomposition) was implemented.
477 - Ruby: create_graphic was not working correctly when :ellipsoid is given with a single radius.
478 - Loading multiple-frame mbsf sometimes fails to load the cell parameter for the last frame. Fixed.
479 - Property table can now list the unit cell parameters.
480 - Documents for Dialog#show, Dialog#hide are written. (These were somehow missing)
481 - Cell minimization was not working correctly when no symmetry operations are defined. Fixed.
482 - MDArena#prepare was not working correctly when unit cell is added/created after initialization of MDArena. Fixed.
483 - Handling of selection from Ruby script was partially broken. Fixed.
484 - Best fit plane dialog was behaving strangely Fixed.
485 - Handling of Molecule object was not consistent. Hopefully fixed...
486 - Export ORTEP (improved) and best-fit plane calculations are implemented in Scripts/crystal.rb.
487 - The revision number is displayed in the about dialog (and is used for labeling clipboard contents)
488 - Copy/paste of molecules was broken when it had atoms with more than ATOMS_CONNECTS_LIMIT bonds. Fixed.
489 - Documents for some missing Ruby methods are written.
490 - Cell minimization is improved (hopefully...)
491 - Remove printf() for debugging cell minimization
492 - Implemented minimization of cell parameters. Looks like working...
493 - Handling of flexible cells were still inconsistent.
494 - Molecule#cell_flexibility and set_cell_flexibility are implemented, and enable/disable_cell_flexibility are removed.
495 - Figures for the Ruby tutorial are added to the repository.
496 - Handling of periodic box during MD is being reworked.
497 - Ruby: Molecule#box= was not working as expected. Fixed.
498 - Memory leak bugs are examined and removed.
499 - amend_by_symmetry in MD was still broken. Hopefully fixed.
500 - Tutorial for the Ruby interpreter was (finally) written.
501 - amend_by_symmetry during MD run was causing crash. Fixed.
502 - Graphite potential calculation is further modified (hope this is complete now!)
503 - When no molecule is open, Ruby scripts are evaluated in the context of 'main' (the toplevel object)
504 - Graphite potential calculation is improved.
505 - The current working directory is set to the document home on startup.
506 - The anisotropic parameters for the symmetry expanded atoms are now correctly handled.
507 - Pressure control and surface potential are removed from the GUI; they are not well tested and should be used with great care.
508 - The load commands can now include error messages in Ruby exception.
509 - MD minimize was not working properly (especially for the second run with the same molecule). Fixed.
510 - Symmetry expansion in CIF import is improved. (May not be complete yet)
511 - Molecule#expand_by_symmetry now returns an array of atom indices instead of IntGroup.
512 - Molecule#symop_for_transform and transform_for_symop are implemented. The symmetry expansion of CIF import is being reworked, but still incomplete.
513 - Molecule#is_atom_hidden and AtomRef#hidden, hidden= are implemented, and Molecule#hidden_atoms and hidden_atoms= are made obsolete.
514 - Molecule#set/get_view_rotation: the sign of the angle is made opposite (left-hand screw in respect to the axis), so that it is consistent with Transform#rotation. This is opposite to the convention of the OpenGL rotator.
515 - The restriction on the number of bonds (12) is removed (modified so heavily, that it is likely that there is still some bugs left...)
516 - Include periodicity flags in the 'define unit cell' dialog
517 - Problem on guessing UFF angle parameter was fixed.
518 - Fixed a very stupid bug in drawing unit cell.
519 - Handling of frame-specific cell parameters was very inconsistent. Hopefully fixed, but may be still incomplete.
520 - Graphite potential in MM/MD gets recalculated much less frequently now.
521 - Building verlet list was reworked to implement complete search of the periodic lattice points. Still in progress.
522 - Symmetry operations from the CIF file were not read correctly for hexagonal system. Fixed.
523 - Mac (only 10.6?): when the graphite display is on, the lighting of the molecule model looks strange. Fixed.
526 Version 0.6.5 を公開したのだが、GAMESS の構造最適化中のコンソールメッセージが変。同じ NSERCH に対応する行が複数表示されてしまう。要修正。
527 理想的には、GAMESS も MM/MD と同じように実行中はいったん Molby に制御を戻して、表示を自由に変更できるようにするのがよい(編集は禁止)。さらに、複数の分子についてそれぞれ計算を走らせることも可能にできればなおよい。これはかなりの大改造が必要。