@@ -40,12 +40,24 @@ class Geometry:
4040
4141 step : Step
4242
43+ @cached_property
44+ def _maybe_header (self ) -> dict [str , Any ] | None :
45+ if self .step .isnap is None :
46+ return None
47+ sdat = self .step .sdat
48+ binfiles = sdat ._binfiles_set (self .step .isnap )
49+ header = None
50+ if binfiles :
51+ header = stagyyparsers .field_header (binfiles .pop ())
52+ elif sdat .hdf5 :
53+ header = stagyyparsers .read_geom_h5 (sdat ._dataxmf , self .step .isnap )
54+ return header if header else None
55+
4356 @cached_property
4457 def _header (self ) -> Mapping [str , Any ]:
45- hdr = self .step ._header
46- if hdr is None :
58+ if self ._maybe_header is None :
4759 raise error .NoGeomError (self .step )
48- return hdr
60+ return self . _maybe_header
4961
5062 def _scale_radius_mo (self , radius : NDArray ) -> NDArray :
5163 """Rescale radius for evolving MO runs."""
@@ -356,7 +368,8 @@ def _get_raw_data(self, name: str) -> tuple[list[str], Any]:
356368 sdat = self .step .sdat
357369 if filestem in phyvars .SFIELD_FILES_H5 :
358370 xmff = sdat ._botxmf if name .endswith ("bot" ) else sdat ._topxmf
359- header = self .step ._header
371+ header = self .step .geom ._maybe_header
372+ assert header is not None
360373 else :
361374 xmff = sdat ._dataxmf
362375 header = None
@@ -612,18 +625,6 @@ def __repr__(self) -> str:
612625 else :
613626 return f"{ self .sdat !r} .steps[{ self .istep } ]"
614627
615- @cached_property
616- def _header (self ) -> dict [str , Any ] | None :
617- if self .isnap is None :
618- return None
619- binfiles = self .sdat ._binfiles_set (self .isnap )
620- header = None
621- if binfiles :
622- header = stagyyparsers .field_header (binfiles .pop ())
623- elif self .sdat .hdf5 :
624- header = stagyyparsers .read_geom_h5 (self .sdat ._dataxmf , self .isnap )
625- return header if header else None
626-
627628 @cached_property
628629 def geom (self ) -> Geometry :
629630 """Geometry information.
0 commit comments