
Post by ape4fld on Jul 3, 2020 13:00:38 GMT
Hello,
I am running cojoslct on separate chromosomes, and noticed that in my output I have a few independent signals in one locus, but none of them are the SNP which has the lowest pvalue in that locus (also it is not in the badsnps file). Isn't the SNP with the lowest pvalue picked first and then condition for it, and select the next one, etc.?
This are the commands I am using: gcta64 bfile file cojoslct cojop 5e8 maf 0.01 chr 1 cojofile sumstats.txt out resultscojo
Thanks for any insights into this!


ax
New Member
Posts: 27

Post by ax on Jul 6, 2020 4:28:42 GMT
Hi ape4fld,
COJO output the SNPs whose pvalue is less than 5e8 in the joint model. So if the SNP with the lowest pvalue did not pass the 5e8 threshold it won't show up in the results file.
It'd be better if you could provide the results table and log file.
Cheers, AX



Post by currant on Apr 13, 2021 16:23:54 GMT
Hi,
I am running into the same issue when running cojo. My SNP with the smallest pvalue definitely passes the significance threshold but is not being selected. Any advice would be amazing, thanks!



Post by waddington on Nov 12, 2021 15:12:12 GMT
I have run into this exact problem. I think the cause is that OR, BETA, or SE in the sumstats file is not stored with sufficient precision so that for instance 2*pnorm(log(OR)/SE, lower.tail=F) != P. In some sumstats output the SE column for example might be rounded to only 4 digits. If a larger Pvalue SNP has a slightly larger effect size than the smallest pvalue SNP but the standard errors round to the same value, then the larger effect size SNP would be chosen
cojoslct seems to be getting the Pvalue of each SNP by recalculating it from the b and se columns rather than taking it from the p column. This can be checked by looking at the P column in the cojo.jma and cojo.cma files: they do not match the inputted Pvalues but they do equal 2*pnorm(b/se, lower.tail=F)
The solution I've found is to calculate a more exact value for the se column in the input file based on the effect size and original pvalue, e.g. se=log(OR)/qnorm(P/2, lower.tail=F).

