Rosemeis / pcangsd

Framework for analyzing low depth NGS data in heterogeneous populations using PCA.
GNU General Public License v3.0
46 stars 11 forks source link

Covariance matrix estimation does not converge when using one thread #89

Closed huiqingyeooo closed 2 months ago

huiqingyeooo commented 2 months ago

Hi! I noticed that the covariance matrix estimation does not converge when I use one thread for the run, but converges when 2 or more threads are used. So far I've tested this on one of my beagle datasets generated from angsd.

This is the script that I used with permutations on the number of threads (1/2/8) and number of iterations (100/800): pcangsd -b b2.beagle.gz -o pcangsd.b2.t1.iter100.rep1 --selection --admix --iter 100 -t 1

This is a summary of the runs: slurm-30586915 pcangsd.b2.t1.iter100.rep1.cov PCAngsd did not converge! 22m0s slurm-30586916 pcangsd.b2.t1.iter100.rep2.cov PCAngsd did not converge! 20m11s slurm-30586917 pcangsd.b2.t1.iter100.rep3.cov PCAngsd did not converge! 18m45s slurm-30586918 pcangsd.b2.t1.iter100.rep4.cov PCAngsd did not converge! 19m45s slurm-30586919 pcangsd.b2.t1.iter100.rep5.cov PCAngsd did not converge! 19m14s slurm-30586920 pcangsd.b2.t1.iter800.rep1.cov PCAngsd did not converge! 107m51s slurm-30586921 pcangsd.b2.t1.iter800.rep2.cov PCAngsd did not converge! 113m43s slurm-30586922 pcangsd.b2.t1.iter800.rep3.cov PCAngsd did not converge! 102m4s slurm-30586923 pcangsd.b2.t1.iter800.rep4.cov PCAngsd did not converge! 112m8s slurm-30586924 pcangsd.b2.t1.iter800.rep5.cov PCAngsd did not converge! 114m7s

slurm-30592789 pcangsd.b2.t2.iter100.rep1.cov PCAngsd converged. 5m15s slurm-30592792 pcangsd.b2.t2.iter100.rep2.cov PCAngsd converged. 5m22s slurm-30592785 pcangsd.b2.t2.iter100.rep3.cov PCAngsd converged. 5m8s slurm-30592788 pcangsd.b2.t2.iter100.rep4.cov PCAngsd converged. 5m48s slurm-30592790 pcangsd.b2.t2.iter100.rep5.cov PCAngsd converged. 5m18s slurm-30592786 pcangsd.b2.t2.iter800.rep1.cov PCAngsd converged. 7m12s slurm-30592787 pcangsd.b2.t2.iter800.rep2.cov PCAngsd converged. 5m17s slurm-30592791 pcangsd.b2.t2.iter800.rep3.cov PCAngsd converged. 5m44s slurm-30592794 pcangsd.b2.t2.iter800.rep4.cov PCAngsd converged. 5m41s slurm-30592793 pcangsd.b2.t2.iter800.rep5.cov PCAngsd converged. 5m39s

slurm-30586925 pcangsd.b2.t8.iter100.rep1.cov PCAngsd converged. 3m58s slurm-30586926 pcangsd.b2.t8.iter100.rep2.cov PCAngsd converged. 3m52s slurm-30586927 pcangsd.b2.t8.iter100.rep4.cov PCAngsd converged. 3m50s slurm-30586928 pcangsd.b2.t8.iter100.rep3.cov PCAngsd converged. 3m59s slurm-30586929 pcangsd.b2.t8.iter100.rep5.cov PCAngsd converged. 4m4s slurm-30586930 pcangsd.b2.t8.iter800.rep1.cov PCAngsd converged. 3m22s slurm-30586931 pcangsd.b2.t8.iter800.rep2.cov PCAngsd converged. 3m29s slurm-30586932 pcangsd.b2.t8.iter800.rep3.cov PCAngsd converged. 3m31s slurm-30586933 pcangsd.b2.t8.iter800.rep4.cov PCAngsd converged. 3m57s slurm-30586934 pcangsd.b2.t8.iter800.rep5.cov PCAngsd converged. 3m57s

Do you have any insights on this? Thank you! (:

Rosemeis commented 2 months ago

Hi,

Thank you for reaching out! I have looked a bit deep into this and it seems that the issue arises due to precision in the internal SVD process. I have tried to mitigate the issue throughout the framework.

Can you update your PCAngsd to v1.3 and try your scenario again? :-)

Best, Jonas

huiqingyeooo commented 2 months ago

Hi Jonas,

Thank you so much for the update to pcangsd! It works well for me now (:

slurm-30609196 pcangsd.b2.t1.iter100.rep1.cov PCAngsd converged. 9m2s slurm-30609201 pcangsd.b2.t1.iter100.rep2.cov PCAngsd converged. 9m54s slurm-30609198 pcangsd.b2.t1.iter100.rep3.cov PCAngsd converged. 10m24s slurm-30609202 pcangsd.b2.t1.iter100.rep4.cov PCAngsd converged. 9m58s slurm-30609205 pcangsd.b2.t1.iter100.rep5.cov PCAngsd converged. 10m0s

slurm-30609197 pcangsd.b2.t1.iter200.rep1.cov PCAngsd converged. 9m14s slurm-30609204 pcangsd.b2.t1.iter200.rep2.cov PCAngsd converged. 9m48s slurm-30609199 pcangsd.b2.t1.iter200.rep3.cov PCAngsd converged. 9m42s slurm-30609200 pcangsd.b2.t1.iter200.rep4.cov PCAngsd converged. 10m37s slurm-30609203 pcangsd.b2.t1.iter200.rep5.cov PCAngsd converged. 9m54s