disown
tcsh から zsh へ移行して半年くらい経った.
戸惑うというか,何か面倒だなと思っていた点のひとつに
GUI アプリケーション(ほぼ ImageJ のみ)をインタラクティブシェルから起動した後に
シェルだけ終わらせようとすると

~/wc/kbi/ijp/src% exit
zsh: you have running jobs.

と言われ,もう1回 exit すると ImageJ も終わってしまうという挙動があったので
思いたって調べてみた.

disown という内部コマンドを実行すれば,ひとまず警告は出ず,また,
子プロセスは終了しないことがわかった(bash にも同名の内部コマンドがあるらしい).
ただし複数のバックグラウンドジョブがある場合には,それぞれに発行しないといけないようだ
(引数にジョブ番号を与えることができる).

別のアプローチとして,バックグラウンドジョブ投入時に & でなく &! を使ってもいいらしい.
結局,こちらの方法を用い,これまでの ~/.zshrc の

function ij() {
"${HOME}/wc/kbi/ImageJ/imagej_boot.py" $* &
}


function ij() {
"${HOME}/wc/kbi/ImageJ/imagej_boot.py" $* &!
}

に書き換えた.
[PR]
# by edogawadai_bio | 2009-11-09 22:00 | comp
eelll
研究室の後輩がt-codeを試しはじめたので少し影響されてやってみた。
「うなぎ」はeelだから、「うなぎぎぎ」だということに今さら気付いた。
これ定期的に練習するのは自分の苦手とするタイプの作業だな…。
[PR]
# by edogawadai_bio | 2009-04-29 18:50 | comp
Fisher's Iris data set
「フィッシャーのアヤメのデータ」とか単に「Iris」などとして統計やパターン認識の本に出てくるので,形態の測定をしたのもフィッシャー本人かと勝手に想像していた.が,実際はデータをとった人は Edgar Anderson というアメリカの植物学者ということを知った.

http://en.wikipedia.org/wiki/Iris_flower_data_set
http://home.hiroshima-u.ac.jp/chubo/index.cgi?IrisData

Rのマニュアルでは「Anderson's Iris data set」という表記がされている
http://stat.ethz.ch/R-manual/R-patched/library/datasets/html/iris.html

アヤメのデータ自体の論文
Anderson E (1935) The irises of the Gaspe Peninsula. Bulletin of the American Iris Society 59: 2–5.
American Iris Society は今もあり,この雑誌も季刊で出版されているようだ.
http://www.irises.org/
[PR]
# by edogawadai_bio | 2009-01-30 12:01 | comp
赤軸
http://www.scythe.co.jp/input-device/mx-board-r.html
のG80-3600LYCJA-2(赤軸日本語109黒)を買った。
展示品ではキートップの「り」が「い」になっているという話だったが、購入したものでは「り」になっていた。ただし使っているフォントのサイズが他より大きい。
箱にN-key rolloverと書いてある通り、適当に10本の指で同時押しすると、全部入力される。
[PR]
# by edogawadai_bio | 2008-12-03 17:19 | comp
scala 2.7.2 final
手元の scala のバージョンを 2.7.1 final から 2.7.2 final に上げた。
ubuntu用のdebパッケージもあったが、それは試さなかった。
scalaで書いているImageJ用プラグイン類をコンパイルしなおすと、いくつか error と warning が出た。

implicit function に関する error
/home/maro/wc/kbi/ijp/src/Kbi_EvacColor.scala:29: error: type mismatch;
found : (int, int, int)
required: int
Note: implicit method rgb2i is not applicable here
because it comes after the application point and it lacks an explicit result type
ist, (fromR(), fromG(), fromB()), (toR(), toG(), toB()))


rgb2i の型を明示し、利用する箇所より前に書くようにした。

Java の varargs メソッド呼出しの warning

signature として ": _*" が必要だという warning が出た。
/home/maro/wc/kbi/ijp/src/lib/Util.scala:24: warning: I'm seeing an array passed into a Java vararg.
I assume that the elements of this array should be passed as individual arguments to the vararg.
Therefore I follow the array with a `: _*', to mark it as a vararg argument.
If that's not what you want, compile this file with option -Xno-varargs-conversion.
String.format(fmtStr, args.map(_.asInstanceOf[AnyRef]))

http://www.gracelessfailures.com/2008/08/invoking-java-varargs-methods-from.html に同じような例が紹介されていた。

Predef で int や float が deprecated となった
Int や Float に書き換えた。

Predef.Randomが scala.util.Random に移動した
該当ファイルに import scala.util.Random を加えた。
[PR]
# by edogawadai_bio | 2008-11-13 21:28 | comp
高知
b0095474_2565290.jpg今日、海をみた。


オプティカルフロー
輝度投影による流れの可視化

b0095474_1271141.jpg
[PR]
# by edogawadai_bio | 2008-09-30 01:28 | sanji
Scala すばやいよ Scala 。
多数の言語処理系で同じ内容のプログラムを実行し、その実行速度を比べるComputer Language Benchmarks Game (shootout benchmark) で使われている測定マシン環境が新しくなったことに気付いた。

これまでは Pentium4 と Sempron が用いられていたが、今回は Core2Quad Q6600 が加わった。 32 bit OS だけでなく 64 bit OS での測定結果も示されている。 さらにクアッドコアマシンであることを活かし(?)、レギュレーション的にシングルコアとクアッドコアに分かれている。このため C2Q Q6600での測定条件は {32|64} bits * {1|4} core の4種となっている。

マルチコア環境を活かすのが容易な Erlang では、binary-trees テストの場合、 シングルコアで 35.15秒(言語間の順位は4位)、クアッドコアでは19.21秒(順位は2位)となっている。

まだクアッドコア版の結果に登録されているプログラムはマルチコア対応されているものが少ない。自然とマルチコア対応になる Erlang を除くと、一部テストで Intel C Compiler with OpenMP や Scala with Actor で明示的に対応しているくらいだ。あとは JVM 上で動く処理系 (Java, Scala, Nice, CAL, そしてインタプリタなのでこれらより遅いけれども Groovy も) が、意図的にマルチスレッド化などをしていなくても、マルチコア環境における速度向上が binary-trees テスト等ではみられる。 JVM の並列化 GC の恩恵だろうか。 また、これらとは別に、シングルコアにおいても Java をはじめとするバイトコードにコンパイルするタイプの JVM 向け言語は実はいずれも速いんだなぁ、と改めて思う。

個人的には Scala や Python 、そして ML の類が頑張ると良いな…。
[PR]
# by edogawadai_bio | 2008-09-11 04:04 | comp
minus
http://www.kiwisbybeat.com/
minus が最終回のようだ.
最近知ったが,吾妻ひでおの短編みたいな雰囲気で好きだ.
[PR]
# by edogawadai_bio | 2008-07-04 00:53 | niji
scala 2.7.1 final 他
scala のバージョンを 2.7.1 final に,JDK を 1.6.0_06 にした.
[PR]
# by edogawadai_bio | 2008-05-13 22:55 | comp
scala 2.7.1 RC2
scala のバージョンを 2.7.1 RC2 に上げた.
RC1 で match で落ちることがあったのが修正されたかもしれない.

ImageJ プラグインを scala で書いて渡す場合,どうするのが楽なのかと幾つか試したが,結局, scala_library.jar とプラグイン自体の jar ファイル2つをプラグイン用ディレクトリにコピーしてもらうことに落ち着いた.
[PR]
# by edogawadai_bio | 2008-04-25 20:23 | comp
scala 2.7.1 RC1
scala のバージョンを 2.7.1 RC1 に上げた.
また,
% sbaz install scala-tool-support
で emacs の scala-mode.el を導入した.
とりあえず,これまで scala で書いた ImageJ プラグインは正常に動いているようだ.
[PR]
# by edogawadai_bio | 2008-04-13 13:14 | comp
父が携帯電話付属のカメラで撮影した桜の画像を送ってくれた.
b0095474_1664019.jpg

ノイズを抑えようとbilateral filterをかけたら,CG的というか,平板な感じになった.
[PR]
# by edogawadai_bio | 2008-04-04 16:10 | sanji
Scala による ImageJ プラグイン
ImageJ の拡張のために Java を使ってプラグインを書いたり独自仕様のマクロを書いたりしてきたが,どうもしっくりこない. Java は面倒な時があるし, ImageJ のマクロは再利用性に乏しい(importや#includeに相当するものがない).

Python が好きなので Jython + ImageJ を試したり,CPython + ImageJ 用のプラグインを作ってはみたものの,遅かったり,準備が面倒で共同作業先に持っていきにくかったりする.そこで JVM 上で動く言語を調べたり試した挙句, Scala を試用することにした.

ImageJ 起動時の CLASSPATH に scala-library.jar を加えるだけで, Scala で ImageJ プラグインを書くことができた.以下は単純なバックプロジェクションをする例.ImageJ API を呼ぶだけなので Java との差は型宣言の量くらいになった.そういえば Scala には ImageJ マクロと同じく break と continue がない.

import ij._
import ij.plugin._
import ij.process._
import ij.gui._

object Kbi_TestScala_ {
private def getHorizLine(ip: ImageProcessor, y: int) =
(for (x <- 0 until ip.getWidth) yield ip getf (x, y)).toArray[float]

private def makeEmpty(ip: ImageProcessor) =
new FloatProcessor(ip.getWidth, ip.getHeight)

private def project(fp: FloatProcessor, angle: double, line: Array[float]) = {
val ipTmp = makeEmpty(fp)
val numX = fp.getWidth
for (y <- 0 until fp.getHeight)
for (x <- 0 until numX)
ipTmp setf (x, y, line(x))
ipTmp setInterpolate true
ipTmp rotate angle
fp copyBits (ipTmp, 0, 0, Blitter.ADD)
}

def process(ipTomo: ImageProcessor, step: double) = {
val ipRet = makeEmpty(ipTomo)
var angle = 90.0
for (y <- 0 until ipTomo.getHeight) {
project (ipRet, angle, getHorizLine(ipTomo, y))
angle -= step
}
ipRet
}

def processAsPlugIn(imp: ImagePlus, step: double) =
new ImagePlus(WindowManager getUniqueName (imp.getTitle + "_bp"),
process(imp getProcessor, step)) show
}

class Kbi_TestScala extends PlugIn {
def run(arg: String) = {
val imp = IJ.getImage
val gd = new GenericDialog("parms")
gd addNumericField ("angle", 1.0, 1)
gd showDialog
if (!(gd wasCanceled))
Kbi_TestScala_ processAsPlugIn(imp, gd getNextNumber)
}
}


b0095474_630418.jpg

左上: 原画像(植物培養細胞),右上: 原画像を1度ずつ回転後,投影して得たシノグラム,左下: 上記プラグインにてバックプロジェクションして得られた復元像,右下: 復元像の高周波数成分のみを取り出した像.
[PR]
# by edogawadai_bio | 2008-03-17 02:51 | comp
京都
自然科学縦横無尽2007 で京都に行った.
翌夕,103系で宇治の手前,黄檗駅に行き,「縦横無尽」で知り合った生存研の方に案内していただいた.

萬福寺: 晩課の時間だったようだ.リズミカルで迫力のある声明(梵唄というらしい)が印象的だった.調べたら CD になったり公演をしているようだったが,それもうなづける.

b0095474_2114550.jpg


宇治キャンパス: 土地や建物の雰囲気が環境研を思い出させる.戦前からありそうな赤レンガの倉庫や,高度経済成長期に作られたような建物,まだ活躍している DIGITAL 4000 や PC-9801シリーズなどなど,柏と違い歴史があるのがうらやましい. NMR の話は驚くことばかりだった.

廊下
b0095474_2143582.jpg


発酵装置.「もやしもん」チックな研究室だった.
b0095474_2151222.jpg


お土産におたべを買ったところ,進研ゼミのDMについてきたような漫画(「京で一番古い八ッ橋やさん -八ッ橋誕生物語-」) がおまけについてきた.6ページで4つの舞台(現代,三河国八橋の故事,江戸,明治)にまたがっていたり,冒頭でショッキングな展開があったりと,読み応えのあるものだった.
[PR]
# by edogawadai_bio | 2007-11-04 23:55 | sanji
Krell
b0095474_16402873.jpg
X で使っている各種モニタリング?ソフトの GKrellM の名前の由来が SF 映画であることがわかった.

作者のサイト の FAQ によると, gkrellm は GNU (or Gtk) Krell Monitors (or Meters) の略であり, Krell は 1956 年製作の SF 映画, Forbidden Planet (「禁断の惑星」 ) に出てくる惑星第4アルテアの先住民族 Krell (クレール人)に由来するそうだ. Krell の部屋の壁中にモニタが並んでいるらしい.

SFというカテゴリを思索的世界を扱うフィールドとして使ったという点で、SFのその後の発展につながった金字塔的作品という評価もある。

などと日本語版 Wikipedia に書いてある(関連作品にイデオンが挙がっていたりする)ので,この辺はうちの先生に聞いてみようと思う.
[PR]
# by edogawadai_bio | 2007-09-25 16:38 | comp
駒場
駒場へ行く用事があったので,母校によってきた.次クールからはじまるアニメの原作で,「中庭」の背景として登場したらしい.検索すると既にいわゆる「聖地」訪問報告のページがちらほらある.アニメ化で埼玉の神社のような騒ぎにならないか余計な心配をした.関係ないと思うが,在校時代は倉庫のようになっていた守衛所が使われているのを初めて見た.

現国のS先生と,生物のN先生と,社会のY先生と挨拶することができた.

田んぼ
b0095474_17401593.jpg
[PR]
# by edogawadai_bio | 2007-09-21 17:37 | sanji
長崎
長崎に行った.軍艦島のまわりを一周りする観光船にのった.
グラバー邸から見た立体的な夜景も壮観だった.

b0095474_17525363.jpg
b0095474_1872496.jpg
[PR]
# by edogawadai_bio | 2007-09-15 17:50 | sanji
7階スピニングディスク CLSM についてメモ
7階スピニングディスク CLSM についてメモ

20倍
FWHM of Z: 5.5
FWHM of XY: 1.29
FWHM aspect(Z/XY): 4.26
pixel size: 0.322

40倍
FWHM of Z: 3.5
FWHM of XY: 0.81
FWHM aspect(Z/XY): 4.32
pixel size: 0.161

60倍 (air)
FWHM of Z: 3.0
FWHM of XY: 0.54
FWHM aspect(Z/XY): 5.56
pixel size: 0.107

60倍 (oil)
FWHM of Z: 0.7
FWHM of XY: 0.43
FWHM aspect(Z/XY): 1.63
pixel size: 0.107

100倍 (oil)
FWHM of Z: 1.1
FWHM of XY: 0.32
FWHM aspect(Z/XY): 3.44
pixel size: 0.064
[PR]
# by edogawadai_bio | 2007-08-23 07:08 | img
median
大き目の配列から中間値(median)を得る必要があり,単に sort してから中心の値を得る方法と,Modifind アルゴリズム (Hoare C.A.R (1971) CACM 14: 39- の FIND アルゴリズムを改良したもの) 及び Floyd R.W. and Rivest R.L. (1975) CACM 18: 173- の方法を,それぞれ Java で試してみた.

Modifind 法や F&R 法の解説や Rexx での実装例が
http://www.geocities.com/zabrodskyvlada/3alg.html
にあり,参考になった.Google のソースコード検索も役立った.

sort 法では, JRE の java.util.Arrays.sort() を用いた(条件が悪い場合を考慮した quicksort )ため,平均計算量は O(N * log(N)) である. Modifind 法 と F&R 法 は O(N) らしい. N は要素数.

手元の環境(JDK 1.5, Athlon64 3500+)では,およそ 10 k 要素の場合, sort 法は数秒, O(N) の方法ではその 1/10 くらいを要した.また, 100 M 要素くらいまで Modifind 法 が F&R 法より若干速かった.もっと大きくなると逆転するかもしれない. Modifind 法は F&R 法の半分以下の行数(30 行程)で書けることもあり,ひとまず Modifind 法を用いることにした.

一様乱数からなる double 配列からの median 算出時間
b0095474_113734.gif

[PR]
# by edogawadai_bio | 2007-08-11 01:02 | comp
emacs + skk での変換待ち
Debian etchにて emacs21 で skk を使って漢字変換する際に,数秒待たされることがあった. Debian sarge でも同様で, 1年くらい悩まされてきたように思う.具体的にはローカル辞書にない語を変換したり,ローカル辞書の候補を全部表示した後に変換すると, skk サーバとの通信で emacs プロセスが数秒ほど CPU 利用率 100 % の状態になってしまう. ~/.emacs での設定をいじったり,利用パッケージを変えても解決せず, web を検索したり,身近な skk ユーザに尋ねてもわからなかったので放置しておいたが,今日になって偶然,skk の mailing list アーカイブにて
skk-search-server-1 is slow
で始まるスレッドに対応する情報と解決策を見つけた.

手元の環境で (setq skk-server-report-response t) とすると,「189876 回 SKK サーバーの応答待ちをしました」となった.

(sit-for 0.01) を書き足す.

% sudo vi /usr/share/emacs/site-lisp/ddskk/skk-server.el

--- skk-server.el-orig 2006-02-18 09:05:25.000000000 +0900
+++ skk-server.el 2007-08-10 05:34:26.000000000 +0900
@@ -101,6 +101,7 @@
(process-send-string skkserv-process (concat "1" key " "))
(while (and cont (skk-server-live-p))
(accept-process-output)
+ (sit-for 0.01)
(setq count (1+ count))
(when (> (buffer-size) 0)
(if (eq (char-after 1) ?1) ;?1

バイトコンパイルをしなおす.

% sudo /usr/lib/emacsen-common/packages/install/ddskk emacs21
install/ddskk: Handling install for emacsen flavor emacs21
% sudo /usr/lib/emacsen-common/packages/install/ddskk xemacs21
install/ddskk: Handling install for emacsen flavor xemacs21

SKK サーバの応答待ちは 1 ~ 数回になり,数秒の待ち時間もなくなった.
[PR]
# by edogawadai_bio | 2007-08-10 06:24 | comp
歯医者
歯医者で左下奥歯(6番)の抜髄後の処理,根管の充填と土台作りをしてもらった.

針金みたいなのを差し込んだ状態で口内法X線撮影(「デンタル」と呼んでいるようだ)をするのは昔から一緒だが,通っているクリニックでは数年前からフィルムの読み取り以降がデジタル化された(フィルムも銀塩ではなくなったのかもしれない).スキャナでのフィルムの読み取り後,データベースに登録され,診察台ごとに置かれた Windows のクライアント(Digora for Windows)側から眺めることができる.横から先生の操作を眺めていると ,ヒストグラム均一化らしきボタンを押した後,画像を見つつ黄色のカーブ(トーンカーブ.ガンマ曲線.グレイスケール→グレイスケールのLUTを可視化したもの)をいじることが多い.トーンカーブは輝度ヒストグラムと累積曲線に重ねて表示されており,わかりやすいと思った.Photoshop や ImageJ では残念ながらこれらは別の機能単位になっている.

抜髄に使う針金みたいなものが何というのかを調べたところ,リーマ,Hファイル,Kファイルなどのバリエーションがあることがわかった.カラーコード化されているらしい.これが入ったアクリル?の箱はカラフルなことに納得がいく.鎮痛剤無しでは我慢できないくらい歯が痛い状態の時に(大抵そうなってから歯医者にいくわけだが),これを歯髄の奥の方にねじ込まれる時の痛みは相当なものがある.

http://yasudadental.cocolog-nifty.com/dental/2006/09/post_1abe.html
[PR]
# by edogawadai_bio | 2007-08-01 00:18 | sanji
BY-3
資生堂が昔(80年代くらい), BY-3 というシャンプー類を出していたことを知った.
[PR]
# by edogawadai_bio | 2007-07-19 05:42 | sanji
apache から zope につなぐ (VirtualHostMonster と Apache proxy_module) 続き
LANの外からアクセスしたところ,やはり ZWiki のアイコン画像をうまく参照できていない. http://foo:8081/ のように apache を介さずアクセスすれば問題ないが, http://foo:80/zp/ のようにすると駄目なので, URL を zope に引き渡す際の問題と思える.

/var/log/apache/error.log で File does not exist となっているアイコン画像ファイルについて,ブラウザから直接 zope にアクセスした場合に対応する URL を探ってみた.その結果, /var/www/misc_/ZWiki/star_icon は http://foo:8081/misc_/ZWiki/star_icon が, /var/www/p_/sp は http://foo:8081/p_/sp が,対応するファイルであることがわかった.

そこで, /etc/apache/httpd.conf における mod_probe の設定において,上記に対応する行,すなわち

ProxyPass /p_ http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/p_/
ProxyPassReverse /p_ http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/p_/
ProxyPass /misc_ http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/misc_/
ProxyPassReverse /misc_ http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/misc_/
を追加したところ,この問題は解決した.fastcgi 方式でも同様の変換をすべきだったのだろう.
[PR]
# by edogawadai_bio | 2007-06-20 01:54 | comp
apache から zope につなぐ (VirtualHostMonster と Apache proxy_module)
fastcgi による apache から zope へのリクエスト割り振りを試みたところ, ZWiki のアイコン画像の参照だけうまくいかなかった.このとき var/log/apache/error.log には下記のように表示された.

[Fri Jun 15 14:37:34 2007] [error] [client 192.168.1.2] File does not exist: /var/www/misc_/ExternalEditor/edit_icon
[Fri Jun 15 14:37:34 2007] [error] [client 192.168.1.2] File does not exist: /var/www/misc_/ZWiki/star_icon
[Fri Jun 15 14:37:34 2007] [error] [client 192.168.1.2] File does not exist: /var/www/p_/sp

「 apache zope 」を検索語で調べると, Apache でアクセスを受け取り,一部を Zope に任せる方法は他にも幾つかあるらしい.そのうち「 VirtualHostMonster と Apache のプロキシ機能を使う方法」は簡単そうであり,丁寧な説明のあるページを見つけたので,これを用いることにした.
http://desktop.good-day.net/blog/index.cgi/software/zope/plone/publish.htm
http://desktop.good-day.net/blog/index.cgi/software/zope/plone/mapping.htm

試した環境および意図する設定は下記の通り.
machine: debian/etch (192.168.1.2)
zope2.9: LANでは port 8081 でリクエストを受けとる. http://192.168.1.2:8081/manage/ で ZMI .
外部からは apache を介して, port 80 で受けとる. http://foo/zp/manage/ で ZMI . (foo はインターネット上でのホスト名とする)
apache1.3: port 80 で受けとる.

つまり, http://foo/zp/* は Zope が,他は Apache が,という風にして処理の振り分けを行なう.

1. ZMI (Zope Management Interface) にて VirtualHostMonster 導入

http://192.168.1.2:8081/manage にブラウザでアクセスし,ZMI画面へ行く.「 VirtualHostMonster 」というプロダクトを右上の Add にて追加する. ID を尋ねられるが,空白でなければ適当でよいらしい.試した環境では,Add したところ下記のエラーがあらわれた.

Site Error
An error was encountered while publishing this resource.

Error Type: BadRequest
Error Value: This container already has a Virtual Host Monster

「すでにある」とのエラー内容から,あらためて ZMI の root folder を眺めると,最下行の virtual_hosting という ID のインスタンスが, VirtualHostMonster であることがわかった.つまり既に導入されていたということになるが,自分で行なった覚えはないので何らかのパッケージのインストール時のデフォルト設定だと思う.

とりあえず既に存在していることがわかったから,次に進む.

2. apache の proxy_module を有効にする

/etc/apache/modules.conf において proxy_module が存在するかを確認する.

% grep proxy_module /etc/apache/modules.conf
LoadModule proxy_module /usr/lib/apache/1.3/libproxy.so

存在しない場合は,同ファイルを管理する下記コマンドを実行してみる.

% sudo /usr/sbin/apache-modconf apache

試した環境では,これにより有効になった.

3. apache の VirtualHost 設定

/etc/apache/httpd.conf を編集し,ファイル末尾に下記を加える.

NameVirtualHost *
<VirtualHost *:80>
ServerName foo
ProxyRequests Off
<Directory proxy:*>
Order deny,allow
Allow from all
</Directory>
ProxyPass /zp http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/
ProxyPassReverse /zp http://localhost:8081/VirtualHostBase/http/foo:80/VirtualHostRoot/_vh_zp/
</VirtualHost>

そして apache の再起動.

% sudo /etc/init.d/apache restart


4. 確認

LAN 内部では http://192.168.1.2/manage/ で ZMI に至ることを確認.
LAN 外部からの確認は, http://foo/zp/公開設定のページ に外からつながることを確認.
[PR]
# by edogawadai_bio | 2007-06-17 05:55 | comp
apache から zope につなぐ (fastcgi)
解放するポートを80番だけにしたい,かつ,apache と zope を両方使いたい,ということで,80番ポートで apache を動かしておき,一部のアクセスは zope に処理を任せるようにした.http://ns.jk.to/zwiki/InstallMemo を参考にした.

チェックには エキサイト翻訳 のウェブ翻訳を利用させてもらった.
[PR]
# by edogawadai_bio | 2007-06-16 00:18 | comp
fuga
最近,『怪物王女』という漫画・アニメが気に入っている.とくにフランドルという「ふが」としか言わない人造人間が良い.「ふが」はもちろん,藤子不二雄の『怪物くん』のキャラクターであるフランケンの「ふんがー」から来ている.しかし「ふが」自体,何か親しみを覚えるというか馴染み深い響きだ.

…と思っていたら,国産メタ構文変数 fuga と同じであることに気がついた.同系列のメタ構文変数 hoge は一説によると藤子不二雄作品に由来するらしい(↓)が, fuga についてもルーツは一緒なのかもしれない.

ほげを考えるページ http://kmaebashi.com/programmer/hoge.html
[PR]
# by edogawadai_bio | 2007-06-16 00:05 | niji
zope timezone bug ?
COREBlog2 および zwiki on plone において追加したエントリの作成日時が,実際より数時間くらい進んでいることに気づいた. zwiki については気にしなければどうということでもないが, COREBlog2 については未来のエントリとして扱われてしまい,表示に支障をきたしていた.

タイムゾーンの問題かと思い設定箇所を探したものの, 非 plone の zwiki における option 以外に見つけられなかった. あきらめかけていたところ, zope 2.9.6 においてシステムのタイムゾーンがグリニッジ標準時 (GMT) 以外だと現れるバグがあるらしい,という 情報(例えば http://www.zope.org/Collectors/Zope/2191 )に行き当たった.

debian/etch のパッケージとして導入したこともあり, zope 自体のバージョンを上げる気になれず,タイムゾーンを GMT にして回避を試みる.

/etc/timezone を Asia/Tokyo から Etc/GMT などに変えればいいのだが,直接編集してよいものか判らなかったので,下記の方法をとった.


% sudo tzconfig
Your current time zone is set to Asia/Tokyo
Do you want to change that? [n]: y
Please enter the number of the geographic area in which you live:
1) Africa 7) Australia
:
Number: 12

GMT GMT+0 GMT+1 GMT+10 GMT+11 GMT+12 GMT+2 GMT+3 GMT+4 GMT+5
:
Please enter the name of one of these cities or zones
You just need to type enough letters to resolve ambiguities
Press Enter to view all of them again
Name: [] GMT
Your default time zone is set to 'Etc/GMT'.
Local time is now: Wed Jun 13 17:15:56 GMT 2007.
Universal Time is now: Wed Jun 13 17:15:56 UTC 2007.

% cat /etc/timezone
Etc/GMT

[PR]
# by edogawadai_bio | 2007-06-14 17:48 | comp
COREBlog2 の設置
COREBlog2 を試してみる. debian/etch においては,対応するパッケージ導入後,下記のようにすると利用できた.

% cd /var/lib/zope2.9/instance/plone-site/Products
% sudo ln -s /usr/share/zope/Products/COREBlog2 .
% sudo /etc/init.d/zope2.9 restart
% (Plone に管理者権限でログインし,頁右上「サイト設定」で COREBlog2 を追加)

Plone は動作が重いとは聞いていて実際にそうだなと感じたが,その上で動く COREBlog2 や zwiki はさらに遅い. Plone 上でない zwiki はそんなでもないのだが….
[PR]
# by edogawadai_bio | 2007-06-11 23:56 | comp
Linux環境でのImageJのバージョンアップ
数ヶ月ぶりにImageJのバージョンアップをした(1.38d→1.38t).

ZIPファイルの入手~展開

http://rsb.info.nih.gov/ij/download/src/ に最新版のソースファイルがZIP形式でおいてある.
http://rsb.info.nih.gov/ij/download.html
からは安定版(1.37)がダウンロードできるが,上記に比べて古い(現在のところ2006年秋のリリース).

% cd opt/ImageJ
% wget http://rsb.info.nih.gov/ij/download/src/ij138t-src.zip

以前のバージョンのファイルを退避する.
% mv api api_backup
% mv ij.jar ij.jar_backup

展開する.
% unzip ij138t-src.zip
% mv source src-138t
% cd src-138t

ソースの整形

ImageJ用プラグインを作成する際には,ImageJのAPIを使う必要がある. ImageJのAPIドキュメントはjavadocで生成できるが,その記述は十分ではない.その場合にはソース自体を参照する必要があるが,インデントや改行コードがまちまちであり, 読みづらいので統一する.

余分なファイルが入っていることがあるので,javaソースファイル以外を列挙し,必要に応じて削除する.

ファイル名を眺める.
% find ij -type f | grep -v "\.java"
% find -type f | grep -v "\.java"

余計なファイルを消す.
% rm .FBCIndex
% rm -rf .FBCLockFolder
% rm .gdb_history

改行コードをLF(0x0a)に統一する.
% find ij -type f | xargs ~/bin/2jis.pl

ImageJには改行なしの"}"で終わっているソースファイルが60くらいある.文法的に間違いではないようだが,astyleによる整形時に問題になる(astyle 側のバグ? "}"が一つ多く出力されてしまう).そのため,前もってファイル末尾が改行で終わるように書換える.tail_ret.pyはそのためのスクリプト.

% find ij -type f | xargs ~/bin/tail_ret.py

astyleでソースファイルを整形.
% find ij -type f | xargs astyle -j --style=java -p -s

もとのファイルがfoo.java.origなどとなっているので消す.
% find ij -type f -path '*\.java\.orig' | xargs rm

コンパイル

(あれば)パッチをあてる.

% patch ij/plugin/AboutBox.java ~/aboutbox.patch

コンパイルし,ij.jarを作る. ただし開発環境であるLinuxでの実行はij.jarではなくbuildを直接使うようにする. IJ_Props.txtのカスタマイズを容易にするため.

% ant build

About画面のカスタマイズ.動作には不要.
% cp ~/about_image.jpg build/about_add.jpg
% ant build

APIドキュメントを../apiに作る.
% ant javadocs

環境設定

build/IJ_Props.txt

ij/Prefs.javaで読み込む.ij.jarにクラスファイルを格納して実行する様式の場合,ij.jar内に入ってしまうので編集が面倒になる.
メインメニュー・ポップアップメニューの全構成を管理する.例えばpopupの最後に popup13=Save などと追加することで画像の右クリックメニューからファイル保存可能になる.
ショートカットキーの一部を管理する.メニュー項目を直接起動することによる.例えば lookup04="Fire"... を lookup04="Fire[L]"... に変更すると,Lキー押下で起動する.

IJ_Prefs.txt

ij/Prefs.javaで読み込む.Windowsの場合,ImageJのインストールディレクトリ(C:\Program Files\ImageJ\等)に存在する.MacOS Xの場合,/home/ユーザ/Library/Preferences/ に存在するらしいが,未確認.Linux場合,/home/ユーザ/ に存在する.
ImageJの終了時に更新されるため,編集する際にはImageJを終了させておくとよい.
ショートカットキーの一部を管理する.メニューPlugins-Shortcutsから追加・削除できるものと同じ.IJ_Props.txtのショートカットキーと重複する場合は無効となる.
最近開いたファイルの一覧や,ImageJのメニューから設定可能な項目を管理する.
プラグインからも,Prefsオブジェクトを用いることで各種パラメタをIJ_Prefs.txtに管理させることができる.

変更点

http://rsb.info.nih.gov/ij/notes.htmlにまとめられている.

開発していて気づいた変更点として,ver. 1.38rでのGaussianBlur.javaの大幅改訂がある.publicメソッドの一部も変更されているため,同ファイルを利用するプラグインについても対応が必要.カーネルサイズが大きい場合,多重解像度を用いて高速に処理するようになった(ソースファイルをざっと読んだ限りでは).それにともない,パラメタが「カーネル幅(画素単位)」から「正規分布の分散」に変更された.従来のパラメタの1/2.5くらいの数値を用いると同等の結果になるらしい.つまり以前 25だったら,新版では10とのこと.
[PR]
# by edogawadai_bio | 2007-06-08 23:41 | img
広域顕微鏡
「広域顕微鏡」という見慣れない言葉を目にした.wide-field microscopyを訳したものと思われる.今日現在,Googleで1件もヒットしないので"新訳"のようだ.「広域蛍光顕微鏡」もヒットなしだった.調べてみると,接眼レンズや望遠鏡ではwide-fieldを「広視野」と訳しているようだ.bright-fieldが「明視野」,dark-fieldが「暗視野」なので対応はとれている.near-fieldは「近接場」と書かれることが多いが,光学用語では「近視野」とも書き,far-fieldは「遠視野」らしい.

そもそも共焦点顕微鏡(confocal microscopy)と比較する文脈において従来の蛍光顕微鏡がwide-field [fluorescence] microscopyと書かれていることが多いが,実はwide-field microscopyの定義や,何をもって"wide-field"なのかについてきちんと理解できていない.走査型顕微鏡のように点走査や線走査でなく視野を平面として一度に撮るからwideなのか,PSFがZ方向にwide(つまりボケる)なのか,それとも他に語源があるのか?

直接関係ないが,light field microscopyというのが面白い.
http://graphics.stanford.edu/papers/lfmicroscope/
マイクロレンズアレイを光路に入れ,フォーカスを動かさない一度の撮影で得られる画像から連続光学切片を抽出するようだ.デモ用ビデオを見ると感覚的にはわかったような気になる.ビデオの結びで「この立体データは一枚の写真から再構築した」と強調しているのがかっこいい.ただしざっと見た限りでは細胞内構造レベルの強拡大像についても利用できるのかわからなかった.
[PR]
# by edogawadai_bio | 2007-04-27 21:31 | img