خط أنابيب DNASeq

ملاحظة

يتم إهمال وقت تشغيل ستريك البيانات لعلم الجينوم. لم تعد Databricks تبني وقت تشغيل Databricks جديد لإصدارات الجينوم وستزيل الدعم لوقت تشغيل Databricks لعلم الجينوم في 24 سبتمبر 2022 ، عندما ينتهي وقت تشغيل Databricks لدعم Genomics 7.3 LTS. عند هذه النقطة Databricks وقت التشغيل لعلم الجينوم لن تكون متاحة للاختيار عند إنشاء كتلة. لمزيد من المعلومات حول نهج الإهمال وقت التشغيل Databricks والجدول الزمني، راجع إصدارات وقت تشغيل Databricks المعتمدة وجدول الدعم. تم إصدار مكتبات المعلوماتية الحيوية التي كانت جزءا من وقت التشغيل كحاويات Docker ، والتي يمكنك العثور عليها في صفحة ProjectGlow Dockerhub.

ملاحظة

يتم حزم إصدارات المكتبة التالية في Databricks وقت التشغيل 7.0 لعلم الجينوم. بالنسبة للمكتبات المضمنة في الإصدارات السفلية من Databricks Runtime لعلم الجينوم، راجع ملاحظات الإصدار.

خط أنابيب DnaSeq Databricks Azure هو خط أنابيب متوافق مع أفضل الممارسات في GATK لمحاذاة القراءة القصيرة واستدعاء المتغير والتعليق التوضيحي للمتغير. ويستخدم حزم البرامج التالية، بالتوازي مع استخدام سبارك.

  • BWA v0.7.17
  • ADAM v0.32.0
  • جاتك هابلوتايبكالير v4.1.4.1
  • SnpEff v4.3

لمزيد من المعلومات حول تنفيذ خط الأنابيب ووقت التشغيل المتوقع وتكاليف تركيبات الخيارات المختلفة، راجع إنشاء خط أنابيب DNASeq الأسرع في Scala.

الإعداد

يتم تشغيل خط الأنابيب كوظيفة Azure Databricks. يمكنك إعداد نهج نظام مجموعة لحفظ التكوين:

{
  "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"
  }
}
  • يجب أن يستخدم تكوين الكتلة وقت تشغيل Databricks لعلم الجينوم.
  • يجب أن تكون المهمة دفتر الملاحظات DNASeq الموجود في أسفل هذه الصفحة.
  • للحصول على أفضل أداء، استخدم نظام VMs المحسن للحوسبة مع ذاكرة لا تقل عن 60 جيجابايت. نوصي Standard_F32s_v2 VMs.
  • إذا كنت تقوم بتشغيل إعادة معايرة نقاط الجودة الأساسية، فاستخدم مثيلات الغرض العام(Standard_D32s_v3)بدلا من ذلك لأن هذه العملية تتطلب ذاكرة أكثر.

الجينوم المرجعي

يجب تكوين الجينوم المرجعي باستخدام متغير البيئة. لاستخدام GRCh37، قم بتعيين متغير البيئة:

refGenomeId=grch37

لاستخدام GRCh38 بدلا من ذلك، استبدل grch37 ب grch38 .

الجينوم المرجعي المخصص

ملاحظة

يتوفر دعم الجينوم المرجعي المخصص في Databricks Runtime 6.6 لعلم الجينوم وما فوق.

لاستخدام بنية مرجع غير GRCh37 أو GRCh38 اتبع الخطوات التالية:

  1. قم بإعداد المرجع للاستخدام مع BWA وGATK.

    يجب أن تتضمن محتويات دليل genome المرجعية هذه الملفات:

    <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 ملفات الجينوم المرجعية إلى دليل في التخزين السحابي أو DBFS. إذا قمت بتحميل الملفات إلى التخزين السحابي، يجب تحميل الدليل إلى موقع في DBFS.

  3. في تكوين نظام المجموعة تعيين متغير بيئة يشير إلى مسار ملف fasta في DBFS. على سبيل المثال،

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

    يجب ألا يتضمن المسار dbfs: بادئة.

    عند استخدام genome مرجع مخصص، يتم تخطي مرحلة التعليق التوضيحي SnpEff.

تلميح

أثناء تهيئة الكتلة، خط أنابيب DNASeq Azure Databricks يستخدم ملفات فهرس BWA المتوفرة لإنشاء ملف صورة فهرس. إذا كنت تخطط لاستخدام الجينوم المرجع نفسه عدة مرات، يمكنك تسريع بدء تشغيل الكتلة عن طريق إنشاء ملف صورة الفهرس في وقت مبكر. هذه العملية سوف يقلل وقت بدء تشغيل الكتلة بحوالي 30 ثانية.

  1. نسخ الدليل الجينوم المرجعي إلى عقدة برنامج تشغيل Databricks وقت التشغيل للكتلة الجينوم.

    %sh cp -r /dbfs/<reference_dir_path> /local_disk0/reference-genome
    
  2. إنشاء ملف صورة الفهرس من ملفات الفهرس BWA.

    import org.broadinstitute.hellbender.utils.bwa._
    BwaMemIndex.createIndexImageFromIndexFiles("/local_disk0/reference-genome/<reference_name>.fa", "/local_disk0/reference-genome/<reference_name>.fa.img")
    
  3. نسخ إلى ملف صورة الفهرس إلى نفس الدليل كملفات fasta المرجع.

    %sh cp /local_disk0/reference-genome/<reference_name>.fa.img /dbfs/<reference_dir_path>
    
  4. حذف ملفات فهرس BWA غير الضرورية ( .amb ، ، ، ، ، ) من .ann.bwt.pac.sa DBFS.

    %fs rm <file>
    

المعلمات

يقبل خط الأنابيب المعلمات التي تتحكم في سلوكه. يتم توثيق المعلمات الأكثر أهمية وتغيرا بشكل شائع هنا؛ ويمكن الاطلاع على بقية في دفتر DNASeq. بعد استيراد دفتر الملاحظات وإعداده كمهمة مهمة، يمكنك تعيين هذه المعلمات لكافة عمليات التشغيل أو لكل تشغيل.

المعلمة افتراضي الوصف
بيان غير متوفر البيان الذي يصف الإدخال.
الإخراج غير متوفر المسار الذي يجب كتابة إخراج خط الأنابيب فيه.
إعادة تشغيلMode تخطي واحد من:

* skipيتم تخطي المراحل إذا كان الإخراج موجودا بالفعل.
* overwrite: يتم حذف الإخراج الموجود.
تصديرVCF false إذا كان صحيحا، خط أنابيب يكتب النتائج في VCF وكذلك بحيرة دلتا.
مرجعالاوفود اي واحد من:

* إذا NONE ، يتم تضمين مواقع متغير فقط في الإخراج
* إذا GVCF ، يتم تضمين كافة المواقع ، مع المواقع المرجعية المجاورة النطاقات.
* إذا BP_RESOLUTION ، يتم تضمين جميع المواقع.
perSampleTimeout 12h مهلة مطبقة لكل عينة. بعد الوصول إلى هذه المهلة، يستمر خط الأنابيب إلى النموذج التالي. يجب أن تتضمن قيمة هذه المعلمة وحدة مهلة: 's' لثواني أو 'm' لدقائق أو 'h' لساعات. على سبيل المثال، ينتج عن '60m' مهلة 60 دقيقة.

تلميح

لتحسين وقت التشغيل، قم بتعيين spark.sql.shuffle.partitionsspark.sql.shuffle.partitions إلى ثلاثة أضعاف عدد النوى في الكتلة.

التخصيص

يمكنك تخصيص خط أنابيب DNASeq عن طريق تعطيل محاذاة القراءة، واستدعاء المتغير، والتعليق التوضيحي للمتغير. افتراضيا، يتم تمكين المراحل الثلاث.

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

لتعطيل التعليق التوضيحي المتغير تعيين خط الأنابيب كما يلي:

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

مجموعات المرحلة المسموح بها هي:

قراءة المحاذاة استدعاء متغير تعليق توضيحي متغير
صواب صواب صواب
صواب صواب false
صواب false false
false صواب صواب
false صواب false

تنسيق البيان

ملاحظة

يتم اعتماد النقط واضح في Databricks وقت التشغيل 6.6 لعلم الجينوم وما فوق.

البيان هو ملف CSV أو blob تصف أين يمكن العثور على إدخال FASTQ أو ملفات BAM. على سبيل المثال:

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

إذا كان الإدخال الخاص بك يتكون من ملفات BAM غير منحازة، يجب حذف paired_end الحقل:

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

تلميح

إذا كان البيان المتوفر ملفا، file_path يمكن أن يكون الحقل في كل صف مسارا مطلقا أو مسارا بالنسبة لملف البيان. إذا كان البيان المتوفر هو blob، file_path يجب أن يكون الحقل مسارا مطلقا. يمكنك تضمين globs (*) لمطابقة العديد من الملفات.

تنسيقات الإدخال المعتمدة

  • سام
  • ام
  • الالزام
  • Parquet
  • فاست كيو
    • bgzip *.fastq.bgz (مستحسن) يتم التعرف على الملفات bgzipped مع *.fastq.gz التمديد كما bgz .
    • مضغوط *.fastq
    • gzip *.fastq.gz

هام

ملفات Gzipped ليست قابلة للتقسيم. اختر الكتل التحجيم التلقائي لتقليل تكلفة هذه الملفات.

لمنع ضغط FASTQ، تثبيت htslib، والذي يتضمن الملف التنفيذي.

المخرجات

تتم كتابة القراءات المتوائمة والمتغيرات المسماة والمتغيرات المشروحة إلى جداول دلتا داخل دليل الإخراج المتوفر إذا تم تمكين المراحل المقابلة. يتم تقسيم كل جدول حسب نموذج معرف. بالإضافة إلى ذلك، إذا قمت بتكوين خط أنابيب لتصدير BAMs أو VCFs، فسوف تظهر ضمن دليل الإخراج أيضا.

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

عند تشغيل خط الأنابيب على عينة جديدة، سوف تظهر كقسم جديد. إذا قمت بتشغيل خط أنابيب لعينة التي تظهر بالفعل في دليل الإخراج، سيتم الكتابة فوق هذا القسم.

نظرا لأن جميع المعلومات متوفرة في دلتا ليك ، يمكنك تحليلها بسهولة باستخدام Spark في Python أو R أو Scala أو SQL. على سبيل المثال:

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'

استكشاف الأخطاء وإصلاحها

المهمة بطيئة وعدد قليل من المهام قيد التشغيل

عادة ما يشير إلى أن يتم ضغط ملفات FASTQ الإدخال مع gzip بدلا من bgzip . ملفات Gzipped ليست قابلة للتقسيم، لذلك لا يمكن معالجة الإدخال بالتوازي.

تشغيل برمجيا

بالإضافة إلى استخدام واجهة المستخدم، يمكنك بدء تشغيل خط أنابيب برمجيا باستخدام Databricks CLI.

Find the job id

بعد إعداد مهمة خط أنابيب في واجهة المستخدم نسخ معرف المهمة أثناء تمرير الأمر CLI.

إليك مثالا على البرنامج النصي bash يمكنك تكييفه لسير العمل الخاص بك:

# 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\"}"

بالإضافة إلى بدء تشغيل من سطر الأوامر، يمكنك استخدام هذا النمط لاستدعاء خط الأنابيب من الأنظمة الآلية مثل جينكينز.

دفتر خط أنابيب DNASeq

الحصول على دفتر ملاحظات