Lunedì, 26 Marzo

やんごとなき事情によりワタクシのデスクのMacProがリプレースされました。マシン構成はこちら。

MacPro (middle 2010)
12-core, 64GB RAM
500GB SSD * 2, 1TB HDD * 2
OS X Lion

Apple Store BTOのフルスペックですがRAMとか全然足りないですしNGSデータ恐ろしいですね(((^q^)))
MacBook Airでの経験から起動DiskをSSDにというのは譲れませんでして大変ストレスフリーであります。もうHDDには戻れません。

今回はOS X Lionが載っておりまして、慣れないものですからまだ少し戸惑っております。Snow Leopardのままで支障がなければそのままで別に構わないだろうと個人的には思うのですが、かといってLionが悪いと感じる場面も特にありませんし、要は慣れですから、結論としてOSの変化に対してそれぐらいおおらかな気持ちを持てる程度に信仰心を高めておくのがよいのではないかとここでは述べさせていただきます。ということで、改めて未来の自分を幸せにするための環境構築メモを書いておきますし、偏った内容ですが世界のどこかの誰かのお役に立てばいいなと思っていますよ。下に行くほどそこはかとなく誰得感が高まります。
 


 

1. Software Update

System Preference -> Check Now

まずはソフトウェアアップデートを。時代に追いつけ。

 

2. install GUI app from Mac App Store

ほとんどのappがMac App Storeにあって時代を感じました。ダウンロードしたものは以下。
 

Alfred

ランチャ。結局これに落ち着いたけど、パワーパックにはまだ手を出してない。
 

Growl

notification。有料。
これまで世話になったことを考えると安いくらいだとおもいます。
 

Window Tidy

ウィンドウを美しく配置してこそのMacであるし、このappがないと生きていけない。
 

Sparrow

Mail.appの使いにくさにはウンザリだったので、昔Beta版を触っていたSparrowに乗り換え。有料。
しかしOS X LionになってMail.appも進化してるのに今気付いた。
 

Evernote

すべてのメモがここに。Evernoteがダウンしたら僕は休暇を取ります。
 

Twitter.app

公式派です。タブもフィルタも生ぬるい、男は黙ってR&B。
 

Reeder

レビューなんかではべた褒めされてますけどぶっちゃけた話、フォントがいいだけだとおもいます。
でもフォントが全てなのです。
 

The Unarchiver

あらゆる圧縮フォーマットを解凍してくれます。いざという時に助けてくれる。
 

Sizzling Keys

音量調節や一時停止・再生のためだけにiTunesのウィンドウをtoggleするなんて!
ホットキー気狂いには必須。

 

3. Install GUI app from their web page

いくつかは配布ページにダウンロードしにいきます。
 

Skype

http://www.skype.com/intl/ja/get-skype/
隣のパーティションに座ってる人とも、時差7時間の故郷の友人とも。
 

SkypeStyles

http://www.skypestyles.com/
fastlink機能が大変素晴らしいです。大勢でのテキストチャットで威力を発揮する。
 

Google Chrome

https://www.google.com/landing/chrome/beta/
Google先生にエロサイト閲覧履歴を送るためのapp、ではない。対flashコンテンツ兵器。
 

Google Japanese Input

http://tools.google.com/dlpage/japaneseinput/
元号確認アプリ。もしくは顔文字ジェネレータ。
 

Total Terminal

http://totalterminal.binaryage.com/
旧バイザー。コントロールキー2連打でターミナルウィンドウを。
ブラウザでマニュアルやリファレンスを見ながら作業するには最適。
 

Dropbox

https://www.dropbox.com/home
iOS端末とのファイル転送が大変ラク。それ以外は自前のサーバがあるのでいまいち生かしきれていない気が。
Sparrowとの連携がよさげ。
 

Cot Editor

http://sourceforge.jp/projects/coteditor/
Mac向けGUIテキストエディタ最強
 

IP Messenger

http://ishwt.net/software/ipmsg/
職場内でのファイル転送に。
 

Perian

http://perian.org/
ハイパー十徳ナイフ。動画コーデック対策。

 

4. System Preferences

もろもろ設定。
 

TrackPad

Swipe between pages => swipe with three fingers
Swipe between full-screen apps => swipe left or right with four fingers
Mission Control => Swipe up with four fingers
App Exposé => Swipe down with four fingers
Launchpad => Pinch with thumb and three fingers
Show Desktop => Spread with thumbs and three fingers
ここも地味にハマった。2本指でのページ遷移操作は結構気持ちいいのだけれど、
これを3本指スワイプにしておかないとTwitter.appとReederの操作感が破滅する。
あと最後の2つ、確かに親指を使わないとうまく動かない。どうやって認識してるやら。
 

Desktop

逢沢りな
 

Language & Text => Input Sorces

1. Google日本語入力で”Hiragana”, “Alphanumeric”以外のチェックを外す
2. ことえりにチェックを入れる
3. 標準U.S.のチェックを外す
4. ことえりのチェックを外す
間にことえりを挟まないとU.S.のチェックが消せない。
Google IMEがサードパーティIMEだからだろうけど、バグだろこれ。
 

Sharing

Remote Loginにチェック。マシン名の設定。
 

Time Machine

1TB HDDを一枚バックアップ用に。
 

Security & Privacy

Require password <immediately> after..

 

5. Setting Up Safari

メインブラウザはSafari。Safariこそ至高。何故ならアイコンが格好いいからです。
Flashコンテンツは無駄にCPUを食うのでプラグインは入れません。
どうしても見る必要があるときはDevelop => Open with.. => Chromeで。
 

Develop menu

Preferences.. => Advanced => Show Develop menu in menu bar
 

Install SIMBL

http://www.culater.net/software/SIMBL/SIMBL.php
インストール先はMacintosh HD/Library/Application\ Support/ (もしくは/username/Library/Application\ Support/)
 

Install SIMBL plugins

SafariStand http://hetima.com/safari/stand.html
SafariTabConfig http://d.hatena.ne.jp/griffin-stewie/searchdiary?word=%2A%5BSafariTabConfig%5D
Lionになってちょっと面倒くさくなりましたが、FinderのGoメニューでオプションを押すとLibraryを選択できます。
面倒くさいのでTerminalで
mv <downloaded bundle package> /Library/Application\ Support/SIMBL/Plugins/

SafariDragとSafariTabMementoが死んだままで大変悲しいです。
配布元の人がSafari5用にアップデートする雰囲気ないし自分で実装するしかないのか…
 

DeliciousSafari

http://delicioussafari.com/
deliciousで快適にブックマークするために。
 

Safari Extensions

 

AutoPagerize

http://autopagerize.net/
アレ。いつになったらブラウザ標準になるのやら。
 

Type-To-Navigate & Invisible Status Bar

http://dbergey.github.com/
シャレオツタイプアンドサーチ。あとリンクにマウスオーバーした時だけリンク先が表示されるアレ。
 

Google Images Search

http://googleimagessearch.tumblr.com/
任意の単語や文章を選択した状態でワンクリックすると画像検索ができるアレ。
 

HoverZoom

http://sidetree.com/extensions.html#HoverZoom
マウスオーバーでありとあらゆるサムネイルを拡大してくれるアレ。
 

BetterSource Safari

http://www.awarepixel.com/safari/bettersource/
メニューバーにoriginal/generatedのhtmlソースを表示するボタンを配置するアレ。
 

JSON formatter

https://github.com/rfletcher/safari-json-formatter/downloads
JSON形式のファイルを大変見やすくしてくれるアレ。
 

NoMoreiTunes

http://nomoreitunes.einserver.de/
iTunesを強制的に開かされるリンクを封じ込めるアレ。

 

6. Developer tools

開発環境。
 

Xcode

App Store -> Search “Xcode” -> download (require Apple ID)
..after installing, launch Xcode, Preferences(⌘+,), Downloads, click “Install” for Command Line Tools
地味に混乱した。これまではXcodeを全部入り指定でインストールするだけで/usr/bin以下に諸々入れてくれていたんだけれども、今回はちゃんと指定しないとダメだそうです。エーッ。なんのためのXcodeだよう。ああそういえばXcodeってiOS開発環境であってmakeコマンドインストーラーじゃないもんなあとか今更ながら。
 

gcc

https://github.com/kennethreitz/osx-gcc-installer/downloads
“As of version 4.2, Xcode is LLVM-only and no longer includes GCC”
エーッ。なんのためのXcodeだよう。ああそういえばXcodeって、以下同文。
 

install packages with Homebrew

http://mxcl.github.com/homebrew/

“Macports driving you to drink?”

アル中を治すためにナウいマカアが使うというパッケージ管理ソフトのHomebrewを導入することにしてみました。新しいもの好きのミーハーです。なにがよいかと言いますと、OS Xに最初から入っているプログラムはなるべくそちらを利用するようにして、悲惨な衝突事故を防ごうという思想だそうです。シンプルなのはとてもよいことだと思います。とりあえずないと死ぬだろうと入れたパッケージ、もといformulaは以下。

gawk
git
zsh
wget
lftp
coreutils
imagemagick
R
gnuplot

意外とこんなもんですか?「gccがないんだけど…」「gfortranがないんだけど…」って怒られた以外はすんなりとインストールも出来ました。
 

Install Ruby with rbenv

https://github.com/sstephenson/rbenv

Rubyのバージョン管理といいますとRVMが圧倒的に有名なのですが、1.9.2以外のバージョンを使ったことがないので正直なところぽんぽんとRubyのビルドが出来てあわよくばバージョン上がった時にさくっと出来るといいよねくらいしか求めておりませんで、RVMはなんか…

正直に言います。RVMの公式ページがダサいのがイヤでした。
rbenvは素晴らしいです。なぜならGitHubだからです。

id:sstephensonが同じく公開してくれているruby-buildを使えばそんなヌルいRubyistの僕でも簡単にRubyの環境が整います。すばらしい。
 

Install nano

http://nano-editor.org/

Vim派もEmacs派もキモチワルイ人ばかりだったので、nanoをつかっています。ターミナルでぽちぽちとコマンドを打つことを覚えて2年半くらいになりますが、エディタの問題ではなくエンジニアはみんなキモチワルイのだと気付きましたし、そんな彼らからしてもnanoなんかでコーディングをしているヤツの方がよほどキモチワルイということもうっすらと自覚しています。

nanoの何がいいかといいますと、-xという「expert mode」オプションがありまして、これがどんなにエキスパートかといいますと、デフォルトだと最初に画面下に表示されるショートカットキーのヘルプ表示がオフになるだけというものです。ヘルプを見ずにファイルの保存やエディタの終了が出来ればエキスパートなのです。このハードルの低さ。nanoの素晴らしさだと思います。

ソース落としてきて自分でコンパイルします。


cd ~/local/src
wget http://www.nano-editor.org/dist/v2.3/nano-2.3.1.tar.gz
cd nano-2.3.1
./configure --prefix=/Users/inutano/local --enable-all
make && make install

キモチワルイ設定ファイルを書きます。


cat ~/.nanorc

set autoindent
set backup
set backupdir "/Users/inutano/tmp"
set backwards
set brackets ""')>]}"
set casesensitive
set matchbrackets "(<[{)>]}"
set regexp
set morespace
set multibuffer
set smooth
set tempfile
set boldtext
set historylog
set suspend
set tabsize 2
set const
set undo
set cut
set softwrap

bind ^, undo main
bind ^. redo main

include "/Users/inutano/local/share/nano/cmake.nanorc"
include "/Users/inutano/local/share/nano/fortran.nanorc"
include "/Users/inutano/local/share/nano/html.nanorc"
include "/Users/inutano/local/share/nano/mutt.nanorc"
include "/Users/inutano/local/share/nano/ocaml.nanorc"
include "/Users/inutano/local/share/nano/php.nanorc"
include "/Users/inutano/local/share/nano/ruby.nanorc"
include "/Users/inutano/local/share/nano/tex.nanorc"
include "/Users/inutano/local/share/nano/awk.nanorc"
include "/Users/inutano/local/share/nano/css.nanorc"
include "/Users/inutano/local/share/nano/gentoo.nanorc"
include "/Users/inutano/local/share/nano/java.nanorc"
include "/Users/inutano/local/share/nano/man.nanorc"
include "/Users/inutano/local/share/nano/nanorc.nanorc"
include "/Users/inutano/local/share/nano/patch.nanorc"
include "/Users/inutano/local/share/nano/pov.nanorc"
include "/Users/inutano/local/share/nano/sh.nanorc"
include "/Users/inutano/local/share/nano/xml.nanorc"
include "/Users/inutano/local/share/nano/c.nanorc"
include "/Users/inutano/local/share/nano/debian.nanorc"
include "/Users/inutano/local/share/nano/groff.nanorc"
include "/Users/inutano/local/share/nano/makefile.nanorc"
include "/Users/inutano/local/share/nano/mgp.nanorc"
include "/Users/inutano/local/share/nano/objc.nanorc"
include "/Users/inutano/local/share/nano/perl.nanorc"
include "/Users/inutano/local/share/nano/python.nanorc"
include "/Users/inutano/local/share/nano/tcl.nanorc"

ウワーッ!
こんな風になります。どうですか、このエディタ、ちょっと前のバージョンまでアンドゥ機能がなかったんですよ。ミスると直せないという緊張感の元で書くコードはとても凛々しいものになります。ほんとうです。

もしnanoを使ってみようかな…なんて思っている人がいたら「絶対にやめたほうがいい」と止めるのですが、それでも使うという危篤な奇特なそんなあなたに素敵なTipsを。configureオプションに–enable-utf8を付けてコンパイルすると日本語を使うことができますが、OS XではOSのバージョン問わずncurses, slang周りのライブラリでwide characterをサポートしていないよというエラーが出ます。これは最新のncursesをダウンロードして–widecオプション付きでコンパイル、インストールすればいいのですが、ローカルへのインストールは何故か失敗します。sudo権限があればいいのですが極力root以下を荒らしたくないので、僕は「日本語を使わない」という選択をしました。アルファベットだけで世界を記述出来ないのならVimでもEmacsでも使っていればいいです。ちなみにLinuxだとだいたいのディストリビューションでこんなことは起きません。root以下に入れる場合についてはこちらのブログが詳しいです。

こんなもんでしょうか。たぶんまた追記します。

Posted: March 26th, 2012
Categories: quotidiano
Tags: , , , , ,
Comments: No Comments.

Venerdì, 9 Marzo

全てのゴミデータを生まれる前に消し去りたい!

ご無沙汰しております。DBCLS大規模デエタ技術開発部門のinutanoでございます。「アウトプットのない限りウェブではいないのと同じだ」などと声高に分子生物学会で叫んだ割にブログの更新が滞っており猛省しております。すみませんすみません。

さて最近は何をしておるかといいますと「鎖鋸プロジェクトメジャーアップデートに向けた仕様検討と実装」,「公共データのクオリティ計算の継続と効率化のためのプログラム開発,およびブラウザ開発」をメインに、引き続きパブリックな次世代シーケンスデータ、ひいては「バイオロジカルな大規模データ」をいかにして扱うか、というようなテーマに取り組んでおります。色々とむつかしい課題も多く、「我々は何を為すべきか」というあたりに至っては思想だ哲学だという部分に降りていくものでもあり。ウーム。

さてそういうわけで相も変わらずSequence Read Archive内部をうろうろしているのですが遂にRun IDの総数が400,000を超えてしまい一体どこまで増えるのかという具合であります。DBCLS SRAsで回収している「データをSRAで公開している論文」の総数も2,000を超えました(http://sra.dbcls.jp/cgi-bin/publication.cgi)。こんなペースでデータが増えてしまうとデータベースの立ち位置であったり役割であったり、また様々な研究者がそれぞれデータベースに求める機能というものもすぐに変わってしまう、けれどもデータ自体は量が多くサイズも大きく小回りが利くとはとても言えない。なかなか厄介な状況ではありますが、だからこそこのDBをより有用にするためのアレコレが必要でもあります。

最近ではSRAのデータを再利用して研究に取り入れようとする動きも増えているように思えます。これは僕の感覚でしかなくて、全く根拠がありませんので、また改めて「自身の出したものでない公共データを用いた研究が論文としてどれくらい出ているか」というのを調べてみるといいかもしれないですね。ともあれそういった状況もあり、new to SRAな方が必ずドツボにハマるであろうというポイントをまとめた文章なり資料を作っておりまして、現在それに向けたSRAのベンチマークをやっております。今日はそのベンチマークの結果…ではなく、なにをしようとしているのかということを書きます。

SRAとは公共NGSデータレポジトリの総称であり、実態としてはNCBIのSRA, EBIのENA, DDBJのDRAという3つのデータベースが別個に存在しています。
http://ncbi.nlm.nih.gov/sra
http://www.ebi.ac.uk/ena/
http://trace.ddbj.nig.ac.jp/dra

それぞれがそれぞれの検索・データブラウジングインターフェースを持っており、内部のデータは三局間でシェアしているので基本的にはどのページから検索しても同じものを見つけることができます。データを探す時は「Submission (登録)」「Study (Project)」「Experiment (実験)」「Run (シーケンスラン)」「Sample (サンプル)」「Analysis (解析)」それぞれについてデータ登録者が記入した「登録するシーケンスデータの詳細が記述されたデータ」、つまりメタデータを元にデータを検索することになります。

登録されるシーケンスデータはシーケンスのランを最小単位とするため、SRR000001などのIDが振られます。SRRのSはNCBI SRAに登録されたことを示しており、2つ目のRがRunであることを示しています。

つまり…
SRR000001 / ERR000001 / DRR000001 は、SRA, ENA, DRAに登録されたデータに振られたRun ID
SRA000001 / ERA000001 / DRA000001 は、同じくSubmission ID
SRP000001 / ERP000001 / DRP000001 は、同じくStudy ID
SRX000001 / ERX000001 / DRX000001 は、同じくExperiment ID
SRS000001 / ERS000001 / DRS000001 は、同じくSample ID
SRZ000001 / ERZ000001 / DRZ000001 は、同じくAnalysis ID
を意味します。

それぞれのIDにそれぞれを対象としたメタデータが記述され、シーケンスデータと一緒に登録されます。さらに、1つのSubmissionで大量のExperiment, あるいは1つのExperimentで大量のRunを行うなどのケースも当然ながらあるので、データによっては大量のメタデータがぶら下がっているようなことになります。ちなみに、これらのうちAnalysis IDは一部のデータのみに付随しておりほとんどのデータではこれがありません。

なお、登録者が記述していないため空欄の多いメタデータというものも沢山あります。残念ながらそのようなデータは再利用が困難です。登録するデータが多くなればメタデータの記述も大変な作業にはなってしまいますが、折角出したデータをただ出すだけではなく、より価値の高いものとするためにもメタデータの記述はぜひともお願いしたいところであります。もっとも、DB側でのメタデータ項目の見直しや登録方法の簡便化をはじめとした改善も必要だという声を上げていますが…

さて、「基本的にはどこのページからでも同じものが見つかる」と先に書きましたが、SRAではデータを探しているときに「レコードとして登録されているものの、データそのものは置いていない」というケースにしょっちゅう当たります。この場合、以下のような状況が考えられます。
- データのシェアに時間差があるためまだデータがない => 他の2つには存在、あるいは時間が経つと手に入るようになる
- データが取り下げられたため、レコードのみが存在する => 現在のところデータを得るのは不可能
- データが個人情報に深く関わるゲノムDNAなどのため、レコードはあるがデータは別のDBに存在する
- 全く原因がわからないがデータがない => WTF

「何故データがないのか」という部分を突き詰めるには時間もかかりますし気力も削がれます。また、折角見つけたのに実験の詳細がなく使えない、どうしようもないというケースもあります。もっと悲しいケースでは、「これぞ我が求めし」とハイテンションでデータをダウンロードしたところ、シーケンスに失敗したデータでクオリティが低いとか、Nしか出てこないとか、そういうこともあります。データがさくさくダウンロード出来るのならばともかく、10GBとか100GBとかそんなオーダーのものが使えないと分かった時の脱力感たるや。

それが鎖鋸プロジェクト発足のきっかけでもあります。このプロジェクトは、「これは絶対に行ける」というデータを見つけること、それを「ダウンロードする前に確信すること」がどれほどコスト削減に繋がるかという実体験に基づいているわけです。

ともあれ、SRA深く潜っては時に心折れ、そうやって積み重ねたトライアンドエラーを現在まとめているわけであります。さらには、NCBI SRA, EBI ENA, DDBJ DRAの三局間での違い、例えば転送の速度がプロトコルによってどれくらい違うのかとか、それぞれがデータを公開しているデータフォーマットの違いはなにか、とか。結論を先に言っておくと、日本国内からSRAのデータをfastq形式で利用したい場合は、DDBJ DRAから圧縮されたfastqフォーマットのデータをftp経由でダウンロードするのが殆どの場合で最も効率が良いようです。

そういったものを実際の例を交えつつ(もちろん元データを出した方へのリスペクトと共に)、わかりやすいドキュメントを作っているところです。原文ドキュメントでさえ不親切なものばかりですので、英語でも書こうと思っておりますので誰か校正してください。

というようなことをもうかれこれ一ヶ月くらいは言っている気がしますし本業と並行で実際進めてはいるんですが、DDBJのftpサイトがメンテナンスでしばらく動かなかったりEBIのftpが何故か極端に不安定だったりlftpコマンドが謎のエラーを吐きまくったり、絶望のあまりリフレッシュのため僕がイタリアに帰省したりしておりましたため進捗が非常に遅れております。ごめんなさいごめんなさい。work hard, play harderでがんばります。

Posted: March 9th, 2012
Categories: quotidiano
Tags: , ,
Comments: No Comments.

Mercoledì, 18 Gennaio

技術の進歩により人間が不要になるのはいつの時代でも同じことです。生き残るためには技術を使いこなす能力を持ち、かつカバー出来ないスキルを持っていなければならない。「研究者の基礎体力」としては生物学の知識、英語力は当然ですが、そこにプログラミングのスキル、統計処理の知識なんかも当たり前のように必要となる時代になってしまいました。そうなのです。生物のことが分かって、英語がペラペラに喋れて、さっとプログラムが書けて、統計処理で大きなデータを捌くというのは今や最低条件なのです。それに加えて自分のストロングポイントがなくてはならない。悲しいことですが自分はそのどれもが今は中途半端極まりないので、年も明けましたし、気を引き締め直して一層精進していく所存であります。それがおれたちの生存戦略。

で、プログラミングの話です。これまではかなり場当たり的にやってきていまして、突然戦場に放り込まれ右も左も分からない状態で我武者羅に戦ってきたのですが、やはり生兵法はなんとやら、そんな体たらくでは訓練されたソルジャーには勝てませんので、急がず焦らず足元を固めていくことも必要であろうと適当に流してきた部分を改めておさらいしています。そんなこんなで最近は黙々と勉強しては昔のコードを書きなおし、みたいなことをしております。「昔の自分は他人」とはよく言ったもので、なんでこれがこうなってんだという部分が出るわ出るわ。やはりコーディングの知識とかスキルとか、それ以前にコメントもドキュメントもないとか、そういう基本的なところから改める必要があろうと。そんな折に同僚の@yag_aysさんがプライベートでこんなblogエントリを書いていました。

gitの復習(Git Immersion, GUI…etc) – やぐプロ

addやcommitだけを覚えてgithubの投稿用としてだけ使ってたり

グサッときました。

GitHubはマスコットキャラクターのOctCatが可愛いので大好きなんですが(Tシャツとビアグラスを愛用しています)、肝心のgitはと言えば

git add hoge ; git commit -m 'yeah' ; git push origin master

これしかつかったことないですえへへgit使えないと死ぬ未来近いしこのままだと死ぬ。

前置きが長くて無意味なのはいつものことです。gitの使い方をマスターするのにケーススタディ的なものがないかなあと思っていたらyagさんがgitimeersionなる素敵なものを先のエントリで紹介してくださっていたのでこれを通してやってみました。こちらです。
Git Immersion – Brought to you by EdgeCase

これ、本当によくできていて、これを通してやるだけで普段コードを書く時に必要なgitのスキルはあらかた押さえられている感じです。しかしいかんせん長い。1つ1つのレッスンが”Lab”という単位になってるんですがこれが最終的に53までいきます。じっくり理解しながらメモしつつやっていたら2日くらいかかりました(かかりすぎ?)。でもgit自体初めて、っていうかnew to terminalという人はもっとかかるかもしれません。で、チュートリアルとしては最高なのですが後で見返すのにはあまりよろしくないので、読み返す用のメモをここに置いておきます。

基本的にgitimmersion.comから必要な部分を抜き出したもので、文法が適当な英語でコメントをつけています。


# Setting up Name and Email
git config --global user.name "Your Name"
git config --global user.email "your_email@whatever.com"

# Setting up Line Ending Preferences
# for Unix. Win? cazzo.
# メモした時に書いたものです。汚い言葉を使っていてすみません。

git config --global core.autocrlf input
git config --global core.safecrlf true

# Getting started
mkdir project ; cd project ; echo 'puts "Hello, World"' > hello.rb

# initialize
git init ; git add hello.rb ; git commit -m 'First Commit'

# checking status
git status

# changed but not added to stage, discard change
git checkout

# added but not committed, discard addition
git reset

# no -m option => edit commit message with EDITOR environment variable
git commit (editor is launched)

# to view a history of commit
git log

# one line history
git log --pretty=oneline

# with various options
git log --pretty=oneline --max-count=2
git log --pretty=oneline --since='5 minutes ago'
git log --pretty=oneline --until='5 minutes ago'
git log --pretty=oneline --author='author name'
git log --pretty=oneline --all

git log --pretty=format:"%h %cd %s (%an)" --since='7 days ago'
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short

# %h is the abbreviated hash of the commit.
# %d are any decorations on that commit
# %ad is the author date
# %s is the comment
# %an is the author name
# --graph informs git to display the commit tree in an ASCII graph layout
# --date=short keeps the date format nice and short :)

# alias helps you from suffering tenosynovitis. add these lines in ~/.gitconfig
# tenosynovitis: 腱鞘炎
[alias]
  co = checkout
  ci = commit
  st = status
  br = branch
  hist = log --pretty=format:\"%h %ad | %s%d [%an]\" --graph --date=short
  type = cat-file -t
  dump = cat-file -p

# checkout former commit
git checkout 

# or define branch name and checkout its latest commit. (default branch name is "master")
git checkout master

# tag the current commit so that I can check it out later, then checkout previous commit and tag it.
git tag v1 ; git checkout v1^ ; git tag v1-beta ; git checkout v1

# check all the tag
git tag

# view tags in the logs
git hist master --all

# reset changes before staging
git checkout hello.rb

# reset changes before committing
(change) ; git add hello.rb ; git reset HEAD hello.rb

# unwanted change still remains, checkout to remove it from working space
git checkout hello.rb

# reset changes after committing, by creating a new commit that reverses the unwanted changes.
# now we could use HEAD as a target, but hash value can be used as well.
(changes) ; git add hello.rb ; git commit -m "mamma mia!" ; git revert HEAD

# removing commits from a branch.
# check the history, reset to before mistake (but tagged commit is still in repository, can be seen with hist --all)
git reset --hard 

# amending commit: add extra changes to previous commit
(changes) ; git add hello.rb ; git commit -m 'yey!' ; (a bit change) ; git add hello.rb ; git commit --amend -m 'yey, and yey again!'

# removing tag of the commit that is already reset --hard is removed from repository by removing its tag.
# remove unwanted tag
git tag -d oops

# moving file with
mkdir lib ; git mv hello.rb lib/ or (mkdir lib ; mv hello.rb lib/ ; git add lib/hello.rb ; git rm hello.rb)

# dump a commit to look inside with:
git cat-file -t 
git cat-file -p 

# for major rewrite, create a branch in a local repository
git checkout -b 

# return to default branch, Master Branch
git checkout master

# to look branches structure drawn by simple ASCII, add --graph to git log command.
# now we've already added it in alias "git hist"

# merging master into a new branch
git checkout  ; git merge master

# if there was any conflict change, git will tell so. need to edit it with editor, and commit it.

# conflict change? rewind a branch to the certain commit with:
git reset --hard 

# use rebase command to bring a change from master branch
git checkout  ; git rebase master

# rebase rewrite a history of commit. not suitable to public repo or a branch whose commit history is important.
# rebase for short-lived, local branches. merge for branches in the public repo.

# cloning repository. move to parent directory of the repository which is about to be cloned and:
git clone  

# show the name of remote repo and its details
# "remote repositories typically live on a separate machine, possibly a centralized server."
git remote ; git remote  

# see all the branch with:
git branch -a

# git clone does not copy all the branches of local repo, but only master branch.

# pull changes from a remote repository with: (origin -> clone)
git fetch

# merge the fetched changes into local master
git merge origin/master

# git pull = git fetch && git emerge origin/master

# add a local branch that tracks a remote branch
git branch --track greet origin/greet

# making bare repositories (without working directories, used for sharing)
git clone --bare  

# add bare repository as a remote to our original repository
git remote add shared ../hello.git

# "Since bare repositories are usually shared on some sort of network server, it is usually difficult to cd into the repo and pull changes, so we need" push:
git push shared master

# to pull changes from bare repo to cloned repo
cd  ; git remote add shared ../hello.git ; git branch --track shared master ; git pull shared master 

# start up git server ( and make it possible to be cloned )
git daemon --verbose --export-all --base-path=. (--enable=receive-pack)

# to clone from server (rewrite "localhost" as hostname or IP to exchange repo across Wi-Fi.)
git clone git://localhost/ 

# and more (do it urself)
# - Reverting Committed Changes
# - Cross OS Line Endings
# - Remote Servers
# - Protocols
# - SSH Setup
# - Remote Branch Management
# - Finding Buggy Commits (git bisect)
# - Workflows
# - Non-command line tools (gitx, gitk, magit)
# - Working with GitHub

ひと通りこれをやってのけたならばあとは実戦で使いつつ分からないところをまた調べるという感じでいいかなと思います。最初から分厚い本を読んで写経して…というのはモチベーションが続かないので(飽き性)、プログラミング始めた時もそうでしたけど、実際に今必要なことをやりつつ覚えていくのが合っていると思うし。それでもいかつい技術書を読んだ方がいい理由があれば是非教えて下さい。そこのチャプターだけ読みます。

Posted: January 18th, 2012
Categories: quotidiano
Tags: ,
Comments: No Comments.

Martedì, 27 Dicembre

2011年日本分子生物学会年会のフォーラムで講演をしてきました。

フォーラムのタイトルはずばり”もし分子生物学者がGoogle+ の招待を受けたら When molecular biologists meet Google+”です。ウチの司令が最初こういうフォーラムの企画を分子生物学会に投げると聞いた時はいくらなんでもそりゃあ通らないだろうと笑っていたのですが、フォーラムのページにタイトルが載った時は正直なところ学会の英断に感服というよりもこんな企画通して本当にいいのかと唖然としました(公式サイトに掲載されたフォーラムの要旨はこちら)。もちろん「学会というフォーマルな場にふさわしくないだろう」というようなことを思ったのでは全くありません。「この企画がオーケーということはつまりなんでもやっていいっていうことだよね?」と。「学会だから」ということで自重する必要はないんですね、と。好き放題やりますが知りませんよ、と。

と、いうことで講演のタイトルは「生存戦略、しましょうか。 ~ 或いは、最もスマートな研究職の探し方」です。学会前からそのタイトルのぶっ飛び具合からtwitterで話題をかっさらうことに成功していましたが強敵ジンクピリチオンに勝てたかどうかはわかりません。ちなみにお察しの通りメインタイトル、各タイトル及びスライドデザインは某アニメーション作品のオマージュです。

講演の様子を録音したトークとスライドで送る動画は統合TVにアップロードされております

なにかというと分子生物学研究者向けのfindjob談義なのですが、ウェブでもオンラインでも極力こういう類の話、特に”シューカツ”に関することはあまり語らないでおこうと気をつけていました。だってぺーぺーの下っ端の社会人一年目ですし。何も結果出してないし偉そうなこと言える立場じゃないですし。なによりもこういうのクドクド語ると女の子にモテなさそうですし。おすし。でも折角の機会なので「あらゆるものを棚の上に放り投げてから言うんだけど、なんかおかしいんじゃない?」と声を上げてみた次第であります。阿呆なスライドと横着トークの所為でそんな謙虚なスタンスは木っ端微塵に吹き飛んでいますが。

結局のところ言いたかったのは途中のスライドにもある”就活のやり方はひとつなのか?”ということ。「なんとなく大学/大学院に進学して、そろそろ就職しないとマズいからシューカツはじめないと、とりあえず就活サイトに登録して、スーツ着て説明会に行ってエントリーシート書いて面接受けて…」という”フツーの”プロセス。今まさにその途中にある大部分の人の中で、その人自身の意思で、他の選択肢との比較検討を行った結果として、そういう道を選んでいる人って一体どれくらいいるんだろうかと。単純に疑問なのです。だって、飲み屋に出掛けて行って知り合いを増やしてそこで仕事を得たっていいし、アルバイトやインターンに行ってそのまま就職してもいい。学生が社会に出る時の最初の接点、そこに今の時代では「きっかけはWeb/SNSだった」ということだってありうるのです。折角こんな時代に生まれてきてそういう便利な「武器」があるのに、トライする人は驚くほど少ないように見えます。既に実績もある他の選択肢が沢山あるのに、それを導入する妥当性を検討せずに、既存の手法のみに頼って無理やり結果を出そうとする。それって、ダメな研究の見本みたいじゃないですか。他の業界ならともかく、学生であるとしても、形だけだったとしても、サイエンスを志した人間がそういうスタンスなのはおかしいんじゃないかって。そう思うのです。

誤解を防ぐためにもう一度、「既存の就活を否定したいわけじゃない」。「WebやSNSは就職のための魔法の杖だ」なんて言うつもりもない。「ちゃんと自分で考えてそれが最善だと確信してやってるの?」って言いたいだけ(余計なお世話?そうかもね:p)。だから、既存のいわゆる「シューカツ」であっても、それが自分の目指す道に最も適していると確信しているのなら、全力でそれをするべきだと思います。だけど、惰性だったり、右に倣えだったり、”自分でイチから考えた結果として選んだのでない”のなら、結果なんて出ないだろうし、結果が出たとしてもロクでもないだろうし、あるいはロクでもない結果であることに手遅れになるまで気付かない。職を得ることも、研究することも、それ以外の世の中の全てのことで言えると思うのですが、まず求める結果を明確にして、そのために必要なプロセスやメソッドを模索して、妥当な道を全力で進む、違ったならまた別のことを試す。何かを為すということは、そういうプロセスを辿るということであるはずなのです。そういう思考が人生の一大事である”職を得る”という場面で出来ない人って、研究でも同じことが出来ているんでしょうか。他の人の研究を引き継いで、伝家の宝刀として代々受け継がれる手法を淡々とこなす。それって多分、「研究に似た研究でないなにか」じゃないですか。

というようなことを全く口にしないままtwitterのキャプチャー画像だけを貼りまくったスライド80枚を10分強で一気に喋り切るというエクストリームスポーツに興じましたがいかんせんスライドのデザインがやっつけ仕事感たっぷりで個人的には全く納得が行っていないので来年また似たようなことをやりたいですね。余談ですが、スライドの枚数が多すぎて統合TVの作成班からナビゲーションに起こすのが大変だとブーイングが巻き起こっておりまして、平謝りしながらも次回があれば必ず100枚を超えてやろうと心に決めております。あと「なんでもかんでもExcel使うな」「Internet Explorer 6を未だに使うなどという悪行は今すぐやめろ」というメッセージは時間の都合上省きましたが今後とも絶え間なく発信していきたい所存。

* * * * * *

言うまでもなく、誰かに対してではなく、何よりも自戒を込めて。こういうことって往々にして、言って分かる人は言われなくても分かっているし、言って分からない人はどれほど言われても分からないものですが。粛々と進めましょう、自らの生存戦略を。

Posted: December 27th, 2011
Categories: quotidiano
Tags: , , ,
Comments: No Comments.

Domenica, 25 Dicembre

2011年日本分子生物学会で研究発表をしてきました。

現在開発中のSRA利用補助I/F “鎖鋸” についての発表が主でありまして、口頭での発表、ポスターでの発表を行い、いくつかのフィードバックを頂くことも出来ました。 そのあたりについて補足も交えながら今回は書いていきたいと思います。

今回の発表では

  1. 公共の次世代シーケンスデータベース Sequence Read Archive (SRA)について
  2. SRAの内部がいかにしっちゃかめっちゃかになっているかということを訴える
  3. SRAから必要なデータを見つけるためにシーケンスデータの詳細を記述したメタデータの整理や統計を行い、サービス開発をしていますという宣伝
  4. それに付随して行った統計により、SRAで公開されているデータの一部の特徴を紹介

というようなことを目的としたのですが、10分強でこれを余すところ無く伝えるというのは至難であるということを痛感した次第であります。自分自身の力不足でもあるかとは思います!けれども!その辺りは改善点を洗い出しては戒めとして次回同じ失敗をせぬようにと思っておるところであります。

こちらのBlogやtwitterでは散々SRAからデータを探して使うことの苦しみを訴えているのですが、果たしてどれほどの人がそれに共感して下さっている/ないし理解出来るかというところは不明でありまして、なんやかんやとアレがダメだコレで困るというような話はしますけれども、実際に覗いてみる、扱ってみないことにはどれほど僕が声高に叫んだところでなかなか難しいのかなと。伝え方を工夫するとか、やり方は色々あると思うのですが、こういうことをやる意義ってなんぞやというところは理解してもらわないことには評価もされませんので、どげんかせんといかんですね。

いかに内部がぐちゃぐちゃか、そして僕らはこんなのを作りましたというのはそのまんまなのでプロジェクトのウェブページを見てください、ですね。紹介した後に試しに使ってみて下さった方もいらっしゃったようで、大変有難いことです。是非オンラインからのフィードバックもお待ちしております。

それから統計情報によるSRA内データのプロファイリングというところですがこれもややうまく伝えることが出来なかったのかなと心配しているところであります。要は、「全てのデータから信頼性の高いデータだけを抽出し、そのデータ群の傾向をざっくりと掴みたい」という欲求の元に行ったものでありまして、これで何かを決めつけたりするには不十分であるわけです。信頼性というのも「論文が出ているデータは信頼できる」という甚だざっくりとした基準であります。データのクオリティチェックもデータの量が多くフルオートメーションですので1つ1つにエラーがあるかどうかというのを手動で見られないところも、個のデータをチェックしないと気が済まない系バイオロジストとしては歯がゆい部分ではあります。

そのような色々とゴニョゴニョなワカリニクイプロセスを経てはいるのですが、その統計と外れ値をチェックすることである程度の傾向をつかむことが出来て、いくつか挙げると

  1. 論文の元となったデータでもミスシーケンスなどの使えないデータが含まれる
  2. シーケンスのクオリティは全体的におおむねベンダーの主張するスペックに準ずる
  3. クオリティ、配列重複、N contentでプロットした時の外れ値は”全てN”等のミスシーケンスでありそこに共通性はなかった(おそらくただのミスシーケンス)
  4. 登録されているデータ全体の傾向に反して、大半のジャーナルでDNAシーケンスとtranscriptomeシーケンスの論文が半々くらいの割合を示している

などなどです。

口頭発表ではこのあたりを伝えきれなかったかなというところが心残りではあります。またオーガナイザーの先生方から「タグ付ける系のシーケンスアプリケーションだとduplicationを正確にミスだと判定し他と比較することは出来ないのでは?」というコメントを頂いたことに対して「メタデータにそういう実験をやったと書いてくださっていればそれも出来ます」と答えたのは本当で、論文にはちゃんとどういった実験デザインを行ったか書いていてもsubmission時の記述だけでは判定のしようがないというケースは少なくありません。いや、本当なんですよ。

それから、”全部同じ土俵に載せるのはアンフェアでは?”という部分については答えられないままだったのですが、今回のstatは”データAとデータBを比較する”という目的ではなくて、”どういったものが入っているか”をチェックするのが目的だったので、全部載せで外れ値を個別に見ていくというアプローチでした。その部分をちゃんと伝えられなかったのは、まあプレゼンのタイムマネジメントというところもあるのですが、修行が足りんなァと。ともかく、例えばプレゼンのduplicationの部分だと、極端に率が高いものを個別にチェックして、PCRによる重複であるとか、ほぼ全てNになっているミスシーケンスである(例: SRR070264)とか、そういったものであることを確認しています。なのでここから言えることは先にも挙げた”論文と紐付いているからと言って全てが「使える」データというわけではない”ということであり、つまるところデータをダウンロード・解析に使用する前にそれが使えるデータなのかをチェックすることの意義を示しているとも言えます。

というわけで今回のまとめとしては

  • プレゼンのスキルをもっと上げましょう

ですね。はい。いや、綺麗で読みやすいスライド作るとか喋りがうまくなるとかそういう意味ではなくて必要なメッセージを的確に伝えるという意味で。ヴヴヴ。

以下にプレゼンに使用したスライドと、ポスターのpdfを置いておきますのでどうぞ。

ポスターのpdfは ¡¡¡ こちら !!!

学会のポスター発表は直接フィードバックやご意見を貰える貴重な場であるのですが時間も限られており興味を持ってくださった全ての方とお話出来るわけではないというのはこのWeb2.0の時代にあるまじき絶望であろうと思いまして、twitterで呼んでくだされば飛んできますよというメッセージをポスターに記してみました。そうすると「奈良に来て説明してください」というreplyが飛んできました。さすがにそれは無理です。

もうひとつ、フォーラムでの発表もあったのですがそちらは別エントリで。

Posted: December 25th, 2011
Categories: quotidiano
Tags: , , , ,
Comments: No Comments.

Lunedì, 3 Ottobre

10/5は統合の日、ということでトーゴーの日シンポジウムというのがお台場は科学未来館で開催されます。これまでに開発した、或いは現在開発中の内容についての発表をするのにポスターを作成していました。勿論内容は常に頭の中で練りに練っていますので改めて何を伝えるべきかということを今更詳しく書き出したりする必要もないからというのもあるのですが、スクラッチで(ゼロからということです)ポスターを小1時間でちゃっちゃっと作ってしまいました。我ながらスライドの類を作るのは早くなったなあと思わずにいられません。そこでスライドを作る時に便利なtipsをつらつらと書いておこうかと。願わくば誰かがハッピーになりますよう。

当然ですがソフトウェアはiWork 09のKeynoteです。他は知りません。

keynoteといえば兎にも角にもインスペクタです。しかしMacBook Airのような小さいディスプレイで作業をしているとインスペクタのウィンドウが邪魔になることが多々あります。これをドラッグして横に移して…なんて面倒なことを毎度毎度やっていては我慢出来ません。そんな僕を幸せにしてくれたのはCmd+option+Iでインスペクタの表示/隠すです。親指を横に寝かせつつ親指の先でCmdを押し第一関節でoptionを抑え空いた指でIを押します。慣れると「アッ邪魔だな」と思った時スデにインスペクタが消えています。当然皆さんUSキーボードをお使いのことと思いますが両手でこれが出来るようになるとそれはそれは幸せになれます。

インスペクタと同様の理由からColors Windowを出したり引っ込めたりするにはShift+Cmd+Cです。これも地味に効きます。こういうところのイライラを減らすと大幅に作業効率が上がります。ショートカットを制すものはMacを制す。

あとはCmd+Shift+-(minus)or+(plus)で文字の縮小拡大。まあこれは基本だし問題ないですね。オブジェクトの位置を動かすには矢印キーだけ/Shift押しながら矢印を使い分ける。でも正直ガイドが出るのでほぼドラッグして動かしている気はします。トラックパッドで1pxを調整出来ないうちは修行が足りないですね。あと、三本指スワイプでスライドを前後に移動出来るのは大変重宝します。

(お役立ちな記事を書こうとして書き始めたんですが実際のところ親指先と第一関節で…というインスペクタのショートカットが凄く速いよということを自慢したかっただけなんじゃないかという気がしてきました。普通に使っていれば勝手に気付くようなことばかり書いている気もします。しかしこれだけというのもなんなので、何気なくやっているけれどもnew to Keynoteな方には不慣れな部分をちょこちょこ書きます。)

とりあえずインスペクタというのは先に書きましたが本当にとりあえずインスペクタです。インスペクタさえとりあえず見ていればいいです。とりあえず”Click here to…”という初期グリッドを全消去してからウインドウ上部のナビゲータでオブジェクトをガシガシ置いてあとは適切な位置に配置したり色変えたり飾ったりするだけです。簡単です。

オブジェクトにシャドウを付けて、いやらしくない程度にreflectionを付けて、文字列には適宜文字間を広くする・狭くする、行間を広めに取る・狭くする、背景色等に使うオブジェクトはopacityを下げて透かしを入れる、横だけで並べられなければrotateして斜めに配置する。全部インスペクタでできます。インスペクタ凄いですね。そんなインスペクタをサッと出してサッと消す技術は大いに役立ちます。でも外部ディスプレイがあればそれを繋いで作業した方が大変幸せになれます。

フォントは迷ったらヒラギノ明朝体でいいんじゃないでしょうか。英字フォントに迷ったらHelveticaでいいです。でも各位フォントに拘りもありましょうから自由にすればいいと思いますがフォントというのは思っている以上に受け手に対する印象を変えると思います。デフォルトのままやっておけばいいやというものではないと思います。色のバランスなんかよりもフォントの方が遥かに大事だと思います。フォントです。いいですか。MSゴシックを眺め続けると視力が低下するというのは迷信ですが僕は信じています。

プレゼン用スライド、ポスター共に見やすさというのは非常に大事ですがそれは単に文字が見やすければいいということではないと思います。見やすさというのはつまるところ伝えるべきことが伝わるかどうかということなので、文字で伝える必要があるかどうかというところから考えなければなりません。しかしモデル図やグラフで済ませられないこともあります。かといって文字だけをダラダラ書くのはよくありません。シンプルに文字だけ。そうすると見た目が寂しい、手抜きだと思われるという恐怖に襲われたりします。そういう時は英語と日本語を併用するのがいいのではないかと思って最近試していますがいい具合だと思うのでご紹介します。こんな具合です。

これだけでは全然意味分からないですし単語のチョイスも適当なのであまりいい例とは言えないのですが見た目的にはこういう具合。大きめのcondenced boldな英字に小さめのゴシック体の日本語をぴったり並べるという感じです。インスペクタの文字列パネルで大きさと文字の間隔と行間を調節するだけです。見た目格好良いでしょう?Web2.0っぽくないですか?違いますか?そうですか… 使ったフォントは僕の大好きなfree font製作者Jos Buivengaさんのfontin sansです( http://www.exljbris.com/ )。いつもお世話になっています。ちなみに鎖鋸のフォントもこれです。ありがとうございます。これはもう完全な個人的趣味にもなるのですが文字列を図形として扱う、タイポグラフィとまではいきませんがこういう手法を取り入れるだけでグッと魅力的なスライドになると思います。ただフォントそのものを整形したりし始めるとキリがないのでそれはもう本業でなくて趣味の勉強会とかのスライドでやればいいんじゃないかと思いますが。でもこのテの話は好きなので続けます。文字列の後ろに色つきのオブジェクトを置いて、オブジェクトのボーダーを敢えて太めのラインで囲うとメリハリがついて見やすい感じがしてとてもよいです。単に文字列をポンと置くよりも目を引きますし周りのオブジェクトとの位置関係も調節しやすくてよいと思います。こんなんです。

格好付けつつ文字列が読みにくくない角度は3°から6°くらいです。後ろのオブジェクトにシャドウを付けます。

すごいポップ!格好良い!アドビの高いソフトウェア使わなくても格好良い!というあたりでそろそろプリンタも使えそうな感じがするのでポスターの印刷に取り掛からんとすべくこのどうしようもないエントリを締めさせて頂きます。読み手のことを考えないで好き勝手書くのってどうしてこう楽しいんでしょうね。もしかしたら誰かが幸せになるかもしれないので、まあ、こういうことをWebに出していくのもきっと大事なことです。たぶん。以上、「Keynoteでインスペクタを出すショートカットを押す練習をしていたら親指を攣った」というお話でした。

Posted: October 3rd, 2011
Categories: quotidiano
Tags: , ,
Comments: No Comments.

Mercoledì, 13 Settembre

早いものでもう9月も半ばです。蒸し蒸しと暑い日が続くので感覚的にはまだ8月の終わりぐらいの気持ちでいましたがこのままではアッというまに学会シーズンに突入してしまいます。この時期はついつい学会発表や遠征の準備にかかりっきりになってしまい実際の業務が滞りがちなのですが、そうならないように段取りよく準備していきたい所存。ちなみに今年は10月5日の統合の日シンポジウム、CBI/JSBi合同年会、分子生物学会年会で発表します。通常の研究発表に加えて、分子生物学会では三日目木曜日の夜のワークショップで話すことになりました。!!! 詳細はこちら !!! 同日にすぐ近くの横浜日産スタジアムに我が心のクラブFC BarcelonaがクラブW杯のため来日しているので駆けつけたいのですがいかんせん日程が被ってしまったので泣きながら僕はパシフィコ横浜で発表します。ともあれ一年目から発表の数も多くて年末はてんやわんやとなりそうです。そういうことですので滞りない準備のためにもさっさと涼しくなって貰わねば困るので列島近辺の気圧各位はしっかりと空気を読んで年末に望んで頂きたい。暑い。

さて最近はめっきりデータ解析からは遠ざかってしまっています。というのも、我々が使っているクラスタマシンが現在大規模プロジェクトのためかれこれ二ヶ月は稼働しっぱなしでありましてあまり余力がないのですね。いや、マシンに余力はあります。僕にないだけです。コンピュータもシーケンサも超並列がブームですが僕の頭蓋の中のぷにぷには生憎そんな簡単にアップデートされません。アップデートする方法をいくつか考えついたのですがそのためには強烈な信仰心と現世への諦念が必要だったので実行するつもりはありません。いやまあ、そんな話はどうでもいいんです。

クラスタマシンが今必死こいて頑張って計算してくれているその中身というのは、他でもない我が宿敵であるSequence Read Archiveに収録されている全シークエンスデータのクオリティチェックであります。「超並列シークエンサーの登場により日々膨大なデータが生み出され云々」なんてのはもう聞き飽きた感のある前説ではありますが、世界中で実際に生み出され集められたデータを丸ごと全部扱ったことのある人ってこの星にどれくらいいるんでしょうか。多分あんまりいません。トライしたことがある人は沢山居るかもしれませんが、この超級のデータ塊は歴戦のインフォマティシャンをして現世を諦めさせるに足るおぞましさであります。何人かはこのデータに突っ込んで帰らぬ人になったと言われても僕は真顔で信じます。

計算を開始した段階で278,196のrunがSRAに登録されておりました(今見たら322,105に増えていました。心折れた)。サイズに関しては数百MBから数十GBまでまちまちです。基本的には圧縮されたfastqファイルにfastqcを実行するという具合です。こう書くととても簡単に見えます。僕もそう思っておりました。10行くらいのスクリプトでなんとかなるんじゃいかなと思っていました。思っていましたがそうではありませんでした。今動かしているシェルスクリプトは次から次へと書き加えた例外処理のために100行を超えています。

まずファイルをSRAに取りに行きます。転送速度はそこまで問題になるほど遅くはありません(並列で20くらい平行して走らせていますが数Mbps以上は出ています。調子のいい時にはもっと出る模様)。gzip, bzip2形式で圧縮されたデータだと転送にやや時間はかかりますが、展開しなくてもそのままfastqcが食べてくれますし、fastqcの実行速度は数十GBのファイルでも十数分で終わるのでこのパターンだとそんなに問題はないのです。しかしNCBI SRAは昨年の秋くらいに.sraという独自フォーマットによる圧縮を施したデータのみをアーカイブすると発表しておりまして、現在NCBI ftp上にはfastq形式のファイルはなくなっており、.sraもしくは.lite.sraという形式でデータが配布されています(.lite.sraファイルは.fastqに展開することに特化した圧縮形式でそれ以外の情報が削られているためサイズが小さく、こちらを使っております)。そのためSRA toolkitというNCBIから配布されているコマンドラインツールによって展開することになるんですがこれが色々とbuggyなシロモノでありまして、しかも実行が遅い。全体の計算の大部分は.sraフォーマットの展開です。しかしサイズは圧倒的にSRAフォーマットの方が小さく転送時のネットワークへの負担も小さい。トレードオフ…というにはちょっとアレかもしれない。というかdocumentの通り動いてくれないのには流石に閉口します。出るよ!と言ってた出力ファイルが出なかったり。文句を言っても仕方ないのですが。

とにかくそんな調子でクラスタマシンの面倒を見ながらメモリやストレージをチェックしつつコケたプロセスをレスキューしたり、とやっております。色々とエラー出たりすることもありますが一つ一つ対応しているといつまで経っても終わらないので後で大規模救出をすることにして、現在はひたすらエラーを飛ばして回し続けているところです。回しっぱなしで急に止まってもらったりすると非常に困るので、progressをtwitterに自動投稿してジョブの様子を監視しつつ、ちょこちょこ自分で様子を見に行っています。なお、これらは決して仕事中にtwitterをする言い訳ではありませんので誤解なきように各位ご留意頂きますよう宜しくお願い致します。

twitterでのサーバからのレポートは http://twitter.com/#!/search/fastqc2AllSRA で見れるのですが、statを見ると妙にエラーが多いです。これは僕のスクリプトがイケてないのが理由ではありません(堂々と言えるほど完璧で美しいコードでもないのですが)。その多くはSRAに登録されidがあるにも関わらずftpにデータがないものです。主な原因としてヒト個人ゲノムであるためSRAではない、データアクセスにauthorizeが必要なNCBI dbGaPというデータベースにデータが移されているということがあります。これは今のところ僕がこれに登録して全て追いかけて…というのは考えていませんが、認証を得るにはどういった条件を満たさないといけないのかというその辺りちょっと調べてみないといけませんね。あと確かEBIにも同じようなのがあったような => ありました。European Genome-phenome Archive ( http://www.ebi.ac.uk/ega/ )。ちなみにDDBJにはまだない筈です。国内ではこのような個人ヒトゲノム、あるいはヒト生体サンプルの扱いについてしっかりとしたガイドラインが定まっておらず現在関係省庁による委員会が開かれているとのことです。日本人にとっては人種差別等があまり身近ではなく、このテの話に疎い人が多いと個人的には思うところがあるので、国際的なデータ共有といった意味でもこの分野でも日本人の研究者が十分に貢献出来るよう曖昧にせず厳しい基準を作ってもらいたいと思うのですが。

そんな具合でクオリティチェックをしつつ、SRAsで文献と結びついたデータのインターフェースである鎖鋸の拡張のため、サンプルプレップから生データ、生データのクオリティからその後の解析、解析によって得られた図やグラフまでのプロジェクトの一連の流れを、こちらでの計算と論文のテキストマイニングおよびキュレーションによって生成するExtended鎖鋸と、それに対する俯瞰+検索のインターフェースを開発中であります。後者はネタバラシすると面白くないのでアイディアは内緒です。とはいってもそんなに目新しいものでもないのですけども。今はまだそこまで忙しくなくてじっくり実験実装が出来るタイミングだと思うので、思いついたアイディアをちょこちょこ試してみたいなーとは思っていますが、各国の事情やら最新の研究成果を舐め回したりもしなくてはいけませんし、やっぱり時間足りない、というか現代の科学スピード早い。足腰鍛えてしっかりマーク付いておかないと。

Posted: September 14th, 2011
Categories: quotidiano
Tags: , , , ,
Comments: No Comments.

Venerdì, 2 Settembre

5 months have passed since I started to hack SRA and develop some tools, and It’s almost 2 years since I came here for the first time. Actually I feel like I’ve been here longer. DBCLS is the best research center in Japan, I believe so, and I’m totally satisfied with working here. At the same time, I think that I have to work harder, because there’s no one interrupt me (I think it’s so happy thing in Japan, ordinary Japanese workers will be forced to spoil their time with doing useless things). We all know that the environmental stress is one of the worst factors for lives that causes bad effect, but no one seems to care so much for themselves. I care.

The first product that I developed in the most comfortable place for me in the world is the browsing interface of the public NGS data, Kusarinoko. I know this name is little difficult to pronounce for non-Japanese, but it doesn’t matter. The main reason that I made this tool was just to help researchers to use public data. I had to click, click, click and click and click the poor interface of NCBI, just to reach to the data I wanted. I copied the URL of ftp and paste it to the terminal and run lftp command. After downloading, I repeated endless clicking once again to collect the information of the sample preparation. They stored the experimental information (metadata) separated, so finding those kind of data cannot be easy for researchers who don’t get used to that database. Many other problems are around there, so I thought that solve those problems will be a help. Now, I feel that it’s not enough.

Kusarinoko is just a “helper” tool, and it never make something new. If there’s no helper, eager researchers will reach the data they want and use them. Helper tool can reduce the cost and the time of them, but that shouldn’t be the main part of my tool. I have to make something change the mind of researchers, and it will change the world, and that’s truly what I want to do. Things that have already changed the world all never come from the demand of the users. Only the whole new insight, which no one came up with, will produce something like that.

Posted: September 2nd, 2011
Categories: quotidiano
Tags: , ,
Comments: No Comments.

Mercoledì, 20 Luglio

The 9th International Workshop on Advanced Genomicsに参加してきました。

第九回国際ゲノム会議@一橋記念講堂。18人によるtalk sessionと40のposter session, 25の企業による展示。2011年7月12日から14日までの三日間で行われた講演や発表、そのほぼ全てがNGS関連でありました。レポートというか、その中で印象に残ったことをいくつか。

左を向けばMiSeq, 右を覗けばPGM、振り返るとそこにPacBio RSというやうに「次世代」の『次』が既に表舞台に…もういい加減このNext-genとかいうのやめません?と思っていたんですがベンダーの方はキャピラリーシーケンスを第一世代、illumina GAIIxやHiSeq, Roche 454, LifeTech SOLiD等に代表されるこれまで「次世代」と呼ばれていたものを第二世代と呼び、PacBio RSのようなさらにスループットが上がりスピードも上がった単分子シーケンサーを第三世代と呼んでいらっしゃいました。まあもっとも、最早重要なのはどのシーケンサーを使うとかそういったレベルの話ではなくなっているというのがあるので、そのうちこのあたりも瑣末な問題になってしまうのではないかなとは思いますが。言葉の定義なんてどうでもいいのでこのblogでは慣習的にNGSという単語を使わせてもらいますがそれは「なんかごっついシーケンサー」の略ですので、阿呆みたいにデータを出して僕を困らせる全てのシーケンサーを指しております。

NGS(なんかごっついシーケンサー)と言えばその巨大なアウトプット、配列データの解析がネックだということは今までも散々言われてきたのですが意外なことに今回のゲノム会議、解析部分についての発表はあまりありませんでした。それよりも問題とされていたのがSample Preparation。いかにして標的の配列をシーケンサーに読ませるかということが現場で今最も重要な課題であり、qPCRやMicroArrayのように既知の配列をベースにしたものと違って全てを読んでしまうNGSにとってその部分はこれまでのどの技術よりも繊細にならなければいけない部分のように思います。また、サンプル間比較を行い、さらに追試などとなれば人間の手でprepしていたのでは先に試薬の期限が来てしまうというおぞましい話も聞いています。それを解決するためのpreparation automationについての関心が非常に高かったことが印象的でした。

NGSがいかに普及したとはいえ、実際に稼働しているラボは限られており研究目的に使うためには潤沢な資金が必要なことには変わりありません。と、なると研究資金が豊富な領域でNGSがよく使われるようになるというのは自明であり、臨床の現場でのNGSのニーズが高まっているそうです。国内でも同様に、スループットの極端に高いHiSeqやSOLiDではなく、目的とする部分を短時間でシーケンスする、しかしキャプラリーでは…というニーズを満たすような小回りの効くNGSが求められているとのこと。そこで登場したのがMySeqやPGMのような小型で短時間でのシーケンスが可能なもので、さらにAgilent社のSureSelect,illuminaのTruSeqといった試薬によるSample Enrichmentの売れ行きも上々だとか。

NGSで何を何のために読むのかという部分については未だ議論の途中という感があります。それはただゲノムシークエンスするだけなんじゃないの、その発現定量は別にMicroarrayでもいいんじゃないの、NGSだから出来ること、NGSでないと出来ないことは何なのかという点について、しかし医療の現場ではシンプルに「ハイスループットシークエンス」という形でこれからもどんどん使われていくことでしょう。そこでDNA Libraryから無駄を省き、結果と経費をすっきりさせるSample Enrichment。もう少し基礎へシフトすると、様々なサンプルをリシークエンスしてライブラリとして今後の解析に利用する、等々。まァそれはいいんですが、Sample Enrichmentだの何だのとLibrary preparationの段階で手を加えられたものを記述ナシにアーカイブに突っ込まれるとこちらが地獄を見るという想像したくない未来が。

さらにInternational Cancer Genome Consortiumに参画しているラボではmean length 1700baseという超長リードを一日で吐き出すという恐るべきPacBio RSでドラフトを決めてしまい、ValidationにHiSeqや454, Ion Torrentを使うというちょっと考えられない規模のシーケンスパイプラインが出来ていたりして、お金のあるところは何でもアリだな…と恐ろしい思いをしたりしました。しかしそれによって既知のSNPなら3weeksで診断が出来、3monthsで詳細なレポートを出すことが出来るという迅速な判断が必要とされる医療の現場ではこのスピード感が必要だというような話がありました。

方や純粋な分子生物学のツールとしてのNGSですが、Metagenomics, Epigeneticsあたりでも様々なアプローチが試みられており、トップジャーナルに論文がぽこぽこ出るようなラボではNGSはただのツールであり必要であればそれを利用する、というスタンスだなということを感じました。取り敢えず読んでみて沢山データが出たから解析してみたらこうなりました、ではなく、こういうデータをNGSなら出せるからそのためにsampleをこのように処理して、出たデータを当初の狙い通りに解析したら思い通りの結果が得られて、それによってこういう現象が説明出来た、というやうな具合です。まァ至極当然な話なんですけれども。

もう一つ意外だったことがあります。その国際ゲノム会議三日目の次の日に我がDBCLSで開催されたAJACS講習会にkeynote speechとして招かれた単分子シーケンサーHeliscopeによるキャップトラップmRNA定量法であるHeliscopeCAGEの開発(論文)に尽力された理研の伊藤さんからもお話を聞いたのですが、今pre-orderから本格的な納入を目指しているPacBio RSは単分子シーケンサーとはいえ、単分子故のメリットを強調はしておらず、超高速であり1500塩基以上というリードの長さを売りにしているのでした。PCR増幅がないということはPCRによるバイアスがないということで定量に関しては嬉しい技術革新だった筈なのですが、いかんせんPacBio RSはエラーレートが高すぎる。mappingしてみると分かりますが、至る所にエラーが出ます。SNPとかどうやって見つけるんだと思いますがそこはdepthを上げればいいという合衆国人的発想で乗り切るそうです。スケールが違いすぎて僕はPacBioのプレゼンの間笑い転げていました。

また、期待の「第四世代」であるOxford Nanopore Technologiesのプレゼンも拝聴しましたが、どうにもinstrumentに落としこむ部分での課題がクリア出来ていないらしく、まだ市場に出回るには2,3年はかかるのではないかという具合でした。個人的にはこれは実際に市場に出てもどうなのかな…という感は否めませんでした。PacBio RSの精度が上がれば割と殆どの人は満足してしまうのではないか…という風にも思えるのですが。

以上、雑多ですがとりあえずの感想でした。国際ゲノム会議で得た情報はまたこれからぽちぽちまとめて出していければと思います。

Posted: July 20th, 2011
Categories: quotidiano
Tags:
Comments: No Comments.

Lunedì, 27 Giugno

I’m always thinking about why all the scientific data should be open and able to be accessed by everyone, because I am a member of the research center of the database and always claim that all the scientific data should be open. “Ask why to everything, even it’s your own thought”. That’s a right way to start thinking. Why? One reason why data should be open, I think, is to enhance the quality of activity of all the scientist. There’s a word “mottainai” in Japanese, so I’m always trying to find a way that the staff will be used again.

Anyway. One recent problem in life science is how to handle and archive sequence data from Massively Parallel Sequencer, as known as Next Generation Sequencer. The data is quite large and difficult to use, for ordinary researchers who don’t know how. Some researchers can, but the database which is only used by a part of researchers isn’t worth being kept up, right? Stuffs of the SRA, which is the archive for the large sequence data, are busy with maintaining database and don’t have a time to improve for users, so we are working with SRA, to make them better to be used by all the researchers. I know it’s not an easy task, but I believe this one is worth trying.

At first, I made a plan. It’s made from some part, then I started with the first one – to support users to “use” the data. If you came up with using public data in SRA, maybe you will search on NCBI and struggle to find the data you want to use. If you successfully find it, congratulations! You are so lucky, because most people go back to their lab with no result or too many results and can’t get good one for them. Anyway, you found what you want (you’re thinking so), then, next you will search information about the data, metadata. Which sequencer is used, how large the data is, how samples were prepared, more and more.. Here, you will notice that you strayed into a labyrinth.

SRA divided metadata to “submission”, “study”, “experiment”, “sample”, “run”. Information for the data are there, e.g., description for all of the project in “study”, library construction is in “experiment”, number of spots or number of bases are in “run”. I think this complicated structure of SRA is the main reason to make itself difficult to be used. You have to click a lot of links, again and again, to gather metadata, and even if you could get enough information, downloaded data doesn’t always have quality you think enough.

All the information you want when you use the data is in one page. This is the ideal one, I thought, that’s why I developed kusarinoko. Simple interface, not too much but not too less metadata to use the data. And one more thing.. finding the data which has an article.

When I tried to use the data from SRA, some of data downloaded from there didn’t work at all. Because of grant limitation, some data are submitted to SRA even if it’s not so good to be used for their research. All the data available in SRA is not worth being used, this is the point, and it’s difficult to avoid such kind of data. I thought I need standard, to judge the data whether it’s good or not.

Then, I decided to let kusarinoko only find the datasets which has an article. I don’t think all the data with no publication isn’t good to be used, but good data will make a good paper soon. To gather dataset with publication will guarantee a quality of data, and also provide more information about the data. Well, I admit I was surprised at the rate of the data with publication, it was only 400/6000 total, when I only considered the data of Transcriptome Analysis, it fell to 100 (see details here). But soon, we will get enough.

Today, I added new categories of data, which is labeled Epigenetics, Whole Genome Sequencing, etc to the local database of Kusarinoko. This is still just a prototype, and I know I have to improve many points, however, let me say this words again, this is a part of my idea to make SRA better to be used for “users”. I’m going to keep this up and make it better but also I will develop the other tools and integrate them, of course I will include web tools or services already exists. This is just a beginning, but never just playing around, please don’t forget about it.

というわけで鎖鋸アップデート。
Epigenetics, Whole Genome Sequenceなどが検索出来るやうになりました。詳しくはHow to useをご覧ください。

Posted: June 27th, 2011
Categories: quotidiano
Tags: , ,
Comments: No Comments.