FindFungi
Software website : https://github.com/GiantSpaceRobot/FindFungi
เนื่องจากเป็นการใช้งานบน HPC จึงแนะนำให้ใช้เป็น SLURM implementation https://github.com/astrophys/FindFungi_adapted_for_slurm
1. การติดตั้ง Prerequisites
เนื่องจากบนระบบ TARA มี software บางส่วนติดตั้งไว้แล้ว ที่ต้องติดตั้งเพิ่มเติมจะมี 3 ส่วนคือ ทั้งนี้ถ้ามีการติดตั้ง software ดังกล่าวไว้ใน local หรือ project module ไม่จำเป็นต้องติดตั้งเพิ่มเติม
วิธีการติดตั้ง application โดยใช้ EasyBuild (thaisc.io) ในส่วน EasyBuild
1.1 python 2.7 package : biopython และ ete3
biopython ติดตั้งโดยใช้ EasyBuild (เนื่องจากไม่สามารถใช้ pip ได้ ถ้าไม่มี module SciPy bundle ให้ลง Scipy-bundle ก่อน แนะนำให้ปิดการทำ sanity_pip_check)
ete3 สามารถติดตั้งโดย ใช้ pip
module load Python/2.7.16-GCCcore-8.3.0
pip install --user ete3
1.2 skewer
ติดตั้งโดยใช้ EasyBuild
1.3 kraken
ติดตั้งโดยใช้ EasyBuild
2. การติดตั้ง FindFungi
สามารถทำตามขั้นตอนใน https://github.com/GiantSpaceRobot/FindFungi#installing ได้เลย โดยที่ clone จาก https://github.com/astrophys/FindFungi_adapted_for_slurm แทน เพื่อใช้ slurm implementation จากนั้นทำการปรับค่าใน PATH ใน FindFungi-0.23.3.sh ตัวอย่างเช่น
##### USER INPUT REQUIRED:
export ScriptPath=$PROJECTHOME/TS-195/FindFungi_adapted_for_slurm/ #Location of downloaded python and shell scripts
export PreDir=$z #Location you want FindFungi to build the analysis
export KrakenDir=$PROJECTHOME/TS-195/Kraken_32DB/ #Location of the 32 downloaded Kraken databases
export FungTaxDir=$PROJECTHOME/TS-195/FindFungi_adapted_for_slurm/ #Location of the Fungal taxids and PipelineSummary files from GitHub
export BLAST_DB_Dir=$PROJECTHOME/TS-195/FungalGenomeDatabases_EqualContigs/ #Location of the 949 downloaded BLAST databases
3. การ run FindFungi บน TARA
3.1 ปรับทรัพยากรที่ต้องการใช้งานใน FindFungi-0.23.3.sh
3.1.1 บรรทัดที่ 83
sbatch -W --array=1-32 --cpus-per-task=10 --job-name=kraken_Fungi --wrap='kraken --preload --db ${KrakenDir}/Kraken_${SLURM_ARRAY_TASK_ID} --threads 10 --fasta-input ${PreDir}/FASTA/${z}.final.fna --output ${Dir}/Processing/SplitFiles_Kraken/${z}.${SLURM_ARRAY_TASK_ID}' |
---|
เป็น
sbatch -W --array=1-32%2 --cpus-per-task=10 --job-name=kraken_Fungi --wrap='kraken --preload --db ${KrakenDir}/Kraken_${SLURM_ARRAY_TASK_ID} --threads 10 --fasta-input ${PreDir}/FASTA/${z}.final.fna --output ${Dir}/Processing/SplitFiles_Kraken/${z}.${SLURM_ARRAY_TASK_ID}' |
ซึ่งจะเป็นการ limit จำนวน jobs ที่จะรันพร้อมกันไว้ที่ 2 jobs (limit ไว้เนื่องจากการการ run kraken พร้อมๆกันบน node เดียวกันจะเกิดขอขวดซึ่งทำให้ software ทำงานได้ช้าลงอย่างมาก)
3.1.2 บรรทัดที่ 109
จาก
sbatch -W --job-name=sort_${File} --mem-per-cpu=30000 --wrap="sort -k2,2 ${d} > ${Dir}/Processing/SplitFiles_Kraken/sorted_${File}" & |
เป็น
sbatch -W --job-name=sort_${File} -c 1 --mem=64GB -p memory --wrap="sort -k2,2 ${d} > ${Dir}/Processing/SplitFiles_Kraken/sorted_${File}" & |
เพื่อระบุเป็น partition เป็น memory และกำหนดจำนวน core และ memory ที่ต้องการใช้งาน
3.1.2 บรรทัดที่ 172
จาก
sbatch -W --job-name=${Taxid} --cpus-per-task=20 --wrap="blastn -task megablast -query ${Dir}/Processing/ReadNames.${Taxid}.fsa -db ${BLAST_DB_Dir}/Taxid-${Taxid} -out ${Dir}/Results/BLAST_Processing/BLAST.${Taxid} -evalue 1E-20 -num_threads 20 -outfmt 6" & |
เป็น
sbatch -W --job-name=${Taxid} --cpus-per-task=20 -t 24:00:00 --wrap="blastn -task megablast -query ${Dir}/Processing/ReadNames.${Taxid}.fsa -db ${BLAST_DB_Dir}/Taxid-${Taxid} -out ${Dir}/Results/BLAST_Processing/BLAST.${Taxid} -evalue 1E-20 -num_threads 20 -outfmt 6" & |
เพื่อเพิ่ม time limit ในกรณีที่ job อาจจะใช้เวลานานในการ run (สามารถปรับค่าได้ตามความเหมาะสม)
3.2 run FindFungi
3.2.1 เตรียม script
สามารถปรับได้จากตัวอย่างด่านล่าง
#!/bin/bash
#SBATCH -p compute # Specify the partition or machine type used [Compute/Memory/GPU]
#SBATCH -N 1 -c 4 # Specify the number of nodes and the number of core per node
#SBATCH -t 100:00:00 # Specifies the maximum time limit (hour: minute: second)
#SBATCH -J findfungi # Specify the name of the Job
#SBATCH -A projxxxx # Specify Project account which will be received after Register ** If you do not specify in this section, the job will not be able to run.
#SBATCH # You can specify additional options.
module purge # unload all modules as they may have previously been loaded.
mu # activate local modules
# Load the module that you want to use.
module load R/3.6.2-fosscuda-2019b
module load Biopython/1.75-foss-2019b-Python-2.7.16
module load skewer/0.2.2-foss-2019b
module load Kraken/1.1-foss-2019b-Perl-5.30.0
./FindFungi_adapted_for_slurm/FindFungi-0.23.3.sh ERR675624_both-pairs.fastq ERR675624 # Run your program or executable code
สามารถปรับทรัพยากรได้ตามความเหมาะสม เนื่องจาก job หลักนอกจากจำทำหน้าที่ submit job อื่นๆแล้วยังมีภาระในการ manipulate files ต่างๆ และมีการวิเคราะห์ผลอยู่ด้วย
3.2.2 run FindFungi
โดย job ที่ได้จะเป็น job หลักและมีการ submit job อื่นๆ เพิ่มเติมเป็นๆระยะๆ ตาม pipeline