******************************************************
***   job_view_cortex : 皮質モデル表示プログラム   ***
***********+++++++++++********************************
*
* 2005/9/8 thu ------ by TAKEMURA, Naohiro
*


1. 構成 --------------------------------------------------------------

このプログラムは、以下のM-ファイルで構成されています。

 * job_view_cortex_init.m --- 初期GUI生成ルーチン
					(ユーザ・インターフェイスの作成)

 * job_view_cortex_INIT_PARAMETER.m --- 初期パラメタ設定ファイル
 * job_view_cortex_aftereffect.m --- GUI効果制御サブルーチン
 * job_view_cortex_callback.m --- コールバック・インターフェイス
 * job_view_cortex_figure.m --- Figure生成 & Resize 制御サブルーチン
 * job_view_cortex_file.m --- Fileロード/セーブ用サブルーチン
 * job_view_cortex_list.m --- GUI内のリスト制御サブルーチン
 * job_view_cortex_param.m --- パラメタ設定GUI制御サブルーチン
 * job_view_cortex_plot.m --- 皮質描画サブルーチン
 * job_view_cortex_selection.m --- 領域選択制御サブルーチン
 * select3d.m --- job_view_cortex_selection.m で使用

ユーザが意識して使用するのは、job_view_cortex_init.m のみで、
あとのjob_view_cortex_...はすべて内部サブルーチンです。



2. 機能 --------------------------------------------------------------

 * .brain.mat ファイルに保存されている皮質モデルを表示
 * .act.mat ファイルに保存されている強度データを表示
 * .area.mat ファイルに保存されている皮質領域データを表示
 * 皮質上の任意の領域を選択
 * 選択領域から皮質領域データを作成
 * 作成した皮質領域データを .area.mat ファイル に保存



3. 使用方法 ----------------------------------------------------------

3.1 起動

すべての操作はGUIを用いて行います。
まず、matlab上で job_view_cortex_init を実行し、GUIを作成します。

Usage:
job_view_cortex_init( [ <.brain.mat file>, ...
                      [ '--inflate', <.inflate.mat file> ], ...
                      [ '--act', <.act.mat file> ], ...
                      [ '--area', <.area.mat file> ] ] )

引数なしの場合、GUIのみが作成されます。
.brain.matファイルを指定すると、GUI作成と同時にロードします。
その他のファイル指定はオプションで指定します。


3.2 GUIの構成

GUIは、以下のパートから構成されています。

 * Brainパート		--- 皮質モデル(.brain.mat/.inflate.mat)の制御
 * Activationパート	--- 活動強度(.act.matとそのデータ)の制御
 * Areaパート		--- 皮質領域(.area.matとそのデータ)の制御
 * Mouse Funcパート	--- 皮質描画座標軸上でのマウスの機能の制御
 * Selectionパート	--- 皮質上に任意の領域を選択する機能の制御
 * Axesパート		--- 皮質描画座標軸
 * その他		--- 座標軸の上のボタン類


3.3 各部の機能

3.3.1 Brainパート
  Brain パートでは、.brain.matファイルおよび.inflate.matファイルの
  ロードを行います。「load」ボタンによりファイル選択GUIが起動します。
  ファイルがロードされると、テキストボックスにファイル名が表示され、
  座標軸に皮質モデルが描画されます。.inflate.matファイルがロードされ
  ると、自動的にinflate表示に切り替わります。

3.3.2 Activationパート
  Activation パートでは、.act.matファイルのロード、表示する活動強度
  データの選択を行います。「load」ボタンによりファイル選択GUIが起動
  します。ファイルがロードされると、テキストボックスにファイル名が表
  示され、「Activation List」リストボックスに活動強度データのリスト
  が表示されます。「Activaion List」リストボックス内のアイテムを選択
  すると、「add」ボタンが有効になります。「add」ボタンを押すと、
  「Activation List」リストボックスで選択されたアイテムが、
  「Plotted List」リストボックスに追加され、そのアイテムの活動強度デ
  ータが皮質モデル上に表示されます。このとき、「Plotted List」リスト
  ボックスのアイテムの内、選択されたものは通常に描画されますが、選択
  されていないものは半透明で描画されます。描画されたデータを消去する
  には、「Plotted List」リストボックス内の該当アイテムを選択し、
  「del」ボタンを押します。「clear」ボタンを押すと「Plotted List」リ
  ストボックス内のアイテムがすべて消去されます。

3.3.3 Areaパート
  Area パートでは、.area.matファイルのロード/セーブ、表示する領域デー
  タの選択、マスクとして使用する領域データの選択を行います。「load」
  ボタンによりファイル選択GUIが起動します。ファイルがロードされると、
  テキストボックスにファイル名が表示され、「Area List」リストボックス
  に領域データのリストが表示されます。「Area List」と「Plotted List」
  の関係は、Activationパートの「Activation List」と「Plotted List」の
  関係と同じです。ただし、Areaパートでは通常、皮質領域は半透明で描画
  され、「Plotted List」リストボックス内の選択されたアイテムは、縁を
  伴って表示されます。また、「Plotted List」リストボックスと同様に、
  「Masking List」リストボックスにもアイテムを追加することができます。
  「Masking List」リストボックスに追加された領域データは、全体の描画
  に対するマスクとして使用されます。すなわち、「Masking List」リスト
  ボックス内の領域データの和集合領域のみが描画され、その他の領域は描
  画されません。「Masking List」リストボックス内のアイテムの選択は、
  描画に影響を与えません。
  また、「Area List」リストボックスのアイテムを削除することが可能で
  す。「Area List」リストボックスのアイテムを選択し、下にある「del」
  ボタンを押すと、そのアイテムは削除されます。編集した「Area List」は
  皮質領域データとしてファイルに保存することができます。「save」ボタ
  ンにより、セーブファイル選択GUIが起動します。

3.3.4 Mouse Funcパート
  Mouse Func パートでは、皮質描画座標軸におけるマウスの機能を選択しま
  す。機能は、Zoom In/Out, Rotation, Add Selection, Delete Selection
  の4つがあります。Zoom In/Outを選択すると、左クリックで座標軸が拡大
  され、右クリックで縮小されます。ダブルクリックでデフォルトに戻りま
  す。Rotationを選択すると、マウスポインタのドラッグで座標軸が回転し
  ます。Add Selectionを選択すると、クリックした皮質上の点の周りが選択
  領域に追加されます。逆に、Delete Selectionを選択すると、クリックし
  た皮質上の点の周りが選択領域から削除されます。

3.3.5 Selectionパート
  Selection パートでは、皮質上の任意の領域を選択する機能を制御します。
  選択領域は、上記のマウスポインタによる追加/削除の他に、Actパートの
  「Plotted List」リストボックスからの追加/削除、Areaパートの
  「Plotted List」リストボックスからの追加/削除、選択領域の膨張/収縮
  により操作できます。Act/Areaの「Plotted List」リストボックスからの
  追加/削除の場合、操作対象は描画されている領域の和集合領域または積集
  合領域になります。たとえば、Selectionパートの「Area」と書いてある右
  の「add int.」ボタンを押すと、Areaパートの「Plotted List」リストボ
  ックス内の領域データの積集合領域が選択領域に追加されます。領域選択
  の操作を間違った場合、「undo」ボタンにより1つ戻ることができます。
  「clear」ボタンは選択領域を消去します。「dilation」ボタンで領域の膨
  張、「erosion」ボタンにより領域の収縮を行います。この操作は非可逆操
  作です。「dilation」の後に「erosion」を行っても、もとの領域になると
  は限りません。選択した領域は、「register」ボタンにより「Area List」
  リストボックスに追加することができます。「register」ボタンを押すと、
  登録する領域のラベルを入力するGUIが起動します。また、Selectionパー
  トの最上部には、現在選択されている領域に含まれる頂点の数が表示されま
  す。

3.3.6 Axesパート
  皮質モデルおよび各種データが表示されます。マウスにより座標軸を操作
  することができます。操作の機能は、Mouse Funcパートで選択します。

3.3.7 その他
  「set parameter」ボタンは、各種パラメタの設定GUIを起動します(後述)。
  「print」ボタンは、現在描画されているものをepsに出力します。出力フ
  ァイル名は、"figure.eps" です。
  「close」ボタンは、現在のGUIを終了します。


3.4 各種パラメタの設定 -----------------------------------------------

設定できるパラメタには、以下のものがあります。「set parameter」ボタン
により、設定GUIが起動します。また、job_view_cortex_INIT_PARAMETER.mを
編集することでも設定が可能です。
デフォルトは、編集前の job_view_cortex_INIT_PARAMETER.m の設定です。

 * param.LRflg  : 描画する大脳半球の選択
	'L'  --- 左半球のみ
	'R'  --- 右半球のみ
	'LR' --- 両半球, デフォルト

 * param.model_type  : 描画する皮質モデルのタイプ
	'original' --- 通常表示 (皮質表面の3次元表示), デフォルト
	'inflate'  --- inflate表示 (.inflate.matファイルのロードが必要)
			.inflate.matロード時に自動的に選択

 * param.sulcus_visibility  : inflate表示の場合、溝を表示するかどうか
	'visible'   --- 表示する、 デフォルト
	'invisible' --- 表示しない

 * param.brain_color  : 皮質の色
	TrueColor ( デフォルトは [0.8 0.8 0.8] )

 * param.sulcus_color  : inflate表示で溝を表示する場合の色
	TrueColor ( デフォルトは [0.6 0.6 0.6] )

 * param.lighting  : ライティングをするかどうか
	'on'  --- ライティングあり, デフォルト
	'off' --- ライティングなし

 * param.act_area_priority  : 活動強度と領域のどちらを上に表示するか
	'activation' --- 活動強度を上に表示, デフォルト
	'area'       --- 領域を上に表示l

 * param.act_normalize  : 活動強度を正規化するかどうか
	'no'       --- 正規化しない, デフォルト
	'meshsize' --- 脳モデルのメッシュサイズで正規化

 * param.act_relative_mode  : 活動強度の最大絶対値の計算法
	'all'  --- .act.matファイル中のすべてのデータの最大絶対値
	'each' --- 表示中のデータの最大絶対値, デフォルト

 * param.act_min_mode  : 描画する活動強度の最小絶対値の設定方法
	'absolute' --- 即値で指定
	'relative' --- 最大絶対値に対する割合で指定, デフォルト

 * param.act_min  : 描画する活動強度の最小絶対値
	param.act_min_mode = 'absolute' の場合は即値
	param.act_min_mode = 'relative' の場合は最大絶対値に対する割合
	( デフォルトは0.1 )

 * param.act_sign_mode         :
 * param.act_colormap_max_mode :
 * param.act_colormap_max      : カラー軸の設定
	act_sing_mode = 'signed'   なら、カラー軸の範囲は [ -cmax, cmax ]
	act_sing_mode = 'unsigned' なら、カラー軸の範囲は [ 0, cmax ]
	ただし、cmaxは、act_colormap_max_mode が、
		'absolute' なら、cmax = act_colormap_max
		'relative' なら、cmax = act_colormap_max × 最大絶対値
	デフォルトは、
	act_sign_mode = 'unsigned'
	act_colormap_max_mode = 'relative'
	act_colormap_max = 1

 * param.act_colormap_type  : カラーマップのタイプ
	'jet' --- jet タイプ, デフォルト
	'hot' --- hot タイプ

 * param.act_show_highlight  : 活動強度のハイライト(Plot List内の選択時強調)
	'on'  --- ハイライトあり, デフォルト
	'off' --- ハイライトなし
	ハイライトされたもの以外が透明に表示される

 * param.act_non_highlight_alpha  : ハイライトされたもの以外の活動強度の透明度
	0.01 〜 0.99 のスカラ値 ( デフォルトは 0.5 )

 * param.area_alpha  : 領域表示の透明度
	0.01 〜 0.99 のスカラ値 ( デフォルトは 0.4 )

 * param.area_show_highlight  : 領域のハイライト(Plot List内の選択時強調)
	'on'  --- ハイライトあり, デフォルト
	'off' --- ハイライトなし

 * param.selection_radius  : マウスによる領域選択時の選択半径(mm)
	スカラ値 ( デフォルトは 5 )

 * param.selection_color  : 領域選択時の色
	TrueColor ( デフォルトは [ 1 1 1 ] )

 * param.selection_undo_length  : 領域選択のアンドゥ履歴の最大数
	正数 ( デフォルトは 100 )

 * param.dilation_erosion_radius : 選択領域の膨張/収縮時の幅(mm)
	スカラ値 ( デフォルトは 3 )

 * param.paint  : 活動強度, 領域, 選択領域の描画方法
	'patch' --- patch(面)で描画
	'dot'   --- plot(点)で描画

 * param.markersize  : 点描画時のマーカーの大きさ
	スカラ値 ( デフォルトは 1 )



