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() が２回呼ばれてしまう。２回目に何もしないで 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 には <Carbon/Carbon.h> が必要。ちなみに、Ruby のヘッダと同時に #include すると T_DATA が二重定義になるので、#include <Carbon/Carbon.h> の前に #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 を編集して、次の５行を追加。
#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 <kmmalloc/xalloc.h> を入れておくと、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 パラメータ: 結合長を小数点以下３桁まで有効にした。
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 もあるので、ちょっとどうかと思う。静的にリンクする方法をいろいろ探った。どうやら２つ方法がありそう。
(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 のインポートで、座標が８桁になる時にエラーが発生していたので修正。
構造最適化で時々クラッシュしていたのを修正。

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 が書けるようにした。今のところこの２つしか認識しない。
- 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.

2012.10.13.

Version 0.6.4

リリースノート
- bond/angle/dihedral/improper の属性テーブルを開くと、分子力学パラメータを検索するようにした（ただし、結合情報から angle/dihedral テーブルの再構成はやらない。これは MM/MD ウィンドウを開いたときに起きる）
- 属性テーブルに単位格子を表示できるようにした。
- "Show Graphite" コマンドが間違った C-C 結合距離を使っていたので修正。正しくは 1.42Å。
- 最適平面計算を実装（Script メニューの Best-fit Plane）
- リビジョン番号を About ダイアログに表示するようにした。
- 単位格子の最適化機能を実装（まだ実験的）
- 原子当たりの結合数の上限 (12) を撤廃した。
- Ruby: Dialog#filter_kit を実装。使い方がドキュメントの付録に書かれている。
- Ruby: LAMatrix#svd (singular value decomposition) を実装。
- Ruby: bond_par, angle_par, dihedral_par, improper_par, vdw_par メソッドを Molecule から MDArena に移した。
- その他多くのバグ修正（ChangeLog 参照）

Release Note
- Opening bond/angle/dihedral/improper table now triggers searching MD parameters (but not rebuilding angle/dihedral/improper tables).
- Property table can now list the unit cell parameters.
- "Show Graphite" command was using _very_ wrong C-C bond length. Now it uses correct length (1.42 angstrom).
- Best-fit plane calculations are implemented.
- The revision number is displayed in the about dialog.
- Cell parameter minimization is implemented (still experimental).
- The restriction on the number of bonds (12) is removed.
- Ruby: Dialog#filter_kit is implemented. The how-to is described in the document (appendix).
- Ruby: LAMatrix#svd (singular value decomposition) was implemented.
- Ruby: The methods bond_par, angle_par, dihedral_par, improper_par, vdw_par are moved from Molecule to MDArena.
- Bug fixes (see the ChangeLog)

ChangeLog
- Ruby: Dialog#filter_kit is implemented.
- Crash when loading a new molecule was fixed.
- ORTEP export did not generate the same orientation as in the screen. Fixed.
- 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.
- Opening bond/angle/dihedral/improper table now triggers search of MD parameters (but not rebuilding angle/dihedral/improper tables from bond information)
- Handling of view-related attributes of Molecule is improved (specifically, methods like Molecule#show_periodic_image= now work).
- Best-fit plane dialog is not working in Windows; fixed.
- Some fields in md_arena were not properly copied when a molecule is duplicated. Fixed.
- 'Show Graphite' command was using wrong C-C bond length. Fixed.
- Some unused fields of Molecule were removed.
- LAMatrix#svd (singular value decomposition) was implemented.
- Ruby: create_graphic was not working correctly when :ellipsoid is given with a single radius.
- Loading multiple-frame mbsf sometimes fails to load the cell parameter for the last frame. Fixed.
- Property table can now list the unit cell parameters.
- Documents for Dialog#show, Dialog#hide are written. (These were somehow missing)
- Cell minimization was not working correctly when no symmetry operations are defined. Fixed.
- MDArena#prepare was not working correctly when unit cell is added/created after initialization of MDArena. Fixed.
- Handling of selection from Ruby script was partially broken. Fixed.
- Best fit plane dialog was behaving strangely  Fixed.
- Handling of Molecule object was not consistent. Hopefully fixed...
- Export ORTEP (improved) and best-fit plane calculations are implemented in Scripts/crystal.rb.
- The revision number is displayed in the about dialog (and is used for labeling clipboard contents)
- Copy/paste of molecules was broken when it had atoms with more than ATOMS_CONNECTS_LIMIT bonds. Fixed.
- Documents for some missing Ruby methods are written.
- Cell minimization is improved (hopefully...)
- Remove printf() for debugging cell minimization
- Implemented minimization of cell parameters. Looks like working...
- Handling of flexible cells were still inconsistent.
- Molecule#cell_flexibility and set_cell_flexibility are implemented, and enable/disable_cell_flexibility are removed.
- Figures for the Ruby tutorial are added to the repository.
- Handling of periodic box during MD is being reworked.
- Ruby: Molecule#box= was not working as expected. Fixed.
- Memory leak bugs are examined and removed.
- amend_by_symmetry in MD was still broken. Hopefully fixed.
- Tutorial for the Ruby interpreter was (finally) written.
- amend_by_symmetry during MD run was causing crash. Fixed.
- Graphite potential calculation is further modified (hope this is complete now!)
- When no molecule is open, Ruby scripts are evaluated in the context of 'main' (the toplevel object)
- Graphite potential calculation is improved.
- The current working directory is set to the document home on startup.
- The anisotropic parameters for the symmetry expanded atoms are now correctly handled.
- Pressure control and surface potential are removed from the GUI; they are not well tested and should be used with great care.
- The load commands can now include error messages in Ruby exception.
- MD minimize was not working properly (especially for the second run with the same molecule). Fixed.
- Symmetry expansion in CIF import is improved. (May not be complete yet)
- Molecule#expand_by_symmetry now returns an array of atom indices instead of IntGroup.
- Molecule#symop_for_transform and transform_for_symop are implemented. The symmetry expansion of CIF import is being reworked, but still incomplete.
- Molecule#is_atom_hidden and AtomRef#hidden, hidden= are implemented, and Molecule#hidden_atoms and hidden_atoms= are made obsolete.
- 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.
- The restriction on the number of bonds (12) is removed (modified so heavily, that it is likely that there is still some bugs left...)
- Include periodicity flags in the 'define unit cell' dialog
- Problem on guessing UFF angle parameter was fixed.
- Fixed a very stupid bug in drawing unit cell.
- Handling of frame-specific cell parameters was very inconsistent. Hopefully fixed, but may be still incomplete.
- Graphite potential in MM/MD gets recalculated much less frequently now.
- Building verlet list was reworked to implement complete search of the periodic lattice points. Still in progress.
- Symmetry operations from the CIF file were not read correctly for hexagonal system. Fixed.
- Mac (only 10.6?): when the graphite display is on, the lighting of the molecule model looks strange. Fixed.

2012.6.15.
　Version 0.6.5 を公開したのだが、GAMESS の構造最適化中のコンソールメッセージが変。同じ NSERCH に対応する行が複数表示されてしまう。要修正。
　理想的には、GAMESS も MM/MD と同じように実行中はいったん Molby に制御を戻して、表示を自由に変更できるようにするのがよい（編集は禁止）。さらに、複数の分子についてそれぞれ計算を走らせることも可能にできればなおよい。これはかなりの大改造が必要。

