bashのtips: 直前の引数を利用したいときは !$

私はこんな作業をよくします。

  • あるファイルをディレクトリAにコピー
  • ディレクトリAに移動

この際

$ cp something /path/to/A
$ cd /path/to/A

とするわけですが、この /path/to/A を2回うつのはめんどくさいので、簡単な方法がないかを調べてみると、

!$

という特殊変数があることがわかりました。
しかし、しょっちゅう忘れるので、覚え方を考えてみました。

bashでは、履歴を知りたいときに、!を使います。
たとえば

$ history

でコマンド履歴を調べ、その1457番目のコマンドを再度実行したいときは

$ !1457

とすればいいわけですね。

で、$ですが、正規表現において、$は「行の最後」を意味します。

この2つを組み合わせれば

「履歴において一番最後のもの」

と考えれば、 !$

は覚えやすいなと思いました。

自分の思考過程を備忘録として書いておきます。

SPM12でのもうひとつのRender

すぐできるVBMで、一般的なRenderにつれて触れていますが、最近、SPMに、もうひとつのRender機能があることを発見しました。

SPMで統計結果を出した後、左下のウィンドウから overlays… Render を選択するところまでは同じですが、

ファイルを選ぶ際に、SPM12のフォルダの”rend”ではなく、”canonical”フォルダにある”cortex*.gii”を選択します。

すると、下のようなRenderファイルが得られます。

これはマウスでくるくる回せます。

また、内側を見せたい場合は、右クリックして、Connected Componentsのうちのどちらかのチェックを外します。

そうすると、内側を見ることができるようになります。

きれいな結果なので、論文に使えると思います。

レビー小体型認知症(DLB)の診断基準(2017年版)

このブログでは臨床的なことはあまり書かないのですが、先日、2017年版のレビー小体型認知症(DLB)の診断基準がNeurologyで公開されました。
読んでみて、とても勉強になる診断基準だなと感じましたので、自分なりに翻訳してみました。なお、現時点で正式な日本語版は公開されていません。あくまでも私が理解しやすいように、訳は逐語訳ではなく、若干意訳されています。(逐語訳って変な日本語になるのであんまり好きではないんです…)

==========
DLBの診断に必須なものは、認知症であることである。
すなわち、進行性の認知機能低下があり、そのために社会活動、職業、日常生活に支障が出ている。
初期には明らかな記憶障害や持続する記憶障害は認められないかもしれないが、病状の進行によって明らかになってくる。
注意、実行機能、視空間認知機能は特に障害されやすく、早期から起こる。

中核的な臨床兆候(最初の3つは初期に起こりやすく、その後も認められる)

  • 動揺性の認知機能:特に注意・集中力(or 覚醒状態?)が動揺しやすい
  • 繰り返し起こる幻視:典型的にははっきりとした形を呈しており、見えているものについて詳しく述べることができる
  • REM睡眠行動障害:認知機能低下の前に認められる
  • 1つ以上のパーキンソン症状:寡動、安静時振戦、固縮

支持的兆候

  • 抗精神病薬に対する過度な過敏性
  • 姿勢反射障害
  • 繰り返す転倒
  • 失神や一過性に応答が悪くなったエピソード
  • 重度な自律神経失調症状:便秘、起立性低血圧、尿失禁
  • 過眠
  • 嗅覚障害
  • 幻視以外の幻覚
  • 体系的な妄想
  • アパシー
  • 不安
  • うつ

DLBを示唆する(Indicative)バイオマーカー

  • SPECTやPET: 基底核でのドパミントランスポーターの取り込み低下
  • 123I-MIBG心筋シンチグラフィ: 取り込み低下
  • ポリソムノグラフィ: アトニー(筋弛緩)がないREM睡眠

DLBを支持(Supportive)する(DLBとして矛盾しない)バイオマーカー

  • CT/MRI: 側頭葉内側が相対的に保たれる
  • SPECT/PET: 後頭葉における血流低下や代謝低下
  • FDG-PET: cingulate island sign (CIS) (帯状回の一部が島状に保たれる)
  • EEG: 後頭葉で目立つ周期的にpre-alphaからtheta帯域で変動する徐波

Probable DLBは以下の条件(のどちらか)を満たす時に診断される

  1. 中核的な臨床症状が2つ以上あること。DLBを示唆するバイオマーカーはあってもなくてもよい。
  2. 中核的な臨床症状が1つあり、DLBを示唆するバイオマーカーが1つ以上ある。

Probable DLBはバイオマーカーだけで診断してはいけない。

Possible DLBは以下の条件(のどちらか)を満たすときに診断される

  1. 中核的な臨床症状が1つだけ認められ、DLBを示唆するバイオマーカーがない
  2. DLBを示唆するバイオマーカーが1つ以上あるが、中核的な臨床症状がない

以下の場合はDLBではない可能性がある

  1. 他の身体疾患や脳血管性疾患のような脳疾患があり、それらの病気で臨床像が部分的にもしくは全体的に説明できる場合。しかし、だからといってDLBの診断を除外できるわけではなく、混合型もしくは複数の病因が寄与していることを示唆しているのかもしれない。
  2. パーキンソン症状しか中核的な臨床症状として認められず、重度の認知症となってはじめて医療機関を受診となった場合。DLBは認知症症状がパーキンソン症状があらわれる前か同時にあらわれた場合にのみ診断できる。パーキンソン病に伴う認知症(Parkinson diseade dementia; PDD) は、パーキンソン病と診断されている患者が認知症になったときに使われる。臨床現場では、臨床症状にもっとも適した用語を使うべきであり、レビー小体病のような一般的な名称がしばしば役に立つ。研究でDLBとPDDを区別しなければならないとき、従来の1年ルール(認知症の発症とパーキンソン症状に1年以上の差がある)が推奨される。

==========

バイオマーカーがはっきりと列挙されており、同時に、「バイオマーカーだけで診断しないこと」とも明記されていることが印象的でした。ともすればバイオマーカーに偏りがちな中、臨床症状を丁寧に評価することの大切さを忘れないようにと釘をさしてくれているのだと思います。

SPM12 compatible automatic reorienting script

I used to use auto_reorient.m script to reorient MR images. However, this script doesn’t work with current SPM12 anymore since spm_affreg.m is gone.

Therefore, I thought of another way to reorient images automatically.

The simple way is to coregister images to MNI images. However, if origin is too far from center of the image, it is likely to fail. So before coregistration, I set the origin of the image to the center, then coregister the image to MNI (icbm152.nii under spm12/toolbox/DARTEL).

I tested the script with various images and it works fine.

If you are interested, you can get the script from the link below.

Download acpc_coreg.m (Right click -> Save as)
Save the script under directory to which Matlab path is set, then type

acpc_coreg

from Matlab command window.

You need SPM12 for this script.

Update of Lin4Neuro (27 Jun 2017)

Lin4Neuro was updated.

  • Fixed the bug of installer crash
  • All Neuroimaging software is up-to-date. FSL remains 5.0.9 since 5.0.10 is not available yet on Neurodebian.
  • Tutorial by Prof. Chris Rorden is put under home directory. Anybody can go through tutorial without further download.
  • Now Lin4Neuro is UEFI compatible.

You can get the latest version from here.

Lin4Neuroのアップデート (27 Jun 2017)

Lin4Neuroのアップデートを行いました。

  • Ubuntu 16.04をベースに、インストーラーがクラッシュするバグを修正しました
  • 画像解析ソフトを最新版にしました。FSLはUbuntu版はまだ5.0.10がリリースされていないため、5.0.9のままです。
  • Chris Rorden教授のチュートリアルをわかりやすい場所に配置しました。
  • UEFI対応となっており、UEFI対応PCにもインストール可能となりました。

ここから入手できます。

How-to build DSI Studio for Ubuntu 14.04 or later

DSI Studio is an open-source diffusion MRI analysis tool. We need to compile the software for Linux.
Note for Compile is found here, but it is a liitle bit out-of-date.

I could successfully finish compile the DSI Studio for Ubuntu 14.04. Below is what I did.

  1. Install gcc-5 and g++-5 (for Ubuntu 14.04)
  2. DSI Studio needs gcc-5 and g++-5 for compile. We can install them via PPA.

    sudo add-apt-repository ppa:ubuntu-toolchain-r/test
    sudo apt-get update
    sudo apt-get install g++-5
    
  3. Link gcc and g++ to gcc-5 and g++-5 (for Ubuntu 14.04)
  4. Just installing gcc-5 and g++-5 won’t have any effects on the machine.
    You can check the version of gcc and g++ by typing gcc –version and g++ –version

    gcc --version
        gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
    
    g++ --version
        g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
    

    In order to make gcc-5 and g++-5, we need to do the following;

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
    

    You should see something like;

    update-alternatives: using /usr/bin/g++-5 to provide /usr/bin/g++ (g++) in auto mode
    
  5. Install necessary files for compile
  6. We also need to install the following;

    sudo apt-get install qt5-qmake qt5-default
    sudo apt-get install git libboost-all-dev zlib1g zlib1g-dev
    
  7. Prepare a working directory
  8. Prepare a working directory. We save files in this directory.

    mkdir dsistudio
    
  9. Get the Windows version of DSI Studio
  10. Download the Windows version of DSI Studio from this link and save it under working directory (dsistudio).
    Filename should be “dsi_studio_64.zip.”

  11. Get the source code from GitHub
  12. Now we get the source code of DSI Studio from Github. We also need “master.zip” to be downloaded. After unzipping, rename the folder as image, and move under src.

    cd dsistudio
    git clone -b master git://github.com/frankyeh/DSI-Studio.git src
    wget https://github.com/frankyeh/TIPL/archive/master.zip
    unzip master.zip
    mv TIPL-master image
    mv image src
    
  13. Compile
  14. Prepare a directory for build and compile.

    mkdir build
    cd build
    qmake ../src
    make
    

    If it goes well, you should find dsi_studio under build directory.
    You may remove unnecessary files with make clean

    make clean
    
  15. Packaging
  16. Windows version zip file has atlas and other files included. We make use of it.
    DLL files are for Windows, so we delete all of them.

    cd .. # Now you should be in the "dsistudio" directory
    unzip dsi_studio_64.zip
    cd dsi_studio_64
    find . -name '*.dll' -exec rm {} \;
    rmdir iconengines imageformats platforms printsupport
    rm dsi_studio.exe
    cp ../build/dsi_studio .
    
  17. Run DSI Studio
  18. Now you can run DSI Studio from the terminal.

    ./dsi_studio
    

    If everything works, the command brings up DSI Studio.

SPMの3つのウィンドウを起動するためのコマンド

SPMのスクリプトを書く際、SPMのウィンドウを起動したいと思うことがあります。
SPMのコードを見ながら、以下で起動できることがわかりました。
便利なので備忘録がわりに書いておきます。

spm('CreateMenuWin','on'); %左上のウィンドウ
spm('CreateIntWin','on');  %左下のウィンドウ
spm_figure('Create','Graphics','Graphics','on'); %右のウィンドウ

AC-PC自動設定スクリプト(SPM12対応版)

かつてauto_reorient.mというスクリプトを配布していましたが、これは現在のSPM12で動かなくなってしまいました。理由は単純でSPM12からspm_affregという機能がなくなってしまったからです。もし、過去のSPMからspm_affreg.mを持ってきたら問題なく使えるのですが、この機会に別の手法を考えてみました。

シンプルな方法は、MNI標準脳にCo-registrationすることです。これだけでかなりあいます。
しかし、画像の原点があまりにも違うところに設定されているとエラーが出ることがあります。
そこで、以前、山下先生に教わった方法を採用し、まず、originを画像の中心に設定し、そのうえで、SPM12に搭載されているicbm152.niiにco-registartionするスクリプトを書いてみました。

多くの画像で試してみましたが、それなりにうまくいきますし、処理速度も速いです。

よかったら試してみてください。

acpc_coreg.mをダウンロード(右クリックで保存してください)

Matlabのパスが通っているフォルダにこのファイルを置いていただき、

Matlabから

acpc_coreg

とタイプするだけです。

Pubmedの結果をviで整形する(不要な改行の削除)

Pubmedはとても便利ですが、いくつか不便なこともあります。
そのうちのひとつに、summary (text) の扱いです。
viを使ってなんとかきれいにできないかと試行錯誤した結果です。

先に結論を示すと、以下でできます。

:%s/\n\([A-Za-z0-9]\)/ \1/

以下がそのプロセスです。

続きを読む

Lin4Neuroのアップデート (31 Mar 2017)

Lin4Neuroのアップデートを行いました。

主な更新点は以下になります。

  • Ubuntu 16.04をベースにするバージョンを発表しました。(ただし、インストーラーにバグがあるため、現在調整中です。)Ubuntu 14.04版も続けてメンテナンスしていきます。
  • 画像解析ソフトをすべて最新バージョンにアップデートしました。
  • GitHub上にLin4Neuroを作成するスクリプトを公開しました。
  • https://github.com/kytk/lin4neuro-xenial

    これを用いればLin4Neuroを自分の使いたいようにカスタマイズしていただくことも可能かと思います。

  • 起動時画面のロゴに少し修正を加えました。Lin4NeuroがUbuntuのどのバージョンに基づいているかがひと目でわかります。

最新版のLin4Neuroは こちらからどうぞ。

Update of Lin4Neuro (31 Mar 2017)

Lin4Neuro is updated.

  • Now Lin4Neuro is based on Ubuntu 16.04. (I’ll keep maintenance of 14.04 Version too)
  • All of the neuroimaging software packages are up-to-date.
  • Building scripts of Lin4Neuro is publicly available on GitHub.
  • https://github.com/kytk/lin4neuro-xenial

    You can make your version of Lin4Neuro based on the repository above. I wrote instruction how to use in the repository.

  • I made some changes to the Lin4Neuro logo on splash. You will find L4N you are using is based on Ubuntu 14.04 or later.

You can download the latest Lin4Neuro from here.

BashからMatlabスクリプトを実行する方法

先日、ある方と「BashからMatlabを呼び出せないだろうか」という話をしていました。もし、これができたら、シェルスクリプトから、Matlabを呼び出せるので、シェルとMatlabを完全に連携できるわけです。

結論としては、以下でできました。

  • Short answer
  • Matlabのスクリプト名を sample_code.m とすると、以下でできます。

    $ matlab -nodesktop -nosplash -r 'sample_code; exit'
    

    コツは2つです。

  • スクリプト名ではなく、コマンドとして指示するため、.mは外す
  • Matlabから抜けるために exit を追加する

続きを読む

シーケンスを自動判別し、ファイル名を自動リネームするDICOM→NIFTI変換スクリプト

本日、第19回ヒト脳機能マッピング学会で発表したのですが、ブログのタイトル通り、シーケンスを自動判別し、ファイル名を自動でリネームするDICOM→NIFTI変換スクリプトを書いてみました。

MacおよびLinuxに対応しています。

必要なソフトウェアは以下の2つです。

  • MRIcron
  • パスが通っていることが必要です。

  • FSL
  • FSLも同様にパスが通っていることが必要です。

このスクリプトは以下から入手可能です。(右クリックで「名前をつけて保存」で保存できます。)

https://raw.githubusercontent.com/kytk/shellscripts/master/ren-dcmcnv.sh

  1. インストール
  2. インストールですが、パスが通っているディレクトリに保存していただくだけです。

  3. 使い方
  4. 使い方はとてもシンプルです。

    • フォルダの準備
    • 最初に、作業用フォルダを準備します。その中に、各被験者のフォルダを準備します。フォルダ名がとても重要です。このスクリプトはフォルダ名をファイル名のベースに使うからです。
      たとえば、被験者IDがsubj01ならば、フォルダ名をsubj01とします。その中にその被験者のDICOMファイルをすべて放り込みます。(ディレクトリ構造になっていてもなっていなくてもかまいません)

    • スクリプトの実行
    • ターミナルを起動し、作業用フォルダに移動します。

      そして、以下をタイプします。

      $ ren-dcmcnv.sh
      

      これだけです。

    • スクリプトが行うこと
    • スクリプトは以下のことを行います。フォルダ=ディレクトリです。

      1. ワーキングディレクトリに “DICOM”, “nifti” ディ
        レクトリを作成します。
      2. wd内にできたDICOMディレクトリに移動します。
      3. DICOM ディレクトリ内で dcm2nii を実行し、NIFTIファ
        イルを生成します。
      4. fslhd を用いてNIFTIファイルのヘッダー情報を取得します。
      5. 以下のルールに基づき、3次元T1強調画像、fMRI画像、DTI画像を判別します。
        • 3次元T1MRI: 画像の第2次元≧256, 第3次元>100, TE<6msec; (V_)
        • fMRI: 画像の第4次元>100; (F_)
        • DTI: 画像の第4次元が8以上100 未満 (D_)
      6. ディレクトリ名を取得し、ファイル名のベースとし、それぞれの接頭辞に識別記号を付加します。
      7. 変換したファイルをniftiディレクトリに移動します。

よかったら試してみてください。

MacOS上でSPM12のフォントの上半分が切れる時の対処法

先日、VBMチュートリアルにて、ある質問を受けました。

「MacのSPMでファイル選択の時にフォントの上半分が切れてしまうんですけど、解決法はないですか?」

具体例を示したほうがわかりやすいので、以下に示します。ファイル選択画面でこうなります。

これは気持ち悪いですよね。

いろいろ調べました。

その中で、どうも、spm12/matlabbatch/private の中にある
cfg_mlbatch_defaults.m

の中でフォントを規定しているようだというところにチュートリアルの最中に気づきました。

そして、今日、少し調査してみました。
SPMのバッチはSPM単独ではなく、Matlabbatchというものを使っているという知識はありました。

なので、GoogleでMatlabbatch font で調べたところ

以下の記事を見つけました。

https://en.wikibooks.org/wiki/SPM/Installation_on_64bit_Windows

その下にこんなことが書いてありました。

Edit spm/matlabbatch/private/cfg_mlbatch_defaults.m and modify lines:

cfg_defaults.cfg_ui.lfont.FontName = ‘Arial Narrow’;
cfg_defaults.cfg_ui.bfont.FontName = ‘Arial Narrow’;

Arial NarrowはMacにもあります。試してみました。

具体的には、cfg_mlbatch_defaults.m を開き、23行目にある

‘FontName’,get(0,’FixedWidthFontName’),…

‘FontName’,’Arial Narrow’,…

に変えます。

それで保存して、SPMを起動して、ファイル選択画面を出したところ…

フォントが綺麗に表示されるようになりました!

フォントがきになる方は試してみる価値があるかと思います。

ちなみに、ui.bfontの方は変えない方が良かったです。

CONN 17a のバグとその解決方法

CONN17a において、何人かからうまく動作しないというご連絡をいただきました。

以下のようなエラーメッセージが出ます。

Error using conn_process (line 763)
duplicated ROI name atlas.Vermis 10
Error in conn_process (line 15)
case 'setup', disp(['CONN: RUNNING SETUP STEP']); conn_process([0:4,4.5,5]);

調べた所、以下のバグが報告されています。

https://www.nitrc.org/forum/forum.php?thread_id=7356&forum_id=1144

解決策として、以下のリンクからrex.mをダウンロードし、CONN17aにあるrex.mに対して上書き保存してください。

rex.mをダウンロード

FSLのGLMで対応のあるt検定のdesign matrixを作成・修正する方法

私がもっているデータのひとつに縦断DTIデータがあり、東京都健康長寿医療センターの下地先生が包括脳/ABiSチュートリアルで教えてくださっているTBSSを用いて解析を行っています。(下地先生は非常にわかりやすい講義をしてくださることで人気の先生です。)

GLMでDesign matrixを作成する時にひとつ困ったことに遭遇しました。

FSLのGLM Wizardでは、対応のあるt検定のDesign matrixを簡単に作成することができます。

続きを読む

SPM12でestimateに失敗するとき (SPM12 r6906のバグ)

SPM12で、ひとつバグがあることがわかっています。
モデル作成の時に、maskにexplicit maskを指定すると、estimateができずに失敗するというものです。

以下のようなエラーが出ます。

Running ‘Model estimation’

SPM12: spm_spm (v6842) 11:34:04 – 25/11/2016
========================================================================

SPM12: spm_est_non_sphericity (v6827) 11:34:05 – 25/11/2016
========================================================================
Failed ‘Model estimation’
存在しないフィールド ‘xVol’ を参照しています。
In file “/Users/psymacpro3/Documents/MATLAB/spm12/spm_est_non_sphericity.m” (v6827), function “spm_est_non_sphericity” at line 105.
In file “/Users/psymacpro3/Documents/MATLAB/spm12/spm_spm.m” (v6842), function “spm_spm” at line 431.
In file “/Users/psymacpro3/Documents/MATLAB/spm12/config/spm_run_fmri_est.m” (v5809), function “spm_run_fmri_est” at line 33.

The following modules did not run:
Failed: Model estimation

これは、バグであることが知られており、解決方法として、spm_est_non_sphericity.mを差し替えることが推奨されています。

下記リンクのものをダウンロードし、SPM12のフォルダに上書きしてください。
これで問題なくなります。

バグフィクスされたspm_est_non_sphericity.mをダウンロード(右クリック→名前をつけて保存で保存してください)
リソースはこちら:
https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=spm;2c0ae193.1611

SPM12のアップデート(6906)が公開されました

SPM12のアップデートが公開されました。
今回のアップデートでMatlab R2016a日本語版でSPM12が起動しないバグが解消されています。

SPM12をすでにインストールされている方は、Matlabからの簡単なコマンドでアップデートできます。spm_update(1)とタイプするだけです。

spm_update(1)
         A new version of SPM12 is available on:
   http://www.fil.ion.ucl.ac.uk/spm/download/spm12_updates/
        (Your version: 6685 - New version: 6906)
          Download and install in progress...
         Success: 2152 files have been updated.