diff --git a/deepdog/results/__init__.py b/deepdog/results/__init__.py index 928819a..252638b 100644 --- a/deepdog/results/__init__.py +++ b/deepdog/results/__init__.py @@ -11,7 +11,8 @@ _logger = logging.getLogger(__name__) FILENAME_REGEX = r"(?P\d{8}-\d{6})-(?P.*)\.realdata\.fast_filter\.bayesrun\.csv" MODEL_REGEXES = [ - r"geom_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)-orientation_(?Pfree|fixedxy|fixedz)-dipole_count_(?P\d+)_(?P\w*)" + r"geom_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)-orientation_(?Pfree|fixedxy|fixedz)-dipole_count_(?P\d+)_(?P\w*)", + r"geom_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)_(?P-?\d+)-magnitude_(?P\d*\.?\d+)-orientation_(?Pfree|fixedxy|fixedz)-dipole_count_(?P\d+)_(?P\w*)", ] FILE_SLUG_REGEXES = [ @@ -27,7 +28,6 @@ class BayesrunOutputFilename: path: pathlib.Path -@dataclasses.dataclass class BayesrunColumnParsed: """ class for parsing a bayesrun while pulling certain special fields out @@ -38,10 +38,21 @@ class BayesrunColumnParsed: self.model_field_dict = { k: v for k, v in groupdict.items() if k != "field_name" } + self._groupdict_str = repr(groupdict) def __str__(self): return f"BayesrunColumnParsed[{self.column_field}: {self.model_field_dict}]" + def __repr__(self): + return f"BayesrunColumnParsed({self._groupdict_str})" + + def __eq__(self, other): + if isinstance(other, BayesrunColumnParsed): + return (self.column_field == other.column_field) and ( + self.model_field_dict == other.model_field_dict + ) + return NotImplemented + @dataclasses.dataclass class BayesrunModelResult: diff --git a/tests/results/test_column_results.py b/tests/results/test_column_results.py index f32955f..66bccca 100644 --- a/tests/results/test_column_results.py +++ b/tests/results/test_column_results.py @@ -7,6 +7,7 @@ def test_parse_groupdict(): ) parsed = deepdog.results._parse_bayesrun_column(example_column_name) + assert parsed is not None expected = deepdog.results.BayesrunColumnParsed( { "xmin": "-20", @@ -23,6 +24,30 @@ def test_parse_groupdict(): assert parsed == expected +def test_parse_groupdict_with_magnitude(): + example_column_name = ( + "geom_-20_20_-10_10_0_5-magnitude_3.5-orientation_free-dipole_count_100_success" + ) + + parsed = deepdog.results._parse_bayesrun_column(example_column_name) + assert parsed is not None + expected = deepdog.results.BayesrunColumnParsed( + { + "xmin": "-20", + "xmax": "20", + "ymin": "-10", + "ymax": "10", + "zmin": "0", + "zmax": "5", + "orientation": "free", + "avg_filled": "100", + "log_magnitude": "3.5", + "field_name": "success", + } + ) + assert parsed == expected + + # def test_parse_no_match_column_name(): # parsed = deepdog.results.parse_bayesrun_column("There's nothing here") # assert parsed is None