本页面介绍了如何将 Sentieon® DNASeq® 作为 Google Cloud 流水线运行以进行二级基因组分析。该流水线与 Genome Analysis Toolkit (GATK) 最佳做法版本 3.7 中的以下结果相匹配:
- 一致性
- 排序
- 重复移除
- 碱基质量分数重新校准 (BQSR)
- 识别变体
输入格式包含以下内容:
- fastq 文件
- 经过比对和排序的 BAM 文件
目标
完成本教程后,您将了解如何执行以下任务:
- 使用 Sentieon® DNASeq® 在 Google Cloud 上运行流水线
- 为不同的 Sentieon® DNASeq® 使用情形编写配置文件
费用
在本文档中,您将使用 Google Cloud 的以下收费组件:
- Compute Engine
- Cloud Storage
您可使用价格计算器根据您的预计使用情况来估算费用。
准备工作
- 安装 Python 2.7+。如需详细了解如何设置您的 Python 开发环境,例如在您的系统上安装 pip,请参阅 Python 开发环境设置指南。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Life Sciences, Compute Engine, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Update and install
gcloud
components:gcloud components update
gcloud components install beta - 安装 git 以下载所需的文件。
-
默认情况下,Compute Engine 已配置适当的资源配额以防止意外错误使用。 通过增加配额,您可以同时启动更多虚拟机,从而提高吞吐量并缩短周转时间。
为了在本教程中获得最佳结果,您应该在项目默认配额的基础上申请更多配额。以下列表提供了增加配额的建议,以及运行本教程所需的最低配额。在
us-central1
区域申请配额:- CPU 数:64
- 永久性磁盘(标准,单位为 GB):375
您可以将其他配额申请字段留空以保留当前配额。
Sentieon® 评估许可
使用此流水线时,Sentieon® 会自动向您授予其软件的两周免费评估许可,以供您将其与 Google Cloud 配合使用。要获取许可,请在配置流水线时在 EMAIL
字段中输入您的电子邮件地址。如需了解如何设置此字段,请参阅了解输入格式。
要在评估许可到期后继续使用 Sentieon®,请联系 support@sentieon.com。
设置本地环境并安装必要工具
如果没有 virtualenv,请使用 pip 运行以下命令进行安装:
pip install virtualenv
运行以下命令以创建独立的 Python 环境并安装依赖项:
virtualenv env source env/bin/activate pip install --upgrade \ pyyaml \ google-api-python-client \ google-auth \ google-cloud-storage \ google-auth-httplib2
下载流水线脚本
运行以下命令下载示例文件并设置当前目录:
git clone https://github.com/sentieon/sentieon-google-genomics.git cd sentieon-google-genomics
了解输入格式
流水线使用 JSON 文件中指定的参数作为其输入。
在您下载的代码库中,有一个 examples/example.json
文件包含以下内容:
{ "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz", "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz", "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa", "OUTPUT_BUCKET": "gs://BUCKET", "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f", "PROJECT_ID": "PROJECT_ID" "REQUESTER_PROJECT": "PROJECT_ID", "EMAIL": "YOUR_EMAIL_HERE" }
下表介绍了该文件中的 JSON 键:
JSON 键 | 说明 |
---|---|
FQ1 |
fastq 输入文件中的第一对 read。 |
FQ2 |
fastq 输入文件中的第二对 read。 |
BAM |
BAM 输入文件(如果适用)。 |
REF |
参考基因组。如果设置此键,则假定存在 fastq/BAM 索引文件。 |
OUTPUT_BUCKET |
用于存储流水线数据输出的存储分区和目录。 |
ZONES |
用于工作器节点的 Google Cloud 地区的逗号分隔列表。 |
PROJECT_ID |
您的 Google Cloud 项目 ID。 |
REQUESTER_PROJECT |
从请求者付款存储分区转移数据时结算的项目。 |
EMAIL |
您的电子邮件地址。 |
运行流水线
在
sentieon-google-genomics
目录中,修改examples/example.json
文件,用您的 Google Cloud 项目中的相关资源替换 BUCKET、REQUESTER_PROJECT、EMAIL 和 PROJECT_ID 变量:{ "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz", "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz", "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa", "OUTPUT_BUCKET": "gs://BUCKET", "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f", "PROJECT_ID": "PROJECT_ID", "REQUESTER_PROJECT": "PROJECT_ID", "EMAIL": "EMAIL_ADDRESS" }
在您的环境中设置 PROJECT_ID 变量:
export PROJECT_ID=PROJECT_ID
运行以下命令,以在由配置文件中的输入标识的小型测试数据集上执行 DNASeq® 流水线。默认情况下,脚本会在启动流水线之前验证输入文件是否存在于您的 Cloud Storage 存储分区中。
python runner/sentieon_runner.py --requester_project $PROJECT_ID examples/example.json
如果指定了多次抢占式操作,则只要实例被抢占,流水线就会重新启动。流水线运行完成后,会向控制台输出一条消息,指明流水线运行成功还是失败。
推荐配置
在大多数情况下,您可以使用以下配置优化周转时间和费用。该配置会运行 30 倍深度的人类基因组,费用约为 $1.25,大约需要 2 小时。一个人类全外显子组将花费约 $0.35,大约需要 45 分钟。这两项估算值均基于流水线未被抢占的实例得出。
{ "FQ1": "gs://my-bucket/sample1_1.fastq.gz", "FQ2": "gs://my-bucket/sample1_2.fastq.gz", "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa", "OUTPUT_BUCKET": "gs://BUCKET", "BQSR_SITES": "gs://sentieon-test/pipeline_test/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/1000G_phase1.indels.b37.vcf.gz,gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz", "DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz", "PREEMPTIBLE_TRIES": "2", "NONPREEMPTIBLE_TRY": true, "STREAM_INPUT": "True", "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f", "PROJECT_ID": "PROJECT_ID", "EMAIL": "EMAIL_ADDRESS" }
其他选项
您可以使用以下选项自定义流水线。
输入文件选项
该流水线支持将多个以逗号分隔的 fastq 文件作为输入,如以下配置所示:
"FQ1": "gs://my-bucket/s1_prep1_1.fastq.gz,gs://my-bucket/s1_prep2_1.fastq.gz",
"FQ2": "gs://my-bucket/s1_prep1_2.fastq.gz,gs://my-bucket/s1_prep2_2.fastq.gz",
该流水线还接受使用 BAM
JSON 键,将以逗号分隔的 BAM 文件作为输入。BAM 文件中的 read 不与参考基因组进行比对。相反,它们将从流水线的删除重复数据阶段开始。以下示例展示了使用两个 BAM 文件作为输入的配置:
"BAM": "gs://my-bucket/s1_prep1.bam,gs://my-bucket/s1_prep2.bam"
全外显子组数据或大型数据集配置
推荐配置中的设置针对人类全外显子组样本进行了优化,测序平均覆盖率为 30 倍深度。对于比标准全外显子组数据集小得多或大得多的文件,您可以增加或减少实例的可用资源。要获得大型数据集的最佳结果,请使用以下设置:
{ "FQ1": "gs://sentieon-test/pipeline_test/inputs/test1_1.fastq.gz", "FQ2": "gs://sentieon-test/pipeline_test/inputs/test1_2.fastq.gz", "REF": "gs://sentieon-test/pipeline_test/reference/hs37d5.fa", "OUTPUT_BUCKET": "gs://BUCKET", "ZONES": "us-central1-a,us-central1-b,us-central1-c,us-central1-f", "PROJECT_ID": "PROJECT_ID", "EMAIL": "EMAIL_ADDRESS", "DISK_SIZE": 600, "MACHINE_TYPE": "n1-highcpu-64", "CPU_PLATFORM": "Intel Broadwell" }
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
DISK_SIZE |
工作器节点可用的 SSD 存储空间。 |
MACHINE_TYPE |
要使用的 Compute Engine 虚拟机的类型。默认为 n1-standard-1 。 |
CPU_PLATFORM |
所请求的 CPU 平台。必须是有效的 Compute Engine CPU 平台名称(例如“Intel Skylake”)。 |
抢占式实例
您可以通过设置 PREEMPTIBLE_TRIES
JSON 键在流水线中使用抢占式实例。
默认情况下,如果抢占式操作次数用尽或 NONPREEMPTIBLE_TRY
JSON 键设置为 0
,则运行程序会尝试使用标准实例运行流水线。您可以通过将 NONPREEMPTIBLE_TRY
键设置为 false
来停止此行为,如以下配置所示:
"PREEMPTIBLE_TRIES": 2,
"NONPREEMPTIBLE_TRY": false
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
PREEMPTIBLE_TRIES |
使用抢占式实例尝试运行流水线的次数。 |
NONPREEMPTIBLE_TRY |
确定在抢占式操作次数用尽后,是否尝试使用标准实例运行流水线。 |
Read group
当使用 Sentieon® BWA 将 fastq 文件与参考基因组进行比对时,需要添加 read group。您可以提供多个以逗号分隔的 read group。
Read group 的数量必须与 fastq 输入文件的数量相匹配。
默认 read group 为 @RG\\tID:read-group\\tSM:sample-name\\tPL:ILLUMINA
。
如需更改 read group,请设置 JSON 输入文件中的 READGROUP
键,如以下配置所示:
"READGROUP": "@RG\\tID:my-rgid-1\\tSM:my-sm\\tPL:ILLUMINA,@RG\\tID:my-rgid-2\\tSM:my-sm\\tPL:ILLUMINA"
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
READGROUP |
包含样本元数据的 read group。 |
如需详细了解 read group,请参阅 read group。
从 Cloud Storage 流式输入
您可以从 Cloud Storage 流式传输 fastq 文件,这可以减少流水线的总运行时间。要从 Cloud Storage 流式传输 fastq 文件,请将 STREAM_INPUT
JSON 键设置为 True
:
"STREAM_INPUT": "True"
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
STREAM_INPUT |
确定是否直接从 Cloud Storage 流式传输 fastq 文件。 |
重复标记
默认情况下,流水线会移除 BAM 文件中的重复 read。您可以通过设置 DEDUP
JSON 键来更改此行为,如以下配置所示:
"DEDUP": "markdup"
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
DEDUP |
重复标记行为。 有效值:
|
碱基质量分数重新校准 (BQSR) 和已知位点
BSQR 需要基因变异的已知位点。默认行为是跳过流水线的这个阶段。但是,您可以通过 BQSR_SITES
JSON 键提供已知位点来启用 BSQR。如果提供了已知位点,则可以使用 DBSNP
文件在变体检出期间注释输出变体。
"BQSR_SITES": "gs://my-bucket/reference/Mills_and_1000G_gold_standard.indels.b37.vcf.gz,gs://my-bucket/reference/1000G_phase1.indels.b37.vcf.gz,gs://my-bucket/reference/dbsnp_138.b37.vcf.gz",
"DBSNP": "gs://sentieon-test/pipeline_test/reference/dbsnp_138.b37.vcf.gz"
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
BSQR_SITES |
启用 BSQR 并使用提供文件的逗号分隔列表作为已知位点。 |
DBSNP |
变体调用期间使用的 dbSNP 文件。 |
间隔
对于某些应用情形,例如靶向测序或全外显子组测序,您可能只需用到基因组的某一部分。在这些情况下,提供目标间隔文件可以加速处理并减少低质量的脱靶变体检出。您可以通过 INTERVAL_FILE
和 INTERVAL
JSON 键使用间隔。
"INTERVAL_FILE": "gs://my-bucket/capture-targets.bed",
"INTERVAL": "9:80331190-80646365"
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
INTERVAL_FILE |
包含要处理的基因组间隔的文件。 |
INTERVAL |
包含要处理的一个基因组间隔的字符串。 |
输出选项
默认情况下,流水线会生成预处理的 BAM、质量控制指标和变体检出。您可以使用 NO_BAM_OUTPUT
、NO_METRICS
和 NO_HAPLOTYPER
JSON 键停用这些输出。如果未提供 NO_HAPLOTYPER
参数或将其设为 NULL
,则可以使用 GVCF_OUTPUT
JSON 键以 gVCF 格式而不是 VCF 格式生成变体检出。
"NO_BAM_OUTPUT": "true",
"NO_METRICS": "true",
"NO_HAPLOTYPER": "true",
"GVCF_OUTPUT": "true",
下表提供了所用设置的说明:
JSON 键 | 说明 |
---|---|
NO_BAM_OUTPUT |
确定是否输出预处理的 BAM 文件。 |
NO_METRICS |
确定是否输出文件指标。 |
NO_HAPLOTYPER |
确定是否输出变体调用。 |
GVCF_OUTPUT |
确定是否以 gVCF 格式输出变体检出。 |
Sentieon® DNASeq® 版本
通过指定 SENTIEON_VERSION
JSON 键,您可以将任何最新版本的 Sentieon® DNASeq® 软件包与 Cloud Life Sciences API 结合使用,如下所示:
"SENTIEON_VERSION": "201808.08"
以下列出了有效版本:
201711.01
201711.02
201711.03
201711.04
201711.05
201808
201808.01
201808.03
201808.05
201808.06
201808.07
201808.08
清除数据
完成本教程后,您可以清理您在 Google Cloud 上创建的资源,避免日后再为这些资源支付费用。以下部分介绍如何删除或关闭这些资源。
删除项目
避免支付费用的最简单方法是删除您为本教程使用的项目。
要删除项目,请执行以下操作:
- 在 Google Cloud 控制台中,前往“项目”页面。
- 在项目列表中,选择要删除的项目,然后点击删除项目。
- 在对话框中输入项目 ID,然后点击关闭以删除项目。
后续步骤
- 如果您对此流水线有疑问或遇到问题,请发送电子邮件至 support@sentieon.com。