def check_face_dimensions_size(self, ds): level = BaseCheck.HIGH score = 0 out_of = 1 messages = [] desc = 'grid\'s face_dimensions attribute must be of valid length' # DEPENDENCIES # Skip if no topology_dimension dep = self.check_topology_dimension(ds) if not dep or dep.value[0] != dep.value[1]: return None try: grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0] if not hasattr(grid, 'face_dimensions'): raise Sge('"face_dimensions" attribute does not exists on grid') face_dims = self.METHODS_REGEX.findall(grid.face_dimensions) if len(face_dims) != grid.topology_dimension: m = ('length of "face_dimensions" attribute must be equal to ' '"topology_dimension" attribute') raise Sge(m) except Sge as sge: logger.debug(sge) messages.append(str(sge)) else: score += 1 return self.make_result(level, score, out_of, desc, messages)
def check_face_dimensions_size(self, ds): level = BaseCheck.HIGH score = 0 out_of = 1 messages = [] desc = 'grid\'s face_dimensions attribute must be of valid length' # DEPENDENCIES # Skip if no topology_dimension dep = self.check_topology_dimension(ds) if not dep or dep.value[0] != dep.value[1]: return None try: grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0] if not hasattr(grid, 'face_dimensions'): raise Sge( '"face_dimensions" attribute does not exists on grid') face_dims = self.METHODS_REGEX.findall(grid.face_dimensions) if len(face_dims) != grid.topology_dimension: m = ('length of "face_dimensions" attribute must be equal to ' '"topology_dimension" attribute') raise Sge(m) except Sge as sge: logger.debug(sge) messages.append(str(sge)) else: score += 1 return self.make_result(level, score, out_of, desc, messages)
def check_face_dimensions_dimensions(self, ds): level = BaseCheck.HIGH score = 0 out_of = 1 messages = [] desc = 'grid\'s face_dimensions members must match actual dimensions' # DEPENDENCIES # Skip if no topology_dimension dep = self.check_topology_dimension(ds) if not dep or dep.value[0] != dep.value[1]: return None # Skip if size doesn't match topology_dimension dep = self.check_face_dimensions_size(ds) if not dep or dep.value[0] != dep.value[1]: return None try: grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0] if not hasattr(grid, 'face_dimensions'): raise Sge('Could not parse the "face_dimensions" attribute') face_dims = self.METHODS_REGEX.findall(grid.face_dimensions) if len(face_dims) != grid.topology_dimension: raise Sge('Could not parse the "face_dimensions" attribute') # face_dimension1: node_dimension1 (padding: type1) for member in face_dims: fn, pad = member # face_dimension1: node_dimension1 fd, nd = fn.split(':') if fd.strip() not in ds.dimensions: raise Sge('"face" dimension "{}" not found'.format(fd)) if fd.strip() not in ds.dimensions: raise Sge('"node" dimension "{}" not found'.format(nd)) # padding: type1 pad_str, pad_type = pad.split(':') if pad_str.strip().lower() != 'padding': raise Sge( 'key must be equal to "padding", got "{}"'.format( pad_str.strip())) if pad_type.strip().lower() not in self.PADDING_TYPES: raise Sge( 'padding type "{}"" not allowed. Must be in {}'.format( pad_type.strip(), self.PADDING_TYPES)) except Sge as sge: logger.debug(sge) messages.append(str(sge)) else: score += 1 return self.make_result(level, score, out_of, desc, messages)
def check_face_dimensions_dimensions(self, ds): level = BaseCheck.HIGH score = 0 out_of = 1 messages = [] desc = 'grid\'s face_dimensions members must match actual dimensions' # DEPENDENCIES # Skip if no topology_dimension dep = self.check_topology_dimension(ds) if not dep or dep.value[0] != dep.value[1]: return None # Skip if size doesn't match topology_dimension dep = self.check_face_dimensions_size(ds) if not dep or dep.value[0] != dep.value[1]: return None try: grid = ds.get_variables_by_attributes(cf_role='grid_topology')[0] if not hasattr(grid, 'face_dimensions'): raise Sge('Could not parse the "face_dimensions" attribute') face_dims = self.METHODS_REGEX.findall(grid.face_dimensions) if len(face_dims) != grid.topology_dimension: raise Sge('Could not parse the "face_dimensions" attribute') # face_dimension1: node_dimension1 (padding: type1) for member in face_dims: fn, pad = member # face_dimension1: node_dimension1 fd, nd = fn.split(':') if fd.strip() not in ds.dimensions: raise Sge('"face" dimension "{}" not found'.format(fd)) if fd.strip() not in ds.dimensions: raise Sge('"node" dimension "{}" not found'.format(nd)) # padding: type1 pad_str, pad_type = pad.split(':') if pad_str.strip().lower() != 'padding': raise Sge('key must be equal to "padding", got "{}"'.format(pad_str.strip())) if pad_type.strip().lower() not in self.PADDING_TYPES: raise Sge('padding type "{}"" not allowed. Must be in {}'.format(pad_type.strip(), self.PADDING_TYPES)) except Sge as sge: logger.debug(sge) messages.append(str(sge)) else: score += 1 return self.make_result(level, score, out_of, desc, messages)