A p-value of zero should be interpreted as an extremely small positive value.
S-PrediXcan or PrediXcan will provide the zscore as well as the p-value. You can calculate the p-value corresponding to the Zscore using the formula below. For example a Zscore of 30 will give you a (natural) log p-value of -453.6280968
Zscore = 30
pnorm(-abs(Zscore) , log.p = TRUE) + log(2)
## [1] -453.6281
MultiXcan doesn’t output the test statistics used for the p-value calculation. But you can get a sense of how extreme the p-values can be by looking at the largest Z-scores in absolute value in the z_min
and z_max
columns. The (natural) log of the p-value corresponding to your results is shown below.
suppressMessages(library(tidyverse))
tempo = read_tsv("~/Downloads/multixcan_output.txt")
pnorm(- max(abs(c(tempo$z_max,tempo$z_min ) ), na.rm = TRUE), log.p = TRUE) + log(2)