Download reference data
Configuration and default paths
Downloaded files go under ~/.gwaslab/ (data_directory). The local registry (config.json, mapping keywords → paths) also defaults to ~/.gwaslab/config.json. On first import, GWASLab migrates a legacy registry from {package}/data/config.json if present.
| Key | Default | Override |
|---|---|---|
data_directory |
~/.gwaslab/ |
gl.set_default_directory(), gwaslab init --directory DIR, gwaslab config set data_directory PATH, or GWASLAB_DATA_DIR |
config |
~/.gwaslab/config.json |
gl.options.set_option("config", path), gwaslab config set config PATH, or GWASLAB_CONFIG |
reference |
package data/reference.json |
gl.update_available_ref() to refresh from GitHub |
User overrides for data_directory and config are persisted in ~/.gwaslab/settings.json.
Example
CLI:
gwaslab init # create dirs, migrate config, scan default data_directory
gwaslab init --directory /data/refs # set data_directory (persisted) and scan
gwaslab config set data_directory /data/refs
gwaslab path config # show registry JSON path
Cache and storage layout
| Location | Purpose |
|---|---|
~/.gwaslab/ (data_directory) |
Downloaded genomic refs, sumstats subdirs (GCST…/), recombination extracts |
~/.gwaslab/config.json |
Registry: keyword → {local_path, kind, source, …} |
~/.gwaslab/settings.json |
Persisted path overrides |
~/.gwaslab/lookup/ |
Harmonize rsID sweep cache (per workflow) |
~/.gwaslab/recombination/hg19|hg38/ |
Lazy-downloaded recombination maps |
Package data/ |
Read-only catalog (reference.json), built-in HapMap3/chains |
platformdirs user cache (gwaspipe) |
infer_strand HDF5 cache (outside data_directory) |
Registry entries include kind: ref (catalog/local genomic refs) or sumstats (GWAS Catalog GCST). Filter with gwaslab list ref --downloaded --kind ref.
Check available reference data
Processed 1KG VCF, rsID tables, HapMap3 EAF, and recombination maps are hosted on Hugging Face (Cloufield/gwaslab-reference). Other files (dbSNP, UCSC FASTA, Ensembl/RefSeq GTF, liftOver chains) are downloaded from their original source.
The catalog is nested JSON in reference.json (one keyword per entry with url, description, suggested_use, optional tbi, md5sum).
stdout (abbreviated):
Start to check available reference files...
- Available keywords: 1kg_eas_hg19 1kg_eur_hg19 ucsc_genome_hg19 ...
Finished checking available reference files...
Each keyword maps to metadata such as:
{
"url": "https://huggingface.co/datasets/Cloufield/gwaslab-reference/resolve/main/1kg/hg19/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz",
"description": "1000 Genomes Project East Asian (1KG EAS) VCF on hg19 …",
"suggested_use": "LD reference panel for region plot; infer strand for EAS",
"tbi": {"url": "https://huggingface.co/datasets/Cloufield/gwaslab-reference/resolve/main/1kg/hg19/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi"},
"md5sum": "6162a93cb80935168c0bfa519748b054"
}
Download reference data
GWASLab default directory for saving reference data is ~/.gwaslab
stdout:
Sat Feb 3 13:45:00 2024 Start to download testlink ...
Sat Feb 3 13:45:00 2024 -Downloading to: /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz
Sat Feb 3 13:46:24 2024 -Updating record in config file...
Sat Feb 3 13:46:24 2024 -File /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz.tbi exists.
Sat Feb 3 13:46:24 2024 -Updating record in config file...
Sat Feb 3 13:46:24 2024 -Downloading to: /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 Downloaded testlink successfully!
Check downloaded reference data
stdout:
Sat Feb 3 13:46:24 2024 Start to check downloaded reference files...
Sat Feb 3 13:46:24 2024 -Checking the config file:/home/yunye/work/gwaslab/src/gwaslab/data/config.json
Sat Feb 3 13:46:24 2024 -Config file exists.
Sat Feb 3 13:46:24 2024 -Updating config.json...
Sat Feb 3 13:46:24 2024 - ensembl_hg19_gtf : /home/yunye/.gwaslab/Homo_sapiens.GRCh37.87.chr.gtf.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_hg19 : /home/yunye/.gwaslab/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_hg19_tbi : /home/yunye/.gwaslab/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - recombination_hg38 : /home/yunye/.gwaslab/recombination/hg38/recombination_hg38.tar.gz
Sat Feb 3 13:46:24 2024 - ensembl_hg38_gtf : /home/yunye/.gwaslab/Homo_sapiens.GRCh38.109.chr.gtf.gz
Sat Feb 3 13:46:24 2024 - ucsc_genome_hg19 : /home/yunye/.gwaslab/hg19.fa
Sat Feb 3 13:46:24 2024 - ucsc_genome_hg38 : /home/yunye/.gwaslab/hg38.fa
Sat Feb 3 13:46:24 2024 - refseq_hg19_gtf : /home/yunye/.gwaslab/GRCh37_latest_genomic.gtf.gz
Sat Feb 3 13:46:24 2024 - refseq_hg38_gtf : /home/yunye/.gwaslab/GRCh38_latest_genomic.gtf.gz
Sat Feb 3 13:46:24 2024 - 1kg_dbsnp151_hg19_auto : /home/yunye/.gwaslab/1kg_dbsnp151_hg19_auto.txt.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_x_hg19 : /home/yunye/.gwaslab/EAS.chrX.split_norm_af.1kgp3v5.vcf.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_x_hg19_tbi : /home/yunye/.gwaslab/EAS.chrX.split_norm_af.1kgp3v5.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - 1kg_afr_hg19 : /home/yunye/.gwaslab/AFR.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz
Sat Feb 3 13:46:24 2024 - 1kg_afr_hg19_tbi : /home/yunye/.gwaslab/AFR.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - testlink_tbi : /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - testlink : /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz
{'ensembl_hg19_gtf': '/home/yunye/.gwaslab/Homo_sapiens.GRCh37.87.chr.gtf.gz',
'1kg_eas_hg19': '/home/yunye/.gwaslab/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz',
'1kg_eas_hg19_tbi': '/home/yunye/.gwaslab/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi',
'recombination_hg38': '/home/yunye/.gwaslab/recombination/hg38/recombination_hg38.tar.gz',
'ensembl_hg38_gtf': '/home/yunye/.gwaslab/Homo_sapiens.GRCh38.109.chr.gtf.gz',
'ucsc_genome_hg19': '/home/yunye/.gwaslab/hg19.fa',
'ucsc_genome_hg38': '/home/yunye/.gwaslab/hg38.fa',
'refseq_hg19_gtf': '/home/yunye/.gwaslab/GRCh37_latest_genomic.gtf.gz',
'refseq_hg38_gtf': '/home/yunye/.gwaslab/GRCh38_latest_genomic.gtf.gz',
'1kg_dbsnp151_hg19_auto': '/home/yunye/.gwaslab/1kg_dbsnp151_hg19_auto.txt.gz',
'1kg_eas_x_hg19': '/home/yunye/.gwaslab/EAS.chrX.split_norm_af.1kgp3v5.vcf.gz',
'1kg_eas_x_hg19_tbi': '/home/yunye/.gwaslab/EAS.chrX.split_norm_af.1kgp3v5.vcf.gz.tbi',
'1kg_afr_hg19': '/home/yunye/.gwaslab/AFR.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz',
'1kg_afr_hg19_tbi': '/home/yunye/.gwaslab/AFR.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi',
'testlink_tbi': '/home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz.tbi',
'testlink': '/home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz'}
Remove downloaded reference data
stdout:
Sat Feb 3 13:46:24 2024 Start to remove testlink ...
Sat Feb 3 13:46:24 2024 Removed : /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz
Sat Feb 3 13:46:24 2024 Start to check downloaded reference files...
Sat Feb 3 13:46:24 2024 -Checking the config file:/home/yunye/work/gwaslab/src/gwaslab/data/config.json
Sat Feb 3 13:46:24 2024 -Config file exists.
Sat Feb 3 13:46:24 2024 -Updating config.json...
Sat Feb 3 13:46:24 2024 - ensembl_hg19_gtf : /home/yunye/.gwaslab/Homo_sapiens.GRCh37.87.chr.gtf.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_hg19 : /home/yunye/.gwaslab/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_hg19_tbi : /home/yunye/.gwaslab/EAS.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - recombination_hg38 : /home/yunye/.gwaslab/recombination/hg38/recombination_hg38.tar.gz
Sat Feb 3 13:46:24 2024 - ensembl_hg38_gtf : /home/yunye/.gwaslab/Homo_sapiens.GRCh38.109.chr.gtf.gz
Sat Feb 3 13:46:24 2024 - ucsc_genome_hg19 : /home/yunye/.gwaslab/hg19.fa
Sat Feb 3 13:46:24 2024 - ucsc_genome_hg38 : /home/yunye/.gwaslab/hg38.fa
Sat Feb 3 13:46:24 2024 - refseq_hg19_gtf : /home/yunye/.gwaslab/GRCh37_latest_genomic.gtf.gz
Sat Feb 3 13:46:24 2024 - refseq_hg38_gtf : /home/yunye/.gwaslab/GRCh38_latest_genomic.gtf.gz
Sat Feb 3 13:46:24 2024 - 1kg_dbsnp151_hg19_auto : /home/yunye/.gwaslab/1kg_dbsnp151_hg19_auto.txt.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_x_hg19 : /home/yunye/.gwaslab/EAS.chrX.split_norm_af.1kgp3v5.vcf.gz
Sat Feb 3 13:46:24 2024 - 1kg_eas_x_hg19_tbi : /home/yunye/.gwaslab/EAS.chrX.split_norm_af.1kgp3v5.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - 1kg_afr_hg19 : /home/yunye/.gwaslab/AFR.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz
Sat Feb 3 13:46:24 2024 - 1kg_afr_hg19_tbi : /home/yunye/.gwaslab/AFR.ALL.split_norm_af.1kgp3v5.hg19.vcf.gz.tbi
Sat Feb 3 13:46:24 2024 - testlink_tbi : /home/yunye/.gwaslab/EAS.chr22.split_norm_af.1kgp3v5.vcf.gz.tbi
or you can simply delete files in ~/.gwaslab
Get the path of reference data
Get the path using keywords. The path can be passed to other functions.
If you haven't downloaded it. It will return False.
stdout:
Update available reference list
stdout: