CUQIpy 1.2.0.post0.dev481__tar.gz → 1.2.0.post0.dev501__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 (127) hide show
  1. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/CUQIpy.egg-info/PKG-INFO +1 -1
  2. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/PKG-INFO +1 -1
  3. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/_version.py +3 -3
  4. cuqipy-1.2.0.post0.dev501/cuqi/experimental/__init__.py +4 -0
  5. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/algebra/_randomvariable.py +26 -0
  6. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/solver/_solver.py +1 -1
  7. cuqipy-1.2.0.post0.dev481/cuqi/experimental/__init__.py +0 -4
  8. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/CUQIpy.egg-info/SOURCES.txt +0 -0
  9. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/CUQIpy.egg-info/dependency_links.txt +0 -0
  10. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/CUQIpy.egg-info/requires.txt +0 -0
  11. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/CUQIpy.egg-info/top_level.txt +0 -0
  12. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/LICENSE +0 -0
  13. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/README.md +0 -0
  14. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/__init__.py +0 -0
  15. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/_messages.py +0 -0
  16. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/array/__init__.py +0 -0
  17. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/array/_array.py +0 -0
  18. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/config.py +0 -0
  19. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/__init__.py +0 -0
  20. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/_data.py +0 -0
  21. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/astronaut.npz +0 -0
  22. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/camera.npz +0 -0
  23. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/cat.npz +0 -0
  24. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/cookie.png +0 -0
  25. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/data/satellite.mat +0 -0
  26. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/density/__init__.py +0 -0
  27. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/density/_density.py +0 -0
  28. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/diagnostics.py +0 -0
  29. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/__init__.py +0 -0
  30. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_beta.py +0 -0
  31. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_cauchy.py +0 -0
  32. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_cmrf.py +0 -0
  33. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_custom.py +0 -0
  34. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_distribution.py +0 -0
  35. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_gamma.py +0 -0
  36. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_gaussian.py +0 -0
  37. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_gmrf.py +0 -0
  38. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_inverse_gamma.py +0 -0
  39. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_joint_distribution.py +0 -0
  40. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_laplace.py +0 -0
  41. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_lmrf.py +0 -0
  42. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_lognormal.py +0 -0
  43. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_modifiedhalfnormal.py +0 -0
  44. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_normal.py +0 -0
  45. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_posterior.py +0 -0
  46. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_smoothed_laplace.py +0 -0
  47. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_truncated_normal.py +0 -0
  48. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/distribution/_uniform.py +0 -0
  49. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/algebra/__init__.py +0 -0
  50. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/algebra/_ast.py +0 -0
  51. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/algebra/_orderedset.py +0 -0
  52. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/geometry/__init__.py +0 -0
  53. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/geometry/_productgeometry.py +0 -0
  54. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/__init__.py +0 -0
  55. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_conjugate.py +0 -0
  56. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_conjugate_approx.py +0 -0
  57. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_cwmh.py +0 -0
  58. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_direct.py +0 -0
  59. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_gibbs.py +0 -0
  60. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_hmc.py +0 -0
  61. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_langevin_algorithm.py +0 -0
  62. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_laplace_approximation.py +0 -0
  63. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_mh.py +0 -0
  64. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_pcn.py +0 -0
  65. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_rto.py +0 -0
  66. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_sampler.py +0 -0
  67. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/experimental/mcmc/_utilities.py +0 -0
  68. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/geometry/__init__.py +0 -0
  69. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/geometry/_geometry.py +0 -0
  70. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/implicitprior/__init__.py +0 -0
  71. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/implicitprior/_regularizedGMRF.py +0 -0
  72. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/implicitprior/_regularizedGaussian.py +0 -0
  73. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/implicitprior/_regularizedUnboundedUniform.py +0 -0
  74. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/implicitprior/_restorator.py +0 -0
  75. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/likelihood/__init__.py +0 -0
  76. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/likelihood/_likelihood.py +0 -0
  77. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/model/__init__.py +0 -0
  78. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/model/_model.py +0 -0
  79. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/operator/__init__.py +0 -0
  80. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/operator/_operator.py +0 -0
  81. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/pde/__init__.py +0 -0
  82. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/pde/_pde.py +0 -0
  83. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/problem/__init__.py +0 -0
  84. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/problem/_problem.py +0 -0
  85. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/__init__.py +0 -0
  86. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_conjugate.py +0 -0
  87. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_conjugate_approx.py +0 -0
  88. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_cwmh.py +0 -0
  89. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_gibbs.py +0 -0
  90. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_hmc.py +0 -0
  91. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_langevin_algorithm.py +0 -0
  92. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_laplace_approximation.py +0 -0
  93. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_mh.py +0 -0
  94. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_pcn.py +0 -0
  95. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_rto.py +0 -0
  96. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/sampler/_sampler.py +0 -0
  97. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/samples/__init__.py +0 -0
  98. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/samples/_samples.py +0 -0
  99. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/solver/__init__.py +0 -0
  100. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/testproblem/__init__.py +0 -0
  101. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/testproblem/_testproblem.py +0 -0
  102. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/utilities/__init__.py +0 -0
  103. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/utilities/_get_python_variable_name.py +0 -0
  104. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/cuqi/utilities/_utilities.py +0 -0
  105. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/pyproject.toml +0 -0
  106. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/requirements.txt +0 -0
  107. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/setup.cfg +0 -0
  108. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/setup.py +0 -0
  109. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_MRFs.py +0 -0
  110. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_abstract_distribution_density.py +0 -0
  111. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_bayesian_inversion.py +0 -0
  112. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_density.py +0 -0
  113. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_distribution.py +0 -0
  114. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_distributions_shape.py +0 -0
  115. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_geometry.py +0 -0
  116. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_implicit_priors.py +0 -0
  117. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_joint_distribution.py +0 -0
  118. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_likelihood.py +0 -0
  119. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_model.py +0 -0
  120. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_pde.py +0 -0
  121. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_posterior.py +0 -0
  122. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_problem.py +0 -0
  123. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_sampler.py +0 -0
  124. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_samples.py +0 -0
  125. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_solver.py +0 -0
  126. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_testproblem.py +0 -0
  127. {cuqipy-1.2.0.post0.dev481 → cuqipy-1.2.0.post0.dev501}/tests/test_utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: CUQIpy
3
- Version: 1.2.0.post0.dev481
3
+ Version: 1.2.0.post0.dev501
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: CUQIpy
3
- Version: 1.2.0.post0.dev481
3
+ Version: 1.2.0.post0.dev501
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": "2025-01-20T15:07:59+0100",
11
+ "date": "2025-01-30T19:07:50+0100",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "4ee7ceaf67cf4aafa65188e4aa7194ea6df411e3",
15
- "version": "1.2.0.post0.dev481"
14
+ "full-revisionid": "ead079a625cad175f6a0159d46c90d7cdf80bc0f",
15
+ "version": "1.2.0.post0.dev501"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -0,0 +1,4 @@
1
+ """ Experimental module for testing new features and ideas. """
2
+ from . import mcmc
3
+ from . import algebra
4
+ from . import geometry
@@ -6,6 +6,8 @@ import operator
6
6
  import cuqi
7
7
  from cuqi.distribution import Distribution
8
8
  from copy import copy, deepcopy
9
+ import numpy as np
10
+
9
11
 
10
12
  class RandomVariable:
11
13
  """ Random variable defined by a distribution with the option to apply algebraic operations on it.
@@ -165,6 +167,30 @@ class RandomVariable:
165
167
  raise ValueError(f"Expected arguments {self.parameter_names}, got arguments {kwargs}")
166
168
 
167
169
  return self.tree(**kwargs)
170
+
171
+ def sample(self, N=1):
172
+ """ Sample from the random variable.
173
+
174
+ Parameters
175
+ ----------
176
+ N : int, optional
177
+ Number of samples to draw. Default is 1.
178
+ """
179
+
180
+ if self.is_cond:
181
+ raise NotImplementedError(
182
+ "Unable to directly sample from a random variable that has distributions with "
183
+ "conditioning variables. This is not implemented."
184
+ )
185
+
186
+ if N == 1: return self(**{dist.name: dist.sample() for dist in self.distributions})
187
+
188
+ samples = np.array([
189
+ self(**{dist.name: dist.sample() for dist in self.distributions})
190
+ for _ in range(N)
191
+ ]).reshape(-1, N) # Ensure correct shape (dim, N)
192
+
193
+ return cuqi.samples.Samples(samples)
168
194
 
169
195
  @property
170
196
  def tree(self):
@@ -884,4 +884,4 @@ def ProximalL1(x, gamma):
884
884
  x : array_like.
885
885
  gamma : scale parameter.
886
886
  """
887
- return np.multiply(np.sign(x), np.maximum(np.abs(x)-gamma, 0))
887
+ return np.multiply(np.sign(x), np.maximum(np.abs(x)-gamma, 0))
@@ -1,4 +0,0 @@
1
- """ Experimental module for testing new features and ideas. """
2
- from . import mcmc
3
- from . import algebra
4
- from . import geometry