【バイオインフォ実習】第1回:Biopythonの導入とSeqオブジェクトの基本
本シリーズでは、バイオインフォマティクスの基礎知識をベースに、Pythonの専門ライブラリである Biopython を用いた実装スキルの習得を目指します。
単なるツールの実行にとどまらず、ライブラリの仕様を理解し、自作の解析パイプラインやデータ処理に応用できる技術にしていく「実習形式」の連載です。
- 対象読者:Pythonの基本操作は習得済みの方、バイオインフォマティクスの基礎知識をコードに落とし込みたい方、DNA解析の実装力を強化したいITエンジニア
1. 環境構築(Mac + Miniconda)
解析環境をクリーンに保つため、Minicondaを用いて専用の仮想環境を構築します。Pythonのバージョンは 3.13.5 を指定します。
# 仮想環境の作成(Python 3.13.5を指定)
conda create -n bio-env python=3.13.5 -y
conda activate bio-env
# Biopythonのインストール(conda-forgeを使用)
conda install -c conda-forge biopython -y
conda create -n bio-env python=3.13.5 -y
conda activate bio-env
# Biopythonのインストール(conda-forgeを使用)
conda install -c conda-forge biopython -y
Note: なぜ conda-forge なのか?
conda-forge はコミュニティベースのリポジトリで、公式(defaults)よりもバイオ系のライブラリの更新が早く、依存関係のトラブルも少ないのが特徴です。バイオインフォマティクス分野では標準的に利用されているため、こちらのチャンネルを指定するのが無難です。
2. インストール確認と配列操作の基本
まずはBiopythonのバージョンを確認し、中心的な存在である Seq オブジェクトを扱います。標準の文字列型(str)とは異なり、生物学的な操作メソッドが備わっています。
import Bio
from Bio.Seq import Seq
# バージョン確認
print(f"Biopython Version: {Bio.__version__}")
# DNA配列の定義
dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGT")
print(f"Sequence : {dna}")
# ① 相補鎖(Complement):A-T, G-Cの置換
print(f"Complement: {dna.complement()}")
# ② 逆相補鎖(Reverse Complement):配列を反転させてから置換
print(f"Rev-Comp : {dna.reverse_complement()}")
from Bio.Seq import Seq
# バージョン確認
print(f"Biopython Version: {Bio.__version__}")
# DNA配列の定義
dna = Seq("ATGGCCATTGTAATGGGCCGCTGAAAGGGT")
print(f"Sequence : {dna}")
# ① 相補鎖(Complement):A-T, G-Cの置換
print(f"Complement: {dna.complement()}")
# ② 逆相補鎖(Reverse Complement):配列を反転させてから置換
print(f"Rev-Comp : {dna.reverse_complement()}")
3. 実行結果の確認
上記コードを実行すると、以下のような出力が得られます。逆相補鎖(Rev-Comp)が、DNAの方向性(5'→3')を考慮した正しい「裏側の鎖」になっていることに注目してください。
Biopython Version: 1.87
Sequence : ATGGCCATTGTAATGGGCCGCTGAAAGGGT
Complement: TACCGGTAACATTACCCGGCGACTTTCCCA
Rev-Comp : ACCCTTTCAGCGGCCCATTACAATGGCCAT
Sequence : ATGGCCATTGTAATGGGCCGCTGAAAGGGT
Complement: TACCGGTAACATTACCCGGCGACTTTCCCA
Rev-Comp : ACCCTTTCAGCGGCCCATTACAATGGCCAT
4. ITエンジニア的チェックポイント
- データ構造の利点: 自前で置換ロジック(replace等)を組むのではなく、
Seqオブジェクトのメソッドを用いることで、計算ミスを防ぎつつ可読性の高いコードを維持できます。 - イミュータブル(不変):
Seqは Python のstrと同様にイミュータブルです。解析過程での意図しないデータ書き換えを防止する設計になっています。
まずは自分のMacで「DNAがコードとして動く」環境が整いました。次回は、生物学の基本原則である「セントラルドグマ(転写・翻訳)」の実装を扱います。
PR