FreeSurfer と FSL 6.0.6以降を使っていると、ある事象が起きます。
- Python3がFSLが提供するPython3になります。
- dcm2niixがFSLが提供するdcm2niixになります。
これの影響を受けているかの確認法および対処法を最初に解説した後、その理由を述べます。
FreeSurfer と FSL 6.0.6以降を使っていると、ある事象が起きます。
これの影響を受けているかの確認法および対処法を最初に解説した後、その理由を述べます。
ある方から、「CONNで前処理したfMRI画像から、デフォルト・モード・ネットワーク(DMN)の時系列データを取り出すにはどうしたらよいですか?」というご質問をいただきました。
鍵となるプログラムは以下の2つです。
以下に、方法を記載します。
FSL 6.0.6 and later now support CUDA 11 or later.
After various trials and errors, I have found a simple way to use CUDA effectively with FSL, which I will introduce here.
Assuming that FSL 6.0.6 or later is already installed.
FSL 6.0.6 以降で、CUDA 11以降も対応するようになりました。
いろいろ試行錯誤した結果、以下のようなシンプルな方法でFSLでCUDAを上手に使うことができるようになったので紹介します。
なお、Amulet社から販売している Powerstep Tower for Lin4Neuro は、既にこれらの設定が済んでいますので、電源入れたらすぐにEDDY, BEDPOSTX, XTRACTなどがGPUを使って解析できます。
なお、FSL 6.0.6 以降は既にインストールされているとします。
これまで新しいハードディスクを追加する際の tips を書いてきましたが、最初から最後までまとめます。SATA接続のSSDも同様です。
fdisk を使って確認できます。
1 | sudo fdisk -l |
詳細はこちらに説明があります。
この後は、 /dev/sda が新たなデバイスであると仮定します。
gdisk を使います。
1 | sudo gdisk /dev/sda |
この後、タイプするコマンドは
1 2 3 | n #新しいパーティションを追加 設定はすべてデフォルトのままでも可 p #パーティションテーブルを確認 w #パーティションテーブルの書き込み |
の3つだけです。
詳細は先ほどと同じく、こちらに説明があります。
mkfs.ext4 を使います。
1 | sudo mkfs.ext4 /dev/sda |
blkid で確認できます。
1 | sudo blkid | grep dev\ /sda |
ここで表示されるUUIDを後ほど使います。
今の場合は /mnt/data1 にマウントするとします。
1 | sudo mkdir /mnt/data1 |
/etc/fstab に以下の内容を追加します。詳細はここでは説明しませんが、データ用ならば以下の設定でよいのではないかと思われます。
1 2 | # HDD 2023-04-15 (コメントを記載した方がどのハードディスクかわかります) UUID=上記で調べたUUID /mnt/data1 ext4 defaults 0 0 |
mount -a でマウントできます。
1 | sudo mount -a |
自分だけ使う場合、chown を使ってオーナーを自分にすると使い勝手がいいです。
1 | sudo chown -R $USER:$USER /mnt/data1 |
これでハードディスクを追加できました。
FSLはデフォルトでは、Linuxの場合は、.profile の下、macOS の場合はお使いのシェルに応じて、.bash_profile もしくは .zprofile の下に 以下のような設定が書き込まれます。(6.0.6以降の設定です)
1 2 3 4 5 | # FSL Setup FSLDIR= /usr/local/fsl PATH=${FSLDIR} /share/fsl/bin :${PATH} export FSLDIR PATH . ${FSLDIR} /etc/fslconf/fsl .sh |
この内容を理解できると、ソフトの設定がわかるようになるので、1行ずつ解説してみます。
FreeSurfer では Local Gyrification Index (LGI) を求めることができます。LGIを一言で言えば、脳の皮質の折りたたみの状態を指標化とでも言えるでしょうか。
詳細は、本家のウェブサイトにありますが、ポイントを示します。
この3つを準備しておけば、あとは、以下のコマンドをタイプするだけです。
1 | recon-all -s <fsid> -localGI |
FSLのバージョン情報がどこにあるか探したので備忘録として書いておきます。
1 | cat /usr/local/fsl/etc/fslversion |
で求められます。
しばらく前に、Ubuntu 18.04用にHCP Pipelineの環境を設定する方法を記載しましたが、いくつかアップデートもあるので、Ubuntu 20.04用以降でも設定できるようにします。
*2023/10/08追記: Neurodebianの設定についてうまく動かないミスがありましたので修正しました。神谷先生、ご指摘ありがとうございました。
*2024/03/29追記: Ubuntu 22.04でFreeSurferのスクリプトがダウンロードできない不具合を解消しました。金子先生、ご指摘ありがとうございました。
1. 目的
2. 準備
2.1. data.csv
3. ソースコード
4. 結果
4.1. パラメトリック検定の結果(para_result.csv)
4.2. パラメトリック検定の結果(nonpara_result.csv)
Lin4NeuroはXFCEを採用しています。とても軽量なのでいいのですが、ウィンドウのサイズ変更でウィンドウの端を上手につかむことができず困ることがあります。
いいショートカットを教えていただきました。「Altキーを押しながら右クリックして、マウスを動かす」です。
私はマウスはできるだけ使わない方がうれしい人間なので、マウスを矢印キーで代用できないか試してみたらバッチリでした。
Alt + 右クリック + 矢印キーで、ウィンドウのサイズが比較的簡単に変更できます。
お試しあれ。
UDF形式はDVDやブルーレイの標準フォーマットですが、Ubuntuでは、デフォルトではディスクを挿入しただけでは認識されないことがあります。
以下のようにすることで対応できます。
Ubuntuの「ディスク」アプリ (gnome-disks) を起動します。
ここで、光学ドライブを選択し、「デバイス」にあるパスを確認します。
上図では、/dev/sr0 であることがわかります。
Ubuntu 18.04以降では、/media/ユーザ名/ の下にリムーバブルディスクがマウントされますので、ここに udf というディレクトリを作成します。(udfでなくても自分の好きな名前で大丈夫です)
1 | sudo mkdir /media/ユーザ名/udf |
以下のコマンドでマウントします。
1 | sudo mount -t udf /dev/sr0 /media/ユーザ名/udf |
こうすると、デスクトップ上にディスクが表示されるようになります。
ディスクが表示されず困った時、試してみる価値があります。
GUIでは、ディスクのアイコンで右クリックをして「取り出す」で大丈夫です。
コマンドラインでは、sudo umount /media/ユーザ名/udf
でアンマウントできますのでその後はいつでも取り出せます。
DICOMファイルがひとつのディレクトリに入っていて、パルスシーケンスごとにわけたくなることがありませんか?
これまで、私はpydicomを使ったり、DCMTKのツールを使ったスクリプトを使用していました。
しかし、先日、dcm2niixにDICOMソート機能があることを知りました。
ヘルプには
-r : rename instead of convert DICOMs (y/n, default n)
としか書いていないのですが、dcm2niix のGitHubのissue 604に以下の記載がありました。
https://github.com/rordenlab/dcm2niix/issues/604#issuecomment-1120269405
dcm2niix -r y /path/to/DICOMS – this will simply rename rather than convert the data. It sorts each session into a separate folder, which makes subsequent conversion much easier.
実際試してみます。DICOM というディレクトリにDICOM画像が入っていて、sorted というディレクトリに保存したいとします。
1 2 | mkdir sorted dcm2niix -r y -o sorted DICOM |
これで見事、sortedディレクトリの下に撮像年月日のディレクトリが作成され、その下にシーケンスごとにサブディレクトリにソートされたDICOM画像ができていました!
既に匿名化されているDICOMなどは、これを使うだけでソートが問題なくできますね。
知られていない裏技だと思うので紹介しておきます。
bedpostx_gpu を走らせると、以下のエラーがでます。
1 | /usr/local/fsl/bin/bedpostx_postproc_gpu .sh: 行 20: --cnonlinear /bin/merge_parts_gpu : そのようなファイルやディレクトリはありません |
この解決法がFSLのMLで紹介されています。
https://www.jiscmail.ac.uk/cgi-bin/wa-jisc.exe?A2=FSL;ee0b1626.2112
具体的には、
${FSLDIR}/bin の中にある bedpostx_postproc_gpu.sh の
1 2 3 4 | # last 2 parameters are subjdir and bindir parameters= "" while [ ! -z "$2" ] do |
を
1 2 3 4 | # last 2 parameters are subjdir and bindir parameters= "" while [ ! -z "${2+x}" ] do |
に変更します。
while の後の test文 の中が、 $2 が ${2+x} になっています。
これで無事に動きます。
ご紹介まで。(金子貴久子先生、情報提供ありがとうございました)
4月30日にUbuntuのアップデートをしたら、以下のようなメッセージが出ました。
W: GPG エラー: https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY A4B469963BF863CC
E: リポジトリ https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 InRelease はもう署名されていません。
N: このようなリポジトリから更新を安全に行うことができないので、デフォルトでは更新が無効になっています。
N: リポジトリの作成とユーザ設定の詳細は、apt-secure(8) man ページを参照してください。
NVIDIAのリポジトリが変更があったのかなと思い、NVIDIAのサイトを見に行ったら、きちんと書いてありました。
Updating the CUDA Linux GPG Repository Key
このページに書いてありますが、Ubuntu 18.04の場合は行うべきことは以下になります。(Ubuntu 20.04は1804を2004に変えるだけです)
1 2 3 4 | sudo apt-key del 7fa2af80 wget https: //developer .download.nvidia.com /compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1 .0-1_all.deb sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt update |
これで公開鍵が更新されます。
ただ、人によっては以下のメッセージが出てくるかもしれません。
W: ターゲット Packages (Packages) は /etc/apt/sources.list:63 と /etc/apt/sources.list.d/cuda-ubuntu1804-x86_64.list:1 で複数回設定されています
これは、/etc/apt/sources.list と /etc/apt/sources.list.d/cuda-ubuntu1804-x86_64.list
に同じ内容が記載されていることによります。
この場合は、
/etc/apt/sources.list にある
deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /
を削除すればOKです。