def _make_surface(surface_type): result = make_surface(surface_type) if result is not None: return result exception_str = "Could not determine surface type (selected option %s)" % surface_type raise LaunchException(exception_str)
def _parse_surface(self, data_arrays, data_arrays_part2, surface_type, should_center): meta_dict = self._get_meta_dict(data_arrays[0]) anatomical_structure_primary = meta_dict.get(self.ASP_ATTR) gid = meta_dict.get(self.UNIQUE_ID_ATTR) subject = meta_dict.get(self.SUBJECT_ATTR) title = meta_dict.get(self.NAME_ATTR) # Now try to determine what type of surface we have # If a surface type is not explicitly given we use the type specified in the metadata if surface_type == OPTION_READ_METADATA: surface_type = anatomical_structure_primary if surface_type is None: raise ParseException("Please specify the type of the surface") surface = make_surface(surface_type) if surface is None: raise ParseException("Could not determine surface type! %s" % surface_type) # Now fill TVB data type with metadata if gid is not None: gid = gid.replace("{", "").replace("}", "") surface.gid = gid if subject is not None: surface.subject = subject if title is not None: surface.title = title surface.storage_path = self.storage_path surface.zero_based_triangles = True # Now fill TVB data type with geometry data vertices = data_arrays[0].data triangles = data_arrays[1].data vertices_in_lh = len(vertices) # If a second file is present append that data if data_arrays_part2 is not None: # offset the indices offset = len(vertices) vertices = np.vstack([vertices, data_arrays_part2[0].data]) triangles = np.vstack( [triangles, offset + data_arrays_part2[1].data]) if should_center: vertices = center_vertices(vertices) # set hemisphere mask if cortex if isinstance(surface, CorticalSurface): # if there was a 2nd file then len(vertices) != vertices_in_lh surface.hemisphere_mask = np.zeros(len(vertices), dtype=np.bool) surface.hemisphere_mask[vertices_in_lh:] = 1 surface.vertices = vertices surface.triangles = triangles return surface
def _parse_surface(self, data_arrays, data_arrays_part2, surface_type, should_center): meta_dict = self._get_meta_dict(data_arrays[0]) anatomical_structure_primary = meta_dict.get(self.ASP_ATTR) gid = meta_dict.get(self.UNIQUE_ID_ATTR) subject = meta_dict.get(self.SUBJECT_ATTR) title = meta_dict.get(self.NAME_ATTR) # Now try to determine what type of surface we have # If a surface type is not explicitly given we use the type specified in the metadata if surface_type == OPTION_READ_METADATA: surface_type = anatomical_structure_primary if surface_type is None: raise ParseException("Please specify the type of the surface") surface = make_surface(surface_type) if surface is None: raise ParseException("Could not determine surface type! %s" % surface_type) # Now fill TVB data type with metadata if gid is not None: gid = gid.replace("{", "").replace("}", "") surface.gid = gid if subject is not None: surface.subject = subject if title is not None: surface.title = title surface.storage_path = self.storage_path surface.set_operation_id(self.operation_id) surface.zero_based_triangles = True # Now fill TVB data type with geometry data vertices = data_arrays[0].data triangles = data_arrays[1].data vertices_in_lh = len(vertices) # If a second file is present append that data if data_arrays_part2 is not None: # offset the indices offset = len(vertices) vertices = np.vstack([vertices, data_arrays_part2[0].data]) triangles = np.vstack([triangles, offset + data_arrays_part2[1].data]) if should_center: vertices = center_vertices(vertices) # set hemisphere mask if cortex if isinstance(surface, CorticalSurface): # if there was a 2nd file then len(vertices) != vertices_in_lh surface.hemisphere_mask = np.zeros(len(vertices), dtype=np.bool) surface.hemisphere_mask[vertices_in_lh:] = 1 surface.vertices = vertices surface.triangles = triangles return surface
def launch(self, view_model): # type: (ObjSurfaceImporterModel) -> [SurfaceIndex] """ Execute import operations: """ try: surface = make_surface(view_model.surface_type) if surface is None: raise ParseException("Could not determine surface type! %s" % view_model.surface_type) surface.zero_based_triangles = True with open(view_model.data_file) as f: obj = ObjSurface(f) if view_model.should_center: vertices = center_vertices(obj.vertices) else: vertices = obj.vertices surface.vertices = vertices surface.triangles = obj.triangles if obj.have_normals: self.log.debug("OBJ came with normals included") surface.vertex_normals = obj.normals else: self.log.warning( "OBJ came without normals. We will try to compute them...") surface.number_of_vertices = surface.vertices.shape[0] surface.number_of_triangles = surface.triangles.shape[0] surface.compute_triangle_normals() surface.compute_vertex_normals() validation_result = surface.validate() if validation_result.warnings: self.add_operation_additional_info(validation_result.summary()) return h5.store_complete(surface, self.storage_path) except ParseException as excep: self.log.exception(excep) raise LaunchException(excep)
def launch(self, surface_type, data_file, should_center=False): """ Execute import operations: """ try: surface = make_surface(surface_type) if surface is None: raise ParseException("Could not determine surface type! %s" % surface_type) surface.storage_path = self.storage_path surface.set_operation_id(self.operation_id) surface.zero_based_triangles = True with open(data_file) as f: obj = ObjSurface(f) if should_center: vertices = center_vertices(obj.vertices) else: vertices = obj.vertices surface.vertices = vertices surface.triangles = obj.triangles if obj.have_normals: self.log.debug("OBJ came with normals included") surface.vertex_normals = obj.normals else: self.log.warning( "OBJ came without normals. We will try to compute them...") validation_result = surface.validate() if validation_result.warnings: self.add_operation_additional_info(validation_result.summary()) return [surface] except ParseException, excep: self.log.exception(excep) raise LaunchException(excep)
def launch(self, surface_type, data_file, should_center=False): """ Execute import operations: """ try: surface = make_surface(surface_type) if surface is None: raise ParseException("Could not determine surface type! %s" % surface_type) surface.storage_path = self.storage_path surface.set_operation_id(self.operation_id) surface.zero_based_triangles = True with open(data_file) as f: obj = ObjSurface(f) if should_center: vertices = center_vertices(obj.vertices) else: vertices = obj.vertices surface.vertices = vertices surface.triangles = obj.triangles if obj.have_normals: self.log.debug("OBJ came with normals included") surface.vertex_normals = obj.normals else: self.log.warning("OBJ came without normals. We will try to compute them...") validation_result = surface.validate() if validation_result.warnings: self.add_operation_additional_info(validation_result.summary()) return [surface] except ParseException, excep: self.log.exception(excep) raise LaunchException(excep)