CUQIpy 1.0.0.post0.dev352__tar.gz → 1.0.0.post0.dev360__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of CUQIpy might be problematic. Click here for more details.

Files changed (116) hide show
  1. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/CUQIpy.egg-info/PKG-INFO +1 -1
  2. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/CUQIpy.egg-info/SOURCES.txt +1 -0
  3. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/PKG-INFO +1 -1
  4. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/_version.py +3 -3
  5. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/__init__.py +1 -0
  6. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_cwmh.py +3 -0
  7. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_mh.py +3 -1
  8. cuqipy-1.0.0.post0.dev360/cuqi/experimental/mcmc/_utilities.py +17 -0
  9. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/CUQIpy.egg-info/dependency_links.txt +0 -0
  10. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/CUQIpy.egg-info/requires.txt +0 -0
  11. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/CUQIpy.egg-info/top_level.txt +0 -0
  12. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/LICENSE +0 -0
  13. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/README.md +0 -0
  14. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/__init__.py +0 -0
  15. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/_messages.py +0 -0
  16. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/array/__init__.py +0 -0
  17. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/array/_array.py +0 -0
  18. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/config.py +0 -0
  19. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/__init__.py +0 -0
  20. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/_data.py +0 -0
  21. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/astronaut.npz +0 -0
  22. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/camera.npz +0 -0
  23. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/cat.npz +0 -0
  24. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/cookie.png +0 -0
  25. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/data/satellite.mat +0 -0
  26. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/density/__init__.py +0 -0
  27. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/density/_density.py +0 -0
  28. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/diagnostics.py +0 -0
  29. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/__init__.py +0 -0
  30. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_beta.py +0 -0
  31. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_cauchy.py +0 -0
  32. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_cmrf.py +0 -0
  33. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_custom.py +0 -0
  34. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_distribution.py +0 -0
  35. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_gamma.py +0 -0
  36. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_gaussian.py +0 -0
  37. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_gmrf.py +0 -0
  38. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_inverse_gamma.py +0 -0
  39. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_joint_distribution.py +0 -0
  40. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_laplace.py +0 -0
  41. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_lmrf.py +0 -0
  42. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_lognormal.py +0 -0
  43. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_modifiedhalfnormal.py +0 -0
  44. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_normal.py +0 -0
  45. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_posterior.py +0 -0
  46. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/distribution/_uniform.py +0 -0
  47. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/__init__.py +0 -0
  48. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_conjugate.py +0 -0
  49. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_conjugate_approx.py +0 -0
  50. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_direct.py +0 -0
  51. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_gibbs.py +0 -0
  52. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_hmc.py +0 -0
  53. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_langevin_algorithm.py +0 -0
  54. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_laplace_approximation.py +0 -0
  55. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_pcn.py +0 -0
  56. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_rto.py +0 -0
  57. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/experimental/mcmc/_sampler.py +0 -0
  58. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/geometry/__init__.py +0 -0
  59. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/geometry/_geometry.py +0 -0
  60. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/implicitprior/__init__.py +0 -0
  61. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/implicitprior/_regularizedGMRF.py +0 -0
  62. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/implicitprior/_regularizedGaussian.py +0 -0
  63. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/likelihood/__init__.py +0 -0
  64. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/likelihood/_likelihood.py +0 -0
  65. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/model/__init__.py +0 -0
  66. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/model/_model.py +0 -0
  67. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/operator/__init__.py +0 -0
  68. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/operator/_operator.py +0 -0
  69. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/pde/__init__.py +0 -0
  70. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/pde/_pde.py +0 -0
  71. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/problem/__init__.py +0 -0
  72. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/problem/_problem.py +0 -0
  73. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/__init__.py +0 -0
  74. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_conjugate.py +0 -0
  75. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_conjugate_approx.py +0 -0
  76. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_cwmh.py +0 -0
  77. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_gibbs.py +0 -0
  78. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_hmc.py +0 -0
  79. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_langevin_algorithm.py +0 -0
  80. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_laplace_approximation.py +0 -0
  81. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_mh.py +0 -0
  82. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_pcn.py +0 -0
  83. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_rto.py +0 -0
  84. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/sampler/_sampler.py +0 -0
  85. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/samples/__init__.py +0 -0
  86. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/samples/_samples.py +0 -0
  87. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/solver/__init__.py +0 -0
  88. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/solver/_solver.py +0 -0
  89. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/testproblem/__init__.py +0 -0
  90. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/testproblem/_testproblem.py +0 -0
  91. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/utilities/__init__.py +0 -0
  92. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/utilities/_get_python_variable_name.py +0 -0
  93. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/cuqi/utilities/_utilities.py +0 -0
  94. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/pyproject.toml +0 -0
  95. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/requirements.txt +0 -0
  96. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/setup.cfg +0 -0
  97. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/setup.py +0 -0
  98. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_MRFs.py +0 -0
  99. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_abstract_distribution_density.py +0 -0
  100. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_bayesian_inversion.py +0 -0
  101. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_density.py +0 -0
  102. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_distribution.py +0 -0
  103. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_distributions_shape.py +0 -0
  104. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_geometry.py +0 -0
  105. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_implicit_priors.py +0 -0
  106. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_joint_distribution.py +0 -0
  107. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_likelihood.py +0 -0
  108. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_model.py +0 -0
  109. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_pde.py +0 -0
  110. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_posterior.py +0 -0
  111. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_problem.py +0 -0
  112. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_sampler.py +0 -0
  113. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_samples.py +0 -0
  114. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_solver.py +0 -0
  115. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_testproblem.py +0 -0
  116. {cuqipy-1.0.0.post0.dev352 → cuqipy-1.0.0.post0.dev360}/tests/test_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: CUQIpy
3
- Version: 1.0.0.post0.dev352
3
+ Version: 1.0.0.post0.dev360
4
4
  Summary: Computational Uncertainty Quantification for Inverse problems in Python
5
5
  Maintainer-email: "Nicolai A. B. Riis" <nabr@dtu.dk>, "Jakob S. Jørgensen" <jakj@dtu.dk>, "Amal M. Alghamdi" <amaal@dtu.dk>, Chao Zhang <chaz@dtu.dk>
6
6
  License: Apache License
@@ -56,6 +56,7 @@ cuqi/experimental/mcmc/_mh.py
56
56
  cuqi/experimental/mcmc/_pcn.py
57
57
  cuqi/experimental/mcmc/_rto.py
58
58
  cuqi/experimental/mcmc/_sampler.py
59
+ cuqi/experimental/mcmc/_utilities.py
59
60
  cuqi/geometry/__init__.py
60
61
  cuqi/geometry/_geometry.py
61
62
  cuqi/implicitprior/__init__.py
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: CUQIpy
3
- Version: 1.0.0.post0.dev352
3
+ Version: 1.0.0.post0.dev360
4
4
  Summary: Computational Uncertainty Quantification for Inverse problems in Python
5
5
  Maintainer-email: "Nicolai A. B. Riis" <nabr@dtu.dk>, "Jakob S. Jørgensen" <jakj@dtu.dk>, "Amal M. Alghamdi" <amaal@dtu.dk>, Chao Zhang <chaz@dtu.dk>
6
6
  License: Apache License
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-06-19T09:05:37+0200",
11
+ "date": "2024-07-01T14:33:09+0200",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "1e1deddbe7925206fdaef6a2d9bf8ce9e33ad73d",
15
- "version": "1.0.0.post0.dev352"
14
+ "full-revisionid": "4da44104c9163182cd1eeb31fb4678a2893111fe",
15
+ "version": "1.0.0.post0.dev360"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -12,3 +12,4 @@ from ._gibbs import HybridGibbsNew
12
12
  from ._conjugate import ConjugateNew
13
13
  from ._conjugate_approx import ConjugateApproxNew
14
14
  from ._direct import DirectNew
15
+ from ._utilities import find_valid_samplers
@@ -100,6 +100,9 @@ class CWMHNew(ProposalBasedSamplerNew):
100
100
  raise ValueError(
101
101
  "Target should be an instance of "+\
102
102
  f"{cuqi.density.Density.__class__.__name__}")
103
+ # Fail when there is no log density, which is currently assumed to be the case in case NaN is returned.
104
+ if np.isnan(self.target.logd(self._default_initial_point)):
105
+ raise ValueError("Target does not have valid logd")
103
106
 
104
107
  def validate_proposal(self):
105
108
  if not isinstance(self.proposal, cuqi.distribution.Distribution):
@@ -32,7 +32,9 @@ class MHNew(ProposalBasedSamplerNew):
32
32
  self._scale_temp = self.scale
33
33
 
34
34
  def validate_target(self):
35
- pass # All targets are valid
35
+ # Fail only when there is no log density, which is currently assumed to be the case in case NaN is returned.
36
+ if np.isnan(self.target.logd(self._default_initial_point)):
37
+ raise ValueError("Target does not have valid logd")
36
38
 
37
39
  def validate_proposal(self):
38
40
  if not isinstance(self.proposal, cuqi.distribution.Distribution):
@@ -0,0 +1,17 @@
1
+ import cuqi
2
+ import inspect
3
+
4
+ def find_valid_samplers(target):
5
+ """ Finds all samplers in the cuqi.experimental.mcmc module that accept the provided target. """
6
+
7
+ all_samplers = [(name, cls) for name, cls in inspect.getmembers(cuqi.experimental.mcmc, inspect.isclass) if issubclass(cls, cuqi.experimental.mcmc.SamplerNew)]
8
+ valid_samplers = []
9
+
10
+ for name, sampler in all_samplers:
11
+ try:
12
+ sampler(target)
13
+ valid_samplers += [name]
14
+ except:
15
+ pass
16
+
17
+ return valid_samplers