DeepVariant 실행

DeepVariant는 차세대 DNA 시퀀싱 데이터에서 유전 변이를 추출하기 위해 심층신경망을 사용하는 분석 파이프라인입니다.

이 페이지에서는 Google Cloud에서 단일 Compute Engine 인스턴스를 사용하여 DeepVariant를 실행하는 방법을 설명합니다.

더 복잡한 구성들은 DeepVariant GitHub 저장소에서 확인할 수 있습니다. 예를 들어 여러 인스턴스를 사용하여 DeepVariant를 실행할 수 있습니다. 이러한 변이를 통해 처리 속도를 개선하고 비용을 줄일 수 있습니다.

DeepVariant 실행은 다음 세 부분으로 구성됩니다.

  1. 예시 만들기: DeepVariant가 입력 데이터를 사전 처리하고 내부 TensorFlow 형식을 사용해서 데이터 예시를 저장합니다. 이 단계는 병렬로 실행할 수 있으며, 여기서 입력 샤드는 독립적으로 처리됩니다.

  2. 변이 추출: DeepVariant는 예시로부터 추론하고 내부 TensorFlow 형식을 사용하여 공유된 파일로 저장하는 심층신경망을 실행합니다.

  3. 후처리 변이: DeepVariant는 변이를 내부 TensorFlow 형식에서 VCF 또는 gVCF 파일로 변환합니다. 이 단계는 단일 스레드로 실행됩니다.

이 가이드에서는 이러한 단계를 단일 인스턴스를 사용해서 실행합니다. 첫 번째와 두 번째 단계는 여러 코어를 사용한 병렬화 사용 이점이 있습니다. 하지만 세 번째 단계는 단일 스레드에서 실행되기 때문에 이와 동일한 이점이 없습니다.

목표

이 가이드를 완료하고 나면 다음 작업 방법을 알게 됩니다.

  • Google Cloud에서 DeepVariant 실행

비용

이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • Compute Engine

가격 계산기를 사용하여 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다. 새 Cloud Platform 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Compute Engine API를 사용 설정합니다.

    API 사용 설정

  5. Cloud SDK 설치 및 초기화
  6. : 명령어 프롬프트가 필요하세요? Cloud Shell을 사용할 수 있습니다. Cloud Shell 명령줄 환경에는 Cloud SDK가 이미 포함되어 있으므로 별도로 설치할 필요가 없습니다.

Compute Engine 인스턴스 만들기

DeepVariant를 실행하려면 Compute Engine 인스턴스를 만들어야 합니다. Google Cloud Console 또는 gcloud 도구를 사용하여 인스턴스를 만들 수 있습니다.

콘솔

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 인스턴스 만들기를 클릭합니다.
  3. 인스턴스의 이름PROJECT_ID-deepvariant-run 형식으로 선택합니다. 여기서 PROJECT_ID는 Google Cloud 프로젝트의 ID입니다.
  4. 인스턴스의 리전영역을 선택합니다. 특정 위치에서 인스턴스를 실행할 특별한 이유가 없으면 리전으로 us-central1 (Iowa)을 선택하고 영역으로 us-central1-a를 선택합니다.
  5. 머신 유형 메뉴에서 n1-standard-64(vCPU 64개, 240GB 메모리)를 선택합니다.
  6. CPU 플랫폼 메뉴에서 Intel Skylake 이상을 선택합니다.
  7. 부팅 디스크 섹션에서 변경을 클릭하여 부팅 디스크 구성을 시작합니다.
  8. OS 이미지 탭에서 Google Drawfork Ubuntu 16.04 LTS를 선택합니다. 부팅 디스크 유형 메뉴에서 표준 영구 디스크를 선택합니다. 크기(GB) 필드에 300을 입력합니다. 선택을 클릭합니다.
  9. 만들기를 클릭하여 인스턴스를 만듭니다.

gcloud

gcloud compute instances create \
    PROJECT_ID-deepvariant-run \
    --project PROJECT_ID \
    --zone ZONE \
    --scopes "cloud-platform" \
    --image-project ubuntu-os-cloud \
    --image-family ubuntu-1604-lts \
    --machine-type n1-standard-64 \
    --min-cpu-platform "Intel Skylake" \
    --boot-disk-size=300GB

각 매개변수는 다음과 같습니다.

  • PROJECT_ID는 Google Cloud 프로젝트의 ID입니다.
  • ZONE은 인스턴스가 배포되는 영역입니다. 영역은 인스턴스 및 해당 리소스가 유지되는 대략적인 리전 위치입니다. 예를 들어 us-west1-aus-west 리전의 영역입니다. gcloud config set compute/zone을 사용하여 기본 영역을 설정했으면 이 플래그의 값이 기본값보다 우선 적용됩니다.

인스턴스가 시작될 때까지 잠시 기다립니다. 준비가 되면 녹색 상태 아이콘과 함께 VM 인스턴스 페이지에 나열됩니다.

인스턴스에 연결

Cloud Console 또는 gcloud 도구를 사용하여 인스턴스에 연결할 수 있습니다.

Console

  1. Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  2. 가상 머신 인스턴스 목록의 바로 전에 만든 인스턴스 행에서 SSH를 클릭합니다.

gcloud

gcloud compute ssh PROJECT_ID-deepvariant-run --zone ZONE

DeepVariant 실행

환경을 구성하고 만든 Compute Engine 인스턴스에서 다음 단계를 완료하여 DeepVariant를 실행합니다.

  1. 다음 명령어를 실행하여 Docker Community Edition(CE)을 설치합니다.

    sudo apt-get -qq -y install \
      apt-transport-https \
      ca-certificates \
      curl \
      gnupg-agent \
      software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository \
      "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) \
      stable"
    sudo apt-get -qq -y update
    sudo apt-get -qq -y install docker-ce
    
  2. 다음 명령어를 복사하고 붙여넣어서 DeepVariant 환경 변수를 구성합니다.

    BIN_VERSION="1.1.0"
    BASE="${HOME}/deepvariant-run"
    INPUT_DIR="${BASE}/input"
    REF="GRCh38_no_alt_analysis_set.fasta"
    BAM="HG003.novaseq.pcr-free.35x.dedup.grch38_no_alt.chr20.bam"
    OUTPUT_DIR="${BASE}/output"
    DATA_DIR="${INPUT_DIR}/data"
    OUTPUT_VCF="HG003.output.vcf.gz"
    OUTPUT_GVCF="HG003.output.g.vcf.gz"
    
  3. 입력 데이터 디렉터리 및 출력 디렉터리를 위한 로컬 디렉터리 구조를 만듭니다.

    mkdir -p "${OUTPUT_DIR}"
    mkdir -p "${INPUT_DIR}"
    mkdir -p "${DATA_DIR}"
    
  4. 이 가이드는 GRCh38 참조에 매핑된 30x 범위에서 공개적으로 사용 가능한 HG003 게놈을 사용합니다. 그러나 더 빠른 런타임을 보장하기 위해 DeepVariant를 실행할 때는 DeepVariant가 20번 염색체(chr20)에서만 실행되도록 --regions chr20 플래그를 추가합니다.

    샘플 데이터가 Illumina 시퀀싱을 사용하여 생성되었지만 DeepVariant도 다음과 같은 다른 입력 데이터 유형을 지원합니다.

    • 전체 게놈(Illumina)(WGS)
    • 엑솜(Illumina)(WES)
    • 전체 게놈(PacBio)
    • 전체 게놈 PacBio 및 Illumina 하이브리드(HYBRID_PACBIO_ILLUMINA)

    deepvariant Cloud Storage 버킷에서 바로 전에 만든 인스턴스의 디렉터리로 입력 테스트 데이터를 복사합니다. gsutil cp 명령어를 실행하여 데이터를 복사할 수 있습니다.

    # Input BAM and BAI files:
    gsutil cp gs://deepvariant/case-study-testdata/"${BAM}" "${DATA_DIR}"
    gsutil cp gs://deepvariant/case-study-testdata/"${BAM}".bai "${DATA_DIR}"
    
    # GRCh38 reference FASTA file:
    FTPDIR=ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/001/405/GCA_000001405.15_GRCh38/seqs_for_alignment_pipelines.ucsc_ids
    curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.gz | gunzip > "${DATA_DIR}/${REF}"
    curl ${FTPDIR}/GCA_000001405.15_GRCh38_no_alt_analysis_set.fna.fai > "${DATA_DIR}/${REF}".fai
    
  5. DeepVariant는 Container Registry의 사전 제작된 Docker 이미지에 스테이징된 컨테이너식 애플리케이션입니다. 이미지를 가져오려면 다음 명령어를 실행합니다.

    sudo docker pull gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"
    
  6. DeepVariant를 시작하려면 다음 명령어를 실행합니다.

    sudo docker run \
        -v "${DATA_DIR}":"/input" \
        -v "${OUTPUT_DIR}:/output" \
        gcr.io/deepvariant-docker/deepvariant:"${BIN_VERSION}"  \
        /opt/deepvariant/bin/run_deepvariant \
        --model_type=WGS \
        --ref="/input/${REF}" \
        --reads="/input/${BAM}" \
        --output_vcf=/output/${OUTPUT_VCF} \
        --output_gvcf=/output/${OUTPUT_GVCF} \
        --regions chr20 \
        --num_shards=$(nproc) \
        --intermediate_results_dir /output/intermediate_results_dir
    

    다음 표에서는 명령어에 전달된 플래그를 설명합니다.

    플래그 설명
    model_type DeepVariant는 여러 유형의 입력 데이터를 지원합니다. 이 가이드에는 전체 게놈 시퀀싱(WSG)이 사용됩니다.
    ref 참조 FASTA 파일의 위치입니다.
    reads 입력 BAM 파일의 위치입니다.
    output_vcf 출력 VCF 파일의 위치입니다.
    output_gvcf 출력 gVCF 파일의 위치입니다.
    regions (선택사항) 공백으로 구분된 처리할 염색체 리전 목록입니다. 개별 요소는 chr20:10-20 또는 BED/BEDPE 파일에 대한 경로와 같은 리전 리터럴일 수 있습니다.
    num_shards 동시에 실행되는 샤드 수입니다. 최상의 결과를 얻기 위해서는 DeepVariant가 실행되는 머신의 코어 수로 이 플래그 값을 설정합니다.
    intermediate_results_dir make_examples 및 call_variants 단계의 중간 출력에 대한 디렉터리를 지정하는 선택적 플래그입니다. 명령어가 완료되면 파일이 로컬 디렉터리에 다음 형식으로 저장됩니다.
    call_variants_output.tfrecord.gz
    gvcf.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    make_examples.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    

    명령어가 성공적으로 시작되면 다음과 같이 시작하는 메시지가 출력됩니다.

    ***** Running the command:*****
    time seq 0 63 | parallel
    -k
    --line-buffer /opt/deepvariant/bin/make_examples
    --mode calling
    --ref "/input/GRCh38_no_alt_analysis_set.fasta"
    --reads "/input/HG003.novaseq.pcr-free.35x.dedup.grch38_no_alt.chr20.bam"
    --examples "/output/intermediate_results_dir/make_examples.tfrecord@64.gz"
    --regions "chr20"
    --gvcf "/output/intermediate_results_dir/gvcf.tfrecord@64.gz"
    --task {}
    
  7. DeepVariant가 완료된 다음에는 deepvariant-run/output 디렉터리에 다음 파일이 출력됩니다.

    • HG003.output.g.vcf.gz
    • HG003.output.g.vcf.gz.tbi
    • HG003.output.vcf.gz
    • HG003.output.vcf.gz.tbi
    • HG003.output.visual_report.html

    다음 명령어를 실행하여 파일을 출력 디렉터리에 나열하고 모든 출력 파일에 다음 항목이 표시되는지 확인합니다.

    ls $OUTPUT_DIR
    

예상 비용 및 런타임

다음 표에서는 BAM 파일에서 30x 전체 게놈 샘플을 사용하여 DeepVariant를 실행할 때의 대략적인 런타임 및 비용을 보여줍니다. 인스턴스를 설정하고 Cloud Storage에서 샘플 데이터를 다운로드하는 데 필요한 시간은 이러한 예상 값에 포함되지 않습니다.

이 표에는 선점형 VM 및 비선점형 VM에 대한 예상 값이 포함됩니다. 런타임 예상 값은 비선점형 VM 사용을 기준으로 합니다.

선점형 VM은 일반 VM에 비해 최대 80%까지 저렴합니다. 하지만 Compute Engine에 다른 태스크를 위해 이러한 리소스에 대한 액세스가 필요하면 해당 인스턴스를 종료(선점)할 수 있습니다. 선점형 VM에는 서비스수준계약(SLA)이 적용되지 않으므로, 소요 시간에 대한 보장이 필요하면 --preemptible 플래그를 사용하지 마세요.

선점형 VM을 효과적으로 사용하는 방법에 대해서는 Compute Engine 권장사항을 참조하세요.

머신 유형 런타임(시간) 비용(비선점형) 비용(선점형)
n1-standard-8 27.6 $11.3 $3.04
n1-standard-16 15.4 $12.1 $2.92
n1-standard-32 9.47 $14.7 $3.32
n1-standard-64 6.8 $20.9 $4.55
n1-standard-96 5.58 $25.6 $5.53

삭제

이 가이드에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 안내를 따르세요.

DeepVariant 실행 가이드를 완료한 후에는 이후에 요금이 청구되지 않도록 Google Cloud에서 만든 리소스를 삭제할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 가이드에서 사용한 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. Cloud Console에서 프로젝트 페이지로 이동합니다.

    프로젝트 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 프로젝트 삭제를 클릭합니다. 프로젝트 이름 옆의 체크박스를 선택한 다음 프로젝트 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계

  • GitHub에서 DeepVariant 문서 읽기
  • DeepVariant의 오픈소스 릴리스에 대한 Google AI 블로그 글 읽기
  • DeepVariant에 대한 질문이 있으면 GitHub 문제를 제출할 수 있습니다. Google Cloud에 대해 궁금한 점이 있으면 gcp-life-sciences-discuss@googlegroups.com 메일링 리스트에 게시할 수 있습니다.