生命科学論文を書くための文献スタイル

生命科学分野では,(Hoge et al., 2010)とかの引用スタイルが多い。今まで僕は,出版社が投稿用に用意してくれている tex のスタイルファイルを使ってきたからあんまり困らなかったのだけれど,今投稿準備をしているジャーナルは,tex のスタイルファイルを用意してくれていないので,この引用スタイルを実現するにはどうやったら良いのかしら?と困ってしまった。

そこで,ざーっと調べてみると,natbib.sty というスタイルファイルが使えそう。
英語の解説ページ:Reference sheet for natbib usage
日本語の解説ページ:http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/natbib.html
CTAN:http://tug.ctan.org/tex-archive/macros/latex/contrib/natbib/

\citet{Hoge-10} -> Hoge et al. (2010)
\citep{Hoge-10} -> (Hoge et al. 2010)

という感じで,やってくれる。

あとは,bst ファイルを選べばオーケー。
http://amath.colorado.edu/documentation/LaTeX/reference/faq/bibstyles.pdf
http://amath.colorado.edu/documentation/LaTeX/reference/faq/bibstyles.html#styles

ちょっと違うんだけど,とりあえず CELL スタイルで書くことにした。

GnuBIO 続報

すっかり GnuBIO に魅せられてしまったワタクシは,GnuBIO の最新情報を調べてみることにした。

Starting in June, it plans to place alpha instruments in the labs of a yet-to-be-determined number of early-access customers and to use their feedback to build a commercial instrument. The goal is to ship beta systems by the end of the year and commercial systems in the first quarter of 2012.

今年の6月からα版を early-access customer に,今年末にβ版を,そして来年(2012年)の1st Qには commercial system をリリースする予定らしい。まぁドラクエの発売日よろしく多少は伸びるにしても,この「$30ゲノム」革命的シーケンサーが市場に出るまであと1年程度。ホントに進歩がお早いことで。
ところで,本体価格は $50,000 を上回らないということだが,果たして日本で買う場合も,この程度の価格で購入できるのだろうか。Ion Torrent PGM のように,日本で買う場合はなぜか販売価格が高くなるとかいうのは勘弁して欲しい。 (こいつをできるだけ早く僕のいるラボに導入したい。どうやったら,ボスを説得できるのだろうか。)

商品版のシステムに関して,その仕様は公式発表されていない。しかし,少しだけ語られていた。

Boyce said that it will be a "fully integrated system" that will be able to sequence panels of genes ― on the order of 50 or 100. Users will load genomic DNA, and the target selection will occur online and feed directly into the sequencing run. Several samples can be loaded at the same time; the workflow will be "an order of magnitude" faster than with other sequencing systems; and the data analysis will take place in real time.

とても,とても,とてもオドロキなのが,target selection のシステムまで入っていること。これは,凄すぎるぜ。だって,本体価格は,SureSelect の試薬代よりも安いんですもの。(お,ボスを説得するストーリーができてきたぞ。)

どうやって,target selection をしているのだろうか?その情報は,残念ながら,色んなキーワードでググっても,見つからない。。そこで,GnuBIO のシーケンス原理を調べてみた。

GnuBio's sequencing assay consists of probe hybridization, polymerase extension, and probe displacement. Target DNA up to a kilobase in length that carries a fluorescent label at one end is injected into picoliter-sized emulsion droplets. Each droplet contains a hexamer from a universal oligonucleotide library, a fluorescent dye that identifies the hexamer, and a probe with a quencher that binds to the target and quenches the target label. The hexamer library contains all possible base combinations ― about 4,600 in all, including base repeats.

A polymerase is then added to the drop via an online picoinjector, and if the hexamer has hybridized to the target, the polymerase will extend it and displace the quenching probe. This results in a fluorescent signal that is read out, along with the hexamer-identifying label, as the droplets flow past "low-cost optics." The process is then repeated for each possible hexamer and the sequence reconstructed.

GnuBIO のシーケンスアッセイは,プローブハイブリダイゼーション,ポリメラーゼ伸長,プローブの置換,という3ステップで構成される。末端を蛍光標識された最大 1kb のターゲットDNAは,ピコリットルサイズのエマルジョン滴の中にインジェクションされる。それぞれのエマルジョン滴は,ひとつの6塩基オリゴヌクレオチド,6塩基オリゴヌクレオチドを識別する蛍光色素,そして失活剤が入っている。6塩基オリゴヌクレオチドは,全ての塩基の並びの組み合わせ=4,600種類が用意されている。

ターゲットDNAのインジェクション後,さらにエマルジョン滴の中にポリメラーゼが加えられると,6塩基オリゴヌクレオチドがターゲットとハイブリダイズした場合は,ポリメラーゼはターゲット(テンプレート)DNAを伸長し,失活されたプローブへと置き換える。このときに蛍光シグナルが生じ,それを検出することで,6塩基分のシーケンスを読む。蛍光の検出は,エマルジョン滴が低価格オプティクスを通過するときに行われる。この操作を4,600種類の6塩基オリゴヌクレオチドについて繰り返し行うことで,ターゲットDNAをシーケンスすることができる。

うーん。やっぱり,target selection をどうやるのかが分からない。太字の部分を読む限り,シーケンスアッセイの前段階で,target DNA を濃縮するのだろうか。それとも,シーケンスアッセイの過程で,target DNA を濃縮してゆくことができるのだろうか。調べても分からなかったので,続報を待つことにする。

Genome-wide analysis reveals novel molecular features of mouse recombination hotspots | Smagulova et al. Nature 2011 | ChIP-Seq を使って組換えホットスポットを高解像度(200-nucleotide precision)にマッピング

ChIP-Seq で,こんなこともできるのかぁ。と,改めて,そのすごさを実感した論文。

Meiotic recombination is initiated by the introduction of DNA double-stranded breaks (DSBs) by the protein SPO11, followed by resection of the ends to produce long, single-stranded overhangs. Proteins RAD51 and DMC1 form nucleoprotein filaments at the ends of the breaks and search for a homologous chromosome that is used for repair. We used anti-DMC1 antibodies to localize recombination initiation sites in the male mouse genome by chromatin immunoprecipitation followed by high-throughput sequencing (ChIP-Seq).

組換え時に生じる二重鎖切断末端には,RAD51 と DMC1 がくっついている。だから,DMC1 をターゲットにする抗体を使って ChIP-Seq したら,組換えサイトをマッピングできるでしょう。とても単純で,お世辞にもエッジが効いているとは言えないけど,それでも組換えサイトをマッピングできるのだから,パワフルだと思う。

この論文には,さすが Nature に載るだけあって,色々なことが分かったと書いてある。しかし,そこら辺は門外漢の僕にはイマイチ面白さが分からないので,紹介しない。言いたかったことは,ただの1点。「ChIP-Seq で組換えサイトが分かる」。これだけなのだ。

GnuBIO(革命的第2.5世代シーケンサー)

GnuBIO は,ちょうど第2世代(超並列)シーケンサーと第3世代(一分子超並列)シーケンサーの中間に位置しているように思う。だから,僕は,勝手に,GnuBIOを第2.5世代シーケンサーと呼ぶことにした。

GnuBIOとは?

The GnuBIO system is based on emulsion and microfluidic technology developed at Harvard University.

エマルジョンPCRとマイクロ流体デバイス技術に基づく,とある。
因に,シーケンス原理は,SOLiD と同じく sequencing by ligation(連結によるシーケンス法)。
いずれも2011年現在,決して新しい技術ではない。
GnuBIOの肝は,マイクロ流体デバイスを用いることで,今までよりも遥かに小さいエマルジョン内の反応をコントロールできるようにしたことにあるように思う。さらに,マイクロ流体デバイスを用いることは,2つのとても嬉しい効果をもたらすのだ。

1. まず,必要な試薬の量が圧倒的に減らせること。これは,とんでもないシーケンスコストの低下をもたらしてくれるのだ。

it will cost about $30 in reagents and take approximately 10 hours to sequence a human genome at 30-fold coverage. One hundred genes could be sequenced at 30-fold coverage within 15 seconds at a cost of 2 cents.

「ヒトゲノムを x30 カバレッジに読むのを,10時間,$30 でやれるようになりますよー」( ゚ Д ゚!)・・・・マヂカッァァァ

One hundred genes could be sequenced at 30-fold coverage within 15 seconds at a cost of 2 cents.

「100個の遺伝子を x30 カバレッジで読むのを,15秒で,たったの2セントでやれるようになりますよー」(;・`ω・)ナ、ナンダッテ-!!(・ω´・(・ω´・;)

とんでもないコストですよね。$1000ドルゲノム?何それー、高くない?みたいなノリですよ。

2. フローセルなどの基盤を必要としない。これは,地味に聴こえるかもしれないが,僕は,とても重要な特徴だと思うのだ。なぜならば,「ラン」とか「レーン」とかの概念がなくなるから。「今日の午前中はエマルジョン◯◯個分シーケンスしますよー。午後には,予定よりもちょっと増やして,△△個分のエマルジョンシーケンスしちゃおうかしら」なんてノリでシーケンサーを回せるようになるんじゃないかと予想する。

"It's totally scalable; it's not something where you have to run huge amounts of sample to take advantage of the speed and the cost. You can run small amounts and large amounts," he said.

この「scalable」という単語は,塩基あたりのシーケンス単価が,シーケンスのスループットに依存しない,という意味だ。(バルク的にシーケンスしたらおトクとかゆうことはない,ということ)
これが,基盤を必要としないシーケンス(流体シーケンス)のすごさであるように,思う。
しかも,エマルジョン自体にバーコード認識させることができるため,シーケンスの段階でサンプルをプールしてしまっても,どの個体由来かを識別することができる。
リード長は,現在 100-200bp で,将来的には 1,000 bpあたりに落ち着く見込のようだ。
シーケンサーの価格は,$50,000 あたりという。

・シーケンスの安さ,そしてスケーラビリティ
・シーケンスのスループット
・運営のしやすさ,サンプル調整の簡単さ
いずれも,文章を読んでいる段階では,文句がつけられない。
なんて魅力的なシーケンサーなんだ!!!

Tumour evolution inferred by single-cell sequencing(Navin et al., Nature 2011)

1細胞シーケシングを用いて,がん組織の異質性を解明することを目的とした研究でした。

(概要)

腫瘍組織を microdissection したのち,flow-sorting で1細胞を抽出しています。この研究では2つの腫瘍組織を解析していますが,各組織につき,100細胞の解析をしています。細胞の gDNA を全ゲノム増幅(WGA; whole genome amplification)によって増幅し,GenomeAnalyzerIIx でシーケシング(1細胞あたり1レーン)しています。

1細胞あたり,GenomeAnalyzerIIx1レーンのシーケシングしかしていないことが肝です。そのため,1細胞あたりのリード量は,ゲノムの6%をカバーしているにすぎません。塩基レベルの異質性を解明することはもちろん不可能で,1細胞ごとのコピー数多型の異質性を解明することを試みています。

腫瘍組織における「集団構造」を解明することが,この論文のメインな結果です。この論文では,コピー数多型パターンに基づく系統樹を描くことによって,集団構造を明らかにしています。

Our findings are consistent with previous findings [17] using bulk DNA, which indicate that copy number profiles in primary tumours are highly similar to the metastases. Thus, the metastatic cells emerge from a main advanced expansion, and not from an earlier intermediate or a completely different subpopulation. This is consistent with recent deep-sequencing studies of primary–metastatic pairs, all indicating that metastatic cells arise late in tumour development [18,19].

これは,NGS登場後に見つかってきた,がんゲノム進化に対する新しい見方です。"metastatic cells arise late in tumour development" は,「転移腫瘍で新たに獲得されたゲノム変異は少なく,転移腫瘍で必要となるゲノム変異の大半は転移以前に獲得されたものである」という発見を指し示しています。


(がんゲノム進化のモデル)

1細胞シーケシングによって解明された集団構造によれば,がん細胞集団は3〜4の分集団から構成されており,各分集団は全く異なるコピー数多型パターンを示していました。このことから,ゲノムへ変異が蓄積され異なるコピー数多型パターンを示すようになるスピードよりも,クローン性増殖のスピードが早く急速に増殖することのできる細胞が,各分集団を形成した,という「punctuated clonal evolution」というがんゲノム進化のモデルを提案しています。

bowtie: Warning: Exhausted best-first chunk memory for read ...

$ bowtie --best --strata -m 1 --sam --minins 0 --maxins 500 --threads 16 --seedmms 1

で bowtie を実行したところ,

$ Warning: Exhausted best-first chunk memory for read SLABR11.189826 HWUSI-EAS1730:2:1:19076:12775 PF=1 length=60/1 (patid 164664); skipping read
$ Warning: Exhausted best-first chunk memory for read SLABR11.189853 HWUSI-EAS1730:2:1:2362:12787 PF=1 length=60/1 (patid 164687); skipping read
$ ...

という山のような warning がでてきた。

$ bowtie --best --strata -m 1 --sam --minins 0 --maxins 500 --threads 16 --seedmms 1 --chunkmbs 1024

    • chunkmbs を指定してあげることで解決。

BamTools: 高カバレッジデータのハンドリングが遅い訳

BamTools は,coverage の計算などを行うときに,PileupEngine クラスを利用している。
PileupEngine クラスは,src/utils/bamtools_pileup_engine.cpp に実装されている。

BamTools の PileupEngine を利用する機能は,いずれも高カバレッジデータに非常に弱い。具体的には,カバレッジの2乗に比例する計算時間が掛かってしまっている。
その原因となるコードがこちら。

void PileupEngine::PileupEnginePrivate::ClearOldData(void) {

// remove any data that ends before CurrentPosition
size_t i = 0;
while ( i < CurrentAlignments.size() ) {

// remove alignment if it ends before CurrentPosition
const int endPosition = CurrentAlignments[i].GetEndPosition();
if ( endPosition < CurrentPosition )
CurrentAlignments.erase(CurrentAlignments.begin() + i);
else
++i;
}
}

CurrentPosition 変数にはゲノム位置が格納されており,ゲノム位置の最初(5'末端)から最後(3'末端)までを移動する。

const int endPosition = CurrentAlignments[i].GetEndPosition();
if ( endPosition < CurrentPosition )
CurrentAlignments.erase(CurrentAlignments.begin() + i);

これによって,現在のゲノム位置 CurrentPosition には Pileup されなくなったリードデータをメモリ上から解放している。リードデータの全てをメモリに格納するのではなく,CurrentPosition に Pileup されるリードデータだけをメモリに格納している。こうすることで,使用メモリ量は次世代のリード数に対して一定で,ゲノムカバレッジに対して比例する計算オーダーになる。

ここで,次のコードに注目して欲しい。

CurrentAlignments.erase(CurrentAlignments.begin() + i);

CurrentAlignments は,vector 型の変数である。erase 1 回の計算に,CurrentAlignments.size() に比例する計算時間が必要である。CurrentAlignments.size() を言い換えると,ゲノムカバレッジである。erase を呼び出す回数も,CurrentAlignments.size() すなわちゲノムカバレッジに比例する。結果,BamTools の PileupEngine はゲノムカバレッジの2乗の計算オーダーになってしまっている。これが,BamTools の一部の機能が,高カバレッジデータのハンドリングに適さない原因だ。

この問題となっている関数を,次のように書き換えると,高カバレッジデータでも高速な計算ができるようになる。

void PileupEngine::PileupEnginePrivate::ClearOldData(void) {

vector TmpCurrentAlignments = CurrentAlignments;
CurrentAlignments.clear();
for( size_t i=0 ; i= CurrentPosition ){
CurrentAlignments.push_back( TmpCurrentAlignments[i] );
}
}
}

erase を使わないで,ゲノムカバレッジに比例する実装になっている点がポイントだ。