文档首页/ 基因容器 GCS/ API参考/ 快速入门/ 基于CCE的GATK4最佳实践流程
更新时间:2023-06-20 GMT+08:00
分享

基于CCE的GATK4最佳实践流程

本节通过示例流程调用GCS的API启动示例流程的基因测序,介绍使用GCS API的基本流程。

启动完成的基因测序结果如下所示。

通过GCS执行基因测序流程的步骤如下:

  1. 参照3.1-构造请求中的调用方式获取用户Token,因为在后续的请求中需要将Token放到请求消息头中作为认证。
  2. 调用5.1.1-部署environment接口创建环境,为后续启动示例流程提供集群计算资源。
  3. 登录GCS控制台,下载示例流程gatk4-best-practices.yaml,并调用5.2.1-创建workflow接口,上传示例流程作为自己的流程。
  4. 调用5.3.1-创建execution接口执行计算流程,运行示例流程的基因测序。
  5. 调用5.3.3-删除execution接口,删除测序流程,清理资源。
  6. 如果后续不再需要此计算流程,调用5.2.2-删除workflow接口,删除workflow,清理资源。
  7. 如果后续不再需要执行计算任务,可以调用5.1.2-删除environment接口,删除环境,清理资源。

前提条件

  • 根据选择区域,获取对应的区域名称。当前GCS仅支持如表1所示区域。
    表1 区域名称

    区域

    区域名称

    华北-北京一

    cn-north-1

    华北-北京四

    cn-north-4

    华东-上海二

    cn-east-2

  • 根据选择的区域,获取对应的IAM(请参见地区和终端节点)、GCS的Endpoint(请参见终端节点)。
  • 若您第一次使用GCS,请先访问GCS控制台,授权GCS服务使用其它相关服务。
  • 已获取项目ID,具体请参见获取项目ID
  • 已创建至少一个可用密钥对,具体请参见创建密钥对
  • 已创建OBS桶,桶的创建方法参见添加OBS桶
  • 已创建的可用文件存储卷名称,CCE的文件存储卷的创建和导入参见文件存储卷
  • 已创建的集群,集群创建方法参见CCE的集群管理部分,创建好集群后,请设置弹性伸缩策略,可以参见CCE插件管理的autoscaler

创建Environment

假设区域选择为华北北京四区,则前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):

  • IAM的Endpoint为:iam.cn-north-4.myhuaweicloud.com
  • GCS的Endpoint为:gcs.cn-north-4.myhuaweicloud.com
  • 区域名称:"cn-north-4"
  • 秘钥对名称:"KeyPair-3587"
  • 项目ID:10556c21********8bf10512591189e
  • OBS桶:gene-container-bucket
  • 集群ID:d9d8912d-a6cb-11e8-bc20-0255ac105709
  1. 调用其他接口前,需要参见3.1-构造请求中的调用方式获取token,并设置成环境变量。

    1. 获取token。

      其中加粗的蓝色字体部分,需要替换为真实的数据。

      • iam_endpoint:IAM的Endpoint,以cn-north-4的Endpoint为例则应该为iam.cn-north-4.myhuaweicloud.com。
      • username:华为云的用户账号,必填项。
      • password:华为云的用户密码,必填项。
      • domainname:若是子账号,请填写对应的主账号名称。若不是子账号,请与username保持一致,必填项。
      • cn-north-4:此处以中国华北区4为例,必填项。
        curl -H "Content-Type:application/json" https://{iam_endpoint}/v3/auth/tokens -X POST -d '{"auth": {"identity":{"methods":["password"],"password":{"user":{"name":"username","password":"password","domain":{"name":"domainname"}}}},"scope":{"project":{"name":"cn-north-4"}}}}' -v -k

      响应Header中“X-Subject-Token”的值即为Token:

      X-Subject-Token:
      MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
    2. 使用如下命令将token设置为环境变量,方便后续使用。

      export Token={X-Subject-Token}

      X-Subject-Token即为上一步骤获取到的token,如下所示。

      export Token=MIIDkgYJKoZIhvcNAQcCoIIDgzCCA38CAQExDTALBglghkgBZQMEAgEwgXXXXX...
    3. 将API的入口地址设置为环境变量,方便后续事使用,入口地址为“https://GCS_ENDPOINT”。
      export GCS_Endpoint="https://gcs.cn-north-4.myhuaweicloud.com"

  2. 创建环境。

    调用5.1.1-部署Environment接口,利用前提条件中已创建的集群创建GCS环境。
    curl -i -k -X POST -H "X-Auth-Token: $Token" ${GCS_ENDPOINT}/v1/environments -d '{"source":"cce","project_id":"10556c21********8bf10512591189e","cluster_id":"d9d8912d-a6cb-11e8-bc20-0255ac105709","bucket_name":"gene-container-bucket","env_name":"gcs-env-cce-new"}'

    命令中主要参数说明如下:

    • project_id: 前提条件中获取到的项目ID
    • source: 创建环境的来源 cce表示,创建cce环境
    • bucket_name: 前提条件中已创建的OBS桶名称
    • cluster_id:前提条件中已创建的集群ID
    • env_name:要创建的环境的名称

    创建成功的时候会返回环境的ID,为了后续操作,需要记录下环境的ID。

    {  
        "id": "6e03f731-9c31-569a-4121-6a10b6996458"
    }

  3. 将环境ID设置为环境变量。

    export ENVIRONMENT_ID=6e03f731-9c31-569a-4121-6a10b6996458

  4. 查看环境。

    调用5.1.4-查询Environment接口,查询GCS环境。

    curl -i -k -X GET -H "X-Auth-Token: $Token" ${GCS_ENDPOINT}/v1/environments/${ENVIRONMENT_ID}

    查询成功的时候会返回环境的详情。

    {
    	"guid": "bcdd92fd-0380-e114-5dbe-38dac77857e9",
    	"project_id": "10556c21********8bf10512591189e",
    	"domain_id": "b0148a2cb********477bab429e48e7",
    	"name": "gcs-env-cce-new",
    	"description": "Gene container environment form cce",
    	"status": "Running",
    	"create_at": "2018-08-13T03:50:30Z",
    	"update_at": "2018-08-13T07:27:02Z",
    	"cluster_id": "d9d8912d-a6cb-11e8-bc20-0255ac105709",
    	"cluster_name": "gcs-cluster",
    	"cpu": 8,
    	"memory": 16,
    	"source": "cce",
    	"stack_id": "10185add-acde-cc18-b8dd-b3a87a1f484c"
    	"is_gene_cluster": false,
    	"bucket_name": "gene-container-bucket",
    	"default_env": false,
    	"order_id": ""
    }

  5. 将集群的ID设置为环境变量。

    export CLUSTER_ID=d9d8912d-a6cb-11e8-bc20-0255ac105709

创建Workflow

  1. 登录GCS控制台,下载示例流程。

    1. 选择左侧导航栏的“基因测序”>“示例流程”。

    2. 找到gcs-grammar示例流程,单击下载文件,保存示例流程到本地。

  2. 上传示例流程gcs-grammar.yaml到执行curl命令的服务器的任一路径,例如/home/gcs-user。
  3. 进入服务器中流程文件所在路径,调用创建workflow接口,上传gatk4-best-practices.yaml作为自己的流程。

    curl -k -X POST -H "X-Auth-Token: ${Token}" -F 'resource={"name":"gcs-demo-workflow", "description":"gcs demo workflow", "filename":"gatk4-best-prectices.yaml" }' -F 'archive_content=@gatk4-best-prectices.yaml' ${GCS_Endpoint}/v1/workflows

    命令中参数说明如下:

    • name:流程名字。
    • description:流程描述。
    • filename:要上传的workflow文件的文件名
    • archive_content:要上传的workflow文件。如果执行curl命令时,未进入到模板文件所在路径,可以在此处加上路径,例如模板文件gcs-grammar.yaml/home/gcs-user路径下,则命令为archive_content=@/home/gcs-user/gcs-grammar.yaml

    创建成功的时候会返回流程的ID,为了后续操作,需要记录下此流程的ID。

    {  
        "id": "f2637630-5d83-11e8-a6de-0255ac101a0c"
    }

  4. 将workflow ID设置为环境变量。

    export WORKFLOW_ID=d9d8912d-a6cb-11e8-bc20-0255ac105709

创建Execution

假设已获取前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):

  • 集群下文件存储卷名称:"gcs-sfs-358712"
  • 项目ID:10556c2112784111b8bf10512591189e
  1. 调用5.3.1-创建execution接口,创建execution。

    curl -k -X POST -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions -d '{"name":"gcs-demo-execution", "workflow_id": ${WORKFLOW_ID}, "cluster_id": ${CLUSTER_ID}, "sfs_pvc_name": "gcs-sfs-358712", "data_bucket_name": "gene-container-bucket", "target": "cce"}'

    命令中参数说明如下

    • name自定义execution名称,例如gcs-demo-execution
    • workflow_id:创建流程过程中创建的流程ID
    • sfs_pvc_name:文件存储卷名称
    • cluster_id创建环境过程中创建的集群ID
    • data_bucket_name:前提条件中的OBS桶
    • target:执行execution的环境类型,cce表示使用的是cce环境
    {  
        "id": "10185add-acde-cc18-b8dd-b3a87a1f484c"
    }

  2. 将execution id设置为环境变量。

    export EXECUTION_ID=10185add-acde-cc18-b8dd-b3a87a1f484c

  3. 调用查询execution接口,查询execution。

    curl -k -X GET -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}

    GCS界面可以查看运行成功的execution

清理资源

假设已获取前提条件中的信息为如下值(实际操作中您需要根据实际情况替换):

  • 项目ID:10556c2112784111b8bf10512591189e

OBS、SFS等资源如果不再需要,请至对应该服务的控制台手动删除。

  1. 调用删除execution接口,删除创建的execution。

    curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}

    如果使用的集群是创建环境时一并创建的,可以设置delete_cluster参数,将集群一并删除。

    curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/executions/${EXECUTION_ID}?delete_cluster=true

  2. 如果后续不再需要执行计算任务,调用删除environment接口,删除创建的environment。

    curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/environments/${ENVIRONMENT_ID}

  3. 如果后续不再需要此计算流程,调用删除workflow接口,删除创建的workflow。

    curl -k -X DELETE -H "X-Auth-Token: $Token" ${GCS_Endpoint}/v1/workflow/${WORKFLOW_ID}

相关文档