「ほっ」と。キャンペーン

リガクのImgファイルを16 bit Tiffに変換

リガクのX線装置では、2次元の回折・散乱データがオリジナル形式のImgファイルに保存されます。
このデータを操作するにはリガクのソフトが必要です。一応、リガクのソフトを使えば2次元のビットマップ画像として変換できますが、元々1ピクセル16ビットだったデータが8ビットに落ちてしまうので、定量的解析には向きません。

ということで以前から16ビットのTiffに変換できるソフトを探していたのですが、どうしても見つからないので、ImageJを使って変換する方法を編み出しました。
注)一部のファイルにしか適用できないようです。


準備として、次のことが必要です。
・画像のサイズ(pixel × pixel)を調べておく
・次のテキストに適当な名前を付けて(拡張子はtxt)保存しておく
-----
// Correct a Rigaku IMG file to handle in ImageJ.
// IMG file must be read as 16bit Unsigned.
// Skip byte is the size of one line, i.e., 2 (byte) * pixels of width.

w = getWidth();
h = getHeight();
mask = 32767;
for (y=0; y<h; y++) {
for (x=0; x<w; x++)
if (~mask&getPixel(x,y)>0) putPixel(x, y, (getPixel(x, y)&mask)*32);
// In some cases, 32 in the above line must be corrected to 8.
}
resetMinAndMax();
-------

準備が出来たら、ImageJを起動し、"File -> Import -> Raw"の操作で目的のImgファイルをインポートします。Image typeは16 bit Unsigned、Skip byteは1行のピクセル数×2(バイト)です。Little-endian byte orderはチェックしません。

これだけで正常に見えている場合も多いのですが、強度の値があるしきい値を超えたピクセルがあれば、見かけ上は異常な強度値となっています。

次に先ほどのテキストファイル(マクロ)を"Plugins -> Macros ->Run"の操作で読み込み実行します。
この操作で、異常に見えていたピクセルが補正され、リガクのソフトで読み込んだような画像となります。
1ピクセルあたり16ビットの階調は保持されているので、そのままTiff形式で保存すれば目的の変換が行えます。
[PR]
# by tosakam | 2014-08-19 12:44 | 解析

学生必読

東大で学んだ卒業論文の書き方というページを見つけました。

タイトルにある「論文の書き方」に留まらず、研究の心得や進路に関するアドバイスなど、幅広い内容が簡潔に書かれています。

学生の方は、是非一読するようお勧めします。


人気blogランキングへ
[PR]
# by tosakam | 2007-09-26 18:38 | 論文作成

Meepを使う(1) Schemeから

まず最初にお断りしておきますが、ここから先の一連の記事はMeepを十分に理解していない時点でのメモみたいなものです。自分なりの解釈に過ぎないので、間違いが含まれていたらご容赦ください。(適時訂正します。)

Meepを使って実際にシミュレーションを行う為には、想定しているモデルやシミュレーションの条件をどの様に表現するか、知る必要があります。

チュートリアルでも紹介されていますが、物体に対する電磁場の応答をシミュレーションするわけですから、Meepでは少なくとも次の要素を明示することが必要です。

geometry-lattice: シミュレーションに用いる空間の定義(有限の大きさを持った空間)
geometry: シミュレーションの対象となる構造(形・大きさ・位置・誘電率)
sources: 光源(形・大きさ・位置・連続性・波長・偏光・・・)

その後で計算を実行するのですが、空間と時間を有限の単位に分割して順次計算するので、
run-until: 計算の範囲(時間など)
も指定することになります。

この様なパラメータの設定は、コマンドラインから逐次手入力することも出来ます。
しかし、テキストファイルに記録しておいて一括して実行したほうが便利でしょう。
Meepでは、そのようなファイルを.ctlファイルとして読み込むよう想定しています。

パラメータを設定するための文法は、Schemeというプログラム言語に基づいています。Schemeの概要をつかむには、こちらのページが役に立つでしょう。

人気blogランキングへ
[PR]
# by tosakam | 2007-07-23 22:58 | 解析

Meepのインストール (おまけ) 失敗の経緯

せっかくなので、Meepインストール成功に至るまで経験した失敗についても、お知らせしておきます。

(1)libctrlとGuileのバージョン
 運が悪ければ、この段階で諦めてました。
 たまたま、Cygwinのインストールで最初に選んだサーバからダウンロードしたGuileがVer. 1.6.7-4でした。Meep Installのガイダンスでguile-develのソースが必要だと分かり、このバージョンのソースをインストールして、./configureを無事に完了することが出来ました。
その後、Cygwinのダウンロードサーバを変更するとGuileが新しいバージョンになったのですが、その場合にはエラーになり./configureで止まりました。たまたま古いバージョンのGuileを使う環境にならなければ、どうすればよいか見当付かなかったと思います。

(2)libctlとライブラリ
 上のようになんとか./configureをクリアできても、最初のうちはmakeでエラーになり、libctlをコンパイルすることが出来ませんでした。ディスク容量節約のため、Cygwinをインストールする際、パッケージ内にある必要最低限のモジュールだけを選ぶようにしていたのですが、それが裏目に出たようです。
 LibsやDevelのパッケージを全部選択するようにして、やっとコンパイルエラーが無くなりました。

(3)HDF5のインストール
HDF5のホームページ内にはたくさんの情報があるのですが、それだけにかえってCygwinにインストールするための情報を探すのが大変でした。
HDF5はC, C++, Fortranのライブラリを作成することが出来ますが、Meepのコンパイルにどれが必要なのか分かりません。
また、HDF5をどのフォルダにインストールすればよいのかも分かりませんでした。

この状態で、安定なHDF5 Ver. 1.6.5をインストールしようとしましたが、コンパイルで失敗します。色々と試行錯誤し、とりあえずCとC++のライブラリ作成に限ればコンパイルとインストールの出来ることがわかりました。

しかし、Meepについて./configureを実行する際には、HDF5が見つからないようなメッセージが出ます。

諦めかけたところで、HDF5のホームページにHDF5 Ver. 1.6.5はCygwinに対応していないとの記述を発見!Ver. 1.8.0 Beta2を使って、やっとC, C++, Fortranのライブラリをインストールできました。

それでもMeepについて./configureを実行すると、HDF5が見つからないようなメッセージが出ます。HDF5のインストールフォルダが認識されていないのかと考え、色々な場所にインストールを試みたのですが、いずれの場合もMeepの./configureにHDF5が認識されないのは同じでした。

もう完全に諦めていたのですが、最後だと思いSzipをインストールするディレクトリを/usr/localに変えてみました。Meep自体は直接Szipをリンクしないので関係ないと思っていたのですが、HDF5を経由しているので影響するのかもしれません。
結局、これが功を奏してMeepにHDF5が認識されました。

とは言っても、./configueでHDF5が認識されただけです。実際にリンクする段階ではエラーになってしまいました。

(4)Meepのインストール
Meepをコンパイルする際、あるファイルが見つからないということでエラーになり、止まっていました。この問題については、ネットで調べた情報+メーリングリストのアドバイスを基に対応することが出来ました。

人気blogランキングへ
[PR]
# by tosakam | 2007-07-21 00:31 | 解析

Meepのインストール (4) Meepとビューワーのインストール

ようやくここまでたどり着きました。
こちらからMeepのソースファイルをダウンロードします

これまで何度も繰り返した手順と同様に、圧縮ファイルの展開→フォルダ移動→./configure →make →make install でインストール出来ます。

さて、Meepで計算した結果はHDF5のデータとして出力されますが、それを可視化するためのソフトが必要になります。

Meepのチュートリアルで紹介されているのはH5utilsという一連のソフトで、Cygwinに上記と同様の手順でインストール後、コマンド入力により使用します。直接HDF5のデータを可視化するのではなく、pngの様な一般的な画像データに変換します。

Windowベースで作業するなら、HDFViewが良いでしょう。こちらは直接Windows上でインストール出来ます。


人気blogランキングへ
[PR]
# by tosakam | 2007-07-20 19:18 | 解析

Meepのインストール (3) HDF5のインストール

HDF5のインストールではずいぶん苦労しました。
CygwinにHDF5をインストールする手順については、こちらに解説があります。これだけでは不十分なので、ここで補足しておきます。

(1) g95 Fortranコンパイラのインストール
本当に必要なのかよく分かりませんが、とりあえず私はインストールしておきました。
g95はフリーのFortran95コンパイラで、こちらから入手出来ます
g95についてはCygwin用に実行ファイルが供給されています。インストーラの組み込まれたものとtar.gz形式の圧縮ファイルがあります。いずれの場合も指示に従ってインストールして下さい。

(2) Zlibのインストール
こちらのページからHDF5 Ver. 1.8.0Beta2, Zlib, Szipが入手出来ます。まとめてダウンロードしておきましょう。

Zibはこれまでにインストールした他のライブラリと同様に、圧縮ファイルの展開→フォルダ移動→./configure →make →make install の手順でインストール出来ます。

(3) Szipのインストール
Szipをインストールする際、インストールディレクトリとして/usr/local が明示的に指定されていなければ他のディレクトリにインストールされ、Meepのインストールの際にHDF5がリンクされません。そのため、./configureにオプションを追加します。

>./configure --prefix=/usr/bin
>make
>make install

(4) HDF5のインストール
HDF5 Ver. 1.6.5が安定バージョンという事になっていますが、Cygwinには対応していません。上に示したリンクから、新しいバージョンをダウンロードしてください。
HDF5も、./configureにオプションが必要です。
>./configure --enable-cxx --enable-fortran --prefix=/usr/local
>make

HDF5は正常にコンパイル出来たかチェック出来ます。

>make check

確認後、インストールします。

>make install

人気blogランキングへ

続く
[PR]
# by tosakam | 2007-07-20 18:22 | 解析

Meepのインストール (2) ライブラリのインストール

Meep Installationのページに書いてある様に、Meepは様々なライブラリを使います。ほとんどは「推奨」と書かれてありそれらなしでも動作しますが、実際に使う際の事を考えるとほとんど必要です。

シングルプロセッサ環境の場合、必要なライブラリは次に挙げるものです。
BLAS
LAPACK
Harminv
Guile
libctl
HDF5

このうち、Guileは、Cygwinに組み込まれてインストールされているはずです。HDF5はそれ自体、他のライブラリを必要としますので別途説明します。

GNUのソフトに関しては一般的なコンパイル→インストールの手順がありますので、次に示します。

(1) 圧縮ファイルをダウンロード
基本的には、ソースファイルがディレクトリ構造ごとまとめられた圧縮ファイルとして提供されています。ファイル名の最後が .gz あるいは .tgz となっているものです。

保存先として、
[Cygwinをインストールしたフォルダ]\home\[ユーザー名]
のフォルダを選ぶと便利です。例えば私の場合C:\cygwinにインストールしたので
c:\cygwin\home\tosaka
です。
Cygwinを起動すると、自動的にこのフォルダで作業が開始されます。

(2) 圧縮ファイルの展開
ここから先は、Cygwinを起動してUnixのコンソール内での作業となります。
先ず、ダウンロードしたファイルの圧縮解除です。

>ls

で、作業対象の圧縮ファイルがある事を確認して下さい。例えば、libctl-3.0.2.tar.gzの場合、

>gunzip libctl-3.0.2.tar.gz

と入力して下さい。これで圧縮が解除されます。再び

>ls

で確認すると、ファイル名がlibctl-3.0.2.tarに変わっているはずです。次にこれをインストールするためフォルダに展開します。

>tar xf libctl-3.0.2.tar

と入力して下さい。

>ls

で確認すると、今度はlibctl-3.0.2.tarがそのまま残り、それに加えてlibctl-3.0.2というフォルダが出来ているはずです。

(3) ソースファイルのコンパイルとインストール
上の操作で出来たフォルダ内に、ソースファイルがあります。先ず、そのフォルダ内に移動します。

>cd libctl-3.0.2

次に、

>./configure

と入力します。コンパイル環境を自動的にチェックし、その結果をメッセージとして表示します。これが終了してから、

>make

と入力します。先に調べた環境に従って、自動的にソースファイルがコンパイルされ実行ファイルが作られます。最後に

>make install

と入力すると、実行ファイルが適切なフォルダにコピーされインストールの終了です。

最初に述べた幾つかのライブラリの内、HDF5とBLAS以外はこの手順で単純にインストール出来るはずです。

libctlのコンパイルでエラーが出た場合、Guileのバージョンを確認して下さい。

>guile --version

前回述べた様に、バージョン1.8.1-6ではエラーになるようです。
バージョン1.6.7-4でもエラーになる場合は、guile-develのソースファイルがインストールされていないと考えられます。
いずれの場合も一旦Cygwinを終了し、setup.exeを起動してCygwinのインストールを修正する必要があります。その際、他の設定が維持される様にパッケージ選択画面の上にあるチェックボックスをkeepに切り替えておきましょう。


BLAS → LAPACK → Harminvのインストール
これらのライブラリは、この順にインストールする必要があります。

先ずBLASですが、これは ./configureが必要ありません。

>make

により、blas_LINUX.aという名前のライブラリファイルが出来ます。
このファイルの名前をlibblas.aと変更し、ライブラリのディレクトリにコピーします。

>cp blas_LINUX.a /usr/local/lib/libblas.a

Windowのエクスプローラを使って操作する事も出来ます。

次にLAPACKですが、やはり./configureがありません。
tarファイルを展開するとLAPACKのディレクトリが出来ますが、この中にも先ほど作成したblas_LINUX.aをコピーします。
LAPACKディレクトリ内にINSTALLというディレクトリがありますが、そこにあるmake.inc.LINUXというファイルを、make.incという名前でLAPACK内にコピーします。
これだけの準備をして、LAPACKディレクトリ内で

>make

を実行します。

BLASの場合と同様に、lapack_LINUX.aというファイルが出来ますから、これを/usr/local/libへliblapack.aという名前でコピーします。

>cp lapack_LINUX.a /usr/local/lib/librlapack.a

Harminvは、上に書いたlibctlと同じ要領でインストール出来ます。

人気blogランキングへ

続く
[PR]
# by tosakam | 2007-07-20 17:31 | 解析

Meepのインストール (1) Cygwin環境構築

アンテナや光導波路の挙動をシミュレーションするための電磁場計算として、FDTD(finite-difference time-domain)という手法があります。

市販のソフトを買うと十万円以上はするらしいのですが、Unix上で動作するMeepというソフトは無償で配布されています。

Cygwin環境でこのソフトを動作させる事に成功したので、覚え書きを兼ねてここに書いておく事にします。色々と細かい設定などがあり、動作するところまでこぎ着けるのにかなり苦労しました。

(1) Cygwinのインストール

まず、こちらのページからCygwinのインストーラ (setup.exe) をダウンロードします。この中にCygwin本体は含まれていません。

Internet Explorerを使った場合setup.exeを保存せずそのまま実行する事も出来ますが、たぶん繰り返し事項する事になるのでご自分のPCに保存しておいた方がよいでしょう。

インストールの詳細については、他のページに詳しく載ってますので(例えばこちら)ここでは省略します。

注意点
・ "Select Root Install Directory"の画面で、右下にある"Default Text File Type"はUnixを選択する。Dosを選ぶと、後でコンパイルする際エラーが起きます。
・ ダウンロードサイトはレスポンスの早いところを選択しましょう。.jpで終わる国内のサーバを選ぶのが無難です。
・ インストールするパッケージとして、Devel, Editors, Libs, Math, Mingwは必ず選択します。(その他も含めて全部のパッケージを選択してもかまいませんが、ダウンロードの時間とディスク容量が必要になります。)
・ Guileというソフトが含まれますが、最新の1.8.1-6では後でlibctlをインストールする際に失敗しました。右上にある[View]と書かれたボタンを押してその右の表示をFullに切り替えます。(このボタンを押すごとに表示が切り替わり、何回目かで元に戻ります。)Package列がアルファベット順に並んでますから、guileで始まるものを探し(3つあります)New列の回転矢印記号を何回か押して、これらのバージョンを1.6.7-4に切り替えます。guile-develについてはSrc?列にもチェックを入れソースファイルもインストールします。
・ 同じ要領で、Shellsパッケージ中のtcshとrxvtもインストールしておくと便利です。(以後、インストールされているとして説明を続けます。)


(2) 環境設定

こうしてインストールした状態でCygwinを起動すると、コンソールウインドウが現れます。(終了するには、このウインドウ内で"exit"とコマンドを入力するか、ウインドウ自体を閉じる。)このウインドウはマウスのスクロールボタンや、マウス操作による文字列の選択が無効なので、若干不便です。
そこで、メモ帳などを使って次の様な内容のバッチファイルを作り、C:\cygwin\cygwin-tcsh.batという名前で保存します。

@echo off
C:\cygwin\bin\rxvt.exe -fg white -bg black -fn msgothic-12 -fm msgothic-12 -e tcsh -l


"C:\cygwin"の部分は、Cygwinをインストールしたドライブやフォルダに応じて変えて下さい。
このバッチファイルのショートカットを作製し、使いやすいところ(デスクトップなど)に移動させます。

ここから先、Cygwinを起動してUnix環境での作業になります。
先ほど作製したショートカットから、Cygwinを起動します。

環境変数を設定するため、テキストエディタを起動して設定ファイル".tcshrc"を作製します。ここでは、nanoというエディタを使います。
Cygwinコンソール内で次の様に入力して下さい。

>nano .tcshrc

すると、コンソール内がテキストエディタ画面に切り替わります。
そこに、次の様に入力して下さい。

setenv LD_LIBRARY_PATH "/usr/local/lib"
setenv LDFLAGS "-L/usr/local/lib"
setenv CPPFLAGS "-I/usr/local/include"
setenv F9X "/usr/local/bin/g95"


正しく入力出来たら、キーボードのCtrlキーを押しながらOを押します。(画面下部に書かれている ^O WriteOut の操作です。その後でCtrlとX (^X)を押すとnanoが終了します。
Unixのコンソールに戻るので、

> ls -a

と入力してみて下さい。表示されたファイル一覧の中に".tcshrc"がある事を確認して下さい。
ここで一旦Cygwinを終了します。
再びショートカットからCygwinを起動し、コンソール内で次のコマンドを入力して下さい。

>setenv

環境変数が沢山表示されますが、その中に先ほど入力した内容が含まれている事を確認して下さい。
以上で、環境設定は終了です。何故この様な設定が必要か、詳細はMeep Installationのページに書かれています。
また、Unixの基本的なコマンドについては他のページ(例えばここ)を参考にして下さい。

(3) コンパイラのコピー
これはMeepのコンパイル時に発生するエラーを回避するための手続きです。なお、2007年7月に次のバージョンのソフト使用環境であった事にご留意下さい。

Cygwin.dll-1.5.24-2
hdf5-1.8.0-beta2
szip-2.0
libctl-3.0.2
zlib-1.2.1
harminv-1.3.1
meep-0.10

先ず、Windowsのエクスプローラなどで、
c:\cygwin\usr\lib\gcc\i686-pc-cygwin\3.4.4
というフォルダが存在するか調べて下さい。たぶん、gcc 以下のフォルダは無いと思います。
代わりに
c:\cygwin\lib\gcc\i686-pc-cygwin\3.4.4
があるはずです。(例によって、c:\cygwinの部分はCygwinをインストールしたフォルダに変えて下さい。)

この場合、エクスプローラなど用いて
c:\cygwin\lib\gcc
をフォルダごと
c:\cygwin\usr
へコピーして下さい。
次に、Cygwinを起動し、ディレクトリを移動します。

>cd /usr/lib/gcc/i686-pc-cygwin/3.4.4

そこに"libg2c.la"というファイルがあるはずです。このファイルを編集します。

>nano libg2c.la

最終行に

libdir='/usr/lib/gcc/i686-pc-cygwin'

とありますが、これを

libdir='/usr/lib/gcc/i686-pc-cygwin/3.4.4'

に修正します。
nanoを用いたのであれば^Oで内容を書き出し、終了します。
最後に、今修正した"libg2c.la"を上のディレクトリにもコピーします。

>cp libg2c.la ../

CygwinかMeepの相性の問題で、上記の処理をしないとコンパイルの途中でエラーになります。

人気blogランキングへ

続く
[PR]
# by tosakam | 2007-07-20 16:32 | 解析

英語の言い回しを改善

英語の論文を書いていて、どの様な言い回しにしたらいいか迷う事があります。
そんなとき、ヒントになるページを見つけました。
University of Birminghamのホームページにある、English for International Students Unit: Kibbitzer pageです。Kibbitzer(kibitzer)とは「トランプの見物人」とか「横からチャチャを入れる人」という意味ですが、このページでは論文の添削などでネイティブスピーカーの教官が気づいた事などをまとめています。

例えば、"on the other hand", "on the contrary", "by contrast"の使い分けについて解説しています。

それによれば、科学雑誌では"by contrast"がよく使われるようです。

"on the contrary"は否定文と共に使われるそうです。「悪くない。むしろよかった。」の「むしろ」が、日本語のニュアンスとして近そうです。

"on the other hand"は二つの事柄を対比すると言う意味で"by contrast"と同様にも使えますが、対比的でない使い方もできます。

"by contrast"はそれに対し、対比的なニュアンスを強調しています。科学雑誌では既知の事実との対比を重要視するので、"by contrast"がよく使われるのだそうです。

人気blogランキングへ
[PR]
# by tosakam | 2007-02-21 18:16 | 論文作成

MS-Wordで文字に上線を付ける

数式などが関係した論文を書いていると、文中の文字の上側に線やチルダを付けたくなる事が良くあります。しかし、MS-Wordでパッと見つかる文字修飾に下線はあっても、上線は見つかりません。

他のワープロ(一太郎など)は上線を入れる機能がありますが、どこのオンライン投稿でも受け付けてくれるというわけには行きません。

ということで、探してみたらあっさりと見つかりました。

こちらのページで上線を入れる方法を紹介してます。

これを応用すると、上線だけでなくチルダなど、色々な記号を文字の上に付けられますね。

紹介したページのトップページからは、他にも色々と便利な使い方を見つける事が出来ます。


人気blogランキングへ
[PR]
# by tosakam | 2007-02-13 20:04 | 論文作成