Pubmedはとても便利ですが、いくつか不便なこともあります。
そのうちのひとつに、summary (text) の扱いです。
viを使ってなんとかきれいにできないかと試行錯誤した結果です。
先に結論を示すと、以下でできます。
:%s/\n\([A-Za-z0-9]\)/ \1/
以下がそのプロセスです。
Pubmedはとても便利ですが、いくつか不便なこともあります。
そのうちのひとつに、summary (text) の扱いです。
viを使ってなんとかきれいにできないかと試行錯誤した結果です。
先に結論を示すと、以下でできます。
:%s/\n\([A-Za-z0-9]\)/ \1/
以下がそのプロセスです。
Lin4Neuroのアップデートを行いました。
主な更新点は以下になります。
https://github.com/kytk/lin4neuro-xenial
これを用いればLin4Neuroを自分の使いたいようにカスタマイズしていただくことも可能かと思います。
最新版のLin4Neuroは こちらからどうぞ。
Lin4Neuro is updated.
https://github.com/kytk/lin4neuro-xenial
You can make your version of Lin4Neuro based on the repository above. I wrote instruction how to use in the repository.
You can download the latest Lin4Neuro from here.
先日、ある方と「BashからMatlabを呼び出せないだろうか」という話をしていました。もし、これができたら、シェルスクリプトから、Matlabを呼び出せるので、シェルとMatlabを完全に連携できるわけです。
結論としては、以下でできました。
Matlabのスクリプト名を sample_code.m とすると、以下でできます。
$ matlab -nodesktop -nosplash -r 'sample_code; exit'
コツは2つです。
本日、第19回ヒト脳機能マッピング学会で発表したのですが、ブログのタイトル通り、シーケンスを自動判別し、ファイル名を自動でリネームするDICOM→NIFTI変換スクリプトを書いてみました。
MacおよびLinuxに対応しています。
必要なソフトウェアは以下の2つです。
パスが通っていることが必要です。
FSLも同様にパスが通っていることが必要です。
このスクリプトは以下から入手可能です。(右クリックで「名前をつけて保存」で保存できます。)
https://raw.githubusercontent.com/kytk/shellscripts/master/ren-dcmcnv.sh
インストールですが、パスが通っているディレクトリに保存していただくだけです。
使い方はとてもシンプルです。
最初に、作業用フォルダを準備します。その中に、各被験者のフォルダを準備します。フォルダ名がとても重要です。このスクリプトはフォルダ名をファイル名のベースに使うからです。
たとえば、被験者IDがsubj01ならば、フォルダ名をsubj01とします。その中にその被験者のDICOMファイルをすべて放り込みます。(ディレクトリ構造になっていてもなっていなくてもかまいません)
ターミナルを起動し、作業用フォルダに移動します。
そして、以下をタイプします。
$ ren-dcmcnv.sh
これだけです。
スクリプトは以下のことを行います。フォルダ=ディレクトリです。
よかったら試してみてください。
Good point of linux is that users can easily customize the appearance of user interface.
Below is how we can customize Xubuntu 16.04 and apply the changes system-wide.
Lin4Neuroのアップデートを行いました。
主な更新点は以下になります。
https://github.com/kytk/lin4neuro-trusty
これを用いればLin4Neuroを自分の使いたいようにカスタマイズしていただくことも可能かと思います。
現在、Ubuntu 16.04に基づいたLin4Neuroを開発中です。できたら年末までに公開できたらと思っています。
最新版のLin4Neuroは
You can download the latest Lin4Neuro from こちらからどうぞ。
Lin4Neuro is updated.
Below is the points of update.
https://github.com/kytk/lin4neuro-trusty
You can make your version of Lin4Neuro based on the repository above. I wrote instruction how to use in the repository.
Now I’m in the process of developing Lin4Neuro based on Ubuntu 16.04. Hopefully this version will be released by the end of this year.
You can download the latest Lin4Neuro from here.
あるプロジェクトにおいて、「MRI画像の一覧画像を作成してもらいたい」という依頼を受けました。
イメージとしては、下記のようなものです。
以前、FSLのシェルスクリプトチュートリアルを翻訳していた際に、演習に
Lightbox Viewerがあったのを思い出して、改めて、それを見ながら、さらに機能を追加したスクリプトを考えてみました。
作成しながら勉強になることがいくつもあったので、細かくわけてみたいと思います。
先日、Ubuntuでapt-get updateを行った所、以下のエラーに遭遇しました。
W: http://jp.archive.ubuntu.com/ubuntu/dists/trusty-updates/main/source/Sources の取得に失敗しました ハッシュサムが適合しません
このような場合の解決法がいくつか提示されています。よくみられているもののひとつに、Ubuntuフォーラム内の投稿があります。
これでいいのですが、本質は何か考えてみました。
本質は、
/var/lib/apt/lists
の中にあるファイルとの比較で失敗しているようです。
したがって、消せばいいのは、この中身で、apt-getはその下にあるpartialディレクトリがなかったら自動で作成してくれます。
なので、やればいいのは、たった一つです。
$ sudo rm -r /var/lib/apt/lists/*
これでapt-get updateを行えば問題は解決するはずです。
自分の備忘録として残しておきます。
Ubuntu 16.04になってから、Plymouthの挙動が変なので、いろいろ調べたところ、以下のことがわかりました。
これまでは、テーマは、/lib/plymouth/themesの下に保存されていましたが、これからは、/usr/share/plymouth/themesの下に保存されるようになったようです。
したがって、自作のテーマを使いたい場合、以下を行う必要があります。今、テーマはmytheme/mytheme.plymouthと仮定します。
$ sudo update-alternatives --install \ /usr/share/plymouth/themes/default.plymouth default.plymouth \ /usr/share/plymouth/themes/mytheme/mytheme.plymouth 100
$ sudo update-alternatives --config default.plymouth
$ sudo update-initramfs -u
場所が変更になったことだけ頭においておけば、そこまで悩む必要はなさそうです。
2018.09.09追記:この記事は古くなっています。最新版は、こちらに準備しましたので、こちらをご覧ください。
先日、ANTsをMacにインストールする方法を記載しましたが、Ubuntuでも同じことができるので、記載します。
開発者によるHow-toはこちらに記載されています。
先日、USBメモリに4GBを超えるファイルをコピーする必要がありました。
Windowsユーザー、Macユーザーも使うUSBメモリなので、NTFSフォーマットがよいと考えました。MacユーザーもNTFSは標準で読み取りはできますので。
これまで、フォーマットするときにGPartedでやっていました。GUIで簡単ですから。
しかし、今回は、NTFSフォーマットだけでなく、ボリュームラベルも変更する必要がありました。Gpartedでは、これは2段階(NTFSへのフォーマットとラベルの設定)になってしまうので、もっと簡単な方法はないかと思いました。
検索してなかなかすぐに見つけられなかったのですが、以下の方法が簡便とわかったので、紹介します。
Linuxでは、USBメモリは、/dev/sdc1とか/dev/sdb1などに割り当てられます。どこに割り当てられたかを確認する必要があります。方法として、dmesgを使う方法と、fdisk -lを使う方法があります。
USBメモリをPCにさした時点で、端末に
$ dmesg
とタイプします。そうすると、以下のようなメッセージが出てきます。
[ 8939.172114] usb 3-2: New USB device found, idVendor=054c, idProduct=05bb [ 8939.172119] usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [ 8939.172120] usb 3-2: Product: Storage Media [ 8939.172122] usb 3-2: Manufacturer: Sony [ 8939.172124] usb 3-2: SerialNumber: EBA5A08FFF1748 [ 8939.712192] usb-storage 3-2:1.0: USB Mass Storage device detected [ 8939.712398] scsi3 : usb-storage 3-2:1.0 [ 8939.714168] usbcore: registered new interface driver usb-storage [ 8939.717329] usbcore: registered new interface driver uas [ 8940.957656] scsi 3:0:0:0: Direct-Access Sony Storage Media 0100 PQ: 0 ANSI: 6 [ 8940.957872] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 8940.958666] sd 3:0:0:0: [sdc] 30507008 512-byte logical blocks: (15.6 GB/14.5 GiB) [ 8940.959280] sd 3:0:0:0: [sdc] Write Protect is off [ 8940.959282] sd 3:0:0:0: [sdc] Mode Sense: 43 00 00 00 [ 8940.959779] sd 3:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 8940.964615] sdc: sdc1 [ 8940.966528] sd 3:0:0:0: [sdc] Attached SCSI removable disk [ 9741.422259] usb 3-2: USB disconnect, device number 2
ここにUSBとかsdcとか出てきますね。
これで、/dev/sdcが割り当てられたとわかります。
もうひとつの方法はfdiskを用いることです。-lオプションで、デバイスの一覧を表示します。
$ sudo fdisk -l
とすると、今度は次のように表示されます。
Disk /dev/sdc: 15.6 GB, 15619588096 bytes ヘッド 255, セクタ 63, シリンダ 1898, 合計 30507008 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0xc3072e18 デバイス ブート 始点 終点 ブロック Id システム /dev/sdc1 48 30507007 15253480 c W95 FAT32 (LBA)
この方がわかりやすいですね。いずれにしても、/dev/sdc1がUSBメモリのパーティションだということがわかります。ちなみに、sdc1の1はパーティションの番号で、USBメモリの場合、たいていパーティションは1つなので、sdc1がUSBメモリのパーティションになります。
ここでは、mkfs -t ntfsというコマンドを使います。そして、ラベルは、-Lというオプションですので、以下のようにタイプします。
(mkfs.ntfsとmkfs -t ntfsは同義です)
$ sudo mkfs -t ntfs -L usbdisk /dev/sdc1
そうすると、フォーマットがはじまります。もし、クイックフォーマットにしたい場合は、-Qをつけて、
$ sudo mkfs -t ntfs -Q -L usbdisk /dev/sdc1
とします。(通常はこちらの方が現実的です)
ふつう、する必要はありませんが、きちんとNTFSに変換されたか知りたい人もいることでしょう。
その場合は、以下のコマンドをタイプします。
$ sudo parted -l
そうすると、以下のようなメッセージが表示されます。
モデル: Sony Storage Media (scsi) ディスク /dev/sdc: 15.6GB セクタサイズ (論理/物理): 512B/512B パーティションテーブル: msdos 番号 開始 終了 サイズ タイプ ファイルシステム フラグ 1 24.6kB 15.6GB 15.6GB primary ntfs lba
きちんとファイルシステムがntfsになっていることが確認できました。
時間がかなりかかってしまいましたが、Lin4Neuroのメジャーアップデートを公開しました。
見た目は変わっていませんが、システムは相当変わっています。
現時点で、以下のパッケージが収載されています。
今後のアップデートで、その他のソフトウェアも収載予定です。
最新版のダウンロードは、 こちらからどうぞ。
Though it took such a long time, I’m pleased to announce the release of the update of Lin4Neuro.
It looks the same, but it is quite different.
Right now, following packages are pre-installed.
Other software packages will be added in the next update.
You can download the latest version from here.
私は、今、Thinkpad X250とT430を使っています。Thinkpad T430では、BIOSで、タッチパッドを無効にすれば、そのままタッチパッドが無効になったので、よかったのですが、同じことをX250でやっても効果がありません。
それでいろいろ調べてみました。
結論は、以下の方法が一番早いかと思います。
ターミナルで以下をタイプします。
$ synclient TouchpadOff=1
ただ、これは、一時的なもので、ずっとそうしたくない場合は、自動でこれが動くようにしてあげればいいわけです。
私はXFCE環境なので、XFCEでどうするかを調べました。
2つのファイルを準備する必要があります。
これには、以下の2行だけ記載されています。
#!/bin/sh synclient TouchpadOff=1
これを実行権限をつけた後、パスの通っているディレクトリに保存します。私は、~/binに起きました。
これには、以下の3行だけ記載されています。
[Desktop Entry] Type=Application Exec=disable-touchpad.sh
この保存場所が大事なのですが、
~/.config/autostart
に保存します。autostartがなければ自分で作れば大丈夫です。
これで、ログアウトし、再度ログインすると、めでたく、Touchpadが無効になっています。
ちなみに、検索するとよく出てくる
/usr/share/X11/xorg.conf.d/50-synaptics.conf
の一番最後に、以下を記載
Section "InputClass" Identifier "no need for accelerometers in X" MatchProduct "SynPS/2 Synaptics TouchPad" Option "Ignore" "on" EndSection
というのは、ひとつ間違えるとシステムが起動しなくなることもあり得るので、注意が必要です。
Linux上でVirtualboxを使っている時、USBデバイスが認識されないで困っていました。
ドキュメントを見たら、きちんと書いてありました。
ドキュメントはこちら。
2.3.4. The vboxusers group
The Linux installers create the system user group vboxusers during installation. Any system user who is going to use USB devices from VirtualBox guests must be a member of that group. A user can be made a member of the group vboxusers through the GUI user/group management or at the command line with
sudo usermod -a -G vboxusers username
vboxusersというグループにユーザーを登録しないと使えないと書いてあります。
早速やってみました。ユーザーネームがfooだとすると、
$ sudo usermod -a -G vboxusers foo
となるわけです。
そうしたところ問題なく使えるようになりました。
Proportional scalingは割り算するだけなので大変ではありません。
スクリプトを書くまでもなく、ワンライナーでいけないかと思いました。
次のような感じでばっちりいけました。
必要なものはファイル名となんらかのglobalが記載されているテキストファイルです。ここでは、id_volume.txtとします。
$ cat id_volume.txt filename1 1.34 filename2 1.43 filename3 1.36 ... filename4 1.47
それでは、本題です。
$ cat id_volume.txt | while read line; \ do id=`echo $line | awk '{ print $1 }'`; \ icv=`echo $line | awk '{ print $2 }'`; \ echo "ID=${id} and ICV=${icv}"; \ fslmaths ${id} -div ${icv} p${id}; done
これで、ファイル名の前にpがついたファイルができます。
MITK-Diffusion needs the following packages to run on Ubuntu 14.04.
$ sudo apt-get install libqtwebkit4 sqlite libqt4-sqlite