broadinstitute / tensorqtl

Ultrafast GPU-enabled QTL mapper
BSD 3-Clause "New" or "Revised" License
153 stars 51 forks source link

scipy.optimize.newton failed to converge #122

Closed inabro closed 2 weeks ago

inabro commented 7 months ago

Hello, I am using tensorQTL for various molecular traits. The genotypes are filtered on 0.01 MAF and all expression data from the traits are normalised. TensorQTL runs and gives me output, which seems reasonable comparing to older independent, analysis. However, for all traits, I get many warnings. I have copied the log here from one of them. My question is if this is something to be worried about, or just to discard? my first impression was the latter, but now I am unsure.

  * using GPU 
  * reading phenotypes (data.bed)
  * cis-window detected as position ± 500,000
  * reading covariates (PCs.csv)
  * loading genotypes

Mapping files:   0%|          | 0/3 [00:00<?, ?it/s]
Mapping files:  33%|███▎      | 1/3 [00:11<00:23, 11.79s/it]
Mapping files:  67%|██████▋   | 2/3 [00:13<00:05,  5.59s/it]
Mapping files: 100%|██████████| 3/3 [00:17<00:00,  5.18s/it]
Mapping files: 100%|██████████| 3/3 [00:17<00:00,  5.91s/it]
cis-QTL mapping: empirical p-values for phenotypes
  * 193 samples
  * 855 phenotypes
  * 24 covariates
  * 10108913 variants
  * cis-window: ±500,000

  * checking phenotypes: 855/855
    ** dropping 10 phenotypes without variants in cis-window
  * computing permutations

    processing phenotype 1/845
    processing phenotype 2/845
    processing phenotype 3/845
    processing phenotype 4/845
    processing phenotype 5/845
    processing phenotype 6/845
    processing phenotype 7/845
    processing phenotype 8/845
    processing phenotype 9/845/tsd/p566/home/p566-inasb/.local/lib/python3.9/site-packages/tensorqtl/core.py:315: RuntimeWarning: invalid value encountered in sqrt
  return 2*stats.t.cdf(-np.abs(np.sqrt(tstat2)), dof)
WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
    processing phenotype 10/845WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
    processing phenotype 11/845
    processing phenotype 12/845WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
    processing phenotype 13/845WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
    processing phenotype 14/845WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
    processing phenotype 15/845
    processing phenotype 16/845
    processing phenotype 17/845WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)

The warning continue for a bit and the very end looks like this:


    processing phenotype 844/845WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)

    processing phenotype 845/845
WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
WARNING: scipy.optimize.newton failed to converge (running scipy.optimize.minimize)
  Time elapsed: 4.05 min
done.
  * writing output
[Nov 09 11:30:16] Finished mapping

Thank you so much in advance!

francois-a commented 7 months ago

In principle this isn't something to worry about, it's just a warning that a less efficient minimization is used. However, this usually only occurs for low-complexity phenotypes, for example counts-based ones with low coverage.