imt-ring 1.6.8__tar.gz → 1.6.10__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. {imt_ring-1.6.8 → imt_ring-1.6.10}/PKG-INFO +1 -1
  2. {imt_ring-1.6.8 → imt_ring-1.6.10}/pyproject.toml +1 -1
  3. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/base.py +41 -4
  5. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/batch.py +7 -7
  6. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/base.py +12 -5
  7. {imt_ring-1.6.8 → imt_ring-1.6.10}/readme.md +0 -0
  8. {imt_ring-1.6.8 → imt_ring-1.6.10}/setup.cfg +0 -0
  9. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/imt_ring.egg-info/SOURCES.txt +0 -0
  10. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  11. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/imt_ring.egg-info/requires.txt +0 -0
  12. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/imt_ring.egg-info/top_level.txt +0 -0
  13. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/__init__.py +0 -0
  14. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algebra.py +0 -0
  15. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/__init__.py +0 -0
  16. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/_random.py +0 -0
  17. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/custom_joints/__init__.py +0 -0
  18. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  19. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  20. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  21. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/dynamics.py +0 -0
  22. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/__init__.py +0 -0
  23. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/finalize_fns.py +0 -0
  24. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  25. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/pd_control.py +0 -0
  26. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/setup_fns.py +0 -0
  27. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/generator/types.py +0 -0
  28. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/jcalc.py +0 -0
  29. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/kinematics.py +0 -0
  30. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/algorithms/sensors.py +0 -0
  31. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/__init__.py +0 -0
  32. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/branched.xml +0 -0
  33. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  34. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  35. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  36. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/inv_pendulum.xml +0 -0
  37. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  38. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/spherical_stiff.xml +0 -0
  39. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/symmetric.xml +0 -0
  40. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_all_1.xml +0 -0
  41. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_all_2.xml +0 -0
  42. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  43. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_control.xml +0 -0
  44. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  45. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_free.xml +0 -0
  46. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_kinematics.xml +0 -0
  47. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  48. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  49. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_randomize_position.xml +0 -0
  50. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_sensors.xml +0 -0
  51. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  52. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/examples.py +0 -0
  53. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/test_examples.py +0 -0
  54. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/xml/__init__.py +0 -0
  55. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/xml/abstract.py +0 -0
  56. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/xml/from_xml.py +0 -0
  57. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/xml/test_from_xml.py +0 -0
  58. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/xml/test_to_xml.py +0 -0
  59. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/io/xml/to_xml.py +0 -0
  60. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/maths.py +0 -0
  61. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/__init__.py +0 -0
  62. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/base.py +0 -0
  63. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/callbacks.py +0 -0
  64. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/ml_utils.py +0 -0
  65. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/optimizer.py +0 -0
  66. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  67. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
  68. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/ringnet.py +0 -0
  69. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/rnno_v1.py +0 -0
  70. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/train.py +0 -0
  71. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/ml/training_loop.py +0 -0
  72. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/rendering/__init__.py +0 -0
  73. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/rendering/base_render.py +0 -0
  74. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/rendering/mujoco_render.py +0 -0
  75. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/rendering/vispy_render.py +0 -0
  76. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/rendering/vispy_visuals.py +0 -0
  77. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/sim2real/__init__.py +0 -0
  78. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/sim2real/sim2real.py +0 -0
  79. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/spatial.py +0 -0
  80. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/sys_composer/__init__.py +0 -0
  81. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/sys_composer/delete_sys.py +0 -0
  82. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/sys_composer/inject_sys.py +0 -0
  83. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/sys_composer/morph_sys.py +0 -0
  84. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/__init__.py +0 -0
  85. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/backend.py +0 -0
  86. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/batchsize.py +0 -0
  87. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/colab.py +0 -0
  88. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/hdf5.py +0 -0
  89. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/normalizer.py +0 -0
  90. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/path.py +0 -0
  91. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/randomize_sys.py +0 -0
  92. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/register_gym_envs/__init__.py +0 -0
  93. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/register_gym_envs/saddle.py +0 -0
  94. {imt_ring-1.6.8 → imt_ring-1.6.10}/src/ring/utils/utils.py +0 -0
  95. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_algebra.py +0 -0
  96. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_base.py +0 -0
  97. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_custom_joints.py +0 -0
  98. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_dynamics.py +0 -0
  99. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_generator.py +0 -0
  100. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_jcalc.py +0 -0
  101. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_jit.py +0 -0
  102. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_kinematics.py +0 -0
  103. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_maths.py +0 -0
  104. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_ml_utils.py +0 -0
  105. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_motion_artifacts.py +0 -0
  106. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_pd_control.py +0 -0
  107. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_quickstart_example.py +0 -0
  108. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_random.py +0 -0
  109. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_randomize.py +0 -0
  110. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_rcmg.py +0 -0
  111. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_render.py +0 -0
  112. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_sensors.py +0 -0
  113. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_sim2real.py +0 -0
  114. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_sys_composer.py +0 -0
  115. {imt_ring-1.6.8 → imt_ring-1.6.10}/tests/test_train.py +0 -0
  116. {imt_ring-1.6.8 → imt_ring-1.6.10}/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.8
3
+ Version: 1.6.10
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.8"
7
+ version = "1.6.10"
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.8
3
+ Version: 1.6.10
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
@@ -6,6 +6,7 @@ import jax
6
6
  import jax.numpy as jnp
7
7
  import numpy as np
8
8
  import tree_utils
9
+ from tree_utils import PyTree
9
10
 
10
11
  from ring import base
11
12
  from ring import utils
@@ -143,9 +144,7 @@ class RCMG:
143
144
 
144
145
  return n_calls
145
146
 
146
- def to_list(
147
- self, sizes: int | list[int] = 1, seed: int = 1
148
- ) -> list[tree_utils.PyTree[np.ndarray]]:
147
+ def _generators_ncalls(self, sizes: int | list[int] = 1):
149
148
  "Returns list of unbatched sequences as numpy arrays."
150
149
  repeats = self._compute_repeats(sizes)
151
150
  sizes = list(jnp.array(repeats) * jnp.array(self._size_of_generators))
@@ -165,7 +164,45 @@ class RCMG:
165
164
  batch.generators_lazy([self.gens[i]], [reduced_repeats[i]], jits[i])
166
165
  )
167
166
 
168
- return batch.generators_eager_to_list(gens, n_calls, seed, self._disable_tqdm)
167
+ return gens, n_calls
168
+
169
+ def to_list(
170
+ self, sizes: int | list[int] = 1, seed: int = 1
171
+ ) -> list[tree_utils.PyTree[np.ndarray]]:
172
+ "Returns list of unbatched sequences as numpy arrays."
173
+ gens, n_calls = self._generators_ncalls(sizes)
174
+
175
+ data = []
176
+ batch.generators_eager(
177
+ gens, n_calls, lambda d: data.extend(d), seed, self._disable_tqdm
178
+ )
179
+ return data
180
+
181
+ def to_folder(
182
+ self,
183
+ path: str,
184
+ sizes: int | list[int] = 1,
185
+ seed: int = 1,
186
+ overwrite: bool = True,
187
+ file_prefix: str = "seq",
188
+ save_fn: Callable[[PyTree[np.ndarray], str], None] = utils.pickle_save,
189
+ verbose: bool = True,
190
+ ):
191
+
192
+ i = 0
193
+
194
+ def callback(data: list[PyTree[np.ndarray]]) -> None:
195
+ nonlocal i
196
+ data = utils.replace_elements_w_nans(data, verbose=verbose)
197
+ for d in data:
198
+ file = utils.parse_path(
199
+ path, file_prefix + str(i), file_exists_ok=overwrite
200
+ )
201
+ save_fn(d, file)
202
+ i += 1
203
+
204
+ gens, n_calls = self._generators_ncalls(sizes)
205
+ batch.generators_eager(gens, n_calls, callback, seed, self._disable_tqdm)
169
206
 
170
207
  def to_pickle(
171
208
  self,
@@ -1,8 +1,10 @@
1
+ from typing import Callable
2
+
1
3
  import jax
2
4
  import jax.numpy as jnp
3
5
  import numpy as np
4
6
  from tqdm import tqdm
5
- import tree_utils
7
+ from tree_utils import PyTree
6
8
 
7
9
  from ring import utils
8
10
  from ring.algorithms.generator import types
@@ -50,15 +52,15 @@ def generators_lazy(
50
52
  return generator
51
53
 
52
54
 
53
- def generators_eager_to_list(
55
+ def generators_eager(
54
56
  generators: list[types.BatchedGenerator],
55
57
  n_calls: list[int],
58
+ callback: Callable[[list[PyTree[np.ndarray]]], None],
56
59
  seed: int = 1,
57
60
  disable_tqdm: bool = False,
58
- ) -> list[tree_utils.PyTree]:
61
+ ) -> None:
59
62
 
60
63
  key = jax.random.PRNGKey(seed)
61
- data = []
62
64
  for gen, n_call in tqdm(
63
65
  zip(generators, n_calls),
64
66
  desc="executing generators",
@@ -81,6 +83,4 @@ def generators_eager_to_list(
81
83
 
82
84
  sample_flat, _ = jax.tree_util.tree_flatten(sample)
83
85
  size = 1 if len(sample_flat) == 0 else sample_flat[0].shape[0]
84
- data.extend([jax.tree_map(lambda a: a[i], sample) for i in range(size)])
85
-
86
- return data
86
+ callback([jax.tree_map(lambda a: a[i], sample) for i in range(size)])
@@ -590,12 +590,14 @@ class System(_Base):
590
590
 
591
591
  return sys
592
592
 
593
- def findall_imus(self) -> list[str]:
594
- return [name for name in self.link_names if name[:3] == "imu"]
593
+ def findall_imus(self, names: bool = True) -> list[str] | list[int]:
594
+ bodies = [name for name in self.link_names if name[:3] == "imu"]
595
+ return bodies if names else [self.name_to_idx(n) for n in bodies]
595
596
 
596
- def findall_segments(self) -> list[str]:
597
- imus = self.findall_imus()
598
- return [name for name in self.link_names if name not in imus]
597
+ def findall_segments(self, names: bool = True) -> list[str] | list[int]:
598
+ imus = self.findall_imus(names=True)
599
+ bodies = [name for name in self.link_names if name not in imus]
600
+ return bodies if names else [self.name_to_idx(n) for n in bodies]
599
601
 
600
602
  def _bodies_indices_to_bodies_name(self, bodies: list[int]) -> list[str]:
601
603
  return [self.idx_to_name(i) for i in bodies]
@@ -615,6 +617,11 @@ class System(_Base):
615
617
  bodies = [i for i, _typ in enumerate(self.link_types) if _typ == typ]
616
618
  return self._bodies_indices_to_bodies_name(bodies) if names else bodies
617
619
 
620
+ def children(self, name: str, names: bool = False) -> list[int] | list[str]:
621
+ p = self.name_to_idx(name)
622
+ bodies = [i for i in range(self.num_links()) if self.link_parents[i] == p]
623
+ return bodies if (not names) else [self.idx_to_name(i) for i in bodies]
624
+
618
625
  def scan(self, f: Callable, in_types: str, *args, reverse: bool = False):
619
626
  """Scan `f` along each link in system whilst carrying along state.
620
627
 
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
File without changes
File without changes
File without changes