Scanpyとは何か、なぜ今注目されているのか
シングルセルRNA-seq(scRNA-seq)は、個々の細胞ごとに遺伝子発現を計測できる技術で、がん研究や免疫学など幅広い分野で使われています。ただ、そのデータ解析は工程が多く、手作業で進めようとするとあっという間に数時間が飛んでいく、というのが現場の声です。
そこで活躍するのが、Pythonベースのオープンソースライブラリ「Scanpy」です。データ読み込みから統計処理、可視化まで一気通貫で扱えるため、解析パイプラインを組み立てる手間が大幅に減ります。今回紹介するチュートリアルでは、10x Genomicsが公開している「PBMC-3k」データセット(ヒト末梢血単核細胞・約3,000個)を素材に、実際の解析フローを一から体験できます。
解析パイプラインの全体像
チュートリアルは大きく「品質管理」「前処理・次元削減」「クラスタリングと解釈」という3つのフェーズで構成されています。
品質管理:使えるデータだけを残す
まず最初に行うのは、低品質なセルや意味のない遺伝子を取り除く作業です。遺伝子数が極端に少ないセルは計測ミスの可能性が高く、逆に遺伝子数が多すぎるセルは2つの細胞がくっついた「二重体(doublet)」かもしれません。チュートリアルでは「遺伝子が200個以上検出されたセルのみ残す(min_genes=200)」「3個以上のセルで検出された遺伝子のみ使う(min_cells=3)」「遺伝子数が2,500を超えるセルは除外(n_genes < 2500)」「ミトコンドリア遺伝子の割合が5%を超えるセルは除外(mt < 5%)」という基準でフィルタリングを行います。さらに「Scrublet」というツールを組み合わせることで、二重体の自動検出も可能です。この段階をしっかり行うかどうかが、その後の解析精度を大きく左右します。
正規化と次元削減:データを比較しやすい形に整える
品質管理を終えたら、セルごとのカウント数のばらつきを補正する「正規化」を行います。target_sum=1e4という設定で各セルの総カウント数をそろえたあと、log変換を施します。これにより、異なるセル間での発現量の比較がしやすくなります。
次に「高変動遺伝子(Highly Variable Genes)」を抽出します。すべての遺伝子を使うと計算コストが高くなるため、セル間でばらつきの大きい遺伝子だけに絞り込むのが一般的です。その後、PCA(主成分分析)で次元を圧縮し、UMAPやt-SNEで2次元の散布図として可視化します。この可視化ステップは、細胞の集まり(クラスター)を直感的に把握するために欠かせません。
クラスタリングと細胞周期の影響を取り除く
可視化と並行して、似た遺伝子発現プロファイルを持つセルをグループ化する「クラスタリング」を行います。各クラスターがどの細胞種に対応するかを推定するのが「アノテーション」です。また、細胞周期の段階(G1期、S期、G2/M期など)の違いが解析結果に影響することがあるため、細胞周期スコアを算出してその効果をデータからレグレッション(回帰)で取り除くステップも含まれています。最後にスケーリングを行い、遺伝子ごとの発現量の分散を統一します。
フリーランス研究者・バイオインフォへの影響
このチュートリアルが特に役立つのは、フリーランスや副業としてバイオインフォマティクス解析を受託しているエンジニア・研究者です。scRNA-seqの解析依頼は専門性が高い分、単価も比較的高く設定されやすいジャンルです。しかし一方で、クライアントごとにデータの品質や形式が異なるため、毎回ゼロからコードを書き直す手間が発生しがちです。
Scanpyでパイプラインをテンプレート化しておけば、新しい案件が来たときに「パラメータを調整してから実行する」という形で対応できます。たとえば、品質管理のしきい値(ミトコンドリア遺伝子の割合や遺伝子数の上限)をコードの先頭でまとめて変数定義しておけば、クライアントのデータ特性に応じて素早く調整できます。こうした再利用可能なコード資産を持っておくことは、受託案件の回転率を上げるうえで地味ながら効果的です。
一方で、このツールを使いこなすにはPythonの基礎知識と、scRNA-seqの生物学的な背景理解が必要です。「Pythonはある程度書ける」「RNAの話は聞いたことがある」程度の知識でも、チュートリアルを通じてキャッチアップできる設計になっていますが、完全に初めての方には少し学習コストがかかるかもしれません。急いで案件対応が必要な状況よりは、次の受注に備えた準備期間に学ぶのがおすすめです。
まとめ
Scanpyのチュートリアルは、scRNA-seq解析の基本的な流れをひととおり体験できる内容です。バイオインフォ系の受託業務をしている方や、これから学びたい方はまず公式チュートリアルを一度動かしてみることをおすすめします。Pythonに慣れている方なら、半日〜1日程度で一通り試せるはずです。
参考リンク:Scanpy公式チュートリアル(PBMC-3k)


コメント