> 2) current variance estimationにてArea IDに"Cortex"を選択(dipole reduction
> ratio=1.00)→263点の電流分散が計算された
current variance
estimationで263点のみで電流分散が推定されることは考えづらいです。
current variance
estimation以前の処理工程に何か間違いがある可能性があります。
以下の点を確認してみてください。
(1) brain model の頂点数
V= vb_load_cortex(brainfile);
でVを読み出す。Vの次元はいくつですか?
(2) "Cortex"に登録された頂点情報
Area = vb_get_area(areafile, 'Cortex');
でAreaを読み出す。 Area.Iextract はどうなってますか?
山下
大変失礼致しました、電流分散が263点というのは誤りでした。お騒がせして申し訳ございません。
(1) brain model の頂点数
V= vb_load_cortex(brainfile);
でVを読み出す。Vの次元はいくつですか?
→20004×3となりました。
(2) "Cortex"に登録された頂点情報
Area = vb_get_area(areafile, 'Cortex');
でAreaを読み出す。 Area.Iextract はどうなってますか?
→20004×1となりました。
正しい状況は以下となります。
1)current variance estimationにてArea IDに"ROI"を選択(dipole reduction
ratio=1.00)→ROIの99点の電流分散が計算された
estimate currentにてArea IDに"ROI"を選択→ROIの99点の信号が推定された
2) current variance estimationにてArea IDに"Cortex"を選択(dipole reduction
ratio=1.00)→全脳皮質20004点の電流分散が計算された
esimate currentにてArea IDに"ROI"を選択→263点の信号が推定された
ここで、2)の際は J=WZにおいて、Z(Zact): 263×T、W(Wact): 263×99となっております。
Wactは、 ".curr.mat"の"Jinfo.Wact"を確認しております。
何度もお手を煩わせてしまい申し訳ございません。
ご教示よろしくお願い致します。
> 2) current variance estimationにてArea IDに"Cortex"を選択(dipole reduction
> ratio=1.00)→全脳皮質20004点の電流分散が計算された
> esimate currentにてArea IDに"ROI"を選択→263点の信号が推定された
> ここで、2)の際は J=WZにおいて、Z(Zact): 263×T、W(Wact): 263×99となっております。
> Wactは、 ".curr.mat"の"Jinfo.Wact"を確認しております。
Wact
は空間平滑化フィルタです (平滑化の大きさはbayes_parm.Rfiltで指定されます)。
Jは "ROI"で指定された99個の頂点における電流Zを、空間平滑化フィルタ
をかけてぼやかしたものとなります。
ちなみに、Jの263点の脳モデル上の頂点インデックスは
Jinfo.ix_act_ex に収められています。
”高解像度の頂点で推定された電流から空間的にダウンサンプルした電流を計算する”ときに、現在渋沢さんが行っているような
Area ID
で抜き出す方法はお勧めしません。この方法は、空間的にサブサンプルしているだけであり、その他の頂点の電流値は
全て無視されます。解決策としては、ROI分割情報を利用することが考えられます。
Area ID = "ROI"
の99個の頂点は解剖学的または機能的に大脳皮質を分割した領野の代表点だと推察します。
そうであれば、99個の領野に属する頂点集合が定義できるので、それをArea file
に area_key をつけて登録します。
そして、estimate current でarea_keyごとに
その領野に属する電流を取り出し、平均値また第1主成分などで代表時系列を
計算します。
最後の代表時系列の取り出すところは、決定版がなくて難しいところですが、だいたい以上のような手続きで計算すると良いと
思います。参考まで。
山下
分かりづらい説明となってしまい申し訳ございません。
現状と疑問点について、再度説明させて頂きたく思います。
まず、特定のROIに該当する全頂点の各電流値を求めたいと考えております。これが最終的な目標となります。
そこで、他のソフト(spm)にて皮質上に機能的なROIを定義し、".brain.mat"と".spm.mat"を用いて".area.mat"".act.mat"を作成する工程と同様の方法で、領域を定義しています(このうちのact情報は不要で、area情報を用いる方針です)。ここで定義される頂点集合は、代表点集合ではなくROIに含まれる全頂点集合だと解釈しており、"view estimated current"でvertex indexに数値を打ち込みなが
ら確認をしました。
次に、前回お伝えした問題点について、時系列順にの記述します。
以下で言うROIは上で述べた方法で定義したものです。
*解析1
current variance estimationにてArea IDに"Cortex"を選択(dipole reduction
ratio=1.00)→全脳皮質20004点の電流分散が計算された
esimate currentにてArea IDに"ROI"を選択→263点の信号が推定された
ここで、J=WZにおいて、Jはその領域に含まれる全頂点の各電流値、Wは空間平滑化フィルタ、Zは間引きして推定した代表点の各電流値と理解しています。
よって、サンプル数をTとすると、Jは99×T、Wは99×99、Zは99×Tとなることを期待していました。
しかしながら実際は、Z(Zact): 263×T、W(Wact): 99×263となっております。
Zactは、".curr.mat"の"Zact"を、Wactは、 ".curr.mat"の"Jinfo.Wact"を確認しております。
また、"Jinfo.ix_act"は263×1、"Jinfo.ix_act_ex"は99×1となっております。
ここで、ZactがROIより拡張した範囲の頂点集合になっていたこと、空間平滑化フィルタが頂点数を減らすサイズであったことを不思議に思い、次の方法を試しました。
*解析2
今回はレスティング課題のデータを解析しているため、電流源の活動位置に関する信頼できる事前情報がなく、電流分散を推定する際にROIのみに推定することは、推定精度を下げる要因になると考えています。
しかし、計算処理の工程を知りたく、データ構造を確認するため、以下のように行いました。
current variance estimationにてArea IDに"ROI"を選択(dipole reduction
ratio=1.00)→ROIの99点の電流分散が計算された
stimate currentにてArea IDに"ROI"を選択→ROIの99点の信号が推定された
私の予想していた結果は、解析1の方法で、Zact,Jactの次元がともに99×Tとなることでした。
この現象が起こる原因について、ご意見を頂けたら幸いです。
お手数おかけしておりますが、よろしくお願い申し上げます。
> ここで、ZactがROIより拡張した範囲の頂点集合になっていたこと、空間平滑化フィルタが頂点数を減らすサイズであったことを不思議に思い、次の方法を試しました。
この解釈が完全に間違っています。
estimate current で Area IDを指定した時に起こることは、
1. ROIで指定された頂点の電流を抽出 Z 99*T
2. それを空間平滑化フィルタで拡張 J = WZ 263*T
です。
山下
ご指摘ありがとうございます。
".curr.mat"の"Zact"は J = WZにおける J を意味しているということになるのでしょうか。
"Zact"が上の式におけるZを意味しているならば、Wは99×263ではなく263×99になると考えているのですが、その点においても間違っているのでしょうか。
先のメールの私の説明に誤りがありました。
その訂正を含めて正確に説明したいと思いますので、やや長文になりますことご容赦ください。
話を明確にするために、プログラム上の関数名や変数名、具体的な変数のサイズを用いて記述します。
まずおさらいから。
estimate current = vb_job_current.m の機能は、J-current
を計算するために必要な
空間平滑化フィルタ W と Z-current を計算することです (J=WZ)。
curr.mat 内の変数 "Zact" は z-current となります。平滑化フィルタ情報は
"Jinfo" に収めれています。
つぎに vb_job_current内での計算ですが、主に以下の3つを行っています。
1. bayes_parm.area_key で指定された領域において、空間平滑化フィルタ W
を計算する。 (今回は全脳領域です)
2. bayes_parm.area_key で指定された領域において z-current を計算する。
(今回の場合は全脳です)
3. 1,2で計算された W, Z を curr_parm.area_key
で指定された領域に制限する。(今回の場合 ROIです)
ここで、ステップ3の部分が、今回のややこしい結果を引き起こす原因となっています。
全脳の J-current, Z-current, 空間平滑化フィルタを、 J (20004xT), W
(20004x20004), Z(20004xT), ROI の index を ix (99x1) とすると、
まずステップ1,2では
J = WZ
を満たすようにW, Jが計算されます。
次に、上記ステップ3 では、『ROI内のJ-currentの計算』に必要な値を、 W, Z
から抽出します。
つまり、次の式が満たされるように、? のインデックスを選びます。
J(ix) = W(ix, ?) Z(?)
ここで ? は、 ix
より大きい集合になるでしょうか? 小さい集合になるでしょうか?
W として空間平滑化なし(恒等行列)のケースを考えると ? は ix
と同じになります。
Wとしてある幅を持った空間平滑化フィルタのケースを考えると、 ? は ix
より大きくなります。
メール最後に付記しました、1次元の単純なケースを考えてもらえれば理解してもらえるかと思います。
以下、回答です。
> ".curr.mat"の"Zact"は J = WZにおける J を意味しているということになるのでしょうか。
Z です。
> "Zact"が上の式におけるZを意味しているならば、Wは99×263ではなく263×99になると考えているのですが、その点においても間違っているのでしょうか。
ROI内のJが復元されるように、Z,W が選ばれるため、非直感的ですが、W は
99x263、Zは263xT で間違いありません。
=========================================================
1次元の頂点の並びを考え、
J(n)はZ(n-1),Z(n),Z(n+1)の平均値で与えられるとします。
この時、平滑化フィルタWは
W(n-1,n) = W(n,n) = W(n+1,n) = 1/3
他のWの要素は、0です。
この時、J(2)に影響を与えるZは、Z(1),Z(2),Z(3)となります。
JはZを平滑化して得られるのですが、Jに影響を与えるZの範囲は、
拡がる結果となります。
===========================================================
山下
--
-----------------------------------------------------
Department of Computational Brain Imaging,
Neural Information Analysis Laboratories, ATR
Department Head : Okito Yamashita
E-Mail : oyam...@atr.jp
Address : 2-2-2 Hikaridai,Seika-cho,Soraku-gun,Kyoto,Japan
Phone : +81-774-95-1073
--------------------------------------------------------
丁寧なご説明を頂き、誠に感謝致します。
ご説明頂いた内容で、全ての疑問が晴れました。ありがとうございました。
稚拙な質問にお時間をお取りしてしまい、申し訳ございませんでした。
今後ともお伺いすることがあるかもしれませんが、どうぞよろしくお願い申し上げます。