imt-ring 1.6.23__tar.gz → 1.6.25__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 (119) hide show
  1. {imt_ring-1.6.23 → imt_ring-1.6.25}/PKG-INFO +1 -1
  2. {imt_ring-1.6.23 → imt_ring-1.6.25}/pyproject.toml +1 -1
  3. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/_random.py +5 -5
  5. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/ml_utils.py +55 -0
  6. {imt_ring-1.6.23 → imt_ring-1.6.25}/readme.md +0 -0
  7. {imt_ring-1.6.23 → imt_ring-1.6.25}/setup.cfg +0 -0
  8. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/imt_ring.egg-info/SOURCES.txt +0 -0
  9. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  10. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/imt_ring.egg-info/requires.txt +0 -0
  11. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/imt_ring.egg-info/top_level.txt +0 -0
  12. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/__init__.py +0 -0
  13. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algebra.py +0 -0
  14. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/__init__.py +0 -0
  15. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/custom_joints/__init__.py +0 -0
  16. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  17. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  18. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/custom_joints/rsaddle_joint.py +0 -0
  19. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  20. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/dynamics.py +0 -0
  21. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/__init__.py +0 -0
  22. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/base.py +0 -0
  23. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/batch.py +0 -0
  24. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/finalize_fns.py +0 -0
  25. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  26. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/pd_control.py +0 -0
  27. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/setup_fns.py +0 -0
  28. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/generator/types.py +0 -0
  29. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/jcalc.py +0 -0
  30. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/kinematics.py +0 -0
  31. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/algorithms/sensors.py +0 -0
  32. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/base.py +0 -0
  33. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/__init__.py +0 -0
  34. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/branched.xml +0 -0
  35. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  36. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  37. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  38. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/inv_pendulum.xml +0 -0
  39. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  40. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/spherical_stiff.xml +0 -0
  41. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/symmetric.xml +0 -0
  42. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_all_1.xml +0 -0
  43. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_all_2.xml +0 -0
  44. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  45. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_control.xml +0 -0
  46. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  47. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_free.xml +0 -0
  48. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_kinematics.xml +0 -0
  49. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  50. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  51. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_randomize_position.xml +0 -0
  52. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_sensors.xml +0 -0
  53. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  54. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/examples.py +0 -0
  55. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/test_examples.py +0 -0
  56. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/xml/__init__.py +0 -0
  57. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/xml/abstract.py +0 -0
  58. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/xml/from_xml.py +0 -0
  59. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/xml/test_from_xml.py +0 -0
  60. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/xml/test_to_xml.py +0 -0
  61. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/io/xml/to_xml.py +0 -0
  62. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/maths.py +0 -0
  63. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/__init__.py +0 -0
  64. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/base.py +0 -0
  65. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/callbacks.py +0 -0
  66. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/optimizer.py +0 -0
  67. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  68. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
  69. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/ringnet.py +0 -0
  70. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/rnno_v1.py +0 -0
  71. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/train.py +0 -0
  72. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/ml/training_loop.py +0 -0
  73. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/rendering/__init__.py +0 -0
  74. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/rendering/base_render.py +0 -0
  75. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/rendering/mujoco_render.py +0 -0
  76. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/rendering/vispy_render.py +0 -0
  77. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/rendering/vispy_visuals.py +0 -0
  78. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/sim2real/__init__.py +0 -0
  79. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/sim2real/sim2real.py +0 -0
  80. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/spatial.py +0 -0
  81. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/sys_composer/__init__.py +0 -0
  82. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/sys_composer/delete_sys.py +0 -0
  83. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/sys_composer/inject_sys.py +0 -0
  84. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/sys_composer/morph_sys.py +0 -0
  85. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/__init__.py +0 -0
  86. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/backend.py +0 -0
  87. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/batchsize.py +0 -0
  88. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/colab.py +0 -0
  89. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/dataloader.py +0 -0
  90. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/dataloader_torch.py +0 -0
  91. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/hdf5.py +0 -0
  92. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/normalizer.py +0 -0
  93. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/path.py +0 -0
  94. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/randomize_sys.py +0 -0
  95. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/register_gym_envs/__init__.py +0 -0
  96. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/register_gym_envs/saddle.py +0 -0
  97. {imt_ring-1.6.23 → imt_ring-1.6.25}/src/ring/utils/utils.py +0 -0
  98. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_algebra.py +0 -0
  99. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_base.py +0 -0
  100. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_custom_joints.py +0 -0
  101. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_dynamics.py +0 -0
  102. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_generator.py +0 -0
  103. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_jcalc.py +0 -0
  104. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_jit.py +0 -0
  105. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_kinematics.py +0 -0
  106. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_maths.py +0 -0
  107. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_ml_utils.py +0 -0
  108. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_motion_artifacts.py +0 -0
  109. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_pd_control.py +0 -0
  110. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_quickstart_example.py +0 -0
  111. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_random.py +0 -0
  112. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_randomize.py +0 -0
  113. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_rcmg.py +0 -0
  114. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_render.py +0 -0
  115. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_sensors.py +0 -0
  116. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_sim2real.py +0 -0
  117. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_sys_composer.py +0 -0
  118. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_train.py +0 -0
  119. {imt_ring-1.6.23 → imt_ring-1.6.25}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imt-ring
3
- Version: 1.6.23
3
+ Version: 1.6.25
4
4
  Summary: RING: Recurrent Inertial Graph-based Estimator
5
5
  Author-email: Simon Bachhuber <simon.bachhuber@fau.de>
6
6
  Project-URL: Homepage, https://github.com/SimiPixel/ring
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "imt-ring"
7
- version = "1.6.23"
7
+ version = "1.6.25"
8
8
  authors = [
9
9
  { name="Simon Bachhuber", email="simon.bachhuber@fau.de" },
10
10
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: imt-ring
3
- Version: 1.6.23
3
+ Version: 1.6.25
4
4
  Summary: RING: Recurrent Inertial Graph-based Estimator
5
5
  Author-email: Simon Bachhuber <simon.bachhuber@fau.de>
6
6
  Project-URL: Homepage, https://github.com/SimiPixel/ring
@@ -272,14 +272,14 @@ def _resolve_range_of_motion(
272
272
  key_ang,
273
273
  max_iter,
274
274
  ):
275
+ # legacy reasons, without range of motion the `sign` value, so going
276
+ # left or right is 50-50 for free joints and spherical joints
277
+ if not range_of_motion:
278
+ range_of_motion_method = "coinflip"
279
+
275
280
  def _next_phi(key, dt):
276
281
  key, consume = random.split(key)
277
282
 
278
- # legacy reasons, without range of motion the `sign` value, so going
279
- # left or right is 50-50 for free joints and spherical joints
280
- if not range_of_motion:
281
- range_of_motion_method = "coinflip"
282
-
283
283
  if range_of_motion_method == "coinflip":
284
284
  probs = jnp.array([0.5, 0.5])
285
285
  elif range_of_motion_method == "uniform":
@@ -243,5 +243,60 @@ def save_model_tf(jax_func, path: str, *input, validate: bool = True):
243
243
  )
244
244
 
245
245
 
246
+ def to_onnx(
247
+ fn,
248
+ output_path,
249
+ *args: tuple[np.ndarray],
250
+ in_args_names: Optional[list[str]] = None,
251
+ out_args_names: Optional[list[str]] = None,
252
+ validate: bool = False,
253
+ ):
254
+ import jax.experimental.jax2tf as jax2tf
255
+ import tensorflow as tf
256
+ import tf2onnx
257
+
258
+ tf_fn = tf.function(jax2tf.convert(fn, enable_xla=False))
259
+ tf_args = [tf.TensorSpec(np.shape(x), np.result_type(x)) for x in args]
260
+ tf2onnx.convert.from_function(
261
+ tf_fn, input_signature=tf_args, output_path=output_path
262
+ )
263
+
264
+ if in_args_names is not None or out_args_names is not None:
265
+ import onnx
266
+ from sor4onnx import rename
267
+
268
+ model = onnx.load(output_path)
269
+
270
+ if in_args_names is not None:
271
+ old_names = [inp.name for inp in model.graph.input]
272
+ assert len(old_names) == len(in_args_names)
273
+ for old_name, new_name in zip(old_names, in_args_names):
274
+ model = rename([old_name, new_name], None, model, None, mode="inputs")
275
+
276
+ if out_args_names is not None:
277
+ old_names = [out.name for out in model.graph.output]
278
+ assert len(old_names) == len(out_args_names)
279
+ for old_name, new_name in zip(old_names, out_args_names):
280
+ model = rename([old_name, new_name], None, model, None, mode="outputs")
281
+
282
+ onnx.save(model, output_path)
283
+
284
+ if validate:
285
+ import onnxruntime as ort
286
+
287
+ output_jax = fn(*args)
288
+ session = ort.InferenceSession(output_path)
289
+ input_names = [inp.name for inp in session.get_inputs()]
290
+ output_onnx = session.run(
291
+ None, {name: np.array(arg) for name, arg in zip(input_names, args)}
292
+ )
293
+
294
+ for o1, o2 in zip(output_jax, output_onnx):
295
+ assert np.allclose(o1, o2, atol=1e-5, rtol=1e-5)
296
+
297
+ if out_args_names is not None:
298
+ assert [out.name for out in session.get_outputs()] == out_args_names
299
+
300
+
246
301
  def _unknown_link_names(N: int):
247
302
  return [f"link{i}" for i in range(N)]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes