funpopgen / CaVEMaN

Causal Variant Evidence Mapping with Non-parametric resampling
https://funpopgen.github.io/CaVEMaN/
GNU General Public License v3.0
12 stars 4 forks source link

ERROR: SVD decomposition failed to converge #5

Closed hnaeem closed 3 years ago

hnaeem commented 3 years ago

I'm trying to run the CaVEMaN (--single-signal option) to create a single phenotype bed file from an eQTL list. The tool is displaying the following error message:

1882 individuals present in phenotype file. 1882 individuals present in genotype file. 1883 individuals present in covariates file. id dropped from covariates file. Producing bed file corrected for multiple eQTLs. Finished extracting 299 eQTL. Finished extracting 299 SNPs. Finished reading covariates. gsl: svd.c:148: ERROR: SVD decomposition failed to converge Default GSL error handler invoked.

Any help will be appreciated?

abrown25 commented 3 years ago

I guess the svd algorithm fails with your covariates matrix, which I've never seen before. If there are no missing or infinite values in your covariates matrix, you could check to see if you are including highly colinear covariates which don't add information but make algorithms unstable. You could also try loading your covariate matrix into R and applying the svd function to it, it may give you more information on what is going wrong.

hnaeem commented 3 years ago

I run the CaVEMaN (--single-signal option) for each gene eQTL list separately, using the same genotype file and covariates file. CaVEMaN completed the analysis for 10,000+ genes (finished successfully, no error message on the log file). However, CaVEMaN failed for 236 genes (with error message - ERROR: svd of MxN matrix, M<N, is not implemented) and failed for 12 genes (with error message - ERROR: SVD decomposition failed to converge).

abrown25 commented 3 years ago

It sounds as if your eqtls are not independent: you are declaring all SNPs within LD blocks as separate eQTLs. Then the model fit fails either because you are including highly colinear covariates, or your number of eQTLs + covariates exceeds your number of samples. To produce a list of the independent eQTLs you can either use the GTEx pipeline, or use something like QTLtools https://qtltools.github.io/qtltools/pages/mode_cis_conditional.html