Kraken2 هي أداة تستخدم على نطاق واسع في دراسات metagenomic. وهو يصنف تسلسلات metagenomic في صفوف تصنيفية مثل الأنواع والجنس والأسرة وما إلى ذلك.
يقوم Kraken2 بإنشاء قاعدة بيانات تتكون من K-MER وجميع الجينومات التي تحتوي على K-MER هذا. يتم تقسيم التسلسلات metagenomic إلى k-mers ، ويتم الاستعلام عن كل K-MER ضد قاعدة بيانات K-MER من KRAKEN2 لتصنيف تسلسلات metagenomic. يتم تصنيف تسلسلات metagenomic التي لا تحتوي على K-MER المتطابقة في قاعدة البيانات على أنها غير مصنفة (Wood et al. ، 2019 ؛ Wood and Salzberg ، 2014).
بشكل عام ، لا يسمح مقدمو HPC لمستخدميها بتثبيت برامج على HPC. تعتبر حاويات التفرد بديلاً رائعًا لتثبيت البرامج الجسدية ، وحتى لا تتطلب امتياز "sudo". الحفاظ على سجل الحاويات المستخدمة وإصداراتها يسهل استنساخ سير العمل. من ناحية أخرى ، فإن NextFlow هو مدير سير عمل المعلوماتية الحيوية يسمح باستخدام الحاويات.
ومع ذلك ، يتطلب تنفيذ KRAKEN2 (أو أي وظيفة) على HPC باستخدام حاوية المفرد و NextFlow مجموعة من ثلاث برامج نصية على النحو التالي:
نص الوظيفة: برنامج نصي عمل مكتوب في NextFlow (.NF) للقيام بالمهمة الفعلية
البرنامج النصي للتكوين: برنامج نصي للتكوين لتوفير رابط الحاوية وتخصيصات موارد الحوسبة. بشكل افتراضي ، فإن اسم هذا البرنامج النصي هو "NextFlow.config". إذا تم تسميته بشكل مختلف ، فيجب تحديده في أمر "NextFlow Run" في البرنامج النصي التالي لجدولة الوظائف على النحو التالي: "NextFlow -C xxxxxx.config Run"
البرنامج النصي لجدولة الوظائف: نص باش لجدولة الوظيفة من خلال جدولة الوظيفة "slurm"
فيما يلي البرامج النصية التي تم تعيينها لتشغيل KRAKEN2 على HPC التي يقدمها مركز PAWSEY SuperComputer (https://pawsey.org.au/).
//data_location
params.in = "$PWD/*.fasta"
params.outdir = './results'
datasets = Channel
.fromPath(params.in)
.map { file -> tuple(file.simpleName, file) }
// taxonomy
process taxonomy {
tag "$z"
publishDir "${params.outdir}", mode:'copy'
input:
set datasetID, file(z) from datasets
output:
file "${z.baseName}_taxo.tsv" into taxonomy_ch
script:
"""
kraken2 --db path/to/the/DB --output ${z.baseName}_taxo.out --report ${z.baseName}_taxo.tsv $z --threads 28
"""
}
يمكن تنزيل قاعدة البيانات أعلاه وبناءها من نقطة الصفر بعد دليل Kraken2 (https://github.com/derrickwood/kraken2)
أو ، يمكن تنزيل قواعد البيانات المتاحة مسبقًا واستخدامها (https://benlangmead.github.io/aws-indexes/k2)
إنشاء و "قرص مضغوط" في دليل في كمبيوتر Linux الخاص بك لتنزيل قواعد بيانات Kraken2 مسبقًا في
انتقل إلى موقع قواعد البيانات المذكورة أعلاه مسبقًا
انتقل إلى عمود عنوان URL HTTPS في جدول التجميع
انقر بزر الماوس الأيمن على ملف tar.gz للمجموعة المقابلة
نسخ عنوان الارتباط
قم بتشغيل الأمر التالي
wget link_address
استخراج قاعدة بيانات القطران المضغوط على النحو التالي:
tar -zxvf downloaded_database
الآن ، تحتاج إلى إحالة هذا الدليل وأنت قاعدة بيانات Kraken 2 في البرنامج النصي Kraken2
عند تشغيل Kraken2 ، يجب أن تكون قاعدة البيانات في نفس الكمبيوتر حيث سيتم تشغيل الأمر (على سبيل المثال ، في زيوس أو ماغنوس في Pawsey). ويفضل ، في نفس الدليل
يجب إعطاء المسار الكامل لقاعدة البيانات في أمر Kraken2 حتى لو كانت قاعدة البيانات في نفس الدليل
لا يقل عن 100 جيجابايت مساحة قرص خالية وذاكرة وصول عشوائي 50 جيجابايت. يقوم Kraken2 بتحميل قاعدة البيانات في ذاكرة الوصول العشوائي المحلية واستخدامها من هناك. سيؤدي عدم وجود قرص أو مساحة ذاكرة كافية إلى خطأ "خطأ في قراءة جدول التجزئة"
"خطأ في قراءة جدول التجزئة" قد ينبع من الملفات التالفة بطريقة أو بأخرى في قاعدة البيانات. قد يحدث هذا أثناء نقل قاعدة البيانات غير المزروعة عبر أجهزة الكمبيوتر. يمكن حل هذه المشكلة عن طريق إعادة استخلاص الملف المضغوط لقاعدة بيانات KRAKEN2 التي تم تنزيلها
trace {
fields = 'name,hash,status,exit,realtime,submit'
}
profiles {
zeus {
workDir = "$PWD/work"
process {
cache = 'lenient'
stageInMode = 'symlink'
}
process {
withName:taxonomy { container = 'quay.io/biocontainers/kraken2:2.1.2--pl5262h7d875b9_0' }
}
singularity {
enabled = true
autoMounts = true
//runOptions = '-e TERM=xterm-256color'
envWhitelist = 'TERM'
}
params.slurm_account = 'XXXXX'
process {
executor = 'slurm'
clusterOptions = "--account=${params.slurm_account}"
queue = 'workq'
cpus = 1
time = '1h'
memory = '10GB'
withName: 'taxonomy' {
cpus = 28
time = '24h'
}
}
}
}
#SBATCH --job-name=nxf-master
#SBATCH --account=XXXX
#SBATCH --partition=workq
#SBATCH --time=1-00:00:00
#SBATCH --no-requeue
#SBATCH --export=none
#SBATCH --nodes=1
unset SBATCH_EXPORT
module load singularity
module load nextflow
nextflow run nanopore_nextflow.nf -profile zeus -name nxf-${SLURM_JOB_ID} -resume --with-report
تثبيت Kraken2
أضف مسار Kraken2 إلى المتغير البيئي للمسار
قم بتنزيل قاعدة بيانات Kraken2 المناسبة. لتنزيل قاعدة البيانات ، راجع الملاحظات أعلاه
قم بعمل دليل لتحليل Kraken2
حافظ على قراءات التسلسل ، وقاعدة البيانات ، والبرنامج النصي التالي في دليل "Kraken2"
قم بعمل دليل "نتائج" مع دليل "Kraken2" لجمع النتائج
قم بتشغيل البرنامج النصي على النحو التالي:
./kraken2.sh
#!/usr/bin/env bash
#textFormating
Red="$(tput setaf 1)"
Green="$(tput setaf 2)"
reset=`tput sgr0` # turns off all atribute
Bold=$(tput bold)
#
for F in *.fastq
do
baseName=$(basename $F .fastq)
echo "${Red}${Bold} Processing ${reset}: "${baseName}""
kraken2 --db $PWD/kraken2_database --threads 64 --output $PWD/results/"${baseName}_taxo.out" --report $PWD/results/"${baseName}_taxo.tsv" $F
echo ""
echo "${Green}${Bold} Processed and saved as${reset} "${baseName}""
done
ملف الإخراج Kraken2 هو محدد علامة التبويب. مثال افتراضي:
75 250 160 S 211044 Influenza A virus
العمود 1: النسبة المئوية للقراءات التي تغطيها كليد متجذر في هذا التصنيف
العمود 2: عدد القراءات التي تغطيها clade المتجذرة في هذا التصنيف
العمود 3: عدد القراءات المخصصة مباشرة لهذا التصنيف
العمود 4: رمز الترتيب ، يشير إلى (u) nclassified ، (د) omain ، (k) ingdom ، (p) hylum ، (c) lass ، (o) rder ، (f) acliily ، (g) enus ، أو (s) pecies. جميع الرتب الأخرى هي ببساطة "-".
العمود 5: معرف تصنيف NCBI
العمود 6: الاسم العلمي
Wood ، De ، Lu ، J. ، Langmead ، B. ، 2019. 20 ، 257. https://doi.org/10.1186/S13059-019-1891-0
Wood ، DE ، Salzberg ، SL ، 2014. Kraken: تصنيف تسلسل metagenomic Ultrafast باستخدام محاذاة دقيقة. جينوم بيول. 15 ، R46. https://doi.org/10.1186/GB-2014-15-3-R46