« 「解明される意識」の翻訳にツッコミ | 最新のページに戻る | 僕らって基本的にゾンビモードだよね? »
■ Neurobehavioral Systemsのpresentationをいじり中。(2月に)
さて今日はNeurobehavioral Systemsのpresentationをいじり中。30日間使用できるので、とりあえずwindowsにインストールして、デモプログラムを動かしている。
デモプログラムを始めるのにリターンキーを押す必要があることに気づくのに30分かかるとかそんな調子。いまはマウスが日本語名であるためにプログラムから認識されない問題に対処中。娘は隣で宿題やってる。そんな休日。
日本語の外部機器(マウスとか)が見つからないって言われる問題はExperiment File(*.exp)のなかにその情報があるのか。いつも上書きしますか?と聞かれて嫌だと答えていたから同じこと何度も繰り返してた。
なんど日本語の「マウス」を指定してexpファイルを保存しても、読み込み時に文句言われて実際マウスが指定されていないので途方に暮れていたが、設定をよく見たらencodingがUTF-8でなくてsingle-byteであったことに気づいたときの徒労感は異常(<-なげえよ)。
Neurobehavioral systemsのpresentationいじり中。とっかかりになりそうな実験ファイルがあったのでそれを元に改変してゆく。だんだんわかってきた。
実験ファイルはおもに三つの部分で構成されていて、ヘッダとSDLとPCLがある。ヘッダに定数を置いて、SDLでクラスのインスタンスを作って、PCLでクラスのメソッドを使って動かしてゆくのだな。なるほどなと思ったのは、trial自体もクラスで、その中で提示時間とか刺激とかも定義する。
TEMPOのCライクな文法と比べるとこちらはオブジェクト指向な、もうちょいモダンな文法だ。10年前のわたしには無理だったかもしんないけど今なら使えそうだ。
たとえば赤い四角を定義するとしたらこんなふうになる。
box { height = 100; width = 200; color = 255,0,0; } red_box;
これでboxクラスのred_boxっていうインスタンスというかなんかを作る。あとは同じ要領で、刺激のパーツ(box)、課題の画面(picture)、課題のスケジュール(trial)が階層的に定義されていて、そのインスタンスを作ることができる。
たとえば赤い四角を一秒間提示してもう一秒経つと終了、という課題を作るときにはこういうふうにする:
#---------------------------- begin; box { height = 100; width = 200; color = 255,0,0; } red_box; picture { background_color = 0,0,255; box red_box; x = 0; y = -100; } red_pic; trial { trial_duration = 2000; picture red_pic; time = 0; duration = 1000; } red_trial; #---------------------------- begin_pcl; red_trial.present();
ぱっと見でだいたい何してるかはわかると思う。静的なところはbegin;以下の部分(SDL)に書いておいて、動的なところはbegin_pcl;以下の部分(PCL)に書いておく。たとえば提示する図をシャッフルするとかはPCLで。
クラスの定義のところ自体はもうありもんとしてreference manualに記載されているけど、たぶん頑張れば派生クラス作ったり、一からクラス作ったりすることはできるのだろう。
かなり進んだが、いまだにstimulus_dataとresponse_dataの違いとか分からない。stimulus_data.sceを読めばいいらしい。なにが気味悪いって、hit-missはstimulus-responseの関係なのにresponseの方に入っている点。
いまどきパラレルポートのあるPCなんてもうないから、デジタルの入出力をどうするかはけっこう問題らしい。 以下presentationのforumから:
- fMRI : Detecting a TTL pulse using USB
- fMRI : USB port for response during fMRI
- Hardware Interfacing : Output via USB port
- fMRI : Recommendation for a USB digital I/O device
Forumが充実しているってのは素晴らしい。
まあとりあえずTTL->USBコンバータ 買うのと、NIの一番安いUSB DAQユニット買うのの二本立てでなんとかしようと思う。
TEMPOだとひとそろい集めるので250万円くらいかかるので、presentationでPCひとつと5万円ってのは気楽だ。心理学的な課題(Visual searchとか)はたぶんこれでよい。視覚心理物理がこれでいけるかまだ分からない。PsychoPyとかいろいろ出てるし。
PCがどんどんレガシーなものがなくなっていって、CRTとかパラレルポートとかシリアルポートとかに依存しているものはどんどんやりにくくなっている。PsychoPyとかpsychotoolboxとかがどうやっているか分からないけど、OS上でやってるかぎり問題は変わらないはず。
たぶんもうソフトウェアだけでの解決ってのは無理なんだろう。なんかreal-time OSを走らせている外部boxを使ったシステムとして開発すればよいのではないかと思うのだけど。Matlabの場合でいえばxPC TargetBoxみたいなかんじ。
TEMPOは心臓部分をDOSのPCで動かしているのと形式的には同じだけど、TEMPOの場合はいまどきrealtime-OS部分にでかいPC一個あてがって(PCIボードを入れる必要があるから)、しかもフロッピーで起動とかクソ過ぎる。実験前に起動が引っかかったりして冷や冷やしたよ。
組み込み用のシステムだったらシリアルだってパラレルだって現役だろうし、なんか新しいことをする必要はないよね。中身ビーグルボードで1個50万で売ればじゅうぶん価格破壊で、年に50個売れて2000万円くらい儲かるんでないの? (<-まさに素人の床屋談義)
でもそれよかおしゃれなのはオープンソースハードウェアの流れで、外部boxとクライアントPCのプログラミング言語と全部込みでフリーってのがいいよな。たぶんそういうの支援する競争的研究費があるはずだから、業界への貢献としてそういうプロジェクトを立ち上げても良いんではないだろうか。
これも俺がやる仕事とは思えないけど、こういうのは使いたい人が作らないといいものにならないし(作ったけど動いてないシステムというのがあることは知っている)、オープンソース的思想でもってやります、ってだけで充分貢献だと思うけどなあ。
バカな質問なのかもしんないけど、そういう目的で科研費とって、オープン化前提で業者の人にデザイン・実装してもらうって可能ではないのだろうか。データ共有、解析関連の話にも繋がるけど、使いたい人が作るってところが大事だと思うんだ。
だがそんなことはどうでもよい。それより気がかりなのは、「今日の雨、傘がない」ということであって、枯れてたアジサイにこの冬いっぱいダメくさいと思いつつも水を与えてきたけれど、やはり芽は出ず、やっぱり無理だと決断して引っこ抜いたので、この植木鉢を今後どうするのかということだ。
(ついったに書いたことを元に編集して作成した)