バイオインフォマティクスデータスキル
――オープンソースツールを使ったロバストで再現性のある研究

[cover photo]
  • 2020年09月 発行
  • 560ページ
  • ISBN978-4-87311-863-5
  • 原書: Bioinformatics Data Skills
  • フォーマット 本 PDF EPUB

オライリー・ジャパンで書籍を購入:
定価4,840円

Ebook Storeで電子版を購入:
価格3,872円

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

関連書籍

Pythonデータサイエンスハンドブック
Rではじめるデータサイエンス
データサイエンス設計マニュアル

はじめに 

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

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.6 マークダウン記法の基礎
    2.7 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 この先、どう学べばよいのか?

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

Feedback

皆さんのご意見をお聞かせください。ご購入いただいた書籍やオライリー・ジャパンへのご感想やご意見、ご提案などをお聞かせください。より良い書籍づくりやサービス改良のための参考にさせていただきます。
[feedbackページへ]