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

Book description

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

Table of contents

  1. 表紙
  2. はじめに
  3. 第Ⅰ部 基本方針:ロバストで再現性のあるバイオインフォマティクスのためのデータスキル
  4.  1章 バイオインフォマティクスの学習方法
  5.   1.1 なぜバイオインフォマティクスなのか? 増大する生物学データ
  6.   1.2 バイオインフォマティクスを学ぶためのデータスキルの学習
  7.   1.3 再現性がありロバストな研究のための新たな課題
  8.   1.4 再現可能な研究
  9.   1.5 ロバストな研究とバイオインフォマティクスの黄金律
  10.   1.6 ロバストで再現性のある技法を採用すれば研究生活も楽になる
  11.   1.7 ロバストな研究に向けての推奨事項
  12.    1.7.1 実験の計画に注意を払う
  13.    1.7.2 人間のためにコードを書き、コンピュータのためにデータを書く
  14.    1.7.3 コンピュータを自分のために働かせる
  15.    1.7.4 アサーションを設定し、コードとメソッドの中でエラーが目立つようにする
  16.    1.7.5 コードをテストせよ。理想的にはコードにコードをテストさせよ
  17.    1.7.6 可能であれば既存のライブラリを使用する
  18.    1.7.7 データを読み取り専用として扱う
  19.    1.7.8 頻繁に使用するスクリプトは時間をかけてツールに仕立てる
  20.    1.7.9 データが高品質であることを証明できるようにする
  21.   1.8 再現可能な研究に向けての推奨事項
  22.    1.8.1 コードとデータを公開する
  23.    1.8.2 すべてをドキュメント化する
  24.    1.8.3 図と統計をスクリプトの出力結果にする
  25.    1.8.4 コードをドキュメントとして使用する
  26.   1.9 バイオインフォマティクスのデータスキルを継続的に改善する
  27. 第Ⅱ部 前提条件:バイオインフォマティクスプロジェクトを開始するための必須スキル
  28.  2章 バイオインフォマティクスプロジェクトの準備と管理
  29.   2.1 プロジェクトディレクトリとディレクトリ構造
  30.   2.2 プロジェクトドキュメント
  31.   2.3 ディレクトリを使用してプロジェクトをサブプロジェクトに分割する
  32.   2.4 ファイル処理タスクを自動化できるようにデータを整理する
  33.   2.5 プロジェクトノートのためのマークダウン記法
  34.   2.6 マークダウン記法の基礎
  35.   2.7 Pandocを使用してマークダウン形式をHTMLへ変換する
  36.  3章 Unixシェル再入門
  37.   3.1 なぜバイオインフォマティクスでUnixを使うのか?:モジュール性とUnix哲学
  38.   3.2 ストリームとリダイレクションの操作
  39.    3.2.1 標準出力をファイルにリダイレクトする
  40.    3.2.2 標準エラーのリダイレクト
  41.    3.2.3 標準入力リダイレクトの使用
  42.   3.3 全能のUnixパイプ:スピードと美しさを1つに
  43.    3.3.1 パイプの動作:grepとパイプによる簡単なプログラムの作成
  44.    3.3.2 パイプとリダイレクションの結合
  45.    3.3.3 リダイレクションについてもう少し:パイプのtee
  46.   3.4 プロセスの管理と対話
  47.    3.4.1 バックグラウンドプロセス
  48.    3.4.2 プロセスの強制終了
  49.    3.4.3 終了ステータス:プログラムで、コマンドが働いたかどうかを確認する方法
  50.   3.5 コマンド置換
  51.  4章 リモートマシンで作業する
  52.   4.1 SSHでリモートマシンに接続する
  53.   4.2 SSH鍵による迅速な認証
  54.   4.3 nohupとtmuxで長い時間稼働するジョブを制御する
  55.    4.3.1 nohup
  56.   4.4 Tmuxを使ってリモートマシンで作業する
  57.    4.4.1 Tmuxのインストールと構成
  58.    4.4.2 Tmuxセッションの作成、切断、再接続
  59.    4.4.3 Tmuxウィンドウで作業する
  60.  5章 科学者のためのGit
  61.   5.1 なぜGitがバイオインフォマティクスプロジェクトで必要か
  62.    5.1.1 Gitによりプロジェクトのスナップショットを保存できる
  63.    5.1.2 Gitはコードの重要な変更を記録する
  64.    5.1.3 Gitはソフトウェア関連リソースをきちんと整理し、人がいなくなった後でもいつでも使えるように保つ
  65.   5.2 Gitのインストール
  66.   5.3 Gitの基本:リポジトリの作成、ファイルの追跡、変更のステージングおよびコミット
  67.    5.3.1 Gitのセットアップ:Gitに自分が誰であるかを伝える
  68.    5.3.2 git initとgit clone:リポジトリを作成する
  69.    5.3.3 Gitでファイルを追跡する:git addとgit status パート1
  70.    5.3.4 Gitでファイルをステージングする:git addとgit status パート2
  71.    5.3.5 git commit:プロジェクトのスナップショットを取得する
  72.    5.3.6 ファイルの差分を見る:git diff
  73.    5.3.7 コミット履歴を見る:git log
  74.    5.3.8 ファイルの移動と削除:git mvとgit rm
  75.    5.3.9 Gitに何を無視するかを知らせる:.gitignore
  76.    5.3.10 ステージングを元に戻す:git reset
  77.   5.4 Gitを使った協働作業:git remote、git push、git pull
  78.    5.4.1 GitHubで共有された中央リポジトリを作る
  79.    5.4.2 Gitをリモートから認証する
  80.    5.4.3 Gitにリモートから接続する:git remote
  81.    5.4.4 git pushでリモートリポジトリにコミットをプッシュする
  82.    5.4.5 git pullでリモートリポジトリからコミットをプルする
  83.    5.4.6 共同研究者と作業する:プッシュとプル
  84.    5.4.7 マージコンフリクト
  85.    5.4.8 GitHubワークフロー:フォークとプルリクエスト
  86.   5.5 Gitを使って楽をする:過去のコミットで作業する
  87.    5.5.1 過去のファイルを復元する:git checkout
  88.    5.5.2 仮変更を保存する:git stash
  89.    5.5.3 git diff再訪:コミットとファイルを比較する
  90.    5.5.4 コミットを取り消したり編集したりする:git commit --amend
  91.   5.6 ブランチで作業する
  92.    5.6.1 ブランチを作り作業する:git branchとgit checkout
  93.    5.6.2 ブランチをマージする:git merge
  94.    5.6.3 ブランチとリモート
  95.   5.7 Gitの学習を継続する
  96.  6章 バイオインフォマティクスのデータ
  97.   6.1 バイオインフォマティクスデータの取得
  98.    6.1.1 wgetとcurlを使用したデータのダウンロード
  99.    6.1.2 rsyncとscp
  100.   6.2 データの整合性
  101.    6.2.1 SHAとMD5のチェックサム
  102.   6.3 データの間の差を見る
  103.   6.4 データの圧縮と圧縮データの操作
  104.    6.4.1 gzip
  105.    6.4.2 gzipで圧縮されたファイルの操作
  106.   6.5 ケーススタディ:再現性を確保できるデータのダウンロード方法
  107. 第Ⅲ部 実践:バイオインフォマティクスのデータスキル
  108.  7章 Unixツール
  109.   7.1 UnixツールとUnixワンライナーアプローチ:Programming Pearlsから学んだ教訓
  110.   7.2 Unixパイプラインを使うタイミングと安全な使い方
  111.   7.3 Unixツールによるテキストデータの検査と操作
  112.    7.3.1 headとtailによるデータの検査
  113.    7.3.2 lessコマンド
  114.    7.3.3 wc、ls、awkによるプレーンテキストデータの要約情報
  115.    7.3.4 cutによる列データの操作
  116.    7.3.5 columnによる表形式データへの整形
  117.    7.3.6 強力なツールgrep
  118.    7.3.7 プレーンテキストデータのデコード:hexdump
  119.    7.3.8 sortによるプレーンテキストデータの並べ替え
  120.    7.3.9 uniqコマンドで一意の値を見つける
  121.    7.3.10 joinコマンド
  122.    7.3.11 AWKによるテキスト処理
  123.    7.3.12 Bioawk:生物学的データのためのAWK
  124.    7.3.13 sedを用いたストリーム編集
  125.   7.4 高度なシェル技法
  126.    7.4.1 サブシェル
  127.    7.4.2 名前付きパイプとプロセス置換
  128.   7.5 Unix哲学再考
  129.  8章 R言語入門
  130.   8.1 RとRStudio入門
  131.   8.2 R言語の基礎
  132.    8.2.1 Rにおける簡単な計算、関数の呼び出し、ヘルプの取得
  133.    8.2.2 変数と代入
  134.    8.2.3 ベクトル、ベクトル化、添字指定
  135.   8.3 Rでのデータの扱いとその可視化
  136.    8.3.1 データをRに読み込ませる
  137.    8.3.2 データフレームの探索と変換
  138.    8.3.3 スライシングとダイシングによるデータの探索:データフレームのサブセット化
  139.    8.3.4 ggplot2によるデータ探索の可視化(I):ScatterplotsとDensities
  140.    8.3.5 ggplot2によるデータ探索の可視化(II):平滑化
  141.    8.3.6 cut()によるデータのビニングとggplot2を使った棒グラフの描画
  142.    8.3.7 データのマージと結合:ベクトルのマッチングとデータフレームのマージ
  143.    8.3.8 ggplot2ファセットの使用
  144.    8.3.9 さらなるRデータ構造:リスト
  145.    8.3.10 lapply()とsapply()関数を使って、リストに関数を適用する
  146.    8.3.11 分割−適用−結合(Split-Apply-Combine)パターンを使用する
  147.    8.3.12 dplyrによるデータフレームの探索
  148.    8.3.13 文字列の操作
  149.   8.4 Rスクリプトによるワークフロー開発
  150.    8.4.1 制御フロー:if、for、while
  151.    8.4.2 Rスクリプトによる作業
  152.    8.4.3 複数ファイルの読み込みと結合のためのワークフロー
  153.    8.4.4 データのエクスポート
  154.   8.5 さらなるRの道筋とリソース
  155.  9章 範囲データの操作
  156.   9.1 ゲノム範囲と座標系に対する短期集中コース
  157.   9.2 GenomicRangesを用いた範囲データ:実行例の紹介
  158.    9.2.1 Bioconductorパッケージのインストールと操作
  159.    9.2.2 IRangesを使用した汎用範囲の保存
  160.    9.2.3 基本的な範囲の操作:算術演算、変換、集合演算
  161.    9.2.4 重複する範囲を見つける
  162.    9.2.5 最も近い範囲を見つけて距離を計算する
  163.    9.2.6 ランレングス符号化とビュー
  164.    9.2.7 GenomicRangesによるゲノム範囲の保存
  165.    9.2.8 GRangesListによるデータのグループ化
  166.    9.2.9 アノテーションデータの利用:GenomicFeaturesとrtracklayer
  167.    9.2.10 プロモーター領域の取得:flankとpromoters
  168.    9.2.11 プロモーター配列の取得:GenomicRangesを配列データに接続
  169.    9.2.12 遺伝子間およびイントロン領域の取得:gaps、reduce、setdiff
  170.    9.2.13 重複する範囲を見つけて作業する
  171.    9.2.14 GRangesオブジェクトのカバレッジの計算
  172.   9.3 BEDToolsを使用したコマンドラインでの範囲データ操作
  173.    9.3.1 BEDToolsのintersectを使った重複の計算
  174.    9.3.2 BEDToolsのslopとflank
  175.    9.3.3 BEDToolsによるカバレッジ
  176.    9.3.4 他のBEDToolsサブコマンドとPybedtools
  177.  10章 配列データの操作
  178.   10.1 FASTA形式
  179.   10.2 FASTQ形式
  180.   10.3 ヌクレオチドのコード
  181.   10.4 塩基品質スコア
  182.   10.5 例:低品質塩基の検査とトリミング
  183.   10.6 FASTA/FASTQ解析の例:ヌクレオチドの数え上げ
  184.   10.7 索引付きFASTAファイル
  185.  11章 アラインメントデータの操作
  186.   11.1 アラインメント形式の理解:SAMとBAM
  187.    11.1.1 SAMヘッダー
  188.    11.1.2 SAMアラインメントセクション
  189.    11.1.3 ビット表現フラグ
  190.    11.1.4 CIGAR文字列
  191.    11.1.5 マッピング品質
  192.   11.2 SAM形式のアラインメントを操作するためのコマンドラインツール
  193.    11.2.1 samtools viewを使ってSAMとBAMを相互変換する
  194.    11.2.2 samtoolsのsortサブコマンドとindexサブコマンド
  195.    11.2.3 samtools viewによるアラインメントの抽出とフィルタリング
  196.   11.3 samtools tviewとIntegrated Genomics Viewerによるアラインメントの可視化
  197.    11.3.1 samtools pileupを使用したパイルアップ、バリアントコール、塩基アラインメント品質
  198.   11.4 Pysamで独自のSAM/BAM処理ツールを作成する
  199.    11.4.1 BAMファイルを開き、領域からアラインメントを取り出し、リードに対する操作を繰り返す
  200.    11.4.2 AlignmentFileオブジェクトからのSAM/BAMヘッダー情報の抽出
  201.    11.4.3 AlignedSegmentオブジェクトを操作する
  202.    11.4.4 アラインメント統計を記録するプログラムの作成
  203.    11.4.5 その他のPysam機能、およびその他のSAM/BAM API
  204.  12章 シェルスクリプト作成、パイプラインの記述、タスクの並列化
  205.   12.1 基本的なBashスクリプティング
  206.    12.1.1 ロバストなBashスクリプトの作成と実行
  207.    12.1.2 変数とコマンド引数
  208.    12.1.3 Bashスクリプト内の条件文:if文
  209.    12.1.4 forループとグロブ(パターンマッチ)を使ったBashによるファイル処理
  210.   12.2 findとxargsを使ったファイル処理の自動化
  211.    12.2.1 findとxargsを使う
  212.    12.2.2 findでファイルを見つける
  213.    12.2.3 findの検索式
  214.    12.2.4 findの-execオプション:findの結果に対するコマンドの実行
  215.    12.2.5 xargs:Unixパワーツール
  216.    12.2.6 xargsに置換文字列を与え、ファイルにコマンドを適用する
  217.    12.2.7 xargsと並列化
  218.   12.3 makeとmakefile:パイプラインのための別オプション
  219.  13章 TabixとSQLite:メモリを使わないアプローチ
  220.   13.1 BGZFとTabixを使用した索引付きのタブ区切りファイルへの高速アクセス
  221.    13.1.1 bgzipを使ってTabixのためにファイルを圧縮する
  222.    13.1.2 Tabixによるファイルの索引作成
  223.    13.1.3 Tabixを使う
  224.   13.2 SQLiteを使ったリレーショナルデータベースの操作
  225.    13.2.1 バイオインフォマティクスでリレーショナルデータベースが必要になるとき
  226.    13.2.2 SQLiteのインストール
  227.    13.2.3 CLIによるSQLiteデータベースの探求
  228.    13.2.4 データの操作:全能のSELECT文
  229.    13.2.5 SQLite関数
  230.    13.2.6 SQLite集約関数
  231.    13.2.7 副問い合わせ(サブクエリー)
  232.    13.2.8 リレーショナルデータベースの編成と結合(join)
  233.    13.2.9 データベースへの書き込み
  234.    13.2.10 テーブルの削除とデータベースの削除
  235.    13.2.11 Pythonを使ってSQLiteと対話する
  236.    13.2.12 データベースのダンプ
  237.  14章 おわりに
  238.   14.1 この先、どう学べばよいのか?
  239. 用語集
  240. 参考文献
  241. 監訳者あとがき
  242. 奥付

Product information

  • Title: バイオインフォマティクスデータスキル ―オープンソースツールを使ったロバストで再現性のある研究
  • Author(s): Vince Buffalo, 片山 俊明, 川島 秀一, 鈴木 治夫, 山本 泰智, 酒匂 寛, 山村 吉信
  • Release date: September 2020
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873118635

You might also like

book

プロダクトマネジメント ―ビルドトラップを避け顧客に価値を届ける

by Melissa Perri, 吉羽 龍太郎

本書は、顧客に価値を届けるプロダクトを作り出すプロダクトマネジメントについて学ぶ本です。プロダクトマネジメントを理解することで、企業がビジネス目標を達成しながら、顧客の課題を解決する方法を解説します。はじめにプロダクトマネージャーの役割と責任を定義し、優れた意思決定を促す戦略の立て方を紹介します。実験と最適化によって作るべきプロダクトを決めるプロセスを解説し、最後にプロダクト主導の組織を支えるための文化や方針を紹介します。ビルドトラップを避け、顧客の課題にフォーカスするプロダクトマネジメントの原則を解説する本書は、規模の大小を問わずすべてのプロダクトチーム、マネージャー、プログラマ、アーキテクト、デザイナ、マーケターに必携の一冊です。

book

仕事ではじめる機械学習 第2版

by 有賀 康顕, 中山 心太, 西林 孝

2018年の発行以来、多くの読者に支持された書籍を全面改訂! 不確実性の高い機械学習プロジェクトについて、「仕事で使う」という観点から整理するコンセプトはそのままに、初版の発行後に登場した概念や課題を取り上げます。「機械学習でいい感じにしてくれ」と突然上司に言われたとき、本書で学んだことが読者の力になるはずです。本書で得た知識は読者が「いま」困っている問題を解決する助けとなるでしょう。 第2版では、機械学習システムの開発と運用の統合する「ML Ops」、機械学習モデルを解釈し、その妥当性や根拠を明らかにする「機械学習モデルの検証」、ユーザーの行動を学習しながら予測を進める「バンディットアルゴリズム」、意思決定における予測システムの役割や意思決定のデザインを扱う「オンライン広告での機械学習」といった新章を追加しています。

book

進化的アーキテクチャ ―絶え間ない変化を支える

by Neal Ford, Rebecca Parsons, Patrick Kua, 島田 浩二

現代におけるエンタープライズアーキテクチャは、もはや静的な計画をあてにすることはできなくなっています。そしてソフトウェア開発エコシステムは、ツールやフレームワーク、技術イノベーションの流れと共に絶え間なく変化しています。こうした状況の中で、いったん構築したシステムを成長させていくには、さまざまな変化に適応しながら進化するアーキテクチャをシステムに組み込む必要があります。本書は、そうしたアーキテクチャを「進化的アーキテクチャ」と名付け、その構築に必要な考え方や技術、実践方法などについて解説するものです。

book

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

by Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。