MacOS High SierraでVirtualBoxのインストールに失敗する時の最終的な対処法

MacOS High Sierraから、セキュリティが以前よりも厳しくなりました。
これによっていろいろなソフトウェアをインストールする際の手順がめんどくさくなりました。

VirtualBoxも例外ではありません。

VirtualBoxのインストーラーをダウンロードして、インストールを開始しようとすると、以下のような警告が出ます。

ここであわてずに、Macのメニューから、

「システム環境設定…」→「セキュリティとプライバシー」を選択します。

そうすると、「一般」のタブのところに、VirtualBox.pkgは開発元を確認できないため、開けませんでした。と出ますが、「このまま開く」をクリックします。

そうすると、セキュリティ的に例外が追加され、インストールがすすむようになっています。

しかし、まれに、この手続きをとってもインストールに失敗してしまうことがあります。

インストールの最後にこのような悲しい画面が出てきます。

ソフトウェアの開発元に聞いてくださいとありますが、VirtualBoxのフォーラムを一生懸命探しても、上記の、セキュリティの話しか出てこず、それ以上の情報は何もありません。

いろいろ苦戦した結果、最終的な解決策として、「システム整合性保護 System Integrity Protection (SIP)」を一時的に無効にするという方法が有効でしたので紹介します。

まず、インストールに失敗したVirtualBoxをアンインストールします。
VirtualBoxのインストーラーにVirtualBox_Uninstall.toolがありますので、これをダブルクリックします。
パスワードを聞かれたらログインパスワードを入力すると、削除されます。

そうしたら、一度、Macをシャットダウンします。

そして、リカバリーモードで起動します。
(ここからのスクリーンショットは、こちらから引用させていただきます)

リカバリーモードに入るには、”⌘”キーと “R”キーを押しながら、電源を入れます。RecoveryのRで覚えておくといいでしょう。

以下のような画面になります。

ここで、上のメニューにある「ユーティリティ」から「ターミナル」を選択します。

ターミナルが起動するので、そこに

csrutil disable

とタイプします。

“Successfully disabled System Integrity Protection”と表示されるのを確認して、再起動します。

そして、再度VirtualBoxをインストールします。そうすると、今回は問題なくインストールされると思います。

その後、再度、SIPを有効化します。再びリカバリーモードでターミナルを起動します。

そうしたら、今度は、

csrutil enable

とタイプします。

これで、再度SIPを有効にすることができました。

MacOS High SierraでVirtualBoxのインストールに困った方は、ご参考まで。

Mac (El Captain以降) へのFreeSurfer 6.0のインストール

2018.09.12追記:license.txtの扱いが少し変わったので、修正いたしました。また、High Sierraでもインストールを確認できています。

FreeSurferのMacへのインストールについては、本家のサイトにもstep-by-stepのわかりやすいインストラクションがありますが、ターミナルやFinderの設定も含めて示したいと思います。

続きを読む

再帰的にファイル名やディレクトリ名にある半角スペースをアンダースコア ( _ )で置き換えるスクリプト: Linux & Mac 対応

シェルスクリプトで作業を自動化しようとするとき、ファイル名やディレクトリ名に半角スペースが入っていると、エラーとなります。
この半角スペースを全部アンダースコア( _ ) で置き換えてあげたいと思いました。
それも、カレントディレクトリだけではなく、再帰的にサブディレクトリにあるものもすべてです。
やっぱり楽したいですから…。特に画像解析をやる場合、DICOMのディレクトリ構造は、かなり奥深くにいくので、再帰的にいけると楽になります。

スマートでないかもしれませんが、以下のようなスクリプトを書いてみました。

replace-space-underscore.shのダウンロード(右クリックで名前をつけて保存)

思考過程を書いていこうと思います。

続きを読む

シーケンスを自動判別し、ファイル名を自動リネームするDICOM→NIFTI変換スクリプト

本日、第19回ヒト脳機能マッピング学会で発表したのですが、ブログのタイトル通り、シーケンスを自動判別し、ファイル名を自動でリネームするDICOM→NIFTI変換スクリプトを書いてみました。

MacおよびLinuxに対応しています。

必要なソフトウェアは以下の2つです。

  • MRIcron
  • パスが通っていることが必要です。

  • FSL
  • FSLも同様にパスが通っていることが必要です。

このスクリプトは以下から入手可能です。(右クリックで「名前をつけて保存」で保存できます。)

https://raw.githubusercontent.com/kytk/shellscripts/master/ren-dcmcnv.sh

  1. インストール
  2. インストールですが、パスが通っているディレクトリに保存していただくだけです。

  3. 使い方
  4. 使い方はとてもシンプルです。

    • フォルダの準備
    • 最初に、作業用フォルダを準備します。その中に、各被験者のフォルダを準備します。フォルダ名がとても重要です。このスクリプトはフォルダ名をファイル名のベースに使うからです。
      たとえば、被験者IDがsubj01ならば、フォルダ名をsubj01とします。その中にその被験者のDICOMファイルをすべて放り込みます。(ディレクトリ構造になっていてもなっていなくてもかまいません)

    • スクリプトの実行
    • ターミナルを起動し、作業用フォルダに移動します。

      そして、以下をタイプします。

      $ ren-dcmcnv.sh
      

      これだけです。

    • スクリプトが行うこと
    • スクリプトは以下のことを行います。フォルダ=ディレクトリです。

      1. ワーキングディレクトリに “DICOM”, “nifti” ディ
        レクトリを作成します。
      2. wd内にできたDICOMディレクトリに移動します。
      3. DICOM ディレクトリ内で dcm2nii を実行し、NIFTIファ
        イルを生成します。
      4. fslhd を用いてNIFTIファイルのヘッダー情報を取得します。
      5. 以下のルールに基づき、3次元T1強調画像、fMRI画像、DTI画像を判別します。
        • 3次元T1MRI: 画像の第2次元≧256, 第3次元>100, TE<6msec; (V_)
        • fMRI: 画像の第4次元>100; (F_)
        • DTI: 画像の第4次元が8以上100 未満 (D_)
      6. ディレクトリ名を取得し、ファイル名のベースとし、それぞれの接頭辞に識別記号を付加します。
      7. 変換したファイルをniftiディレクトリに移動します。

よかったら試してみてください。

画像ファイル振り分けスクリプト

画像解析を行っている人ならば、一度は画像の振り分け作業に悩まされたことがあると思います。
私ももれなくその一人で、最近、あるプロジェクトにおいて、画像を分けなければならずしばらく放置していました。

しかし、よく考えてみたら、こういう「めんどくさい」けれども「単純な作業」こそ、コンピューターにさせるべき作業なわけです。

そこで、以下のようなスクリプトを考えてみました。コメントで何をしているか説明します。

#!/bin/sh

#filesorter.sh
#sort files according to the sorting list
#Usage: filesorter.sh sorting_list
#You need to prepare a sorting list beforehand.
#It should be like the following.
# img001  HC
# img002  PT
# img003  HC
# img004  PT
# img005  PT

#引数が指定されているかチェック
if [ $# -ne 1 ]; then
	echo "A sorting file should be specified!"
	echo "Usage: $0 sorting_file"
	echo "Sorting file includes ID and Categorized Group"
	echo "example:"
	echo "img001  HC"
	echo "img002  PT"
	echo "img003  HC"
	echo "img004  PT"
	echo "img005  PT"

	exit 1
fi

#ファイルを読み込み、空白行を削除し、1行ずつ$lineにセット
cat $1 | sed '/^$/d' | while read line
do
    #AWKを使って、第1フィールドを変数idにセット
    #第2フィールドを変数categoryにセット
    id=`echo $line | awk '{ print $1 }'`
    category=`echo $line | awk '{ print $2 }'`
	
    #変数categoryの名前に相当するディレクトリがなければ作成
    if [ ! -e $category ]; then
        mkdir $category
    fi

    #変数idを含むファイルを先ほど作成したディレクトリにコピー
    echo "copy $id to $category"
    cp *${id}* $category
done

興味のある方は、こちらからダウンロードしてください。

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

ANTs (Advanced Normalization Tools)は、近年注目されている脳画像解析ツールです。性能が高いのですが、導入方法などが親切に説明されていません。
ある方と、ANTsのMacOSXへの導入についていろいろやりとりすることがありましたので、一連の流れを記載しておきます。

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

続きを読む