ユニット 2 / 11

Python を使用した生物学的データ分析の基礎

利益:

  • 生物学的データを読み取ってクリーンアップするコードを人工知能に記述し、それ自体を Pandas、NumPy、Biopython で実行することにより、確定的な出力を信頼する機能
  • 結果がわかっている小さな状況でコードをテストし、アサートテストを行うことで、「間違ったコードがエラーなしで動作する」というリスクを回避できます。
  • バージョン固定、ランダムシード、および生データ保存の習慣により、再現可能な分析を確立する機能

現代生物学の言語はますます Python になりつつあります。ラボ ノートブックでの手動処理は、1 秒あたり数万行のテーブルを処理するコード行に変わります。この単元では、生物学的データを読み取り、クリーニングし、要約する Python コードを出力するコプログラマーとして AI を使用する方法を学びます。重要なことは、人工知能にコードを記述し、自分で実行して結果を検証することです。これは、モデルの言葉による予測ではなく、コードの決定的な (実行ごとに同じ結果が得られる) 出力に依存しているためです。

この単元でコーディングする方法を知る必要はありません。意図を正しく表現し、アウトプットする方法を学びます。

なぜ Python なのか、どのライブラリなのか?

生物学で最もよく使用される Python ライブラリ (ライブラリ: 既製の関数のパッケージ) は次のとおりです。

  • pandas: 表形式のデータ (CSV、Excel) を読み取り、行と列の操作を実行します。遺伝子発現テーブルをフィルタリング、グループ化、マージするための基本ツール。
  • NumPy: 数値配列および行列演算用。パンダの下を走ります。
  • Biopython: DNA/RNA/タンパク質配列の操作、FASTA ファイルの読み取り、翻訳 (DNA からタンパク質への翻訳)。
  • matplotlib / seaborn: プロットのプロット用。
  • SciPy/statsmodels: 統計テスト用。

人工知能はこれらのライブラリをよく知っています。あなたの仕事は、どのライブラリを使って何をしたいのかを明確にし、生成されたコードを実行して検証することです。

ヒント: モデルは、存在しないライブラリ関数を「でっち上げる」(幻覚を起こす) 場合があります。コードでエラーが発生しても、パニックに陥る必要はありません。通常は、エラーをそのままモデルに貼り付けると修正されます。それでも動作しない場合は、公式ドキュメントを確認してください。

ステップバイステップ: カウントテーブルをクリアする

counts.csv があるとします。行は遺伝子、列はサンプル、セルは生の読み取り数です。一般的な最初のステップ:

  1. 読み込み中: pandas を使用してテーブルを読み取ります。
  2. 検出: サイズ (遺伝子の数、サンプルの数)、欠損値、重複した遺伝子名を確認します。
  3. フィルタリング: どのサンプルでも読み取られなかった遺伝子を破棄します (合計カウント 0)。これらはノイズです。
  4. 要約: サンプルごとのリードの総数 (ライブラリ サイズ) を計算します。サンプルが低すぎると失敗した可能性があります。

次のように、このワークフローを人工知能にアウトソーシングできます。

役割: あなたは、バイオインフォマティクスに焦点を当てた Python アシスタントです。タスク: pandas を使用して counts.csv ファイルを読み取ります。データ: 行は遺伝子 (index=gene_id)、列は 24 サンプル、値は整数の raw カウントです。私が望むのは: (1) サイズを出力する、(2) 読み取られなかった遺伝子を破棄する、(3) サンプルごとの合計読み取り数を棒グラフで表示する。各行に短いトルコ語のコメントを追加します。動作するコードを与えるだけです。

モデルコードを生成します。あなたがそれを実行します。出力に 24 列と適切な数の遺伝子 (例: 15,000 ~ 25,000) が表示されていれば、順調に進んでいます。 1 つのサンプルに他のサンプルの 10 分の 1 の測定値が含まれている場合は、そのサンプルを書き留めます。

ミニケース3個

ケース 1 — 欠損値の罠: 生徒は 30 サンプルのメタボロミクス テーブルで平均値を計算しました。結果は不合理なものでした。問題: 欠落しているセルに NaN (数値ではない) の代わりにテキスト「ND」が入力されていたため、列がテキストとして読み取られました。人工知能に「ND値をNaNにして列を数値に変換してください」と言わせたら直りました。教訓: 常に最初に生データを調査してください。

ケース 2 — マージ エラー: 研究者が 2 つのテーブル (発現と遺伝子の注釈) をマージしましたが、2,000 個の遺伝子が失われました。原因: 1 つのテーブルでは ID が「ENSG00000141510」で、もう 1 つのテーブルでは ID が「ENSG00000141510.14」(バージョン番号付き) でした。モデルは、バージョン番号をクリアするコードを 1 行書きました。損失は​​ 40 個の遺伝子に減少しました。教訓: ID 形式をマージする前に調整してください。

ケース 3 — サイレント データ損失: 技術者は、フィルタリング後に遺伝子の数が 22,000 から 8,000 に減少したことに気づきませんでした。しきい値が正しく設定されていませんでした (各サンプルの測定値が 10 を超えるのではなく、合計が 10 を超えた)。既知の遺伝子(ハウスキーピング遺伝子:GAPDHなど、あらゆる細胞で常に発現している遺伝子)が最終的に欠落していた。教訓: 「必須」遺伝子ポストフィルターをチェックしてください。

既知の状況でテストする (最も重要な習慣)

人工知能によって書かれたコードの正確さを信頼する最も確実な方法は、結果が事前にわかっている小さなサンプルを使ってテストすることです。たとえば、5 行のダミー テーブルを指定します。合計を手動で計算します。コードが同じ結果を与えるかどうかを確認してください。

作成したフィルタリング コードにテストを追加します。5 つの遺伝子、3 つのサンプルで構成される小さなデータフレームを生成し、意図的に 2 つの遺伝子をゼロに設定し、フィルターがこれら 2 つの遺伝子を正確に破棄することをアサートで検証します。テストを実行可能にします。

Assert は、コードが予期された動作から逸脱している場合に警告します。これは「沈黙の誤った結論」のリスクに対する最強の盾です。

弱いプロンプト / 強いプロンプト

弱者: 「カルテをきれいにしてください。」

強力: 「counts.csv: 行の遺伝子 (gene_id インデックス)、24 列のサンプル、値は生の整数。次の操作を実行します。欠損値をレポートし、すべてのサンプルで合計が 0 になる遺伝子を破棄し、各サンプルの合計リードを出力し、フィルター前後の遺伝子数を比較します。機能するコメント付きの Python コードを与えるだけです。」

違い: 強力なプロンプトでは、データ構造、ステップ、検証出力 (比較前/比較後) が指定されます。モデルは推測する必要はありません。

比較表:AIか手動か?

トランザクション

人工知能に印刷する

自分で確認してください

CSV読み込み、フォーマット変換

はい

サイズや種類をチェック

フィルタリング、グループ化

はい

前後のカウント

統計テスト

はい (コード)

仮説を確認してテストする

「あと何行残ってますか?」

いいえ (コードをカウントさせます)

出力を読む

結果の生物学的意味

部分的に

専門家のコメントが必要です

よくある間違い

  • モデルが生成する数値に依存する: 「平均式は何ですか?」モデルではなくコードに対して質問してください。
  • データ型をチェックしない: テキストのように読み取られる数値の列が、誤って間違った結果を返します。
  • ポストフィルターをチェックしない: 期待される遺伝子がまだ存在していることを確認します。
  • ランダム性のシードを忘れる: ランダム操作を含むコードでシードが固定されていない場合、結果は毎回変わります。再現性が損なわれます。
  • コードを読まずに実行する: 少なくともコメントを読んでロジックに従います。
注意: コードが機能するからといって、そのコードが正しいというわけではありません。 「エラーなしで動作する間違ったコード」は、生物学において最も危険な状況です。間違った結果が黙って生成されるからです。既知の条件でテストすることで、このリスクを排除できます。

再現性: コードの科学的価値

生物学では、結果の科学的価値は、他の人 (そして将来の自分) がそれを再現できるかどうかに依存します。手動テーブル操作は記録されません。どの細胞がどのように変化するかは誰にも分かりません。コードは各ステップを文書化します。したがって、人工知能を使用して作成した分析は、1 回限りのボックスとしてではなく、保存され共有される記録として考えてください。

再現可能な分析には 3 つの習慣が重要です。 1 つ目はバージョンの固定です。使用しているライブラリのバージョンに注意してください (例: pandas 2.2)。バージョンが異なると結果も異なる場合があります。 2 つ目はランダム性シードです。ランダム操作を含むすべてのコードのシードを修正して、実行のたびに結果が同じになるようにします。 3 番目に、生データは決して変更しないでください。元のファイルには触れず、ロールバックできるようにすべての変換をコード内で実行します。

作成した解析コードの先頭に使用したライブラリのバージョンを出力する行を追加し、ランダム処理がある場合はsanp.random.seed(42)でシードを修正します。生の CSV は一切変更せず、すべての出力を別のファイルに保存してください。

Jupyter Notebook: 分析と物語の組み合わせ

バイオインフォマティクスで最もよく使われる環境は、Jupyter ノートブック (ノートブック: コード、出力、説明を同じ文書内で組み合わせるツール) です。 AI がノートブックのセルに従ってコードを生成し、各ステップが Markdown の説明で区切られているため、あなたと同僚の両方が分析を理解しやすくなります。これにより、分析は「ブラックボックス」ではなく、読みやすい実験ノートになります。

生物学的ファイル形式の認識

Python で生物学的データを処理する場合、特定のファイル形式が常に発生します。モデルがファイルを正しく読み取るには、その前にファイルの形式を認識する必要があります。形式を間違えると、「エラーなしで動作する間違ったコード」という罠にはまってしまいます。最も一般的なものは次のとおりです。

フォーマット

内容

適切な車両

CSV/TSV

テーブルデータ(式、測定)

パンダ

ファスタ (.fa/.fasta)

DNA/RNA/タンパク質配列

バイオパイソン

FASTQ (.fq)

生のシーケンスリード + 品質

Biopython、カスタム ツール

VCF

バリアント(突然変異)リスト

パンダ/パイサム

GFF/GTF

ゲノムアノテーション(遺伝子位置)

パンダ、gffutils

認識できないフォーマットがある場合は、まずモデルにいくつかのサンプル行を表示してフォーマットを識別させ、次に読み取りコードを要求します。

以下にファイルの最初の 5 行を示します。これはどのようなバイオファイル形式ですか?列/フィールドの意味を説明し、Python でこのファイルを安全に読み取る (形式チェックする) コードを示します。最初の 5 行: [貼り付け]

このアプローチにより、そもそも形式の仮定から生じるサイレントエラーが防止されます。

要約すると

Python は生物学的データの主要な処理言語です。 pandas、NumPy、Biopython が基本ツールです。 AI はこのコードをすばやく作成しますが、それを実行して検証するのはユーザーです。最も重要な習慣は、結果がわかっている小さなサンプルでコードをテストし、assert を使用してコードに期待値を埋め込むことです。口頭での推測ではなく、実行するコードの決定的な出力に依存してください。

アプリケーションタスク

AI に手持ちの CSV テーブル (またはサンプル テーブル) を読み込ませ、そのサイズを出力し、空の遺伝子をフィルターで除外するコードを出力します。次に、5 行のダミー データを含むモデルからアサート テストを追加します。コードを実行します。フィルターの前後の遺伝子の数に注目してください。ハウスキーピング遺伝子 (GAPDH/ACTB など) が結果にまだ存在していることを確認してください。

チェックリスト

  • [ ] 処理する前にデータのサイズと種類を確認しました。
  • [ ] 欠損値を明示的に処理しました。
  • [ ] フィルター前後の行数を比較してみました。
  • [ ] 既知の条件を使用したアサート テストを追加しました。
  • [ ] カウント/計算はモデルではなくコードに任せました。
  • [ ] コードのコメントを読み、ロジックに従いました。