バイオインフォマティクスデータスキル

―オープンソースツールを使ったロバストで再現性のある研究

[cover photo]
TOPICS
Programming
発行年月日
PRINT LENGTH
560
ISBN
978-4-87311-863-5
原書
Bioinformatics Data Skills
FORMAT
Print PDF EPUB
Ebook
4,840円
Ebookを購入する
Print
4,840円

バイオインフォマティクス(生命情報科学)とは、コンピュータによる情報解析の手法を生物学の問題に応用する学問のことを指します。本書は、基本的なプログラミングに関する知識を持ったバイオ研究者を対象に、“ロバストで再現性のある研究”のため、複雑で大規模な配列データから意味を抽出し、探索するための技術を解説します。データを処理する方法としてPython、R、Gitなどのオー プンソースツールを用いるため、次世代のデータにも適用できます。三部構成となっており、第Ⅰ部ではバイオインフォマティクスの根本的な考え方や学び方、第Ⅱ部ではプロジェクトを始めるための基本的スキル、第Ⅲ部では実践編としてツールを使ってどのようにデータを処理するかを学ぶことができます。近年、ニーズが高まりつつあるバイオ分野において不可欠なデータ処理技術のすべてがこの一冊に詰まっています。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

第1刷正誤表


※2021年11月更新

■P.37 見出し
【誤】2.6 マークダウン記法の基礎
【正】2.5.1 マークダウン記法の基礎

■P.41 見出し
【誤】2.7 Pandocを使用してマークダウン形式をHTMLへ変換する
【正】2.5.2 Pandocを使用してマークダウン形式をHTMLへ変換する

■P.122 表6-1
【誤】-o <filename>
【正】-O

■P.150 1つめのコード最終行
【誤】16
【正】9

■P. 168 上から6行目のコード
【誤】$uniq -d test.bed | wc -l
【正】$uniq -d Mus_musculus.GRCm38.75_chr1.bed | wc -l

■P.169 1つめのコード1行目
【誤】| column -t
【正】削除

■P.177 †7
【誤】監訳注:全ゲノムファイルは巨大なため、本書のGitHubリポジトリには置かれていない。興味のある読者はhttps://www.ensembl.org/Mus_musculus/などから全ゲノムの入ったFASTAファイルをダウンロードして試すことができる。
【正】監訳注:全ゲノムファイルは巨大なため、本書のGitHubリポジトリには置かれていない。ftp://ftp.ensembl.org/pub/release-101/fasta/mus_musculus/dna/ Mus_musculus.GRCm38.dna_rm.toplevel.fa.gzを参照。https://www.ensembl.org/Mus_musculus/などから全ゲノムの入ったFASTAファイルをダウンロードして試すこともできる。

■P.195 コラム「Rのヘルプの入手」最終行
【誤】apropos(norm)
【正】apropos("norm")

■P.218 8.3.3項の上から6行目
【誤】Data.set_S1.txt
【正】Dataset_S1.txt

■P.224 コラム内5-6行目
【誤】p + (xlab("chromosome position(basepairs)") + ylab("nucleotide diversity")
【正】p + xlab("chromosome position (basepairs)") + ylab("nucleotide diversity")

■P.226 下から2行目
【誤】これらのウィンドウ幅が6,300万塩基対に及ぶ
【正】これらのウィンドウが6,300万塩基対に広がる

■P.229 上から3行目
【誤】(total.SNP列)
【正】(total.SNPs列)

■P.233 上から8行目に監訳注追加
0.05、0.5、1、5、10 のビン幅(binwidth)を試してみよう。†7
†7 監訳注:コードを実行すると、下記の警告メッセージが出力される。
## Warning: Ignoring unknown parameters: binwidth
## Warning: Removed 3373 rows containing non-finite values (stat_count).

■P.237 コード1行目に監訳注追加
mtfs <- read.delim("motif_recombrates.txt", header=TRUE)†10
†10 監訳注:Rバージョン4以降では、下記のようにするとよい。
mtfs <- read.delim("motif_recombrates.txt", header=TRUE, stringsAsFactors=TRUE)

■P.237 コード11行目に監訳注追加
rpts <- read.delim("motif_repeats.txt", header=TRUE)†11
†11 監訳注:Rバージョン4以降では、下記のようにするとよい。
rpts <- read.delim("motif_repeats.txt", header=TRUE, stringsAsFactors=TRUE)

■P.273 上から2行目
【誤】すべてのテストの
【正】testの

■P. 429 23行目
【誤】テストは0または1の終了ステータスを返す
【正】testは0または1の終了ステータスを返す

■P.443 12.2.5項の上から1、2行目
【誤】xaregs
【正】xargs

■P.522 索引
【誤】zipで圧縮されたファイルの操作
【正】gzipで圧縮されたファイルの操作

目次

はじめに 

第Ⅰ部 基本方針:ロバストで再現性のあるバイオインフォマティクスのためのデータスキル

1章 バイオインフォマティクスの学習方法
    1.1 なぜバイオインフォマティクスなのか?増大する生物学データ
    1.2 バイオインフォマティクスを学ぶためのデータスキルの学習
    1.3 再現性がありロバストな研究のための新たな課題
    1.4 再現可能な研究
    1.5 ロバストな研究とバイオインフォマティクスの黄金律
    1.6 ロバストで再現性のある技法を採用すれば研究生活も楽になる
    1.7 ロバストな研究に向けての推奨事項
            1.7.1 実験の計画に注意を払う
            1.7.2 人間のためにコードを書き、コンピュータのためにデータを書く
            1.7.3 コンピュータを自分のために働かせる
            1.7.4 アサーションを設定し、コードとメソッドの中でエラーが目立つようにする
            1.7.5 コードをテストせよ。理想的にはコードにコードをテストさせよ
            1.7.6 可能であれば既存のライブラリを使用する
            1.7.7 データを読み取り専用として扱う
            1.7.8 頻繁に使用するスクリプトは時間をかけてツールに仕立てる
            1.7.9 データが高品質であることを証明できるようにする
    1.8 再現可能な研究に向けての推奨事項
            1.8.1 コードとデータを公開する
            1.8.2 すべてをドキュメント化する
            1.8.3 図と統計をスクリプトの出力結果にする
            1.8.4 コードをドキュメントとして使用する
    1.9 バイオインフォマティクスのデータスキルを継続的に改善する

第Ⅱ部 前提条件:バイオインフォマティクスプロジェクトを開始するための必須スキル

2章 バイオインフォマティクスプロジェクトの準備と管理 
    2.1 プロジェクトディレクトリとディレクトリ構造
    2.2 プロジェクトドキュメント
    2.3 ディレクトリを使用してプロジェクトをサブプロジェクトに分割する
    2.4 ファイル処理タスクを自動化できるようにデータを整理する
    2.5 プロジェクトノートのためのマークダウン記法
            2.5.1 マークダウン記法の基礎
            2.5.2 Pandocを使用してマークダウン形式をHTMLへ変換する

3章 Unixシェル再入門
    3.1 なぜバイオインフォマティクスでUnixを使うのか?:モジュール性とUnix哲学
    3.2 ストリームとリダイレクションの操作
            3.2.1 標準出力をファイルにリダイレクトする
            3.2.2 標準エラーのリダイレクト
            3.2.3 標準入力リダイレクトの使用
    3.3 全能のUnixパイプ:スピードと美しさを1つに
            3.3.1 パイプの動作:grepとパイプによる簡単なプログラムの作成
            3.3.2 パイプとリダイレクションの結合
            3.3.3 リダイレクションについてもう少し:パイプのtee 
    3.4 プロセスの管理と対話
            3.4.1 バックグラウンドプロセス
            3.4.2 プロセスの強制終了
            3.4.3 終了ステータス:プログラムで、コマンドが働いたかどうかを確認する方法
    3.5 コマンド置換

4章 リモートマシンで作業する 
    4.1 SSHでリモートマシンに接続する
    4.2 SSH鍵による迅速な認証
    4.3 nohupとtmuxで長い時間稼働するジョブを制御する
            4.3.1 nohup 
    4.4 Tmuxを使ってリモートマシンで作業する
            4.4.1 Tmuxのインストールと構成
            4.4.2 Tmuxセッションの作成、切断、再接続
            4.4.3 Tmuxウィンドウで作業する

5章 科学者のためのGit 
    5.1 なぜGitがバイオインフォマティクスプロジェクトで必要か
            5.1.1 Gitによりプロジェクトのスナップショットを保存できる
            5.1.2 Gitはコードの重要な変更を記録する
            5.1.3 Gitはソフトウェア関連リソースをきちんと整理し、人がいなくなった後でもいつでも使えるように保つ
    5.2 Gitのインストール
    5.3 Gitの基本:リポジトリの作成、ファイルの追跡、変更のステージングおよびコミット
            5.3.1 Gitのセットアップ:Gitに自分が誰であるかを伝える
            5.3.2 git initとgit clone:リポジトリを作成する
            5.3.3 Gitでファイルを追跡する:git addとgit statusパート1 
            5.3.4 Gitでファイルをステージングする:git addとgit status パート2 
            5.3.5 git commit:プロジェクトのスナップショットを取得する
            5.3.6 ファイルの差分を見る:git diff 
            5.3.7 コミット履歴を見る:git log 
            5.3.8 ファイルの移動と削除:git mvとgit rm 
            5.3.9 Gitに何を無視するかを知らせる:.gitignore 
            5.3.10 ステージングを元に戻す:git reset 
    5.4 Gitを使った協働作業:git remote、git push、git pull 
            5.4.1 GitHubで共有された中央リポジトリを作る
            5.4.2 Gitをリモートから認証する
            5.4.3 Gitにリモートから接続する:git remote 
            5.4.4 git pushでリモートリポジトリにコミットをプッシュする
            5.4.5 git pullでリモートリポジトリからコミットをプルする
            5.4.6 共同研究者と作業する:プッシュとプル
            5.4.7 マージコンフリクト
            5.4.8 GitHubワークフロー:フォークとプルリクエスト
    5.5 Gitを使って楽をする:過去のコミットで作業する
            5.5.1 過去のファイルを復元する:git checkout 
            5.5.2 仮変更を保存する:git stash 
            5.5.3 git diff再訪:コミットとファイルを比較する
            5.5.4 コミットを取り消したり編集したりする:git commit --amend 
    5.6 ブランチで作業する
            5.6.1 ブランチを作り作業する:git branchとgit checkout 
            5.6.2 ブランチをマージする:git merge 
            5.6.3 ブランチとリモート
    5.7 Gitの学習を継続する

6章 バイオインフォマティクスのデータ 
    6.1 バイオインフォマティクスデータの取得
            6.1.1 wgetとcurlを使用したデータのダウンロード
            6.1.2 rsyncとscp 
    6.2 データの整合性
            6.2.1 SHAとMD5のチェックサム
    6.3 データの間の差を見る
    6.4 データの圧縮と圧縮データの操作
            6.4.1 gzip 
            6.4.2 gzipで圧縮されたファイルの操作
    6.5 ケーススタディ:再現性を確保できるデータのダウンロード方法

第Ⅲ部 実践:バイオインフォマティクスのデータスキル

7章 Unixツール 
    7.1 UnixツールとUnixワンライナーアプローチ:Programming Pearlsから学んだ教訓
    7.2 Unixパイプラインを使うタイミングと安全な使い方
    7.3 Unixツールによるテキストデータの検査と操作
            7.3.1 headとtailによるデータの検査
            7.3.2 lessコマンド
            7.3.3 wc、ls、awkによるプレーンテキストデータの要約情報
            7.3.4 cutによる列データの操作
            7.3.5 columnによる表形式データへの整形
            7.3.6 強力なツールgrep 
            7.3.7 プレーンテキストデータのデコード:hexdump 
            7.3.8 sortによるプレーンテキストデータの並べ替え
            7.3.9 uniqコマンドで一意の値を見つける
            7.3.10 joinコマンド
            7.3.11 AWKによるテキスト処理
            7.3.12 Bioawk:生物学的データのためのAWK 
            7.3.13 sedを用いたストリーム編集
    7.4 高度なシェル技法
            7.4.1 サブシェル
            7.4.2 名前付きパイプとプロセス置換
    7.5 Unix哲学再考

8章 R言語入門 
    8.1 RとRStudio入門
    8.2 R言語の基礎
            8.2.1 Rにおける簡単な計算、関数の呼び出し、ヘルプの取得
            8.2.2 変数と代入
            8.2.3 ベクトル、ベクトル化、添字指定
    8.3 Rでのデータの扱いとその可視化
            8.3.1 データをRに読み込ませる
            8.3.2 データフレームの探索と変換
            8.3.3 スライシングとダイシングによるデータの探索:データフレームのサブセット化
            8.3.4 ggplot2によるデータ探索の可視化(I):ScatterplotsとDensities 
            8.3.5 ggplot2によるデータ探索の可視化(II):平滑化
            8.3.6 cut()によるデータのビニングとggplot2を使った棒グラフの描画
            8.3.7 データのマージと結合:ベクトルのマッチングとデータフレームのマージ
            8.3.8 ggplot2ファセットの使用
            8.3.9 さらなるRデータ構造:リスト
            8.3.10 lapply()とsapply()関数を使って、リストに関数を適用する
            8.3.11 分割-適用-結合(Split-Apply-Combine)パターンを使用する
            8.3.12 dplyrによるデータフレームの探索
            8.3.13 文字列の操作
    8.4 Rスクリプトによるワークフロー開発
            8.4.1 制御フロー:if、for、while 
            8.4.2 Rスクリプトによる作業
            8.4.3 複数ファイルの読み込みと結合のためのワークフロー
            8.4.4 データのエクスポート
    8.5 さらなるRの道筋とリソース

9章 範囲データの操作 
    9.1 ゲノム範囲と座標系に対する短期集中コース
    9.2 GenomicRangesを用いた範囲データ:実行例の紹介
            9.2.1 Bioconductorパッケージのインストールと操作
            9.2.2 IRangesを使用した汎用範囲の保存
            9.2.3 基本的な範囲の操作:算術演算、変換、集合演算
            9.2.4 重複する範囲を見つける
            9.2.5 最も近い範囲を見つけて距離を計算する
            9.2.6 ランレングス符号化とビュー
            9.2.7 GenomicRangesによるゲノム範囲の保存
            9.2.8 GRangesListによるデータのグループ化
            9.2.9 アノテーションデータの利用:GenomicFeaturesとrtracklayer 
            9.2.10 プロモーター領域の取得:flankとpromoters 
            9.2.11 プロモーター配列の取得:GenomicRangesを配列データに接続
            9.2.12 遺伝子間およびイントロン領域の取得:gaps、reduce、setdiff 
            9.2.13 重複する範囲を見つけて作業する
            9.2.14 GRangesオブジェクトのカバレッジの計算
    9.3 BEDToolsを使用したコマンドラインでの範囲データ操作
            9.3.1 BEDToolsのintersectを使った重複の計算
            9.3.2 BEDToolsのslopとflank 
            9.3.3 BEDToolsによるカバレッジ
            9.3.4 他のBEDToolsサブコマンドとPybedtools 

10章 配列データの操作 
    10.1 FASTA形式
    10.2 FASTQ形式
    10.3 ヌクレオチドのコード
    10.4 塩基品質スコア
    10.5 例:低品質塩基の検査とトリミング
    10.6 FASTA /FASTQ解析の例:ヌクレオチドの数え上げ
    10.7 索引付きFASTAファイル

11章 アラインメントデータの操作 
    11.1 アラインメント形式の理解:SAMとBAM 
            11.1.1 SAMヘッダー
            11.1.2 SAMアラインメントセクション
            11.1.3 ビット表現フラグ
            11.1.4 CIGAR文字列
            11.1.5 マッピング品質
    11.2 SAM形式のアラインメントを操作するためのコマンドラインツール
            11.2.1 samtools viewを使ってSAMとBAMを相互変換する
            11.2.2 samtoolsのsortサブコマンドとindexサブコマンド
            11.2.3 samtools viewによるアラインメントの抽出とフィルタリング
    11.3 samtools tviewとIntegrated Genomics Viewerによるアラインメントの可視化
            11.3.1 samtools pileupを使用したパイルアップ、バリアントコール、塩基アラインメント品質
    11.4 Pysamで独自のSAM /BAM処理ツールを作成する
            11.4.1 BAMファイルを開き、領域からアラインメントを取り出し、リードに対する操作を繰り返す
            11.4.2 AlignmentFileオブジェクトからのSAM / BAMヘッダー情報の抽出
            11.4.3 AlignedSegmentオブジェクトを操作する
            11.4.4 アラインメント統計を記録するプログラムの作成
            11.4.5 その他のPysam機能、およびその他のSAM /BAM API 

12章 シェルスクリプト作成、パイプラインの記述、タスクの並列化 
    12.1 基本的なBashスクリプティング
            12.1.1 ロバストなBashスクリプトの作成と実行
            12.1.2 変数とコマンド引数
            12.1.3 Bashスクリプト内の条件文:if文
            12.1.4 forループとグロブ(パターンマッチ)を使ったBashによるファイル処理
    12.2 findとxargsを使ったファイル処理の自動化
            12.2.1 findとxargsを使う
            12.2.2 findでファイルを見つける
            12.2.3 findの検索式
            12.2.4 findの-execオプション:findの結果に対するコマンドの実行
            12.2.5 xargs:Unixパワーツール
            12.2.6 xargsに置換文字列を与え、ファイルにコマンドを適用する
            12.2.7 xargsと並列化
    12.3 makeとmakefile:パイプラインのための別オプション

13章 TabixとSQLite:メモリを使わないアプローチ 
    13.1 BGZFとTabixを使用した索引付きのタブ区切りファイルへの高速アクセス
            13.1.1 bgzipを使ってTabixのためにファイルを圧縮する
            13.1.2 Tabixによるファイルの索引作成
            13.1.3 Tabixを使う
    13.2 SQLiteを使ったリレーショナルデータベースの操作
            13.2.1 バイオインフォマティクスでリレーショナルデータベースが必要になるとき
            13.2.2 SQLiteのインストール
            13.2.3 CLIによるSQLiteデータベースの探求
            13.2.4 データの操作:全能のSELECT文
            13.2.5 SQLite関数
            13.2.6 SQLite集約関数
            13.2.7 副問い合わせ(サブクエリー)
            13.2.8 リレーショナルデータベースの編成と結合(join)
            13.2.9 データベースへの書き込み
            13.2.10 テーブルの削除とデータベースの削除
            13.2.11 Pythonを使ってSQLiteと対話する
            13.2.12 データベースのダンプ

14章 おわりに
    14.1 この先、どう学べばよいのか?

用語集
参考文献
索引
監訳者あとがき