先日、あるスクリプトを書いている中、.bashrcに追記する内容を書いた時に
echo "something" >> ~/.bashrc
と書くべきものを
echo "something" > ~/.bashrc
と誤って書いてしまい、テストでスクリプトを走らせて .bashrc を確認したところ、
something
の一語だけになっており、顔から血の気がひくという経験をしました。
先日、あるスクリプトを書いている中、.bashrcに追記する内容を書いた時に
echo "something" >> ~/.bashrc
と書くべきものを
echo "something" > ~/.bashrc
と誤って書いてしまい、テストでスクリプトを走らせて .bashrc を確認したところ、
something
の一語だけになっており、顔から血の気がひくという経験をしました。
Covid-19対応に追われる日々ですが、それだけだとつらくなるので、Lin4Neuroのアップデートを行い、公開しました。
主な変更点は以下になります。
最新のLin4Neuroはこちらから入手できます。
英語版のサイトはアップデートしましたが、日本語版はこれからです。
Lin4Neuro based on Ubuntu 18.04 is updated.
Below are main changes.
You can get the latest version from here.
以前、DTIの画像などをFreeSurferの脳表に投影する方法を紹介しましたが、SPMの結果のspmT画像をFreeSurferの脳画像に投影する方法もわかりましたので紹介したいと思います。
必要なコマンドは、mri_vol2surf です。
入力画像は、spmT_0001.nii とします。出力ファイル名は、左半球の画像ということで、lh.spmT_0001.mgzとします。
今回、大事になるのは、–mni152reg というオプションです(木村先生、教えてくれてありがとうございました)。MNI空間でのあわせこみに使えるオプションです。
シンプルに以下でいけました。
mri_vol2surf --mov spmT_0001.nii --mni152reg --hemi lh --o lh.spmT_0001.mgz
入出力ファイル以外のオプションは2つだけ、–mni152reg と –hemi lh だけです。
最後に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
結果、以上のような感じで表示できました。
Ubuntu で Jupyter notebook を入れるとデフォルトでは Firefox が起動します。
Google Chrome にする方法を探しました。
こちらのリンクに方法が記載されていましたが、記載しておきます。
jupyter notebook --generate-config
これで、 ~/.jupyter/jupyter_notebook_config.py が生成されます。
which google-chrome
私の場合は /usr/bin/google-chrome でした。
以下の記載を探します。
# c.NotebookApp.browser = ''
ここを以下に修正します。
c.NotebookApp.browser = '/usr/bin/google-chrome'
これだけです。
gitでブランチを切って上手に開発していきたい、そんな思いから必要最低限なことをメモしておきます。developブランチを作成し、masterにマージするまでです。
git branch
git branch develop
git checkout develop
git add file(s) git commit -m comments
git checkout master git merge develop
Ubuntu 18.04 で Git LFSを使うための備忘録です。リポジトリの作成者側、そして利用者側の観点が必要です。
sudo apt install git-lfs
git lfs install
.git/hooks/pre-pushがpushエラーを起こすため、削除(後で再作成される)
cd リポジトリ rm .git/hooks/pre-push
git lfs track "*.nii" "*.nii.gz" "*.mgz"
これで、.gitattributesが作成される。
git lfs track
通常どおり、git add; git commitでコミットする。.gitattributesもaddする。
通常どおり git push を行う
git push origin master
パスワードが複数回聞かれる。(理由は調べる必要あり)
git clone を行う
git clone リポジトリ
この時点では、ファイルの実体はダウンロードされていない。次の git lfs pull で実体がダウンロードされる。少なくとも、この時点で、git lfs を使わない場合に起こるメモリの消費は起こらない。
ここで、git lfs pull を使う
git lfs pull
Ubuntu上でFSLやFreeSurferを走らせる時、
Syntax error: "(" unexpected.
といったエラーが出ることがあります。
この原因を探っていたらわかったことがありました。
FSLのプログラムは、基本、bashで動くことを前提にしていますが、ファイルの冒頭のShebang行は、#!/bin/shとなっています。
RedHatやCentOSは、/bin/sh は、bashにシンボリックリンクが張られていますが、
Ubuntuでは、dashにシンボリックリンクが張られています。
ls -l で確認するとすぐに確認できます。
$ ls -l /bin/sh lrwxrwxrwx 1 root root /bin/sh -> dash
dashとbashは完全に互換性がないため、ときにbashの文法が通用しないことがあります。
解決策は以下の2つです。
自分でシェルスクリプトを書く場合などはこれがいいでしょう。
しかし、FSLでは、300以上のスクリプトがありますので、これを全部変えるのはめんどくさいですね。
Ubuntuでは、 dpkg-reconfigure dash というコマンドで、dashを使わずにbashを使うようにすることができます。
インタラクティブに行うには、以下のコマンドを叩きます。
$ sudo dpkg-reconfigure dash
すると、次の画面が出るので、「いいえ」を選びます。
再度、/bin/shのシンボリックリンク先を確認してみます。
$ ls -l /bin/sh lrwxrwxrwx 1 root root /bin/sh -> bash
今度はbashに変更されていることがわかります。
なお、インタラクティブでなく変更したい際は、以下で行います。
いくつかのサイトで情報が提供されていましたが、正しくないものもありましたので、試行錯誤した結果、以下が最適な解決法とわかりました。
echo "dash dash/sh boolean false" | sudo debconf-set-selections sudo dpkg-reconfigure --frontend=noninteractive dash
2020年2月6・7日に、東京大学駒場キャンパスにおいて、「国際脳MRIプロトコルデータ(HCP data 含む)と精神疾患臨床データの前処理・解析」というテーマにおいて、脳MRI・臨床データ解析チュートリアルが開催されます。ついに日本でHCPデータの解析法などを学べる時が来ました。
主催の東京大学の小池先生から情報をいただきましたので、告知させていただきます。
関心ある方は、こちらをご確認ください。
私は講師としては参加しませんが、HCP readyのLin4Neuroを提供します。
2019年11月16日7時で定数に達しましたので、締め切りました。
2020年1月12日開催予定の『FreeSurfer勉強会』のご案内をいたします。
まい参加希望の方は、下記のフォームにて、お申し込みをしていただけますよう、お願い申し上げます。
FreeSurferの勉強会を開催します。
今回は、「FreeSurferでrecon-allはやってみた。でも、もう少し学んでみたい」方を対象にしたいと思います。
現時点では、内容は以下を予定しています。
9:00-15:00
– recon-allのステップの理解
– ROI解析
– 縦断解析
– TRACULA(予定です)
15:00-17:00
– スクリプト化演習
日時:2020年1月12日(日)9:00-17:00
場所:オフィス東京(東京駅八重洲口から徒歩5分)
費用:無料
定員:30名(先着順)
受講条件:
– これまでにFreeSurferの解析を一度はやったことがある方
– ご自身のPCを持ち込んで作業ができる方
コマンドラインはどうしても苦手意識がある方々がいらっしゃると思います。
ふだん、GUIでやっていることをコマンドラインでやるとどうなるか、3月までラボを助けてくださった山田さんが作成してくださいました。
PDFで公開します。
FSLやそれを利用したHCPパイプラインでは、計算を高速化するためにCPUあるいはGPUを介した並列分散処理を行います。CPUの並列分散化には、Sun Microsystemsが開発していたオープンソースのSun Grid Engine(SGE)が使われます。しかし、同社は2010年にOracleが買収し、ソースコードがクローズドになってしまいました(現在はUnivaが引き継いでいますが、これもクローズドです)。これを受けて、リバプール大のグループがSun Grid Engineのオープンソースの最終版である6.2u5をベースに、オープンソースでの開発を継続し、Son of Grid Engineとして公開しています。(https://arc.liv.ac.uk/trac/SGE/wiki )しかし、Son of Grid Engineも2016年を最後に開発が停止しています。一方、Debian/Ubuntu系では、”gridengine” として同様の試みがなされてきており、現在も開発が継続されています。そこで、Ubuntu18.04LTSへのgridengineのインストール方法について紹介します。なお、本稿は京都大学精神科の宮田淳先生が作成した「Son of Grid EngineのUbuntu18.04LTSへのインストール方法」をベースに、筑波大学精神科の根本清貴が改変したものです。この場を借りて宮田淳先生に御礼申し上げます。なお根本は(もちろん宮田先生も)本マニュアルの内容に関して一切の責任を負いません。あくまで自己責任でこのマニュアルをご使用下さい。
FSLやそれを利用したHCPパイプラインでは、計算を高速化するためにCPUあるいはGPUを利用した介した並列分散処理を行います。CPU の並列分散化には、Sun Microsystems が開発していたオープンソースの Sun Grid Engine(SGE)が使われます。しかし同社は2010年にOracle買収し、ソースコードがクローズドになってしまいました。
これを受けて、リバプール大のグループがSun Grid Engine のオープンソースの最終版である 6.2u5 を利用したベースに、オープンソースでの開発を継続し、Son of Grid Engine として公開しています。Son of Grid Engine も SGE と呼ばれています。
https://arc.liv.ac.uk/trac/SGE/wiki
対応OSはLinuxのみで、Debian/Ubuntu系、RedHat/CentOS系があります。
インストールにはいろいろ工夫が必要ですが、このたび、京都大学の宮田淳先生がそのインストールマニュアルを作成してくださいました。
宮田先生のご厚意で公開をご快諾いただきましたので、公開します。
※満席になりましたので、申し込みを締め切らせていただきました。
これまでに脳画像解析勉強会を開催してまいりましたが、2019年度も2回開催予定です。
今回は、「SPM-VBMの基本は理解できた、その先をもう少し知りたい」方を対象にしたいと思います。
日時:2019年12月1日(日)9:00-17:00
場所:オフィス東京(東京駅八重洲口から徒歩5分)
費用:無料
定員:30名(先着順)
受講条件
– Matlabを既にお持ちであること
– 「すぐできるVBM」の内容は理解されていること
勉強会の内容(予定)
9:00-15:00
– Matlab入門(兼予習)
– SPMを利用したMatlabスクリプト
– SPMの結果をFigureにしていく方法
– VBMのTips
15:00-17:00
– 「今さら聞けないことを聞きたい」質疑応答コーナー
2021/12/19追記: より新しく確実な方法を書きましたので、そちらをご参照ください。これはもう古いです。こちら(Ubuntu 20.04 / 18.04 環境で CUDA 10.2, FSL 6.0.5, Tensorflow, PyTorch をセットアップする方法)になります。CUDA 10.2 ですが、他のバージョンにも容易に応用できる方法です。
Ubuntu 18.04で、ディープラーニング環境を構築したいと考えました。
いろいろネットの情報を得てトライしてみたのですが、苦戦しました。
しかし、トライしているうちに、いくつか大事なことがわかってきました。
ポイントは、以下のとおりです。
まずいちばん大事なのはこれです。ドライバーが古いものしか対応していないと、対応するCUDAのバージョンも古くなります。
これから詳しく記載します。
カーネルを最新のものを追いかけるとCUDAは動かないという事象が起きます。Ubuntu 18.04では、標準が4.15、そしてHWEが4.18です。CUDAは、この2つのバージョン(標準とHWEカーネル)だけサポートします。詳しくは、NVIDIAのページをご覧ください。
これらのコツをつかんだら、再現性が高くセットアップすることができるようになりました。
Step by Stepで示します。
現在、GPUでの機械学習ができる環境を構築しています。
様々な試行錯誤があるので、これはこれで別の記事になるのですが、
非常に困ったことが起こりました。
NVIDIAのGeForce RTX2070というグラフィックボードを入手したのですが、
Linux (Lin4Neuro based on Ubuntu 18.04)のインストールまでは全く問題ないのですが、NVIDIAのドライバーをインストールすると、再起動後、画面が全くうつらなくなるのです。
そして、Ctrl+Alt+Deleteも受け付けなくなり、ハードリセットしか方法がなくなります。
折角よい性能のグラフィックボードを入手したのにどうしてうつらなくなってしまうんだろうとネットの情報を探しまくりましたがなかなか情報が見つかりませんでした。
1ヶ月、問題が解決しませんでした…。
そのような中、ふと「ソフトがダメならハードか?」と思いました。
Display Portを使って画面を出力していましたが、HDMIに変えてみたらどうだろうと思い、変えてみたところ、あっさりうつりました…。
“NVIDIA” “Display Port” “Black screen”で調べると情報がちらほら出てきました。
やらなきゃいけないことがたくさんあるので、これ以上の調査はしないでおきますが、
今日の結論は、「画像の出力がおかしかったらDisplay PortをHDMIに切り替えてみよう」ということでした。
先日、論文校正をお願いしたのですが、そこでひとつ学びがありました。
「査読者の提案に従って」という内容を私は
According to the reviewer’s suggestion, …
と書いていたのですが、それが
As per the reviewer’s suggestion, …
と修正されていました。
According toはどうしてよくないのかなと思って、校正をお願いした野口メリッサさんに「According toとAs perの使い分けを教えてください」とお聞きしたところ、とてもわかりやすい回答をいただきました。
ご本人の許可をいただいたので、そのまま転載します。
Those phrases can be really confusing. I’m not sure why, but your original (incorrect) use of ‘according to’ is a very common mistake among Japanese writers. Perhaps it was taught wrong in school, or perhaps you read it in other articles so you get the false sense that it’s correct. I believe that most people who make this mistake are mixing up the two phrases ‘according to’ and ‘in accordance with’.
“According to” is used to refer to a fact or information that is reported by someone else. For example, I might say something like, “according to the weather forecast, it’s going to rain tomorrow;” or, “according to the Ministry of Education, 63% of high school graduates go on to university.”
“In accordance with” is used when you are doing something based on a rule or a law, or when you’re doing something based on a strong recommendation or a suggestion from a expert or respected source. For example, “in accordance with the law, I never drive above the speed limit;” or, “in accordance with the committee’s recommendation, the company decided to reduce their staff by 15%.”
“As per” (or simply “per”) has basically the same meaning as “In accordance with.” (see: https://www.collinsdictionary.com/dictionary/english/as-per )
“According to” は、ある情報に言及する際に、情報源を示す場合に使う
“In accordance with” は、その文章の主語が行動を起こす際に、「(法律、規則や専門家の意見など)に従って…」、という場合に使う
“As per” は、”in accordance with”と同じ
ということですね。
Collins辞書をご紹介いただいたので、According toも調べてみました。
https://www.collinsdictionary.com/dictionary/english/according-to
If someone says that something is true according to a particular person, book, or other source of information, they are indicating where they got their information.
「情報源」を示しているわけですね。
In accordance withはこう紹介されています。
https://www.collinsdictionary.com/dictionary/english/in-accordance-with
If something is done in accordance with a particular rule or system, it is done in the way that the rule or system says that it should be done.
「従うべきものに従って」行う時に使う感じが伝わってきますね。
となると、私がもともと使った”According to the reviewer’s suggestion”ははっきり間違いとわかります。
査読者の指摘に従ってこう修正しましたと言いたいのに、査読者に向かって「あなたから得た情報によると」というのはおかしいですよね。
むしろ、「専門家であるあなたの意見に従います」ということで、In accordance with the reviewer’s suggestion, もしくは、As per the reviewer’s suggestion, とするのがより適切なわけですね。
勉強になったのと、おそらく誤用されていることが多いと思うので、紹介させていただきました。
私がいつも校正でお世話になっているELCS; English Language Consultation Services(エルクス英語コンサルタント)さんはとてもよい仕事をしてくださいます。日頃からたくさん助けていただいているので紹介させていただきます。なお、私はELCSのサービス利用者の一人という立場であり、宣伝依頼などは何も受けていません。
DICOM→NIFTIに変換する際に、MRI画像の左右を反転する方法はありますか?というご質問をいただきました。
DICOM→NIFTIの際に変換する方法は私が知る限りあまりないと思いますが、NIFTI画像に対する方法はあります。
この方法を紹介します。
FSLに、”MNI152_T1_2mm_LR-masked” というファイルがあります。
画像の反転の確認にはわかりやすいファイルなので、今回はこれを使用します。
Mangoで見ると、画像に埋め込まれている”R”が実際にR側にあることに気をつけてください。
ある研究データセットにおいて、被験者リストに性別や年齢の記載もれがあり、MRIのDICOMデータから取得することを考えてみました。
説明が不要な方は、dcmtkさえインストールしてあれば、次のワンライナーで得られます。
$ for f in $(ls -F | grep /); do echo $f; dcmdump $(find $f -type f | sed -n 1p) | grep -E "0010,0020|0010,0030|0010,0040|0010,1010" | awk '{ print $7, $3}' ; echo ""; done
以下、解説です。