diff --git a/docs/qudi_hira_analysis/data_handler.html b/docs/qudi_hira_analysis/data_handler.html index d77ae81..c543e02 100644 --- a/docs/qudi_hira_analysis/data_handler.html +++ b/docs/qudi_hira_analysis/data_handler.html @@ -183,15 +183,40 @@

Module qudi_hira_analysis.data_handler

# i.e. space because last, └── , above so no more | yield from self.__tree(path, prefix=prefix + extension) - def data_folder_tree(self): - """ Print a tree of the data folder. """ - for line in self.__tree(self.data_folder_path): - print(line) + def __print_or_return_tree(self, folder: Path, print_tree: bool) -> str | None: + """ Print or return a tree of the data and figure folders. """ + if print_tree: + for line in self.__tree(folder): + print(line) + else: + tree = "" + for line in self.__tree(folder): + tree += line + "\n" + return tree + + def data_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the data folder. - def figure_folder_tree(self): - """ Print a tree of the figure folder. """ - for line in self.__tree(self.figure_folder_path): - print(line) + Args: + print_tree: Whether to print the tree or return it as a string (default: True). + + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.data_folder_path, print_tree=print_tree) + + def figure_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the figure folder. + + Args: + print_tree: Whether to print the tree or return it as a string (default: True). + + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.figure_folder_path, print_tree=print_tree) def _get_measurement_filepaths( self, @@ -234,7 +259,7 @@

Module qudi_hira_analysis.data_handler

pulsed_measurement_data: dict[str: MeasurementDataclass] = {} - for ts in timestamps: + for idx, ts in enumerate(timestamps): pm, lp, rt = None, None, None for filepath in filtered_filepaths: @@ -250,6 +275,9 @@

Module qudi_hira_analysis.data_handler

if lp and pm and rt: break + if not (lp and pm and rt): + raise IOError(f"File '{filtered_filepaths[idx]}' is not a valid pulsed measurement.") + pulsed_measurement_data[ts] = ( MeasurementDataclass( timestamp=datetime.datetime.strptime(ts, self.timestamp_format_str), @@ -498,15 +526,40 @@

Examples

# i.e. space because last, └── , above so no more | yield from self.__tree(path, prefix=prefix + extension) - def data_folder_tree(self): - """ Print a tree of the data folder. """ - for line in self.__tree(self.data_folder_path): - print(line) + def __print_or_return_tree(self, folder: Path, print_tree: bool) -> str | None: + """ Print or return a tree of the data and figure folders. """ + if print_tree: + for line in self.__tree(folder): + print(line) + else: + tree = "" + for line in self.__tree(folder): + tree += line + "\n" + return tree + + def data_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the data folder. + + Args: + print_tree: Whether to print the tree or return it as a string (default: True). + + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.data_folder_path, print_tree=print_tree) + + def figure_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the figure folder. + + Args: + print_tree: Whether to print the tree or return it as a string (default: True). - def figure_folder_tree(self): - """ Print a tree of the figure folder. """ - for line in self.__tree(self.figure_folder_path): - print(line) + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.figure_folder_path, print_tree=print_tree) def _get_measurement_filepaths( self, @@ -549,7 +602,7 @@

Examples

pulsed_measurement_data: dict[str: MeasurementDataclass] = {} - for ts in timestamps: + for idx, ts in enumerate(timestamps): pm, lp, rt = None, None, None for filepath in filtered_filepaths: @@ -565,6 +618,9 @@

Examples

if lp and pm and rt: break + if not (lp and pm and rt): + raise IOError(f"File '{filtered_filepaths[idx]}' is not a valid pulsed measurement.") + pulsed_measurement_data[ts] = ( MeasurementDataclass( timestamp=datetime.datetime.strptime(ts, self.timestamp_format_str), @@ -703,33 +759,67 @@

Ancestors

Methods

-def data_folder_tree(self) +def data_folder_tree(self, print_tree: bool = True) ‑> str | None
-

Print a tree of the data folder.

+

Print or return a string tree of the data folder.

+

Args

+
+
print_tree
+
Whether to print the tree or return it as a string (default: True).
+
+

Returns

+
+
str
+
The tree as a string if `print_tree is False.
+
Expand source code -
def data_folder_tree(self):
-    """ Print a tree of the data folder. """
-    for line in self.__tree(self.data_folder_path):
-        print(line)
+
def data_folder_tree(self, print_tree: bool = True) -> str | None:
+    """
+    Print or return a string tree of the data folder.
+
+    Args:
+        print_tree: Whether to print the tree or return it as a string (default: True).
+
+    Returns:
+        str: The tree as a string if `print_tree is False.
+    """
+    return self.__print_or_return_tree(self.data_folder_path, print_tree=print_tree)
-def figure_folder_tree(self) +def figure_folder_tree(self, print_tree: bool = True) ‑> str | None
-

Print a tree of the figure folder.

+

Print or return a string tree of the figure folder.

+

Args

+
+
print_tree
+
Whether to print the tree or return it as a string (default: True).
+
+

Returns

+
+
str
+
The tree as a string if `print_tree is False.
+
Expand source code -
def figure_folder_tree(self):
-    """ Print a tree of the figure folder. """
-    for line in self.__tree(self.figure_folder_path):
-        print(line)
+
def figure_folder_tree(self, print_tree: bool = True) -> str | None:
+    """
+    Print or return a string tree of the figure folder.
+
+    Args:
+        print_tree: Whether to print the tree or return it as a string (default: True).
+
+    Returns:
+        str: The tree as a string if `print_tree is False.
+    """
+    return self.__print_or_return_tree(self.figure_folder_path, print_tree=print_tree)
diff --git a/docs/qudi_hira_analysis/index.html b/docs/qudi_hira_analysis/index.html index 7c776aa..d50bae2 100644 --- a/docs/qudi_hira_analysis/index.html +++ b/docs/qudi_hira_analysis/index.html @@ -2000,15 +2000,40 @@

Examples

# i.e. space because last, └── , above so no more | yield from self.__tree(path, prefix=prefix + extension) - def data_folder_tree(self): - """ Print a tree of the data folder. """ - for line in self.__tree(self.data_folder_path): - print(line) + def __print_or_return_tree(self, folder: Path, print_tree: bool) -> str | None: + """ Print or return a tree of the data and figure folders. """ + if print_tree: + for line in self.__tree(folder): + print(line) + else: + tree = "" + for line in self.__tree(folder): + tree += line + "\n" + return tree + + def data_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the data folder. + + Args: + print_tree: Whether to print the tree or return it as a string (default: True). + + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.data_folder_path, print_tree=print_tree) + + def figure_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the figure folder. - def figure_folder_tree(self): - """ Print a tree of the figure folder. """ - for line in self.__tree(self.figure_folder_path): - print(line) + Args: + print_tree: Whether to print the tree or return it as a string (default: True). + + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.figure_folder_path, print_tree=print_tree) def _get_measurement_filepaths( self, @@ -2051,7 +2076,7 @@

Examples

pulsed_measurement_data: dict[str: MeasurementDataclass] = {} - for ts in timestamps: + for idx, ts in enumerate(timestamps): pm, lp, rt = None, None, None for filepath in filtered_filepaths: @@ -2067,6 +2092,9 @@

Examples

if lp and pm and rt: break + if not (lp and pm and rt): + raise IOError(f"File '{filtered_filepaths[idx]}' is not a valid pulsed measurement.") + pulsed_measurement_data[ts] = ( MeasurementDataclass( timestamp=datetime.datetime.strptime(ts, self.timestamp_format_str), @@ -2205,33 +2233,67 @@

Ancestors

Methods

-def data_folder_tree(self) +def data_folder_tree(self, print_tree: bool = True) ‑> str | None
-

Print a tree of the data folder.

+

Print or return a string tree of the data folder.

+

Args

+
+
print_tree
+
Whether to print the tree or return it as a string (default: True).
+
+

Returns

+
+
str
+
The tree as a string if `print_tree is False.
+
Expand source code -
def data_folder_tree(self):
-    """ Print a tree of the data folder. """
-    for line in self.__tree(self.data_folder_path):
-        print(line)
+
def data_folder_tree(self, print_tree: bool = True) -> str | None:
+    """
+    Print or return a string tree of the data folder.
+
+    Args:
+        print_tree: Whether to print the tree or return it as a string (default: True).
+
+    Returns:
+        str: The tree as a string if `print_tree is False.
+    """
+    return self.__print_or_return_tree(self.data_folder_path, print_tree=print_tree)
-def figure_folder_tree(self) +def figure_folder_tree(self, print_tree: bool = True) ‑> str | None
-

Print a tree of the figure folder.

+

Print or return a string tree of the figure folder.

+

Args

+
+
print_tree
+
Whether to print the tree or return it as a string (default: True).
+
+

Returns

+
+
str
+
The tree as a string if `print_tree is False.
+
Expand source code -
def figure_folder_tree(self):
-    """ Print a tree of the figure folder. """
-    for line in self.__tree(self.figure_folder_path):
-        print(line)
+
def figure_folder_tree(self, print_tree: bool = True) -> str | None:
+    """
+    Print or return a string tree of the figure folder.
+
+    Args:
+        print_tree: Whether to print the tree or return it as a string (default: True).
+
+    Returns:
+        str: The tree as a string if `print_tree is False.
+    """
+    return self.__print_or_return_tree(self.figure_folder_path, print_tree=print_tree)
diff --git a/qudi_hira_analysis/data_handler.py b/qudi_hira_analysis/data_handler.py index 37078f4..3311e14 100644 --- a/qudi_hira_analysis/data_handler.py +++ b/qudi_hira_analysis/data_handler.py @@ -155,15 +155,40 @@ def __tree(self, dir_path: Path, prefix: str = ''): # i.e. space because last, └── , above so no more | yield from self.__tree(path, prefix=prefix + extension) - def data_folder_tree(self): - """ Print a tree of the data folder. """ - for line in self.__tree(self.data_folder_path): - print(line) + def __print_or_return_tree(self, folder: Path, print_tree: bool) -> str | None: + """ Print or return a tree of the data and figure folders. """ + if print_tree: + for line in self.__tree(folder): + print(line) + else: + tree = "" + for line in self.__tree(folder): + tree += line + "\n" + return tree + + def data_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the data folder. + + Args: + print_tree: Whether to print the tree or return it as a string (default: True). - def figure_folder_tree(self): - """ Print a tree of the figure folder. """ - for line in self.__tree(self.figure_folder_path): - print(line) + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.data_folder_path, print_tree=print_tree) + + def figure_folder_tree(self, print_tree: bool = True) -> str | None: + """ + Print or return a string tree of the figure folder. + + Args: + print_tree: Whether to print the tree or return it as a string (default: True). + + Returns: + str: The tree as a string if `print_tree is False. + """ + return self.__print_or_return_tree(self.figure_folder_path, print_tree=print_tree) def _get_measurement_filepaths( self, @@ -206,7 +231,7 @@ def __load_qudi_measurements_into_dataclass( pulsed_measurement_data: dict[str: MeasurementDataclass] = {} - for ts in timestamps: + for idx, ts in enumerate(timestamps): pm, lp, rt = None, None, None for filepath in filtered_filepaths: @@ -222,6 +247,9 @@ def __load_qudi_measurements_into_dataclass( if lp and pm and rt: break + if not (lp and pm and rt): + raise IOError(f"File '{filtered_filepaths[idx]}' is not a valid pulsed measurement.") + pulsed_measurement_data[ts] = ( MeasurementDataclass( timestamp=datetime.datetime.strptime(ts, self.timestamp_format_str), diff --git a/tests/test_loading.py b/tests/test_loading.py index a776fbb..7b50fe0 100644 --- a/tests/test_loading.py +++ b/tests/test_loading.py @@ -25,6 +25,10 @@ def test_pulsedmeasurement_load(self): self.assertAlmostEqual(odmr.data["Controlled variable(Hz)"][0], 2.850000000000000e+09) self.assertAlmostEqual(odmr.data["Signal"][0], 1.091035609573383e+00) + def test_pulsedmeasurement_load_with_fail(self): + with self.assertRaises(IOError): + self.dh.load_measurements(measurement_str="ramsey", pulsed=True) + def test_spectrometer_load(self): spectrometry = self.dh.load_measurements(measurement_str="Spectrometry") spectrum = spectrometry['20230306-2324-19'] @@ -115,3 +119,11 @@ def test_measurement_dataclass(self): self.assertIn("Approx. measurement time (s)", odmr.pulsed.measurement.params) self.assertEqual(odmr.get_param_from_filename(unit="dBm"), 22.0) + + def test_data_folder_tree(self): + tree = self.dh.data_folder_tree(print_tree=False) + self.assertIn("PulsedMeasurement", tree) + + def test_figure_folder_tree(self): + tree = self.dh.figure_folder_tree(print_tree=False) + self.assertEqual("", tree) \ No newline at end of file