QTLtools is a tool set for molecular QTL discovery and analysis. It allows to go from the raw sequence data to collection of molecular Quantitative Trait Loci (QTLs) in few easy-to-perform steps.
Allocate an interactive session and run the program.
Sample session (user input in bold):
[user@biowulf ~]$ sinteractive -c4 --mem=8g --gres=lscratch:10
salloc.exe: Pending job allocation 61635379
salloc.exe: job 61635379 queued and waiting for resources
salloc.exe: job 61635379 has been allocated resources
salloc.exe: Granted job allocation 61635379
salloc.exe: Waiting for resource configuration
salloc.exe: Nodes cn3136 are ready for job
srun: error: x11: no local DISPLAY defined, skipping
[user@cn3136 ~]$ module load qtltools
[+] Loading qtltools 1.2 on cn3136
[+] Loading gcc 9.2.0 ...
[+] Loading GSL 2.6 for GCC 9.2.0 ...
[-] Unloading gcc 9.2.0 ...
[+] Loading gcc 9.2.0 ...
[+] Loading openmpi 3.1.4 for GCC 9.2.0
[+] Loading ImageMagick 7.0.8 on cn3136
[+] Loading HDF5 1.10.4
[-] Unloading gcc 9.2.0 ...
[+] Loading gcc 9.2.0 ...
[+] Loading NetCDF 4.7.4_gcc9.2.0
[+] Loading pandoc 2.10 on cn3136
[+] Loading pcre2 10.21 ...
[+] Loading R 4.0.0
[user@cn3136 ~]$ cd /lscratch/$SLURM_JOB_ID
[user@cn3136 61635379]$ wget http://jungle.unige.ch/QTLtools_examples/HG00381.chr22.bam && \
wget http://jungle.unige.ch/QTLtools_examples/HG00381.chr22.bam.bai && \
wget http://jungle.unige.ch/QTLtools_examples/gencode.v19.annotation.chr22.gtf.gz
--2020-07-22 15:44:12-- http://jungle.unige.ch/QTLtools_examples/HG00381.chr22.bam
Resolving dtn01-e0 (dtn01-e0)... 10.1.200.237
Connecting to dtn01-e0 (dtn01-e0)|10.1.200.237|:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 47167929 (45M) [text/plain]
Saving to: ‘HG00381.chr22.bam’
100%[============================================================>] 47,167,929 16.2MB/s in 2.8s
2020-07-22 15:44:15 (16.2 MB/s) - ‘HG00381.chr22.bam’ saved [47167929/47167929]
--2020-07-22 15:44:15-- http://jungle.unige.ch/QTLtools_examples/HG00381.chr22.bam.bai
Resolving dtn01-e0 (dtn01-e0)... 10.1.200.237
Connecting to dtn01-e0 (dtn01-e0)|10.1.200.237|:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 50136 (49K) [text/plain]
Saving to: ‘HG00381.chr22.bam.bai’
100%[============================================================>] 50,136 173KB/s in 0.3s
2020-07-22 15:44:15 (173 KB/s) - ‘HG00381.chr22.bam.bai’ saved [50136/50136]
--2020-07-22 15:44:15-- http://jungle.unige.ch/QTLtools_examples/gencode.v19.annotation.chr22.gtf.gz
Resolving dtn01-e0 (dtn01-e0)... 10.1.200.237
Connecting to dtn01-e0 (dtn01-e0)|10.1.200.237|:3128... connected.
Proxy request sent, awaiting response... 200 OK
Length: 881813 (861K) [application/x-gzip]
Saving to: ‘gencode.v19.annotation.chr22.gtf.gz’
100%[============================================================>] 881,813 194KB/s in 4.4s
2020-07-22 15:44:20 (194 KB/s) - ‘gencode.v19.annotation.chr22.gtf.gz’ saved [881813/881813]
[user@cn3136 61635379]$ QTLtools quan \
--bam HG00381.chr22.bam \
--gtf gencode.v19.annotation.chr22.gtf.gz \
--sample HG00381 \
--out-prefix HG00381 \
--filter-mapping-quality 150 \
--filter-mismatch 5 \
--filter-mismatch-total 5 \
--rpkm
QTLtools
* Authors : Olivier DELANEAU / Halit ONGEN / Emmanouil DERMITZAKIS
* Contact : olivier.delaneau@gmail.com / halit.ongen@unige.ch / Emmanouil.Dermitzakis@unige.ch
* Webpage : https://qtltools.github.io/qtltools/
* Version : 1.2
* Date : 22/07/2020 - 15:44:33
* Citation: A complete tool set for molecular QTL discovery and analysis, https://doi.org/10.1038/ncomms15452
QUANTIFY GENES AND EXONS FROM BAM FILES
WARNING: OUTPUT IS NOT COMPATABLE WITH QUANTIFICATIONS GENERATED BEFORE VERSION 1.2
* Minimum mapping quality: 150
* Maximum mismatch count per mate-pair: 5
* Maximum mismatch count per read: 5
* Not checking properly paired flag
* Not checking if all blocks of a split read are consistent with the annotation
* Not filtering reads flagged as duplicate
* Not filtering reads flagged as failing QC
* Merging overlapping mate pairs
* Excluding exons smaller than 0 bp only in exon quantifications
* Including all gene types
* Unique hash for this combination of options and GTF file: 2bdBW71i0Bq
Initialize random number generator
* Built-in seed is 15112011
* First Integer = 30554
* First Double = 0.0126695
Reading exons in [gencode.v19.annotation.chr22.gtf.gz]
Opening BAM file [HG00381.chr22.bam]
* reading header
* reading index file
* reading BAM file
* Expecting 610860 lines
[======================================================================] 100 %
* DONE: 610860 lines read
WARNING: 8842 unmatched mate pairs found
Printing counts
Printing RPKM
Printing stats
Running time: 3 seconds
[user@cn3136 61635379]$ exit
exit
salloc.exe: Relinquishing job allocation 61635379
salloc.exe: Job allocation 61635379 has been revoked.
[user@biowulf ~]$
Create a batch input file (e.g. qtltools.sh). For example:
#!/bin/bash
module load qtltools
cd /lscratch/$SLURM_JOB_ID
wget http://jungle.unige.ch/QTLtools_examples/HG00381.chr22.bam && \
wget http://jungle.unige.ch/QTLtools_examples/HG00381.chr22.bam.bai && \
wget http://jungle.unige.ch/QTLtools_examples/gencode.v19.annotation.chr22.gtf.gz
QTLtools quan \
--bam HG00381.chr22.bam \
--gtf gencode.v19.annotation.chr22.gtf.gz \
--sample HG00381 \
--out-prefix HG00381 \
--filter-mapping-quality 150 \
--filter-mismatch 5 \
--filter-mismatch-total 5 \
--rpkm
Submit this job using the Slurm sbatch command.
sbatch [--cpus-per-task=#] [--mem=#] [--gres=lscratch:#] qtltools.sh
Create a swarmfile (e.g. qtltools.swarm). For example:
QTLtools mbv --bam samp1.bam --vcf samp1.vcf.gz --filter-mapping-quality 150 --out samp1.bamstat.txt QTLtools mbv --bam samp2.bam --vcf samp2.vcf.gz --filter-mapping-quality 150 --out samp2.bamstat.txt QTLtools mbv --bam samp3.bam --vcf samp3.vcf.gz --filter-mapping-quality 150 --out samp3.bamstat.txt QTLtools mbv --bam samp4.bam --vcf samp4.vcf.gz --filter-mapping-quality 150 --out samp4.bamstat.txt
Submit this job using the swarm command.
swarm -f qtltools.swarm [-g #] [-t #] --module qtltoolswhere
| -g # | Number of Gigabytes of memory required for each process (1 line in the swarm command file) |
| -t # | Number of threads/CPUs required for each process (1 line in the swarm command file). |
| --module qtltools | Loads the qtltools module for each subjob in the swarm |