Biowulf High Performance Computing at the NIH
Integrative on Biowulf

Integrative is a novel statistical framework for integrating the results from molecular QTL mapping into genome-wide genetic association analysis of complex traits. Its primary objectives are the quantitative assessment of the enrichment of the molecular QTLs in complex trait-associated genetic variants and the colocalizations of the two types of association signals. The analysis involves introduction of a Bayesian hierarchical model that treats the latent association status of molecular QTLs as SNP-level annotations for candidate SNPs for complex traits.

References:

Documentation
Important Notes

The software can be run on the assumption that a workspace with data and executables is organized in folders of a specific structure, similar to the one shown here:

Interactive job
Interactive jobs should be used for debugging, graphics, or applications that cannot be run as batch jobs.

Allocate an interactive session and run the program. Sample session:

[user@biowulf]$ sinteractive --mem=16g
[user@cn3144~]$ mkdir -p /scratch/$USER/integrative && cd /scratch/$USER/integrative
[user@cn3144~]$ ln -s ${INTEGRATIVE_HOME}/bin
[user@cn3144~]$ ln -s ${INTEGRATIVE_HOME}/data
[user@cn3144~]$ ln -s ${INTEGRATIVE_HOME}/HDL_blood.enloc.params
[user@cn3144~]$ bin/enloc HDL_blood.enloc.params
Start enrichment analysis
Impute eQTL data ...
Perform enrichment analysis by multiple imputation ...
Read in 1700 loci, 6127680 locus-SNP pairs ...
...
Loading annotations ...
Initializing ...
Starting EM ...
...
Applying adaptive L2 penalty = 0.544

  Iter          loglik          Intercept    annot.1
Applying adaptive L2 penalty = 0.569

  Iter          loglik          Intercept    annot.1
Applying adaptive L2 penalty = 0.552

  Iter          loglik          Intercept    annot.1
Applying adaptive L2 penalty = 0.558
...

  Iter          loglik          Intercept    annot.1
   1         -1691.244           -8.538      0.462
   1         -1691.244           -8.538      0.371
   1         -1691.244           -8.538      0.433
   1         -1691.244           -8.538      0.406
   1         -1691.244           -8.537      0.336
   1         -1691.244           -8.537      0.283
   1         -1691.244           -8.538      0.386
   1         -1691.244           -8.538      0.406
   2          1755.205           -9.210      1.001
   2          1755.134           -9.210      0.954
   2          1754.926           -9.209      0.774
...
  22          2089.633          -10.340      4.486
  22          2091.682          -10.362      4.672
  23          2087.960          -10.325      4.330
  23          2086.530          -10.309      4.121
  24          2088.057          -10.327      4.356
  24          2086.639          -10.312      4.151
Read in 1700 loci, 6127680 locus-SNP pairs ...
Loading annotations ...
...
Applying adaptive L2 penalty = 0.566
 Iter          loglik          Intercept    annot.1
   1         -1691.244           -8.538      0.386
Initializing ...
Starting EM ...
Initializing ...
Starting EM ...
   1         -1691.244           -8.538      0.432
Applying adaptive L2 penalty = 0.545

  Iter          loglik          Intercept    annot.1
   1         -1691.244           -8.538      0.447
   1         -1691.244           -8.538      0.390
Applying adaptive L2 penalty = 0.539

  Iter          loglik          Intercept    annot.1
   2          1754.984           -9.209      0.833
   2          1755.112           -9.209      0.935
   3          2000.037           -9.602      1.302
Initializing ...
Starting EM ...
Initializing ...
Starting EM ...
   2          1755.159           -9.209      0.959
   2          1754.986           -9.209      0.821
...
Applying adaptive L2 penalty = 0.564

  Iter          loglik          Intercept    annot.1
   1         -1691.244           -8.538      0.386
   2          1754.981           -9.209      0.825
   3          1999.994           -9.602      1.272
   4          2055.133           -9.846      1.706
   5          2072.081          -10.001      2.112
   6          2078.399          -10.099      2.481
   7          2081.341          -10.163      2.809
   8          2083.119          -10.205      3.093
   9          2084.430          -10.234      3.336
  10          2085.492          -10.255      3.540
  11          2086.371          -10.270      3.710
  12          2087.093          -10.283      3.851
  13          2087.679          -10.293      3.967
  14          2088.147          -10.301      4.063
  15          2088.518          -10.308      4.141
  16          2088.809          -10.314      4.205
  17          2089.037          -10.319      4.257
  18          2089.215          -10.323      4.300
  19          2089.355          -10.327      4.335
  20          2089.464          -10.329      4.363


Start co-localization analysis
Find GWAS QTLs ...
Read in 1700 loci, 6127680 locus-SNP pairs ...
Initializing ...
Starting EM ...
  Iter          loglik          Intercept
   1         -1691.244           -8.537
   2          1754.546           -9.207
   3          1998.997           -9.598
   4          2053.407           -9.840
   5          2069.462           -9.990
   6          2074.747          -10.084
   7          2076.574          -10.141
   8          2077.221          -10.176
   9          2077.452          -10.198
  10          2077.535          -10.211


    Total Loci: 1700   Rejections: 72
Summarize QTL PIPs ..
Prepare for co-localizaiton analysis ...
Compute priors ...
Perform fine-mapping of GWAS ...
Compute regional col-localization probabilities ...
[user@cn3144 ~]$ exit
salloc.exe: Relinquishing job allocation 46116226

Batch job
Most jobs should be run as batch jobs.

Create a batch input file (e.g. integrative.sh). For example:

#!/bin/bash
set -e
module load integrative
cp ${INTEGRATIVE_HOME}/HDL_blood.enloc.params .
cp -r ${INTEGRATIVE_HOME}/data .
enloc HDL_blood.enloc.params

Submit this job using the Slurm sbatch command.

[user@biowulf]$sbatch [--cpus-per-task=#] [--mem=#] integrative.sh