aspire-inference 0.1.0a11__tar.gz → 0.1.0a12__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.
Files changed (63) hide show
  1. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/PKG-INFO +1 -1
  2. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/aspire_inference.egg-info/PKG-INFO +1 -1
  3. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/aspire.py +3 -2
  4. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/utils.py +21 -0
  5. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/test_utils.py +17 -1
  6. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/.github/workflows/lint.yml +0 -0
  7. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/.github/workflows/publish.yml +0 -0
  8. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/.github/workflows/tests.yml +0 -0
  9. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/.gitignore +0 -0
  10. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/.pre-commit-config.yaml +0 -0
  11. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/LICENSE +0 -0
  12. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/README.md +0 -0
  13. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/aspire_inference.egg-info/SOURCES.txt +0 -0
  14. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/aspire_inference.egg-info/dependency_links.txt +0 -0
  15. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/aspire_inference.egg-info/requires.txt +0 -0
  16. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/aspire_inference.egg-info/top_level.txt +0 -0
  17. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/Makefile +0 -0
  18. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/checkpointing.rst +0 -0
  19. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/conf.py +0 -0
  20. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/entry_points.rst +0 -0
  21. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/examples.rst +0 -0
  22. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/index.rst +0 -0
  23. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/installation.rst +0 -0
  24. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/multiprocessing.rst +0 -0
  25. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/recipes.rst +0 -0
  26. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/requirements.txt +0 -0
  27. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/docs/user_guide.rst +0 -0
  28. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/examples/basic_example.py +0 -0
  29. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/examples/blackjax_smc_example.py +0 -0
  30. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/examples/smc_example.py +0 -0
  31. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/pyproject.toml +0 -0
  32. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/readthedocs.yml +0 -0
  33. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/setup.cfg +0 -0
  34. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/__init__.py +0 -0
  35. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/__init__.py +0 -0
  36. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/base.py +0 -0
  37. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/jax/__init__.py +0 -0
  38. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/jax/flows.py +0 -0
  39. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/jax/utils.py +0 -0
  40. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/torch/__init__.py +0 -0
  41. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/flows/torch/flows.py +0 -0
  42. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/history.py +0 -0
  43. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/plot.py +0 -0
  44. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/__init__.py +0 -0
  45. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/base.py +0 -0
  46. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/importance.py +0 -0
  47. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/mcmc.py +0 -0
  48. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/smc/__init__.py +0 -0
  49. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/smc/base.py +0 -0
  50. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/smc/blackjax.py +0 -0
  51. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/smc/emcee.py +0 -0
  52. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samplers/smc/minipcn.py +0 -0
  53. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/samples.py +0 -0
  54. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/src/aspire/transforms.py +0 -0
  55. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/conftest.py +0 -0
  56. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/integration_tests/conftest.py +0 -0
  57. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/integration_tests/test_checkpointing.py +0 -0
  58. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/integration_tests/test_integration.py +0 -0
  59. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/test_flows/test_flows_core.py +0 -0
  60. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/test_flows/test_jax_flows/test_flowjax_flows.py +0 -0
  61. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/test_flows/test_torch_flows/test_zuko_flows.py +0 -0
  62. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/test_samples.py +0 -0
  63. {aspire_inference-0.1.0a11 → aspire_inference-0.1.0a12}/tests/test_transforms.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aspire-inference
3
- Version: 0.1.0a11
3
+ Version: 0.1.0a12
4
4
  Summary: Accelerate Sequential Posterior Inference via REuse
5
5
  Author-email: "Michael J. Williams" <michaeljw1@googlemail.com>
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aspire-inference
3
- Version: 0.1.0a11
3
+ Version: 0.1.0a12
4
4
  Summary: Accelerate Sequential Posterior Inference via REuse
5
5
  Author-email: "Michael J. Williams" <michaeljw1@googlemail.com>
6
6
  License: MIT
@@ -20,6 +20,7 @@ from .transforms import (
20
20
  )
21
21
  from .utils import (
22
22
  AspireFile,
23
+ function_id,
23
24
  load_from_h5_file,
24
25
  recursively_save_to_h5_file,
25
26
  resolve_xp,
@@ -687,8 +688,8 @@ class Aspire:
687
688
  method of the sampler.
688
689
  """
689
690
  config = {
690
- "log_likelihood": self.log_likelihood.__name__,
691
- "log_prior": self.log_prior.__name__,
691
+ "log_likelihood": function_id(self.log_likelihood),
692
+ "log_prior": function_id(self.log_prior),
692
693
  "dims": self.dims,
693
694
  "parameters": self.parameters,
694
695
  "periodic_parameters": self.periodic_parameters,
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ import functools
3
4
  import inspect
4
5
  import logging
5
6
  import pickle
@@ -911,3 +912,23 @@ def track_calls(wrapped=None):
911
912
  return wrapped_func(*args, **kwargs)
912
913
 
913
914
  return wrapper(wrapped) if wrapped else wrapper
915
+
916
+
917
+ def function_id(fn: Any) -> str:
918
+ """Get a unique identifier for a function.
919
+
920
+ Parameters
921
+ ----------
922
+ fn : Any
923
+ The function to get the identifier for.
924
+
925
+ Returns
926
+ -------
927
+ str
928
+ The unique identifier for the function.
929
+ """
930
+ if isinstance(fn, functools.partial):
931
+ base = fn.func
932
+ else:
933
+ base = fn
934
+ return f"{base.__module__}:{getattr(base, '__qualname__', type(base).__name__)}"
@@ -1,3 +1,4 @@
1
+ import functools
1
2
  import pickle
2
3
 
3
4
  import array_api_compat.numpy as np_xp
@@ -6,7 +7,7 @@ import h5py
6
7
  import jax.numpy as jnp
7
8
  import pytest
8
9
 
9
- from aspire.utils import convert_dtype, dump_state, resolve_dtype
10
+ from aspire.utils import convert_dtype, dump_state, function_id, resolve_dtype
10
11
 
11
12
 
12
13
  def _dtype_name(dtype):
@@ -85,3 +86,18 @@ def test_dump_state_round_trip(tmp_path):
85
86
  stored = fp["checkpoints"]["state"][...]
86
87
  restored = pickle.loads(stored.tobytes())
87
88
  assert restored == state
89
+
90
+
91
+ # Define a simple function for testing
92
+ def _foo(x):
93
+ return x
94
+
95
+
96
+ @pytest.mark.parametrize(
97
+ "fn", [lambda x: x, functools.partial(lambda x, y: x, y=1), _foo]
98
+ )
99
+ def test_function_id(fn):
100
+ fn_id = function_id(fn)
101
+ assert isinstance(fn_id, str)
102
+ # Calling again should give the same result
103
+ assert fn_id == function_id(fn)