def get_layer(self, base_name: str, layer_name: LayerEnum) -> Layer: if base_name in self.layers and layer_name in self.layers[base_name]: layer = self.layers[base_name][layer_name] if layer: return layer layer_dict = self.read_layers_file(base_name, layer_name.value) if layer_dict: layer = Layer.parse_obj(layer_dict) else: layer = Layer(annotation_type=layer_name) self.layers[base_name][layer_name] = layer return layer
def update_base_layer(pecha_id, base_name, new_base, layers): pecha = get_pecha(pecha_id) old_base = pecha.get_base(base_name) pecha.base[base_name] = new_base pecha.save_base() updater = Blupdate(old_base, new_base) for layer in layers: update_ann_layer(layer, updater) pecha.save_layer( base_name, layer["annotation_type"].value, Layer.parse_obj(layer) ) return layers
def index(self) -> Layer: if self._index: return self._index self._index = Layer.parse_obj(self.read_index_file()) return self._index