(筑波大関係者専用)Ubuntuで筑波大のVPNサービスに接続する方法

筑波大の学術情報メディアセンターはVPNサービスを運用してくださっています。
非常にわかりやすいマニュアルを提供してくださっていますが、残念ながら、Linuxのマニュアルはまだ提供されていません。

そこで、私の環境(Xubuntu 14.04)でOpenVPNを使ってうまくVPN接続に成功しましたので、備忘録を兼ねて書いておきます。

続きを読む

Ubuntu12.04以降に本家TeX Live 2014を簡単にインストールする方法

先日、私のシステムをXubuntu 12.04からXubuntu 14.04にアップグレードしました。
私はLaTeXに関しては、本家のTeX Live 2014を使っています。インストーラーは十分に使いやすいのですが、怠け者なので、より簡単にできないかと方法を探してみました。

なぜかというと、本家を使う場合、リンクにあるように、少し設定が必要だからです。

そのリンクをひとつずつ確認していたところ、ある方が、Ubuntu用の本家TeX Live 2014インストールスクリプトを公開しているということを知りました。

早速トライしてみたら便利だったので、紹介します。

続きを読む

Ubuntu 14.04 へのFreeSurferのインストール

以前、FreeSurferのインストールの方法を記載しましたが、しばらく時間が経ちました。最近、改めてFreeSurferをインストールする機会がありましたので、改めてまとめてみます。2014年12月現在、FreeSurferのバージョンは、5.3.0です。コピペでもいけるぐらいにまとめてみます。

英語でのFreesurferをLinuxにインストールするときの具体的な方法は、
http://surfer.nmr.mgh.harvard.edu/fswiki/LinuxInstall
に書いてあります。以下は英語を読むのがつらい方のためです。

続きを読む

2014年12月包括脳VBMチュートリアル配布資料(VBMの実践)

2014年12月13日に包括脳MRI脳画像解析チュートリアルが開催されました。
私はVBMチュートリアルを担当しましたが、その時の配布資料を公開します。

このPDFは、「すぐできるVBM」の補足のような位置づけにあります。
すぐできるVBMのサンプルデータを使っていますし、チュートリアルを受講していない方々でも、このPDFを参考にしていただければ、さらなる知識が得られるのではないかと思います。

ダウンロードはこちらからどうぞ。

SPM8とSPM12をよりスマートに同一のMatlabのライセンスで使用する方法

しばらく前に、SPM8とSPM12を同一のMatlabのライセンスで使用する方法という記事を書きましたが、先日の包括脳チュートリアルのアンケートで、「SPM8とSPM12を併存する方法がわかりにくい」というご指摘をいただきました。

ということで、ひとつのスクリプトで全部解決できる方法を考えてみました。
奇しくも、SPM-MLで同じような話題があり、私もその話題に加わったもので、その結果を受けています。

続きを読む

Linuxにおけるハイフンの意味

ときどき、下記のような表現を見ます。

$ wget -O- http://www.example.com/example.gpg.key | sudo apt-key add -

この -Oのあとについているハイフンや、apt-key addのあとについているハイフンの意味をきちんと理解していませんでした。

改めて、調べたら、いろいろな方が解説してくれていました。

結論からいうと、

Linuxにおけるハイフンは、標準入出力をさす

のですね。

上記の例の場合、wget -O は本当はファイル名を引数にもつはずで、

wget -O file となるはずなんです。

でも、今の場合、-を指定することで、

wget -O- はその内容を、標準出力に表示するんですね。
今の場合は、example.gpg.keyが表示されるわけです。

で、上記の場合、さらにパイプがつながっていて、apt-key add -と続きます。
今回のハイフンは、今度は標準入力になるわけですね。

つまり、example.gpg.keyの内容が標準出力に出力され、
それがパイプで今度は標準入力になって、apt-key addの引数として使われるわけです。

となると、次と同じということですね。

$ wget -O tmpfile http://www.example.com/example.gpg.key
$ sudo apt-key add tmpfile
$ rm tmpfile

ハイフンを上手に使うことで一時ファイルを作ることなくパイプを使うことができるわけです。
スマートですね。

Xubuntu 14.04にNVIDIAの最新ドライバーをインストールする方法(Xubuntuをテキストモードで起動させる方法)

先日、新しいデスクトップマシンが職場に到着しました。
早速、Lin4Neuro-14.04をインストールしたところ、画面解像度が1280×1024までしかでなく、悲しいことに…。

グラフィックボードはNVIDIA GeForce GTX 750 Tiが搭載されています。

Ubuntuのnvidia-currentではまだ未対応であることから、本家のサイトからドライバーをインストールすることとしましたが、ひと手間だったので、その経過をまとめます。

続きを読む

Lin4Neuro based on Xubuntu 14.04LTS was released

I managed to customize Xubuntu 14.04LTS to be Lin4Neuro-14.04.

L4N-trusty-screenshot

For this customization I did the following;

  • .desktop files for neuroimaging analysis packages are stored in .local/share/applications
  • Neuroimaging.directory is stored in .local/share/desktop-directories.
  • Custom icons are stored in ~/.icons

If you look at these files, you will see how you can add your entries to menu.

I keep maintaining Xubuntu 12.04 because I am not certain Connectome mapper works in Xubuntu 14.04. If you want to use Connectome mapper, I recommend to use Lin4Neuro 12.04.

Grubで困った時にまずすること

先日、デュアルブートのマシンでXubuntuのアップデートをした時にGrubがアップデートされ、質問に適当に答えていたら、Grubのエントリーが消えてしまうという事件がありました。

Grubの設定をいろいろするのはめんどくさい、何かいい方法がないかなと探していました。
そうしたら、ありました。めんどくさがりにぴったりなコマンドが。

$ sudo update-grub

これで、システムに入っているOSを探し出し、自動でメニューにエントリーしてくれます。

ということで、Grubで困ったら、焦らず、まずはupdate-grubをタイプしてみてはどうでしょうか。

Mac OSX YosemiteにアップグレードしたらFSLが動かなくなった場合の対処法

私自身も遭遇しましたし、他の方からも問い合わせがありましたので、簡単に記載しておきます。

MacをYosemiteにアップグレードした際に、FSLが動作しなくなることがあります。
その際には、バタバタする前に、まず、XQuartzを再インストールしてみてください。
それだけで問題が解決することがあります。

本家にも情報がありました。

Note for Yosemite (10.10) users: even if you have previously installed X11, you will need to reinstall it from the XQuartz web page to get FSL to work.

これで、問題解決といって大丈夫そうです。

Making 2-up pdf files using pdfnup included in Tex Live 2014

I needed to make a 2-up pdf out of slide pdfs. That is, original slide pdf is landscape, and I wanted to put 2 slides in one page.

Googling led me “pdfnup”. Since I installed Tex Live 2014 on my machine, pdfnup was already installed.

So, I tried the following

$ pdfnup --orient portrait --nup 1x2 input.pdf

This resulted in error, which said

  pdfnup ERROR: the --orient option is not allowed,
  use --landscape or --no-landscape to specify
  the output page orientation</blockquote>

so I used –no-landscape option

$ pdfnup --no-landscape --nup 1x2 input.pdf

This made input-nup.pdf and that is 2-up pdf!

This tool is so useful for preparing handouts for presentation.

In addition to the above example, the author shows a nice example of how to produce a handout from a file of presentation slides.
For slides made with the standard 4:3 aspect ratio a nice 6-up handout on A4 paper can be made by

$ pdfjam --nup 2x3 --frame true --noautoscale false \
  --delta "0.2cm 0.3cm" --scale 0.95 myslides.pdf \
  --outfile myhandout.pdf

Scripts to convert hdr/img format into nii format

Nifti file havs two kinds of extensions, hdr/img or nii.
Sometimes hdr/file nifti files can be confusing because the extension is the same as ANALYZE format.
There are some ways to convert hdr/img into nifti.
One is to use fslchfiletype included in FSL. This is the easiest, but it requires FSL.
The other is to use SPM. However, some scripting is needed.
So I wrote tiny scripts for converting hdr/img format into nii format.

If you prefer SPM, use img2nii_spm.m. Save the script into a folder under MATLAB path and type “img2nii_spm” from MATLAB command window.

%%img2nii.m--------------------------------------------
%Script to convert hdr/img files to nii.
%This script uses SPM function, so you need to install SPM5 or later.
%Kiyotaka Nemoto 05-Nov-2014

%select files
f = spm_select(Inf,'img$','Select img files to be converted');

%convert img files to nii
for i=1:size(f,1)
	input = deblank(f(i,:));
	[pathstr,fname,ext] = fileparts(input);
    output = strcat(fname,'.nii');
    V=spm_vol(input);
    ima=spm_read_vols(V);
    V.fname=output;
    spm_write_vol(V,ima);
end

If you prefer FSL, use img2nii_fsl.sh. Save the script into a folder, add executable attribute using “chmod 755 img2nii_fsl.sh”.
Wild card can be used for selecting files.

#!/bin/sh

#Image file type converter using fslchfiletype
#This script converts various image files into NIFTI format (.nii) files.
#K. Nemoto 19 Jan 2013

if [ $# -lt 1 ] ; then
	echo "Please specify the files you want to convert!"
	echo "Usage: $0 filename"
	exit 1
fi

for file in "$@" ; do
	if [ -f $file ] ; then
		fslchfiletype NIFTI $file
	else
		echo "$file: No such file"
	fi
done

Download img2nii_spm.m (Right-click and save).
Download img2nii_fsl.sh (Right-click and save).

SPM12におけるspm_defaults.mの設定 【重要】

SPM12の正式版が出て、気づいたのですが、spm_defaults.mの設定に関して、重要な変更が行われました。

今後は、spm_defaults.mは直接いじってはいけないことになりました。
これは、非常に理にかなっていることで、これまで、spm_defaults.mを修正しても、アップデートによってこれが上書きされてしまうことがありました。これを回避するために、新たな方法が導入されました。

「すぐできるVBM」のp.22 「8.SPMの設定」に関しての記載を以下のように訂正します。

spm_defaults.mの最初の記載のスクリーンショットは以下のようになります。

spm_defaults_screenshot

シンプルにいうと、以下のようになります。

  • spm_defaults.mは編集しない
  • MATLABのパスが通っているところにspm_my_defaults.mを作成する

私がSPMをインストールして行う作業は、defaults.stats.maxmemを編集することです。これは、統計の際に、Matlabにメモリをどの程度まで使わせてあげるかという設定です。デフォルトは2^26バイトで、64MBになります。せっかくメモリを多く積んでいる場合、これはもったいないです。そのため、私は2^31(=2GB)としています。

Matlabから以下のようにタイプします。

edit spm_my_defaults.m

そこに以下のように記載します。

global defaults
defaults.stats.maxmem = 2^31;

スクリーンショットを以下に示します。

spm_my_defaults_screenshot

これを保存するのですが、MATLABのパスが通っているところならばいいのですが、
無難なのは、ドキュメントフォルダの下のMATLABフォルダもしくは、SPM12のフォルダ内に保存したらよいと思います。

このうえで、SPMを起動すると、きちんと認識されると、Matlabのコマンドウィンドウ内に以下の表示がなされるはずです。

spm_screenshot_modified_defaults

これで設定が終了です。これは重要な設定ですので、チェックするようにしてください。

包括脳MRIチュートリアルが12月13日に開催されます

毎年開催している包括脳MRIチュートリアルですが、
今年は12月13日(土)に開催されることになりました。

詳しい案内はこちらをご覧ください。

VBMチュートリアルに関しては、席はあと20席程度残っているとのことです。

今回は、

・画像のQC(岩手医大山下先生)
・多重比較補正についての理解(京大川口先生)
・SPMの結果を論文に載せるまでの具体的手順

といった内容を計画しています。

関心のある方は、こちらにある申し込み方法をご覧のうえ、ご応募ください。

Linuxでfind, sedを使いながら文字列を再利用してファイル名の途中に文字列を挿入する方法

最近、以下のようなことをやる必要がありました。

ファイル名が

201105_ID.jpg
20120608_ID.jpg
20130704_ID.jpg
201409_ID.jpg

となっているファイル(年月が必ずあり、日が時についている)に対して、
年の後にアンダースコアを入れたい、つまり、

2011_05_ID.jpg
2012_0608_ID.jpg
2013_0704_ID.jpg
2014_09_ID.jpg

としたいわけです。

もし、最初の4文字が全く同一の文字列ならばただ置換すればよいので、全く問題ありません。
たとえば、すべて最初が2011からはじまるのであれば、
renameを使って、

find . -name '2011*' | rename 's/^2011/2011_/'

とするだけです。

しかし、今回は、4文字ということでは規則性がありますが、それぞれの中はバラバラの値です。

(ブログのコメントを受けて、ここを修正します。ちょうど2015年1月の正月に正規表現の勉強をしていたので、非常にタイミングのよいコメントをいただきました。松森様、どうもありがとうございます)

ただ、規則性はあります。最初は数字4文字、で、その後にアンダースコアを入れて残りの数字をいれたらいいわけです。

正規表現で、数字は\dで表すことができます。そして、繰り返し回数は{n}であらわせます。
今の場合、数字4桁は、\d{4}となるわけですね。

その後の数字は、\d+ とあらわすことができます。+は正規表現で1回かそれ以上ですから。

そして、最初の数字4桁のグループと残りの数字をそれぞれ()で2つのグループにわけます。

ファイルの最初は^であらわせますから、ファイルの最初の数字は以下のように表現できます。

(^\d{4})(\d+)

そして、前半のグループは$1、後半のグループは$2で表現できます。
今、グループ1とグループ2をアンダースコアで接続したもので置換したいので、
renameを使うと以下のように表現できます。

$ rename 's/(^\d{4})(\d+)/$1_$2/' 20*ID.jpg

これで一気に置換できます。正規表現でのグルーピングは慣れるととても強力ですね。
このようにネット上で教えてもらえるのはとてもありがたいことです。
完全に独学ですので…。

(以降はオリジナルの記事です)

いろいろ調べる中で、いくつかポイントが見つかりました。

  • findのオプション、-execを組み合わせる
  • findで合致したファイル名を再利用するには、{}を使う
  • sedにおいて検索で使った文字列を再利用するには、&を使う
  • bashで文字列を引数にとるためには、-cオプションを使う
  • find -execオプションは必ず;で終わらないといけないが、bashではエスケープシーケンスが必要になるために、必ず\;となる。

今回うまくいったワンライナーをご紹介します。(といっても上のワンライナーの方がずっとエレガントです。ただ、自分の学習過程を記録しておくことも意味があるので、残しておきます)

$ find . -name '201*' -exec bash -c "mv {} \`echo {} | sed -e 's/201./&_/'\`" \;

これを(あとで自分が忘れないために)もう少し解説します。

find . -name '201*'

この部分は、findの基本的な使い方です。
find <検索したい場所> -name <ファイル名> です。
ワイルドカードを使いたい場合は、シングルクオートかダブルクオートでくくらなければいけません。
*の場合は、どちらでも大丈夫です。

-exec bash -c

findのオプションで-execを使うと、コマンドを実行することができます。

今は、複雑なことをやりたいので、シェルを呼び出します。そのために、bashとしています。
man bashとすると以下のように書かれています。

オプション
bash は以下のオプションを起動時に解釈します (組み込みコマンド set の説
明で述べられている 1 文字のシェルオプションも使えます):

-c string -c オプションが指定されると、コマンドが string から読み込まれ
ます。 string の後に引き数があれば、これらは 位置パラメータ
(positional parameter: $0 からはじまるパラメータ) に代入され

今は複数のコマンドを読み込みたいので、-cオプションを指定します。

"mv {} \`echo {} | sed -e 's/201./&_/'\`" \;

これが今回のキモです。

まず、bash -cの後は文字列ですので、それを明記するために全体をダブルクオーテーションでくくっています。
そして、find -execの最後は;で終わるとなっているのですが、エスケープシーケンスが必要のために\;とします。

残るは mv {} \`echo {} | sed -e ‘s/201./&_/’\` です。

mv の後の{} はfindで見つかったファイル名を意味します。ここで、findの結果を利用できるわけです。

そして、\`echo {} | sed -e ‘s/201./&_/’\`

がmvの後半部分になります。これは全体がバッククオート`でくくられています。エスケープさせる必要があるために、\`となっています。

バッククオートの中を見ると、

echo {} | sed -e ‘s/201./&_/’

となっていて、先ほどと同様に{}はfindの結果を利用するわけで、echo {}で文字列を表示したうえで、それをsedを使って文字列置換をするわけです。

sedの文字列置換は正規表現を用いることができますので、検索文字列は2011,2012,2013,2014のいずれかですから、201.としました。
そして、その後が大事なのですが、sedの検索文字列をそのまま使える方法が、&となります。
今の場合、見つけた文字列の後にアンダースコアをつけたいので、&_としました。

これで無事にファイル名を変更することができました。数千のファイルをたった1行のコマンドで一気に変更できましたので、かなりすっきりしました。といってもここにたどり着くまでに数週間かかりましたが…。

bashでできる技なので、Linuxに限らず、Macでも同様にできるかと思われます。
ただ、これは我流でたどり着いた方法なので、もっとエレガントな方法がありましたら、ぜひ教えていただきたいです。

SPM8とSPM12を同一のMatlabのライセンスで使用する方法

SPMのメーリングリストでSPMの中の人が明らかにしていますが、SPM12の正式版がそろそろ公開されるようです。SPM12が正式に公開されました。(2014年10月1日)

SPM12はいろいろよい点も加わっていますが、まだ、プラグインで対応していないものも多々あります。
このため、しばらくは、SPM8とSPM12が同時に動かせる環境にあった方がよいですよね。

いい方法がありますので、ご紹介します。

以下の2つのファイル(spm8.mとspm12.m)をMatlabのパスが通っているフォルダ(ディレクトリ)に保存します。
Windowsの場合、「ドキュメント」の下のMATLABフォルダがよいでしょう。
Macの場合、「書類」の下のMATLABフォルダがよいでしょう。
これらはパスが通っているフォルダです。

そして、最初の4行と最後の方のaddpathからはじまる行を自分の環境にあわせて調整します。

このスクリプトがしているのは3つです。

  1. SPMのパスとツールボックスのパスを変数として指定します。
  2. SPMのパスが既にある場合、spm_rmpathを用いてそのパスを取り除きます。
  3. 改めてSPM8もしくはSPM12のパスを設定します。

以下にspm8.mのスクリプトを例に説明していきます。

%%spm8.m
%%specify spm8 and other toolbox path
spm8_path = 'c:\spm\spm8';
pickatlas_path = 'c:\spm\spm8\toolbox\wfu_pickatlas';
%spm-related_path = 'path_to_the_application';

%からはじまる行はすべてコメントなので気にしなくていいです。
spm8_path = のところで、SPM8がインストールされているフォルダを設定します。
pickatlas_path = のところで、(例として)PickAtlasのフォルダを設定します。
同様に、他にも設定しなくてはいけないプラグインがあったら、ここに設定します。
(これまで、設定する必要があったのは、PickAtlasとAnatomyツールボックスぐらいです。
その他はあえて設定する必要はありません)
これを後に使います。

% remove spm path
while true
  try
    spm_rmpath;
  catch
    break
  end
end

ここはいじる必要がありません。
まず、spm_rmpathというコマンドをトライします。
もし、SPMにパスが通っていれば、このコマンドが実行され、SPMのパスが取り除かれます。
もし、パスが通っていなければ、実行されずにそのまま次に進みます。

% add spm8 and related path
addpath(spm8_path,pickatlas_path);

次に、addpathを使ってパスを設定します。
addpathの中に先程設定したパスを書きこんでいきます。順序が大事で、先にspm8_pathを書き、その次にツールボックスのパスを書きます。

% run spm8
spm;

最後にSPMを起動します。

関心のある方は、下記の2つをダウンロードして、ご自身の設定にあわせて修正してご利用ください。

spm8.mをダウンロード(右クリックで「名前をつけ保存」から保存してください)
spm12.mをダウンロード

心理のためのMatlabチュートリアル:解答例と解説

何人かの方々から、心理のためのMatlabチュートリアルの練習の解答がないか問い合わせを受けていました。
これまで、ちまちま作っていたのですが、練習Fまではできていますので、公開させていただきます。
練習GとHに関してはまだできていないので、できたら、追加させていただきます。

心理のためのMatlabチュートリアルの解答例をダウンロード

Update of Lin4Neuro (10 Aug 2014)

Lin4Neuro was updated. This time the change was limited to kernel update and security updates.

  • Kernel was updated to 3.13.0-32-generic.
  • All security updates were applied.

I’m working on Xubuntu 14.04, but it seems to have several problems with neuroimaging software packages. So for now I keep updating Lin4Neuro based on Xubuntu 12.04.

You can download the latest Lin4Neuro from here.

RでのROC解析:ROCRパッケージを使ったROC曲線とAUCの求め方

研究でROC解析を行う必要があり、Rでどうやったらできるのか調べてみました。
そうしたところ、ROCRというパッケージが公開されており、比較的簡単にROC解析を行い、グラフを作成できることがわかりました。

  • ROCRパッケージのインストール(Ubuntu)
  • 既にRはインストールされているとします。Ubuntuの場合、ROCRパッケージはapt経由で簡単に入手できます。

    $ sudo apt-get install r-cran-rocr
    

    これでインストール完了です。

  • ROCRを使うための準備
  • ROC解析に必要なものは、何らかの指標と、それが属するグループの一覧です。具体例を挙げると、以下のようになります。
    第1列に指標、第2列に属するグループ(0か1)が記載されています。
    これをroc_data.txtとという名前で保存することとします。保存したディレクトリをRのワーキングディレクトリとします。

    0.9706 1
    0.9572 1
    0.4854 1
    0.8003 1
    0.1419 1
    0.4218 1
    0.9157 1
    0.7922 1
    0.9595 1
    0.6557 1
    0.0357 1
    0.8491 1
    0.934 1
    0.6787 1
    0.7577 1
    0.7431 1
    0.3922 1
    0.6555 1
    0.1712 1
    0.706 1
    0.4797 0
    0.4551 0
    0.0374 0
    0.081 0
    0.2984 0
    0.7597 0
    0.1404 0
    0.3853 0
    0.0238 0
    0.5513 0
    0.0551 0
    0.306 0
    0.4991 0
    0.6909 0
    0.7593 0
    0.3472 0
    0.0614 0
    0.0507 0
    0.0575 0
    0.6407 0

  • ROCRの起動
  • ROCRはRを立ち上げた後に、library(ROCR)で起動できます。

    $ R
    > library(ROCR)

  • データの読み込み
  • 先ほどのroc_data.txtをrocdataという変数に読み込みます。変数名は何でもいいのですが、ここではそうします。
    read.tableという関数で表を読み込めるので、それを使います。

    > rocdata <- read.table("roc_data.txt")

  • ROCR ステップ1: prediction
  • ROCRのステップ1はpredictionで、値と属するグループを指定します。
    今、rocdataは20行2列の行列になっています。1列目はrocdata[,1]で、2列目はrocdata[,2]であらわすことができますので、以下のように記載します。

    pred <- prediction(rocdata[,1], rocdata[,2])

    ここで、変数predはpredictionの頭文字4文字です。もちろん、別の名前でもかまいません。
    私はよくカンマを忘れるので、カンマも忘れないようにしましょう。

  • ROCR ステップ2: performance
  • ROCRのステップ2はperformanceでここでプロットするための項目を決定します。今は、基本的なROC曲線、すなわち横軸がfalse positive rate, 縦軸がtrue positive rateで構成される曲線を描こうと考えます。以下のようにタイプします。

    perf <- performance(pred, "tpr", "fpr")

    ここでtprはtrue positive rateを、fprはfalse positive rateを意味します。

  • ROCR ステップ3: グラフの描画
  • 最後にROC曲線を描きます。非常に簡単です。

    plot(perf)

    そうすると、次のようなグラフが現れるはずです。

    roc-curve

  • グラフの保存
  • グラフをPNG形式で保存するには、次のように行うことで、roc-curve.pngという名前でワーキングディレクトリに保存されます。

    > png("roc-curve.png")
    > plot(perf)
    > dev.off()

  • AUCの算出
  • 先ほどのperformanceの際に"auc"と指定するとAUCも計算されます。ただ、1クッション入れる必要があります。具体的な方法はこちらのサイトに記載されていましたが、それを転載します。

    > auc.tmp <- performance(pred,"auc")
    > auc <- as.numeric(auc.tmp@y.values)

    performance(pred,"auc")の結果をauc.tmpという変数に代入し、
    auc.tmpの中からy.valuesの値を取り出して、その値を変数aucに代入します。

    最後に変数aucを表示させてみます。

    > auc
    [1] 0.8

    これでAUCが0.8だということがわかります。

  • おまけ:感度特異度曲線
  • 感度と特異度の曲線も簡単に書けます。predictionまで行った後に、次のようにします。

    > perf <- performance(pred, "sens", "spec")
    > png("sens-spec-curve.png")
    > plot(perf)
    > dev.off()

    これで、下図のような感度、特異度の曲線がsens-spec-curve.pngという名前で保存されます。

    sens-spec-curve

比較的簡単に求められるので便利です。

Workaround for Remastersys on Xubuntu 14.04

Remastersys is a very useful remastering tool though developing has ceased now.
Many reported that they could make Remastersys work on Ubuntu 14.04, but I encountered an error with Xubuntu 14.04.

I found workaround for this error.

Short answer: Comment out the line 245 beginning with [ “`grep lightdm /etc/X11/default-display-manager`” != “” ]

Below is the long answer.

  • Installation
  • Installation is simple.

    1. Import GPG key
    2. $ wget -O- http://www.remastersys.com/ubuntu/remastersys.gpg.key | sudo apt-key add -

    3. Add sources
    4. Add the line to /etc/apt/sources.list

      deb http://www.remastersys.com/ubuntu precise main

      Please note that you don’t have to replace “precise” with “trusty.”

    5. Installation
    6. $sudo apt-get update; sudo apt-get install remastersys

  • Error with “remastersys dist”
  • “sudo remastersys dist” terminated with error. The below is error message;

    $ sudo remastersys dist
    Distribution Mode Selected
    Enabling remastersys-firstboot
    Adding system startup for /etc/init.d/remastersys-firstboot …
    /etc/rc0.d/K20remastersys-firstboot -> ../init.d/remastersys-firstboot
    ……
    /etc/rc5.d/S20remastersys-firstboot -> ../init.d/remastersys-firstboot
    Checking filesystem type of the Working Folder
    /home/remastersys/remastersys is on a ext4 filesystem
    Making sure popularity contest is not installed
    Installing the Ubiquity GTK frontend
    Lightdm not setup properly. You must set your default desktop with lightdm prior to remastering

    I examined the script /usr/bin/remastersys with the keyword “Lightdm.” Then I found the description below in the line 245

    [ “`grep lightdm /etc/X11/default-display-manager`” != “” ] && [ ! -f /etc/lightdm/lightdm.conf ] && [ ! -f /usr/share/xsessions/ubuntu.desktop ] && echo “Lightdm not setup properly. You must set your default desktop with lightdm prior to remastering” && echo “Lightdm not setup properly. You must set your default desktop with lightdm prior to remastering” >> $WORKDIR/remastersys.log && exit 1

    Though this line checks if the file “/etc/lightdm/lightdm.conf” exists, The latest Xubuntu 14.04 doesn’t have that lightdm.conf file in /etc/lightdm.

    So I commented out this line, just adding “#” to the beginning of the line.

    Then I tried sudo remastersys dist again, with success!

    If you want to use Remastersys in Xubuntu 14.04, it’s worth trying it.