DNASeq işlem hattı

Not

Databricks Runtime genomiks için kullanım dışıdır. Databricks artık Genomiks için yeni Databricks Runtime sürümü eklemez ve Genomiks için Databricks Runtime 7.3 LTS desteği sona erdiğinde 24 Eylül 2022'de Genomiks için Databricks Runtime desteğini kaldıracak. Bu noktada Databricks Runtime genomiks için kaynak grubu artık küme 2019'da seçilemez. Databricks Runtime'ı kullanım dışı bırakma ilkesi ve zamanlaması hakkında daha fazla bilgi edinmek için bkz. Desteklenen Databricks çalışma zamanı sürümleri ve destek zamanlaması.

Not

Aşağıdaki kitaplık sürümleri Genomiks için Databricks Runtime 7.0'da paketlenmiştir. Genomiks için daha düşük sürümlere Databricks Runtime kitaplıklar için sürüm notlarına bakın.

DNASeq Azure Databricks, kısa okuma hizalaması, değişken arama ve varyant ek açıklaması için GATK en iyi yöntemleriyle uyumlu bir işlem hattıdır. Spark kullanılarak paralelleştirilmiş aşağıdaki yazılım paketlerini kullanır.

  • BWA v0.7.17
  • ADAM v0.32.0
  • GATK HaplotypeCaller v4.1.4.1
  • SnpEff v4.3

İşlem hattı uygulaması ve çeşitli seçenek birleşimleri için beklenen çalışma zamanları ve maliyetler hakkında daha fazla bilgi için bkz. Scala'da En Hızlı DNASeq İşlem Hattı Derleme.

Kurulum

İşlem hattı bir iş Azure Databricks çalıştır. Yapılandırmayı kaydetmek için bir küme ilkesi kurabilirsiniz:

{
  "num_workers": {
    "type": "unlimited",
    "defaultValue": 13
  },
  "node_type_id": {
    "type": "unlimited",
    "defaultValue": "Standard_F32s_v2"
  },
  "spark_env_vars.refGenomeId": {
    "type": "unlimited",
    "defaultValue": "grch38"
  },
  "spark_version": {
    "type": "regex",
    "pattern": ".*-hls.*",
    "defaultValue": "7.4.x-hls-scala2.12"
  }
}
  • Küme yapılandırması Genomiks için Databricks Runtime kullan olmalıdır.
  • Görev, bu sayfanın alt kısmında bulunan DNASeq not defteridir.
  • En iyi performans için en az 60 GB belleğe sahip işlem için iyileştirilmiş VM'leri kullanın. VM'Standard_F32s_v2 öneririz.
  • Temel kalite puanı yeniden ölçeklendirmesi çalıştırıyorsanız, bu işlem daha fazla bellek gerektirdiği için genel amaçlı (Standard_D32s_v3) örneklerini kullanın.

Başvuru genomları

Başvuru genomlarını bir ortam değişkeni kullanarak yapılandırmanız gerekir. GRCh37 kullanmak için ortam değişkenlerini ayarlayın:

refGenomeId=grch37

Bunun yerine GRCh38 kullanmak için yerine ile grch37 grch38 değiştirin.

Özel başvuru genomları

Not

Genomiks ve üzeri için Databricks Runtime 6.6'da özel başvuru genom desteği mevcuttur.

GRCh37 veya GRCh38 dışında bir başvuru derlemesi kullanmak için şu adımları izleyin:

  1. BWA ve GATK ile kullanmak üzere başvuru hazırlayın.

    Başvuru genom dizini içeriği şu dosyaları içermeli:

    <reference_name>.dict
    <reference_name>.fa
    <reference_name>.fa.amb
    <reference_name>.fa.ann
    <reference_name>.fa.bwt
    <reference_name>.fa.fai
    <reference_name>.fa.pac
    <reference_name>.fa.sa
    
  2. Upload genom dosyalarını bulut depolama veya DBFS'de bir dizine ekleme. Dosyaları bulut depolama alanına yüklersiniz, dizini DBFS'de bir konuma bağlamanız gerekir.

  3. Küme yapılandırmanız REF_GENOME_PATH içinde, DBFS'de fasta dosyasının yoluna giden bir ortam değişkeni ayarlayın. Örneğin,

    REF_GENOME_PATH=/mnt/reference-genome/reference.fa
    

    Yol bir ön ek dbfs: içermemalıdır.

    Özel başvuru genom'larını kullanırken SnpEff ek açıklama aşaması atlanır.

İpucu

Küme başlatma sırasında DNASeq Azure Databricks, dizin görüntüsü dosyası oluşturmak için sağlanan BWA dizin dosyalarını kullanır. Aynı başvuru genom'larını birçok kez kullanmayı planlıyorsanız, dizin görüntüsü dosyasını zamanından önce kullanarak küme başlatmayı hızlandırabilirsiniz. Bu işlem, küme başlatma süresini yaklaşık 30 saniye azaltır.

  1. Başvuru genom dizinini Genomiks kümesi için bir Databricks Runtime düğümüne kopyalayın.

    %sh cp -r /dbfs/<reference_dir_path> /local_disk0/reference-genome
    
  2. BWA dizin dosyalarından dizin görüntüsü dosyası oluşturma.

    import org.broadinstitute.hellbender.utils.bwa._
    BwaMemIndex.createIndexImageFromIndexFiles("/local_disk0/reference-genome/<reference_name>.fa", "/local_disk0/reference-genome/<reference_name>.fa.img")
    
  3. Dizin görüntüsü dosyasına başvuru fasta dosyalarıyla aynı dizine kopyalayın.

    %sh cp /local_disk0/reference-genome/<reference_name>.fa.img /dbfs/<reference_dir_path>
    
  4. DBFS'den( , , , , ) , .amb .ann ) , .bwt .pac .sa için, , ve900000000000000000000000000000000000

    %fs rm <file>
    

Parametreler

İşlem hattı, davranışını kontrol eden parametreleri kabul eder. En önemli ve yaygın olarak değiştirilen parametreler burada belgelenmiştir; geri kalanı DNASeq not defterinde bulunabilir. Not defterini içeri aktararak bir iş görevi olarak ayardikten sonra, tüm çalıştırmalar veya çalıştırma başına için bu parametreleri ayarlayın.

Parametre Varsayılan Açıklama
bildirim yok Girişi açıklayan bildirim.
çıkış yok İşlem hattı çıkışının yazıldığı yol.
replayMode Atla Bunlardan biri:

* skip: çıkış zaten varsa aşamalar atlanır.
* overwrite: mevcut çıkış silinir.
exportVCF yanlış True ise, işlem hattı yazmaları Hem VCF hem de Delta Lake ile sonuç verir.
referenceConfidenceMode Hiçbiri Bunlardan biri:

* NONE Ise, çıkışa yalnızca değişken siteler dahil edilir
* GVCF ise, tüm siteler dahil edilir ve bitişik başvuru siteleri bantlı olur.
* BP_RESOLUTION Ise, tüm siteler dahil edilir.
perSampleTimeout 12 saat Örnek başına uygulanan bir zaman aşımı. Bu zaman aşımına ulaştıktan sonra işlem hattı sonraki örnekten devam eder. Bu parametrenin değeri bir zaman aşımı birimini içermelidir: saniyeler için 's', dakikalar için 'm', saat için 'h'. Örneğin, '60 dk' 60 dakikalık bir zaman aşımına neden olur.

İpucu

Çalışma süresi en iyi duruma getirmek spark.sql.shuffle.partitions için Spark yapılandırmasını kümenin çekirdek sayısının üç katı olarak ayarlayın.

Özelleştirme

DnaSeq işlem hattını, okuma hizalamasını, değişken aramasını ve değişken ek açıklamasını devre dışı bırakarak özelleştirebilirsiniz. Varsayılan olarak üç aşama da etkindir.

val pipeline = new DNASeqPipeline(align = true, callVariants = true, annotate = true)

Değişken ek açıklamasını devre dışı bırakmak için işlem hattını aşağıdaki gibi ayarlayın:

val pipeline = new DNASeqPipeline(align = true, callVariants = true, annotate = false)

İzin verilen aşama birleşimleri:

Okuma hizalaması Değişken çağrısı Değişken ek açıklaması
true true true
true true yanlış
true yanlış yanlış
yanlış true true
yanlış true yanlış

Bildirim biçimi

Not

Bildirim blob 'ları, Genomiks ve üzeri için Databricks Runtime 6,6 ' de desteklenir.

Bildirim, giriş FASTQ veya Baa dosyalarının nerede bulunacağını açıklayan bir CSV dosyasıdır veya blobu. Örneğin:

file_path,sample_id,paired_end,read_group_id
*_R1_*.fastq.bgz,HG001,1,read_group
*_R2_*.fastq.bgz,HG001,2,read_group

Giriş, hizalanmamış Bad dosyalarından oluşuyorsa, alanı atmalısınız paired_end :

file_path,sample_id,paired_end,read_group_id
*.bam,HG001,,read_group

İpucu

Belirtilen bildirim bir dosya ise, file_path her satırdaki alan bir mutlak yol veya bildirim dosyasına göreli bir yol olabilir. Belirtilen bildirim bir blob ise, file_path alan mutlak bir yol olmalıdır. (*)Birçok dosya ile eşleştirmek için genelleştirmeler ekleyebilirsiniz.

Desteklenen giriş biçimleri

  • SAM
  • BAM
  • Cray
  • Parquet
  • FASTQ
    • *.fastq.bgz, uzantısı olan bgzıp (önerilen) bgdaraltılmış dosyaları *.fastq.gz olarak tanınır bgz .
    • sıkıştırılmamış *.fastq
    • gzip *.fastq.gz

Önemli

Gdaraltılmış dosyalar splittable değildir. Bu dosyaların maliyetini en aza indirmek için otomatik ölçeklendirme kümelerini seçin.

FASTQ sıkıştırmasını engellemek için, yürütülebilir dosyayı içeren htslib'yi yükler bgzip .

Çıktı

İlgili aşamalar etkinleştirilmişse, varyantlar olarak adlandırılan hizalanmış okumalar ve ek açıklamalı çeşitler, sağlanan çıkış dizininin içindeki Delta tablolarına yazılır. Her tablo örnek KIMLIĞE göre bölümlendirilir. Ayrıca, işlem hattını BAMs veya VCFs dışarı aktarmak için yapılandırdıysanız, bunlar da çıkış dizini altında görünür.

|---alignments
    |---sampleId=HG001
        |---Parquet files
|---alignments.bam
    |---HG001.bam
|---annotations
    |---Delta files
|---annotations.vcf
    |---HG001.vcf
|---genotypes
    |---Delta files
|---genotypes.vcf
    |---HG001.vcf

İşlem hattını yeni bir örnekte çalıştırdığınızda yeni bir bölüm olarak görünür. Çıkış dizininde zaten görüntülenen bir örnek için işlem hattını çalıştırırsanız, bu bölümün üzerine yazılır.

Tüm bilgiler Delta Gölü 'da kullanılabilir olduğundan, Python, R, Scala veya SQL 'te Spark ile kolayca analiz edebilirsiniz. Örneğin:

Python

# Load the data
df = spark.read.format("delta").load("/genomics/output_dir/genotypes")
# Show all variants from chromosome 12
display(df.where("contigName == '12'").orderBy("sampleId", "start"))

SQL

-- Register the table in the catalog
CREATE TABLE genotypes
USING delta
LOCATION '/genomics/output_dir/genotypes'

Sorun giderme

İş yavaş ve birkaç görev çalışıyor

Genellikle giriş FASTQ dosyalarının yerine ile sıkıştırıldığını gösterir gzip bgzip . Gdaraltılmış dosyalar splittable olmadığından, giriş paralel olarak işlenemez. Bir dosya dizinini ' dan paralel ' a dönüştürmek için paralel bgzıp Not defterini kullanmayı deneyin gzip bgzip .

Programlı olarak çalıştırma

Kullanıcı arabirimini kullanmanın yanı sıra, Databricks CLIkullanarak işlem hattının çalıştırmalarını program aracılığıyla başlatabilirsiniz.

İş kimliğini bulun

Kullanıcı arabiriminde işlem hattı işini ayarladıktan sonra CLI komutuna geçirdiğiniz Iş kimliğini kopyalayın jobs run-now .

Aşağıda, iş akışınız için uyarlayabileceğiniz bir bash betiği verilmiştir:

# Generate a manifest file
cat <<HERE >manifest.csv
file_path,sample_id,paired_end,read_group_id
dbfs:/genomics/my_new_sample/*_R1_*.fastq.bgz,my_new_sample,1,read_group
dbfs:/genomics/my_new_sample/*_R2_*.fastq.bgz,my_new_sample,2,read_group
HERE

# Upload the file to DBFS
DBFS_PATH=dbfs:/genomics/manifests/$(date +"%Y-%m-%dT%H-%M-%S")-manifest.csv
databricks fs cp manifest.csv $DBFS_PATH

# Start a new run
databricks jobs run-now --job-id <job-id> --notebook-params "{\"manifest\": \"$DBFS_PATH\"}"

Komut satırından çalıştırmaları başlatmaya ek olarak, bu düzeni, ardışık düzeni Jenkins gibi otomatikleştirilmiş sistemlerden çağırmak için de kullanabilirsiniz.

DNASeq ardışık düzen Not defteri

Not defterini alma