Genomic 데이터 처리 참조 아키텍처

이 문서에서는 다양한 방법과 워크플로 엔진을 사용한 게놈 데이터 처리 수행을 위하여 Cloud Life Sciences API와 다른 Google Cloud 데이터 제품을 사용하는 참조 아키텍처에 대해 설명합니다. 특히 이 문서는 2차 분석의 정렬 및 변이 추출 단계에 초점을 맞추며 생명과학 조직의 생물정보학자, 연구자, 연구 IT 팀, 기타 기술 전문가를 대상으로 합니다.

Google Cloud는 비용 효율성을 갖춘 2차 분석 솔루션을 규모에 따라 실행하기 위한 유연한 API, 서비스, 도구 모음을 제공합니다. 2차 분석에는 원시 판독 필터링, 서열 판독 정렬과 구성, 정렬 판독에 대한 QA와 변이 추출이 포함되지만 이에 국한되지는 않습니다.

아키텍처

다음 다이어그램은 게놈 데이터를 대규모로 처리하는 단계와 Google Cloud에서 수행되는 단계를 보여줍니다.

Google Cloud를 활용한 대규모 게놈 데이터 처리

앞의 다이어그램에서 볼 수 있듯이 게놈 데이터 샘플은 먼저 기본 분석을 거친 다음 2차 분석을 위해 Google Cloud에 원시 데이터로 수집됩니다. 그런 다음 처리된 데이터는 3차 분석을 거치며 생물정보학자와 기타 기술 전문가가 클라우드에서 다운로드할 수 있는 보고서(예: PDF)를 생성합니다.

Genomic 데이터 처리 참조 아키텍처 구성요소

이 문서에는 Cloud Life Sciences API 사용에 대한 세부정보와 함께 API를 사용하여 게놈 데이터 처리를 수행하는 여러 방법을 개괄하는 두 개의 참조 아키텍처에 대한 설명이 포함되어 있습니다.

Cloud Life Sciences API 사용

Cloud Life Sciences API는 일괄 작업의 리소스 요구사항에 따라 최적의 컴퓨팅 리소스를 제공하는 완전 관리형 컴퓨팅 서비스를 제공합니다. API를 사용하면 Docker 컨테이너에서 실행되는 Compute Engine 인스턴스에서 명령줄 도구를 만들고 실행하고 모니터링할 수 있습니다. 여러 명령줄 도구를 구성하여 단계 사이의 종속 항목을 특정 순서로 실행할 수 있습니다. Cloud Life Sciences API에는 Docker 컨테이너로 구성된 파이프라인과 같은 워크플로를 실행하는 데 사용할 수 있는 WorkflowsServiceV2Beta 서비스가 포함되어 있습니다.

Pipeline 객체는 하나 이상의 Action 설명과 파이프라인을 실행하는 데 필요한 클라우드 리소스를 설명하는 Resources 메시지로 구성됩니다. 각 작업은 단일 Docker 컨테이너 실행을 설명하며, 여기에는 하나 이상의 command 객체가 포함될 수 있습니다. Action 객체는 이전 객체가 백그라운드에서 실행되도록 설정되지 않은 한 이전 객체가 종료될 때까지 각 객체가 실행을 대기하도록 순차적으로 실행됩니다. 각 Action 객체의 실행 방식에 영향을 주고 종료 상태와 파이프라인의 작업의 관계에 영향을 주는 플래그가 있습니다. Action 객체가 백그라운드에서 실행되거나 종료 상태를 무시해야 하는 경우입니다. 파이프라인 작성자는 파이프라인을 실행하는 데 필요한 클라우드 리소스를 설명하는 Resources 메시지를 만듭니다.

Resources 메시지의 사양에는 다음이 포함될 수 있습니다.

  • 커스텀 머신 모양 및 선점형을 포함한 가상 머신(VM) 크기
  • VM 할당을 위한 영역 및 리전
  • 네트워킹 옵션(네트워크 크기 제한으로 인해 대규모 처리 프로젝트의 경우 중요)
  • 연결된 가속기(GPU)
  • 연결된 디스크
  • 서비스 계정 및 범위

Cloud Life Sciences API는 API 호출을 통해 Pipeline 객체를 수신하면 다음 작업을 수행합니다.

  1. Resources 메시지 콘텐츠를 기반으로 Compute Engine VM 인스턴스를 만듭니다.
  2. Action 설명에 지정된 모든 Docker 이미지를 다운로드합니다.
  3. Action 객체를 지정된 이미지 및 명령어가 있는 새 Docker 컨테이너로 실행합니다.
  4. Compute Engine VM 인스턴스를 삭제합니다.

Action 설명에 설명된 일반적인 작업 모음에는 다음이 포함될 수 있습니다.

  • 입력 파일을 다운로드합니다.
  • 명령어를 실행합니다.
  • Cloud Storage에 로그를 복사합니다.
  • 출력 파일을 업로드합니다.

Cloud Life Sciences API는 선점형 VM 인스턴스, GPU, Tensor Processing Unit(TPU)과 함께 Google Cloud의 확장 가능한 고성능 스토리지 및 처리 기능을 사용하여 데이터 분석을 위한 안전하고 확장 가능한 환경을 제공합니다. 여기에는 단일 샘플 또는 공동 데이터 세트에서 GATK(Genome Analytics Tool)DeepVariant와 같은 업계 표준 2차 분석 프레임워크를 빠르고 쉽고 비용 효율적으로 실행하는 것이 포함됩니다.

Cloud Life Sciences API는 Cromwell, Nextflow, Galaxy와 같은 오픈소스 워크플로 엔진과 통합됩니다. 또한 Nextflow 및 Galaxy는 Compute Engine 및 Cloud Storage와의 직접 통합을 통해 Google Cloud에서의 컴퓨팅을 지원합니다. 다음 다이어그램은 Cloud Life Sciences API의 구성요소와 Google Cloud에서 게놈 2차 분석 파이프라인을 실행하는 데 필요한 기타 서비스를 포함하는 참조 아키텍처를 보여줍니다.

Persistent Disk, Container-Optimized OS, GPU를 사용하여 Compute Engine 컴퓨팅 노드에서 실행되는 Cloud Life Sciences API를 보여주는 참조 아키텍처

Genomic 데이터 처리: Cromwell을 사용하여 GATK 권장사항 워크플로 실행

Cloud Life Sciences API를 워크플로 엔진과 함께 사용하여 작업을 조정할 수 있습니다. 다음 예시에서는 Cromwell이 GATK 권장사항 워크플로를 적용하면서 2차 분석을 수행하는 데 사용됩니다.

Cromwell은 다양한 환경에서 실행되어 워크플로를 예약, 실행, 관리할 수 있는 오픈소스 워크플로 관리 시스템입니다. Cromwell은 워크플로 설명 언어(WDL)에 정의된 워크플로를 읽고 Cloud Life Sciences API를 사용하여 워크플로에서 개별 작업을 실행합니다. 이 경우 Cromwell은 Compute Engine VM 인스턴스에서 실행되며, 운영 데이터를 저장하기 위한 Cloud SQL 서버가 있습니다. 그런 다음 Cromwell VM은 Cloud Life Sciences API에 API를 호출하여 정의된 각 작업을 실행하여 WDL에 구성된 각 작업의 VM 인스턴스를 시작합니다.

GATK에는 변이 발견 및 유전자형을 위한 도구가 포함되어 있습니다. GATK 권장사항 워크플로에는 특정 사용 사례에 대한 여러 파이프라인이 포함되어 있습니다. 이 예시에서는 프로덕션 워크플로인 PairedEndSingleSampleWf에 중점을 둡니다. 이 워크플로에는 데이터 사전 처리, 생식계열 단일 염기 다형성(SNP)의 초기 변이 추출, 단일 샘플에서 삽입-결실(indel) 발견, 인간의 전체 게놈 시퀀싱 데이터가 포함됩니다.

워크플로는 하나 이상의 판독 그룹과 함께 맵핑되지 않은 BAM(uBAM) 형식의 인간 전체 게놈 페어-엔드 시퀀싱 데이터를 가져오고 ALT contig가 있는 Hg38 참조 게놈을 사용합니다. 출력에는 cram 파일, cram 색인, cram md5, GVCF 및 해당 색인, BQSR 보고서, 여러 요약 측정항목이 포함됩니다. 사용된 샘플은 전체 샘플의 판독 그룹 3개만 포함한 다운샘플링된 NA12878 버전입니다. 워크플로는 개별 작업을 정의하는 일련의 WDL 파일과 함께 입력 사양 및 일반 옵션으로 패키징됩니다. WDL 파일은 각 VM 인스턴스의 CPU 코어 및 메모리 수, 각 VM 인스턴스에 설치할 컨테이너, 실행할 명령어, 입력 및 출력 파일 위치와 같은 각 작업의 클라우드 리소스를 지정합니다. 단계가 선점형 머신에서 실행되어야 하는 경우와 Action 객체를 다시 시도해야 하는 경우 등 다른 사양도 있습니다.

다음 다이어그램은 분석을 실행하는 데 필요한 단계를 포함해 Cromwell을 사용하여 Cloud Life Sciences API와 함께 GATK 권장사항 워크플로를 실행하여 게놈 2차 분석을 수행하는 일반적인 아키텍처를 보여줍니다.

Cromwell을 사용하여 Cloud Life Sciences API로 GATK 권장사항 실행

다이어그램은 2차 분석을 실행하기 위한 다음 단계를 보여줍니다.

  1. 시퀀싱 후 원시 기반 추출을 로컬 스토리지 또는 네트워크 연결 스토리지(NAS)에 저장하여 uBAM 파일로 변환합니다. 그런 다음 이러한 uBAM 파일을 Cloud Storage 버킷으로 전송합니다.
  2. ID 및 액세스 관리(IAM)를 사용하여 서비스 계정 역할을 하도록 인증합니다.
  3. Compute Engine에서 실행 중인 Cromwell 서버에 작업을 제출합니다.

    요청은 Google Cloud 방화벽 규칙을 사용하여 Virtual Private Cloud에 액세스할 수 있도록 구성된 IAP(Identity-Aware Proxy)를 거치게 됩니다.

  4. Cromwell 서버는 GATK의 워크플로를 공개 저장소에서 가져옵니다.

  5. Cromwell 서버는 Cloud Life Sciences API를 호출하여 작업을 시작합니다.

  6. Cloud Life Sciences API는 GATK 공개 저장소에서 각 작업의 컨테이너를 가져옵니다.

  7. Cloud Life Sciences API는 각 작업에 대해 Compute Engine에서 VM을 시작하고 각 머신에서 컨테이너를 시작합니다.

  8. VM 인스턴스는 Cloud Storage 버킷에서 입력 파일을 검색합니다.

  9. VM 인스턴스는 연산 작업을 수행하고 Cloud Storage 버킷에 중간, 로그, 출력 파일을 저장합니다.

Genomic 데이터 처리: DeepVariant 실행

DeepVariant는 차세대 DNA 시퀀싱 데이터에서 유전 변이를 추출하기 위해 심층신경망을 사용하는 오픈소스 분석 파이프라인입니다. 이 분석 파이프라인은 Google의 리서치팀에서 개발하였으며 진유전체 또는 게놈에 대한 SNP 및 삽입-결실 변이 추출에 TensorFlow를 사용합니다. DeepVariant는 정렬된 시퀀싱 판독을 변이 추출로 변환하는 데 사용됩니다.

DeepVariant를 사용하려면 가장 높은 수준에서 세 가지 입력을 제공해야 합니다.

  • FASTA 형식의 참조 게놈 및 Samtools faidx 명령어를 사용하여 생성된 .fai 색인 파일
  • BAM 형식의 정렬된 판독 파일과 해당 색인 파일(.bai). 판독은 제공된 참조 게놈에 맞춰 정렬되어야 합니다.
  • 변이 추출에 사용되는 DeepVariant ML 모델입니다.

DeepVariant의 출력은 VCF 형식의 모든 변이 추출 목록입니다. DeepVariant는 TensorFlow 머신러닝 프레임워크와 통합됩니다.

Docker 컨테이너 또는 직접 바이너리에서 DeepVariant를 실행할 수 있으며 온프레미스 하드웨어 또는 클라우드에서 실행할 수 있습니다. DeepVariant에는 GPU 및 TPU와 같은 하드웨어 가속기를 사용하는 기능이 포함되어 있습니다. DeepVariant 빠른 시작 가이드에 설명된 대로 Docker를 사용하여 하나의 명령어만으로 Docker 컨테이너에서 DeepVariant를 실행할 수 있습니다. Google Cloud의 프로덕션 사용 사례의 경우, 워크플로에 DeepVariant 프로세스를 통합하고 워크플로 엔진에서 호출하는 것이 좋습니다.

또는 DeepVariant 실행 자습서에서 설명한 방법과 유사한 방식으로 Cloud Life Sciences API를 사용하는 DeepVariant Runner를 사용할 수 있습니다. 이를 통해 비용 및 속도에 최적화된 Docker 기반 파이프라인을 사용하여 대규모로 DeepVariant를 실행할 수 있습니다.

다음 다이어그램은 Google Cloud에서 DeepVariant 파이프라인을 실행하기 위한 일반적인 아키텍처를 보여줍니다.

Google Cloud에서 DeepVariant 파이프라인을 실행하기 위한 아키텍처

이전 다이어그램에 표시된 대로 DeepVariant를 실행하는 단계는 다음과 같습니다.

  1. 샘플에서 매핑된 DNA 판독을 만든 후에는 이러한 BAM 파일을 Cloud Storage 버킷으로 전송합니다.
  2. IAM을 사용하여 서비스 계정 역할을 하도록 인증합니다.
  3. Cloud Life Sciences API를 호출하여 작업을 시작하는 DeepVariant를 실행합니다.
  4. Cloud Life Sciences API는 공개 저장소에서 각 작업에 대한 DeepVariant 컨테이너를 가져옵니다.
  5. Cloud Life Sciences API는 각 작업에 대해 Compute Engine에서 VM을 시작하고 각 머신에서 컨테이너를 시작합니다.
  6. VM 인스턴스는 Cloud Storage 버킷에서 입력 파일을 검색합니다.
  7. VM 인스턴스는 연산 작업을 수행하고 Cloud Storage 버킷에 중간, 로그, 출력 파일을 저장합니다.

데이터 거버넌스

이 문서에서 설명하는 아키텍처는 게놈 데이터 분석과 관련된 구성요소에 중점을 둡니다. 인간 게놈 데이터를 포함하는 프로덕션 통합의 경우 관할권의 요구사항과 권장사항에 따라 Google Cloud에서 추가 구성요소를 구성해야 할 수 있습니다.

Google Cloud는 Google Cloud 권장사항을 캡슐화하여 의료 보안, 개인정보 보호, 규정 준수 요구사항을 충족하는 엔드 투 엔드 아키텍처를 제공합니다. Cloud Healthcare Data Protection Toolkit에는 적절한 액세스 구성, 감사 로그 유지, 의심스러운 활동 모니터링 같이 의료 데이터에 권장되는 여러 보안 및 개인정보 보호 권장사항과 제어가 포함됩니다. 이러한 기능과 Google Cloud가 고객 데이터를 보호하는 방법에 대한 자세한 내용은 Google Cloud를 사용한 데이터 보안 백서를 참조하세요.

데이터 상주

데이터 보존 요구사항이 있는 조직의 경우 서비스별 약관의 'General Services' 섹션을 참조하여 Google Cloud의 데이터 보존 약정을 검토하세요. 요구사항을 지원하도록 사용자 환경을 구성하는 데 도움이 되는 도구와 제어 기능이 요약되어 있습니다.

조직 정책

프로젝트 전체에서 리소스의 물리적 위치를 제한하려면 리소스 위치 제약조건이 포함된 조직 정책을 설정할 수 있습니다. 지원 서비스 목록은 리소스 위치 지원 서비스를 참조하세요.

Google Cloud 리소스 식별자

이 문서의 목적상 데이터 보존 약정은 리소스 식별자, 속성 또는 기타 데이터 라벨에 적용되지 않습니다. 이러한 식별자, 속성 또는 기타 데이터 라벨(예: 파일 이름)에 민감한 정보가 노출되지 않도록 할 책임은 사용자에게 있습니다.

Cloud Life Sciences API 리전 및 영역

Cloud Life Sciences API를 호출할 때 요청을 전송할 리전을 지정해야 합니다. 다음 예시는 Google Cloud 프로젝트 foo 및 리전 us-central1에서 파이프라인을 실행하기 위한 엔드포인트 URI를 보여줍니다.

v2beta/projects/foo/locations/us-central1/workflows:runPipeline

컨테이너 이미지 이름, 입력 및 출력 파일 이름, Cloud Life Sciences API에 대한 요청에서 전송된 기타 정보 등 작업에 대해 저장된 모든 메타데이터가 이 리전에 저장됩니다.

Cloud Life Sciences API가 Compute Engine VM 인스턴스를 시작할 때 API 호출에는 VM 인스턴스를 시작할 리전 또는 영역이 포함되어야 합니다. 하나 이상의 리전 또는 영역을 구성하여 VM의 위치를 제한할 수 있습니다. VM 인스턴스, Compute Engine의 저장 데이터, 영구 디스크는 지정된 리전에 유지됩니다. CPU 플랫폼, 머신 유형, SSD, GPU와 같은 Compute Engine 인스턴스에 사용할 수 있는 기능은 리전 및 영역마다 다릅니다. 따라서 리전 또는 영역에서 사용량을 제한하기 전에 필요한 리소스를 리전 또는 영역에서 사용할 수 있는지 확인하세요.

자세한 내용은 Compute Engine 데이터 보존 세부정보 및 약관을 참조하세요.

Google Cloud Storage

입력 및 출력 파일, 임시 작업 파일, 영구 디스크 스냅샷을 Cloud Storage에 저장할 수 있습니다. Cloud Storage 버킷의 저장 데이터는 버킷을 구성할 때 선택한 리전, 이중 리전 또는 멀티 리전 내에서 유지됩니다. 자세한 내용은 Cloud Storage 버킷 위치의 현재 목록을 참조하세요.

가용성, 성능, 효율성을 최적화하려면 Cloud Storage 이중 리전을 사용하면 됩니다. 이 옵션을 선택하면 버킷의 데이터가 특정 리전 두 개에 비동기식으로 복사되므로 데이터가 리전 간 중복됩니다. 자세한 내용은 Cloud Storage 이중 리전을 참조하세요.

성능과 데이터 보존을 위해 가능한 경우 Cloud Storage, Compute Engine, Life Sciences API에 동일한 리전을 사용합니다.

자세한 내용은 Cloud Storage 데이터 보존 세부정보 및 약관을 참조하세요.

다음 단계