Skip to content

Commit eb005b6

Browse files
And even more small helper methods
1 parent 0332e94 commit eb005b6

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

src/easydynamics/experiment/experiment.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,18 @@ def load_hdf5(self, filename: str, name: str):
2626

2727
# TODO: Add checks of dimensions etc.
2828

29+
def save_hdf5(self, name: str, filename: str):
30+
"""Save a single dataset to HDF5."""
31+
sc.io.to_hdf5(self._data[name], filename)
32+
33+
def save_all_hdf5(self, folder: str):
34+
"""Save all datasets to individual HDF5 files in a folder."""
35+
import os
36+
37+
os.makedirs(folder, exist_ok=True)
38+
for name, data in self._data.items():
39+
sc.io.to_hdf5(data, os.path.join(folder, f"{name}.h5"))
40+
2941
def append_data(self, new_data: sc.DataArray, name: str):
3042
"""Append data with a name."""
3143
self._data[name] = new_data
@@ -56,6 +68,19 @@ def plot_data(self, name: str = None):
5668
fig = pp.plot(data.transpose(), title=f"{name}")
5769
display(fig)
5870

71+
# Helpful methods
72+
def items(self):
73+
"""Return (name, data) pairs, like dict.items()."""
74+
return self._data.items()
75+
76+
def values(self):
77+
"""Return all DataArrays, like dict.values()."""
78+
return self._data.values()
79+
80+
def keys(self):
81+
"""Return all dataset names, like dict.keys()."""
82+
return self._data.keys()
83+
5984
# Dunder methods
6085
def __getitem__(self, key: str):
6186
"""Allow dictionary-style access: my_exp['vanadium']"""
@@ -75,3 +100,10 @@ def __contains__(self, key: str):
75100

76101
def __repr__(self):
77102
return f"Experiment(name = {self.name}, datasets={list(self._data.keys())})"
103+
104+
def __str__(self):
105+
return self.__repr__()
106+
107+
def __iter__(self):
108+
"""Iterate over dataset names."""
109+
return iter(self._data)

0 commit comments

Comments
 (0)