FSLユーザーのためのシェルスクリプトチュートリアル

FSLを開発しているFMRIBグループは、FSL courseのスライドおよびデータセットを公開してくださっています。ここで勉強しているときに、さりげなくシェルスクリプトのチュートリアルもあることが気になっていました。

先日、時間をとってこのチュートリアルを丁寧に見ていったところ、非常に勉強になることが多く、シェルスクリプトの理解が深まりました。FSLユーザーのみならず、脳画像解析でUNIX系のOS(Macも含む)を使う方々にとって有益な情報が多いと思いましたので、日本語にしておきたいと思い、FMRIBのSteve Smith教授の承諾を得て、このチュートリアルを翻訳させていただきました。

オリジナルのサイト自体は、スライド形式になっており、レクチャーと演習部分にわかれています。しかし、翻訳していく段階でこれを完全に模倣するよりは、レクチャーと演習をそれぞれ別の媒体として準備するのも勉強するのには都合がいいかもと考え、それぞれ別のPDFを準備しました。

関心のある方は、以下のリンクからPDFをご覧いただけたらと思います。

FSL course: シェルスクリプト
FSL course: シェルスクリプト演習

ファイル/ディレクトリ名に空白が入っているファイル/ディレクトリの空白を下線_に置換するワンライナー

ある方とやりとりしているなかで、Linuxにおいて、ファイル名に空白が入っているときにその空白を_に変換するスクリプトを紹介していただきました。

そういうのを知っているのは大事だなと思いまして、シンプルな方法がないかなと考えました。

そうしたら、renameを使えば比較的簡単に達成できることに気づきました。

以下は、カレントディレクトリ内にあるファイル/サブディレクトリ名に空白が入っているものを探し出し、空白を_に変換します。

$ find . -name "* *" | rename 's/ /_/g'

これを使えば空白の問題からおさらばできますね。

ちなみにrenameはsedと同じフォーマットでファイル名の一部を変更できます。

‘s/変換前の文字列/変換後の文字列/g’ で最後のgがあるとそのファイル名で合致するパターンすべてに対して変換してくれます。gがないと最初のパターンだけで置換を行います。

いろいろ教えてくれる方がいるのはとてもありがたいですね。

FSLViewで画像が正しい向きで表示されない時

FSLViewで画像を表示すると、思ったような向きで表示されないときがあります。
下に例を示します。

fslview01

ここでは、上にある水平断、冠状断が角度が変になってしまっています。

しかし、よくみると、FSLViewは画像の前後をきちんと認識しています。
画像のまわりにあるアルファベットはそれぞれ

A: anterior
P: posterior
L: left
R: right
I: inferior
S: superior

を意味しますが、正しくなっています。

それでは、「正しく」表示するにはどうしたらよいでしょうか。
続きを読む

SPMで画像の中心を原点に設定するスクリプト

岩手医大の山下典生先生スクリプト第2弾です。
NIfTI画像を扱っていると、ときどき画像の原点(Origin)が変なところに設定されているケースに遭遇することがあります。このスクリプトは、SPMで、NIfTI画像の原点を、画像の中心に設定するスクリプトです。多くの画像の原点が変なところになっているような時に役立つと思います。
使い方は簡単です。

  1. setorigin_center.mをダウンロード(右クリックで名前をつけてリンク先を保存)し、SPMのフォルダに入れます。
  2. Matlabのコマンドウィンドウから、以下のようにタイプします。
  3. >>setorigin_center

  4. 画像選択のウィンドウが開きますので、原点を画像の中心にセットしたい画像を選択してください。

これだけです。
実際に手元にあったデータでやってみました。
左側が設定前です。原点がかなり後ろに設定されています。
右側がスクリプトを走らせた後です。この場合は、幸運にも画像の中心がちょうどACと合致しています。ここから微調整でAC-PCを設定した方がずっと楽ですよね。

setorigin_screenshot

How to enable users to automount CD-ROM or USB in XFCE

I’m trying to install XFCE with ubuntu minimal iso (mini.iso).

With default settings, users are not able to mount CD-ROM or USB.

In order to change this, edit the following;

/usr/share/polkit-1/actions/org.freedesktop.udisks.policy

In the section “Mount a device”, change “allowed_any” and “allow_inactive” to “yes”.

<xmp>
  <action id="org.freedesktop.udisks.filesystem-mount">
    <description>Mount a device</description>
    <defaults>
      <allow_any><strong>yes</allow_any>
      <allow_inactive>yes</allow_inactive>
      <allow_active>yes</allow_active>
    </defaults>
  </action>
</xmp>

XubuntuでPlayOnLinux経由でMS Office 2010をインストールし、日本語入力を問題なくする方法

Ubuntuにしてたいていは満足なのですが、職場で利用となると足かせになるのがOfficeの問題です。LibreOfficeでたいていは間に合うのですが、Wordの校閲機能やPowerpointのレイアウトの問題などはいかんともしがたい問題です。これは少しずつストレスになっていきます。

Wine経由でMS Office 2010をインストールできると聞いていましたが、試してみてもエラーが多い状態でした。

その後、調べていたら、PlayOnLinuxを使うとあっさりいけるよという書き込みを複数見ました。やってみたらすんなりできました。

しかし、日本語を入力すると、入力しているのに消えてしまうという問題がありました。これもいろいろ調べて、対処をしてみたのですが、うまく動かず…。
でも、よく考えてみたら、PlayOnLinux経由なのだから、設定ファイルが別なのではないか?と思ったところ、それがあたりでした。

以下に方法をまとめます。

  1. ベースのOS
  2. Xubuntu 12.04です。

  3. MS Officeのバージョン
  4. Office 2010の32bitを準備します。Office 2013は動作しません。また、Office 2010の64bit版も動作しません。

  5. Wineのインストール
  6. PlayOnLinuxはWineのフロントエンドなのでWineが必要です。オフィシャルのWineはバージョンが若干古いので、私は下記でWine-teamのPPAからWineをインストールしました。これでwine 1.6がインストールされます。これを書いている時点での最新版は1.7ですが、1.6で一連の流れに問題はありませんでした。

    sudo add-apt-repository ppa:ubuntu-wine/ppa
    sudo apt-get update
    sudo apt-get install wine
    
  7. PlayOnLinuxのインストール
  8. PlayOnLinux(POL)もUbuntuのデフォルト(4.0.14)では、Office 2010のインストールに対応していません。なので、POLのサイトから、最新版(4.2.2)をダウンロードします。
    詳細はhttp://www.playonlinux.com/en/download.htmlに記載してありますが、とりあえず、12.04の場合は下記のとおりです。

    wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -
    sudo wget http://deb.playonlinux.com/playonlinux_precise.list -O /etc/apt/sources.list.d/playonlinux.list
    sudo apt-get update
    sudo apt-get install playonlinux
    
  9. PlayOnLinuxの起動
  10. メニューのゲーム→PlayOnLinuxでPlayOnLinuxが起動します。
    そこで、「インストール」をクリックします。

    そうすると、下図のようになりますので、SearchからOffice 2010と入れると候補が出てきますので、選択し、右下の「インストール」をクリックします。

    POL_install01

    その後は私は既にインストールしてしまったので、スクリーンショットは示せませんが、指示された通りに従っていけば、必要なファイルなどを全部ダウンロードしてくれます。なお、インストールする場所は変更するとうまくいかないということですので、とりあえずデフォルトのまま入れてしまうのが無難なようです。

    ひと通り終わると、以下のようになります。

    POL_install02

    これでインストールは完了です。これまでの苦労は何だったんだろうと思うぐらい簡単でした。

  11. 日本語入力の設定
  12. しかし、このままだと、日本語入力の問題があります。様々なサイトが、

    ~/.wine/user.regに

    [Software\\Wine\\X11 Driver]
    “Inputstyle”=”offthespot”

    のように記載しなさい

    と書いてあります。しかし、POLを使用した場合は、それではうまくいきません。

    Officeの日本語設定は、ホームディレクトリの下の以下の場所にあります。

    ~/.PlayOnLinux/wineprefix/Office2010/user.reg

    したがって、適当なエディタでこのファイルを開けます。今はLeafpadにしましょう。(なんでもいいですが)

    leafpad ~/.PlayOnLinux/wineprefix/Office2010/user.reg
    

    そして、このファイルの一番下に以下の記述を追加します。

    [Software\\Wine\\X11 Driver]
    "InputStyle"="root"
    

    (環境によってはバックスラッシュは¥に見えると思います)

    その後、その後、POLを再起動すると、ファイルの設定を読み込み直します。

    これで日本語をうつと、インライン変換まではいかないのですが、日本語変換が画面の左下の方にあらわれ、確定した文字がきちんと表示されます。

これでさらによい環境ができあがりました。

SPM8でSPECT/PET画像を一括で解剖学的標準化するスクリプト

SPMでSPECT画像やPET画像を標準化するとき、Normalise (Est & Write)から行います。しかし、この時、Source ImageとImages to Writeにいちいち画像ファイルを指定せねばならず、苦痛を伴います。

私の友人の岩手医大の山下典生先生が、この問題を解決するスクリプトを書いて下さいました。

使い方はいたって簡単です。

  1. fy_normalise.mをダウンロード(右クリックで名前をつけてリンク先を保存)し、SPMのフォルダの中に保存します。
  2. Matlabから以下のようにタイプします。
  3. fy_normalise
    
  4. すると画像を選択するダイアログが出現しますので、標準化したいファイルを選択します。
  5. 次に、ディレクトリを聞かれますので、設定ファイルを保存したいディレクトリを指定します。
  6. そうすると、保存先にspm_normalise_20140117_1621112.matのようなファイルが保存されます。
  7. 次に、SPMのBatchを起動し、ファイルを開くから先ほど保存したmatファイルをしてします。
  8. そうすると、Subjectが指定された状態になります。
  9. パラメータを確認し、大丈夫であることを確認したら、実行すれば解剖学的標準化がはじまります。

非常に便利なので、関心のある方はどうぞお使いください。なお、fy_normalise(”,1)とすると、一度に標準化を走らせることもできますが、設定ミスで後悔しないように、設定を確認してから走らせることをお勧めします。

山下先生、ありがとうございました!

Make battery-life of Ubuntu 12.04 longer on ThinkPad T430s

It’s been months since I swithed completely to Xubuntu 12.04 from MS Windows on my ThinkPad T430s. Basically I’m satisfied with Xubuntu 12.04, but there are some points which need tweaks. They are…

  • Battery Life
  • Somehow battery on ThinkPad T430s lasts only around 2hours on Xubuntu, which is much shorter than Windows.

  • Projector
  • XFCE is not so good at dealing with projectors or external monitors. I’m still struggling with this matter, so I don’t make any comments now.

As of battery life, I found a very good tool, which is TLP.

By installing TLP, the battery life gets longer by one hour without any modification, which is great.

You can find how to install TLP here.

Update of Lin4Neuro (28 Dec 2013)

Lin4Neuro was updated. Some changes are…

  • Kernel was updated to 3.5.0-44-generic.
  • FSL was updated to 5.0.6.
  • Ginkgo CADx was updated to 3.6.0.
  • MINC toolkit was updated to 1.0.01
  • MITK was updated to 2013.12.00.
  • Slicer was updated to 4.3.1.
  • LibreOffice was updated to 4.1.4.2

You can download the latest Lin4Neuro from here.

Now I’m focusing on the 64bit version of Lin4Neuro, so I suspend updating 32bit version. One of the task is to make the UEFI-compatible L4N. I hope it will be possible to boot from UEFI on the next update.

JBL Flip on Xubuntu 12.04

Xubuntu 12.04からJBL FlipをBluetoothで接続しようとしたところ、すぐにはつながりませんでした。
ググったところ、このサイトが参考になりました。

pulseaudio-module-bluetoothがキモでした。

sudo apt-get install pulseaudio-module-bluetooth

これでPulseaudioの設定で音がきちんと出るようになりました。

VBM8の前処理のベンチマーク

VBMの前処理にはどのくらいの時間がかかりますか?という質問を受けましたので、様々なマシンで計測してみました。

3人の3D-T1 MRI画像(ボクセルサイズ 1x1x1mm)をVBM8でDARTELでノーマライズしています。
前処理の設定をvbm8_preproc.matという名前で保存して、以下のベンチマークスクリプトを用意しました。とても単純なMATLABのスクリプトで、処理の前後にtic, tocというコマンドを入れることで前処理にかかった時間を測定するというものです。

%vbm8_benchmark.m
tic
spm('defaults','pet');
spm_jobman('initcfg');
load vbm8_preproc.mat;
spm_jobman('run',matlabbatch);
toc

その結果は、以下のようになりました。

Machine CPU Core Thread Memory OS Matlab Processed time
Workstation BTO AMD Opteron Processor 2425HE x 2 12 12 24GB Xubuntu 12.04 R2013b 74m31s
Desktop BTO Core i7-960 3.2GHz 4 8 24GB Xubuntu 12.04 R2011b 34m47s
Desktop BTO Core i7-960 3.2GHz 4 8 24GB Xubuntu 12.04 R2013b 33m20s
Mac Book Pro (Late 2011) Core i7-2640M 2.8GHz 2 4 8GB Mac OSX 10.9 R2011b 30m29s
Thinkpad T430s Core i7-3520M 2.9GHz 2 4 16GB Windows 7 R2013a 35m0s
Thinkpad T430s Core i7-3520M 2.9GHz 2 4 16GB Xubuntu 12.04 R2013b 29m12s
Desktop BTO Core i7-3930K 3.2GHz 6 12 32GB Xubuntu 12.04 R2013b 26m52s

この結果をまとめると、以下のようになります。

  • CPUが一番影響します。新しいCPU、かつ1コアあたりの性能が高いCPUだとよい結果となります。
  • これはSPM全体に言えることですが、マルチコアは効果はたいしてありません。逆に言えば、SPMを複数立ち上げて処理させることで処理時間を短縮できる可能性があります。
  • メモリは8GB以上あれば、さほど変わりありません。
  • WindowsとLinuxを比べるとLinuxに軍配があがります。
  • Matlabもバージョンが最新の方が処理速度が改善されているようです。

ということで、SPM-VBMという観点からでは、1コアあたりの周波数ができるだけ速いCPUを入手することをお勧めします。

Thinkpad T430sでUbuntu 12.04ファミリーがフリーズする時

Thinkpad T430sにXubuntu 12.04を入れました。インストール自体は何の問題もなかったのですが、入れてから1日の間に10回以上システムがフリーズしました。マウスもキーボードも何の操作も受け付けなくなってしまうのです。

これでは、信頼できないマシンになってしまいます…。

いろいろ調べたところ、カーネルを3.4にアップデートしたところ、問題が解決したという記事をみつけました。

実際にやってみました。

  1. http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.4-precise/にアクセスします。
  2. 64bitの場合ここから3つのファイルをダウンロードします。
    • linux-headers-3.4.0-030400-generic_3.4.0-030400.201205210521_amd64.deb
    • linux-headers-3.4.0-030400_3.4.0-030400.201205210521_all.deb
    • linux-image-3.4.0-030400-generic_3.4.0-030400.201205210521_amd64.deb

    つまり、後ろにamd64.debとあるものとall.debとあるものです。32bitの場合でしたらi386.debとall.debになります。

  3. ダウンロードしたあとで、次のコマンドでカーネルをインストールします。
    sudo dpkg -i linux-*
    
  4. カーネルがインストールされたあと、古いカーネルを削除します。そのためには、apt-get autoremoveがよいと思います。
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get autoremove
    
  5. マシンを再起動します。
  6. ターミナルを立ち上げ、次のようにタイプします。
    uname -r
    

    これで3.4.0-030400-genericと表示されれば新しいカーネルになったことを確認できます。

こうしたところ、私のThinkpad T430sは全くフリーズしなくなりました。カーネルの問題だったということですね。これで安心して解析ができます。

Ubuntuのキーボードセッティング

Ubuntuではキーボードのレイアウトを簡単に変えることはできますが、「システムデフォルト」はコマンドラインでしか変えられないようです。

keyboard

変えたい時は以下をタイプすれば大丈夫です。

sudo dpkg-reconfigure keyboard-configuration

ちなみに、私はThinkapd 430sの英語キーボードを使っているので、Generic 101に変更しました。

TeX Live 2012 on Ubuntu 12.04

Windows 8.1を試しに使ってみたら、あまりにも不適応を起こしたので、この際、思い切ってメイン環境をLinuxに切り替えることにしました。

OSはXubuntu 12.04ベースのLin4Neuroです。自分が使いやすいようにカスタマイズしているので、一番自分にぴったりあっています。
Latexに関しては、TeX Live 2012を入れたいと思っていたのですが、検索したら、こちらのサイトに非常にわかりやすく解説されていました。やるべきことは下記のとおりです。

sudo apt-add-repository ppa:texlive-backports/ppa
sudo apt-get update; sudo apt-get upgrade; sudo apt-get install texlive-lang-cjk

こんなに簡単にできるのは感動ものです。

Ubuntu 12.04でLibreOfficeを3.xから4.xにアップグレードする方法

Ubuntu 12.04LTSを利用していると、LibreOfiiceは3.xのままです。
しかし、LibreOfficeは4.xにアップグレードされ、互換性なども高まっているようです。
以下の方法で、簡単にLibreOfficeを3.xから4.xにアップグレードできます。

sudo add-apt-repository ppa:libreoffice/ppa
sudo apt-get update
sudo apt-get dist-upgrade

ここでポイントは、apt-get updateの後にapt-get dist-upgradeを行うことです。

apt-get upgradeとapt-get dist-upgradeの違いは、man apt-getに以下の記載があります。

upgrade
upgrade は、現在システムにインストールされている全パッケージの最新バージョンを、/etc/apt/sources.list に列挙した取得元からインストールするのに使用します。現在インストール中のパッケージに新しいバージョンがあれば更新しますが、いかなる時も現在インストール中のパッケージの削除は行いません。対象のパッケージが、他のパッケージのインストール状態を変更せずに更新できない場合は、現在のバージョンのままとなります。最初に update を実行しておき、apt-get にパッケージの新しいバージョンがあることを知らせる必要があります。

dist-upgrade
dist-upgrade は、upgrade の機能に加え、新バージョンのパッケージに対する依存関係の変更を知的に操作します。apt-get は「洗練された」競合解決システムを持ち、必要とあらば比較的重要でないパッケージを犠牲にして、最重要パッケージの更新を試みます。そのため dist-upgradeは、いくつかのパッケージを削除する可能性があります。/etc/apt/sources.list ファイルには、必要なパッケージファイルを検索する場所のリストが含まれています。

upgradeは全く削除されることなく、dist-upgradeは必要あらばファイルを削除する可能性があるわけですね。今回、LibreOfficeの3.xから4.xへのアップグレードには、いくつかのファイルが削除される必要もあるので、dist-upgradeを利用することとなります。

何はともあれ、この3つのコマンドで、LibreOfficeを3.xから4.xにアップグレードできます。

Non-stationary correction for VBM on SPM8

Below is an excerpt from SPM-ML

(https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=SPM;72ea5d13.1109)

There is an option for the newest SPM8 releases (>=4010), which enables non-stationarity
correction on the cluster level. Please set in spm_defaults.m:
defaults.stats.rft.nonstat = 1;

However, this option will result in a much longer calculation if you print the results table.
This is maybe also the reason that this option is not set as default.

SPMで複数の群の比較を行いたい時のDesign Matrix

SPM-MLに勉強になる話題が流れていたので、共有します。

出典はこちら。
https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=SPM;a65dd354.1307

コントロールAと疾患B、疾患Cという3群がある時、Design Matrixに全部を入れてしまった方がいいのか、
もしくは、コントロールと疾患A、コントロールと疾患Bというように、別々にDesign Matrixを作った方がいいのかという質問です。

これに対し、Cyril Pernetが非常にわかりやすいたとえを使って説明をしています。
ただ、少しだけtypoがあったのでそこを補足して説明します。

続きを読む

VBMの観点からのSPMの理解(一般線型モデルの理解)

2013年9月に、包括脳MRIチュートリアルで、「VBMの観点からのSPMの理解」なる話をさせていただきました。
VBMに限らず、SPMで用いられる一般線形モデル(GLM)の基本をまとめてみました。
SPMユーザには多少はお役に立てる内容かと思いますので、講義の配布資料を公開させていただきます。

VBMの観点からのSPMの理解の配布資料をダウンロード

LaTeXで各章の最後に引用文献をいれる方法

引用文献は普通は最後に記載することが多いですが、時に章末に掲載したいときがあります。
しかし、普通に、\begin{thebibliography}とすると、見出しの大きさが章の大きさと同じになってしまってかっこわるくなります。
これを解決する方法を見つけました。

まず、chapterbib.styを入手します。
私はここから入手しました。

そして、これがポイントなのですが、jbookやjreportなどの場合に、章末に1セクションとして引用文献を掲載したい場合は、

プリアンプルに

\usepackage[sectionbib]{chapterbib}

と記載します。

また、jbookやjreportだとthebibliographyはデフォルトでは、「関連図書」となってしまいます。
「引用文献」としたい場合は、プリアンブルに

\renewcommand{\bibname}{引用文献}

と記載します。

これで、引用文献が各章末にきちんと表示されるようになります。
[sectionbib]を見つけるまでに相当時間がかかってしまいましたので、書いておきます。