付録A: 環境構築ガイド
本書のコード例を実行するための環境構築手順を説明します。
A.0 コードブロックの扱い
本書のコードブロックは、実行可否を誤認しないよう、直前に次のラベルを付けます。
- ✅ 実行検証済み: CI またはローカルで検証した再現手順。検証環境、入力、期待出力を併記します。
- 🧪 概念例: 考え方を示す説明用の例。実行には入力データ、依存ツール、認証情報、設定ファイル等の補完が必要な場合があります。
- 🔁 疑似コード: 処理順序や設計を示す非実行コード。実装時は境界条件、エラー処理、性能を別途確認します。
- ⚠️ 環境依存: OS、GPU、クラウド権限、ネットワーク、API制限、契約条件などに依存する手順。公式ドキュメントと実行環境を確認してから実行します。
- 📎 抜粋: 設定ファイルや出力の一部を説明のために抜き出したもの。
A.1 必要な環境
推奨環境仕様:
- OS: Ubuntu 22.04 LTS以降 または macOS 12以降
- Python: 3.10以上(3.11推奨)
- メモリ: 16GB以上(推奨32GB)
- ストレージ: 100GB以上の空き容量
- GPU: CUDA対応GPU(深層学習用、オプション。CUDAバージョンは使用するtorchの公式対応表に従う)
A.2 Dockerを使用した環境構築
本リポジトリには Dockerfile と requirements.lock を同梱しています。CIでも docker build と最小実行を検証しています。
✅ 実行検証済み(CIで検証)
docker build -t bioinfo-guide .
docker run --rm bioinfo-guide
注記: 上記は
examples/minidata/run_minidata.pyを実行する最小構成です。章内の解析を再現するには、章ごとの追加ツール/パッケージが必要になる場合があります。
A.3 依存関係管理
再現性の方針(推奨):
- Pythonは
requirements.lockのように 固定版(==) を用意し、CI/コンテナ/ローカルで揃える。 - 学習・検証で追加パッケージを導入した場合は、実行に必要な依存関係を固定して記録する(例:
pip freezeの保存)。 - R/Bioconductor を使う場合は、
renv等でrenv.lockを保存し、Bioconductorのバージョンも含めて記録する。
ローカル例: 🧪 概念例(依存関係固定手順の例)
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.lock
python -m pip freeze > requirements.local.lock
A.3.1 最小再現パッケージ(テンプレート)
章内の手順や自分の解析結果を共有する際は、再現に必要な情報を「最小再現パッケージ」としてまとめておくと、検証・レビュー・再実行のコストを下げられます(特に、入力データ/参照データ/実行環境/期待成果物/QC観点)。
🧪 概念例(最小再現パッケージ構成例)
repro/
README.md
inputs/
README.md # 入手方法、機微情報、保持期間
references/
README.md # 参照ゲノム/アノテーション等の版
scripts/
run.sh # 実行手順(ワンコマンドを目指す)
validate.sh # 期待成果物/QCの簡易検証
outputs/
README.md # 期待成果物の定義(ファイル名/形式/例)
env/
Dockerfile
requirements.lock
renv.lock # Rを使う場合
metadata/
versions.txt # ツール/DBのバージョン
checksums.txt # 入力/参照のチェックサム
README のテンプレート例:
🧪 概念例(READMEテンプレート例)
# タイトル
## 概要
- 目的:
- 対象データ:
- 想定読者:
## 入力データ
- 入手方法:
- 入手日:
- ライセンス/利用条件:
- 機微情報の有無(個人情報/ゲノム等):
- 保持期間/削除方針:
## 参照データ(例: 参照ゲノム/アノテーション)
- 名称:
- バージョン:
- 入手先:
- チェックサム:
## 実行手順
🧪 概念例(実行手順の例)
```bash
./scripts/run.sh
```
## 期待成果物
- outputs/ 配下に生成されるファイル一覧:
- 成功/失敗の判定基準:
## QC観点(最小)
- QCの閾値(例: 読長、マッピング率、重複率など):
- 例外の扱い:
## 再現性
- 乱数 seed:
- 実行環境(OS/CPU/GPU):
A.4 トラブルシューティング
よくある問題と解決法:
- メモリ不足エラー
🔁 疑似コード(メモリ効率化の説明例)
# メモリ効率的な読み込み
def read_large_fasta(filename, chunk_size=1000):
"""大きなFASTAファイルをチャンク単位で読み込む"""
from Bio import SeqIO
for i, batch in enumerate(batch_iterator(SeqIO.parse(filename, "fasta"), chunk_size)):
yield batch
def batch_iterator(iterator, batch_size):
"""イテレータをバッチに分割"""
batch = []
for entry in iterator:
batch.append(entry)
if len(batch) == batch_size:
yield batch
batch = []
if batch:
yield batch
- GPU認識エラー
⚠️ 環境依存(GPU確認コマンド例)
# CUDA環境確認
nvidia-smi
python3 -c "import torch; print(torch.cuda.is_available())"
| 目次に戻る | 次へ: トラブルシューティング → |