『【技術コラム】不正な「//」を見つけ出せ!ドライ解析でがんのコメントアウトを検出する仕組み』

バイオ・がん研究

前回の記事では、がん細胞が「がん抑制遺伝子」をメチル化によって勝手にコメントアウト(//)してしまう、というお話をしました。

では、私たちプログラマー(ドライ系研究者)は、パソコンとデータ解析スキルを使って、30億文字もあるゲノム情報の中から「どこが不正にコメントアウトされているのか」をどうやって見つけ出すのでしょうか?

今回は、その具体的なデバッグ手法(ドライ解析の仕組み)を、エンジニア向けに少し技術寄りで解説します。


■ 1. コメントアウト(メチル化)を可視化する「パッチ当て」

通常のシーケンサー(ゲノムの読み取り装置)でDNAをそのまま解析すると、シトシン(C)がメチル化されていても、されていなくても、すべて同じ「C」として出力されてしまいます。これでは不正なコメントアウト(//)が見えません。

そこでウェット(実験室)側で、「バイサルファイト処理」という特殊なパッチを事前に当ててもらいます。
この処理を行うと、メチル化されていない(コメントアウトされていない)通常の「C」は化学反応で「U(ウラシル)」に変換され、最終的にデータの読み出し時には「T(チミン)」として出力されます。一方で、メチル化されている(コメントアウトされている)「C」はガードされて「C」のまま残ります。

  • 通常コード: C → パッチ適用 → T として読み出される
  • コメントアウトされたコード: C → パッチ適用 → C のまま残り、読み出される

これで準備完了です。データ上に残った「C」こそが、コメントアウトの痕跡になります。


■ 2. 正常コードとの「diff(差分比較)」

パッチを当てたゲノムデータ(Fastqファイルなどの生データ)が出力されたら、ここからがプログラマー(ドライ)のターンです。

まずは、読み取った数億行の断片データ(リード)を、人間の標準的な設計図である「リファレンスゲノム(hg38など)」にマッピング(配置)します。
イメージとしては、巨大なオープンソースプロジェクトのコード(生データ)を、本家のマスターブランチ(リファレンス)のどこに該当する行なのか、高速でインデックスを割り当てていく作業です。

マッピングが終わったら、がん細胞のデータと、正常な細胞のデータで「diff(差分抽出)」を取ります。

bash

# イメージとしてのコマンド(実際は専用の解析ツールを使用)
$ diff normal_cell_genome.txt cancer_cell_genome.txt

コードは注意してご使用ください。

正常細胞のデータでは「T」に置換されている(=コメントアウトされていない)場所が、がん細胞のデータでは「C」のまま残っている(=コメントアウトされている)ポイントを、アルゴリズムによって一網打尽に検出(コール)していくのです。


■ 3. 不正書き換えのログ解析(CpGアイランドの監視)

実は、ゲノム上のどこでも一様にコメントアウトが起きるわけではありません。
遺伝子の発現をコントロールするプロモーター(関数のエントリーポイントにあたる領域)の近くには、「CpGアイランド」と呼ばれる、「C」と「G」が異常に濃縮された文字列のブロックが存在します。

がん細胞の多くは、この関数のエントリーポイント(CpGアイランド)を狙い澄まして集中的にコメントアウトし、関数そのものを実行不能にしています。

ドライ解析では、検出したメチル化の差分データが「どの遺伝子の、どのエントリーポイント(CpGアイランド)に位置しているか」を、アノテーション(注釈)データベースと突合してフィルタリングします。
これにより、「よし、このがん細胞は『p53』という超重要な安全装置関数のエントリーポイントに、不正なコメントアウトを埋め込んでいるな」というログ(原因)を特定できるのです。


■ まとめ:ドライ解析はゲノムの「静的コード解析」

このように、バイオインフォマティクスにおけるメチル化解析は、実行中のメモリを監視する動的デバッグというよりも、「不正に変えられたソースコードの文字(フラグ)を検知する、超大規模な静的コード解析(Lintツール)」にとてもよく似ています。

30億文字のテキストデータからバグの温床を見つけ出す。このプロセスを知ったとき、私は「これなら40年間のエンジニア人生で培った、ログ解析や文字列処理のスキルがそのまま武器になる」と確信しました。

大学院の医科学研究室に入学できたら、こうしたドライ解析のパイプライン(NextflowやSnakemakeなど)をゴリゴリ構築して、まだ見ぬがんのチートコードを暴いてやろうと企んでいます。

(おわり)

タイトルとURLをコピーしました