阿里云基因计算服务使用最佳实践 - 通过Remote API实现基因数据处理

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 阿里云基因计算服务(AGS)是一个依托于云计算平台,使用容器、工作流等云原生技术,针对生信行业基因数据处理的整体解决方案。您可以不用关心基因数据处理过程中的计算资源、处理逻辑、数据缓存等细节,只需要将您的源数据(Fastq文件)地址提供给ags,ags既可高效、快速完成整个数据分析流程,并将结果数据上传到您期望的存储空间。

AGS Remote API介绍:

阿里云基因计算服务(AGS)是一个依托于云计算平台,使用容器、工作流等云原生技术,针对生信行业基因数据处理的整体解决方案。您可以不用关心基因数据处理过程中的计算资源、处理逻辑、数据缓存等细节,只需要将您的源数据(Fastq文件)地址提供给ags,ags既可高效、快速完成整个数据分析流程,并将结果数据上传到您期望的存储空间。

AGS目前支持通用的生信流程包括:

wgs流程:支持GATK标准流程进行全基因组测序,支持GPU加速;
Mapping:支持输出包含MarkUp和不包含MarkUp的Bam数据;

AGS提供用户命令行工具,通过命令行可以实现远程提交任务。根据您的数据处理需求,通过定义具体参数指定Fastq数据源,和处理逻辑。AGS Remote API目前主要基于阿里云公共云服务,推荐的数据提供方式为将源数据放在阿里云OSS存储空间,ags获取数据后进程处理,并将处理结果上传到OSS存储。

用户如果使用阿里云AGS服务,您的资产包括:本地IDC机房(生成数据)、阿里云OSS存储服务(保存数据);阿里云AGS服务为您的数据进行计算、分析,并回传结果数据;
image.png
AGS处理流程:

  1. 用户IDC环境内,基因数据下线暂存;
  2. 用户通过数据传输工具(Ossutil)将待处理的fastq数据上传到阿里云OSS存储服务(用户账号下的OSS);
  3. 用户通过AGS命令行工具,向AGS服务提交测序任务,需在参数中定义作业的详细信息;
  4. AGS拉取Fastq数据;
  5. AGS处理数据;
  6. AGS上传结果数据(vcf/bam);

下面为您提供一个使用AGS Remote API实现基因数据处理的示例,您可以参考其中的操作步骤执行数据处理任务。

前置准备:

1. 安装ossutil:

数据上传您可以通过阿里云提供的Ossutil工具,具体安装过程可参考:ossutil安装

2. 数据上传

阿里云AGS服务目前只开通了深圳、北京2个Region,所以您的OSS Bucket需要选择这两个Region之一。

假设您的数据规划如下:

在深圳申请Bucekt名为:my-gene-shenzhen
fastq的保存目录为:fastq/task*/
vcf的保存目录为:vcf/task*/
bam的保存目录为:bam/task*/

上传fastq数据上传命令为:

ossutil cp {fastq}_1.fastq.gz oss://my-gene-shenzhen/fastq/task1/{fastq}_1.fastq.gz
ossutil cp {fastq}_2.fastq.gz oss://my-gene-shenzhen/fastq/task1/{fastq}_2.fastq.gz

3. AGS命令行工具下载:

可以通过下面地址下载AGS命令行工具:

Mac:http://ags-hub.oss-cn-hangzhou.aliyuncs.com/ags-mac
Linux: http://ags-hub.oss-cn-hangzhou.aliyuncs.com/ags-linux

下载后修改为可执行权限,并放到节点可执行目录($PATH目录下);

$ chmod 755 ags-linux && mv ags-linux /usr/local/bin/ags

4. 命令行配置,OSS授权:

通过ags命令行工具进行任务提交,您需要配置ags的ak权限:

ags config init

注意:配置的AK需要对您的oss bucket具有读写权限;

您还需要对OSS Bucket进行授权,以授权AGS服务账号具备文件的读写、GetBucketInfo权限:

ags config oss <your bucket name>

上述具体配置,可参考使用文档:https://help.aliyun.com/document_detail/148762.html

AGS目前支持两种数据类型,具体由Fastq数据目录结构决定:

一种是:一个样本由两个fastq文件组成,提交任务时,分别指定两个文件的名字;
另一种:一个样本由一个目录下面的多个fastq文件组成,提交任务时,指定目录名字;

任务示例-数据类型1:

一个样本由两个fastq文件组成,分别指定两个文件的名字;

1. Fastq数据源:

对如下bucket下面的fastq数据进行WGS流程分析:

image.png

2. 提交任务:

任务提交命令分析:

ags remote run wgs \   # 指定为wgs流程;
--region cn-shenzhen \  # 指定为深圳区域;
--fastq1 fastq/NA12878/NA12878_1.fastq.gz \   # 指定fastq1文件地址;
--fastq2 fastq/NA12878/NA12878_2.fastq.gz \   # 指定fastq2文件地址;
--bucket gene-shenzhen \  # 指定bucket名字;
--output-vcf output/wgs/NA12878.vcf \  # 指定vcf文件输出地址(在gene-shenzhen bucket下面);
--output-bam output/wgs/NA12878.bam \  # 指定bam文件输出地址(在gene-shenzhen bucket下面);
--service "g" \    # 指定service类型,支持s/g/p等服务类型;
--reference hs37d5 # 指定reference类型,支持hs37d5和hg19两个可选类型;

任务提交:

# ags remote run wgs --region cn-shenzhen --fastq1 fastq/NA12878/NA12878_1.fastq.gz --fastq2 fastq/NA12878/NA12878_2.fastq.gz --bucket gene-shenzhen --output-vcf output/wgs/NA12878.vcf --output-bam output/wgs/NA12878.bam --service "g" --reference hs37d5
INFO[0001] {"JobName":"wgs-gpu-vfbqw"}
INFO[0001] Job submit succeed

3. 查看任务信息:

查看当前任务信息:

# ags remote get wgs-gpu-vfbqw
+---------------+------------------+---------+-------------------------------+-----------------+-------------+-------------+
|   JOB NAME    |  JOB NAMESPACE   | STATUS  |          CREATE TIME          |    DURATION     | TOTAL READS | TOTAL BASES |
+---------------+------------------+---------+-------------------------------+-----------------+-------------+-------------+
| wgs-gpu-vfbqw | **************** | Running | 2020-01-19 11:19:00 +0800 CST | 8m31.309941114s |           0 |           0 |
+---------------+------------------+---------+-------------------------------+-----------------+-------------+-------------+

Job Name: 这次任务的名字(唯一代号);
JOB NAMESPACE:任务的名词空间(您的UID);
STATUS:任务的状态;
CREATE TIME:任务创建时间;
DURATION:任务的持续时间;
TOTAL READS:这次提交一共成功处理了多少 Reads;
TOTAL BASES:这次提交一共成功处理了多少Bases;

4. 查看输出结果:

命令行查看任务最终状态:

# ags remote get wgs-gpu-vfbqw
+---------------+------------------+-----------+-------------------------------+----------+-------------------------------+-------------+--------------+
|   JOB NAME    |  JOB NAMESPACE   |  STATUS   |          CREATE TIME          | DURATION |          FINISH TIME          | TOTAL READS | TOTAL BASES  |
+---------------+------------------+-----------+-------------------------------+----------+-------------------------------+-------------+--------------+
| wgs-gpu-vfbqw | **************** | Succeeded | 2020-01-19 11:19:00 +0800 CST | 34m16s   | 2020-01-19 11:53:16 +0800 CST |  1574530218 | 159027552018 |
+---------------+------------------+-----------+-------------------------------+----------+-------------------------------+-------------+--------------+

控制台查看结果文件(bam/vcf):
image.png

任务示例-数据类型2:

1. Fastq数据源:

一个样本包含在同一个目录(fastq/MultiFiles/2020011901)下面;
目录下面包含多个子目录:2020011901-73、2020011901-74;
每个子目录下面包含一对Fastq文件:文件以1/2.fq.gz结尾;

image.png
image.png
image.png

2. 提交任务:

任务解析:

ags remote run mapping \  # 指定为mapping流程;
--region cn-shenzhen \  # 指定Region为深圳;
--fastq1 fastq/MultiFiles/2020011901 \   # 指定fastq目录;
--fastq2 fastq/MultiFiles/2020011901 \   # 指定fastq目录,和fastq1一样;
--bucket gene-shenzhen \        # 指定bucket名字;
--output-bam output/mapping/2020011901.bam \   # 指定bam输出目录;
--service "g" \  # 指定服务等级;
--markdup "true" \  # 指定是否进行mark duplicate处理;
--reference hg19  # 指定reference类型;

提交任务:

# ags remote run mapping --region cn-shenzhen --fastq1 fastq/MultiFiles/2020011901 --fastq2 fastq/MultiFiles/2020011901 --bucket gene-shenzhen --output-bam output/mapping/2020011901.bam --service "g" --markdup "true" --reference hg19
INFO[0002] {"JobName":"mapping-gpu-bv8br"}
INFO[0002] Job submit succeed

3. 查看任务信息:

查看任务状态命令:ags remote get *

# ags remote get mapping-gpu-bv8br
+-------------------+------------------+---------+-------------------------------+------------------+-------------+-------------+
|     JOB NAME      |  JOB NAMESPACE   | STATUS  |          CREATE TIME          |     DURATION     | TOTAL READS | TOTAL BASES |
+-------------------+------------------+---------+-------------------------------+------------------+-------------+-------------+
| mapping-gpu-bv8br | **************** | Running | 2020-01-19 11:43:51 +0800 CST | 11m19.728373147s |   261733836 | 26173383600 |
+-------------------+------------------+---------+-------------------------------+------------------+-------------+-------------+

4. 查看输出结果:

命令行查看任务最终状态:

~# ags remote get mapping-gpu-bv8br
+-------------------+------------------+-----------+-------------------------------+----------+-------------------------------+-------------+-------------+
|     JOB NAME      |  JOB NAMESPACE   |  STATUS   |          CREATE TIME          | DURATION |          FINISH TIME          | TOTAL READS | TOTAL BASES |
+-------------------+------------------+-----------+-------------------------------+----------+-------------------------------+-------------+-------------+
| mapping-gpu-bv8br | **************** | Succeeded | 2020-01-19 11:43:51 +0800 CST | 11m45s   | 2020-01-19 11:55:36 +0800 CST |   261733836 | 26173383600 |
+-------------------+------------------+-----------+-------------------------------+----------+-------------------------------+-------------+-------------+

到控制台查看任务输出文件(bam):
image.png

结果验证:

任务执行完成,您可以到oss控制台查看任务输出目录,是否获取到期望的结果文件。
如果没有获取结果文件,请及时与我们联系。

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
目录
相关文章
|
8天前
|
JSON 算法 安全
探索RESTful API设计的最佳实践
【9月更文挑战第2天】在数字化时代的浪潮中,后端开发如同搭建一座桥梁,连接着用户与数据的无限可能。本文将深入探讨如何打造高效、可维护的RESTful API,从资源命名到状态码的巧妙运用,每一个细节都隐藏着提升用户体验的智慧。你将学会如何在浩瀚的代码海洋中,用简洁明了的设计原则,引领用户安全抵达数据的彼岸。让我们一起启航,探索API设计的奥秘,让后端开发成为艺术与科学的完美结合。
|
6天前
|
人工智能 Serverless API
一键服务化:从魔搭开源模型到OpenAI API服务
在多样化大模型的背后,OpenAI得益于在领域的先发优势,其API接口今天也成为了业界的一个事实标准。
一键服务化:从魔搭开源模型到OpenAI API服务
|
1天前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 云原生 API 网关 2024 年 08 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
|
9天前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
|
11天前
|
缓存 JavaScript 前端开发
构建RESTful API的最佳实践
【8月更文挑战第31天】 本文将带你深入了解如何设计和实现一个高效、可维护的RESTful API。我们将探讨API设计的关键原则,包括资源命名、请求方法的使用以及状态码的正确应用。文章还将展示如何使用Node.js和Express框架创建一个简单的API,并解释如何确保API的安全性和性能优化。无论你是新手还是有经验的开发者,这篇文章都将提供实用的指导和代码示例,帮助你构建更好的后端服务。
|
11天前
|
安全 测试技术 API
探索RESTful API设计的最佳实践
【8月更文挑战第31天】 在数字世界的构建中,RESTful API如同连接不同软件组件的桥梁。本文将引导您深入理解RESTful API设计的精髓,并展示如何通过最佳实践来提升API的可维护性、扩展性和用户友好性。我们将从基础概念出发,逐步深入到高级技巧,确保理论知识与实战技能并重,让您能够设计出既优雅又强大的API。
|
11天前
|
API Java Python
API的神秘面纱:从零开始构建你的RESTful服务
【8月更文挑战第31天】在现代网络应用开发中,RESTful API已成为数据交互的标准。本文通过比较流行的技术栈(如Node.js、Python的Django和Flask、Java的Spring Boot)及其框架,帮助你理解构建RESTful API的关键差异,涵盖性能、可扩展性、开发效率、社区支持、安全性和维护性等方面,并提供示例代码和最佳实践,指导你选择最适合项目需求的工具,构建高效、安全且易维护的API服务。
22 0
|
11天前
|
Java 缓存 数据库连接
揭秘!Struts 2性能翻倍的秘诀:不可思议的优化技巧大公开
【8月更文挑战第31天】《Struts 2性能优化技巧》介绍了提升Struts 2 Web应用响应速度的关键策略,包括减少配置开销、优化Action处理、合理使用拦截器、精简标签库使用、改进数据访问方式、利用缓存机制以及浏览器与网络层面的优化。通过实施这些技巧,如懒加载配置、异步请求处理、高效数据库连接管理和启用GZIP压缩等,可显著提高应用性能,为用户提供更快的体验。性能优化需根据实际场景持续调整。
35 0
|
11天前
|
API 网络架构 UED
构建RESTful API的最佳实践
【8月更文挑战第31天】 在数字化时代,RESTful API已成为连接不同软件系统、提供数据服务的关键桥梁。本文将深入探讨如何构建高效、可维护的RESTful API,涵盖设计原则、安全策略和性能优化等关键方面。通过具体代码示例,我们将一步步展示如何实现一个简洁、直观且功能强大的API。无论你是新手还是有经验的开发者,这篇文章都将为你提供宝贵的指导和启示。
|
11天前
|
缓存 JavaScript API
构建高效的RESTful API:后端开发的最佳实践
【8月更文挑战第31天】在数字化时代,RESTful API成为连接不同软件组件的桥梁。本文将揭示如何打造一个既高效又易于维护的RESTful API,涵盖设计原则、代码实现及性能优化技巧。你将学习到如何运用最佳实践来提升API的响应速度和可扩展性,同时确保安全性和可靠性。