=====  VBMEG リリースノート

バージョン：0.8.2.a.0
CVSタグ：version_0_8_2_a_0

=====  CVS情報

CVSROOT
  :pserver:username@ravel:/home/cbi/rhayashi/cvs_repository/vbmeg_genesis

===== 前バージョン(0.8.1.a.1)からの修正・追加項目一覧


===============================================================================
機能追加・変更
===============================================================================
■頭蓋 １・３層モデルの修正
・FreeSurfer の結果を使えるようにした。
厚さパラメタを変更：頭皮(4mm)・頭蓋骨(4mm)
１・３層モデルを一つの関数(job_head_3shell)で作るようにした
CSF面を作るのに3種類のファイルが使える
１．FreeSurfer
２．Gray Segment file (by SPM) + brain.mat 
３．Curry
推奨方法は、FreeSurfer + Gray Segment file + brain.mat 

新規パラメータ
parm.fs_scalp_file : FreeSurfer Scalp surface ('outer_skin_surface.asc')
parm.freesurf_file : FreeSurfer CSF surface ('inner_skull_surface.asc')
parm.Radius_scalp = 4 : Thickness of Scalp [mm]
parm.Radius_skull = 4 : Min Thickness of Skull [mm]
parm.Radius_fs = [6 -6 ] smoothing radius for FreeSurfer surface

job_head_3shell
make_head_surf_model
intersect_face_csf
surf_to_mask
face_to_mask

■脳モデルインポート関数 : 頂点数指定パラメータ brain_parm.Nvertex追加
・新規パラメータ
brain_parm.Nvertex = 20000

左右脳モデルのインポート後の頂点数の合計を指定するパラメータを追加し、
これをデフォルトパラメータとした。これにより、インポート後の左右脳の頂点数が
それぞれ、約10000点ずつになる。

brain_parm.reduce_ratioよりもこのパラメータの方が優先度か高く、両方指定
された場合は、brain_parm.Nvertexが有効となる。

job_brain
make_brain_data2
set_brain_parm_test
set_brain_parm

■標準脳座標から個人脳座標への変換関数のSPM8対応
・SPM2/5/8の出力するSN-MATに対応した。
unsn
spm_get_orig_coord_spm5 (new)　SPMの関数を修正(ループの前にメモリ確保)

・SPM2に関しては、VBMEG0.80aとVBMEG0.82で互換性がある。一方、SPM5、8に
  関しては、標準脳座標系から個人脳座標系への変換に、SPMの関数である
  spm_get_orig_coord.m(を若干修正したもの)を使うようにした。
  そのため、SPM5では結果が若干異なる。
・.spm.matファイルの座標系がLASであったのを、(VBMEGの標準的な座標系である)RASに
  変更した。これに伴い、.spm.matファイルに含まれる構造体'SPM'のフィールドに
  座標系識別子'coord_type'を追加した。VBMEG0.82は'coord_type'を持たない
  .spm.matファイルをLASとして扱うため、旧バージョンで作成した.spm.matファイルは
  そのまま使用できる。逆に、0.82a0以降で作成した.spm.matファイルをそれ以前の
  VBMEGで読み込むと左右が逆転して読み込まれるため、使用してはならない。

job_convert_spm　　　fMRIデータインポート関数：
convert_spm_to_mni   MNI座標計算

■MEGデータロード機能改良
・内部保持データの確認ロジックを改良し、ロード処理を高速化しました
・ロードデータを外部保存できるようにしました
・トライアル情報の整合処理を修正しました

load_meg_data
megfile_load_data
megfile_load_data_external
megfile_load_data_internal
megfile_make_new_megfile
megfile_read_data_file
msrmnt_make_trial_data
megfile_make_trial_data
info_get_trial_data
megfile_filter_ch_data
util_check_numerical_list
util_omit_list
util_make_external_data_file (new)

■MEGファイル操作
・MEG外部チャネルデータをインポートします
megfile_import_extra_data (new)

・既存のMEG-MATファイルから情報を引き継いで、新しいMEG-MATファイルを作成します
megfile_inherit_gene (new)

■MEG/EEG最小セット作成
・既存のMEG-MATやEEG-MATファイルから、最小セットのファイルを作成します
msrmnt_remake_for_LF (new)
eegfile_remake_for_LF (new)
megfile_remake_for_LF (new)

■infoロード関数置き換え
・BMI_load_eeginfo関数を load_measurement_info 関数に置き換えました
vbmeg_feature_calc_z

■センサ情報取得関数に仕様追加
・INFO形式ファイル指定時のセンサ位置として、'TOP'、'AVE'(平均)から選択できるよう
にしました
load_sensor

■MEG-MATファイル結合機能を改良
・結合されたMEG-MATファイルが条件(引数loadspec)指定でload_meg_dataに適用できる
よう修正しました
combine_meg_files

■EEGセンサラベル変換
・EEG64チャネルのPOS-MATファイルに対し、ラベル名を初期値(A1,A2,...)に変換します
posfile_replace_label (new)

■チュートリアル
・util_check_variable_in_matfile関数のテストを追加しました
meg_tutorial

・$VBMEG/script 以下にあったこのファイルを削除しました
eeg_tutorial (delete)

■SPM2/5/8の画像バイアス補正関数をコマンドラインから利用する関数を追加
・SPM2/5/8いずれかにパスを通した状態で、この関数を実行すると、
  入力フォーマットと同じフォーマットでバイアス補正されたファイルが作成される。
  (ただし、SPM2はNIfTI非対応)
bias_correction_by_spm

■近傍点の値を線形補完する関数を追加
linear_interpolate3
interpolate3_weight (new)
distance_to_neigbor (new)

■文字列末尾からスラッシュ・バックスラッシュを取り除く関数追加
rm_training_slash (new)

■構造体・セル配列のフィールド名と値を階層的にテキストファイルに出力
convert_var2text

■MATファイル調査ユーティリティ
・指定するフィールドの、matファイル内での状態を調べます

util_check_variable_in_matfile (new)

■ファイルパーツ取得関数の変更
・第４引数 file versionを除去した(filepartsで将来的に削除されるため)

get_file_parts

■MEX コンパイル関数の追加
mex_compile_utility (new)

■ファイル選択ダイアログクラス(@file_dialog)の機能追加
・ファイル選択ダイアログのリサイズを可能にした
・ファイル名の絞り込み表示機能を追加した。

create_gui
init_public
set_gui_property
set

■脳モデルインポートGUI
・FreeSurferのインポートファイルとして、xfmファイルを入力できるようになって
いたが、FreeSurfer v4.5以降では不要で、VBMEGはFreeSurferv4.5以降で作成された
脳モデルインポートを前提とするため、入力フィールドを削除した。

pa_brain_util
pa_brain_set_parm
pa_brain.fig

■ヘッドモデルインポートGUI
・FreeSurferのデータインポートにも対応した、新しい1/3層モデル作成スクリプト,
job_head_3shellに対応した。

pa_head.fig
pa_head_callback
pa_head_check_parm
pa_head_get_parm
pa_head_set_parm
pa_head_util

■電流計算GUI
・これまでは、BAYES-MATファイルに含まれる、MEG/EEGデータを暗黙的に使い、
GUI上では、どのMEG/EEGファイルを処理したかがわからないようになっていた。
今回は、BAYES-MATの中のMEG/EEGファイル名をGUI上に表示し、かつファイルを
ユーザーが変更出来るようにした。これにより、VBフィルタを指定した
MEG/EEGファイルに適用することが出来るようになった。

current_gui
current_gui.fig

===============================================================================
不具合修正
===============================================================================
■MNIラベル名重複の修正

・SN-MATを使って、MNIラベル名を個人脳の領域にマッピングし、領野分け結果を
AREA-MATファイルに格納する際に、以下のMNIラベル名が重複していたために、
どちらかの領域にラベル名が付いていない状況になっていた。
（脳モデルインポート時に'Frontal_Mid_Orb_L'の上書き確認が表示されることで発覚した）

修正前：
Frontal_Mid_Orb_L --> region value 9
Frontal_Mid_Orb_R --> region value 10
Frontal_Mid_Orb_L --> region value 25
Frontal_Mid_Orb_R --> region value 26

修正後：
Frontal_Mid_Orb_L --> region value 9
Frontal_Mid_Orb_R --> region value 10
Frontal_Med_Orb_L --> region value 25
Frontal_Med_Orb_R --> region value 26

aal_MNI_V4.txt
aal.txt

■電流計算関数の不具合修正
・電流再計算時のエリア指定(current_parm.areafile, area_key)が無効となる不具合を修正。

job_current
vbmeg_current_reconstruct_z_tr
vbmeg_current_reconstruct_z

■電流時系列ロード関数時の不具合修正
・旧形式(ver 0.6x)の電流時系列ファイルをload_currentでロードしようとすると、
Jinfo.ix_act_exの変数参照エラーとなる不具合を修正

load_current

■job_plot_currentmapの不具合修正
・「トライアル別電流計算結果を複数ファイル出力した場合」の電流データを、
本ツールで読み込もうとした場合、起動時にデータを全て一度に読む実装だった為、
データサイズによっては、読み込みができない不具合があった。
表示トライアル番号指定時に１トライアルずつデータを読むように修正した。

job_plot_cmap_change_trial
job_plot_cmap_load_current
job_plot_cmap_update_timecourse

■DICOM->Analyze変換ツールの不具合修正
・入出力ディレクトリ名に空白を含む場合、変換に失敗する不具合を修正した。
・スライスサイズがdcm2nii.iniの設定値(MinOrientMatrix)より小さい時に、
  スライスの向きの変更が行われず、設定値をデフォルトの255→150に変更した。
・Analyze変換時に、中心座標を含むMATファイルを出力しないように修正した。

convert_dicom_nifti_cmd
dcm2nii.ini
save_nii_ana

■bayes_parm.basis_fileに文字列を渡したときにエラーとなる不具合を修正
・入力ファイルが１つの場合には、セル配列以外に文字列を受け付けるように修正。

parm_absolute_path

■job関数の引数：proj_rootの末尾のスラッシュ・バックスラッシュ除去
・特に、job_megのproj_rootがスラッシュだと、バイナリファイル格納ディレクトリの
作成に失敗してエラーになる不具合があった。

job_brain
job_brain_model_std2sbj
job_brain_std2sbj
job_check_sensor_on_brain
job_current
job_current_feature
job_current_tr
job_current_z
job_current_z_tr
job_dipole
job_filter_trial_data
job_flat
job_fmri
job_head_1shell
job_head_3shell
job_import_eeg_data
job_import_meg_data
job_inflate
job_leadfield
job_leadfield_extra
job_meg
job_normal_stat
job_preprocess_meg3
job_reduced_cortex
job_remove_corpus
job_smooth_cortex
job_trial_onset
job_vb
job_vbfilter
job_eeg_gateway

■プロット関数の描画エンジン変更
・figureの描画エンジン(renderer)が、'painters'になっている場合、
ワーニングが大量に表示されるため、描画エンジンを'zbuffer'に指定した。

vb_plot_cortex
check_inflate_model

■脳モデルインポートGUI
・連続して複数のFreeSurferデータをインポートしようとすると、
エラーになる不具合を修正した。

pa_brain_util

■エンコーディングの問題の修正
・MATLAB7.2より、ファイル読み書き時の'char'に対して、エンコーディングの
概念が取り入れられ、漢字・ひらがななどの2byte文字は１つの文字として
数えられることになったため、
fread(fid, 10, 'char');
のような処理は、10バイト以上を読み書きしてしまうことがある。
実際、Linux上でAnalyzeヘッダ情報の読み込みに不具合を生じた。
(spm_bias_correction_by_spmの使用において問題が発生し、発覚した)
そこで、MATLAB7.2以上の場合、MATLAB7.2から追加された、fopenの
第４引数：encodingに'US-ASCII'を与える対処を行った。

load_nii_hdr
avw_hdr_read
read_dicom
meg_hread

■センサ情報取得関数
・アクティブスイッチが無効だったバグを修正しました

megfile_get_sensor_position

■進捗マーカー改良
・進捗マーカーを適宜改行するように修正しました

megfile_filter_ch_data
megfile_make_trial_data

■infoロード関数修正
・'INFO'形式のファイル指定時に、'info_type'引数の情報を再帰的に渡すよう修正しま
した

load_meg_info

===============================================================================
その他修正
===============================================================================
■例外処理の修正
find_nearest_point

■brodmann_area 番号リストの出力タイプを増やした
get_brodmann_area_list

■ファイル名とファイル内部の関数名の不整合を修正。
make_brain_data2
erosion_3d_int
display
dir_dialog_callback
posfile_load_mrikey
posfile_load_transinfo
merge_histgram_detail
merge_histgram_max
load_fif_apos2
bat_read_DICOM2
bat_read_DICOM_description
ykgwfile_get_calibinfo
read_yokogawa_data
vbmeg_ard_estimate2
vbmeg_current_calc_z
vbmeg_current_reconstruct_z_tr
close_surf_parm_check_parameter
close_surf_parm_new
combine_surf_parm_check_parameter
combine_surf_parm_new
morphology_operation_parm_check_parameter
morphology_operation_parm_new
separate_surf_parm_check_parameter
separate_surf_parm_new
surf_extract_parm_check_parameter
surf_extract_parm_new
surf_smooth_expand_parm_check_parameter
surf_smooth_expand_parm_new
surf_smooth_parm_check_parameter
surf_smooth_parm_new
surf_to_filled_mask_parm_check_parameter
surf_to_filled_mask_parm_new
bm_processor_surf_extract
brain_file_maker_edit_job_smooth_cortex_parm
pa_biosemi_eeg_util
pa_brain_parm_gui_create
pa_sbi_meg_set_parm
pa_yokogawa_meg_util
job_import_eeg_data
job_plot_area_flat_sample
job_plot_fmri_flat_sample
job_view_cortex_test
job_leadfield_old
bem_meg_linear_grk
set_basis_parm_eeg_test
atlas2vb_std_aal
Analyze_read_help
mri_point_select
analyze_info_get_voxdim
mps_fileio_get_anayze_info (deleted)
mps_fileio_get_analyze_info (new)
m_slice_Tra

■GUIのライセンス明記
・avw_viewベースで作成されたGUIであることを明記した。

mri_point_select
sphere_head


■関数名変更
・vb_系への関数名変更時に重複しないよう、関数名を変更しました

mark_trigger (delete)
do_mark_trigger (new)
cb_clib_trigger
vb_mark_trigger
