# 前言

## 前言

本书的目的是为基因组学的数据分析提供基础知识。我们根据每年提供的计算基因组学课程开发了本书，受众来自物理、生物、医学、数学、计算机科学或其他领域的交叉学科。我们希望这本书可以成为计算基因组学专业学生的起点，也可以成为基因组学中各具体领域进一步数据分析的指南。这就是为什么我们试图涵盖从编程到基本基因组生物学的各种主题。由于这个领域是跨学科的，因此不同背景的人可以从不同的地方开始。生物学家可能会跳过基因组生物学的部分直接从 R 编程开始，而计算机科学家可能会想从基因组生物学开始。同样，当你需要在没有经验的情况下进行某种类型的分析时，也可能会想参考这本书。

## 这本书是给谁的？

这本书包含计算基因组学的实践和理论等方面。生物学和医学产生的数据比以往任何时候都多。因此，我们需要更多同时具有数据分析技能并理解计算基因组学的人。由于计算基因组学是跨学科的，这本书旨在为生物学家，医学科学家，计算机科学家和来自其他背景的人提供一些帮助。本书的受众包括:

* 产生数据并热衷于自己分析数据的生物学家和医学科学家。
* 正式开始研究或使用计算基因组学的学生和研究人员，虽然他们没有广泛的领域特定知识，但至少对定量领域有初级理解: 数学、统计
* 经验丰富的研究人员正在寻找快速操作方法，以便开始与计算基因组学相关的特定数据分析任务。

## 你能从中得到什么？

该资源描述了这些技能，并提供了帮助读者分析自己基因组数据的方法。

阅读后:

* 如果你不熟悉 R，你将会掌握 R 的基础知识，并深入了解 R 在计算基因组学中的特殊用途。
* 你将了解基因组间隔和如何对它们的操作，例如overlap
* 你将能够使用 R 及其庞大的包进行序列分析: 例如计算基因组给定片段的 GC 含量或找到转录因子结合位点
* 你将熟悉基因组学中使用的可视化技术，如热图、元基因图和基因组track可视化
* 你将熟悉监督和无监督学习技术，这些技术对数据建模和高维数据的探索性分析很重要
* 你将熟悉不同的高通量测序数据集的分析，主要使用基于 R 的工具。

## 本书结构

这本书的设计理念是数据分析方法和概念理论的理解同样重要。这也是为什么我们首先尝试给出概念的解释，然后尝试给出数学公式的基本内容以获得更详细的理解。我们也会显示代码并对特定数据分析任务的代码进行解释。此外，我们还为那些希望对数据分析相关方法或概念有更深入理论理解的读者提供额外的参考，如书籍、网站、视频讲座和科学论文。 「基因组学导论」一章介绍了基因组生物学和基因组学的基本概念。理解这些概念对计算基因组学很重要。

「基因组数据分析的 R 介绍」一章除了提供我们在基因组数据分析中观察到的常见数据分析格式外，也包括本书所必需的基本 R 技能。基因组统计，无监督机器学习的探索性数据分析和监督机器学习的预测建模章节介绍了分析高维基因组数据时可能需要的必要技能。

「基因组区间操作和基因组计算」一章介绍了处理基因组区间的基本工具以及它们在基因组上彼此之间的关系。此外，本章还介绍了用于基因组数据可视化的多种方法。本章中介绍的技能是处理下游基因组数据所需的关键技能，这些数据可通过公共数据库 (如 Ensembl 和 UCSC 浏览器) 获得。

其它章节涉及高通量测序数据的具体分析和不同类型的数据集。「高通量测序数据的质检处理和比对」一章介绍了需要对测序数据进行的质检以及进一步处理它们的不同方法。「RNA-seq 分析」、「ChIP-seq 分析」和「BS-seq 分析」章节涉及流行的高通量测序技术的分析技术。最后一章「多组学分析」讨论了整合多组学数据集的方法。

总而言之，这本书是计算基因组学的综合指南。有些部分是为了广泛的跨学科受众和完整性，并不是所有部分都会对这些广泛受众的所有读者同样有用。

## 软件信息和约定

包名称以粗体文本 (例如，**methylKit**)表示，行内代码和文件名以打字机字体格式化。函数名后跟括号 (例如，`genomation::ScoreMatrix()`)。双冒号运算符 `::` 表示从包访问对象。

### 赋值运算符约定

传统上， `<-` 是首选赋值运算符。然而，在整本书中，我们交替使用 `=` 和 `<-` 作为赋值运算符。

### 运行书籍代码所需的包

这本书主要是关于使用 R 包来分析基因组数据，因此如果你想重现本书中的分析，你需要使用安装在每章中安装相关的包`install.packages`或 `BiocManager::install` 功能。在每章中，当我们使用各个包中所需的函数时，我们用 `library ()` 或 `require()`函数加载必要的包。通过查看这些调用，你可以看到该代码块或章节需要哪些包。如果你需要安装本书的所有包依赖项，你可以运行以下命令，在等待时喝杯茶。

```r
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install(c('qvalue','plot3D','ggplot2','pheatmap',
                      'cluster', 'NbClust', 'fastICA', 'NMF',
                      'Rtsne', 'mosaic', 'knitr', 'genomation',
                      'ggbio', 'Gviz', 'DESeq2', 'RUVSeq',
                      'gProfileR', 'ggfortify', 'corrplot',
                      'gage', 'EDASeq', 'citr', 'formatR',
                      'svglite', 'Rqc', 'ShortRead', 'QuasR',
                      'methylKit','FactoMineR', 'iClusterPlus',
                      'enrichR','caret','xgboost','glmnet',
                      'DALEX','kernlab','pROC','nnet','RANN',
                      'ranger','GenomeInfoDb', 'GenomicRanges',
                      'GenomicAlignments', 'ComplexHeatmap', 'circlize', 
                      'rtracklayer', 'BSgenome.Hsapiens.UCSC.hg38', 'tidyr',
                      'AnnotationHub', 'GenomicFeatures', 'normr',
                      'MotifDb', 'TFBSTools', 'motifRG', 'JASPAR2018'
                     ))
```

## 书内数据

我们依靠来自不同的 R 和bioonducter 包的数据。对于那些不附带这些包的数据集，我们创建了自己的包组合数据。你可以通过

```r
devtools::install_github("compgenomr/compGenomRData")
```

我们使用 `system.file()` 函数来获取文件的路径。我们注意到许多没有经验的用户对这个功能感到困惑。此函数只输出与数据包一起安装的文件的完整路径。
