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

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 Jez Humble, Joanne Molesky, Barry O'Reilly, 角 征典, 笹井 崇司, Eric Ries

新規事業を生み出し、顧客にすばやく価値を届けるには、それを支援する体制が必要です。本書は、あらゆるムダを省き、継続的に仮説検証を繰り返しながら、プロダクトやサービスを構築する「リーンスタートアップ」の手法を既存の企業に適用するための方法を説明します。市場環境や顧客ニーズの変化に対応し、イノベーションを加速させ、組織文化、ガバナンス、財務管理を最適化し続けるハイパフォーマンス組織になるための原則とパターンを、さまざまな成功企業のケーススタディとともに詳述します。

book

並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ

by 高野 祐輝

複数のプログラムを同時に実行する「並行プログラミング」は、処理速度を飛躍的に向上させる手法で、タスク管理、プロセス管理、スレッド管理をはじめ、複雑な仕組みについての幅広い知識とテクニックが必要となります。本書はRustとアセンブリ、そして一部Cを用い、CPUのアトミック命令、グリーンスレッド、アクターモデル、π計算、ソフトウェア・トランザクショナルメモリ、async/awaitなど、並行プログラミングに関する理論的な背景から実装までをカバー。さらに、アセンブリ実装の理解を深めるため、AArch64とx86-64アーキテクチャの説明も付録として収録。一歩一歩、着実に理解できるように、その仕組みから順を追って詳しく説明します。GitHub上で公開されているソースコードを実際に動かしながら、並行プログラミングの知識と理解を深めることができます。

book

ルールズ・オブ・プログラミング ―より良いコードを書くための21のルール

by Chris Zimmerman, 久富木 隆一

全世界で1,000万本に迫る実売数を誇り、日本でも累計実売数100万本を突破(2023年5月時点)した大ヒットゲーム『Ghost of Tsushima (ゴースト・オブ・ツシマ) 』をはじめ、『怪盗スライ・クーパー』などで著名なゲーム制作スタジオ、Sucker Punch Productions(サッカーパンチプロダクションズ)の共同創設者であるChris Zimmermanによる、プログラミングのベストプラクティス集。 全部で21の「ルール」から成り立っており、すべてのプログラマーが知っておくべき本質的な知恵と、熟練したプログラマーにとって示唆に富む洞察を含んでいます。また、コードを書く際だけでなく、デバッグや最適化の際に有用な知識にも触れています。ゲーム領域に限らず、幅広いプログラマーを対象とした、必読のプログラミング哲学。 本書で触れられるコード例はC++で書かれていますが、C++の知識は必須ではなく、オブジェクト指向の基礎知識さえあれば問題なく読むことができます。また、付録に「Pythonプログラマー/JavaScriptプログラマーのためのC++コード読解法」を掲載しています。

book

Unityによるモバイルゲーム開発 ―作りながら学ぶ2D/3Dゲームプログラミング入門

by Jon Manning, Paris Buttfield-Addison, 鈴木 久貴, あんどうやすし, 江川 崇, 安藤 幸央, 高橋 憲一

第I部でUnityの基本を押さえたあと、第II部と第III部でAndroidとiOSモバイル端末向けの2Dゲームと3Dゲームを開発します。この2つのゲームを作ることで、初学者でも本書を通してUnityによるモバイルゲーム開発の基本を体系的に学べます。第IV部はUnityで開発するなら知っておきたい機能や情報源です。「本格的なゲーム」を2つ作る過程でUnityの機能を無理なく学べる本書は、Unityの各機能を説明するためにサンプルゲームをただたくさん作る内容の書籍とは異なり、その先を見据えた本格的な入門書です。日本語版では、Unity Hubの使い方とVisual Studio 2017 Communityによるデバッグについての解説を巻末付録として収録しました。