broadinstitute / tensorqtl

Ultrafast GPU-enabled QTL mapper
BSD 3-Clause "New" or "Revised" License
162 stars 52 forks source link

How to understand pval_nominal_threshold? #118

Closed Geneva0725 closed 10 months ago

Geneva0725 commented 11 months ago

Hi,

Thanks for developing this awesome tool. I am confused with pval_nominal_threshold column outputted by post.calculate_qvalues function. Is this column a significant threshold? Can I filter significant result with qval < 0.05 or pval_nominal < pval_nominal_threshold?

francois-a commented 10 months ago

The qval column should be used to filter for, e.g., eGenes. The pval_nominal_threshold column indicates for each phenotype what the largest nominal p-value that still passes FDR would be. The calculation is performed here.

Geneva0725 commented 10 months ago

Thanks for replying!

But I found that in my results some eQTL's nominal p-value less than nominal p-value threshold, but its qval is greater than the threshold, likeqval < 0.1, and I show an example below. Do you know how that happens? And I'm wondering if I can relax the significance threshold to pval_nominal < pval_nominal_threshold?

phenotype_id num_var beta_shape1 beta_shape2 true_df pval_true_df variant_id tss_distance ma_samples ma_count af pval_nominal slope slope_se pval_perm pval_beta qval pval_nominal_threshold
HNRNPK 4224 1.0438424 326.04254 18.688456 1.6377151131966172e-06 chr9_84582310_C_A 601694 21 28 0.53333336 3.6158298851078376e-07 -1.0103301 0.13879848 0.00019998 0.00037639 0.2648134184906671 9.806876908439229e-07
francois-a commented 10 months ago

There are some edge cases where this will happen (partially because of how this threshold computed using the phenotype closest to the FDR cutoff). pval_nominal_threshold is not meant to be used in any downstream analyses. To identify significant (independent) signals for each phenotype, fine-mapping should be used instead.