Ubuntu で Rの「署名が無効です」への対処法

UbuntuでRを使っていらっしゃる方は多いと思います。
R3.5以上を使う場合、https://cran.rstudio.com/bin/linux/ubuntu bionic-cran35 を使っている場合が多いです。
このリポジトリの署名が2020年10月16日に失効しました。

このため、apt update で以下のエラーが出ます。

署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG
エラー: https://cran.rstudio.com/bin/linux/ubuntu bionic-cran35/ InRelease:
以下の署名が無効です: EXPKEYSIG 51716619E084DAB9 Michael Rutter
<marutter@gmail.com>
W: https://cran.rstudio.com/bin/linux/ubuntu/bionic-cran35/InRelease
の取得に失敗しました  以下の署名が無効です: EXPKEYSIG 51716619E084DAB9
Michael Rutter <marutter@gmail.com>
W:
いくつかのインデックスファイルのダウンロードに失敗しました。これらは無視されるか、古いものが代わりに使われます。

この対処法としては、署名の有効期限をアップデートする必要があります。

まず、apt-key listで公開鍵の一覧を取得します。

apt-key list

そうすると、結果の中で以下が見つかるかと思います。

pub   rsa2048 2010-10-19 [SCA] [期限切れ: 2020-10-16]
       E298 A3A8 25C0 D65D FD57  CBB6 5171 6619 E084 DAB9
uid           [期限切れ] Michael Rutter <marutter@gmail.com>

公開鍵は E298 A3A8 25C0 D65D FD57 CBB6 5171 6619 E084 DAB9 となります。

視認性のために4文字ごとに半角スペースが入っていますが、それを取り除くと以下になります。

E298A3A825C0D65DFD57CBB651716619E084DAB9

この鍵を用いて、以下のコマンドで新しい署名を入手します。

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

そうすると、以下のような表示になるかと思います。

gpg: 鍵51716619E084DAB9: "Michael Rutter <marutter@gmail.com>" 新しい署名を2個
gpg: 処理数の合計: 1
gpg:         新しい署名: 2

apt-key list を再度行うと、以下のようになり、有効期限が2027年9月30日になったことが確認できるかと思います。

pub   rsa2048 2010-10-19 [SCA] [有効期限: 2027-09-30]
      E298 A3A8 25C0 D65D FD57  CBB6 5171 6619 E084 DAB9
uid           [  不明  ] Michael Rutter <marutter@gmail.com>
sub   rsa2048 2010-10-19 [E] [有効期限: 2027-09-30]
Print Friendly, PDF & Email

ARMベース「Apple M1」搭載のmacbookでは、2020年11月時点ではFSLは動きません

Appleは11月17日からCPUをこれまでのIntelからARMベースのApple M1を搭載したmacbookを発売しました。

脳画像解析をされる方は注意してもらいたいのですが、2020年11月18日現時点で、FSLはApple M1には対応していません。対応までに数カ月かかるとFSLのメーリングリストで中の人がおっしゃっていました。

その他にも未対応のソフトは多くあると思われるので注意してください。

個人的には、macに関しては「ちょっと枯れてから」がいいと思っています。

Print Friendly, PDF & Email

Workaround for FSL 6.0.4 python dependencies

imglob or imcp provided with FSL requires numpy.testing.decorators. However, numpy.testing.decorators has been deprecated from numpy 1.18. So, if you use numpy >=1.18, you see the following error:

ModuleNotFoundError: No module named 'numpy.testing.decorators'

Paul Mccarthy kindly suggested a workaround for this problem.

The below is his original message.
https://www.jiscmail.ac.uk/cgi-bin/wa-jisc.exe?A2=FSL;a26a0779.2010

1. Move $FSLDIR/fslpython/envs/fslpython/bin/python3.7 to $FSLDIR/fslpython/envs/fslpython/bin/python3.7_bin
2. Replace $FSLDIR/fslpython/envs/fslpython/bin/python3.7 with a script containing this:

#!/usr/bin/env bash
thisdir=$(cd $(dirname $0) && pwd)
$thisdir/python3.7_bin -I "$@"

3. Change the permissions of the new $FSLDIR/fslpython/envs/fslpython/bin/python3.7 to make it executable

With this suggestion, I wrote a tiny script.

#!/bin/bash

cd $FSLDIR/fslpython/envs/fslpython/bin/
sudo mv python3.7 python3.7_bin

cat << 'EOF' | sudo tee python3.7 > /dev/null
#!/usr/bin/env bash
thisdir=$(cd $(dirname $0) && pwd)
$thisdir/python3.7_bin -I "$@"
EOF

sudo chmod 755 python3.7

This script will make FSL use internal python within FSL.

Print Friendly, PDF & Email

macOSでUbuntu仮想マシンを起動しようとしたときに「VirtualBox VMが予期しない理由で終了しました」と出てクラッシュする時の対処法

題名のとおりなのですが、
Lin4NeuroをmacOS上で仮想マシンで走らせようとしたら、私の持っている Mojave, Catalina のどちらでも以下のメッセージが出てきて仮想マシンが立ち上がりませんでした。

続きを読む

Print Friendly, PDF & Email

macOS への FreeSurfer 7.1.1 のコマンドラインを使ったインストール(スクリプト付き)

FreeSurfer 7が公開されています。recon-allの時間が短縮されたり、海馬のsubfield解析がよりグレードアップしたりとなっています。

macOSへのインストールはデモ動画が示されていますが、コマンドラインで一気にインストールしたいと思いました。
以下、必要なものを示します。

続きを読む

Print Friendly, PDF & Email

Zoomでブレークアウトセッションに移行する際、全員のビデオをオフ、マイクをミュートにすると、一部の参加者が落ちてしまうことが防げる可能性が高い

気づけばほぼ毎日Zoomで何らかの会議やワークショップに参加する日々です。

先日、あるワークショップでホストをする機会がありました。

ブレークアウトセッションを多く使うワークショップですが、
毎回、何人かブレークアウトセッションに移行できず落ちてしまうという現象が起こりました。

おそらくネットワークの負荷が大きく、タイムアウトを起こしているのだろうという仮説を立てました。

続きを読む

Print Friendly, PDF & Email

第2回国際脳MRI・臨床データ解析チュートリアル(2020年9月27日Zoom)

東京大学の小池先生から、第2回国際脳MRI・臨床データ解析チュートリアルの開催案内をいただきました。

今回はZoomでの開催とのことです。
ご関心のある方は、ぜひ下記をご覧いただき、ご応募ください。
(クリックするとPDFが入手できます)

私は今回もLin4Neuroを提供する方向で調整しています。前回よりもさらに必要なものをしっかり実装したものを提供できる予定です。

Print Friendly, PDF & Email

シェルスクリプトで改行を削除したい時は、perl -pe ‘s/\n//’ が便利

タイトル通りの投稿ですが、よく忘れるので、備忘録として。

スクリプトを書いている時に、入力ファイルの改行を全部とって1行にしたいという時があります。

たとえば、

seq 5 > list
cat list
1
2
3
4
5

となっている時、これを

1 2 3 4 5

としたいような時をイメージしてください。

これを sed でやろうとするとうまくいきません。

sed 's/\n//' list
sed 's/\r//' list

などでいくかと思えどうまくいかず、いろいろはまることになります。
さらにmacとLinuxでは、sedがBSDのsedとGNU sed で違うため、ここもまたはまる原因になります。

でも、sedにこだわらず、Perlで

perl -pe 's/\n/ /' list

とすると、あっさりうまくいきます。
(細かく言うと、Windowsだと、\r\nだったりしますが、とりあえず、UNIX環境と仮定します)

なお、perlのオプション -e は引数をそのままプログラムとして実行するオプションで、ワンライナーでは必須のものであり、オプション -p は、入力の各行に対してプログラムを実行し、最後に結果を表示するオプションとのことです。こちらのサイトに詳しく書いてあり、勉強になりました。

ということで、シェルスクリプトで改行の削除に困ったら、sedにこだわらず、perl -pe を活用すると迷う時間が減るかもしれません。

Print Friendly, PDF & Email

UbuntuでGnumericを用いてCSVをXLSXに変換する方法

あるプロジェクトで、csvファイルをxlsxに変換する必要がありました。
いろいろな方法がありますが、比較的やりやすかった方法がありましたので、備忘録として記載します。

方法は、gnumeric (とnkf)を使う方法です。インストールは簡単です。

sudo apt install gnumeric nkf

ここでは、例として、sample.csv を sample.xlsx に変換したいと考えます。

  1. 文字コードをUTF-8に変換
  2. 日本語が入っている場合、Shift-JISなどだとうまくいかない場合があるので、文字コードをUTF-8に変換します。

    nkf -wLu --overwrite sample.csv
    
  3. Gnumericで変換
  4. Gnumericについているssconvertというプログラムが簡単に変換してくれます。

    ssconvert sample.csv sample.xlsx
    
  5. XLSXシートのタブ名から.csvを取り除く
  6. 簡単なのですが、この場合、sample.xlsxのシート名が sample.csv となってしまいます。これは気持ち悪いなと思いました。

    なので、これを取り除く工夫が以下です。xlsxをxmlに変換し、xmlの中の.csvをsedで取り除き、そして、再度xmlをxlsxに変換します。

    ssconvert --export-type=Gnumeric_XmlIO:sax:0 $sample.xlsx sample.xml
    sed -i 's/.csv//' sample.xml
    ssconvert --export-type=Gnumeric_Excel:xlsx sample.xml sample.xlsx
    rm sample.xml
    

これで望みどおりの変換ができました。

以上、まとめると、以下のようなスクリプトになります。

#!/bin/bash
#prerequisites: nkf and gnumeric
for f in *.csv
do
  nkf -wLu --overwrite $f
  base=${f%.csv}
  ssconvert $f ${base}.xlsx
  ssconvert --export-type=Gnumeric_XmlIO:sax:0 ${base}.xlsx ${base}.xml
  sed -i 's/.csv//' ${base}.xml
  ssconvert --export-type=Gnumeric_Excel:xlsx ${base}.xml ${base}.xlsx
  rm ${base}.xml
  mv $f csv
done
Print Friendly, PDF & Email

UbuntuでDropboxの同期が進まない時は、ディレクトリ数を確認する

最近、あるワークステーションを新規にセットアップしました。
いつもファイルはDropbox経由で同期することによって楽しているので、今回も同じようにしたら、
1週間たっても同期がされません。

おかしいなと思っていろいろ調べてみたら、公式ドキュメントにヒントがありました。

同期できない場合 – 互換性のない特殊文字と不良なファイル名に関する問題の解決方法

Linux で 1 万件以上のフォルダを監視する

Linux 版の Dropbox デスクトップ アプリは、デフォルト設定により 1 万件以上のフォルダを監視することはできません。制限数を超えた場合は監視されないため、同期中に無視されます。簡単な回避策として、まずターミナルを開き、次を入力してください。

echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p

このコマンドでシステムに 10 万件までのフォルダを監視するように指示することができます。コマンドを入力しパスワードを入力したら、すぐに Dropbox が同期を再開します。

私のDropbox内のフォルダ数はどのくらいだろう?と思って、以下のコマンドでディレクトリ数を数えてみました。

find Dropbox -type d | wc -l

その結果ですが、14454 と出てきました。1万件超えています。

そこで、アドバイス通り、以下のコマンドを入力しました。

echo fs.inotify.max_user_watches=100000 | sudo tee -a /etc/sysctl.conf; sudo sysctl -p

そうしたところ、同期がはじまりました!システムで何か変な設定をしてしまったのではないかと心配だったのでほっとしました。

普段使っているDropboxは、少しずつ増えていっているので、おそらく監視しているフォルダ数がそれほど多くないのかもしれませんね。

Print Friendly, PDF & Email

動的プログラミング言語を知っている人のためのPython入門

最近、Pythonの勉強をしていますが、いろいろ調べている中で、Matthew Brett氏がMatlabやRに慣れている人のためのPythonの手引き、”Brisk Introduction to Python“を書かれているのを見つけました。既にMatlabやRを知っている方々がPythonのコツを理解するのによいテキストと思います。このため、Brett氏の承諾を得て、研究室のメンバーで翻訳しました。

動的プログラミング言語を知っている人のためのPython入門はこちらからどうぞ。

Jupyter_Notebookはこちら(右クリックで保存してください)

Print Friendly, PDF & Email

macOS 10.15 (Catalina) でFSLのインストールがうまくいかない時の解決方法

FSLのMLに最近、macOS 10.15の方々がインストールがうまくいかないという相談がたくさんなされています。

エラーメッセージは以下のような感じです。

Stage 1
By installing this python distribution you agree to the license terms in
/usr/local/fsl/fslpython/LICENSE.txt
100%
/usr/local/fsl/etc/fslconf/fslpython_install.sh: line 188: /usr/local/fsl/fslpython/bin/conda: No such file or directory
/usr/local/fsl/etc/fslconf/fslpython_install.sh: line 189: /usr/local/fsl/fslpython/bin/conda: No such file or directory
/usr/local/fsl/etc/fslconf/fslpython_install.sh: line 190: /usr/local/fsl/fslpython/bin/conda: No such file or directory
/usr/local/fsl/etc/fslconf/fslpython_install.sh: line 191: /usr/local/fsl/fslpython/bin/conda: No such file or directory

これに対する解決法がFSLの中の人から示されています。

https://www.jiscmail.ac.uk/cgi-bin/webadmin?A2=FSL;bd0fa8bf.2004

具体的には以下になります。

  1. テキストエディタで fslpython_install.sh を開きます。管理者権限が必要です。
  2. sudo open -e /usr/local/fsl/etc/fslconf/fslpython_install.sh
    
  3. コードの修正
  4. 149行目が以下のようになっているはずです。

    dl_cmd_opts=”–fail”

    これを以下のように修正します。( -L を追加するだけです )

    dl_cmd_opts=”–fail -L”

  5. コマンドの実行
  6. 以下のコマンドを実行します。

    sudo rm -r /usr/local/fsl/fslpython
    sudo /usr/local/fsl/etc/fslconf/fslpython_install.sh  -f  /usr/local/fsl
    

私はCatalinaをまだ使っていませんが、たぶんはまる人がたくさんいると思いますので、掲載しておきます。

Print Friendly, PDF & Email

国際脳ヒトMRI研究ポータルサイト

東京大学の小池先生が国際脳のヒトMRI研究ポータルサイトを開設されました。

http://mriportal.umin.jp/

このサイトは、国際脳ヒト脳MRI研究プロジェクトで策定されたデータ取得手順、データ集約と共有化、前処理技術開発、Traveling subject project、倫理的配慮などの情報を集約し、国内のヒト脳MRI研究を発展させることを目的としたウェブサイトとのことです。

プロトコル論文がpreprintで公開されていたり、有用な情報が掲載されていますので、一見の価値ありです。

Print Friendly, PDF & Email

Bashの様々な設定は、.bashrc ではなく .bash_aliases に書くと事故が防げる

先日、あるスクリプトを書いている中、.bashrcに追記する内容を書いた時に

echo "something" >> ~/.bashrc

と書くべきものを

echo "something" > ~/.bashrc

と誤って書いてしまい、テストでスクリプトを走らせて .bashrc を確認したところ、

something

の一語だけになっており、顔から血の気がひくという経験をしました。

幸いなことに他のシステムの .bashrc をもってきて事なきを得たのですが、
このインシデントに対し、解決策を調べようと思い、.bashrcを見直したところ、以下の記載がありました。

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

意訳します。

# エイリアスの定義
# このファイルに何か追加したい場合、直接追加するのではなく、
# ~/.bash_aliases のような別のファイルに記載したほうがいいかもしれません。
# 詳しくは bash-doc パッケージにある /usr/share/doc/bash-doc/examples をみてください。

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Alias definitions となっていますが、これは、aliasで設定する(いわゆる)エイリアスではなく、
.bashrcのエイリアス(別ファイルとでも言った方がいいのでしょうか)という意味ですね。

まさに私の望むものがありました。

早速、ホームディレクトリの下に、 .bash_aliases というファイルを作成し、
この中にいつもだったら .bashrc に記載する様々な設定を書いたところ、
(もちろんですが、)問題なく動きました。

ということで、

「Ubuntu で .bashrc に追加記載するものは、すべて .bash_aliases に記載すると事故が防げる」

ということを学びましたので、共有させていただきました。

Print Friendly, PDF & Email

Lin4Neuroのアップデート(2020年5月16日)

Covid-19対応に追われる日々ですが、それだけだとつらくなるので、Lin4Neuroのアップデートを行い、公開しました。
主な変更点は以下になります。

  • isoイメージは、Ubuntu 18.04 desktop を元に作成しました。これまで、PinguyBuilderというソフトを使ってインストーラーを準備していましたが、うまく動かないという報告を多々いただいたので、方針を変更しました。
  • Connectome workbench がインストールされました。
  • AFNI, FreeSurfer, FSLといった大きなソフトはインストーラーを提供するという方針に変更しました。デスクトップ上にある “installer” をクリックしていただければ、必要なソフトをインストールできます。
  • MRIcroGLなど、もともと入っているソフトはすべて最新のものにしました。
  • 現在利用可能なソフトの一覧は、こちらになります。
  • VirtualBox 仮想アプライアンスを今回から正式にリリースしました。ユーザー名は”brain” でパスワードは “lin4neuro”になります。メモリは4GB, ハードディスクは120GBで設定してあります。

最新のLin4Neuroはこちらから入手できます。

英語版のサイトはアップデートしましたが、日本語版はこれからです。

Print Friendly, PDF & Email

Lin4Neuro based on Ubuntu 18.04 is updated (16 May 2020)

Lin4Neuro based on Ubuntu 18.04 is updated.
Below are main changes.

  • Now iso is generated from Ubuntu 18.04 Desktop so that installer can function properly.
  • Connectome workbench is installed and configured.
  • I changed the strategy to provide installers for huge packages such as AFNI, FreeSurfer, or FSL. It does not come with the release, but you can easily install them by just clicking the installer icons.
  • Bundled software packages are all updated.
  • The neuroimaging software packages available on Lin4Neuro is listed here.
  • VirtualBox appliances are officially provided from now on. Username is “brain” and password is “lin4neuro”. RAM is set to 4GB, and HDD 120GB.

You can get the latest version from here.

Print Friendly, PDF & Email

SPMの結果をFreeSurferの脳表画像に投影する方法

以前、DTIの画像などをFreeSurferの脳表に投影する方法を紹介しましたが、SPMの結果のspmT画像をFreeSurferの脳画像に投影する方法もわかりましたので紹介したいと思います。

必要なコマンドは、mri_vol2surf です。

  • 入力ファイルと出力ファイル名
  • 入力画像は、spmT_0001.nii とします。出力ファイル名は、左半球の画像ということで、lh.spmT_0001.mgzとします。

  • mri_vol2surf のオプション
  • 今回、大事になるのは、–mni152reg というオプションです(木村先生、教えてくれてありがとうございました)。MNI空間でのあわせこみに使えるオプションです。

  • 実際のコマンド
  • シンプルに以下でいけました。

    mri_vol2surf --mov spmT_0001.nii --mni152reg --hemi lh --o lh.spmT_0001.mgz
    

    入出力ファイル以外のオプションは2つだけ、–mni152reg と –hemi lh だけです。

  • Freeviewでの表示
  • 最後にfreeviewで表示します。T値が3以上を表示したいと思ったので、thresholdを3,5としてあります。

    freeview -f \
    $SUBJECTS_DIR/fsaverage/surf/lh.inflated:overlay=lh.spmT_0001.mgz:overlay_threshold=3,5\
      --viewport 3d --layout 1
    

    結果、以上のような感じで表示できました。

Print Friendly, PDF & Email

Ubuntu で Jupyter Notebook を Google Chrome で起動したい時の設定

Ubuntu で Jupyter notebook を入れるとデフォルトでは Firefox が起動します。
Google Chrome にする方法を探しました。

こちらのリンクに方法が記載されていましたが、記載しておきます。

  • 設定ファイルの書き出し
  • jupyter notebook --generate-config
    

    これで、 ~/.jupyter/jupyter_notebook_config.py が生成されます。

  • Google Chromeのパスの確認
  • which google-chrome
    

    私の場合は /usr/bin/google-chrome でした。

  • jupyter_notebook_config.py の編集
  • 以下の記載を探します。

    # c.NotebookApp.browser = ''
    

    ここを以下に修正します。

    c.NotebookApp.browser = '/usr/bin/google-chrome'
    

    これだけです。

Print Friendly, PDF & Email