Kraken2 เป็นเครื่องมือที่ใช้กันอย่างแพร่หลายในการศึกษา metagenomic มันจำแนกลำดับ metagenomic เป็นอันดับอนุกรมวิธานเช่นสปีชีส์สกุลครอบครัว ฯลฯ
Kraken2 สร้างฐานข้อมูลที่ประกอบด้วย k-mer และจีโนมทั้งหมดที่มี k-mer นี้ ลำดับ metagenomic ถูกแบ่งออกเป็น k-mers และแต่ละ k-mer จะถูกสอบถามกับฐานข้อมูล k-built-built-built-built เพื่อจำแนกลำดับ metagenomic ลำดับ Metagenomic ที่ไม่มี k-mer ที่ตรงกันในฐานข้อมูลจะถูกระบุว่าเป็น unclassified (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 (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 ซิปดังต่อไปนี้:
tar -zxvf downloaded_database
ตอนนี้คุณต้องอ้างอิงไดเรกทอรีนี้ในขณะที่คุณเป็นฐานข้อมูล Kraken 2 ในสคริปต์ Kraken2
เมื่อเรียกใช้ Kraken2 ฐานข้อมูลจะต้องอยู่ในคอมพิวเตอร์เครื่องเดียวกับที่คำสั่งจะเรียกใช้ (ตัวอย่างเช่นใน Zeus หรือ Magnus ที่ Pawsey) โดยเฉพาะอย่างยิ่งในไดเรกทอรีเดียวกัน
เส้นทางเต็มรูปแบบของฐานข้อมูลจะต้องได้รับในคำสั่ง kraken2 แม้ว่าฐานข้อมูลจะอยู่ในไดเรกทอรีเดียวกัน
ต้องใช้พื้นที่ดิสก์ฟรีอย่างน้อย 100 GB และ RAM 50 GB Kraken2 โหลดฐานข้อมูลใน RAM ท้องถิ่นและใช้จากที่นั่น การขาดดิสก์หรือพื้นที่หน่วยความจำที่เพียงพอจะส่งผลให้เกิดข้อผิดพลาด "ข้อผิดพลาดในการอ่านตารางแฮช"
"ข้อผิดพลาดในการอ่านตารางแฮช" อาจเกิดจากไฟล์ที่เสียหายในฐานข้อมูล สิ่งนี้อาจเกิดขึ้นระหว่างการถ่ายโอนฐานข้อมูลที่ยังไม่ได้ซิปผ่านคอมพิวเตอร์ ปัญหานี้สามารถแก้ไขได้โดยการสกัดไฟล์ซิปของฐานข้อมูล 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: เปอร์เซ็นต์ของการอ่านที่ครอบคลุมโดย clade ที่รูทที่แท็กซอนนี้
คอลัมน์ 2: จำนวนการอ่านที่ครอบคลุมโดย clade ที่รูทที่แท็กซอนนี้
คอลัมน์ 3: จำนวนการอ่านที่กำหนดโดยตรงไปยังแท็กซอนนี้
คอลัมน์ 4: รหัสอันดับ, การระบุ (u) nclassified, (d) omain, (k) ingdom, (p) hylum, (c) lass, (o) rder, (f) amily, (g) enus หรือ (s) pecies อันดับอื่น ๆ ทั้งหมดเป็นเพียง“-“
คอลัมน์ 5: รหัสอนุกรมวิธาน NCBI
คอลัมน์ 6: ชื่อวิทยาศาสตร์
Wood, DE, LU, J. , Langmead, B. , 2019. การวิเคราะห์ metagenomic ที่ดีขึ้นด้วย Kraken 2. Genome Biol 20, 257. https://doi.org/10.1186/S13059-019-1891-0
Wood, DE, Salzberg, SL, 2014. Kraken: การจำแนกลำดับ metagenomic ultrafast โดยใช้การจัดตำแหน่งที่แน่นอน จีโนม biol 15, R46 https://doi.org/10.1186/gb-2014-15-3-R46