DCM (Data Conversion Module) は,様々なデータ解析ソフトウェアやシミュレータ間でデータを共有するためのシステムです.このシステムでは,次に示すソフトウェアのデータをサポートしています.
AXON pClampの ABF 形式
AVS のフィールドデータ形式
テキスト形式ファイル
MATLAB の Matrix 形式
Mathematica のリスト形式
Genesisのdisk_out オブジェクト出力ファイル
Neuron の出力ファイル
TEAC 製ディジタルレコーダ DR-M2a / M3a の出力ファイル
例として,項4. 「NCS による神経回路網のモデリングシミュレーション」 で使用したサンプル (hhmodelE.sl) を使用します.
シミュレーションを実行し,Excel で読むファイルを作る手続きは,次のようになります.
[]SATELLITE[]~/home/demo:[1]% inline("hhmodelE.sl") []SATELLITE[]~/home/demo:[2]% V1=V[0] []SATELLITE[]~/home/demo:[3]% V2=V[1] []SATELLITE[]~/home/demo:[4]% V3=V[2] []SATELLITE[]~/home/demo:[5]% buffer2text("hhE.txt"," ,%8.4f ,%8.4f , %8.4f\n",V1,V2,V3)
これで,Excel で読むことができるファイルが作成され,Excel からファイル hhE.txt をテキスト形式 (カンマ区切り形式) で読んだ結果は,次のようになります.
式 (1) で作成されたデータを 図 9.2. 「式 (9.1) を Excel で実行した結果」 に示します.
但し,B 列が t,C 列が x を表しています.
Excel でタブ付きテキスト形式で保存すれば,SATELLITE 変数に代入することができます.SATELLITE で,このテキスト形式ファイルを読む例を次に示します.
[]SATELLITE[]~/home/demo:[6]% x=text2buffer("sweep.txt") []SATELLITE[]~/home/demo:[7]% index(x) [0]:% 3000 3 []SATELLITE[]~/home/demo:[8]% []SATELLITE[]~/home/demo:[9]% wopen(1,"A4",0,1) []SATELLITE[]~/home/demo:[10]% size(120,80) []SATELLITE[]~/home/demo:[11]% color("black","black") []SATELLITE[]~/home/demo:[12]% lwidth(1,1) []SATELLITE[]~/home/demo:[13]% origin(40,40) []SATELLITE[]~/home/demo:[14]% scale("N","F","N","F",0,3000,-1.2,1.2) []SATELLITE[]~/home/demo:[15]% graph(x[2],"T",0,0,0,0,0) []SATELLITE[]~/home/demo:[16]% title(1,"point","Amplitude") []SATELLITE[]~/home/demo:[17]% axis(1,1,"XY","XY",5,0,0,0,0,0) []SATELLITE[]~/home/demo:[18]% frame()
例として,項4. 「NCS による神経回路網のモデリングシミュレーション」 で使用したサンプル (hhmodelE.sl) を使用します.
シミュレーションを実行し,MATLAB で読むファイルを作る手続きは,次のようになります.
[]SATELLITE[]~/home/demo:[19]% inline("hhmodelE.sl") []SATELLITE[]~/home/demo:[20]% buffer2matlab("V.mat","V",V)
これで,MATLAB で読むことができるファイルが作成されます.MATLAB では,次のように関数を入力することで,Workspace に buffer2matlab 関数で指定した変数名で取り込むことができます.
>>load V.mat
取り込んだ結果をプロットするには,次のように入力します.
>>VT=V’ >>plot(VT)
結果を 図 9.4. 「実行結果」 に示します.
>>num=[4 5] >>den=[1 3 2] >>[k,p]=residue(num,den) >>t=0:0.01:10 >>y=k(1)*exp(p(1)*t)+k(2)*exp(p(2)*t) >>plot(t,y) >>xlabel('time [s]'); ylabel('y(t)'); grid
>>save time.dat t >>save outp.dat y
[]SATELLITE[]~/home/demo:[21]% matlab2satellite("time.dat") []SATELLITE[]~/home/demo:[22]% time = $"t" []SATELLITE[]~/home/demo:[23]% matlab2satellite("outp.dat") []SATELLITE[]~/home/demo:[24]% outp = $"y" []SATELLITE[]~/home/demo:[25]% wopen(1,"A4",0,1) []SATELLITE[]~/home/demo:[26]% color("black","black") []SATELLITE[]~/home/demo:[27]% sx = 80 []SATELLITE[]~/home/demo:[28]% sy = 80 []SATELLITE[]~/home/demo:[29]% origin(40,40) []SATELLITE[]~/home/demo:[30]% size(sx,sy) []SATELLITE[]~/home/demo:[31]% title(1,"time [s]","y(t)") []SATELLITE[]~/home/demo:[32]% graph(yout,tim,0,0,0,0,0) []SATELLITE[]~/home/demo:[33]% axis(1,1,"XY","XY",5,0,0,0,0,0) []SATELLITE[]~/home/demo:[34]% ltype(2,1) []SATELLITE[]~/home/demo:[35]% line(0,sy / 2,sx,sy / 2) []SATELLITE[]~/home/demo:[36]% ltype(1,1) []SATELLITE[]~/home/demo:[37]% frame()