Skip to content

Repository files navigation

quickhla

About

quickhla is inspired by https://github.com/ExpressionAnalysis/HLAProfiler and https://sourceforge.net/projects/targt-pipeline/ to use k-mer content of next generation sequencing reads and subsequent mapping to classify HLA types in a sample.

quickhla heavily relies on the data from the IPD-IMGT/HLA database.

quickhla workflow

Usage

First, the HLA k-mer databases need to be build (can take up to 30 minutes):

# download hla fasta files from ftp://ftp.ebi.ac.uk/pub/databases/ipd/imgt/hla/fasta/
wget ftp://ftp.ebi.ac.uk/pub/databases/ipd/imgt/hla/fasta/hla_gen.fasta
wget ftp://ftp.ebi.ac.uk/pub/databases/ipd/imgt/hla/fasta/hla_nuc.fasta
# build databases with k-mer length of 35
quickhla build -gen hla_gen.fasta -nuc hla_nuc.fasta
# build databases with k-mer length of 35 using 12 threads
quickhla build -gen hla_gen.fasta -nuc hla_nuc.fasta -t 12

see help

quickhla build -h

usage: quickhla <sub-script> [options] [<arguments>...] build
       [-h] [-gen GEN] [-nuc NUC] [-o O] [-kb KB] [-bb BB] [-hb HB] [-kl KL]
       [-ml ML] [-ms MS]

optional arguments:
  -h, --help  show this help message and exit
  -gen GEN    input gen file [mandatory]
  -nuc NUC    input nuc file [mandatory]
  -o O        output kraken2 database directory [default: hla.db]
  -kb KB      specify kraken2-build binary [if not given assumes to be in
              PATH]
  -bb BB      specify bowtie2-build binary [if not given assumes to be in
              PATH]
  -hb HB      specify hisat2-build binary [if not given assumes to be in PATH]
  -kl KL      kraken2 kmer-len array [default: 35] can be an array of values
              and needs to be same length as -ml and -ms
  -ml ML      kraken2 minimizer-len array [default: 31] if array needs to be
              same length as -kl and -ms
  -ms MS      kraken2 minimizer-space array [default: 7] if array needs to be
              same length as -kl and -ml
  -t T        specify number threads [default: 1]

One can also create the consensus sequences for the different digit levels 2d, 4d, 6d and subsequently use these files to build the database.

mkdir msf
cd msf
wget -A msf -l 1 -r -nd --no-parent ftp://ftp.ebi.ac.uk/pub/databases/ipd/imgt/hla/msf/
quickhla msf -i .
cd ..
# 2d
quickhla build -gen msf/gen_2d.consensus.fasta -nuc msf/nuc_2d.consensus.fasta -t 12 -o msf.2d.db
# 4d
quickhla build -gen msf/gen_4d.consensus.fasta -nuc msf/nuc_4d.consensus.fasta -t 12 -o msf.4d.db
# 6d
quickhla build -gen msf/gen_6d.consensus.fasta -nuc msf/nuc_6d.consensus.fasta -t 12 -o msf.6d.db

For paired reads FORWARD.fq and REVERSE.fq using the standard nuc database created for four-digits 4d , the basic usage is:

quickhla classify -f FORWARD.fq -r REVERSE.fq -d hla.db -db hla.nuc.4d.35 -n 4 -t 12

see help

quickhla classify -h

usage: quickhla <sub-script> [options] [<arguments>...] classify
       [-h] [-f F] [-r R] [-d D] [-db DB] [-o O] [-t T] [-kb KB] [-alg ALG]
       [-bb BB] [-bo BO] [-hb HB] [-ho HO] [-n N]

optional arguments:
  -h, --help  show this help message and exit
  -f F        specify forward fastq [mandatory]
  -r R        specify reverse fastq [mandatory]
  -d D        specify db directory [mandatory]
  -db DB      specify db for classification [mandatory]
  -o O        specify output prefix [default: out]
  -t T        specify number threads [default: 1]
  -kb KB      specify kraken2 binary [if not given assumes to be in PATH]
  -alg ALG    specify aligner [default: hisat2]
  -w          apply weights on read counts [default: False]
  -bb BB      specify bowtie2 binary [if not given assumes to be in PATH]
  -bo BO      specify bowtie2 options [default: --very-fast --no-unal
              -k 1000]
  -hb HB      specify hisat2 binary [if not given assumes to be in PATH]
  -ho HO      specify hisat2 options [default: --fast -k 1000]
  -n N        specify number of top hits to report [default: show all]

Output

quickhla outputs two plain text files with the HLA classifications (1. from k-mer and 2. from mapping)

The output are:

  1. k-mer results (number of fragments per class)

Example shows the top 2 hits per HLA class out.hla.nuc.4d.35.report

#quickhla classify -f SRR099966_1.filt.fastq.gz -r SRR099966_2.filt.fastq.gz -d hla.db -db hla.nuc.4d.35 -n 4 -t 12
 99.90  99117470        99117470        U       0       unclassified
  0.10  98293   10992   R       1       hlaroot
  0.01  10824   2831    K       2         A
  0.00  2464    196     P       1424        A*02
  0.00  356     356     C       1425          A*02:01
  0.00  276     276     C       4832          A*02:874
  0.00  944     13      P       8499        A*24
  0.00  212     212     C       8500          A*24:02
  0.00  56      56      C       9843          A*24:371

  0.01  10476   3261    K       16304     B
  0.00  1155    91      P       29130       B*44
  0.00  471     471     C       29320         B*44:03
  0.00  75      75      C       30293         B*44:329
  0.00  821     9       P       16305       B*07
  0.00  133     133     C       16306         B*07:02
  0.00  87      87      C       17422         B*07:338

  0.01  10549   2352    K       36025     C
  0.00  2833    388     P       43684       C*07
  0.00  455     455     C       43984         C*07:02
  0.00  135     135     C       43685         C*07:01
  0.00  1274    70      P       37661       C*03
  0.00  254     254     C       39237         C*03:418
  0.00  196     196     C       37885         C*03:04 

  0.01  8596    1785    K       68214     DQB1
  0.00  2114    247     P       68874       DQB1*03
  0.00  206     206     C       68875         DQB1*03:01
  0.00  117     117     C       70083         DQB1*03:369
  0.00  1602    297     P       70844       DQB1*05
  0.00  205     205     C       70943         DQB1*05:02
  0.00  165     165     C       70845         DQB1*05:01

  0.01  6789    2058    K       51886     DRB1
  0.00  592     14      P       58657       DRB1*15
  0.00  85      85      C       58889         DRB1*15:114
  0.00  68      68      C       58832         DRB1*15:08
  0.00  543     107     P       53018       DRB1*04
  0.00  44      44      C       53163         DRB1*04:05
  0.00  34      34      C       53892         DRB1*04:286N  
  1. mapping results (number of reads per class)

Example shows the top 4 hits per HLA class and digit level out.hla.nuc.4d.35.class.txt

#quickhla classify -f SRR099966_1.filt.fastq.gz -r SRR099966_2.filt.fastq.gz -d hla.db -db hla.nuc.4d.35 -n 4 -t 12
A	311503
        A*01	122814
        A*11	77905
        A*03	73636
        A*30	31114
        	A*01:01	48306
        	A*03:01	27812
        	A*11:01	27718
        	A*30:02	5378
        		A*01:01:01      24741
        		A*03:01:01      16294
        		A*11:01:01      14110
        		A*30:02:01      3309
        			A*01:01:71:NA   488
        			A*01:251:NA:NA  343
        			A*01:01:01:24   342
        			A*01:342:NA:NA  341
B       143234
        B*15    27971
        B*08    22800
        B*57    16677
        B*44    9919
        	B*08:01 7046
        	B*57:01 5946
        	B*15:01 4297
        	B*18:01 3710
        		B*08:01:01      3665
        		B*18:01:01      2500
        		B*57:01:01      2434
        		B*15:01:01      2236
        			B*57:03:04:NA   144
        			B*57:01:01:14   127
        			B*57:01:01:20   127
        			B*57:99:NA:NA   127
C       280304
        C*07    193392
        C*06    33631
        C*12    18817
        C*05    10718
        	C*07:01 37102
        	C*07:02 36435
        	C*06:02 11190
        	C*07:04 5048
        		C*07:01:01      21353
        		C*07:02:01      20340
        		C*06:02:01      4978
        		C*05:01:01      2533
        			C*07:02:01:17N  230
        			C*07:777:NA:NA  223
        			C*07:01:01:47   222
        			C*07:109:02:NA  222
DQB1    92545
        DQB1*03 43277
        DQB1*02 27180
        DQB1*04 10886
        DQB1*06 10320
        	DQB1*02:01      5047
        	DQB1*03:02      4872
        	DQB1*03:03      4636
        	DQB1*03:01      3725
        		DQB1*03:02:01   1718
        		DQB1*03:01:01   1535
        		DQB1*04:02:01   1409
        		DQB1*02:02:01   1081
        			DQB1*02:59:NA:NA        254
        			DQB1*02:01:01:01        253
        			DQB1*02:01:01:04        250
        			DQB1*02:01:01:02        249
DRB1    272859
        DRB1*13 48947
        DRB1*11 47441
        DRB1*03 36771
        DRB1*14 36447
        	DRB1*07:01      8146
        	DRB1*03:01      7646
        	DRB1*11:01      7551
        	DRB1*13:01      7468
        		DRB1*14:54:01   4685
        		DRB1*13:02:01   4060
        		DRB1*13:01:01   3660
        		DRB1*09:01:02   3330
        			DRB1*09:01:02:05        668
        			DRB1*07:01:01:04        667
        			DRB1*07:01:01:05        667
        			DRB1*09:01:02:02        667

Third-party Dependencies

quickhla requires:

You can install them manually (see individual download pages):

Or you can install them via conda:

conda install -c bioconda kraken2
conda install -c bioconda bowtie2
conda install -c biobuilds hisat2
conda install -c anaconda biopython
conda install -c anaconda numpy

Installation

via Conda

PyPI

Manually

git clone https://gitlab.gwdg.de/kristian.ullrich/quickhla.git
cd quickhla
python setup.py install

Manually in conda env

conda create -n quickhla python=3.8
conda activate quickhla
conda install -c bioconda kraken2
conda install -c bioconda bowtie2
conda install -c biobuilds hisat2
conda install -c anaconda biopython
conda install -c anaconda numpy
git clone https://gitlab.gwdg.de/kristian.ullrich/quickhla.git
cd quickhla
python setup.py install

Example

Test HLA typing for individuals from https://www.internationalgenome.org/

# download test data
wget ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/HG00100/sequence_read/SRR099966_1.filt.fastq.gz
wget ftp://ftp.1000genomes.ebi.ac.uk/vol1/ftp/phase3/data/HG00100/sequence_read/SRR099966_2.filt.fastq.gz
# classify reads - top 4 hits
quickhla classify -f SRR099966_1.filt.fastq.gz -r SRR099966_2.filt.fastq.gz -d hla.db -db hla.nuc.4d.35 -n 4 -t 12
# classify reads - top 4 hits - read counts weighted
quickhla classify -f SRR099966_1.filt.fastq.gz -r SRR099966_2.filt.fastq.gz -d hla.db -db hla.nuc.4d.35 -n 4 -t 12 -w

Known Issues

Contributing Code

If you would like to contribute to CRBHits, please file an issue so that one can establish a statement of need, avoid redundant work, and track progress on your contribution.

Before you do a pull request, you should always file an issue and make sure that someone from the CRBHits developer team agrees that it’s a problem, and is happy with your basic proposal for fixing it.

Once an issue has been filed and we've identified how to best orient your contribution with package development as a whole, fork the main repo, branch off a feature branch from master, commit and push your changes to your fork and submit a pull request for quickhla:master.

By contributing to this project, you agree to abide by the Code of Conduct terms.

Bug reports

Please report any errors or requests regarding quickhla to Kristian Ullrich (ullrich@evolbio.mpg.de)

or use the issue tracker at https://gitlab.gwdg.de/kristian.ullrich/quickhla/issues

Code of Conduct - Participation guidelines

This repository adhere to Contributor Covenant code of conduct for in any interactions you have within this project. (see Code of Conduct)

See also the policy against sexualized discrimination, harassment and violence for the Max Planck Society Code-of-Conduct.

By contributing to this project, you agree to abide by its terms.

References

  1. Buchkovich M.L., Brown C.C., Robasky K., Chai S., Westfall S., Vincent B.G., Weimer E.T., Powers J.G. (2017) HLAProfiler utilizes k-mer profiles to improve HLA calling accuracy for rare and common alleles in RNA-seq data. Genome Med, 9, 86. https://doi.org/10.1186/s13073-017-0473-6

  2. Pierini F., Nutsua M., Böhme L., Özer O., Bonczarowska J., Susat J., Franke A., Nebel A., Krause-Kyora B., Lenz T.L. (2020) Targeted analysis of polymorphic loci from low-coverage shotgun sequence data allows accurate genotyping of HLA genes in historical human populations. Sci Rep, 10, 7339. https://doi.org/10.1038/s41598-020-64312-w

  3. Robinson J., Barker D.J., Georgiou X., Cooper M.A., Flicek P., Marsh S.G.E. (2020) IPD-IMGT/HLA Database Nucleic Acids Research, 48(D1), D948–D955. https://doi.org/10.1093/nar/gkz950

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages