最近、bash における sort の使い方について学ぶ機会がありましたので記載します。(下地先生、ご指導ありがとうございます!)
学んでいく中で、manpagesの日本語訳についてもちょっと思うところがありましたので、それも踏まえて述べていきます。
最近、bash における sort の使い方について学ぶ機会がありましたので記載します。(下地先生、ご指導ありがとうございます!)
学んでいく中で、manpagesの日本語訳についてもちょっと思うところがありましたので、それも踏まえて述べていきます。
FreeSurferで画像解析をしていると、「他の画像解析ソフトで解析した画像をFreeSurferで表示できないだろうか?」という疑問が湧いてきます。
今回、慶応大の上田亮先生が、その方法を見出してくださいましたので、上田先生の了解を得て、その方法を説明します。
FSLで作成したFA画像を、FreeSurferのSurface画像に投影してみます。
2018年10月26日、FSL 6.0.0がリリースされました。
メジャーバージョンアップなのでこれからいろいろ調べないといけませんが、
FSLのインストーラー、fslinstaller.pyをそのまま実行するとFSL 6.0.0がインストールされます。
しかし、従来のFSL 5.0.11をインストールしたい人もいます。
fslinstaller.pyのオプションで、指定できることがわかりました。
なお、fslinstaller.pyはPython2のスクリプトです。最近は、pythonとタイプするとpython3が起動する人も多いので、
python2.7 fslinstaller.py としてあげるといいでしょう。(Linuxはpython2でいいのですが、MacOSはpython2.7と明示しないとうまく動きません)
先日、Python 3.x系のAnacondaをLinuxにインストールする必要がありました。
これ自体はなんら問題がなかったのですが、FreeSurferを使っている時にひとつ問題が出ました。
FreeSurferの asegstats2table と aparcstats2table はPython 2.x系で書かれているスクリプトで、Python3系では動きません。
Ubuntuの場合、デフォルトだと
python or python2 –> Python 2.x系
python3 –> Python 3.x系
となっているため、
#!/usr/bin/env python
は、通常はpython2.x系を指します。
しかし、私のように、Python3.x系のAnacondaをいれると
$ python --version
とすると
Python 3.6.5 :: Anaconda, Inc.
となり、python3.x系が呼び出されているのがわかります。
どうしたものかと思いましたが、Anacondaのサイトにきちんと答えが書いてありました。
2020/02/03 ここで紹介する方法はもう使えなくなっています。Homebrew経由でインストールするのが一番確実かと思います
macOS High Sierraから、セキュリティが以前よりも厳しくなりました。
これによっていろいろなソフトウェアをインストールする際の手順がめんどくさくなりました。
VirtualBoxも例外ではありません。
しばらく前に、ANTsのUbuntu 14.04へのインストール方法(ソースからのコンパイル)という記事を書きましたが、最近のANTsは、cmakeのバージョンが3.10以上でないとコンパイルできなくなっていました。
方法を探してみましたが、cmakeのコンパイルを説明するページが圧倒的でした。
しかし、さらに探していたところ、pipを使えばすんなりいくことがわかりました。
pipは、pythonのパッケージ管理システムで、この中にcmakeも入っています。
ということで、改めて記事を書いていきます。
※2020/02/02 現在はUbuntuのcmakeは3.13までアップグレードしましたので、pipでなくても大丈夫になりました。
sudo apt install cmake
だけでも以下のコンパイルはできます。
2018/8/28 13:40 満席となりましたので、受付を終了いたしました。
2018年3月にABiS脳画像解析チュートリアルにおいてFreeSurferのチュートリアルを行いましたが、アンコールのリクエストを複数いただいているので、今回も岩手医科大学の山下典生先生の協力を得て、2018年11月18日に東京でFreeSurferの勉強会を開催することとしました。
今回は、研究費のサポートがあるため、無料です。
これまでに開催してきたチュートリアルのように、ご自身のパソコンを持ち込んでいただき、FreeSurferにじっくり触れていただきます。
想定している対象者は、FreeSurferの経験がまだ少ない方です。全く経験がない方もOKです。また、recon-allはやったことがあるけれども、マニュアル修正をやったことがない方はとてもいい経験になると思います。これらの経験がある中級者以上の方には物足りないかと思います。
日程及び場所は以下になります。
東京駅八重洲口徒歩5分
根本清貴(筑波大学医学医療系精神医学)
山下典生(岩手医科大学医歯薬総合研究所超高磁場MRI診断・病態研究部門)
・FreeSurferの概要
・recon-allを用いた前処理の方法
・ROI解析
・個人解析結果のマニュアル修正
・Qdecを用いた基本的なグループ解析
・コマンドラインを用いたグループ解析
Rで用いることのできるネットワーク解析ツールに igraph があります。
何かよいチュートリアルがないかと探していたところ、Katherine Ognyanova女史によるすばらしいチュートリアルを見つけました。
とてもよいものだったので、ぜひ日本語化したいと思い、Ognyanova女史に翻訳の許可を求めたところ、快諾してくださいましたので、我々の研究室の田村昌士先生が中心に翻訳してくださいました。
以下に公開します。
Rとigraphを使ったネットワーク解析と可視化のチュートリアル
自分が頻回に遭遇するエラーなので、備忘録として載せておきます。
Ubuntuでカーネルをアップデートすると、VirtualBoxを起動するときに、以下のエラーが出ます。

このエラーがでたときに、このまま
sudo /sbin/vboxconfig
としてもエラーが出て解決しません。(細かいエラーを保存し忘れました)
解決方法はシンプルで、新しいカーネルにあったカーネルヘッダーをインストールすることです。
以下に具体的な解決法を示します。
$ uname -r 4.15.0-22-generic
今の場合、4.15.0-22-generic であることがわかります
上記を賢く使ってインストールします。
$ sudo apt update $ sudo apt install linux-headers-$(uname -r)
これでカーネルヘッダーがインストールされます
$ sudo /sbin/vboxconfig vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Building VirtualBox kernel modules. vboxdrv.sh: Starting VirtualBox services.
これで無事にVirtualBoxの仮想マシンが起動するようになります。
VirtualBox上にUbuntu (正確にはLin4Neuroなのですが)をインストールしたところ、下図のように画面が乱れるという現象が再現性をもって起こりました。

ログイン画面が表示されているのですが、これでは全く使いものになりません。
いろいろ調べていたのですが、なかなかわからなかったのですが、ふと、「仮想ターミナルを立ち上げて戻ってきたらどうだろう?」と思い、試したところ解決しました。
VirtualBoxのHotkey (デフォルトは右Ctrl) + F1 を押します。
私の環境で、 右Ctrl + F1 を押すと以下のようになりました。

きれいに見えます。
ここで、さらに、Hotkey + F7 を押します。
私の環境では、右Ctrl + F7 を押してみました。

なんときれいになりました。
忘れないようにメモとして残しておきます。
今、MacもLinux (RedHat系, Debian系) もFSLのインストールはfslinstaller.pyを使うようになりました。
これは、インストールだけかと思いきや、アップデートにも使えます。
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FslInstallation/MacOsX
https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/FslInstallation/Linux
にfslinstaller.pyのオプションが説明されています。
そのまま引用します。
-c がアップデートを確認となっています。
試してみます。
python fslinstaller.py -c
--- FSL Installer - Version 3.0.11 ---
[Warning] Some operations of the installer require administative rights,
for example installing into the default folder of /usr/local.
If your account is an 'Administrator' (you have 'sudo' rights)
then you will be prompted for your administrator password
when necessary.
When asked a question, the default answer is given in square brackets.
Hit the Enter key to accept this default answer.
Where is the FSL folder (e.g. /usr/local/fsl)? [/usr/local/fsl]:
ここでそのままEnterを押します。
Looking for new version. [OK] Version 5.0.11 available. Would you like to install update? [yes]:
5.0.11があるのでアップデートする?と聞かれますので、そのままEnterキーを押すか、もしくは yes とタイプすると5.0.11のアップデートがはじまります。
fslinstaller.py自体は自分自身でプログラムをアップデートする機能を持っています。したがって、インストールした後も捨てないということが大事です。
なお、-f がFSL FEEDSのダウンロードとなっていますが、これは -F の間違いです。今度、FSLのMLに投稿しようと思います。
また、このプログラムはpython 2.x系のみで動作しますので、そのことも覚えておいた方がいいでしょう。
USBメモリは多くの場合、FAT32形式でフォーマットされています。これは汎用性がありますが、4GBの壁があり、4GBをこえるファイルは使うことができません。
WindowsにはNTFS形式があり、これは4GBを超えて保存できますが、MacでNTFSでフォーマットされたUSBメモリを読み込むにはひと手間必要です。
では、WindowsでもMacでもLinuxでも4GB以上のファイルをUSBメモリで扱うにはどうしたらいいでしょうか。
それに対する答えのひとつが exFAT形式です。
exFAT形式は、Microsoftが主にリムーバブルメディア向けに開発したファイルシステムだそうです。WindowsでもMacでも普通に読み込むことができます。
Ubuntuでもソフトウェアを2つ入れればすぐに使えます。それはexfat-fuse と exfat-utilsです。
Ubuntu 14.04の場合は、PPA経由で入れます。
sudo apt-add-repository ppa:relan/exfat sudo apt-get update sudo apt-get install exfat-fuse exfat-utils
Ubuntu 16.04以降では本家から普通に入れられます。
sudo apt-get update sudo apt-get install exfat-fuse exfat-utils
それで、フォーマットの仕方は非常に簡単です。
sudo mkfs -t exfat [ -n 名前 ] デバイス
もしくは
sudo mkfs.exfat [ -n 名前 ] デバイス
mkfs -t exfatも、mkfs.exfatも mkexfatfs へのシンボリックリンクのようです
たとえば、/dev/sdf を DATA と名づけたい場合
sudo mkfs.exfat -n DATA /dev/sdf
となります。
フォーマットが非常に速くて便利です。
クロスプラットフォームで4GB超の大容量ファイルが扱えるのと、フォーマットの速さが魅力的なので今はUSBメモリはとりあえず exFAT にフォーマットしてから使用するようになりました。
先日、ABiSチュートリアルで順天堂大学の鎌形先生から、FSL, FreeSurfer, MRtrix3を組み合わせたコネクトーム解析の素晴らしい講義を聞く機会がありました。
MRtrix3はインストールしなきゃと思いつつできていませんでしたが、せっかくですから、モチベーションが高いうちにインストールしようと思い、Ubuntu 16.04へのインストールを行いました。
http://mrtrix.readthedocs.io/en/latest/installation/linux_install.html
こちらに説明がありますが、これをまとめてみました。
関心のある方はこちらからダウンロードしてみてください。(右クリック→名前をつけて保存)
保存した後、
$ chmod 755 mrtrix3_installer_ubuntu1604.sh $ ./mrtrix3_installer_ubuntu1604.sh
でインストールができます。
ちなみに、上記スクリプトは以下のようになっています。
GitHubからダウンロードし、コンパイルし、.bashrcにパスを通すというシンプルなことをやっています。
#!/bin/bash #Script to setup mrtrix3 for Ubuntu 16.04 #Install prerequisite packages sudo apt-get install git g++ python libgsl0-dev zlib1g-dev libqt4-opengl-dev libgl1-mesa-dev libqt5svg5* libeigen3-dev #Download MRtrix3 source if [ ! -e $HOME/git ]; then mkdir $HOME/git fi cd $HOME/git git clone https://github.com/MRtrix3/mrtrix3.git #Configuration and build cd mrtrix3 ./configure ./build #.bashrc echo >> $HOME/.bashrc echo "#MRtrix3" >> $HOME/.bashrc echo 'export PATH=$PATH:$HOME/git/mrtrix3/bin:$HOME/git/mrtrix3/scripts' >> $HOME/.bashrc
Ubuntu mini.iso is useful when we want to build a system with minimal packages.
It is useful to make a bootable USB stick.
Below is how to make UEFI-based bootable USB stick with Ubuntu mini.iso.
Required package: 7-zip
You can get 7-zip with the following command;
sudo apt install p7zip-full
Now we will use “7z” command.
Two options are needed. “x” for extract and “-o” to specify output directory. If the directory doesn’t exist, 7z creates automatically.
Now I want to extract images into “usbdisk” directory.
7z x -ousbdisk mini.iso
This will make “usbdisk” directory and extract into the directory. Note that no space is allowed between “-o” and target directory. I tried space or quotation, without success.
One more thing. In order to make the USB stick bootable with UEFI, we need to extract efi.img under boot/grub. This can be easily done with the following command. (You don’t have to change directory.)
7z x -ousbdisk usbdisk/boot/grub/efi.img
This command will extract efi.img, which will be “efi” directory under which bootx64.efi and grubx64.efi exist into the usbdisk directory.
Finally we just copy the contents under usbdisk to a USB.
That’s it. Now try to boot from USB disk.
I tried to install igraph simply by running install.packages(‘igraph’), which resulted in compile error.
Gathering information scatterd on websites, I came to the conclusion.
My Circumstance is as follows;
Ubuntu
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
$ uname -a
Linux vincent 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
R-studio
Version 1.1.383
sudo apt update sudo apt install libssl-dev libcurl4-openssl-dev libxml2-dev
Then running install.packages(‘igraph’) in R-studio succeeded without error.
多くの方から、”Second-level Analysis”のチュートリアルを執筆するように言われていましたが、なかなか時間がとれなかったのでそのままになっていました。
ようやく、時間がとれたので second-level analysis にいきます。
First-level analysisで Done と押すと、以下のような画面になるはずです。

ここで、大事なのは、画面中央の “Subject effects” と “Between-subjects contrast” です。
CONNがすごいのが、SPMで設定するコントラストを自動で考えてくれるところです。
それでは、2群間の比較から行きましょう。
健常者より統合失調症でfunctional connectivityが落ちているところをまず探したいと思います。
年齢と性別は共変量として扱いましょう。
まずは、”Subjects effect” のところで、シフトキーを押しながら、
control
patients
age
gender
の4つを選択します。

次に、Between-subject contrastsで、”Any effects of interest” のところをクリックして、”control > patients”を選択します。

そうすると、上のコントラストが自動で [1 -1 0 0] となります。
つまり、SPMで自分で設定しなければいけないコントラストを、CONNは自動で設定してくれるのです。
そうすると、画面下に、統計の表があらわれます。
ただ、これは味気ないので、もう少しファンシーな結果を見ましょう。
画面左下にある “Results explorer” をクリックしてください。

これを見ていきます。
これは、connectivityの行列のサイズを示します。今は、164のROIを使っているとわかります。
これは、左側にある図の seed がどれかを示します。今は、右前頭極がシードになっています。左側の絵が真っ黒ということは、右前頭極と相関をきたす領域で、統合失調症が健常者より落ちているconnectivityはなかったということになります。ちなみに、seedは、ひとつずつ変更していくと、左の絵が変わりますし、CtrlキーやShiftキーを使って複数選ぶことも可能です。下の”Select all”を選ぶと、ROIをすべて選ぶことになります。あたりをつけるために、やってみるといいと思います。今の場合でやった結果を下に示します。

ここで統計の閾値を設定します。今は、FDRで多重比較補正をかけて p<0.05 となります。 閾値を変更したかったらここで変更します。
その下にあるのは、統計結果です。領域が出ているところを選択すると、左側でどのconnectivityかを示してくれます。
表示も変えてみましょう。
メニューの View -> axial view を選んでください。

そうすると、以下のようになります。

きれいですね。
coronal, sagittalも同様です。
そして、3d viewを選択すると、以下のようになります。

これも素敵ですね。
こんな感じで結果を表示できます。
SPM12のアップデートのリリースが先ほどされました。
様々なバグ修正が行われています。
アップデートのREADMEを見ると、自分的に興味深いことを発見しました。
コマンドラインでですが、octaveでの動作ができるようにいろいろ試みられているようです。
バッチ処理などにmatlabなしでoctaveだけでできたら、応用範囲が一気に広がります。
すでにSPM12をインストールしている方々でしたら、アップデートは、Matlabから下記のコマンドを打てば自動でできます。
spm_update update
お試しあれ。
私は、Ubuntu 16.04 (をカスタマイズしたLin4Neuro 16.04)でfcitx+mozcで日本語入力を行っています。
エディタはvimを利用しています。
多くの方がネットに記載されていますので、詳細は書きませんが、私がvimで日本語文書を書くとき、
という問題がありました。
この点に関して、私がよく参考にさせていただいている「いくやの斬鉄日記」にまさにこれに関する記事があり、中国語ですが、この問題を解決する .vimrc に記載する設定のリンクが紹介されていました。
早速、以下を ~/.vimrc に記載しました。(中国語のコメントは、英語に変換してあります)
"##### auto fcitx ###########
let g:input_toggle = 1
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction
function! Fcitx2zh()
let s:input_status = system("fcitx-remote")
if s:input_status != 2 && g:input_toggle == 1
let l:a = system("fcitx-remote -o")
let g:input_toggle = 0
endif
endfunction
set ttimeoutlen=150
"Leave Insert mode
autocmd InsertLeave * call Fcitx2en()
"Enter Insert mode
autocmd InsertEnter * call Fcitx2zh()
"##### auto fcitx end ######
これでvimを起動したところ、日本語でいろいろ書いた後に、ESCを押してノーマルモードに戻ると、自動でmozcがoffになりました。やった!という感じです。
しかし、もう少し使っていて、不便に感じることがありました。それは、vimを起動して最初の挿入モードになるときに必ず mozc が立ち上がってしまうことです。日本語の文章を書くときはいいのですが、スクリプトを書くときは邪魔になります。ここは自動じゃないほうがいいなと思いました。
で、上の記載をよくよく見ると
Fcitx2en() というファンクションと
Fcitx2zh() というファンクションがあり、
前者はESCが押された時に自動でinput method (IM)をoffにする機能であり
後者は挿入モードになった時に自動でIMをonにする機能のようです。
私は後者の機能がいらないんだと気づきました。
なので、以下のように、Fcitx2zh()のところを削除しました。
"##### auto fcitx ###########
let g:input_toggle = 1
function! Fcitx2en()
let s:input_status = system("fcitx-remote")
if s:input_status == 2
let g:input_toggle = 1
let l:a = system("fcitx-remote -c")
endif
endfunction
set ttimeoutlen=150
"Leave Insert mode
autocmd InsertLeave * call Fcitx2en()
"##### auto fcitx end ######
こうしたところ、私の期待していたように
となりました。
これでvimがさらに便利になりました。
自分の備忘録として記載しておきます。
2018.09.12追記:license.txtの扱いが少し変わったので、修正いたしました。また、High Sierraでもインストールを確認できています。
FreeSurferのMacへのインストールについては、本家のサイトにもstep-by-stepのわかりやすいインストラクションがありますが、ターミナルやFinderの設定も含めて示したいと思います。