CUQIpy 1.0.0.post0.dev360__py3-none-any.whl → 1.0.0.post0.dev371__py3-none-any.whl

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.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: CUQIpy
3
- Version: 1.0.0.post0.dev360
3
+ Version: 1.0.0.post0.dev371
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
  cuqi/__init__.py,sha256=LsGilhl-hBLEn6Glt8S_l0OJzAA1sKit_rui8h-D-p0,488
2
2
  cuqi/_messages.py,sha256=fzEBrZT2kbmfecBBPm7spVu7yHdxGARQB4QzXhJbCJ0,415
3
- cuqi/_version.py,sha256=cS-WO8xKjlj6I1M1dMYpxgIX4PiSHuwIh3aCZqcJy_8,510
3
+ cuqi/_version.py,sha256=QVI79ROoiVftKzZNgtINBJapDUzlYy57knasEqfGVuQ,510
4
4
  cuqi/config.py,sha256=wcYvz19wkeKW2EKCGIKJiTpWt5kdaxyt4imyRkvtTRA,526
5
5
  cuqi/diagnostics.py,sha256=5OrbJeqpynqRXOe5MtOKKhe7EAVdOEpHIqHnlMW9G_c,3029
6
6
  cuqi/array/__init__.py,sha256=-EeiaiWGNsE3twRS4dD814BIlfxEsNkTCZUc5gjOXb0,30
@@ -49,9 +49,10 @@ cuqi/experimental/mcmc/_sampler.py,sha256=4dh9XVALkD3Ro9vkLZkNoFNge7Xv8QRbjh4LB7
49
49
  cuqi/experimental/mcmc/_utilities.py,sha256=qrSq8hvK_G2rSxYYfR5psk4sbTe7098TS5QNu13THeE,528
50
50
  cuqi/geometry/__init__.py,sha256=Tz1WGzZBY-QGH3c0GiyKm9XHN8MGGcnU6TUHLZkzB3o,842
51
51
  cuqi/geometry/_geometry.py,sha256=WYFC-4_VBTW73b2ldsnfGYKvdSiCE8plr89xTSmkadg,46804
52
- cuqi/implicitprior/__init__.py,sha256=ZRZ9fgxgEl5n0A9F7WCl1_jid-GUiC8ZLkyTmGQmFlY,100
53
- cuqi/implicitprior/_regularizedGMRF.py,sha256=FHPA8ufqqg4ANafOi-Oq8Iv2Ikwytb2V023fXmmo_44,3092
54
- cuqi/implicitprior/_regularizedGaussian.py,sha256=eWF1E7YuJbNfczUIMrrwP2EtIoL0ZZTb8KY7l4oDrzU,9009
52
+ cuqi/implicitprior/__init__.py,sha256=CaDQGYtmeFzN37vf3QUmKhcN9-H5lO66ZbK035k4qUw,246
53
+ cuqi/implicitprior/_regularizedGMRF.py,sha256=IR9tKzNMoz-b0RKu6ahVgMx_lDNB3jZHVWFMQm6QqZk,6259
54
+ cuqi/implicitprior/_regularizedGaussian.py,sha256=cQtrgzyJU2pwoK4ORGl1erKLE9VY5NqwZTiqiViDswA,12371
55
+ cuqi/implicitprior/_regularizedUnboundedUniform.py,sha256=H2fTOSqYTlDiLxQ7Ya6wnpCUIkpO4qKrkTOsOPnBBeU,3483
55
56
  cuqi/likelihood/__init__.py,sha256=QXif382iwZ5bT3ZUqmMs_n70JVbbjxbqMrlQYbMn4Zo,1776
56
57
  cuqi/likelihood/_likelihood.py,sha256=z3AXAbIrv_DjOYh4jy3iDHemuIFUUJu6wdvJ5e2dgW0,6913
57
58
  cuqi/model/__init__.py,sha256=IcN4aZCnyp9o-8TNIoZ8vew99QQgi0EmZvnsIuR6qYI,49
@@ -83,8 +84,8 @@ cuqi/testproblem/_testproblem.py,sha256=x769LwwRdJdzIiZkcQUGb_5-vynNTNALXWKato7s
83
84
  cuqi/utilities/__init__.py,sha256=T4tLsC215MknBCsw_C0Qeeg_ox26aDUrCA5hbWvNQkU,387
84
85
  cuqi/utilities/_get_python_variable_name.py,sha256=QwlBVj2koJRA8s8pWd554p7-ElcI7HUwY32HknaR92E,1827
85
86
  cuqi/utilities/_utilities.py,sha256=MWAqV6L5btMpWwlUzrZYuV2VeSpfTbOaLRMRkuw2WIA,8509
86
- CUQIpy-1.0.0.post0.dev360.dist-info/LICENSE,sha256=kJWRPrtRoQoZGXyyvu50Uc91X6_0XRaVfT0YZssicys,10799
87
- CUQIpy-1.0.0.post0.dev360.dist-info/METADATA,sha256=zYqabNMLjZdQ55Z_bQyptCZ2QV-N5FLCF7G05No2jK8,18393
88
- CUQIpy-1.0.0.post0.dev360.dist-info/WHEEL,sha256=mguMlWGMX-VHnMpKOjjQidIo1ssRlCFu4a4mBpz1s2M,91
89
- CUQIpy-1.0.0.post0.dev360.dist-info/top_level.txt,sha256=AgmgMc6TKfPPqbjV0kvAoCBN334i_Lwwojc7HE3ZwD0,5
90
- CUQIpy-1.0.0.post0.dev360.dist-info/RECORD,,
87
+ CUQIpy-1.0.0.post0.dev371.dist-info/LICENSE,sha256=kJWRPrtRoQoZGXyyvu50Uc91X6_0XRaVfT0YZssicys,10799
88
+ CUQIpy-1.0.0.post0.dev371.dist-info/METADATA,sha256=yXm_fUldjf8brl4nsQdu_nKbDch7lVGioYPdKZ7TFMA,18393
89
+ CUQIpy-1.0.0.post0.dev371.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91
90
+ CUQIpy-1.0.0.post0.dev371.dist-info/top_level.txt,sha256=AgmgMc6TKfPPqbjV0kvAoCBN334i_Lwwojc7HE3ZwD0,5
91
+ CUQIpy-1.0.0.post0.dev371.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.1.1)
2
+ Generator: setuptools (70.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
cuqi/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2024-07-01T14:33:09+0200",
11
+ "date": "2024-07-05T10:04:17+0300",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "4da44104c9163182cd1eeb31fb4678a2893111fe",
15
- "version": "1.0.0.post0.dev360"
14
+ "full-revisionid": "62f642d707e561a7c9deb0006625b11866043b81",
15
+ "version": "1.0.0.post0.dev371"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -1,2 +1,3 @@
1
- from ._regularizedGaussian import RegularizedGaussian
2
- from ._regularizedGMRF import RegularizedGMRF
1
+ from ._regularizedGaussian import RegularizedGaussian, ConstrainedGaussian, NonnegativeGaussian
2
+ from ._regularizedGMRF import RegularizedGMRF, ConstrainedGMRF, NonnegativeGMRF
3
+ from ._regularizedUnboundedUniform import RegularizedUnboundedUniform
@@ -68,3 +68,85 @@ class RegularizedGMRF(RegularizedGaussian):
68
68
  super(Distribution, self).__init__(**kwargs)
69
69
 
70
70
  self._parse_regularization_input_arguments(proximal, projector, constraint, regularization, args)
71
+
72
+
73
+
74
+ class ConstrainedGMRF(RegularizedGMRF):
75
+ """ Implicit Constrained GMRF (Gaussian Markov Random Field).
76
+
77
+ Defines a so-called implicit prior based on a GMRF distribution with implicit constraints.
78
+ The constraint can be defined as a preset or in the form of a projector.
79
+
80
+ Precisely one of projector or constraint needs to be provided. Otherwise, an error is raised.
81
+
82
+ Can be used as a prior in a posterior which can be sampled with the RegularizedLinearRTO sampler.
83
+
84
+ Alias for :class:`~cuqi.implicitprior.RegularizedGMRF` with only constraints available.
85
+
86
+ For more details on implicit regularized Gaussian see the following paper:
87
+
88
+ [1] Everink, Jasper M., Yiqiu Dong, and Martin S. Andersen. "Sparse Bayesian inference with regularized
89
+ Gaussian distributions." Inverse Problems 39.11 (2023): 115004.
90
+
91
+ Parameters
92
+ ----------
93
+ mean
94
+ See :class:`~cuqi.distribution.GMRF` for details.
95
+
96
+ prec
97
+ See :class:`~cuqi.distribution.GMRF` for details.
98
+
99
+ bc_type
100
+ See :class:`~cuqi.distribution.GMRF` for details.
101
+
102
+ order
103
+ See :class:`~cuqi.distribution.GMRF` for details.
104
+
105
+ projector : callable f(x) or None
106
+ Euclidean projection onto the constraint C, that is, a solver for the optimization problem
107
+ min_(z in C) 0.5||x-z||_2^2.
108
+
109
+ constraint : string or None
110
+ Preset constraints. Can be set to "nonnegativity" and "box". Required for use in Gibbs.
111
+ For "box", the following additional parameters can be passed:
112
+ lower_bound : array_like or None
113
+ Lower bound of box, defaults to zero
114
+ upper_bound : array_like
115
+ Upper bound of box, defaults to one
116
+
117
+ """
118
+ def __init__(self, mean=None, prec=None, bc_type='zero', order=1, projector=None, constraint=None, **kwargs):
119
+ super().__init__(mean=mean, prec=prec, bc_type=bc_type, order=order, projector=projector, constraint=constraint, **kwargs)
120
+
121
+
122
+ class NonnegativeGMRF(RegularizedGMRF):
123
+ """ Implicit Nonnegative GMRF (Gaussian Markov Random Field).
124
+
125
+ Defines a so-called implicit prior based on a GMRF distribution with implicit nonnegativity constraints.
126
+
127
+ Can be used as a prior in a posterior which can be sampled with the RegularizedLinearRTO sampler.
128
+
129
+ Alias for :class:`~cuqi.implicitprior.RegularizedGMRF` with only nonnegativity constraints.
130
+
131
+ For more details on implicit regularized Gaussian see the following paper:
132
+
133
+ [1] Everink, Jasper M., Yiqiu Dong, and Martin S. Andersen. "Sparse Bayesian inference with regularized
134
+ Gaussian distributions." Inverse Problems 39.11 (2023): 115004.
135
+
136
+ Parameters
137
+ ----------
138
+ mean
139
+ See :class:`~cuqi.distribution.GMRF` for details.
140
+
141
+ prec
142
+ See :class:`~cuqi.distribution.GMRF` for details.
143
+
144
+ bc_type
145
+ See :class:`~cuqi.distribution.GMRF` for details.
146
+
147
+ order
148
+ See :class:`~cuqi.distribution.GMRF` for details.
149
+
150
+ """
151
+ def __init__(self, mean=None, prec=None, bc_type='zero', order=1, **kwargs):
152
+ super().__init__(mean=mean, prec=prec, bc_type=bc_type, order=order, constraint="nonnegativity", **kwargs)
@@ -234,3 +234,90 @@ class RegularizedGaussian(Distribution):
234
234
  new_density = new_density.to_likelihood(value)
235
235
 
236
236
  return new_density
237
+
238
+
239
+ class ConstrainedGaussian(RegularizedGaussian):
240
+ """ Implicit Constrained Gaussian.
241
+
242
+ Defines a so-called implicit prior based on a Gaussian distribution with implicit constraints.
243
+ The constraint can be defined as a preset or in the form of a projector.
244
+
245
+ Precisely one of projector or constraint needs to be provided. Otherwise, an error is raised.
246
+
247
+ Can be used as a prior in a posterior which can be sampled with the RegularizedLinearRTO sampler.
248
+
249
+ Alias for :class:`~cuqi.implicitprior.RegularizedGaussian` with only constraints available.
250
+
251
+ For more details on implicit regularized Gaussian see the following paper:
252
+
253
+ [1] Everink, Jasper M., Yiqiu Dong, and Martin S. Andersen. "Sparse Bayesian inference with regularized
254
+ Gaussian distributions." Inverse Problems 39.11 (2023): 115004.
255
+
256
+ Parameters
257
+ ----------
258
+ mean
259
+ See :class:`~cuqi.distribution.Gaussian` for details.
260
+
261
+ cov
262
+ See :class:`~cuqi.distribution.Gaussian` for details.
263
+
264
+ prec
265
+ See :class:`~cuqi.distribution.Gaussian` for details.
266
+
267
+ sqrtcov
268
+ See :class:`~cuqi.distribution.Gaussian` for details.
269
+
270
+ sqrtprec
271
+ See :class:`~cuqi.distribution.Gaussian` for details.
272
+
273
+ projector : callable f(x) or None
274
+ Euclidean projection onto the constraint C, that is, a solver for the optimization problem
275
+ min_(z in C) 0.5||x-z||_2^2.
276
+
277
+ constraint : string or None
278
+ Preset constraints. Can be set to "nonnegativity" and "box". Required for use in Gibbs.
279
+ For "box", the following additional parameters can be passed:
280
+ lower_bound : array_like or None
281
+ Lower bound of box, defaults to zero
282
+ upper_bound : array_like
283
+ Upper bound of box, defaults to one
284
+
285
+ """
286
+ def __init__(self, mean=None, cov=None, prec=None, sqrtcov=None,sqrtprec=None, projector=None, constraint=None, **kwargs):
287
+ super().__init__(mean=mean, cov=cov, prec=prec, sqrtcov=sqrtcov, sqrtprec=sqrtprec, projector=projector, constraint=constraint, **kwargs)
288
+
289
+
290
+ class NonnegativeGaussian(RegularizedGaussian):
291
+ """ Implicit Nonnegative Gaussian.
292
+
293
+ Defines a so-called implicit prior based on a Gaussian distribution with implicit nonnegativity constraints.
294
+
295
+ Can be used as a prior in a posterior which can be sampled with the RegularizedLinearRTO sampler.
296
+
297
+ Alias for :class:`~cuqi.implicitprior.RegularizedGaussian` with only nonnegativity constraints.
298
+
299
+ For more details on implicit regularized Gaussian see the following paper:
300
+
301
+ [1] Everink, Jasper M., Yiqiu Dong, and Martin S. Andersen. "Sparse Bayesian inference with regularized
302
+ Gaussian distributions." Inverse Problems 39.11 (2023): 115004.
303
+
304
+ Parameters
305
+ ----------
306
+ mean
307
+ See :class:`~cuqi.distribution.Gaussian` for details.
308
+
309
+ cov
310
+ See :class:`~cuqi.distribution.Gaussian` for details.
311
+
312
+ prec
313
+ See :class:`~cuqi.distribution.Gaussian` for details.
314
+
315
+ sqrtcov
316
+ See :class:`~cuqi.distribution.Gaussian` for details.
317
+
318
+ sqrtprec
319
+ See :class:`~cuqi.distribution.Gaussian` for details.
320
+
321
+ """
322
+ def __init__(self, mean=None, cov=None, prec=None, sqrtcov=None,sqrtprec=None, **kwargs):
323
+ super().__init__(mean=mean, cov=cov, prec=prec, sqrtcov=sqrtcov, sqrtprec=sqrtprec, constraint="nonnegativity", **kwargs)
@@ -0,0 +1,66 @@
1
+ from cuqi.implicitprior import RegularizedGaussian
2
+ from cuqi.distribution import Distribution, Gaussian
3
+
4
+ import numpy as np
5
+
6
+
7
+ class RegularizedUnboundedUniform(RegularizedGaussian):
8
+ """ Implicit Regularized Unbounded Uniform.
9
+
10
+ Defines a so-called implicit prior with implicit regularization on a Gaussian distribution with zero precision.
11
+ The regularization can be defined in the form of a proximal operator or a projector.
12
+ Alternatively, preset constraints and regularization can be used.
13
+
14
+ For regularization of the form f(x), provide a single proximal operator.
15
+
16
+ Can be used as a prior in a posterior which can be sampled with the RegularizedLinearRTO sampler.
17
+
18
+ Alias for :class:`~cuqi.implicitprior.RegularizedGaussian` with zero mean and zero sqrtprec.
19
+
20
+ For more details on implicit regularized Gaussian see the following paper:
21
+
22
+ [1] Everink, Jasper M., Yiqiu Dong, and Martin S. Andersen. "Sparse Bayesian inference with regularized
23
+ Gaussian distributions." Inverse Problems 39.11 (2023): 115004.
24
+
25
+ Parameters
26
+ ----------
27
+ geometry : :class:`~cuqi.geometry.Geometry` or integer
28
+ The geometry of the underlying variable. Defines the dimension of the distribution.
29
+
30
+ proximal : callable f(x, scale) or None
31
+ Euclidean proximal operator f of the regularization function g, that is, a solver for the optimization problem
32
+ min_z 0.5||x-z||_2^2+scale*g(x).
33
+
34
+ projector : callable f(x) or None
35
+ Euclidean projection onto the constraint C, that is, a solver for the optimization problem
36
+ min_(z in C) 0.5||x-z||_2^2.
37
+
38
+ constraint : string or None
39
+ Preset constraints. Can be set to "nonnegativity" and "box". Required for use in Gibbs.
40
+ For "box", the following additional parameters can be passed:
41
+ lower_bound : array_like or None
42
+ Lower bound of box, defaults to zero
43
+ upper_bound : array_like
44
+ Upper bound of box, defaults to one
45
+
46
+ regularization : string or None
47
+ Preset regularization. Can be set to "l1". Required for use in Gibbs in future update.
48
+ For "l1", the following additional parameters can be passed:
49
+ strength : scalar
50
+ Regularization parameter, i.e., strength*||x||_1 , defaults to one
51
+
52
+ """
53
+ def __init__(self, geometry, proximal = None, projector = None, constraint = None, regularization = None, **kwargs):
54
+
55
+ args = {"lower_bound" : kwargs.pop("lower_bound", None),
56
+ "upper_bound" : kwargs.pop("upper_bound", None),
57
+ "strength" : kwargs.pop("strength", None)}
58
+
59
+ # Underlying explicit Gaussian
60
+ # This line throws a warning due trying to applying get_sqrtprec_from_sqrtprec to an all zero matrix
61
+ self._gaussian = Gaussian(mean = np.zeros(geometry.par_dim), sqrtprec = np.zeros((geometry.par_dim,geometry.par_dim)), geometry = geometry, **kwargs)
62
+
63
+ # Init from abstract distribution class
64
+ super(Distribution, self).__init__(**kwargs)
65
+
66
+ self._parse_regularization_input_arguments(proximal, projector, constraint, regularization, args)