imt-ring 1.6.17__tar.gz → 1.6.19__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. {imt_ring-1.6.17 → imt_ring-1.6.19}/PKG-INFO +1 -1
  2. {imt_ring-1.6.17 → imt_ring-1.6.19}/pyproject.toml +1 -1
  3. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/imt_ring.egg-info/PKG-INFO +1 -1
  4. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/imt_ring.egg-info/SOURCES.txt +1 -0
  5. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/ml_utils.py +22 -4
  6. imt_ring-1.6.19/src/ring/utils/dataloader_torch.py +62 -0
  7. {imt_ring-1.6.17 → imt_ring-1.6.19}/readme.md +0 -0
  8. {imt_ring-1.6.17 → imt_ring-1.6.19}/setup.cfg +0 -0
  9. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/imt_ring.egg-info/dependency_links.txt +0 -0
  10. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/imt_ring.egg-info/requires.txt +0 -0
  11. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/imt_ring.egg-info/top_level.txt +0 -0
  12. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/__init__.py +0 -0
  13. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algebra.py +0 -0
  14. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/__init__.py +0 -0
  15. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/_random.py +0 -0
  16. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/custom_joints/__init__.py +0 -0
  17. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/custom_joints/rr_imp_joint.py +0 -0
  18. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/custom_joints/rr_joint.py +0 -0
  19. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/custom_joints/rsaddle_joint.py +0 -0
  20. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/custom_joints/suntay.py +0 -0
  21. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/dynamics.py +0 -0
  22. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/__init__.py +0 -0
  23. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/base.py +0 -0
  24. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/batch.py +0 -0
  25. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/finalize_fns.py +0 -0
  26. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/motion_artifacts.py +0 -0
  27. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/pd_control.py +0 -0
  28. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/setup_fns.py +0 -0
  29. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/generator/types.py +0 -0
  30. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/jcalc.py +0 -0
  31. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/kinematics.py +0 -0
  32. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/algorithms/sensors.py +0 -0
  33. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/base.py +0 -0
  34. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/__init__.py +0 -0
  35. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/branched.xml +0 -0
  36. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/exclude/knee_trans_dof.xml +0 -0
  37. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/exclude/standard_sys.xml +0 -0
  38. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/exclude/standard_sys_rr_imp.xml +0 -0
  39. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/inv_pendulum.xml +0 -0
  40. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/knee_flexible_imus.xml +0 -0
  41. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/spherical_stiff.xml +0 -0
  42. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/symmetric.xml +0 -0
  43. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_all_1.xml +0 -0
  44. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_all_2.xml +0 -0
  45. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_ang0_pos0.xml +0 -0
  46. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_control.xml +0 -0
  47. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_double_pendulum.xml +0 -0
  48. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_free.xml +0 -0
  49. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_kinematics.xml +0 -0
  50. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_morph_system/four_seg_seg1.xml +0 -0
  51. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_morph_system/four_seg_seg3.xml +0 -0
  52. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_randomize_position.xml +0 -0
  53. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_sensors.xml +0 -0
  54. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples/test_three_seg_seg2.xml +0 -0
  55. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/examples.py +0 -0
  56. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/test_examples.py +0 -0
  57. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/xml/__init__.py +0 -0
  58. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/xml/abstract.py +0 -0
  59. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/xml/from_xml.py +0 -0
  60. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/xml/test_from_xml.py +0 -0
  61. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/xml/test_to_xml.py +0 -0
  62. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/io/xml/to_xml.py +0 -0
  63. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/maths.py +0 -0
  64. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/__init__.py +0 -0
  65. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/base.py +0 -0
  66. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/callbacks.py +0 -0
  67. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/optimizer.py +0 -0
  68. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/params/0x13e3518065c21cd8.pickle +0 -0
  69. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/params/0x1d76628065a71e0f.pickle +0 -0
  70. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/ringnet.py +0 -0
  71. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/rnno_v1.py +0 -0
  72. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/train.py +0 -0
  73. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/ml/training_loop.py +0 -0
  74. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/rendering/__init__.py +0 -0
  75. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/rendering/base_render.py +0 -0
  76. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/rendering/mujoco_render.py +0 -0
  77. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/rendering/vispy_render.py +0 -0
  78. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/rendering/vispy_visuals.py +0 -0
  79. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/sim2real/__init__.py +0 -0
  80. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/sim2real/sim2real.py +0 -0
  81. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/spatial.py +0 -0
  82. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/sys_composer/__init__.py +0 -0
  83. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/sys_composer/delete_sys.py +0 -0
  84. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/sys_composer/inject_sys.py +0 -0
  85. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/sys_composer/morph_sys.py +0 -0
  86. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/__init__.py +0 -0
  87. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/backend.py +0 -0
  88. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/batchsize.py +0 -0
  89. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/colab.py +0 -0
  90. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/dataloader.py +0 -0
  91. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/hdf5.py +0 -0
  92. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/normalizer.py +0 -0
  93. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/path.py +0 -0
  94. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/randomize_sys.py +0 -0
  95. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/register_gym_envs/__init__.py +0 -0
  96. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/register_gym_envs/saddle.py +0 -0
  97. {imt_ring-1.6.17 → imt_ring-1.6.19}/src/ring/utils/utils.py +0 -0
  98. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_algebra.py +0 -0
  99. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_base.py +0 -0
  100. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_custom_joints.py +0 -0
  101. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_dynamics.py +0 -0
  102. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_generator.py +0 -0
  103. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_jcalc.py +0 -0
  104. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_jit.py +0 -0
  105. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_kinematics.py +0 -0
  106. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_maths.py +0 -0
  107. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_ml_utils.py +0 -0
  108. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_motion_artifacts.py +0 -0
  109. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_pd_control.py +0 -0
  110. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_quickstart_example.py +0 -0
  111. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_random.py +0 -0
  112. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_randomize.py +0 -0
  113. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_rcmg.py +0 -0
  114. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_render.py +0 -0
  115. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_sensors.py +0 -0
  116. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_sim2real.py +0 -0
  117. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_sys_composer.py +0 -0
  118. {imt_ring-1.6.17 → imt_ring-1.6.19}/tests/test_train.py +0 -0
  119. {imt_ring-1.6.17 → imt_ring-1.6.19}/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.17
3
+ Version: 1.6.19
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.17"
7
+ version = "1.6.19"
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.17
3
+ Version: 1.6.19
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
@@ -86,6 +86,7 @@ src/ring/utils/backend.py
86
86
  src/ring/utils/batchsize.py
87
87
  src/ring/utils/colab.py
88
88
  src/ring/utils/dataloader.py
89
+ src/ring/utils/dataloader_torch.py
89
90
  src/ring/utils/hdf5.py
90
91
  src/ring/utils/normalizer.py
91
92
  src/ring/utils/path.py
@@ -3,6 +3,7 @@ from functools import partial
3
3
  import os
4
4
  from pathlib import Path
5
5
  import pickle
6
+ import shutil
6
7
  import time
7
8
  from typing import Optional, Protocol
8
9
  import warnings
@@ -107,7 +108,7 @@ class WandbLogger(MixinLogger):
107
108
  wandb.log(data)
108
109
 
109
110
  def log_params(self, path: str):
110
- wandb.save(path, policy="now")
111
+ self.wandb_save(path)
111
112
 
112
113
  def log_video(
113
114
  self,
@@ -117,7 +118,7 @@ class WandbLogger(MixinLogger):
117
118
  step: Optional[int] = None,
118
119
  ):
119
120
  # TODO >>>
120
- wandb.save(path, policy="now")
121
+ self.wandb_save(path)
121
122
  return
122
123
  # <<<
123
124
  data = {"video": wandb.Video(path, caption=caption, fps=fps)}
@@ -127,10 +128,10 @@ class WandbLogger(MixinLogger):
127
128
 
128
129
  def log_image(self, path: str, caption: Optional[str] = None):
129
130
  # wandb.log({"image": wandb.Image(path, caption=caption)})
130
- wandb.save(path, policy="now")
131
+ self.wandb_save(path)
131
132
 
132
133
  def log_txt(self, path: str, wait: bool = True):
133
- wandb.save(path, policy="now")
134
+ self.wandb_save(path)
134
135
  # TODO: `wandb` is not async at all?
135
136
  if wait:
136
137
  time.sleep(3)
@@ -138,6 +139,23 @@ class WandbLogger(MixinLogger):
138
139
  def close(self):
139
140
  wandb.run.finish()
140
141
 
142
+ @staticmethod
143
+ def wandb_save(path):
144
+ if wandb.run is not None and wandb.run.settings._offline:
145
+ # Create a dedicated directory in the WandB run directory to store copies
146
+ # of files
147
+ destination_dir = os.path.join(wandb.run.dir, "copied_files")
148
+ os.makedirs(destination_dir, exist_ok=True)
149
+
150
+ # Copy the file to this new location
151
+ copied_file_path = os.path.join(destination_dir, os.path.basename(path))
152
+ shutil.copy2(path, copied_file_path)
153
+
154
+ # Use wandb.save to save the copied file (now a true copy)
155
+ wandb.save(copied_file_path)
156
+ else:
157
+ wandb.save(path, policy="now")
158
+
141
159
 
142
160
  def _flatten_convert_filter_nested_dict(
143
161
  metrices: NestedDict, filter_nan_inf: bool = True
@@ -0,0 +1,62 @@
1
+ import os
2
+
3
+ import jax
4
+ import torch
5
+ from torch.utils.data import DataLoader
6
+ from torch.utils.data import Dataset
7
+ from tree_utils import PyTree
8
+
9
+ from ring.utils import parse_path
10
+ from ring.utils import pickle_load
11
+
12
+
13
+ class FolderOfPickleFilesDataset(Dataset):
14
+ def __init__(self, path, transform=None):
15
+ self.files = self.listdir(path)
16
+ self.transform = transform
17
+ self.N = len(self.files)
18
+
19
+ def __len__(self):
20
+ return self.N
21
+
22
+ def __getitem__(self, idx: int):
23
+ element = pickle_load(self.files[idx])
24
+ if self.transform is not None:
25
+ element = self.transform(element)
26
+ return element
27
+
28
+ @staticmethod
29
+ def listdir(path: str) -> list:
30
+ return [parse_path(path, file) for file in os.listdir(path)]
31
+
32
+
33
+ def dataset_to_generator(
34
+ dataset: Dataset,
35
+ batch_size: int,
36
+ shuffle=True,
37
+ seed: int = 1,
38
+ **kwargs,
39
+ ):
40
+ torch.manual_seed(seed)
41
+
42
+ dl = DataLoader(
43
+ dataset,
44
+ batch_size=batch_size,
45
+ shuffle=shuffle,
46
+ multiprocessing_context="spawn" if kwargs.get("num_workers", 0) > 0 else None,
47
+ **kwargs,
48
+ )
49
+ dl_iter = iter(dl)
50
+
51
+ def to_numpy(tree: PyTree[torch.Tensor]):
52
+ return jax.tree_map(lambda tensor: tensor.numpy(), tree)
53
+
54
+ def generator(_):
55
+ nonlocal dl, dl_iter
56
+ try:
57
+ return to_numpy(next(dl_iter))
58
+ except StopIteration:
59
+ dl_iter = iter(dl)
60
+ return to_numpy(next(dl_iter))
61
+
62
+ return generator
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