@@ -47,14 +47,11 @@ def __getitem__(self, slicer):
4747 return h5f [self .dataset_name ][slicer ]
4848
4949
50- class H5Geometry (ps .TriangularMesh ):
50+ class H5Geometry (ps .TriMeshFamily ):
5151 """Simple Geometry file structure that combines a single topology
5252 with one or more coordinate sets
5353 """
5454
55- def __init__ (self , meshes ):
56- self ._meshes = meshes
57-
5855 @classmethod
5956 def from_filename (klass , pathlike ):
6057 meshes = {}
@@ -65,33 +62,11 @@ def from_filename(klass, pathlike):
6562 return klass (meshes )
6663
6764 def to_filename (self , pathlike ):
68- topology = None
69- coordinates = {}
70- for name , mesh in self ._meshes .items ():
71- coords , faces = mesh
72- if topology is None :
73- topology = faces
74- elif not np .array_equal (faces , topology ):
75- raise ValueError ('Inconsistent topology' )
76- coordinates [name ] = coords
77-
7865 with h5 .File (pathlike , 'w' ) as h5f :
79- h5f .create_dataset ('/topology' , data = topology )
80- for name , coord in coordinates .items ():
66+ h5f .create_dataset ('/topology' , data = self . get_triangles () )
67+ for name , coord in self . _coords .items ():
8168 h5f .create_dataset (f'/coordinates/{ name } ' , data = coord )
8269
83- def get_coords (self , name = None ):
84- if name is None :
85- name = next (iter (self ._meshes ))
86- coords , _ = self ._meshes [name ]
87- return coords
88-
89- def get_triangles (self , name = None ):
90- if name is None :
91- name = next (iter (self ._meshes ))
92- _ , triangles = self ._meshes [name ]
93- return triangles
94-
9570
9671class FSGeometryProxy :
9772 def __init__ (self , pathlike ):
@@ -145,10 +120,7 @@ def triangles(self):
145120 return ap
146121
147122
148- class FreeSurferHemisphere (ps .TriangularMesh ):
149- def __init__ (self , meshes ):
150- self ._meshes = meshes
151-
123+ class FreeSurferHemisphere (ps .TriMeshFamily ):
152124 @classmethod
153125 def from_filename (klass , pathlike ):
154126 path = Path (pathlike )
@@ -174,24 +146,6 @@ def from_filename(klass, pathlike):
174146 hemi ._default = default
175147 return hemi
176148
177- def get_coords (self , name = None ):
178- if name is None :
179- name = self ._default
180- return self ._meshes [name ].coords
181-
182- def get_triangles (self , name = None ):
183- if name is None :
184- name = self ._default
185- return self ._meshes [name ].triangles
186-
187- @property
188- def n_coords (self ):
189- return self ._meshes [self ._default ].vnum
190-
191- @property
192- def n_triangles (self ):
193- return self ._meshes [self ._default ].fnum
194-
195149
196150def test_FreeSurferHemisphere ():
197151 lh = FreeSurferHemisphere .from_filename (FS_DATA / 'fsaverage/surf/lh.white' )
@@ -206,6 +160,6 @@ def test_make_H5Geometry(tmp_path):
206160 h5geo .to_filename (tmp_path / 'geometry.h5' )
207161
208162 rt_h5geo = H5Geometry .from_filename (tmp_path / 'geometry.h5' )
209- assert set (h5geo ._meshes ) == set (rt_h5geo ._meshes )
163+ assert set (h5geo ._coords ) == set (rt_h5geo ._coords )
210164 assert np .array_equal (lh .get_coords ('white' ), rt_h5geo .get_coords ('white' ))
211165 assert np .array_equal (lh .get_triangles (), rt_h5geo .get_triangles ())
0 commit comments