choishingwan / PRSice

A software package for calculating, applying, evaluating and plotting the results of polygenic risk scores
http://prsice.info
GNU General Public License v3.0
180 stars 85 forks source link

Cannot set permutation times larger than 10,000 in PRSice-2 v2.3.3 #275

Closed clytiaxu closed 2 years ago

clytiaxu commented 3 years ago

Hi Shing Wan, I am using PRSice-2 to conduct pathway-based PRS analysis. I used --perm 10000 to get the empirical P-value for each pathway and found that the most significant empirical P-value under all conditions is 1E-04. Therefore, when I had ~3000 pathways to be tested, no pathways would pass the Bonferroni correction (0.05/3000=1.7E-05). I guessed that the smallest P-value might be related to the permutation times, so I tried to set a larger number for --perm, for example, 1000000. However, I always got the following erro:

PRSice 2.3.3 (2020-08-05) https://github.com/choishingwan/PRSice (C) 2016-2020 Shing Wan (Sam) Choi and Paul F. O'Reilly GNU General Public License v3 If you use PRSice in any published work, please cite: Choi SW, O'Reilly PF. PRSice-2: Polygenic Risk Score Software for Biobank-Scale Data. GigaScience 8, no. 7 (July 1, 2019) 2021-08-26 10:20:14 ./PRSice_linux \ --a1 A1 \ --a2 A2 \ --bar-levels 0.001,0.05,0.1,0.2,0.3,0.4,0.5,1 \ --base TOY_BASE_GWAS.assoc \ --binary-target T \ --bp BP \ --chr CHR \ --clump-kb 250kb \ --clump-p 1.000000 \ --clump-r2 0.100000 \ --interval 5e-05 \ --lower 5e-08 \ --num-auto 22 \ --or \ --out perm_test \ --perm 1e+05 \ --pvalue P \ --seed 35553864 \ --snp SNP \ --stat OR \ --target TOY_TARGET_DATA \ --thread 10 \ --upper 0.5

Error: Invalid numeric argument passed to perm: 1e+05! Therefore, I have the following questions:

  1. Was the smallest empirical P-value decided by the permutation times?
  2. I noticed that PRSice-2 recommended to use permutation times > 10000 (https://www.prsice.info/step_by_step/), however, the program always fails when perm >10000. Is there any specific requirement for the format of the number?
  3. Whether the empirical P-value should be corrected for multiple comparisons? Or I can directly use the empirical P-value for interpretation?

Thanks very much for your help. Best, Clytia

choishingwan commented 2 years ago

Hi there, sorry for the ridiculous delay.

  1. The smallest p-value is 1 / (num perm + 1).
  2. Were you using R? I think maybe the Rscript has changed the format of the number as I would otherwise expect 100000 is a valid input to PRSIce.
  3. In most case, you can use the empirical P-value directly.