DeepVariant 실행

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

이 튜토리얼에서는 샘플 데이터를 사용하여 Google Cloud에서 DeepVariant를 실행하는 방법을 설명합니다. 단일 Compute Engine 인스턴스에서 DeepVariant를 실행합니다.

목표

이 튜토리얼을 완료하고 나면 Google Cloud에서 DeepVariant를 실행하는 방법을 알게 됩니다.

비용

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

  • Compute Engine

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

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

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Compute Engine API 사용 설정

    API 사용 설정

  5. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  6. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  7. Compute Engine API 사용 설정

    API 사용 설정

  8. Google Cloud CLI를 설치합니다.
  9. gcloud CLI를 초기화하려면 다음 명령어를 실행합니다.

    gcloud init
  10. : 명령어 프롬프트가 필요하세요? Cloud Shell을 사용할 수 있습니다. Cloud Shell 명령줄 환경에는 Google Cloud CLI가 이미 포함되어 있으므로 별도로 설치할 필요가 없습니다.

Compute Engine 인스턴스 만들기

Google Cloud 콘솔 또는 gcloud CLI를 사용하여 Compute Engine 인스턴스를 만들어 DeepVariant를 실행합니다.

콘솔

  1. Google Cloud 콘솔에서 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. 공개 이미지 탭에서 Ubuntu 20.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-2004-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 인스턴스 페이지에 표시됩니다.

인스턴스에 연결

Google Cloud 콘솔 또는 gcloud CLI를 사용하여 인스턴스에 연결할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 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.2.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)

    gsutil cp를 실행하여 deepvariant Cloud Storage 버킷에서 만들어 둔 인스턴스의 디렉터리로 입력 테스트 데이터를 복사합니다.

    # 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 단계의 중간 출력에 대한 디렉터리를 지정하는 선택적 플래그입니다. 명령어가 완료된 후 파일이 다음 형식으로 로컬 디렉터리에 저장됩니다.
    dry_run 선택적 플래그입니다. true로 설정하면 명령어가 실행되지 않고 출력됩니다.
    call_variants_output.tfrecord.gz
    gvcf.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    make_examples.tfrecord-SHARD_NUMBER-of-NUM_OF_SHARDS.gz
    
  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에서 샘플 데이터를 다운로드하는 데 필요한 시간은 이러한 예상 값에 포함되지 않습니다.

시간당 가격 책정은 Compute Engine 가격 책정을 참조하세요. 일반 VM보다 훨씬 저렴한 Spot VM을 사용할 수 있습니다.

머신 유형 런타임(시간)
n1-standard-8 24.63
n1-standard-16 13.30
n1-standard-32 7.77
n1-standard-64 5.64
n1-standard-96 4.38

삭제

튜토리얼을 완료한 후에는 만든 리소스를 삭제하여 할당량 사용을 중지하고 요금이 청구되지 않도록 할 수 있습니다. 다음 섹션은 이러한 리소스를 삭제하거나 사용 중지하는 방법을 설명합니다.

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

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

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계

  • 더 복잡한 구성들은 DeepVariant GitHub 저장소에서 확인할 수 있습니다. 예를 들어 여러 인스턴스를 사용하여 DeepVariant를 실행할 수 있습니다. 이러한 변이를 통해 처리 속도를 개선하고 비용을 줄일 수 있습니다.
  • DeepVariant의 오픈소스 릴리스에 대한 Google AI 블로그 글 읽기
  • DeepVariant에 대해 궁금한 점이 있으면 GitHub 문제를 제출할 수 있습니다. Google Cloud에 관해 궁금한 점은 gcp-life-sciences-discuss@googlegroups.com 메일링 리스트에 게시할 수 있습니다.