CUQIpy 1.3.0.post0.dev5__py3-none-any.whl → 1.3.0.post0.dev18__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.

cuqi/_version.py CHANGED
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2025-02-19T10:39:59+0100",
11
+ "date": "2025-03-17T02:49:45-0500",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "b30b3a9a6f6a7aeaff2208a68da3101c4d323de0",
15
- "version": "1.3.0.post0.dev5"
14
+ "full-revisionid": "0ff7960b513810e4bd4e721f1434a0b78097dcc5",
15
+ "version": "1.3.0.post0.dev18"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -31,12 +31,9 @@ class CWMH(ProposalBasedSampler):
31
31
  initial_point : ndarray
32
32
  Initial parameters. *Optional*
33
33
 
34
- callback : callable, *Optional*
35
- If set this function will be called after every sample.
36
- The signature of the callback function is
37
- `callback(sample, sample_index)`, where `sample` is the current sample
38
- and `sample_index` is the index of the sample.
39
- An example is shown in demos/demo31_callback.py.
34
+ callback : callable, optional
35
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
36
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
40
37
 
41
38
  kwargs : dict
42
39
  Additional keyword arguments to be passed to the base class
@@ -58,6 +58,10 @@ class HybridGibbs:
58
58
  will call its step method in each Gibbs step.
59
59
  Default is 1 for all variables.
60
60
 
61
+ callback : callable, optional
62
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
63
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
64
+
61
65
  Example
62
66
  -------
63
67
  .. code-block:: python
@@ -103,7 +107,7 @@ class HybridGibbs:
103
107
 
104
108
  """
105
109
 
106
- def __init__(self, target: JointDistribution, sampling_strategy: Dict[str, Sampler], num_sampling_steps: Dict[str, int] = None):
110
+ def __init__(self, target: JointDistribution, sampling_strategy: Dict[str, Sampler], num_sampling_steps: Dict[str, int] = None, callback=None):
107
111
 
108
112
  # Store target and allow conditioning to reduce to a single density
109
113
  self.target = target() # Create a copy of target distribution (to avoid modifying the original)
@@ -120,6 +124,9 @@ class HybridGibbs:
120
124
  # Initialize sampler (after target is set)
121
125
  self._initialize()
122
126
 
127
+ # Set the callback function
128
+ self.callback = callback
129
+
123
130
  def _initialize(self):
124
131
  """ Initialize sampler """
125
132
 
@@ -158,13 +165,15 @@ class HybridGibbs:
158
165
  The number of samples to draw.
159
166
 
160
167
  """
161
-
162
- for _ in tqdm(range(Ns), "Sample: "):
168
+ for idx in tqdm(range(Ns), "Sample: "):
163
169
 
164
170
  self.step()
165
171
 
166
172
  self._store_samples()
167
173
 
174
+ # Call callback function if specified
175
+ self._call_callback(idx, Ns)
176
+
168
177
  return self
169
178
 
170
179
  def warmup(self, Nb, tune_freq=0.1) -> 'HybridGibbs':
@@ -192,6 +201,9 @@ class HybridGibbs:
192
201
 
193
202
  self._store_samples()
194
203
 
204
+ # Call callback function if specified
205
+ self._call_callback(idx, Nb)
206
+
195
207
  return self
196
208
 
197
209
  def get_samples(self) -> Dict[str, Samples]:
@@ -263,6 +275,11 @@ class HybridGibbs:
263
275
  self.samplers[par_name].tune(skip_len=skip_len, update_count=update_count)
264
276
 
265
277
  # ------------ Private methods ------------
278
+ def _call_callback(self, sample_index, num_of_samples):
279
+ """ Calls the callback function. Assumes input is sampler, sample index, and total number of samples """
280
+ if self.callback is not None:
281
+ self.callback(self, sample_index, num_of_samples)
282
+
266
283
  def _initialize_samplers(self):
267
284
  """ Initialize samplers """
268
285
  for sampler in self.samplers.values():
@@ -38,13 +38,9 @@ class NUTS(Sampler):
38
38
  opt_acc_rate should be in (0, 1), however, choosing a value that is very
39
39
  close to 1 or 0 might lead to poor performance of the sampler.
40
40
 
41
- callback : callable, *Optional*
42
- If set this function will be called after every sample.
43
- The signature of the callback function is
44
- `callback(sample, sample_index)`,
45
- where `sample` is the current sample and `sample_index` is the index of
46
- the sample.
47
- An example is shown in demos/demo31_callback.py.
41
+ callback : callable, optional
42
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
43
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
48
44
 
49
45
  Example
50
46
  -------
@@ -32,11 +32,9 @@ class ULA(Sampler): # Refactor to Proposal-based sampler?
32
32
  be smaller than 1/L, where L is the Lipschitz of the gradient of the log
33
33
  target density, logd).
34
34
 
35
- callback : callable, *Optional*
36
- If set this function will be called after every sample.
37
- The signature of the callback function is `callback(sample, sample_index)`,
38
- where `sample` is the current sample and `sample_index` is the index of the sample.
39
- An example is shown in demos/demo31_callback.py.
35
+ callback : callable, optional
36
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
37
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
40
38
 
41
39
 
42
40
  Example
@@ -164,11 +162,9 @@ class MALA(ULA): # Refactor to Proposal-based sampler?
164
162
  be smaller than 1/L, where L is the Lipschitz of the gradient of the log
165
163
  target density, logd).
166
164
 
167
- callback : callable, *Optional*
168
- If set this function will be called after every sample.
169
- The signature of the callback function is `callback(sample, sample_index)`,
170
- where `sample` is the current sample and `sample_index` is the index of the sample.
171
- An example is shown in demos/demo31_callback.py.
165
+ callback : callable, optional
166
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
167
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
172
168
 
173
169
 
174
170
  Example
@@ -288,12 +284,9 @@ class MYULA(ULA):
288
284
  smoothing_strength : float
289
285
  This parameter controls the smoothing strength of MYULA.
290
286
 
291
- callback : callable, *Optional*
292
- If set this function will be called after every sample.
293
- The signature of the callback function is `callback(sample, sample_index)`,
294
- where `sample` is the current sample and `sample_index` is the index of
295
- the sample.
296
- An example is shown in demos/demo31_callback.py.
287
+ callback : callable, optional
288
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
289
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
297
290
 
298
291
  A Deblur example can be found in demos/howtos/myula.py
299
292
  # TODO: update demo once sampler merged
@@ -378,12 +371,9 @@ class PnPULA(MYULA):
378
371
  This parameter controls the smoothing strength of PnP-ULA.
379
372
 
380
373
 
381
- callback : callable, *Optional*
382
- If set this function will be called after every sample.
383
- The signature of the callback function is `callback(sample, sample_index)`,
384
- where `sample` is the current sample and `sample_index` is the index of
385
- the sample.
386
- An example is shown in demos/demo31_callback.py.
374
+ callback : callable, optional
375
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
376
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
387
377
 
388
378
  # TODO: update demo once sampler merged
389
379
  """
@@ -43,11 +43,9 @@ class UGLA(Sampler):
43
43
  sampling easier but results in a worse approximation. See details in Section 3.3 of the paper.
44
44
  If not provided, it defaults to 1e-5.
45
45
 
46
- callback : callable, *Optional*
47
- If set, this function will be called after every sample.
48
- The signature of the callback function is `callback(sample, sample_index)`,
49
- where `sample` is the current sample and `sample_index` is the index of the sample.
50
- An example is shown in demos/demo31_callback.py.
46
+ callback : callable, optional
47
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
48
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
51
49
  """
52
50
  def __init__(self, target=None, initial_point=None, maxit=50, tol=1e-4, beta=1e-5, **kwargs):
53
51
 
@@ -36,11 +36,9 @@ class LinearRTO(Sampler):
36
36
  tol : float
37
37
  Tolerance of the inner CGLS solver. *Optional*.
38
38
 
39
- callback : callable, *Optional*
40
- If set this function will be called after every sample.
41
- The signature of the callback function is `callback(sample, sample_index)`,
42
- where `sample` is the current sample and `sample_index` is the index of the sample.
43
- An example is shown in demos/demo31_callback.py.
39
+ callback : callable, optional
40
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
41
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
44
42
 
45
43
  """
46
44
  def __init__(self, target=None, initial_point=None, maxit=10, tol=1e-6, **kwargs):
@@ -204,11 +202,9 @@ class RegularizedLinearRTO(LinearRTO):
204
202
  solver : string
205
203
  If set to "ScipyLinearLSQ", solver is set to cuqi.solver.ScipyLinearLSQ, otherwise FISTA/ISTA or ADMM is used. Note "ScipyLinearLSQ" can only be used with `RegularizedGaussian` of `box` or `nonnegativity` constraint. *Optional*.
206
204
 
207
- callback : callable, *Optional*
208
- If set this function will be called after every sample.
209
- The signature of the callback function is `callback(sample, sample_index)`,
210
- where `sample` is the current sample and `sample_index` is the index of the sample.
211
- An example is shown in demos/demo31_callback.py.
205
+ callback : callable, optional
206
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
207
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
212
208
 
213
209
  """
214
210
  def __init__(self, target=None, initial_point=None, maxit=100, inner_max_it=10, stepsize="automatic", penalty_parameter=10, abstol=1e-10, adaptive=True, solver=None, inner_abstol=None, **kwargs):
@@ -59,9 +59,8 @@ class Sampler(ABC):
59
59
  The initial point for the sampler. If not given, the sampler will choose an initial point.
60
60
 
61
61
  callback : callable, optional
62
- A function that will be called after each sample is drawn. The function should take two arguments: the sample and the index of the sample.
63
- The sample is a 1D numpy array and the index is an integer. The callback function is useful for monitoring the sampler during sampling.
64
-
62
+ A function that will be called after each sampling step. It can be useful for monitoring the sampler during sampling.
63
+ The function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature is: `callback(sampler, sample_index, num_of_samples)`.
65
64
  """
66
65
 
67
66
  self.target = target
@@ -209,7 +208,6 @@ class Sampler(ABC):
209
208
  The path to save the samples. If not specified, the samples are saved to the current working directory under a folder called 'CUQI_samples'.
210
209
 
211
210
  """
212
-
213
211
  self._ensure_initialized()
214
212
 
215
213
  # Initialize batch handler
@@ -235,7 +233,7 @@ class Sampler(ABC):
235
233
  batch_handler.add_sample(self.current_point)
236
234
 
237
235
  # Call callback function if specified
238
- self._call_callback(self.current_point, len(self._samples)-1)
236
+ self._call_callback(idx, Ns)
239
237
 
240
238
  return self
241
239
 
@@ -276,7 +274,7 @@ class Sampler(ABC):
276
274
  pbar.set_postfix_str(f"acc rate: {np.mean(self._acc[-1-idx:]):.2%}")
277
275
 
278
276
  # Call callback function if specified
279
- self._call_callback(self.current_point, len(self._samples)-1)
277
+ self._call_callback(idx, Nb)
280
278
 
281
279
  return self
282
280
 
@@ -367,10 +365,10 @@ class Sampler(ABC):
367
365
  raise ValueError(f"Key {key} not recognized in history dictionary of sampler {self.__class__.__name__}.")
368
366
 
369
367
  # ------------ Private methods ------------
370
- def _call_callback(self, sample, sample_index):
371
- """ Calls the callback function. Assumes input is sample and sample index"""
368
+ def _call_callback(self, sample_index, num_of_samples):
369
+ """ Calls the callback function. Assumes input is sampler, sample index, and total number of samples """
372
370
  if self.callback is not None:
373
- self.callback(sample, sample_index)
371
+ self.callback(self, sample_index, num_of_samples)
374
372
 
375
373
  def _validate_initialization(self):
376
374
  """ Validate the initialization of the sampler by checking all state and history keys are set. """
@@ -228,9 +228,15 @@ class Geometry(ABC):
228
228
  if self.par_shape == self.fun_shape:
229
229
  return "{}[{}]".format(self.__class__.__name__,
230
230
  self.par_shape if len(self.par_shape) != 1 else self.par_shape[0])
231
- return "{}[{}: {}]".format(self.__class__.__name__,
232
- self.par_shape if len(self.par_shape) != 1 else self.par_shape[0],
233
- self.fun_shape if len(self.fun_shape) != 1 else self.fun_shape[0])
231
+ return "{}[{}: {}]".format(
232
+ self.__class__.__name__,
233
+ self.par_shape if len(self.par_shape) != 1 else self.par_shape[0],
234
+ (
235
+ self.fun_shape
236
+ if (self.fun_shape is None or len(self.fun_shape) != 1)
237
+ else self.fun_shape[0]
238
+ ),
239
+ )
234
240
 
235
241
  def _all_values_equal(self, obj):
236
242
  """Returns true of all values of the object and self are equal"""
cuqi/problem/_problem.py CHANGED
@@ -304,6 +304,7 @@ class BayesianProblem(object):
304
304
  The signature of the callback function is `callback(sample, sample_index)`,
305
305
  where `sample` is the current sample and `sample_index` is the index of the sample.
306
306
  An example is shown in demos/demo31_callback.py.
307
+ Note: if the parameter `experimental` is set to True, the callback function should take three arguments: the sampler object, the index of the current sampling step, the total number of requested samples. The last two arguments are integers. An example of the callback function signature in the case is: `callback(sampler, sample_index, num_of_samples)`.
307
308
 
308
309
  experimental : bool, *Optional*
309
310
  If set to True, the sampler selection will use the samplers from the :mod:`cuqi.experimental.mcmc` module.
@@ -848,16 +849,14 @@ class BayesianProblem(object):
848
849
  print(f"burn-in: {Nb/Ns*100:g}%")
849
850
  print("")
850
851
 
851
- if callback is not None:
852
- raise NotImplementedError("Callback not implemented for Gibbs sampler")
853
-
854
852
  # Start timing
855
853
  ti = time.time()
856
854
 
857
855
  # Sampling strategy
858
856
  sampling_strategy = self._determine_sampling_strategy(experimental=True)
859
857
 
860
- sampler = cuqi.experimental.mcmc.HybridGibbs(self._target, sampling_strategy)
858
+ sampler = cuqi.experimental.mcmc.HybridGibbs(
859
+ self._target, sampling_strategy, callback=callback)
861
860
  sampler.warmup(Nb)
862
861
  sampler.sample(Ns)
863
862
  samples = sampler.get_samples()
@@ -876,7 +875,7 @@ class BayesianProblem(object):
876
875
  print("")
877
876
 
878
877
  if callback is not None:
879
- raise NotImplementedError("Callback not implemented for Gibbs sampler")
878
+ raise NotImplementedError("Callback not implemented for Gibbs sampler. It is only implemented for experimental Gibbs sampler.")
880
879
 
881
880
  # Start timing
882
881
  ti = time.time()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: CUQIpy
3
- Version: 1.3.0.post0.dev5
3
+ Version: 1.3.0.post0.dev18
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=_xkG3esRWS6JPHC10V_IPX4HiJmOdO8S9TmLE0m9wkg,508
3
+ cuqi/_version.py,sha256=FYLUm_8DLuAZVUsODSaF6qiDchMsnADcHdlaLm-CNS0,509
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
@@ -44,19 +44,19 @@ cuqi/experimental/geometry/_productgeometry.py,sha256=G-hIYnfLiRS5IWD2EPXORNBKNP
44
44
  cuqi/experimental/mcmc/__init__.py,sha256=zSqLZmxOqQ-F94C9-gPv7g89TX1XxlrlNm071Eb167I,4487
45
45
  cuqi/experimental/mcmc/_conjugate.py,sha256=yyN5ZKcz8xuWDa7wGJLAcx8xN_XpE_Hvg0DzcJTG9-g,19488
46
46
  cuqi/experimental/mcmc/_conjugate_approx.py,sha256=jmxe2FEbO9fwpc8opyjJ2px0oed3dGyj0qDwyHo4aOk,3545
47
- cuqi/experimental/mcmc/_cwmh.py,sha256=50v3uZaWhlVnfrEB5-lB_7pn8QoUVBe-xWxKGKbmNHg,7234
47
+ cuqi/experimental/mcmc/_cwmh.py,sha256=cAvtc3tex53ZUKPMGwj2RIkHAZurpqphko8nk8_DmJs,7340
48
48
  cuqi/experimental/mcmc/_direct.py,sha256=9pQS_2Qk2-ybt6m8WTfPoKetcxQ00WaTRN85-Z0FrBY,777
49
- cuqi/experimental/mcmc/_gibbs.py,sha256=evgxf2tLFLlKB3hN0qz9a9NcZQSES8wdacnn3uNWocQ,12005
50
- cuqi/experimental/mcmc/_hmc.py,sha256=8p4QxZBRpFLzwamH-DWHSdZE0aXX3FqonBzczz_XkDw,19340
51
- cuqi/experimental/mcmc/_langevin_algorithm.py,sha256=NIoCLKL5x89Bxm-JLDLR_NTunREfUohospmIGsGUgJA,14619
52
- cuqi/experimental/mcmc/_laplace_approximation.py,sha256=XcGIa2wl9nCSTtAFurejYYOKkDVAJ22q75xQKsyu2nI,5803
49
+ cuqi/experimental/mcmc/_gibbs.py,sha256=Fmf6g_pnjdHK5WfYz2fljidqwD3Zu9hKSBwB2OdcxmQ,12997
50
+ cuqi/experimental/mcmc/_hmc.py,sha256=LXXOb6cztfjraGIuTGpgf0ndc1xkkBW9v_PfNffu-NA,19438
51
+ cuqi/experimental/mcmc/_langevin_algorithm.py,sha256=1UunuocpzG1h6GiYefEHFOMykEMlYady6Fmuu9CHxHQ,15059
52
+ cuqi/experimental/mcmc/_laplace_approximation.py,sha256=I5ZLtU0lA34YflRbqxKi5UgJBhhHzxqUyVW5JE5-l2w,5916
53
53
  cuqi/experimental/mcmc/_mh.py,sha256=MXo0ahXP4KGFkaY4HtvcBE-TMQzsMlTmLKzSvpz7drU,2941
54
54
  cuqi/experimental/mcmc/_pcn.py,sha256=wqJBZLuRFSwxihaI53tumAg6AWVuceLMOmXssTetd1A,3374
55
- cuqi/experimental/mcmc/_rto.py,sha256=pnhgBR63A_OboHto-I9_o-GsY5yZaH3wbU8S6eXLXX0,13931
56
- cuqi/experimental/mcmc/_sampler.py,sha256=BZHnpB6s-YSddd46wQSds0vNF61RA58Nc9ZU05WngdU,20184
55
+ cuqi/experimental/mcmc/_rto.py,sha256=2RJm1NMIvmCbTBn0M8S8vNLaRjaS1_7S9gVOdG9I8Bo,14159
56
+ cuqi/experimental/mcmc/_sampler.py,sha256=VK-VsPRaYET43C5quhu2f1OstEX5DKYKVyjKABTRHZE,20288
57
57
  cuqi/experimental/mcmc/_utilities.py,sha256=kUzHbhIS3HYZRbneNBK41IogUYX5dS_bJxqEGm7TQBI,525
58
58
  cuqi/geometry/__init__.py,sha256=Tz1WGzZBY-QGH3c0GiyKm9XHN8MGGcnU6TUHLZkzB3o,842
59
- cuqi/geometry/_geometry.py,sha256=ma8eSq12YDj8qozuDIPfZEV7fXBRK0pGjYUU5ewBQIs,47493
59
+ cuqi/geometry/_geometry.py,sha256=W-oQTZPelVS7fN9qZj6bNBuh-yY0eqOHJ39UwB-WmQY,47562
60
60
  cuqi/implicitprior/__init__.py,sha256=6z3lvw-tWDyjZSpB3pYzvijSMK9Zlf1IYqOVTtMD2h4,309
61
61
  cuqi/implicitprior/_regularizedGMRF.py,sha256=BUeT4rwJzary9K56fkxCNGCeKZd-2VSgOT8XNHxFPRE,6345
62
62
  cuqi/implicitprior/_regularizedGaussian.py,sha256=whTitoB5ZvWg8jm7ipugR_1ouK1M2EGrfwAnr46xDnE,19395
@@ -71,7 +71,7 @@ cuqi/operator/_operator.py,sha256=yNwPTh7jR07AiKMbMQQ5_54EgirlKFsbq9JN1EODaQI,88
71
71
  cuqi/pde/__init__.py,sha256=NyS_ZYruCvy-Yg24qKlwm3ZIX058kLNQX9bqs-xg4ZM,99
72
72
  cuqi/pde/_pde.py,sha256=WRkOYyIdT_T3aZepRh0aS9C5nBbUZUcHaA80iSRvgoo,12572
73
73
  cuqi/problem/__init__.py,sha256=JxJty4JqHTOqSG6NeTGiXRQ7OLxiRK9jvVq3lXLeIRw,38
74
- cuqi/problem/_problem.py,sha256=31ByO279-6hM8PhWjwD5k7i9aBAkk9S1tcgMzxv1PiQ,38256
74
+ cuqi/problem/_problem.py,sha256=p1UO04GKv5BmdcPR5-xcP-idBsqShBxKJ3WC5qNSMDs,38588
75
75
  cuqi/sampler/__init__.py,sha256=D-dYa0gFgIwQukP8_VKhPGmlGKXbvVo7YqaET4SdAeQ,382
76
76
  cuqi/sampler/_conjugate.py,sha256=x5OsFk1zDm2tvoFsSxbCKwjSqBHUGbcUvcTwDOvL-tw,2841
77
77
  cuqi/sampler/_conjugate_approx.py,sha256=xX-X71EgxGnZooOY6CIBhuJTs3dhcKfoLnoFxX3CO2g,1938
@@ -93,8 +93,8 @@ cuqi/testproblem/_testproblem.py,sha256=x769LwwRdJdzIiZkcQUGb_5-vynNTNALXWKato7s
93
93
  cuqi/utilities/__init__.py,sha256=RB84VstmFcZgPOz58LKSzOvCVebbeKDcKl9MGk-EwoA,515
94
94
  cuqi/utilities/_get_python_variable_name.py,sha256=wxpCaj9f3ZtBNqlGmmuGiITgBaTsY-r94lUIlK6UAU4,2043
95
95
  cuqi/utilities/_utilities.py,sha256=gc9YAj7wFKzyZTE1H5iI_1Tt4AtjT1g5l1-zxBdH-Co,15281
96
- CUQIpy-1.3.0.post0.dev5.dist-info/LICENSE,sha256=kJWRPrtRoQoZGXyyvu50Uc91X6_0XRaVfT0YZssicys,10799
97
- CUQIpy-1.3.0.post0.dev5.dist-info/METADATA,sha256=rNyQnDbEnGY4hzmoWnzI5GQYEgjvqyGZuwe-scUTZi0,18527
98
- CUQIpy-1.3.0.post0.dev5.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
99
- CUQIpy-1.3.0.post0.dev5.dist-info/top_level.txt,sha256=AgmgMc6TKfPPqbjV0kvAoCBN334i_Lwwojc7HE3ZwD0,5
100
- CUQIpy-1.3.0.post0.dev5.dist-info/RECORD,,
96
+ cuqipy-1.3.0.post0.dev18.dist-info/LICENSE,sha256=kJWRPrtRoQoZGXyyvu50Uc91X6_0XRaVfT0YZssicys,10799
97
+ cuqipy-1.3.0.post0.dev18.dist-info/METADATA,sha256=saJaodfoElvWOW5hig3exgCoY8V614q0QSj_rI5sxzI,18528
98
+ cuqipy-1.3.0.post0.dev18.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
99
+ cuqipy-1.3.0.post0.dev18.dist-info/top_level.txt,sha256=AgmgMc6TKfPPqbjV0kvAoCBN334i_Lwwojc7HE3ZwD0,5
100
+ cuqipy-1.3.0.post0.dev18.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (76.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5