UbuntuにおけるAFNIのアップデート

AFNIのインストール方法は、公式ページにしたがって行えばできます。AFNIにはコマンドラインからのアップデート機能があり、@update.afni.binaries -dで基本的にアップデートもできます。

しかし、この場合、NIHから新しいバージョンのAFNIをまるごとダウンロードしてきます。wgetでダウンロードするのですが、結構時間がかかります。ブラウザのアドオンについてくるダウンローダで入手するほうが短時間でダウンロードします。

https://afni.nimh.nih.gov/pub/dist/tgz/

ここからダウンロードできます。

ダウンロードしたものを使ってアップデートする際には以下でうまくできます。

インストール先を /usr/local/afni/bin
ダウンロードしたものが、~/Downloads/linux_openmp_64.tgz だとすると、
以下のようになります。

sudo /usr/local/afni/bin/@update.afni.binaries       \
     -bindir /usr/local/afni/bin/                    \
     -local_package ~/Downloads/linux_openmp_64.tgz 

私の場合、/usr/local/afni/binにインストールしたかったので、sudoを使っていますが、デフォルトの~/abinの場合には、sudoは必要ありません。

現在のバージョンは

afni -ver

で簡単に確認できます。

Matlab R2016aでも動作するための修正版spm_figure.m

21/Oct/2016 SPM12がアップデートされました。このアップデートで下記の対処はもう必要なくなります。したがって、この記事は意味がないです。私のウェブサイトからの配布も終了します。

過日、Matlab R2016a日本語版では、SPM12を起動するときにエラーが出るという記事を投稿しました。その後、修正版spm_figure.mがあるという情報をいただき、さらに、開発者のGuillaume Flandinからも了承をいただきましたので、ここに修正版spm_figure.mを公開します。

修正方法は簡単で、下にあるspm_figure.mをダウンロードしていただき、SPM12の中にあるspm_figure.mと置き換えていただくだけです。
心配な方は、まず現在のspm_figure.mをspm_figure.m.origなどに修正してから置き換えられるとよいかと思います。

なお、Guillaume Flandinからの情報だと、この修正は、次のSPM12のアップデートで適応されるとのこと。
次のSPMアップデートが出た時点で、私のウェブサイトからの配布は終了します。

SPM12でのreset origin

SPM12から、Display機能にあったReset Originがなくなりましたが、
先ほど、SPMのMLで、コマンドが紹介されていたので、紹介します。

spm_image('resetorient');

spm_imageで、SPMのDisplay機能を呼び出すことができるのですね。
そして、引数に’resetorient’を指定することでオリジン情報をクリアできます。

これは、とんでもない位置合わせをやってしまった時に、元に戻す便利な機能なので、共有しておきます。

FSLを用いたシェルスクリプト演習:脳3次元T1強調MRIの水平断一覧画像の作成

あるプロジェクトにおいて、「MRI画像の一覧画像を作成してもらいたい」という依頼を受けました。

イメージとしては、下記のようなものです。

LB_example

以前、FSLのシェルスクリプトチュートリアルを翻訳していた際に、演習に
Lightbox Viewerがあったのを思い出して、改めて、それを見ながら、さらに機能を追加したスクリプトを考えてみました。

作成しながら勉強になることがいくつもあったので、細かくわけてみたいと思います。

続きを読む

Ubuntuのapt-get updateで「ハッシュサムが適合しません」と出た時の対処法

先日、Ubuntuでapt-get updateを行った所、以下のエラーに遭遇しました。

W: http://jp.archive.ubuntu.com/ubuntu/dists/trusty-updates/main/source/Sources 
の取得に失敗しました  
ハッシュサムが適合しません

このような場合の解決法がいくつか提示されています。よくみられているもののひとつに、Ubuntuフォーラム内の投稿があります。

これでいいのですが、本質は何か考えてみました。

本質は、

/var/lib/apt/lists

の中にあるファイルとの比較で失敗しているようです。

したがって、消せばいいのは、この中身で、apt-getはその下にあるpartialディレクトリがなかったら自動で作成してくれます。

なので、やればいいのは、たった一つです。

$ sudo rm -r /var/lib/apt/lists/*

これでapt-get updateを行えば問題は解決するはずです。

自分の備忘録として残しておきます。

Matlab R2016a日本語版では、SPM12を起動するときにエラーが出る

タイトル通りなのですが、

Matlab R2016a日本語版では、SPM12を起動しようとするとエラーが出ます。

詳しい現象は、こちらに説明されていますので、下記をご覧ください。

SPM12がMATLAB R2016aで動かない

こちらに解決法が書いてあり、「デスクトップの言語を英語にする」と書いてあります。

Linuxではこれは簡単です。

ターミナルを起動し、

LANG=C matlab &

で英語環境でMatlabが起動します。

Macで同じことができるかと思ったらダメでした。
Macでは、ターミナルでLANG変数を変更しても、Matlab起動時に無視されてしまうとのこと。Mathworks本家が言っているのでどうしようもないです。

Mac プラットフォームのロケール設定

決して賢くはないですが、なんとかする方法がわかりましたので書いておきます。

Matlabを起動する前に、

システム環境設定→言語と地域

で、優先する言語を”English”にします。

そして、そのウィンドウを閉じようとすると、再起動しますかと聞かれますが、再起動しなくてOKです。

そこで、Matlabを起動すると、英語モードで起動します。

そうすると、SPMは問題なく起動します。

終わったあとに、もう一度 System Preferences… で同様にJapaneseを優先言語にもってきます。

これで終了すれば、日本語に戻ります。

もっとスマートな方法があるかと思いましたが、ありませんでした…。

今後、時間があるときに、SPMのMailing listにバグ報告を出しておこうと思いますが、
一番の対策は、Matlab R2015b以降にはしばらくアップデートしないということになります。

ご参考まで。

Ubuntu 16.04 における plymouth

Ubuntu 16.04になってから、Plymouthの挙動が変なので、いろいろ調べたところ、以下のことがわかりました。

これまでは、テーマは、/lib/plymouth/themesの下に保存されていましたが、これからは、/usr/share/plymouth/themesの下に保存されるようになったようです。

したがって、自作のテーマを使いたい場合、以下を行う必要があります。今、テーマはmytheme/mytheme.plymouthと仮定します。

  • 自作の mytheme.plymouth の中のファイルのパスを “/lib/plymouth” -> “/usr/share/plymouth” に変更
  • update-alternativesで新たにdefault.plymouthを設定
  • $ sudo update-alternatives --install \
    /usr/share/plymouth/themes/default.plymouth 
    default.plymouth \
    /usr/share/plymouth/themes/mytheme/mytheme.plymouth 100
    
  • テーマの変更
  • $ sudo update-alternatives --config default.plymouth
    
  • システムに反映
  • $ sudo update-initramfs -u
    

場所が変更になったことだけ頭においておけば、そこまで悩む必要はなさそうです。

FreeSurfer前処理結果のQuality Check

FreeSurferのrecon-allで前処理を行った後、Quality Checkを行うことはとても大事です。

広島大の北村先生と一緒に、やり方を確認しました。北村先生がまとめてくださいましたので、その方法を以下に記します。

原典はFreeSurferのホームページを参考にしています。
https://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/OutputData_freeview

続きを読む

Ubuntu 14.04 に parted を利用して 8TBのHDDを増設したときのメモ

gdiskを用いる方法もあります。こちらをご参照ください。

Linuxには2TBの壁があり、2TBより大きいHDDを増設しようとすると、少し工夫が必要です。
結論からいうと、partedを使うことで、問題なくいけます。
今回、解析用に8TBのHDDを4台増設しました。

備忘録のためにどうやったか書いておきます。

続きを読む

FreeSurferをインストールした後の第一歩

FreeSurferをインストールした後、自分のデータを用いてどうしたらいいか困る人が多くいます。

まず、1例を試してみるといいと思います。

以下のようにされてはいかがでしょうか。

  1. ターミナルを開きます。
  2. 画像があるディレクトリに移動します。
  3. たとえば、画像が、/Users/foo/img_dataにあるとすれば、

    $ cd /Users/foo/img_data/
    

    となります。

  4. 画像の被験者IDを決めます
  5. FreeSurferでは実はこれが大事です。ここをきちんとしていないと、話が次に進みません。

  6. 以下の書式でコマンドをうちます。
  7. $ recon-all -s 【被験者ID】 -i 【NIFTI画像ファイル】 -all
    

    今、被検者IDがHC001、NIFTI画像がV_HC001.niiだとすると、

    $ recon-all -s HC001 -i V_HC001.nii -all
    

    となります。

これでしばらく待ちます。私の最近のPCでは、9時間程度で1例の処理が終わります。

スクリプト化してみましょう。画像のファイル名(拡張子抜き)をIDとして扱うことにします。

#!/bin/sh

if [ $# -lt 1 ]
then
        echo "Please specify image files!"
        echo "Usage: $0 imagefiles"
        echo "Wild card can be used."
        exit 1
fi

for f in "$@"
do
        subjid=`imglob $f`
        recon-all -i $f -s $subjid -all
done

という感じになりますね。

出力ファイルは、$SUBJECTS_DIRに出力されます。
私の場合、
$SUBJECTS_DIRはホームディレクトリの下のfreesurfer/subjectsにしてあります。
この設定の仕方は、こちらをご覧ください。

どこにあるかすぐにわからなかったら、以下をしたらいいと思います。

$ cd $SUBJECTS_DIR

ここに先ほど入力したIDがあります。その中にいろいろ入っています。

$SUBJECTS_DIRはHDDの容量をくいますので、十分なスペースを確保しないと容量不足に陥りますのでご注意ください。

ANTsのUbuntu 14.04へのインストール方法(ソースからのコンパイル)

2018.09.09追記:この記事は古くなっています。最新版は、こちらに準備しましたので、こちらをご覧ください。

先日、ANTsをMacにインストールする方法を記載しましたが、Ubuntuでも同じことができるので、記載します。

開発者によるHow-toはこちらに記載されています。

続きを読む

LinuxでUSBメモリをNTFSにフォーマットにするコマンド

先日、USBメモリに4GBを超えるファイルをコピーする必要がありました。
Windowsユーザー、Macユーザーも使うUSBメモリなので、NTFSフォーマットがよいと考えました。MacユーザーもNTFSは標準で読み取りはできますので。

これまで、フォーマットするときにGPartedでやっていました。GUIで簡単ですから。

しかし、今回は、NTFSフォーマットだけでなく、ボリュームラベルも変更する必要がありました。Gpartedでは、これは2段階(NTFSへのフォーマットとラベルの設定)になってしまうので、もっと簡単な方法はないかと思いました。

検索してなかなかすぐに見つけられなかったのですが、以下の方法が簡便とわかったので、紹介します。

  • USBメモリのデバイス名の確認
  • Linuxでは、USBメモリは、/dev/sdc1とか/dev/sdb1などに割り当てられます。どこに割り当てられたかを確認する必要があります。方法として、dmesgを使う方法と、fdisk -lを使う方法があります。

    • dmesg
    • USBメモリをPCにさした時点で、端末に

      $ dmesg
      

      とタイプします。そうすると、以下のようなメッセージが出てきます。

      [ 8939.172114] usb 3-2: New USB device found, idVendor=054c, idProduct=05bb
      [ 8939.172119] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
      [ 8939.172120] usb 3-2: Product: Storage Media
      [ 8939.172122] usb 3-2: Manufacturer: Sony
      [ 8939.172124] usb 3-2: SerialNumber: EBA5A08FFF1748
      [ 8939.712192] usb-storage 3-2:1.0: USB Mass Storage device detected
      [ 8939.712398] scsi3 : usb-storage 3-2:1.0
      [ 8939.714168] usbcore: registered new interface driver usb-storage
      [ 8939.717329] usbcore: registered new interface driver uas
      [ 8940.957656] scsi 3:0:0:0: Direct-Access     Sony     Storage Media    0100 PQ: 0 ANSI: 6
      [ 8940.957872] sd 3:0:0:0: Attached scsi generic sg2 type 0
      [ 8940.958666] sd 3:0:0:0: [sdc] 30507008 512-byte logical blocks: (15.6 GB/14.5 GiB)
      [ 8940.959280] sd 3:0:0:0: [sdc] Write Protect is off
      [ 8940.959282] sd 3:0:0:0: [sdc] Mode Sense: 43 00 00 00
      [ 8940.959779] sd 3:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
      [ 8940.964615]  sdc: sdc1
      [ 8940.966528] sd 3:0:0:0: [sdc] Attached SCSI removable disk
      [ 9741.422259] usb 3-2: USB disconnect, device number 2
      

      ここにUSBとかsdcとか出てきますね。
      これで、/dev/sdcが割り当てられたとわかります。

    • fdisk -l
    • もうひとつの方法はfdiskを用いることです。-lオプションで、デバイスの一覧を表示します。

      $ sudo fdisk -l
      

      とすると、今度は次のように表示されます。

      Disk /dev/sdc: 15.6 GB, 15619588096 bytes
      ヘッド 255, セクタ 63, シリンダ 1898, 合計 30507008 セクタ
      Units = セクタ数 of 1 * 512 = 512 バイト
      セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
      I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
      ディスク識別子: 0xc3072e18
      
      デバイス ブート      始点        終点     ブロック   Id  システム
      /dev/sdc1              48    30507007    15253480    c  W95 FAT32 (LBA)
      

      この方がわかりやすいですね。いずれにしても、/dev/sdc1がUSBメモリのパーティションだということがわかります。ちなみに、sdc1の1はパーティションの番号で、USBメモリの場合、たいていパーティションは1つなので、sdc1がUSBメモリのパーティションになります。

  • NTFSへのフォーマット
  • ここでは、mkfs -t ntfsというコマンドを使います。そして、ラベルは、-Lというオプションですので、以下のようにタイプします。
    (mkfs.ntfsとmkfs -t ntfsは同義です)

    $ sudo mkfs -t ntfs -L usbdisk /dev/sdc1
    

    そうすると、フォーマットがはじまります。もし、クイックフォーマットにしたい場合は、-Qをつけて、

    $ sudo mkfs -t ntfs -Q -L usbdisk /dev/sdc1
    

    とします。(通常はこちらの方が現実的です)

  • ファイルシステムの確認
  • ふつう、する必要はありませんが、きちんとNTFSに変換されたか知りたい人もいることでしょう。

    その場合は、以下のコマンドをタイプします。

    $ sudo parted -l
    

    そうすると、以下のようなメッセージが表示されます。

    モデル: Sony Storage Media (scsi)
    ディスク /dev/sdc: 15.6GB
    セクタサイズ (論理/物理): 512B/512B
    パーティションテーブル: msdos
    
    番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
     1    24.6kB  15.6GB  15.6GB  primary  ntfs              lba
    

    きちんとファイルシステムがntfsになっていることが確認できました。

覚えておくと便利なFSLViewのオプション3つ

FSLViewを使うと、2つの画像を簡単に重ねあわせて表示できるわけですが、その際に様々なオプションを組み合わせることで画像をわかりやすく見せることができます。

主に3つ覚えておけば、結構いけるなと思いましたので、その3つを紹介します。

その3つとは、

  • -l (Lookup table)
  • -b (Brightness)
  • -t (Transparency)

です。

続きを読む

AFNIの3dresampleを使った画像のボクセルサイズの変更

これまで、MRI画像のボクセルサイズを変更する時に、簡単な方法がないなと思っていました。

コマンドひとつで簡単にできないかなといろいろ検索したところ、AFNIの3dresampleというプログラムに行き着きました。

書式は簡単です。
たとえば、ボクセルサイズを2mm x 2mm x 2mm にしたいとしたら、

$ 3dresample -dxyz 2 2 2 -prefix 出力画像 -inset 入力画像

となります。

入力画像、出力画像、ともにNIFTI画像(.nii, .nii.gz)が使えます。

FSLViewやITK-SNAPでは、2つの画像を重ねあわせる時、ボクセルサイズが一致していることが必須ですので、これを知っていることで、作業が簡単になるかもしれません。

続きを読む

Lin4Neuroのメジャーアップデート (18 Jan 2016)

時間がかなりかかってしまいましたが、Lin4Neuroのメジャーアップデートを公開しました。
見た目は変わっていませんが、システムは相当変わっています。

  • 今後、Lin4NeuroはUbuntuのmini.isoをベースに、XFCE 4.12を搭載していきます。メモリ使用量は起動時は300MB未満です。
  • これから公開していきますが、Lin4Neuroの作成スクリプトを準備しました。どうやってLin4Neuroが作られているのかを確認できます。

現時点で、以下のパッケージが収載されています。

  • 3D Slicer
  • AFNI
  • DSI Studio
  • FSL
  • ITK-SNAP
  • Mango
  • MRI Convert
  • MRIcroGL
  • MRIcroN
  • Virtual MRI

今後のアップデートで、その他のソフトウェアも収載予定です。

最新版のダウンロードは、 こちらからどうぞ。

Major update of Lin4Neuro (18 Jan 2016)

Though it took such a long time, I’m pleased to announce the release of the update of Lin4Neuro.
It looks the same, but it is quite different.

  • From now on, Lin4Neuro is based on minimal Ubuntu with XFCE 4.12. RAM consumption is less than 300MB when the system is up.
  • I prepared scripts to show how I made Lin4Neuro. You can check what has been done while minimal Ubuntu transform into Lin4Neuro (The scripts are to be released soon).

Right now, following packages are pre-installed.

  • 3D Slicer
  • AFNI
  • DSI Studio
  • FSL
  • ITK-SNAP
  • Mango
  • MRI Convert
  • MRIcroGL
  • MRIcroN
  • Virtual MRI

Other software packages will be added in the next update.

You can download the latest version from here.