From eeabbb42f8217160f0f5e9e218fdd02a32fc6ee9 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 26 Jul 2022 19:06:58 +0800 Subject: [PATCH 001/150] Add a data analysis module to report the composition of a given dataset for Auto3D #4743 Signed-off-by: Mingxin Zheng --- monai/apps/auto3d/data_analyzer.py | 533 +++++++++++++++++++++++++++++ monai/apps/auto3d/data_utils.py | 85 +++++ tests/test_auto3d_data_analyzer.py | 77 +++++ 3 files changed, 695 insertions(+) create mode 100644 monai/apps/auto3d/data_analyzer.py create mode 100644 monai/apps/auto3d/data_utils.py create mode 100644 tests/test_auto3d_data_analyzer.py diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py new file mode 100644 index 0000000000..a2c806ebaf --- /dev/null +++ b/monai/apps/auto3d/data_analyzer.py @@ -0,0 +1,533 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Step 1 of the AutoML pipeline. The dataset is analysized with this script. +""" + +import argparse +import copy +import multiprocessing +import os +import pdb +import sys +import time +from functools import partial +from itertools import count +from multiprocessing import Pool + +import nibabel as nib +import numpy as np +import yaml +from scipy.ndimage.measurements import label as scipy_label +from tqdm import tqdm + +import monai + +sys.path.append(".") + +import logging + +import torch + +from monai import data, transforms + +logger = logging.getLogger("global") +logger.addHandler(logging.StreamHandler()) + +from typing import Dict, Union + +from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue + +__all__ = ["DataAnalyzer"] + + +class DataAnalyzer: + """Data analyzer for a dataset + Args: + dataset: A instance of class inhereted from DataSet class + output_yaml: output yaml file path + functions: define which stats to calculate, you can define + your own function and add it here. + + Class method overview: + Hardcoded functions: + _hardcode_functions: register all the statistic functions like _get_case_image_stats. + _hardcode_operations: register statistic operations. + Generate statistics for each case ({'image','label'}) from dataset.datalist: + _get_case_image_stats: generate shape, cropped shape, spacing, intensities for images in each modality. + _get_case_foreground_image_stats: generate intensity stats for foreground image (label>0) + _get_label_stats: generate stats for each label. The connected components of each label, and their shapes, + corresponding image region intensities stats. + Generate overall stats for all cases in dataset.datalist: + _intensity_summary: method defined to combine intensity stats for each case. The intensity features are + min, max, mean, std, percentile defined in self._stats_opt. Those values are averaged + over all the cases + _stats_opt_summary: method defined to combine other stats like shape. The min, max, std e.t.c are calucated. + Utilities: + _stats_opt: define stats calculation operations + _get_foreground_image: define how to get foreground/cropped images. Currently return bounding box for + image intensity > 0 + _get_foreground_label: define foreground image with label > 0 + save_yaml: save results to yaml file + get_case_stats: get stats for each case in dataset.datalist + _get_case_summary: summarize the results from each case using functions _intensity_summary, _stats_opt_summary. + Caller: + get_all_case_stats: The function iterates dataset.datalist and call get_case_stats to generate stats. Then + get_case_summary is called to combine results and save_yaml is called to save results. + + Custimize statistics calculation: + Write a custome function for indivisual case: + _get_your_stats(self): + 1. processed_data = retrive processed data from self.data, if not exist, process data (like cropping) + 2. define a dict case_stats = {'stats1': calculate(processed_data)}. Notice the data may be a list of + data from different modalities. So calculate(processed_data) should return a list of stats. case_status + will be written to the yaml file + 3. create a dict case_stats_summary = {'stats1': summary_function}. The summary_function will process + a list of ['stats1','stats1',...] from all cases in self.dataset.datalist + 4. update self.data with processed_data and update self.gather_summary to register case_stats_summary, + and return case_stats + Add _get_your_stats to self._hardcode_functions + """ + + def __init__( + self, + datalist: Union[str, Dict], + dataroot: str, + output_yaml: str = "./data_stats.yaml", + average: bool = False, + do_ccp: bool = True, + device: str = "cuda", + worker: int = 2, + ): + """ + Args: + + Note: + + """ + self.output_yaml = output_yaml + files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) + ds = data.Dataset( + data=files, + transform=transforms.Compose( + [ + transforms.LoadImaged(keys=["image", "label"]), + transforms.EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) + transforms.Orientationd(keys=["image", "label"], axcodes="RAS"), + transforms.EnsureTyped(keys=["image", "label"], data_type="tensor"), + # some dataset has onehot label size of (H,W,D,C). Only allow label index of size (1,H,W,D) + transforms.Lambdad( + keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x + ), + transforms.SqueezeDimd(keys=["label"], dim=0), # make label (H,W,D) + ] + ), + ) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=lambda x: x) + # If average all the modalities in the summary, if False, the stats for each modality are + # calculated separately + self.SUMMERY_AVERAGE = average + self.DO_CONNECTED_COMP = do_ccp + self.device = device + # gather all summary function for combining case stats + self.gather_summary = {} + self._hardcode_functions() + self._hardcode_operations() + + def _hardcode_functions(self): + """Register functions for calculating stats.""" + self.functions = [self._get_case_image_stats, self._get_case_foreground_image_stats, self._get_label_stats] + self.functions_summary = [ + self._get_case_image_stats_summary, + self._get_case_foreground_image_stats_summary, + self._get_label_stats_summary, + ] + + def _hardcode_operations(self): + """Register operations for basic data operation.""" + # define basic operations for stats + self.operations = { + "max": torch.max, + "mean": torch.mean, + "median": torch.median, + "min": torch.min, + "percentile": partial(torch.quantile, q=[0.005, 0.10, 0.90, 0.995]), + # 'percentile_00_5' : partial(torch.quantile, q=.005), + # 'percentile_99_5' : partial(torch.quantile, q=.995), + # 'percentile_10_0' : partial(torch.quantile, q=.10), + # 'percentile_90_0' : partial(torch.quantile, q=.90), + "stdev": partial(torch.std, unbiased=False), + } + # allow mapping the output of self.operations to new keys (save computation time) + # the output from torch.quantile is mapped to four keys. + self.operations_mappingkey = { + "percentile": ["percentile_00_5", "percentile_10_0", "percentile_90_0", "percentile_99_5"] + } + # np version of self.operations. torch operation has inconsistent interfaces. + # only used in the summary part. + self.operations_np = { + "max": np.max, + "mean": np.mean, + "median": np.median, + "min": np.min, + "percentile": partial(np.quantile, q=[0.005, 0.10, 0.90, 0.995]), + # 'percentile_00_5' : partial(np.percentile, q=0.5), + # 'percentile_99_5' : partial(np.percentile, q=99.5), + # 'percentile_10_0' : partial(np.percentile, q=10), + # 'percentile_90_0' : partial(np.percentile, q=90), + "stdev": np.std, + } + # define summary functions for output from self.operations. For exmaple, + # how to combine max intensity from each case (image) + self.operations_summary = { + "max": np.max, + "mean": np.mean, + "median": np.mean, + "min": np.min, + "percentile_00_5": np.mean, + "percentile_99_5": np.mean, + "percentile_10_0": np.mean, + "percentile_90_0": np.mean, + "stdev": np.mean, + } + + def _get_case_image_stats(self): + ############################################################### + # Generate case_stats + # retrieve transformed data from self.data + start = time.time() + ndas = self.data["image"] + ndas = [ndas[i] for i in range(ndas.shape[0])] + if "nda_croppeds" not in self.data.keys(): + self.data["nda_croppeds"] = [self._get_foreground_image(_) for _ in ndas] + nda_croppeds = self.data["nda_croppeds"] + # perform calculation + case_stats = { + "image_stats": { + "shape": [list(_.shape) for _ in ndas], + "channels": len(ndas), + "cropped_shape": [list(_.shape) for _ in nda_croppeds], + # 'spacing': np.tile(np.array(self.data['image_meta_dict']['pixdim'][1:4]), [len(ndas),1]).tolist(), + "spacing": np.tile(np.diag(self.data["image_meta_dict"]["affine"])[:3], [len(ndas), 1]).tolist(), + "intensity": [self._stats_opt(_) for _ in nda_croppeds], + } + } + logger.debug(f"Get image stats spent {time.time()-start}") + return case_stats + + def _get_case_image_stats_summary(self): + ############################################################### + # Update gather_summary + # this dictionary describes how to gather values in the summary + case_stats_summary = { + "image_stats": { + "shape": partial(self._stats_opt_summary, average=self.SUMMERY_AVERAGE), + "channels": self._stats_opt_summary, + "cropped_shape": partial(self._stats_opt_summary, average=self.SUMMERY_AVERAGE), + "spacing": partial(self._stats_opt_summary, average=self.SUMMERY_AVERAGE), + "intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE), + } + } + self.gather_summary.update(case_stats_summary) + + def _get_case_foreground_image_stats(self): + ############################################################### + # Generate case_stats + # retrieve transformed data from self.data + start = time.time() + ndas = self.data["image"] + ndas = [ndas[i] for i in range(ndas.shape[0])] + ndas_l = self.data["label"] + if "nda_foreground" not in self.data.keys(): + self.data["nda_foreground"] = [self._get_foreground_label(_, ndas_l) for _ in ndas] + nda_foreground = self.data["nda_foreground"] + + case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(_) for _ in nda_foreground]}} + logger.debug(f"Get foreground image data stats spent {time.time()-start}") + return case_stats + + def _get_case_foreground_image_stats_summary(self): + case_stats_summary = { + "image_foreground_stats": {"intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE)} + } + self.gather_summary.update(case_stats_summary) + + @staticmethod + def label_union(x): + return list(set.union(*[set(np.array(_).tolist()) for _ in x])) + + def _get_label_stats(self): + ############################################################### + # Generate case_stats + # retrieve transformed data from self.data + start = time.time() + ndas = self.data["image"] + ndas = [ndas[i] for i in range(ndas.shape[0])] + ndas_l = self.data["label"] + unique_label = torch.unique(ndas_l).data.cpu().numpy().astype(np.int8).tolist() + case_stats = { + "label_stats": { + "labels": unique_label, + "pixel_percentage": None, + "image_intensity": [self._stats_opt(_[ndas_l > 0]) for _ in ndas], + } + } + start = time.time() + pixel_percentage = {} + for index in unique_label: + label_dict = {"image_intensity": []} + mask_index = ndas_l == index + s = time.time() + label_dict["image_intensity"] = [self._stats_opt(_[mask_index]) for _ in ndas] + logger.debug(f" label {index} stats takes {time.time() - s}") + pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() + if self.DO_CONNECTED_COMP: + label_dict["shape"] = [] + label_dict["ncomponents"] = None + # find all connected components and their bounding shape + structure = np.ones(np.ones(len(ndas_l.shape), dtype=np.int32) * 3, dtype=np.int32) + labeled, ncomponents = scipy_label(mask_index.data.cpu().numpy(), structure) + label_dict.update({"ncomponents": ncomponents}) + for ncomp in range(1, ncomponents + 1): + comp_idx = np.argwhere(labeled == ncomp) + comp_idx_min = np.min(comp_idx, axis=0).tolist() + comp_idx_max = np.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + label_dict["shape"].append(bbox_shape) + case_stats["label_stats"].update({f"label_{index}": label_dict}) + # update pixel_percentage + total_percent = np.sum(list(pixel_percentage.values())) + for key in pixel_percentage.keys(): + pixel_percentage[key] = float(pixel_percentage[key] / total_percent) + case_stats["label_stats"].update({"pixel_percentage": pixel_percentage}) + logger.debug(f"Get label stats spent {time.time()-start}") + return case_stats + + def _get_label_stats_summary(self): + # get unique_label + case_stats_summary = { + "label_stats": { + "labels": self.label_union, + "pixel_percentage": self._pixelpercent_summary, + "image_intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE), + } + } + key_chain = ["label_stats", "labels"] + opt = self.label_union + unique_label = opt( + list(filter(None, [recursive_getvalue(case, key_chain) for case in self.results["stats_by_cases"]])) + ) + for index in unique_label: + label_dict_summary = {"image_intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE)} + if self.DO_CONNECTED_COMP: + label_dict_summary["shape"] = partial(self._stats_opt_summary, is_label=True) + label_dict_summary["ncomponents"] = partial(self._stats_opt_summary, is_label=True) + case_stats_summary["label_stats"].update({f"label_{index}": label_dict_summary}) + self.gather_summary.update(case_stats_summary) + + def _pixelpercent_summary(self, x): + """Define the summary function for the pixel percentage over the whole dataset + x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels + """ + percent_summary = {} + for _ in x: + for key, value in _.items(): + percent_summary[key] = percent_summary.get(key, 0) + value + total_percent = np.sum(list(percent_summary.values())) + for key in percent_summary.keys(): + percent_summary[key] = float(percent_summary[key] / total_percent) + return percent_summary + + def _intensity_summary(self, x, average=False): + """Define the summary function for a stats over the whole dataset + x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] + average: if True, average the values over all the images (modalities) + """ + result = {} + for key in x[0][0].keys(): + value = [] + for case in x: + value.append([_[key] for _ in case]) + axis = (0,) if not average else None + try: + value = self.operations_summary[key](value, axis=axis) + except: + logger.debug("operation summary definetion must accept axis input like np.mean") + result[key] = np.array(value).tolist() + return result + + def _stats_opt_summary(self, data, average=False, is_label=False): + """Wraps _stats_opt for a list of data from all cases. Does not guarantee correct output + for custimized stats structure. Check the following input structures. + Args: + data: [case_stats, case_stats, ...]. + For images, + case_stats are list [stats_modality1, stats_modality2, ...], + stats_modality1 can be single value, or it can be a 1d list. + For labels, + case_stats are list [stat1, stat2, ...]. stat1 can be 1d list, 2d list, and single value. + average: the operation is performed after mixing all modalities. + is_label: If the data is from label stats. + """ + axis = None + if type(data[0]) is list or type(data[0]) is np.array: + if not is_label: + # data size = [num of cases, number of modalities, stats] + data = np.concatenate([[np.array(_) for _ in data]]) + else: + # data size = [num of cases, stats] + data = np.concatenate([np.array(_) for _ in data]) + axis = (0,) + if average and len(data.shape) > 2: + axis = (0, 1) + # Calculate statistics from the data using numpy. The torch max, min, median e.t.c have + # inconsistent interface for axis/dim input. Only used for summary + result = {} + for name, ops in self.operations_np.items(): + # get results + _result = ops(np.array(data), axis=axis).tolist() # post process with key mapping + mappingkeys = self.operations_mappingkey.get(name, None) + if mappingkeys is not None: + result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) + else: + result[name] = _result + return result + + def _stats_opt(self, data): + """Calculate statistics from the data""" + result = {} + for name, ops in self.operations.items(): + if len(data) == 0: + data = torch.tensor([0.0], device=self.device) + if not torch.is_tensor(data): + data = torch.from_numpy(data).to(self.device) + # compute the results + # torch.quantile may fail with large input, if failed, use numpy version + try: + _result = ops(data).data.cpu().numpy().tolist() + except: + # logger.info(f'torch {name} version has failed, using np version.') + _result = self.operations_np[name](data.cpu().numpy()).tolist() + # post process the data + mappingkeys = self.operations_mappingkey.get(name, None) + if mappingkeys is not None: + result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) + else: + result[name] = _result + return result + + def _get_foreground_image(self, image, label=None): + """Update select_fn if the foreground is defined differently. + return image foreground without using label + """ + select_fn = lambda x: x > 0 + crop_foreground = monai.transforms.CropForeground(select_fn=select_fn) + return crop_foreground(image) + + def _get_foreground_label(self, image, label): + """Define foreground using foreground label""" + return image[label > 0] + + def save_yaml(self, results): + def float_representer(dumper, value): + text = "{0:.4f}".format(value) + return dumper.represent_scalar("tag:yaml.org,2002:float", text) + + yaml.add_representer(float, float_representer) + with open(self.output_yaml, "w") as file: + yaml.dump(results, file, default_flow_style=None, sort_keys=False) + + def get_case_stats(self, batch_data): + """ + Function to get stats for each case {'image', 'label'} + Args: + batch_data: monai dataloader batch data + images: image with shape [modality, image_shape] + label: label with shape [image_shape] + The data case is stored in self.data + """ + self.data = {} + self.data["image"] = batch_data["image"].to(self.device) # torch.tensor(batch_data['image']).to(self.device) + self.data["label"] = batch_data["label"].to(self.device) # torch.tensor(batch_data['label']).to(self.device) + self.data["image_meta_dict"] = batch_data["image_meta_dict"] + self.data["label_meta_dict"] = batch_data["label_meta_dict"] + case_stats = {} + for func in self.functions: + case_stats.update(func()) + return case_stats + + def _get_case_summary(self): + """Function to combine case stats. The stats for each case is stored in self.result['stats_by_cases']. + Each case stats is a dictionary. The function first get all the leaf-keys of self.gather_summary. + self.gather_summary is a dictionary of the same structure with the final summary yaml + output (self.results['stats_summary']), because it is updated by case_stats_summary. + The operations is retrived by recursive_getvalue and the combined value is calculated. + """ + # initialize gather_summary + [func() for func in self.functions_summary] + # read + key_chains = recursive_getkey(self.gather_summary) + self.results["stats_summary"] = copy.deepcopy(self.gather_summary) + for key_chain in key_chains: + opt = recursive_getvalue(self.gather_summary, key_chain) + value = opt( + list(filter(None, [recursive_getvalue(case, key_chain) for case in self.results["stats_by_cases"]])) + ) + recursive_setvalue(key_chain, value, self.results["stats_summary"]) + + def get_all_case_stats(self): + """Get all case stats. Caller of the DataAnalyser class.""" + start = time.time() + self.results = {"stats_summary": {}, "stats_by_cases": []} + s = start + for batch_data in tqdm(self.dataset): + images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] + label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] + logger.debug(f"Load data spent {time.time() - s}") + case_stat = {"image": images_file, "label": label_file} + case_stat.update(self.get_case_stats(batch_data[0])) + self.results["stats_by_cases"].append(case_stat) + logger.debug(f"Process data spent {time.time() - s}") + s = time.time() + self._get_case_summary() + self.save_yaml(self.results) + logger.debug(f"total time {time.time() - start}") + return self.results + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="input") + parser.add_argument("--dataroot", type=str, required=True, help="data directory") + parser.add_argument("--datalist", type=str, required=True, help="input json") + parser.add_argument("--output_yaml", default="./datastats.yaml", type=str, help="output yaml") + parser.add_argument( + "--average", default=False, action="store_true", help="mix the multi-modal images for calculation" + ) + parser.add_argument( + "--do_ccp", default=False, action="store_true", help="do connected components calculation for label" + ) + parser.add_argument("--worker", type=int, default=2, help="worker number") + parser.add_argument("--debug", default=False, action="store_true", help="print logger debug output") + parser.add_argument("--device", type=str, default="cuda", help="device for running") + args = parser.parse_args() + analyser = DataAnalyzer( + args.datalist, + args.dataroot, + output_yaml=args.output_yaml, + average=args.average, + do_ccp=args.do_ccp, + worker=args.worker, + device=args.device, + ) + level = logging.DEBUG if args.debug else logging.INFO + logger.setLevel(level) + analyser.get_all_case_stats() diff --git a/monai/apps/auto3d/data_utils.py b/monai/apps/auto3d/data_utils.py new file mode 100644 index 0000000000..79b76025c5 --- /dev/null +++ b/monai/apps/auto3d/data_utils.py @@ -0,0 +1,85 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import json +import os +from typing import Dict, Union + +__all__ = ["recursive_getvalue", "recursive_setvalue", "recursive_getkey", "datafold_read"] + + +def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: str = "training"): + """ + + :param datalist: the name of a JSON file listing the data, or a dictionary + :param basedir: directory of json file + :param fold: which fold to use (0..1 if in training set) + :param key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges) + :return: our own 2 arrays (training, validation) + """ + + if isinstance(datalist, str): + with open(datalist) as f: + json_data = json.load(f) + else: + json_data = datalist + + json_data = json_data[key] + + for d in json_data: + for k, v in d.items(): + if isinstance(d[k], list): + d[k] = [os.path.join(basedir, iv) for iv in d[k]] + elif isinstance(d[k], str): + d[k] = os.path.join(basedir, d[k]) if len(d[k]) > 0 else d[k] + + tr = [] + val = [] + for d in json_data: + if "fold" in d and d["fold"] == fold: + val.append(d) + else: + tr.append(d) + + return tr, val + + +def recursive_getvalue(dicts, keys): + """Get value of key chain. For exmaple, dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'] + recursive_getvalue(dicts, keys) = 1 + """ + if keys[0] in dicts.keys(): + return dicts.get(keys[0]) if len(keys) == 1 else recursive_getvalue(dicts[keys[0]], keys[1:]) + else: + return None + + +def recursive_setvalue(keys, value, dicts): + """Set value of key chain. For exmaple, dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'], value = 2 + recursive_setvalue(keys, value, dicts) will set dicts = {'a':{'b':{'c':2}}} + """ + if len(keys) == 1: + dicts[keys[0]] = value + else: + return recursive_setvalue(keys[1:], value, dicts[keys[0]]) + + +def recursive_getkey(dicts): + """Return all key chains in the dict. For example, dicts = {'a':{'b':{'c':1},'d':2}}, + recursive_getkey(dicts) will return [['a','b','c'], ['a','d']] + """ + keys = [] + for key, value in dicts.items(): + if type(value) is dict: + keys.extend([[key] + _ for _ in recursive_getkey(value)]) + else: + keys.append([key]) + return keys diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py new file mode 100644 index 0000000000..43053d38f5 --- /dev/null +++ b/tests/test_auto3d_data_analyzer.py @@ -0,0 +1,77 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest +from os import makedirs, path, remove, rmdir + +import nibabel as nib +import numpy as np + +from monai.apps.auto3d.data_analyzer import DataAnalyzer +from monai.data import create_test_image_3d + + +class TestDataAnalyzer(unittest.TestCase): + def test_data_analyzer(self): + source_datalist = dict( + [ + ("testing", [{"image": "val_001.fake.nii.gz"}]), + ( + "training", + [ + {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, + ], + ), + ] + ) + + # Generate datasets + tmp_dir = "tests/testing_data/auto3d_tmp" + analyzer_output = "output.yaml" + + # generate fake datasets in temporary directory + + if not path.isdir(tmp_dir): + makedirs(tmp_dir) + + cleanup_list = list() + for d in source_datalist["testing"] + source_datalist["training"]: + im, seg = create_test_image_3d(39, 47, 46, rad_max=10) + nib_image = nib.Nifti1Image(im, affine=np.eye(4)) + image_fpath = path.join(tmp_dir, d["image"]) + nib.save(nib_image, image_fpath) + cleanup_list.append(image_fpath) + if "label" in d: + nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) + label_fpath = path.join(tmp_dir, d["label"]) + nib.save(nib_image, label_fpath) + cleanup_list.append(label_fpath) + + yaml_fpath = path.join(tmp_dir, analyzer_output) + analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath) + analyser_results = analyser.get_all_case_stats() + cleanup_list.append(yaml_fpath) + + assert len(analyser_results["stats_by_cases"]) == 4 + + # clean up the fake datasets and output + for file in cleanup_list: + if path.isfile(file): + remove(file) + + rmdir(tmp_dir) + + +if __name__ == "__main__": + unittest.main() From 3f186c816455c3624a934010a72e12b1f7fa5430 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 26 Jul 2022 11:16:14 +0000 Subject: [PATCH 002/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/data_analyzer.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index a2c806ebaf..44438e4b32 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -15,16 +15,10 @@ import argparse import copy -import multiprocessing -import os -import pdb import sys import time from functools import partial -from itertools import count -from multiprocessing import Pool -import nibabel as nib import numpy as np import yaml from scipy.ndimage.measurements import label as scipy_label @@ -439,7 +433,7 @@ def _get_foreground_label(self, image, label): def save_yaml(self, results): def float_representer(dumper, value): - text = "{0:.4f}".format(value) + text = f"{value:.4f}" return dumper.represent_scalar("tag:yaml.org,2002:float", text) yaml.add_representer(float, float_representer) From 918bc8602504716c890bfbc7e1e33fff33ced3b8 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 27 Jul 2022 13:49:01 +0800 Subject: [PATCH 003/150] Exclude auto3d test from min_tests Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- tests/min_tests.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/min_tests.py b/tests/min_tests.py index f33af553f3..a982a64212 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -29,6 +29,7 @@ def run_testsuit(): exclude_cases = [ # these cases use external dependencies "test_ahnet", "test_arraydataset", + "test_auto3d_data_analyzer", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", From 24811981c894de0c66c4f2f257c6f2b8c7d1062a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 27 Jul 2022 15:22:49 +0800 Subject: [PATCH 004/150] fix: change device for cpu-only environment Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- tests/test_auto3d_data_analyzer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index 43053d38f5..d93fa6b6d9 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -12,12 +12,14 @@ import unittest from os import makedirs, path, remove, rmdir +import torch import nibabel as nib import numpy as np from monai.apps.auto3d.data_analyzer import DataAnalyzer from monai.data import create_test_image_3d +device = "cuda" if torch.cuda.is_available() else "cpu" class TestDataAnalyzer(unittest.TestCase): def test_data_analyzer(self): @@ -59,7 +61,7 @@ def test_data_analyzer(self): cleanup_list.append(label_fpath) yaml_fpath = path.join(tmp_dir, analyzer_output) - analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath) + analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath, device=device) analyser_results = analyser.get_all_case_stats() cleanup_list.append(yaml_fpath) From b6169436221264f259e6531ef87fc79d005ca9d9 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 27 Jul 2022 22:34:41 +0800 Subject: [PATCH 005/150] fix: change num of workers in MacOS and Win32 Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- tests/test_auto3d_data_analyzer.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index d93fa6b6d9..a622489fc0 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -11,6 +11,7 @@ import unittest from os import makedirs, path, remove, rmdir +import sys import torch import nibabel as nib @@ -20,6 +21,7 @@ from monai.data import create_test_image_3d device = "cuda" if torch.cuda.is_available() else "cpu" +n_workers = 0 if sys.platform in ("win32", "darwin") else 2 class TestDataAnalyzer(unittest.TestCase): def test_data_analyzer(self): @@ -61,7 +63,7 @@ def test_data_analyzer(self): cleanup_list.append(label_fpath) yaml_fpath = path.join(tmp_dir, analyzer_output) - analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath, device=device) + analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath, device=device, worker=n_workers) analyser_results = analyser.get_all_case_stats() cleanup_list.append(yaml_fpath) From 5fbbdfe8feef4f3fba59119d441cfca1b14d50b3 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 28 Jul 2022 14:08:38 +0800 Subject: [PATCH 006/150] format autofix Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- tests/test_auto3d_data_analyzer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index a622489fc0..9481d9d22d 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -9,13 +9,13 @@ # See the License for the specific language governing permissions and # limitations under the License. +import sys import unittest from os import makedirs, path, remove, rmdir -import sys -import torch import nibabel as nib import numpy as np +import torch from monai.apps.auto3d.data_analyzer import DataAnalyzer from monai.data import create_test_image_3d @@ -23,6 +23,7 @@ device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 + class TestDataAnalyzer(unittest.TestCase): def test_data_analyzer(self): source_datalist = dict( From b883c6e0e24e25a3a9e44b7d7413915d468fa165 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 28 Jul 2022 16:21:58 +0800 Subject: [PATCH 007/150] fix: format args doc-string and other required by flake8-py3 Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 82 ++++++++++++++++-------------- monai/apps/auto3d/data_utils.py | 66 +++++++++++++++++------- tests/test_auto3d_data_analyzer.py | 23 ++++----- 3 files changed, 104 insertions(+), 67 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 44438e4b32..d201dca97f 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -15,42 +15,44 @@ import argparse import copy +import logging import sys import time +import warnings from functools import partial +from typing import Dict, Union import numpy as np +import torch import yaml from scipy.ndimage.measurements import label as scipy_label from tqdm import tqdm import monai +from monai import data, transforms +from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue sys.path.append(".") -import logging - -import torch - -from monai import data, transforms - logger = logging.getLogger("global") logger.addHandler(logging.StreamHandler()) -from typing import Dict, Union - -from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue - __all__ = ["DataAnalyzer"] class DataAnalyzer: - """Data analyzer for a dataset + """ + The DataAnalyzer automatically analyzes a given medical image datasets and reports out the statistics. + Args: - dataset: A instance of class inhereted from DataSet class - output_yaml: output yaml file path - functions: define which stats to calculate, you can define - your own function and add it here. + datalist: a Python dictionary storing group, fold, and other information of the medical + image dataset, or a string to the JSON file storing the dictionary + dataroot: user's local directory containing the datasets + output_yaml: path to save the analysis result + average: whether to average the statistical value across different image modalities + do_ccp: todo, + device: a string specifying hardware (CUDA/CPU) utilized for the operations + worker: number of workers to use for parallel processing Class method overview: Hardcoded functions: @@ -102,12 +104,6 @@ def __init__( device: str = "cuda", worker: int = 2, ): - """ - Args: - - Note: - - """ self.output_yaml = output_yaml files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( @@ -196,7 +192,7 @@ def _hardcode_operations(self): def _get_case_image_stats(self): ############################################################### - # Generate case_stats + """Generate case_stats""" # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] @@ -220,7 +216,7 @@ def _get_case_image_stats(self): def _get_case_image_stats_summary(self): ############################################################### - # Update gather_summary + """Update gather_summary""" # this dictionary describes how to gather values in the summary case_stats_summary = { "image_stats": { @@ -235,7 +231,7 @@ def _get_case_image_stats_summary(self): def _get_case_foreground_image_stats(self): ############################################################### - # Generate case_stats + """Generate case_stats""" # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] @@ -261,7 +257,7 @@ def label_union(x): def _get_label_stats(self): ############################################################### - # Generate case_stats + """Generate case_stats""" # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] @@ -307,7 +303,7 @@ def _get_label_stats(self): return case_stats def _get_label_stats_summary(self): - # get unique_label + """Get unique_label""" case_stats_summary = { "label_stats": { "labels": self.label_union, @@ -329,8 +325,10 @@ def _get_label_stats_summary(self): self.gather_summary.update(case_stats_summary) def _pixelpercent_summary(self, x): - """Define the summary function for the pixel percentage over the whole dataset + """ + Define the summary function for the pixel percentage over the whole dataset x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels + """ percent_summary = {} for _ in x: @@ -342,9 +340,11 @@ def _pixelpercent_summary(self, x): return percent_summary def _intensity_summary(self, x, average=False): - """Define the summary function for a stats over the whole dataset + """ + Define the summary function for a stats over the whole dataset x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] average: if True, average the values over all the images (modalities) + """ result = {} for key in x[0][0].keys(): @@ -354,14 +354,18 @@ def _intensity_summary(self, x, average=False): axis = (0,) if not average else None try: value = self.operations_summary[key](value, axis=axis) - except: - logger.debug("operation summary definetion must accept axis input like np.mean") + except SyntaxWarning: + logger.debug("operation summary definition must accept axis input like np.mean") + warnings.warn("operation summary definition must accept axis input like np.mean") + pass result[key] = np.array(value).tolist() return result def _stats_opt_summary(self, data, average=False, is_label=False): - """Wraps _stats_opt for a list of data from all cases. Does not guarantee correct output + """ + Wraps _stats_opt for a list of data from all cases. Does not guarantee correct output for custimized stats structure. Check the following input structures. + Args: data: [case_stats, case_stats, ...]. For images, @@ -408,9 +412,10 @@ def _stats_opt(self, data): # torch.quantile may fail with large input, if failed, use numpy version try: _result = ops(data).data.cpu().numpy().tolist() - except: - # logger.info(f'torch {name} version has failed, using np version.') + except UserWarning as e: + warnings.warn(f"torch {name} version has failed, using np version.") _result = self.operations_np[name](data.cpu().numpy()).tolist() + pass # post process the data mappingkeys = self.operations_mappingkey.get(name, None) if mappingkeys is not None: @@ -420,11 +425,12 @@ def _stats_opt(self, data): return result def _get_foreground_image(self, image, label=None): - """Update select_fn if the foreground is defined differently. + """ + Update select_fn if the foreground is defined differently. return image foreground without using label + """ - select_fn = lambda x: x > 0 - crop_foreground = monai.transforms.CropForeground(select_fn=select_fn) + crop_foreground = monai.transforms.CropForeground(select_fn=lambda x: x > 0) return crop_foreground(image) def _get_foreground_label(self, image, label): @@ -460,11 +466,13 @@ def get_case_stats(self, batch_data): return case_stats def _get_case_summary(self): - """Function to combine case stats. The stats for each case is stored in self.result['stats_by_cases']. + """ + Function to combine case stats. The stats for each case is stored in self.result['stats_by_cases']. Each case stats is a dictionary. The function first get all the leaf-keys of self.gather_summary. self.gather_summary is a dictionary of the same structure with the final summary yaml output (self.results['stats_summary']), because it is updated by case_stats_summary. The operations is retrived by recursive_getvalue and the combined value is calculated. + """ # initialize gather_summary [func() for func in self.functions_summary] diff --git a/monai/apps/auto3d/data_utils.py b/monai/apps/auto3d/data_utils.py index 79b76025c5..a21e9ae647 100644 --- a/monai/apps/auto3d/data_utils.py +++ b/monai/apps/auto3d/data_utils.py @@ -11,19 +11,23 @@ import json import os -from typing import Dict, Union +from typing import Any, Dict, List, Tuple, Union __all__ = ["recursive_getvalue", "recursive_setvalue", "recursive_getkey", "datafold_read"] -def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: str = "training"): +def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: str = "training") -> Tuple[List, List]: """ + Read a list of data dictionary `datalist` - :param datalist: the name of a JSON file listing the data, or a dictionary - :param basedir: directory of json file - :param fold: which fold to use (0..1 if in training set) - :param key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges) - :return: our own 2 arrays (training, validation) + Args: + datalist: the name of a JSON file listing the data, or a dictionary + basedir: directory of image files + fold: which fold to use (0..1 if in training set) + key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges) + + Returns: + A tuple of two arrays (training, validation) """ if isinstance(datalist, str): @@ -35,7 +39,7 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: json_data = json_data[key] for d in json_data: - for k, v in d.items(): + for k, _ in d.items(): if isinstance(d[k], list): d[k] = [os.path.join(basedir, iv) for iv in d[k]] elif isinstance(d[k], str): @@ -52,9 +56,17 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: return tr, val -def recursive_getvalue(dicts, keys): - """Get value of key chain. For exmaple, dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'] - recursive_getvalue(dicts, keys) = 1 +def recursive_getvalue(dicts: Dict, keys: Union[str, List]) -> None: + """ + Recursively get value through the chain of provided key. + + Args: + dicts: a provided dictionary + keys: name of the key or a list showing the key chain to access the value + + Exmaple: + dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'] + recursive_getvalue(dicts, keys) = 1 """ if keys[0] in dicts.keys(): return dicts.get(keys[0]) if len(keys) == 1 else recursive_getvalue(dicts[keys[0]], keys[1:]) @@ -62,9 +74,19 @@ def recursive_getvalue(dicts, keys): return None -def recursive_setvalue(keys, value, dicts): - """Set value of key chain. For exmaple, dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'], value = 2 - recursive_setvalue(keys, value, dicts) will set dicts = {'a':{'b':{'c':2}}} +def recursive_setvalue(keys: Union[str, List], value: Any, dicts: Dict) -> None: + """ + Recursively set value of key chain. + dicts: user-provided dictionary + + Args: + keys: name of the key or a list showing the key chain to access the value + value: key value + dicts: user-provided dictionary + + Exmaples: + dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'], value = 2 + recursive_setvalue(keys, value, dicts) will set dicts = {'a':{'b':{'c':2}}} """ if len(keys) == 1: dicts[keys[0]] = value @@ -72,9 +94,19 @@ def recursive_setvalue(keys, value, dicts): return recursive_setvalue(keys[1:], value, dicts[keys[0]]) -def recursive_getkey(dicts): - """Return all key chains in the dict. For example, dicts = {'a':{'b':{'c':1},'d':2}}, - recursive_getkey(dicts) will return [['a','b','c'], ['a','d']] +def recursive_getkey(dicts: Dict) -> List: + """ + Return all key chains in the dict. + + Args: + dicts: user-provided dictionary + + Returns: + list of key chains + + Examples: + dicts = {'a':{'b':{'c':1},'d':2}}, + recursive_getkey(dicts) will return [['a','b','c'], ['a','d']] """ keys = [] for key, value in dicts.items(): diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index 9481d9d22d..cbb3ac7bd5 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -26,20 +26,17 @@ class TestDataAnalyzer(unittest.TestCase): def test_data_analyzer(self): - source_datalist = dict( + source_datalist = { + "testing", + [{"image": "val_001.fake.nii.gz"}], + "training", [ - ("testing", [{"image": "val_001.fake.nii.gz"}]), - ( - "training", - [ - {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, - {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, - {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, - {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, - ], - ), - ] - ) + {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, + ], + } # Generate datasets tmp_dir = "tests/testing_data/auto3d_tmp" From c88ca0f3a9e165a15f4c9956a572cd30ea2f8fb1 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 29 Jul 2022 11:40:15 +0800 Subject: [PATCH 008/150] fix format: type annotation, dict format Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 5 +++-- monai/apps/auto3d/data_utils.py | 4 ++-- tests/test_auto3d_data_analyzer.py | 6 ++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index d201dca97f..c8e2b13afc 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -129,9 +129,10 @@ def __init__( self.DO_CONNECTED_COMP = do_ccp self.device = device # gather all summary function for combining case stats - self.gather_summary = {} + self.gather_summary: Dict[str, Dict] = {} self._hardcode_functions() self._hardcode_operations() + print(self.gather_summary) def _hardcode_functions(self): """Register functions for calculating stats.""" @@ -412,7 +413,7 @@ def _stats_opt(self, data): # torch.quantile may fail with large input, if failed, use numpy version try: _result = ops(data).data.cpu().numpy().tolist() - except UserWarning as e: + except Exception: warnings.warn(f"torch {name} version has failed, using np version.") _result = self.operations_np[name](data.cpu().numpy()).tolist() pass diff --git a/monai/apps/auto3d/data_utils.py b/monai/apps/auto3d/data_utils.py index a21e9ae647..42c5d7894a 100644 --- a/monai/apps/auto3d/data_utils.py +++ b/monai/apps/auto3d/data_utils.py @@ -56,7 +56,7 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: return tr, val -def recursive_getvalue(dicts: Dict, keys: Union[str, List]) -> None: +def recursive_getvalue(dicts: Dict, keys: Union[str, List]) -> Any: """ Recursively get value through the chain of provided key. @@ -91,7 +91,7 @@ def recursive_setvalue(keys: Union[str, List], value: Any, dicts: Dict) -> None: if len(keys) == 1: dicts[keys[0]] = value else: - return recursive_setvalue(keys[1:], value, dicts[keys[0]]) + recursive_setvalue(keys[1:], value, dicts[keys[0]]) def recursive_getkey(dicts: Dict) -> List: diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index cbb3ac7bd5..758be43a94 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -27,10 +27,8 @@ class TestDataAnalyzer(unittest.TestCase): def test_data_analyzer(self): source_datalist = { - "testing", - [{"image": "val_001.fake.nii.gz"}], - "training", - [ + "testing": [{"image": "val_001.fake.nii.gz"}], + "training": [ {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, From 42706965ba0acd1d81304996013167b1ef778577 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 2 Aug 2022 11:38:18 +0800 Subject: [PATCH 009/150] fix: package error Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__init__.py | 10 ++++++++++ monai/apps/auto3d/data_analyzer.py | 16 +++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 monai/apps/auto3d/__init__.py diff --git a/monai/apps/auto3d/__init__.py b/monai/apps/auto3d/__init__.py new file mode 100644 index 0000000000..e05c7af493 --- /dev/null +++ b/monai/apps/auto3d/__init__.py @@ -0,0 +1,10 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. \ No newline at end of file diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index c8e2b13afc..9ed9cc845c 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -24,13 +24,16 @@ import numpy as np import torch -import yaml -from scipy.ndimage.measurements import label as scipy_label -from tqdm import tqdm + import monai from monai import data, transforms from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue +from monai.utils import min_version, optional_import + +yaml, _ = optional_import("yaml") +tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") +measure, _ = optional_import("scipy.ndimage.measurements") sys.path.append(".") @@ -286,7 +289,7 @@ def _get_label_stats(self): label_dict["ncomponents"] = None # find all connected components and their bounding shape structure = np.ones(np.ones(len(ndas_l.shape), dtype=np.int32) * 3, dtype=np.int32) - labeled, ncomponents = scipy_label(mask_index.data.cpu().numpy(), structure) + labeled, ncomponents = measure.label(mask_index.data.cpu().numpy(), structure) label_dict.update({"ncomponents": ncomponents}) for ncomp in range(1, ncomponents + 1): comp_idx = np.argwhere(labeled == ncomp) @@ -492,7 +495,10 @@ def get_all_case_stats(self): start = time.time() self.results = {"stats_summary": {}, "stats_by_cases": []} s = start - for batch_data in tqdm(self.dataset): + if not has_tqdm: + warnings.warn("tqdm is not installed. not displaying the caching progress.") + + for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] logger.debug(f"Load data spent {time.time() - s}") From 2ae351824826d2f8319668fe9ca9503a0f1dabd0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 2 Aug 2022 03:38:51 +0000 Subject: [PATCH 010/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/__init__.py b/monai/apps/auto3d/__init__.py index e05c7af493..1e97f89407 100644 --- a/monai/apps/auto3d/__init__.py +++ b/monai/apps/auto3d/__init__.py @@ -7,4 +7,4 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file +# limitations under the License. From 2a3cfb6da193bd8e44352b80bfcbbad8eb2350ab Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 2 Aug 2022 11:43:26 +0800 Subject: [PATCH 011/150] fix: autofix deletes empty lines Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__init__.py | 2 +- monai/apps/auto3d/data_analyzer.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/monai/apps/auto3d/__init__.py b/monai/apps/auto3d/__init__.py index e05c7af493..1e97f89407 100644 --- a/monai/apps/auto3d/__init__.py +++ b/monai/apps/auto3d/__init__.py @@ -7,4 +7,4 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file +# limitations under the License. diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 9ed9cc845c..b0aaa5514b 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -25,7 +25,6 @@ import numpy as np import torch - import monai from monai import data, transforms from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue From a1055d826e8fb1760d2da77f4f5612e4d1d104cb Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 3 Aug 2022 18:40:31 +0800 Subject: [PATCH 012/150] fix: style Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 299 +++++++++++++++++++---------- tests/test_auto3d_data_analyzer.py | 6 +- 2 files changed, 204 insertions(+), 101 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index b0aaa5514b..8205cd7390 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -16,26 +16,23 @@ import argparse import copy import logging -import sys import time import warnings from functools import partial -from typing import Dict, Union +from typing import Dict, List, Union import numpy as np import torch -import monai from monai import data, transforms from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue +from monai.data.meta_tensor import MetaTensor from monai.utils import min_version, optional_import yaml, _ = optional_import("yaml") tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") measure, _ = optional_import("scipy.ndimage.measurements") -sys.path.append(".") - logger = logging.getLogger("global") logger.addHandler(logging.StreamHandler()) @@ -48,13 +45,13 @@ class DataAnalyzer: Args: datalist: a Python dictionary storing group, fold, and other information of the medical - image dataset, or a string to the JSON file storing the dictionary - dataroot: user's local directory containing the datasets - output_yaml: path to save the analysis result - average: whether to average the statistical value across different image modalities - do_ccp: todo, - device: a string specifying hardware (CUDA/CPU) utilized for the operations - worker: number of workers to use for parallel processing + image dataset, or a string to the JSON file storing the dictionary. + dataroot: user's local directory containing the datasets. + output_yaml: path to save the analysis result. + average: whether to average the statistical value across different image modalities. + do_ccp: apply the connected component algorithm to process the labels/images + device: a string specifying hardware (CUDA/CPU) utilized for the operations. + worker: number of workers to use for parallel processing. Class method overview: Hardcoded functions: @@ -62,38 +59,38 @@ class DataAnalyzer: _hardcode_operations: register statistic operations. Generate statistics for each case ({'image','label'}) from dataset.datalist: _get_case_image_stats: generate shape, cropped shape, spacing, intensities for images in each modality. - _get_case_foreground_image_stats: generate intensity stats for foreground image (label>0) + _get_case_foreground_image_stats: generate intensity stats for foreground image (label>0). _get_label_stats: generate stats for each label. The connected components of each label, and their shapes, corresponding image region intensities stats. Generate overall stats for all cases in dataset.datalist: _intensity_summary: method defined to combine intensity stats for each case. The intensity features are min, max, mean, std, percentile defined in self._stats_opt. Those values are averaged - over all the cases + over all the cases. _stats_opt_summary: method defined to combine other stats like shape. The min, max, std e.t.c are calucated. Utilities: - _stats_opt: define stats calculation operations + _stats_opt: define stats calculation operations. _get_foreground_image: define how to get foreground/cropped images. Currently return bounding box for - image intensity > 0 - _get_foreground_label: define foreground image with label > 0 - save_yaml: save results to yaml file - get_case_stats: get stats for each case in dataset.datalist + image intensity > 0. + _get_foreground_label: define foreground image with label > 0. + save_yaml: save results to yaml file. + get_case_stats: get stats for each case in dataset.datalist. _get_case_summary: summarize the results from each case using functions _intensity_summary, _stats_opt_summary. Caller: get_all_case_stats: The function iterates dataset.datalist and call get_case_stats to generate stats. Then get_case_summary is called to combine results and save_yaml is called to save results. Custimize statistics calculation: - Write a custome function for indivisual case: + Write a new function for indivisual case: _get_your_stats(self): 1. processed_data = retrive processed data from self.data, if not exist, process data (like cropping) 2. define a dict case_stats = {'stats1': calculate(processed_data)}. Notice the data may be a list of data from different modalities. So calculate(processed_data) should return a list of stats. case_status will be written to the yaml file 3. create a dict case_stats_summary = {'stats1': summary_function}. The summary_function will process - a list of ['stats1','stats1',...] from all cases in self.dataset.datalist + a list of ['stats1','stats1',...] from all cases in self.dataset.datalist. 4. update self.data with processed_data and update self.gather_summary to register case_stats_summary, - and return case_stats - Add _get_your_stats to self._hardcode_functions + and return case_stats. + Add _get_your_stats to self._hardcode_functions. """ def __init__( @@ -106,6 +103,9 @@ def __init__( device: str = "cuda", worker: int = 2, ): + """ + Initializer will load the data and register the functions for data statistics gathering. + """ self.output_yaml = output_yaml files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( @@ -125,11 +125,14 @@ def __init__( ), ) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=lambda x: x) - # If average all the modalities in the summary, if False, the stats for each modality are - # calculated separately + # Whether to average all the modalities in the summary + # If SUMMERY_AVERAGE is set to false, + # the stats for each modality are calculated separately self.SUMMERY_AVERAGE = average self.DO_CONNECTED_COMP = do_ccp self.device = device + self.data = {} + self.results = {} # gather all summary function for combining case stats self.gather_summary: Dict[str, Dict] = {} self._hardcode_functions() @@ -146,18 +149,16 @@ def _hardcode_functions(self): ] def _hardcode_operations(self): - """Register operations for basic data operation.""" + """ + Register data operations (max/mean/median/...) for the gathering processes. + """ # define basic operations for stats self.operations = { "max": torch.max, "mean": torch.mean, "median": torch.median, "min": torch.min, - "percentile": partial(torch.quantile, q=[0.005, 0.10, 0.90, 0.995]), - # 'percentile_00_5' : partial(torch.quantile, q=.005), - # 'percentile_99_5' : partial(torch.quantile, q=.995), - # 'percentile_10_0' : partial(torch.quantile, q=.10), - # 'percentile_90_0' : partial(torch.quantile, q=.90), + "percentile": partial(torch.quantile, q=torch.tensor([0.005, 0.10, 0.90, 0.995], device=self.device)), "stdev": partial(torch.std, unbiased=False), } # allow mapping the output of self.operations to new keys (save computation time) @@ -173,13 +174,9 @@ def _hardcode_operations(self): "median": np.median, "min": np.min, "percentile": partial(np.quantile, q=[0.005, 0.10, 0.90, 0.995]), - # 'percentile_00_5' : partial(np.percentile, q=0.5), - # 'percentile_99_5' : partial(np.percentile, q=99.5), - # 'percentile_10_0' : partial(np.percentile, q=10), - # 'percentile_90_0' : partial(np.percentile, q=90), "stdev": np.std, } - # define summary functions for output from self.operations. For exmaple, + # define summary functions for output from self.operations. For example, # how to combine max intensity from each case (image) self.operations_summary = { "max": np.max, @@ -193,14 +190,24 @@ def _hardcode_operations(self): "stdev": np.mean, } - def _get_case_image_stats(self): - ############################################################### - """Generate case_stats""" + def _get_case_image_stats(self) -> Dict: + """ + Generate case_stats by checking datasets properties such as shape/channels/spacing. + + Returns: + a dictionary of the images stats + - image_stats + - shape + - channel + - cropped_shape + - spacing + - intensity + """ # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] ndas = [ndas[i] for i in range(ndas.shape[0])] - if "nda_croppeds" not in self.data.keys(): + if "nda_croppeds" not in self.data: self.data["nda_croppeds"] = [self._get_foreground_image(_) for _ in ndas] nda_croppeds = self.data["nda_croppeds"] # perform calculation @@ -209,7 +216,6 @@ def _get_case_image_stats(self): "shape": [list(_.shape) for _ in ndas], "channels": len(ndas), "cropped_shape": [list(_.shape) for _ in nda_croppeds], - # 'spacing': np.tile(np.array(self.data['image_meta_dict']['pixdim'][1:4]), [len(ndas),1]).tolist(), "spacing": np.tile(np.diag(self.data["image_meta_dict"]["affine"])[:3], [len(ndas), 1]).tolist(), "intensity": [self._stats_opt(_) for _ in nda_croppeds], } @@ -218,8 +224,9 @@ def _get_case_image_stats(self): return case_stats def _get_case_image_stats_summary(self): - ############################################################### - """Update gather_summary""" + """ + Update gather_summary by case-by-case. + """ # this dictionary describes how to gather values in the summary case_stats_summary = { "image_stats": { @@ -232,15 +239,25 @@ def _get_case_image_stats_summary(self): } self.gather_summary.update(case_stats_summary) - def _get_case_foreground_image_stats(self): - ############################################################### - """Generate case_stats""" + def _get_case_foreground_image_stats(self) -> Dict: + """ + Generate case_stats based on foreground images (points where labels are positive). + + Returns + a dictionary with following structure + - image_foreground_stats + - intensity + - max + - mean + - median + - ... + """ # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_l = self.data["label"] - if "nda_foreground" not in self.data.keys(): + if "nda_foreground" not in self.data: self.data["nda_foreground"] = [self._get_foreground_label(_, ndas_l) for _ in ndas] nda_foreground = self.data["nda_foreground"] @@ -249,18 +266,40 @@ def _get_case_foreground_image_stats(self): return case_stats def _get_case_foreground_image_stats_summary(self): + """ + Update gather_summary from foreground cases one by one. + """ case_stats_summary = { "image_foreground_stats": {"intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE)} } self.gather_summary.update(case_stats_summary) @staticmethod - def label_union(x): + def label_union(x: List): + """ + Compute the union of labels and make it a list + Args: + x: a list of lists that has number (usually class_id) in each + + Returns + a list showing the union (the union the class_ids) + """ return list(set.union(*[set(np.array(_).tolist()) for _ in x])) - def _get_label_stats(self): - ############################################################### - """Generate case_stats""" + def _get_label_stats(self) -> Dict: + """ + Generate stats for all the labels. + Returns + a dictionary with following structures: + - label_stats + - labels: class_IDs of the label + background class + - pixel_percentanges + - image_intensity + - label_N (N=0,1,...) + - image_intensity + - shape + - ncomponents + """ # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] @@ -299,14 +338,16 @@ def _get_label_stats(self): case_stats["label_stats"].update({f"label_{index}": label_dict}) # update pixel_percentage total_percent = np.sum(list(pixel_percentage.values())) - for key in pixel_percentage.keys(): - pixel_percentage[key] = float(pixel_percentage[key] / total_percent) + for key, value in pixel_percentage.items(): + pixel_percentage[key] = float(value / total_percent) case_stats["label_stats"].update({"pixel_percentage": pixel_percentage}) logger.debug(f"Get label stats spent {time.time()-start}") return case_stats def _get_label_stats_summary(self): - """Get unique_label""" + """ + Get unique_label and update the label into gather_summary. (todo) More descriptions about ccp. + """ case_stats_summary = { "label_stats": { "labels": self.label_union, @@ -327,26 +368,35 @@ def _get_label_stats_summary(self): case_stats_summary["label_stats"].update({f"label_{index}": label_dict_summary}) self.gather_summary.update(case_stats_summary) - def _pixelpercent_summary(self, x): + @staticmethod + def _pixelpercent_summary(x): """ - Define the summary function for the pixel percentage over the whole dataset - x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels + Define the summary function for the pixel percentage over the whole dataset. + Args + x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + Returns + a dictionary showing the percentage of labels, with numeric keys (0, 1, ...) """ percent_summary = {} for _ in x: for key, value in _.items(): percent_summary[key] = percent_summary.get(key, 0) + value total_percent = np.sum(list(percent_summary.values())) - for key in percent_summary.keys(): - percent_summary[key] = float(percent_summary[key] / total_percent) + for key, value in percent_summary.items(): + percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, x, average=False): + def _intensity_summary(self, x: List, average: bool = False) -> Dict: """ - Define the summary function for a stats over the whole dataset - x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] - average: if True, average the values over all the images (modalities) + Define the summary function for stats over the whole dataset + + Args: + x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] + average: if average is true, operation will be applied along axis 0 and average out the values + + Returns + a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations """ result = {} @@ -364,7 +414,7 @@ def _intensity_summary(self, x, average=False): result[key] = np.array(value).tolist() return result - def _stats_opt_summary(self, data, average=False, is_label=False): + def _stats_opt_summary(self, datastat_list, average=False, is_label=False): """ Wraps _stats_opt for a list of data from all cases. Does not guarantee correct output for custimized stats structure. Check the following input structures. @@ -378,70 +428,108 @@ def _stats_opt_summary(self, data, average=False, is_label=False): case_stats are list [stat1, stat2, ...]. stat1 can be 1d list, 2d list, and single value. average: the operation is performed after mixing all modalities. is_label: If the data is from label stats. + + Returns + a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ axis = None - if type(data[0]) is list or type(data[0]) is np.array: + if type(datastat_list[0]) is list or type(datastat_list[0]) is np.array: if not is_label: - # data size = [num of cases, number of modalities, stats] - data = np.concatenate([[np.array(_) for _ in data]]) + # size = [num of cases, number of modalities, stats] + datastat_list = np.concatenate([[np.array(_) for _ in datastat_list]]) else: - # data size = [num of cases, stats] - data = np.concatenate([np.array(_) for _ in data]) + # size = [num of cases, stats] + datastat_list = np.concatenate([np.array(_) for _ in datastat_list]) axis = (0,) - if average and len(data.shape) > 2: + if average and len(datastat_list.shape) > 2: axis = (0, 1) # Calculate statistics from the data using numpy. The torch max, min, median e.t.c have # inconsistent interface for axis/dim input. Only used for summary result = {} for name, ops in self.operations_np.items(): # get results - _result = ops(np.array(data), axis=axis).tolist() # post process with key mapping - mappingkeys = self.operations_mappingkey.get(name, None) + _result = ops(np.array(datastat_list), axis=axis).tolist() # post process with key mapping + mappingkeys = self.operations_mappingkey.get(name) if mappingkeys is not None: result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) else: result[name] = _result return result - def _stats_opt(self, data): - """Calculate statistics from the data""" + def _stats_opt(self, raw_data): + """ + Calculate statistics from the raw data + + Args: + raw_data: ndarray. + + Returns: + a dictionary to list out the statistics based on give operations (ops). For example, keys can include 'max', 'min', + 'median', 'percentile_00_5', percentile_90_0', 'stdev'. + + """ result = {} for name, ops in self.operations.items(): - if len(data) == 0: - data = torch.tensor([0.0], device=self.device) - if not torch.is_tensor(data): - data = torch.from_numpy(data).to(self.device) + if len(raw_data) == 0: + raw_data = torch.tensor([0.0], device=self.device) + if not torch.is_tensor(raw_data): + raw_data = torch.from_numpy(raw_data).to(self.device) # compute the results # torch.quantile may fail with large input, if failed, use numpy version try: - _result = ops(data).data.cpu().numpy().tolist() - except Exception: - warnings.warn(f"torch {name} version has failed, using np version.") - _result = self.operations_np[name](data.cpu().numpy()).tolist() + _result = ops(raw_data).data.cpu().numpy().tolist() + except Exception as e: + logger.debug(e, exc_info=True) + _result = self.operations_np[name](raw_data.cpu().numpy()).tolist() pass # post process the data - mappingkeys = self.operations_mappingkey.get(name, None) + mappingkeys = self.operations_mappingkey.get(name) if mappingkeys is not None: result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) else: result[name] = _result return result - def _get_foreground_image(self, image, label=None): + @staticmethod + def _get_foreground_image(image: MetaTensor) -> MetaTensor: """ + Get the image foreground / mask out the zero-value area. Update select_fn if the foreground is defined differently. - return image foreground without using label + Args: + image: ndarray image to segment. + Returns: + image foreground using non-zero values (rather than using label). """ - crop_foreground = monai.transforms.CropForeground(select_fn=lambda x: x > 0) + crop_foreground = transforms.CropForeground(select_fn=lambda x: x > 0) return crop_foreground(image) - def _get_foreground_label(self, image, label): - """Define foreground using foreground label""" + @staticmethod + def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: + """ + Get foreground image / mask out the non-labeled area. + + Args + image: ndarray image to segment. + label: ndarray the image input and annotated with class IDs. + + Return + + """ return image[label > 0] - def save_yaml(self, results): + def save_yaml(self, results: Dict): + """ + Save the datastat results into a YAML file + + Args + results: data stats dictionary + """ + def float_representer(dumper, value): + """ + Set the float number representation + """ text = f"{value:.4f}" return dumper.represent_scalar("tag:yaml.org,2002:float", text) @@ -451,16 +539,24 @@ def float_representer(dumper, value): def get_case_stats(self, batch_data): """ - Function to get stats for each case {'image', 'label'} + Function to get stats for each case {'image', 'label'}. The data case is stored in self.data Args: batch_data: monai dataloader batch data images: image with shape [modality, image_shape] label: label with shape [image_shape] - The data case is stored in self.data + + Returns: + a dictionary to summarize all the statistics for each case in following structure + - image_stats + - shape, channels,cropped_shape, spacing, intensity + - image_foreground_stats + - intensity + - label_stats + - labels, pxiel_percentage, image_intensity, label_0, label_1 + """ - self.data = {} - self.data["image"] = batch_data["image"].to(self.device) # torch.tensor(batch_data['image']).to(self.device) - self.data["label"] = batch_data["label"].to(self.device) # torch.tensor(batch_data['label']).to(self.device) + self.data["image"] = batch_data["image"].to(self.device) + self.data["label"] = batch_data["label"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] self.data["label_meta_dict"] = batch_data["label_meta_dict"] case_stats = {} @@ -470,7 +566,7 @@ def get_case_stats(self, batch_data): def _get_case_summary(self): """ - Function to combine case stats. The stats for each case is stored in self.result['stats_by_cases']. + Function to combine case stats. The stats for each case is stored in self.results['stats_by_cases']. Each case stats is a dictionary. The function first get all the leaf-keys of self.gather_summary. self.gather_summary is a dictionary of the same structure with the final summary yaml output (self.results['stats_summary']), because it is updated by case_stats_summary. @@ -489,10 +585,16 @@ def _get_case_summary(self): ) recursive_setvalue(key_chain, value, self.results["stats_summary"]) - def get_all_case_stats(self): - """Get all case stats. Caller of the DataAnalyser class.""" + def get_all_case_stats(self) -> Dict: + """ + Get all case stats. Caller of the DataAnalyser class. + + Returns + - the data statistics dictionary + """ start = time.time() - self.results = {"stats_summary": {}, "stats_by_cases": []} + self.results["stats_summary"] = {} + self.results["stats_by_cases"] = [] s = start if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") @@ -513,6 +615,7 @@ def get_all_case_stats(self): if __name__ == "__main__": + # The class can be run in the command line interface parser = argparse.ArgumentParser(description="input") parser.add_argument("--dataroot", type=str, required=True, help="data directory") parser.add_argument("--datalist", type=str, required=True, help="input json") diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index 758be43a94..2dcc860598 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -45,7 +45,7 @@ def test_data_analyzer(self): if not path.isdir(tmp_dir): makedirs(tmp_dir) - cleanup_list = list() + cleanup_list = [] for d in source_datalist["testing"] + source_datalist["training"]: im, seg = create_test_image_3d(39, 47, 46, rad_max=10) nib_image = nib.Nifti1Image(im, affine=np.eye(4)) @@ -60,10 +60,10 @@ def test_data_analyzer(self): yaml_fpath = path.join(tmp_dir, analyzer_output) analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath, device=device, worker=n_workers) - analyser_results = analyser.get_all_case_stats() + datastat = analyser.get_all_case_stats() cleanup_list.append(yaml_fpath) - assert len(analyser_results["stats_by_cases"]) == 4 + assert len(datastat["stats_by_cases"]) == 4 # clean up the fake datasets and output for file in cleanup_list: From 61ec647003febaaec9c7937e47390a865b2bb003 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 4 Aug 2022 17:57:05 +0800 Subject: [PATCH 013/150] fix style, improve documentations, and move/remove functions Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 169 +++++++++++------------------ monai/apps/auto3d/data_utils.py | 6 +- monai/utils/misc.py | 15 ++- tests/test_auto3d_data_analyzer.py | 2 +- 4 files changed, 84 insertions(+), 108 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 8205cd7390..ae836ec2c2 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -19,22 +19,24 @@ import time import warnings from functools import partial -from typing import Dict, List, Union +from typing import Any, Dict, List, Union import numpy as np import torch from monai import data, transforms from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue +from monai.apps.utils import get_logger +from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor from monai.utils import min_version, optional_import +from monai.utils.misc import label_union yaml, _ = optional_import("yaml") tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") measure, _ = optional_import("scipy.ndimage.measurements") -logger = logging.getLogger("global") -logger.addHandler(logging.StreamHandler()) +logger = get_logger(module_name=__name__) __all__ = ["DataAnalyzer"] @@ -47,38 +49,12 @@ class DataAnalyzer: datalist: a Python dictionary storing group, fold, and other information of the medical image dataset, or a string to the JSON file storing the dictionary. dataroot: user's local directory containing the datasets. - output_yaml: path to save the analysis result. + output_path: path to save the analysis result. average: whether to average the statistical value across different image modalities. do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - Class method overview: - Hardcoded functions: - _hardcode_functions: register all the statistic functions like _get_case_image_stats. - _hardcode_operations: register statistic operations. - Generate statistics for each case ({'image','label'}) from dataset.datalist: - _get_case_image_stats: generate shape, cropped shape, spacing, intensities for images in each modality. - _get_case_foreground_image_stats: generate intensity stats for foreground image (label>0). - _get_label_stats: generate stats for each label. The connected components of each label, and their shapes, - corresponding image region intensities stats. - Generate overall stats for all cases in dataset.datalist: - _intensity_summary: method defined to combine intensity stats for each case. The intensity features are - min, max, mean, std, percentile defined in self._stats_opt. Those values are averaged - over all the cases. - _stats_opt_summary: method defined to combine other stats like shape. The min, max, std e.t.c are calucated. - Utilities: - _stats_opt: define stats calculation operations. - _get_foreground_image: define how to get foreground/cropped images. Currently return bounding box for - image intensity > 0. - _get_foreground_label: define foreground image with label > 0. - save_yaml: save results to yaml file. - get_case_stats: get stats for each case in dataset.datalist. - _get_case_summary: summarize the results from each case using functions _intensity_summary, _stats_opt_summary. - Caller: - get_all_case_stats: The function iterates dataset.datalist and call get_case_stats to generate stats. Then - get_case_summary is called to combine results and save_yaml is called to save results. - Custimize statistics calculation: Write a new function for indivisual case: _get_your_stats(self): @@ -90,23 +66,23 @@ class DataAnalyzer: a list of ['stats1','stats1',...] from all cases in self.dataset.datalist. 4. update self.data with processed_data and update self.gather_summary to register case_stats_summary, and return case_stats. - Add _get_your_stats to self._hardcode_functions. + Add _get_your_stats to self._register_functions. """ def __init__( self, datalist: Union[str, Dict], dataroot: str, - output_yaml: str = "./data_stats.yaml", + output_path: str = "./data_stats.yaml", average: bool = False, do_ccp: bool = True, - device: str = "cuda", + device: Union[str, torch.device] = "cuda", worker: int = 2, ): """ Initializer will load the data and register the functions for data statistics gathering. """ - self.output_yaml = output_yaml + self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( data=files, @@ -126,21 +102,24 @@ def __init__( ) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=lambda x: x) # Whether to average all the modalities in the summary - # If SUMMERY_AVERAGE is set to false, + # If SUMMARY_AVERAGE is set to false, # the stats for each modality are calculated separately - self.SUMMERY_AVERAGE = average + self.SUMMARY_AVERAGE = average self.DO_CONNECTED_COMP = do_ccp self.device = device - self.data = {} - self.results = {} + self.data: Dict[str, Any] = {} + self.results: Dict[str, Dict] = {} # gather all summary function for combining case stats self.gather_summary: Dict[str, Dict] = {} - self._hardcode_functions() - self._hardcode_operations() + self._register_functions() + self._register_operations() print(self.gather_summary) - def _hardcode_functions(self): - """Register functions for calculating stats.""" + def _register_functions(self): + """ + Register all the statistic functions for calculating stats for individual cases and overall. + + """ self.functions = [self._get_case_image_stats, self._get_case_foreground_image_stats, self._get_label_stats] self.functions_summary = [ self._get_case_image_stats_summary, @@ -148,9 +127,9 @@ def _hardcode_functions(self): self._get_label_stats_summary, ] - def _hardcode_operations(self): + def _register_operations(self): """ - Register data operations (max/mean/median/...) for the gathering processes. + Register data operations (max/mean/median/...) for the stats gathering processes. """ # define basic operations for stats self.operations = { @@ -192,7 +171,8 @@ def _hardcode_operations(self): def _get_case_image_stats(self) -> Dict: """ - Generate case_stats by checking datasets properties such as shape/channels/spacing. + Generate image statistics for cases in datalist case ({'image','label'}) + Statistics values are under key "image_stats" Returns: a dictionary of the images stats @@ -230,18 +210,20 @@ def _get_case_image_stats_summary(self): # this dictionary describes how to gather values in the summary case_stats_summary = { "image_stats": { - "shape": partial(self._stats_opt_summary, average=self.SUMMERY_AVERAGE), + "shape": partial(self._stats_opt_summary, average=self.SUMMARY_AVERAGE), "channels": self._stats_opt_summary, - "cropped_shape": partial(self._stats_opt_summary, average=self.SUMMERY_AVERAGE), - "spacing": partial(self._stats_opt_summary, average=self.SUMMERY_AVERAGE), - "intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE), + "cropped_shape": partial(self._stats_opt_summary, average=self.SUMMARY_AVERAGE), + "spacing": partial(self._stats_opt_summary, average=self.SUMMARY_AVERAGE), + "intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE), } } self.gather_summary.update(case_stats_summary) def _get_case_foreground_image_stats(self) -> Dict: """ - Generate case_stats based on foreground images (points where labels are positive). + Generate intensity statistics based on foreground images for cases in datalist + ({'image','label'}). Foreground is defined by points where labels are positive numbers. + The statistics will be values with key name "intensity" under parent key "image_foreground_stats". Returns a dictionary with following structure @@ -262,7 +244,7 @@ def _get_case_foreground_image_stats(self) -> Dict: nda_foreground = self.data["nda_foreground"] case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(_) for _ in nda_foreground]}} - logger.debug(f"Get foreground image data stats spent {time.time()-start}") + logger.debug(f"Get foreground image data stats spent {time.time() - start}") return case_stats def _get_case_foreground_image_stats_summary(self): @@ -270,25 +252,17 @@ def _get_case_foreground_image_stats_summary(self): Update gather_summary from foreground cases one by one. """ case_stats_summary = { - "image_foreground_stats": {"intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE)} + "image_foreground_stats": {"intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE)} } self.gather_summary.update(case_stats_summary) - @staticmethod - def label_union(x: List): - """ - Compute the union of labels and make it a list - Args: - x: a list of lists that has number (usually class_id) in each - - Returns - a list showing the union (the union the class_ids) - """ - return list(set.union(*[set(np.array(_).tolist()) for _ in x])) - def _get_label_stats(self) -> Dict: """ - Generate stats for all the labels. + Generate label statisics for all the cases in the datalist based on ({"images", "labels"}). + Each label has its own statistics including the connected components info, shape, and + corresponding image region intensity. The statistics are stored in the values with key name + "label_stats" in the return variable. + Returns a dictionary with following structures: - label_stats @@ -316,7 +290,7 @@ def _get_label_stats(self) -> Dict: start = time.time() pixel_percentage = {} for index in unique_label: - label_dict = {"image_intensity": []} + label_dict: Dict[str, Any] = {} mask_index = ndas_l == index s = time.time() label_dict["image_intensity"] = [self._stats_opt(_[mask_index]) for _ in ndas] @@ -350,18 +324,18 @@ def _get_label_stats_summary(self): """ case_stats_summary = { "label_stats": { - "labels": self.label_union, + "labels": label_union, "pixel_percentage": self._pixelpercent_summary, - "image_intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE), + "image_intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE), } } key_chain = ["label_stats", "labels"] - opt = self.label_union + opt = label_union unique_label = opt( list(filter(None, [recursive_getvalue(case, key_chain) for case in self.results["stats_by_cases"]])) ) for index in unique_label: - label_dict_summary = {"image_intensity": partial(self._intensity_summary, average=self.SUMMERY_AVERAGE)} + label_dict_summary = {"image_intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE)} if self.DO_CONNECTED_COMP: label_dict_summary["shape"] = partial(self._stats_opt_summary, is_label=True) label_dict_summary["ncomponents"] = partial(self._stats_opt_summary, is_label=True) @@ -390,6 +364,9 @@ def _pixelpercent_summary(x): def _intensity_summary(self, x: List, average: bool = False) -> Dict: """ Define the summary function for stats over the whole dataset + Combine overall intensity statistics for all cases in datalist. The intensity features are + min, max, mean, std, percentile defined in self._stats_opt(). + Values may be averaged over all the cases if average is set to True Args: x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] @@ -400,7 +377,7 @@ def _intensity_summary(self, x: List, average: bool = False) -> Dict: """ result = {} - for key in x[0][0].keys(): + for key in x[0][0].keys(): # .keys() not required, len(x) = N data value = [] for case in x: value.append([_[key] for _ in case]) @@ -416,6 +393,7 @@ def _intensity_summary(self, x: List, average: bool = False) -> Dict: def _stats_opt_summary(self, datastat_list, average=False, is_label=False): """ + Combine other stats calculation methods (like shape/min/max/std ) Wraps _stats_opt for a list of data from all cases. Does not guarantee correct output for custimized stats structure. Check the following input structures. @@ -458,7 +436,7 @@ def _stats_opt_summary(self, datastat_list, average=False, is_label=False): def _stats_opt(self, raw_data): """ - Calculate statistics from the raw data + Calculate statistics calculation operations (ops) on the images/labels Args: raw_data: ndarray. @@ -493,53 +471,36 @@ def _stats_opt(self, raw_data): @staticmethod def _get_foreground_image(image: MetaTensor) -> MetaTensor: """ - Get the image foreground / mask out the zero-value area. - Update select_fn if the foreground is defined differently. + Get a foreground image by removing all-zero rectangles on the edges of the image + Note for developer: update select_fn if the foreground is defined differently. Args: image: ndarray image to segment. Returns: - image foreground using non-zero values (rather than using label). + ndarray of foreground image by removing all-zero edges. Note: the size of the ouput is smaller than the input. """ crop_foreground = transforms.CropForeground(select_fn=lambda x: x > 0) - return crop_foreground(image) + image_foreground = MetaTensor(crop_foreground(image)) + return image_foreground @staticmethod def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: """ - Get foreground image / mask out the non-labeled area. + Get foreground image pixel values and mask out the non-labeled area. Args image: ndarray image to segment. label: ndarray the image input and annotated with class IDs. Return - - """ - return image[label > 0] - - def save_yaml(self, results: Dict): + 1D array of foreground image with label > 0 """ - Save the datastat results into a YAML file - - Args - results: data stats dictionary - """ - - def float_representer(dumper, value): - """ - Set the float number representation - """ - text = f"{value:.4f}" - return dumper.represent_scalar("tag:yaml.org,2002:float", text) - - yaml.add_representer(float, float_representer) - with open(self.output_yaml, "w") as file: - yaml.dump(results, file, default_flow_style=None, sort_keys=False) + label_foreground = MetaTensor(image[label > 0]) + return label_foreground def get_case_stats(self, batch_data): """ - Function to get stats for each case {'image', 'label'}. The data case is stored in self.data + Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data Args: batch_data: monai dataloader batch data images: image with shape [modality, image_shape] @@ -572,6 +533,7 @@ def _get_case_summary(self): output (self.results['stats_summary']), because it is updated by case_stats_summary. The operations is retrived by recursive_getvalue and the combined value is calculated. + summarize the results from each case using functions _intensity_summary, _stats_opt_summary. """ # initialize gather_summary [func() for func in self.functions_summary] @@ -587,7 +549,8 @@ def _get_case_summary(self): def get_all_case_stats(self) -> Dict: """ - Get all case stats. Caller of the DataAnalyser class. + Get all case stats. Caller of the DataAnalyser class. The function iterates datalist and + call get_case_stats to generate stats. Then get_case_summary is called to combine results. Returns - the data statistics dictionary @@ -609,7 +572,7 @@ def get_all_case_stats(self) -> Dict: logger.debug(f"Process data spent {time.time() - s}") s = time.time() self._get_case_summary() - self.save_yaml(self.results) + ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml") logger.debug(f"total time {time.time() - start}") return self.results @@ -619,7 +582,7 @@ def get_all_case_stats(self) -> Dict: parser = argparse.ArgumentParser(description="input") parser.add_argument("--dataroot", type=str, required=True, help="data directory") parser.add_argument("--datalist", type=str, required=True, help="input json") - parser.add_argument("--output_yaml", default="./datastats.yaml", type=str, help="output yaml") + parser.add_argument("--output_path", default="./datastats.yaml", type=str, help="output yaml") parser.add_argument( "--average", default=False, action="store_true", help="mix the multi-modal images for calculation" ) @@ -633,7 +596,7 @@ def get_all_case_stats(self) -> Dict: analyser = DataAnalyzer( args.datalist, args.dataroot, - output_yaml=args.output_yaml, + output_path=args.output_path, average=args.average, do_ccp=args.do_ccp, worker=args.worker, diff --git a/monai/apps/auto3d/data_utils.py b/monai/apps/auto3d/data_utils.py index 42c5d7894a..3ce2152309 100644 --- a/monai/apps/auto3d/data_utils.py +++ b/monai/apps/auto3d/data_utils.py @@ -9,10 +9,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -import json import os from typing import Any, Dict, List, Tuple, Union +from monai.bundle.config_parser import ConfigParser + __all__ = ["recursive_getvalue", "recursive_setvalue", "recursive_getkey", "datafold_read"] @@ -31,8 +32,7 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: """ if isinstance(datalist, str): - with open(datalist) as f: - json_data = json.load(f) + json_data = ConfigParser.load_config_file(datalist) else: json_data = datalist diff --git a/monai/utils/misc.py b/monai/utils/misc.py index fc38dc5056..f883053656 100644 --- a/monai/utils/misc.py +++ b/monai/utils/misc.py @@ -21,7 +21,7 @@ from collections.abc import Iterable from distutils.util import strtobool from pathlib import Path -from typing import Any, Callable, Optional, Sequence, Tuple, Union, cast +from typing import Any, Callable, List, Optional, Sequence, Tuple, Union, cast import numpy as np import torch @@ -52,6 +52,7 @@ "sample_slices", "check_parent_dir", "save_obj", + "label_union", ] _seed = None @@ -471,3 +472,15 @@ def save_obj( shutil.move(str(temp_path), path) except PermissionError: # project-monai/monai issue #3613 pass + + +def label_union(x: List) -> List: + """ + Compute the union of class IDs in label and generate a list to include all class IDs + Args: + x: a list of lists that has number (usually class_id) in each + + Returns + a list showing the union (the union the class IDs) + """ + return list(set.union(*[set(np.array(_).tolist()) for _ in x])) diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index 2dcc860598..42c7bf37d8 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -59,7 +59,7 @@ def test_data_analyzer(self): cleanup_list.append(label_fpath) yaml_fpath = path.join(tmp_dir, analyzer_output) - analyser = DataAnalyzer(source_datalist, tmp_dir, output_yaml=yaml_fpath, device=device, worker=n_workers) + analyser = DataAnalyzer(source_datalist, tmp_dir, output_path=yaml_fpath, device=device, worker=n_workers) datastat = analyser.get_all_case_stats() cleanup_list.append(yaml_fpath) From f2414c362663cf4e924df4b8b20e34b144fbddf2 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 5 Aug 2022 12:40:09 +0800 Subject: [PATCH 014/150] fix type assignment error Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index ae836ec2c2..cb05007f4d 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -108,7 +108,7 @@ def __init__( self.DO_CONNECTED_COMP = do_ccp self.device = device self.data: Dict[str, Any] = {} - self.results: Dict[str, Dict] = {} + self.results: Dict[str, Any] = {} # gather all summary function for combining case stats self.gather_summary: Dict[str, Dict] = {} self._register_functions() From 56bbc32afe4eec4e7763129d0513f9890a38eb7f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 5 Aug 2022 13:54:02 +0800 Subject: [PATCH 015/150] add example code blocks, fix typo, and change use of tempfile Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 108 +++++++++++++++++++++-------- tests/test_auto3d_data_analyzer.py | 58 ++++++---------- 2 files changed, 101 insertions(+), 65 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index cb05007f4d..fc6556408f 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -43,7 +43,10 @@ class DataAnalyzer: """ - The DataAnalyzer automatically analyzes a given medical image datasets and reports out the statistics. + The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. + The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. + which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only segmentation + problem is supported, so the user needs to provide paths to the image and label files. Args: datalist: a Python dictionary storing group, fold, and other information of the medical @@ -55,18 +58,25 @@ class DataAnalyzer: device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - Custimize statistics calculation: - Write a new function for indivisual case: - _get_your_stats(self): - 1. processed_data = retrive processed data from self.data, if not exist, process data (like cropping) - 2. define a dict case_stats = {'stats1': calculate(processed_data)}. Notice the data may be a list of - data from different modalities. So calculate(processed_data) should return a list of stats. case_status - will be written to the yaml file - 3. create a dict case_stats_summary = {'stats1': summary_function}. The summary_function will process - a list of ['stats1','stats1',...] from all cases in self.dataset.datalist. - 4. update self.data with processed_data and update self.gather_summary to register case_stats_summary, - and return case_stats. - Add _get_your_stats to self._register_functions. + For example: + + .. code-block:: python + + from monai.apps.auto3d.data_analyzer import DataAnalyzer + + datalist = { + "testing": [{"image": "image_003.nii.gz"}], + "training": [ + {"fold": 0, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, + {"fold": 0, "image": "image_002.nii.gz", "label": "label_002.nii.gz"}, + {"fold": 1, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, + {"fold": 1, "image": "image_004.nii.gz", "label": "label_004.nii.gz"}, + ], + } + + dataroot = '/datasets' # the directory where you have the image files (nii.gz) + DataAnalyzer(datalist, dataroot) + """ def __init__( @@ -80,7 +90,7 @@ def __init__( worker: int = 2, ): """ - Initializer will load the data and register the functions for data statistics gathering. + The initializer will load the data and register the functions for data statistics gathering. """ self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) @@ -117,7 +127,44 @@ def __init__( def _register_functions(self): """ - Register all the statistic functions for calculating stats for individual cases and overall. + Register all the statistic functions for calculating stats for individual cases and overall. If one installs + monai in the editable source code manner, then a new statistics calculation can be customized in the DataAnalyzer + class. + + For example: + + .. code-block:: python + + class DataAnalyzer: + # other functions defined in the class + # below are for new functions + + def my_fun(x_list: List[torch.tensor]): + # notice the data may be a list of data from different modalities. + # So my_fun(x) should return a list of stats. + y_list = [] + for x in x_list: + y_list.append(x.sum()) + return y_list + + def _get_my_stats(self): # in the DataAnalyzer class. case_stats will be written to the yaml file + processed_data = self.data['image'] + case_stats = {'my_stats': my_fun(processed_data)}. + return case_stats + + def _get_my_stats_sumumary(self): + case_stats_summary = {'stats1': summary_function}. The summary_function will process + + case_stats_summary = { + "my_stats_summary": {"sum": self._get_my_stats} + } + self.gather_summary.update(case_stats_summary) + + def _register_functions(self): + # add + self.functions = ... + self.function_summary = ... + self.function_summary.append(self._get_my_stats_sumumary) """ self.functions = [self._get_case_image_stats, self._get_case_foreground_image_stats, self._get_label_stats] @@ -171,8 +218,8 @@ def _register_operations(self): def _get_case_image_stats(self) -> Dict: """ - Generate image statistics for cases in datalist case ({'image','label'}) - Statistics values are under key "image_stats" + Generate image statistics for cases in datalist ({'image','label'}) + Statistics values are stored under the key "image_stats" Returns: a dictionary of the images stats @@ -205,7 +252,7 @@ def _get_case_image_stats(self) -> Dict: def _get_case_image_stats_summary(self): """ - Update gather_summary by case-by-case. + Update self.gather_summary by case-by-case. """ # this dictionary describes how to gather values in the summary case_stats_summary = { @@ -221,9 +268,10 @@ def _get_case_image_stats_summary(self): def _get_case_foreground_image_stats(self) -> Dict: """ - Generate intensity statistics based on foreground images for cases in datalist - ({'image','label'}). Foreground is defined by points where labels are positive numbers. - The statistics will be values with key name "intensity" under parent key "image_foreground_stats". + Generate intensity statistics based on foreground images for cases in the datalist + ({'image','label'}). The foreground is defined by points where labels are positive numbers. + The statistics will be values with the key name "intensity" under parent the key + "image_foreground_stats". Returns a dictionary with following structure @@ -259,8 +307,8 @@ def _get_case_foreground_image_stats_summary(self): def _get_label_stats(self) -> Dict: """ Generate label statisics for all the cases in the datalist based on ({"images", "labels"}). - Each label has its own statistics including the connected components info, shape, and - corresponding image region intensity. The statistics are stored in the values with key name + Each label has its own statistics (the connected components info, shape, and + corresponding image region intensity). The statistics are saved in the values with key name "label_stats" in the return variable. Returns @@ -320,7 +368,7 @@ def _get_label_stats(self) -> Dict: def _get_label_stats_summary(self): """ - Get unique_label and update the label into gather_summary. (todo) More descriptions about ccp. + Get the label statistics for each unique label and update them into gather_summary. """ case_stats_summary = { "label_stats": { @@ -346,6 +394,7 @@ def _get_label_stats_summary(self): def _pixelpercent_summary(x): """ Define the summary function for the pixel percentage over the whole dataset. + Args x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. @@ -366,7 +415,7 @@ def _intensity_summary(self, x: List, average: bool = False) -> Dict: Define the summary function for stats over the whole dataset Combine overall intensity statistics for all cases in datalist. The intensity features are min, max, mean, std, percentile defined in self._stats_opt(). - Values may be averaged over all the cases if average is set to True + Values may be averaged over all the cases if the `average` is set to be True Args: x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] @@ -393,9 +442,8 @@ def _intensity_summary(self, x: List, average: bool = False) -> Dict: def _stats_opt_summary(self, datastat_list, average=False, is_label=False): """ - Combine other stats calculation methods (like shape/min/max/std ) - Wraps _stats_opt for a list of data from all cases. Does not guarantee correct output - for custimized stats structure. Check the following input structures. + Combine other stats calculation methods (like shape/min/max/std ) Does not guarantee + correct output for custimized stats structure. Check the following input structures. Args: data: [case_stats, case_stats, ...]. @@ -439,7 +487,7 @@ def _stats_opt(self, raw_data): Calculate statistics calculation operations (ops) on the images/labels Args: - raw_data: ndarray. + raw_data: ndarray image or label Returns: a dictionary to list out the statistics based on give operations (ops). For example, keys can include 'max', 'min', @@ -472,7 +520,7 @@ def _stats_opt(self, raw_data): def _get_foreground_image(image: MetaTensor) -> MetaTensor: """ Get a foreground image by removing all-zero rectangles on the edges of the image - Note for developer: update select_fn if the foreground is defined differently. + Note for the developer: update select_fn if the foreground is defined differently. Args: image: ndarray image to segment. diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index 42c7bf37d8..ac255badb8 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -10,8 +10,9 @@ # limitations under the License. import sys +import tempfile import unittest -from os import makedirs, path, remove, rmdir +from os import path import nibabel as nib import numpy as np @@ -37,40 +38,27 @@ def test_data_analyzer(self): } # Generate datasets - tmp_dir = "tests/testing_data/auto3d_tmp" - analyzer_output = "output.yaml" - - # generate fake datasets in temporary directory - - if not path.isdir(tmp_dir): - makedirs(tmp_dir) - - cleanup_list = [] - for d in source_datalist["testing"] + source_datalist["training"]: - im, seg = create_test_image_3d(39, 47, 46, rad_max=10) - nib_image = nib.Nifti1Image(im, affine=np.eye(4)) - image_fpath = path.join(tmp_dir, d["image"]) - nib.save(nib_image, image_fpath) - cleanup_list.append(image_fpath) - if "label" in d: - nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) - label_fpath = path.join(tmp_dir, d["label"]) - nib.save(nib_image, label_fpath) - cleanup_list.append(label_fpath) - - yaml_fpath = path.join(tmp_dir, analyzer_output) - analyser = DataAnalyzer(source_datalist, tmp_dir, output_path=yaml_fpath, device=device, worker=n_workers) - datastat = analyser.get_all_case_stats() - cleanup_list.append(yaml_fpath) - - assert len(datastat["stats_by_cases"]) == 4 - - # clean up the fake datasets and output - for file in cleanup_list: - if path.isfile(file): - remove(file) - - rmdir(tmp_dir) + with tempfile.TemporaryDirectory() as tempdir: + cleanup_list = [] + for d in source_datalist["testing"] + source_datalist["training"]: + im, seg = create_test_image_3d(39, 47, 46, rad_max=10) + nib_image = nib.Nifti1Image(im, affine=np.eye(4)) + image_fpath = path.join(tempdir, d["image"]) + nib.save(nib_image, image_fpath) + cleanup_list.append(image_fpath) + if "label" in d: + nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) + label_fpath = path.join(tempdir, d["label"]) + nib.save(nib_image, label_fpath) + cleanup_list.append(label_fpath) + + analyzer_output = "output.yaml" + yaml_fpath = path.join(tempdir, analyzer_output) + analyser = DataAnalyzer(source_datalist, tempdir, output_path=yaml_fpath, device=device, worker=n_workers) + datastat = analyser.get_all_case_stats() + cleanup_list.append(yaml_fpath) + + assert len(datastat["stats_by_cases"]) == 4 if __name__ == "__main__": From 58529d0efeca3bb7e3e85284eac390387786a178 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 5 Aug 2022 14:56:40 +0800 Subject: [PATCH 016/150] refractor: unit test setUp and tearDown methods Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 3 +- tests/test_auto3d_data_analyzer.py | 63 ++++++++++++++++-------------- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index fc6556408f..673501913f 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -123,7 +123,6 @@ def __init__( self.gather_summary: Dict[str, Dict] = {} self._register_functions() self._register_operations() - print(self.gather_summary) def _register_functions(self): """ @@ -442,7 +441,7 @@ def _intensity_summary(self, x: List, average: bool = False) -> Dict: def _stats_opt_summary(self, datastat_list, average=False, is_label=False): """ - Combine other stats calculation methods (like shape/min/max/std ) Does not guarantee + Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. Args: diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d_data_analyzer.py index ac255badb8..48fa3b6434 100644 --- a/tests/test_auto3d_data_analyzer.py +++ b/tests/test_auto3d_data_analyzer.py @@ -24,41 +24,44 @@ device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 +fake_datalist = { + "testing": [{"image": "val_001.fake.nii.gz"}], + "training": [ + {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, + ], +} + class TestDataAnalyzer(unittest.TestCase): - def test_data_analyzer(self): - source_datalist = { - "testing": [{"image": "val_001.fake.nii.gz"}], - "training": [ - {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, - {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, - {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, - {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, - ], - } + def setUp(self): + self.test_dir = tempfile.TemporaryDirectory() + dataroot = self.test_dir.name + + # Generate a fake dataset + for d in fake_datalist["testing"] + fake_datalist["training"]: + im, seg = create_test_image_3d(39, 47, 46, rad_max=10) + nib_image = nib.Nifti1Image(im, affine=np.eye(4)) + image_fpath = path.join(dataroot, d["image"]) + nib.save(nib_image, image_fpath) - # Generate datasets - with tempfile.TemporaryDirectory() as tempdir: - cleanup_list = [] - for d in source_datalist["testing"] + source_datalist["training"]: - im, seg = create_test_image_3d(39, 47, 46, rad_max=10) - nib_image = nib.Nifti1Image(im, affine=np.eye(4)) - image_fpath = path.join(tempdir, d["image"]) - nib.save(nib_image, image_fpath) - cleanup_list.append(image_fpath) - if "label" in d: - nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) - label_fpath = path.join(tempdir, d["label"]) - nib.save(nib_image, label_fpath) - cleanup_list.append(label_fpath) + if "label" in d: + nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) + label_fpath = path.join(dataroot, d["label"]) + nib.save(nib_image, label_fpath) + + def test_data_analyzer(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer(fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers) + datastat = analyser.get_all_case_stats() - analyzer_output = "output.yaml" - yaml_fpath = path.join(tempdir, analyzer_output) - analyser = DataAnalyzer(source_datalist, tempdir, output_path=yaml_fpath, device=device, worker=n_workers) - datastat = analyser.get_all_case_stats() - cleanup_list.append(yaml_fpath) + assert len(datastat["stats_by_cases"]) == 4 - assert len(datastat["stats_by_cases"]) == 4 + def tearDown(self) -> None: + self.test_dir.cleanup() if __name__ == "__main__": From dcaca87e8f478d31fcba2d2c72eaee3a83ae07d7 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 5 Aug 2022 17:22:33 +0800 Subject: [PATCH 017/150] fix: dict copy issue and rename unit tests for future reuse Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_utils.py | 7 ++++--- tests/{test_auto3d_data_analyzer.py => test_auto3d.py} | 0 2 files changed, 4 insertions(+), 3 deletions(-) rename tests/{test_auto3d_data_analyzer.py => test_auto3d.py} (100%) diff --git a/monai/apps/auto3d/data_utils.py b/monai/apps/auto3d/data_utils.py index 3ce2152309..b034f884d7 100644 --- a/monai/apps/auto3d/data_utils.py +++ b/monai/apps/auto3d/data_utils.py @@ -10,6 +10,7 @@ # limitations under the License. import os +from copy import deepcopy from typing import Any, Dict, List, Tuple, Union from monai.bundle.config_parser import ConfigParser @@ -36,9 +37,9 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: else: json_data = datalist - json_data = json_data[key] + dict_data = deepcopy(json_data[key]) - for d in json_data: + for d in dict_data: for k, _ in d.items(): if isinstance(d[k], list): d[k] = [os.path.join(basedir, iv) for iv in d[k]] @@ -47,7 +48,7 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: tr = [] val = [] - for d in json_data: + for d in dict_data: if "fold" in d and d["fold"] == fold: val.append(d) else: diff --git a/tests/test_auto3d_data_analyzer.py b/tests/test_auto3d.py similarity index 100% rename from tests/test_auto3d_data_analyzer.py rename to tests/test_auto3d.py From 96175ffe60d0e0499f7458a77b7feb8141c8db8c Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 03:51:48 +0000 Subject: [PATCH 018/150] fix min_test Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- tests/min_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/min_tests.py b/tests/min_tests.py index a982a64212..1f10d30f6a 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -29,7 +29,7 @@ def run_testsuit(): exclude_cases = [ # these cases use external dependencies "test_ahnet", "test_arraydataset", - "test_auto3d_data_analyzer", + "test_auto3d", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", From 18082ba0676709efff66d38e702175f03b8df9f0 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 07:35:39 +0000 Subject: [PATCH 019/150] fix from 4854-quantile Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/transforms/utils_pytorch_numpy_unification.py | 8 +++++--- tests/test_utils_pytorch_numpy_unification.py | 11 ++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index af9d51efb6..6dcac5ff83 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -104,8 +104,10 @@ def percentile( elif any(q < 0) or any(q > 100): raise ValueError result: Union[NdarrayOrTensor, float, int] - if isinstance(x, np.ndarray): - result = np.percentile(x, q, axis=dim, keepdims=keepdim, **kwargs) + if isinstance(x, np.ndarray) or (isinstance(x, torch.Tensor) and torch.numel(x) > 1_000_000): # pytorch#64947 + _x = convert_data_type(x, output_type=np.ndarray)[0] + result = np.percentile(_x, q, axis=dim, keepdims=keepdim, **kwargs) + result = convert_to_dst_type(result, x)[0] else: q = convert_to_dst_type(q / 100.0, x)[0] result = torch.quantile(x, q, dim=dim, keepdim=keepdim) @@ -399,4 +401,4 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: """ if isinstance(x, torch.Tensor) and hasattr(torch, "inverse"): # pytorch 1.7.0 return torch.inverse(x) # type: ignore - return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore + return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore \ No newline at end of file diff --git a/tests/test_utils_pytorch_numpy_unification.py b/tests/test_utils_pytorch_numpy_unification.py index fa4d10b402..2421315eca 100644 --- a/tests/test_utils_pytorch_numpy_unification.py +++ b/tests/test_utils_pytorch_numpy_unification.py @@ -12,6 +12,7 @@ import unittest import numpy as np +import torch from parameterized import parameterized from monai.transforms.utils_pytorch_numpy_unification import mode, percentile @@ -39,6 +40,14 @@ def test_percentile(self): results.append(percentile(arr, q)) assert_allclose(results[0], results[-1], type_test=False, atol=1e-4, rtol=1e-4) + def test_many_elements_quantile(self): # pytorch#64947 + for p in TEST_NDARRAYS: + x = p(np.random.randn(17_000_000)) + q = percentile(x, torch.tensor([10, 50])) + if isinstance(x, torch.Tensor): + self.assertIsInstance(q, torch.Tensor) + assert_allclose(q.shape, [2], type_test=False) + def test_fails(self): for p in TEST_NDARRAYS: for q in (-1, 101): @@ -61,4 +70,4 @@ def test_mode(self, array, expected, to_long): if __name__ == "__main__": - unittest.main() + unittest.main() \ No newline at end of file From 2dc9e2e3df0a65bf0345f2be16da5a764183f7d2 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 08:26:22 +0000 Subject: [PATCH 020/150] fix: unify operation, Doc-strings for input label, and replace lambda function with use no_collation Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 74 +++++++------------ .../utils_pytorch_numpy_unification.py | 62 +++++++++++++++- tests/test_utils_pytorch_numpy_unification.py | 2 +- 3 files changed, 90 insertions(+), 48 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 673501913f..3383cb8c9a 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -29,6 +29,8 @@ from monai.apps.utils import get_logger from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor +from monai.data.utils import no_collation +from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std from monai.utils import min_version, optional_import from monai.utils.misc import label_union @@ -46,7 +48,9 @@ class DataAnalyzer: The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only segmentation - problem is supported, so the user needs to provide paths to the image and label files. + problem is supported, so the user needs to provide paths to the image and label files. Also, label + data format is preferred to be (1,H,W,D), with the label index in the first dimension. If it is in + onehot format, it will be converted to the preferred format. Args: datalist: a Python dictionary storing group, fold, and other information of the medical @@ -102,7 +106,6 @@ def __init__( transforms.EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) transforms.Orientationd(keys=["image", "label"], axcodes="RAS"), transforms.EnsureTyped(keys=["image", "label"], data_type="tensor"), - # some dataset has onehot label size of (H,W,D,C). Only allow label index of size (1,H,W,D) transforms.Lambdad( keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x ), @@ -110,7 +113,7 @@ def __init__( ] ), ) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=lambda x: x) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=no_collation) # Whether to average all the modalities in the summary # If SUMMARY_AVERAGE is set to false, # the stats for each modality are calculated separately @@ -179,40 +182,31 @@ def _register_operations(self): """ # define basic operations for stats self.operations = { - "max": torch.max, - "mean": torch.mean, - "median": torch.median, - "min": torch.min, - "percentile": partial(torch.quantile, q=torch.tensor([0.005, 0.10, 0.90, 0.995], device=self.device)), - "stdev": partial(torch.std, unbiased=False), + "max": max, + "mean": mean, + "median": median, + "min": min, + "percentile": partial(percentile, q=np.array([0.5, 10, 90, 99.5])), + "stdev": std, } # allow mapping the output of self.operations to new keys (save computation time) # the output from torch.quantile is mapped to four keys. self.operations_mappingkey = { "percentile": ["percentile_00_5", "percentile_10_0", "percentile_90_0", "percentile_99_5"] } - # np version of self.operations. torch operation has inconsistent interfaces. - # only used in the summary part. - self.operations_np = { - "max": np.max, - "mean": np.mean, - "median": np.median, - "min": np.min, - "percentile": partial(np.quantile, q=[0.005, 0.10, 0.90, 0.995]), - "stdev": np.std, - } # define summary functions for output from self.operations. For example, # how to combine max intensity from each case (image) + # operation summary definition must accept dim input like torch.mean self.operations_summary = { - "max": np.max, - "mean": np.mean, - "median": np.mean, - "min": np.min, - "percentile_00_5": np.mean, - "percentile_99_5": np.mean, - "percentile_10_0": np.mean, - "percentile_90_0": np.mean, - "stdev": np.mean, + "max": max, + "mean": mean, + "median": mean, + "min": min, + "percentile_00_5": mean, + "percentile_99_5": mean, + "percentile_10_0": mean, + "percentile_90_0": mean, + "stdev": mean, } def _get_case_image_stats(self) -> Dict: @@ -429,13 +423,8 @@ def _intensity_summary(self, x: List, average: bool = False) -> Dict: value = [] for case in x: value.append([_[key] for _ in case]) - axis = (0,) if not average else None - try: - value = self.operations_summary[key](value, axis=axis) - except SyntaxWarning: - logger.debug("operation summary definition must accept axis input like np.mean") - warnings.warn("operation summary definition must accept axis input like np.mean") - pass + dim = (0,) if not average else None + value = self.operations_summary[key](value, dim=dim) result[key] = np.array(value).tolist() return result @@ -468,12 +457,11 @@ def _stats_opt_summary(self, datastat_list, average=False, is_label=False): axis = (0,) if average and len(datastat_list.shape) > 2: axis = (0, 1) - # Calculate statistics from the data using numpy. The torch max, min, median e.t.c have - # inconsistent interface for axis/dim input. Only used for summary + # Calculate statistics from the data using numpy. Only used for summary result = {} - for name, ops in self.operations_np.items(): + for name, ops in self.operations.items(): # get results - _result = ops(np.array(datastat_list), axis=axis).tolist() # post process with key mapping + _result = ops(np.array(datastat_list), dim=axis).tolist() # post process with key mapping mappingkeys = self.operations_mappingkey.get(name) if mappingkeys is not None: result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) @@ -500,13 +488,7 @@ def _stats_opt(self, raw_data): if not torch.is_tensor(raw_data): raw_data = torch.from_numpy(raw_data).to(self.device) # compute the results - # torch.quantile may fail with large input, if failed, use numpy version - try: - _result = ops(raw_data).data.cpu().numpy().tolist() - except Exception as e: - logger.debug(e, exc_info=True) - _result = self.operations_np[name](raw_data.cpu().numpy()).tolist() - pass + _result = ops(raw_data).data.cpu().numpy().tolist() # post process the data mappingkeys = self.operations_mappingkey.get(name) if mappingkeys is not None: diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 6dcac5ff83..6cec3f1154 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -401,4 +401,64 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: """ if isinstance(x, torch.Tensor) and hasattr(torch, "inverse"): # pytorch 1.7.0 return torch.inverse(x) # type: ignore - return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore \ No newline at end of file + return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore + + +def max(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: + """`torch.max` with equivalent implementation for numpy + + Args: + x: array/tensor + """ + if dim is None: + return torch.max(x, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, **kwargs) # type: ignore + else: + return torch.max(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, axis=dim, **kwargs) # type: ignore + + +def mean(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: + """`torch.mean` with equivalent implementation for numpy + + Args: + x: array/tensor + """ + if dim is None: + return torch.mean(x, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, **kwargs) # type: ignore + else: + return torch.mean(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, axis=dim, **kwargs) # type: ignore + + +def median(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: + """`torch.median` with equivalent implementation for numpy + + Args: + x: array/tensor + """ + if dim is None: + return torch.median(x, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, **kwargs) # type: ignore + else: + return torch.median(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, axis=dim, **kwargs) # type: ignore + + +def min(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: + """`torch.min` with equivalent implementation for numpy + + Args: + x: array/tensor + """ + if dim is None: + return torch.min(x, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, **kwargs) # type: ignore + else: + return torch.min(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, axis=dim, **kwargs) # type: ignore + + +def std(x: NdarrayOrTensor, dim: Optional[int] = None, unbias: Optional[bool] = False) -> NdarrayTensor: + """`torch.std` with equivalent implementation for numpy + + Args: + x: array/tensor + """ + if dim is None: + return torch.std(x, unbias) if isinstance(x, torch.Tensor) else np.std(x) # type: ignore + else: + return torch.std(x, dim, unbias) if isinstance(x, torch.Tensor) else np.std(x, axis=dim) # type: ignore diff --git a/tests/test_utils_pytorch_numpy_unification.py b/tests/test_utils_pytorch_numpy_unification.py index 2421315eca..2b4d78dba2 100644 --- a/tests/test_utils_pytorch_numpy_unification.py +++ b/tests/test_utils_pytorch_numpy_unification.py @@ -70,4 +70,4 @@ def test_mode(self, array, expected, to_long): if __name__ == "__main__": - unittest.main() \ No newline at end of file + unittest.main() From 43335a571f266111944b8e5a9d38d22f491ffdd8 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:08:48 +0000 Subject: [PATCH 021/150] add google fire to call the DataAnalyzer module in CLI Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 52 ++++++++++++------------------ tests/test_auto3d.py | 2 +- 2 files changed, 21 insertions(+), 33 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 3383cb8c9a..e1dc60316b 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -13,9 +13,7 @@ Step 1 of the AutoML pipeline. The dataset is analysized with this script. """ -import argparse import copy -import logging import time import warnings from functools import partial @@ -43,13 +41,13 @@ __all__ = ["DataAnalyzer"] -class DataAnalyzer: +class DataAnalyzer(object): """ The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only segmentation - problem is supported, so the user needs to provide paths to the image and label files. Also, label - data format is preferred to be (1,H,W,D), with the label index in the first dimension. If it is in + problem is supported, so the user needs to provide paths to the image and label files. Also, label + data format is preferred to be (1,H,W,D), with the label index in the first dimension. If it is in onehot format, it will be converted to the preferred format. Args: @@ -81,6 +79,19 @@ class DataAnalyzer: dataroot = '/datasets' # the directory where you have the image files (nii.gz) DataAnalyzer(datalist, dataroot) + Note: + The module can also be called from the command line interface (CLI) if MONAI is + installed with the source code. + + For example: + + .. code-block:: bash + + python monai/apps/auto3d/data_analyzer.py \ + get_all_case_stats \ + --datalist="my_datalist.json" \ + --dataroot="my_dataroot_dir" + """ def __init__( @@ -607,30 +618,7 @@ def get_all_case_stats(self) -> Dict: if __name__ == "__main__": - # The class can be run in the command line interface - parser = argparse.ArgumentParser(description="input") - parser.add_argument("--dataroot", type=str, required=True, help="data directory") - parser.add_argument("--datalist", type=str, required=True, help="input json") - parser.add_argument("--output_path", default="./datastats.yaml", type=str, help="output yaml") - parser.add_argument( - "--average", default=False, action="store_true", help="mix the multi-modal images for calculation" - ) - parser.add_argument( - "--do_ccp", default=False, action="store_true", help="do connected components calculation for label" - ) - parser.add_argument("--worker", type=int, default=2, help="worker number") - parser.add_argument("--debug", default=False, action="store_true", help="print logger debug output") - parser.add_argument("--device", type=str, default="cuda", help="device for running") - args = parser.parse_args() - analyser = DataAnalyzer( - args.datalist, - args.dataroot, - output_path=args.output_path, - average=args.average, - do_ccp=args.do_ccp, - worker=args.worker, - device=args.device, - ) - level = logging.DEBUG if args.debug else logging.INFO - logger.setLevel(level) - analyser.get_all_case_stats() + from monai.utils import optional_import + + fire, _ = optional_import("fire") + fire.Fire(DataAnalyzer) diff --git a/tests/test_auto3d.py b/tests/test_auto3d.py index 48fa3b6434..4504941cf5 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3d.py @@ -58,7 +58,7 @@ def test_data_analyzer(self): analyser = DataAnalyzer(fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers) datastat = analyser.get_all_case_stats() - assert len(datastat["stats_by_cases"]) == 4 + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) def tearDown(self) -> None: self.test_dir.cleanup() From 2c9275e1f38e1d13a7463bb270ed5ed1a45310f4 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:12:23 +0000 Subject: [PATCH 022/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index e1dc60316b..d6dac4e88c 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -41,7 +41,7 @@ __all__ = ["DataAnalyzer"] -class DataAnalyzer(object): +class DataAnalyzer: """ The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. From aa0cefb011eac52655e311540391b30addac8782 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:32:08 +0000 Subject: [PATCH 023/150] fix: fire usage Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__main__.py | 19 +++++++++++++++++++ monai/apps/auto3d/data_analyzer.py | 10 ++-------- 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 monai/apps/auto3d/__main__.py diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py new file mode 100644 index 0000000000..a3bfc90eb5 --- /dev/null +++ b/monai/apps/auto3d/__main__.py @@ -0,0 +1,19 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from monai.apps.auto3d.data_analyzer import DataAnalyzer + +if __name__ == "__main__": + from monai.utils import optional_import + + fire, _ = optional_import("fire") + fire.Fire() diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index d6dac4e88c..2fa2067914 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -87,7 +87,8 @@ class DataAnalyzer: .. code-block:: bash - python monai/apps/auto3d/data_analyzer.py \ + python monai/apps/auto3d \ + DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ --dataroot="my_dataroot_dir" @@ -615,10 +616,3 @@ def get_all_case_stats(self) -> Dict: ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml") logger.debug(f"total time {time.time() - start}") return self.results - - -if __name__ == "__main__": - from monai.utils import optional_import - - fire, _ = optional_import("fire") - fire.Fire(DataAnalyzer) From 3495aa5e1e62f4a7397314882df7ae42f8386764 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 09:34:10 +0000 Subject: [PATCH 024/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/__main__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index a3bfc90eb5..58c99ab504 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -10,7 +10,6 @@ # limitations under the License. -from monai.apps.auto3d.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import From 8077f9547eb9669b41e12c524a37838cb5c62398 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 21:43:39 +0800 Subject: [PATCH 025/150] revert autofix that removes the fire dependency Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__main__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index 58c99ab504..a3bfc90eb5 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -10,6 +10,7 @@ # limitations under the License. +from monai.apps.auto3d.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import From ac8e7ec1917c064d5bc5f860b539d8998b205e89 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Wed, 10 Aug 2022 23:38:03 +0800 Subject: [PATCH 026/150] manual merge with dev Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- .../utils_pytorch_numpy_unification.py | 20 +++++++++---------- tests/test_utils_pytorch_numpy_unification.py | 15 ++++++++------ 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 6cec3f1154..a2633851f5 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -42,6 +42,11 @@ "stack", "mode", "unique", + "max", + "min", + "median", + "mean", + "std", ] @@ -81,11 +86,9 @@ def percentile( x: NdarrayOrTensor, q, dim: Optional[int] = None, keepdim: bool = False, **kwargs ) -> Union[NdarrayOrTensor, float, int]: """`np.percentile` with equivalent implementation for torch. - Pytorch uses `quantile`. For more details please refer to: https://pytorch.org/docs/stable/generated/torch.quantile.html. https://numpy.org/doc/stable/reference/generated/numpy.percentile.html. - Args: x: input data q: percentile to compute (should in range 0 <= q <= 100) @@ -94,22 +97,19 @@ def percentile( keepdim: whether the output data has dim retained or not. kwargs: if `x` is numpy array, additional args for `np.percentile`, more details: https://numpy.org/doc/stable/reference/generated/numpy.percentile.html. - Returns: Resulting value (scalar) """ - if np.isscalar(q): - if not 0 <= q <= 100: # type: ignore - raise ValueError - elif any(q < 0) or any(q > 100): - raise ValueError + q_np = convert_data_type(q, output_type=np.ndarray, wrap_sequence=True)[0] + if ((q_np < 0) | (q_np > 100)).any(): + raise ValueError(f"q values must be in [0, 100], got values: {q}.") result: Union[NdarrayOrTensor, float, int] if isinstance(x, np.ndarray) or (isinstance(x, torch.Tensor) and torch.numel(x) > 1_000_000): # pytorch#64947 _x = convert_data_type(x, output_type=np.ndarray)[0] - result = np.percentile(_x, q, axis=dim, keepdims=keepdim, **kwargs) + result = np.percentile(_x, q_np, axis=dim, keepdims=keepdim, **kwargs) result = convert_to_dst_type(result, x)[0] else: - q = convert_to_dst_type(q / 100.0, x)[0] + q = convert_to_dst_type(q_np / 100.0, x)[0] result = torch.quantile(x, q, dim=dim, keepdim=keepdim) return result diff --git a/tests/test_utils_pytorch_numpy_unification.py b/tests/test_utils_pytorch_numpy_unification.py index 2b4d78dba2..7041a09f52 100644 --- a/tests/test_utils_pytorch_numpy_unification.py +++ b/tests/test_utils_pytorch_numpy_unification.py @@ -17,7 +17,7 @@ from monai.transforms.utils_pytorch_numpy_unification import mode, percentile from monai.utils import set_determinism -from tests.utils import TEST_NDARRAYS, assert_allclose +from tests.utils import TEST_NDARRAYS, assert_allclose, skip_if_quick TEST_MODE = [] for p in TEST_NDARRAYS: @@ -40,13 +40,16 @@ def test_percentile(self): results.append(percentile(arr, q)) assert_allclose(results[0], results[-1], type_test=False, atol=1e-4, rtol=1e-4) + @skip_if_quick def test_many_elements_quantile(self): # pytorch#64947 for p in TEST_NDARRAYS: - x = p(np.random.randn(17_000_000)) - q = percentile(x, torch.tensor([10, 50])) - if isinstance(x, torch.Tensor): - self.assertIsInstance(q, torch.Tensor) - assert_allclose(q.shape, [2], type_test=False) + for elements in (1000, 17_000_000): + for t in [*TEST_NDARRAYS, list]: + x = p(np.random.randn(elements)) + q = percentile(x, t([10, 50])) + if isinstance(x, torch.Tensor): + self.assertIsInstance(q, torch.Tensor) + assert_allclose(q.shape, [2], type_test=False) def test_fails(self): for p in TEST_NDARRAYS: From 2085afe3e8cae2c2de4ffd0d5933dbf7f574ffd6 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 11 Aug 2022 03:32:20 +0000 Subject: [PATCH 027/150] fix: avoid import from being deleted by pre-commit.ci hool Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__main__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index a3bfc90eb5..d6d313880f 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -16,4 +16,4 @@ from monai.utils import optional_import fire, _ = optional_import("fire") - fire.Fire() + fire.Fire({"DataAnalyzer": DataAnalyzer}) From 9d9b9e56eb6c33aafdf7a888d5aa63e3fdedd0a2 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 10 Aug 2022 15:38:52 +0000 Subject: [PATCH 028/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/__main__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index d6d313880f..114700db0d 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -10,7 +10,6 @@ # limitations under the License. -from monai.apps.auto3d.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import From 9d3704b18d460fee876269bc5f93717ba4c3c606 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 11 Aug 2022 02:56:19 +0000 Subject: [PATCH 029/150] fix fire test Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__init__.py | 2 ++ monai/apps/auto3d/__main__.py | 1 + 2 files changed, 3 insertions(+) diff --git a/monai/apps/auto3d/__init__.py b/monai/apps/auto3d/__init__.py index 1e97f89407..1e717be7b7 100644 --- a/monai/apps/auto3d/__init__.py +++ b/monai/apps/auto3d/__init__.py @@ -8,3 +8,5 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +from .data_analyzer import DataAnalyzer diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index 114700db0d..d6d313880f 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -10,6 +10,7 @@ # limitations under the License. +from monai.apps.auto3d.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import From f8b4ddce30e4a97321286b004440e210b7e1b0c8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 11 Aug 2022 02:56:51 +0000 Subject: [PATCH 030/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/__main__.py | 1 - 1 file changed, 1 deletion(-) diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index d6d313880f..114700db0d 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -10,7 +10,6 @@ # limitations under the License. -from monai.apps.auto3d.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import From 8248ed65ed22747d0f277e1d282df4cea6553e79 Mon Sep 17 00:00:00 2001 From: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 11 Aug 2022 03:39:01 +0000 Subject: [PATCH 031/150] fix import Signed-off-by: Mingxin <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/__main__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/monai/apps/auto3d/__main__.py b/monai/apps/auto3d/__main__.py index 114700db0d..d6d313880f 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/apps/auto3d/__main__.py @@ -10,6 +10,7 @@ # limitations under the License. +from monai.apps.auto3d.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import From 094f35da2284b096fdda2765b5c47d269b362b95 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:08:31 +0800 Subject: [PATCH 032/150] fix: merge dev docstring into the current branch Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/transforms/utils_pytorch_numpy_unification.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index a2633851f5..9d9937934a 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -86,9 +86,11 @@ def percentile( x: NdarrayOrTensor, q, dim: Optional[int] = None, keepdim: bool = False, **kwargs ) -> Union[NdarrayOrTensor, float, int]: """`np.percentile` with equivalent implementation for torch. + Pytorch uses `quantile`. For more details please refer to: https://pytorch.org/docs/stable/generated/torch.quantile.html. https://numpy.org/doc/stable/reference/generated/numpy.percentile.html. + Args: x: input data q: percentile to compute (should in range 0 <= q <= 100) @@ -97,6 +99,7 @@ def percentile( keepdim: whether the output data has dim retained or not. kwargs: if `x` is numpy array, additional args for `np.percentile`, more details: https://numpy.org/doc/stable/reference/generated/numpy.percentile.html. + Returns: Resulting value (scalar) """ @@ -114,6 +117,7 @@ def percentile( return result + def where(condition: NdarrayOrTensor, x=None, y=None) -> NdarrayOrTensor: """ Note that `torch.where` may convert y.dtype to x.dtype. From 0aa05dc75046e7107018d03b071312559ae48d43 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:59:19 +0800 Subject: [PATCH 033/150] fix: format Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/transforms/utils_pytorch_numpy_unification.py | 1 - 1 file changed, 1 deletion(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 9d9937934a..bf470ce820 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -117,7 +117,6 @@ def percentile( return result - def where(condition: NdarrayOrTensor, x=None, y=None) -> NdarrayOrTensor: """ Note that `torch.where` may convert y.dtype to x.dtype. From 0618da51281484add584a8da570cb2d266836c1b Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:15:46 +0800 Subject: [PATCH 034/150] fix docstrings Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- .../utils_pytorch_numpy_unification.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index bf470ce820..e9e41455dc 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -141,7 +141,7 @@ def nonzero(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.nonzero` with equivalent implementation for torch. Args: - x: array/tensor + x: array/tensor. Returns: Index unravelled for given shape @@ -208,7 +208,7 @@ def ravel(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.ravel` with equivalent implementation for torch. Args: - x: array/tensor to ravel + x: array/tensor. to ravel Returns: Return a contiguous flattened array/tensor. @@ -334,7 +334,7 @@ def isnan(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.isnan` with equivalent implementation for torch. Args: - x: array/tensor + x: array/tensor. """ if isinstance(x, np.ndarray): @@ -346,7 +346,7 @@ def ascontiguousarray(x: NdarrayTensor, **kwargs) -> NdarrayOrTensor: """`np.ascontiguousarray` with equivalent implementation for torch (`contiguous`). Args: - x: array/tensor + x: array/tensor. kwargs: if `x` is PyTorch Tensor, additional args for `torch.contiguous`, more details: https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html. @@ -364,8 +364,8 @@ def stack(x: Sequence[NdarrayTensor], dim: int) -> NdarrayTensor: """`np.stack` with equivalent implementation for torch. Args: - x: array/tensor - dim: dimension along which to perform the stack (referred to as `axis` by numpy) + x: array/tensor. + dim: dimension along which to perform the stack (referred to as `axis` by numpy). """ if isinstance(x[0], np.ndarray): return np.stack(x, dim) # type: ignore @@ -376,8 +376,8 @@ def mode(x: NdarrayTensor, dim: int = -1, to_long: bool = True) -> NdarrayTensor """`torch.mode` with equivalent implementation for numpy. Args: - x: array/tensor - dim: dimension along which to perform `mode` (referred to as `axis` by numpy) + x: array/tensor. + dim: dimension along which to perform `mode` (referred to as `axis` by numpy). to_long: convert input to long before performing mode. """ dtype = torch.int64 if to_long else None @@ -391,7 +391,7 @@ def unique(x: NdarrayTensor) -> NdarrayTensor: """`torch.unique` with equivalent implementation for numpy. Args: - x: array/tensor + x: array/tensor. """ return torch.unique(x) if isinstance(x, torch.Tensor) else np.unique(x) # type: ignore @@ -400,7 +400,7 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: """`torch.linalg.inv` with equivalent implementation for numpy. Args: - x: array/tensor + x: array/tensor. """ if isinstance(x, torch.Tensor) and hasattr(torch, "inverse"): # pytorch 1.7.0 return torch.inverse(x) # type: ignore @@ -411,7 +411,7 @@ def max(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTenso """`torch.max` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.max(x, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, **kwargs) # type: ignore @@ -423,7 +423,7 @@ def mean(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTens """`torch.mean` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.mean(x, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, **kwargs) # type: ignore @@ -435,7 +435,7 @@ def median(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTe """`torch.median` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.median(x, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, **kwargs) # type: ignore @@ -447,7 +447,7 @@ def min(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTenso """`torch.min` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.min(x, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, **kwargs) # type: ignore @@ -459,7 +459,7 @@ def std(x: NdarrayOrTensor, dim: Optional[int] = None, unbias: Optional[bool] = """`torch.std` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.std(x, unbias) if isinstance(x, torch.Tensor) else np.std(x) # type: ignore From e51777af4bd359eac8c1f6afc47f900fff191797 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:16:52 +0800 Subject: [PATCH 035/150] fix docstrings Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- .../utils_pytorch_numpy_unification.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index e9e41455dc..2508fad584 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -92,8 +92,8 @@ def percentile( https://numpy.org/doc/stable/reference/generated/numpy.percentile.html. Args: - x: input data - q: percentile to compute (should in range 0 <= q <= 100) + x: input data. + q: percentile to compute (should in range 0 <= q <= 100). dim: the dim along which the percentiles are computed. default is to compute the percentile along a flattened version of the array. keepdim: whether the output data has dim retained or not. @@ -175,8 +175,8 @@ def unravel_index(idx, shape) -> NdarrayOrTensor: """`np.unravel_index` with equivalent implementation for torch. Args: - idx: index to unravel - shape: shape of array/tensor + idx: index to unravel. + shape: shape of array/tensor. Returns: Index unravelled for given shape @@ -194,8 +194,8 @@ def unravel_indices(idx, shape) -> NdarrayOrTensor: """Computing unravel coordinates from indices. Args: - idx: a sequence of indices to unravel - shape: shape of array/tensor + idx: a sequence of indices to unravel. + shape: shape of array/tensor. Returns: Stacked indices unravelled for given shape @@ -208,7 +208,7 @@ def ravel(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.ravel` with equivalent implementation for torch. Args: - x: array/tensor. to ravel + x: array/tensor. to ravel. Returns: Return a contiguous flattened array/tensor. @@ -226,8 +226,8 @@ def any_np_pt(x: NdarrayOrTensor, axis: Union[int, Sequence[int]]) -> NdarrayOrT For pytorch, convert to boolean for compatibility with older versions. Args: - x: input array/tensor - axis: axis to perform `any` over + x: input array/tensor. + axis: axis to perform `any` over. Returns: Return a contiguous flattened array/tensor. @@ -250,8 +250,8 @@ def maximum(a: NdarrayOrTensor, b: NdarrayOrTensor) -> NdarrayOrTensor: """`np.maximum` with equivalent implementation for torch. Args: - a: first array/tensor - b: second array/tensor + a: first array/tensor. + b: second array/tensor. Returns: Element-wise maximum between two arrays/tensors. From 9cb81a45cbbcb9dc2c15b0a16f04ac26462e5c7a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:26:01 +0800 Subject: [PATCH 036/150] Update monai/apps/auto3d/data_analyzer.py Co-authored-by: Wenqi Li <831580+wyli@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 2fa2067914..ac1ca1e8a7 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -613,6 +613,6 @@ def get_all_case_stats(self) -> Dict: logger.debug(f"Process data spent {time.time() - s}") s = time.time() self._get_case_summary() - ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml") + ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml", default_flow_style=None) logger.debug(f"total time {time.time() - start}") return self.results From e46fced8539644a6c6648831913a0ff470d40dff Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:21:11 +0800 Subject: [PATCH 037/150] fix docstrings Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index ac1ca1e8a7..83450b9af1 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -166,9 +166,7 @@ def _get_my_stats(self): # in the DataAnalyzer class. case_stats will be writte case_stats = {'my_stats': my_fun(processed_data)}. return case_stats - def _get_my_stats_sumumary(self): - case_stats_summary = {'stats1': summary_function}. The summary_function will process - + def _get_my_stats_sumumary(self): The _get_my_stats will process the entire datasets case_stats_summary = { "my_stats_summary": {"sum": self._get_my_stats} } @@ -595,6 +593,18 @@ def get_all_case_stats(self) -> Dict: Returns - the data statistics dictionary + - "stats_summary" (summary statistics of the entire datasets) + - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations_summary) + - "image_foreground_stats" (info of the intensity for the non-zero labeled voxels) + - "label_stats" (info of the labels, pixel percentange, image_intensity, and each invidiual label) + - "stats_by_cases" + - List type value. Each element of the list is statistics of a image-label info. For example: + - "image" (value is the path to an image) + - "label" (value is the path to the corresponding label) + - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) + - "image_foreground_stats" (similar to above) + - "label_stats" + """ start = time.time() self.results["stats_summary"] = {} From 2596edd0eea953c5e64eef2452938f117dd4bb0a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:38:47 +0800 Subject: [PATCH 038/150] fix docstrings for nan/inf Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 83450b9af1..543a8bcde2 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -547,12 +547,18 @@ def get_case_stats(self, batch_data): Returns: a dictionary to summarize all the statistics for each case in following structure - - image_stats + - "image_stats" - shape, channels,cropped_shape, spacing, intensity - - image_foreground_stats - - intensity - - label_stats + - "image_foreground_stats" + - "intensity" + - "label_stats" - labels, pxiel_percentage, image_intensity, label_0, label_1 + + Note: + nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value + may be generated and carried over in the computation. In such cases, the output dictionary + will include .nan/.inf in the statistics. + """ self.data["image"] = batch_data["image"].to(self.device) @@ -604,7 +610,12 @@ def get_all_case_stats(self) -> Dict: - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) - "image_foreground_stats" (similar to above) - "label_stats" - + + Note: + nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value + may be generated and carried over in the computation. In such cases, the output dictionary + will include .nan/.inf in the statistics. + """ start = time.time() self.results["stats_summary"] = {} From a359282d2d11f533e31e2de8431c7fa460770cc8 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:22:17 +0800 Subject: [PATCH 039/150] add missing key handling Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 543a8bcde2..231a6f038d 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -554,6 +554,8 @@ def get_case_stats(self, batch_data): - "label_stats" - labels, pxiel_percentage, image_intensity, label_0, label_1 + Raise + ValueError if data loader is unable to populate "label_meta_dict" Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary @@ -564,7 +566,10 @@ def get_case_stats(self, batch_data): self.data["image"] = batch_data["image"].to(self.device) self.data["label"] = batch_data["label"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] - self.data["label_meta_dict"] = batch_data["label_meta_dict"] + if "label_meta_dict" in batch_data: + self.data["label_meta_dict"] = batch_data["label_meta_dict"] + else: + raise ValueError("Cannot find label_meta_dict from the output of the data loader") case_stats = {} for func in self.functions: case_stats.update(func()) From f9982228e923d3ee5138310b3f258c20375df81a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:56:35 +0800 Subject: [PATCH 040/150] fix _ usage and docstring Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 94 +++++++++++++++--------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 231a6f038d..50d971725a 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -111,7 +111,7 @@ def __init__( self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( - data=files, + data=train_files, transform=transforms.Compose( [ transforms.LoadImaged(keys=["image", "label"]), @@ -221,33 +221,29 @@ def _register_operations(self): def _get_case_image_stats(self) -> Dict: """ - Generate image statistics for cases in datalist ({'image','label'}) - Statistics values are stored under the key "image_stats" + Generate image statistics for cases in datalist ({'image','label'}). + Statistics values are stored under the key "image_stats". Returns: - a dictionary of the images stats - - image_stats - - shape - - channel - - cropped_shape - - spacing - - intensity + a dictionary of the images stats. + - "image_stats" + - "shape", "channel", "cropped_shape", "spacing", "intensity" """ # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] ndas = [ndas[i] for i in range(ndas.shape[0])] if "nda_croppeds" not in self.data: - self.data["nda_croppeds"] = [self._get_foreground_image(_) for _ in ndas] + self.data["nda_croppeds"] = [self._get_foreground_image(nda) for nda in ndas] nda_croppeds = self.data["nda_croppeds"] # perform calculation case_stats = { "image_stats": { - "shape": [list(_.shape) for _ in ndas], + "shape": [list(nda.shape) for nda in ndas], "channels": len(ndas), - "cropped_shape": [list(_.shape) for _ in nda_croppeds], + "cropped_shape": [list(nda_cropped.shape) for nda_cropped in nda_croppeds], "spacing": np.tile(np.diag(self.data["image_meta_dict"]["affine"])[:3], [len(ndas), 1]).tolist(), - "intensity": [self._stats_opt(_) for _ in nda_croppeds], + "intensity": [self._stats_opt(nda_cropped) for nda_cropped in nda_croppeds], } } logger.debug(f"Get image stats spent {time.time()-start}") @@ -291,10 +287,10 @@ def _get_case_foreground_image_stats(self) -> Dict: ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_l = self.data["label"] if "nda_foreground" not in self.data: - self.data["nda_foreground"] = [self._get_foreground_label(_, ndas_l) for _ in ndas] + self.data["nda_foreground"] = [self._get_foreground_label(nda, ndas_l) for nda in ndas] nda_foreground = self.data["nda_foreground"] - case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(_) for _ in nda_foreground]}} + case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(nda) for nda in nda_foreground]}} logger.debug(f"Get foreground image data stats spent {time.time() - start}") return case_stats @@ -316,14 +312,14 @@ def _get_label_stats(self) -> Dict: Returns a dictionary with following structures: - - label_stats - - labels: class_IDs of the label + background class - - pixel_percentanges - - image_intensity - - label_N (N=0,1,...) - - image_intensity - - shape - - ncomponents + - "label_stats" + - "labels" : class_IDs of the label + background class + - "pixel_percentanges" + - "image_intensity" + - "label_N" (N=0,1,...) + - "image_intensity" + - "shape" + - "ncomponents" """ # retrieve transformed data from self.data start = time.time() @@ -335,7 +331,7 @@ def _get_label_stats(self) -> Dict: "label_stats": { "labels": unique_label, "pixel_percentage": None, - "image_intensity": [self._stats_opt(_[ndas_l > 0]) for _ in ndas], + "image_intensity": [self._stats_opt(nda[ndas_l > 0]) for nda in ndas], } } start = time.time() @@ -344,7 +340,7 @@ def _get_label_stats(self) -> Dict: label_dict: Dict[str, Any] = {} mask_index = ndas_l == index s = time.time() - label_dict["image_intensity"] = [self._stats_opt(_[mask_index]) for _ in ndas] + label_dict["image_intensity"] = [self._stats_opt(nda[mask_index]) for nda in ndas] logger.debug(f" label {index} stats takes {time.time() - s}") pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() if self.DO_CONNECTED_COMP: @@ -394,48 +390,50 @@ def _get_label_stats_summary(self): self.gather_summary.update(case_stats_summary) @staticmethod - def _pixelpercent_summary(x): + def _pixelpercent_summary(xs): """ Define the summary function for the pixel percentage over the whole dataset. Args - x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + Length of xs is number of data samples. Returns a dictionary showing the percentage of labels, with numeric keys (0, 1, ...) """ percent_summary = {} - for _ in x: - for key, value in _.items(): + for x in xs: + for key, value in x.items(): percent_summary[key] = percent_summary.get(key, 0) + value total_percent = np.sum(list(percent_summary.values())) for key, value in percent_summary.items(): percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, x: List, average: bool = False) -> Dict: + def _intensity_summary(self, xs: List, average: bool = False) -> Dict: """ - Define the summary function for stats over the whole dataset + Define the summary function for stats over the whole dataset. Combine overall intensity statistics for all cases in datalist. The intensity features are min, max, mean, std, percentile defined in self._stats_opt(). - Values may be averaged over all the cases if the `average` is set to be True + Values may be averaged over all the cases if the `average` is set to be True. Args: - x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] - average: if average is true, operation will be applied along axis 0 and average out the values + xs: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]]. Length of xs is number of data samples. + average: if average is true, operation will be applied along axis 0 and average out the values. Returns - a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations + a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations. """ result = {} - for key in x[0][0].keys(): # .keys() not required, len(x) = N data + for op_key in xs[0][0]: value = [] - for case in x: - value.append([_[key] for _ in case]) + for x in xs: + value.append([stats[op_key] for stats in x]) dim = (0,) if not average else None - value = self.operations_summary[key](value, dim=dim) - result[key] = np.array(value).tolist() + value = self.operations_summary[op_key](value, dim=dim) + result[op_key] = np.array(value).tolist() + return result def _stats_opt_summary(self, datastat_list, average=False, is_label=False): @@ -460,10 +458,10 @@ def _stats_opt_summary(self, datastat_list, average=False, is_label=False): if type(datastat_list[0]) is list or type(datastat_list[0]) is np.array: if not is_label: # size = [num of cases, number of modalities, stats] - datastat_list = np.concatenate([[np.array(_) for _ in datastat_list]]) + datastat_list = np.concatenate([[np.array(datastat) for datastat in datastat_list]]) else: # size = [num of cases, stats] - datastat_list = np.concatenate([np.array(_) for _ in datastat_list]) + datastat_list = np.concatenate([np.array(datastat) for datastat in datastat_list]) axis = (0,) if average and len(datastat_list.shape) > 2: axis = (0, 1) @@ -484,7 +482,7 @@ def _stats_opt(self, raw_data): Calculate statistics calculation operations (ops) on the images/labels Args: - raw_data: ndarray image or label + raw_data: ndarray image or label. Returns: a dictionary to list out the statistics based on give operations (ops). For example, keys can include 'max', 'min', @@ -541,9 +539,11 @@ def get_case_stats(self, batch_data): """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data Args: - batch_data: monai dataloader batch data - images: image with shape [modality, image_shape] - label: label with shape [image_shape] + batch_data has follwing keys (monai dataloader batch data) + - "images" (image with shape [modality, image_shape]) + - "label" (label with shape [image_shape]) + - "image_meta_dict" (meta info of the image data) + - "label_meta_dict" (meta info of the label data) Returns: a dictionary to summarize all the statistics for each case in following structure From d3ad118d586b1923fda73e9d8095a5a5958dd3c6 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:57:19 +0800 Subject: [PATCH 041/150] fix var name update Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 50d971725a..6743054214 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -111,7 +111,7 @@ def __init__( self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( - data=train_files, + data=files, transform=transforms.Compose( [ transforms.LoadImaged(keys=["image", "label"]), From 8f97b3e6db30557bb09e7fd292d8ca891b99b57e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:15:50 +0800 Subject: [PATCH 042/150] add warning for users when output_path file exists Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 6743054214..b4984086f7 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -17,6 +17,7 @@ import time import warnings from functools import partial +from os import path from typing import Any, Dict, List, Union import numpy as np @@ -108,6 +109,9 @@ def __init__( """ The initializer will load the data and register the functions for data statistics gathering. """ + if path.isfile(output_path): + warnings.warn(f"File {output_path} already exists and will be overwritten.") + logger.debug(f"{output_path} will be overwritten by a new datastat.") self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( @@ -395,7 +399,7 @@ def _pixelpercent_summary(xs): Define the summary function for the pixel percentage over the whole dataset. Args - xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. Length of xs is number of data samples. Returns @@ -433,7 +437,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: dim = (0,) if not average else None value = self.operations_summary[op_key](value, dim=dim) result[op_key] = np.array(value).tolist() - + return result def _stats_opt_summary(self, datastat_list, average=False, is_label=False): @@ -553,7 +557,7 @@ def get_case_stats(self, batch_data): - "intensity" - "label_stats" - labels, pxiel_percentage, image_intensity, label_0, label_1 - + Raise ValueError if data loader is unable to populate "label_meta_dict" Note: @@ -615,12 +619,12 @@ def get_all_case_stats(self) -> Dict: - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) - "image_foreground_stats" (similar to above) - "label_stats" - + Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary will include .nan/.inf in the statistics. - + """ start = time.time() self.results["stats_summary"] = {} From c90a289ba07d2505478d43e551781390a9e07069 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:54:35 +0800 Subject: [PATCH 043/150] add optional argument definitions Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index b4984086f7..61aefe3e15 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Union +from typing import Any, Dict, List, Union, Optional import numpy as np import torch @@ -99,12 +99,12 @@ class DataAnalyzer: def __init__( self, datalist: Union[str, Dict], - dataroot: str, - output_path: str = "./data_stats.yaml", - average: bool = False, - do_ccp: bool = True, - device: Union[str, torch.device] = "cuda", - worker: int = 2, + dataroot: Optional[str] = "", + output_path: Optional[str] = "./data_stats.yaml", + average: Optional[bool] = False, + do_ccp: Optional[bool] = True, + device: Optional[Union[str, torch.device]] = "cuda", + worker: Optional[int] = 2, ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -414,7 +414,7 @@ def _pixelpercent_summary(xs): percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, xs: List, average: bool = False) -> Dict: + def _intensity_summary(self, xs: List, average: Optional[bool] = False) -> Dict: """ Define the summary function for stats over the whole dataset. Combine overall intensity statistics for all cases in datalist. The intensity features are @@ -440,7 +440,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: return result - def _stats_opt_summary(self, datastat_list, average=False, is_label=False): + def _stats_opt_summary(self, datastat_list, average: Optional[bool] = False, is_label: Optional[bool] = False): """ Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. From e7ca3792211d36ddee4cd377d59e3b1d2115a47e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 22:33:59 +0800 Subject: [PATCH 044/150] fix format Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 61aefe3e15..53a919bf7e 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Union, Optional +from typing import Any, Dict, List, Optional, Union import numpy as np import torch From b8d91e41394acae73967001b6b32e040cda81195 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:11:06 +0800 Subject: [PATCH 045/150] add optional argument image_only Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 63 +++++++++++++++++------------- tests/test_auto3d.py | 12 +++++- 2 files changed, 47 insertions(+), 28 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 53a919bf7e..ba351c80fa 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -105,6 +105,7 @@ def __init__( do_ccp: Optional[bool] = True, device: Optional[Union[str, torch.device]] = "cuda", worker: Optional[int] = 2, + image_only: Optional[bool] = False, ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -113,22 +114,29 @@ def __init__( warnings.warn(f"File {output_path} already exists and will be overwritten.") logger.debug(f"{output_path} will be overwritten by a new datastat.") self.output_path = output_path + self.image_only = image_only + + if self.image_only: + keys = ["image"] + else: + keys = ["image", "label"] + + transform_list = [ + transforms.LoadImaged(keys=keys), + transforms.EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + transforms.Orientationd(keys=keys, axcodes="RAS"), + transforms.EnsureTyped(keys=keys, data_type="tensor"), + ] + + if not self.image_only: + transform_list += [ + transforms.Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True)), + transforms.SqueezeDimd(keys=["label"], dim=0), + ] + files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) - ds = data.Dataset( - data=files, - transform=transforms.Compose( - [ - transforms.LoadImaged(keys=["image", "label"]), - transforms.EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) - transforms.Orientationd(keys=["image", "label"], axcodes="RAS"), - transforms.EnsureTyped(keys=["image", "label"], data_type="tensor"), - transforms.Lambdad( - keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x - ), - transforms.SqueezeDimd(keys=["label"], dim=0), # make label (H,W,D) - ] - ), - ) + ds = data.Dataset(data=files, transform=transforms.Compose(transform_list)) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=no_collation) # Whether to average all the modalities in the summary # If SUMMARY_AVERAGE is set to false, @@ -183,12 +191,11 @@ def _register_functions(self): self.function_summary.append(self._get_my_stats_sumumary) """ - self.functions = [self._get_case_image_stats, self._get_case_foreground_image_stats, self._get_label_stats] - self.functions_summary = [ - self._get_case_image_stats_summary, - self._get_case_foreground_image_stats_summary, - self._get_label_stats_summary, - ] + self.functions = [self._get_case_image_stats] + self.functions_summary = [self._get_case_image_stats_summary] + if not self.image_only: + self.functions += [self._get_case_foreground_image_stats, self._get_label_stats] + self.functions_summary += [self._get_case_foreground_image_stats_summary, self._get_label_stats_summary] def _register_operations(self): """ @@ -568,12 +575,10 @@ def get_case_stats(self, batch_data): """ self.data["image"] = batch_data["image"].to(self.device) - self.data["label"] = batch_data["label"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] - if "label_meta_dict" in batch_data: + if not self.image_only: + self.data["label"] = batch_data["label"].to(self.device) self.data["label_meta_dict"] = batch_data["label_meta_dict"] - else: - raise ValueError("Cannot find label_meta_dict from the output of the data loader") case_stats = {} for func in self.functions: case_stats.update(func()) @@ -635,9 +640,13 @@ def get_all_case_stats(self) -> Dict: for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] - label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] + if self.image_only: + case_stat = {"image": images_file} + else: + label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] + case_stat = {"image": images_file, "label": label_file} + logger.debug(f"Load data spent {time.time() - s}") - case_stat = {"image": images_file, "label": label_file} case_stat.update(self.get_case_stats(batch_data[0])) self.results["stats_by_cases"].append(case_stat) logger.debug(f"Process data spent {time.time() - s}") diff --git a/tests/test_auto3d.py b/tests/test_auto3d.py index 4504941cf5..586b7b2c95 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3d.py @@ -25,7 +25,7 @@ n_workers = 0 if sys.platform in ("win32", "darwin") else 2 fake_datalist = { - "testing": [{"image": "val_001.fake.nii.gz"}], + "testing": [{"image": "val_001.fake.nii.gz"}, {"image": "val_002.fake.nii.gz"}], "training": [ {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, @@ -60,6 +60,16 @@ def test_data_analyzer(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_data_analyzer_image_only(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, image_only=True + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def tearDown(self) -> None: self.test_dir.cleanup() From 52b9bfeb39ff40a2aa876146aaac10d718bcd389 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:16:34 +0800 Subject: [PATCH 046/150] fix optional remove Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index ba351c80fa..88982cc975 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Union import numpy as np import torch @@ -99,13 +99,13 @@ class DataAnalyzer: def __init__( self, datalist: Union[str, Dict], - dataroot: Optional[str] = "", - output_path: Optional[str] = "./data_stats.yaml", - average: Optional[bool] = False, - do_ccp: Optional[bool] = True, - device: Optional[Union[str, torch.device]] = "cuda", - worker: Optional[int] = 2, - image_only: Optional[bool] = False, + dataroot: str = "", + output_path: str = "./data_stats.yaml", + average: bool = False, + do_ccp: bool = True, + device: Union[str, torch.device] = "cuda", + worker: int = 2, + image_only: bool = False, ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -421,7 +421,7 @@ def _pixelpercent_summary(xs): percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, xs: List, average: Optional[bool] = False) -> Dict: + def _intensity_summary(self, xs: List, average: bool = False) -> Dict: """ Define the summary function for stats over the whole dataset. Combine overall intensity statistics for all cases in datalist. The intensity features are @@ -447,7 +447,7 @@ def _intensity_summary(self, xs: List, average: Optional[bool] = False) -> Dict: return result - def _stats_opt_summary(self, datastat_list, average: Optional[bool] = False, is_label: Optional[bool] = False): + def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False): """ Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. From cb1bbb25ef18967e0fd21f57f48f0eaca68ce5c3 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:30:31 +0800 Subject: [PATCH 047/150] fix docstring Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 88982cc975..d532a0d71d 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -60,6 +60,7 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. + image_only: boolean set to True if the user wants to use the DataAnalyzer on a dataset without labels. For example: @@ -566,7 +567,7 @@ def get_case_stats(self, batch_data): - labels, pxiel_percentage, image_intensity, label_0, label_1 Raise - ValueError if data loader is unable to populate "label_meta_dict" + ValueError if data loader is unable to find "label" or "label_meta_dict" Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary @@ -577,6 +578,10 @@ def get_case_stats(self, batch_data): self.data["image"] = batch_data["image"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] if not self.image_only: + if "label" not in batch_data: + raise ValueError("label not found. Please set image_only to True if there is no label files") + if "label_meta_dict" not in batch_data: + raise ValueError("label_meta_dict not found. Please set image_only to True if there is no label files") self.data["label"] = batch_data["label"].to(self.device) self.data["label_meta_dict"] = batch_data["label_meta_dict"] case_stats = {} @@ -625,6 +630,9 @@ def get_all_case_stats(self) -> Dict: - "image_foreground_stats" (similar to above) - "label_stats" + Raise: + ValueError if the user sent image_only to False but there is no label found + Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary @@ -643,6 +651,11 @@ def get_all_case_stats(self) -> Dict: if self.image_only: case_stat = {"image": images_file} else: + if "label_meta_dict" not in batch_data: + raise ValueError( + "label_meta_dict not found. Please set image_only to True if there is no label files" + ) + label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] case_stat = {"image": images_file, "label": label_file} From 0ef823be4b84b0ec78716f52dde1a0e1046b7d2f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:38:53 +0800 Subject: [PATCH 048/150] fix error raising condition and set average to True by default Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index d532a0d71d..f3c9bd247c 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -102,7 +102,7 @@ def __init__( datalist: Union[str, Dict], dataroot: str = "", output_path: str = "./data_stats.yaml", - average: bool = False, + average: bool = True, do_ccp: bool = True, device: Union[str, torch.device] = "cuda", worker: int = 2, @@ -651,7 +651,7 @@ def get_all_case_stats(self) -> Dict: if self.image_only: case_stat = {"image": images_file} else: - if "label_meta_dict" not in batch_data: + if "label_meta_dict" not in batch_data[0]: raise ValueError( "label_meta_dict not found. Please set image_only to True if there is no label files" ) From 43f36b1ac3fbc31df792dde6355e72364446b05f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:53:56 +0800 Subject: [PATCH 049/150] misc fix: output type definition Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index f3c9bd247c..efda25ca3a 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -448,7 +448,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: return result - def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False): + def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False) -> Dict: """ Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. @@ -547,7 +547,7 @@ def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: label_foreground = MetaTensor(image[label > 0]) return label_foreground - def get_case_stats(self, batch_data): + def get_case_stats(self, batch_data) -> Dict: """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data Args: From adea43b4d7dbf6702e9d8e05b2a2585d12ee5f68 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:58:45 +0800 Subject: [PATCH 050/150] fix docstring for fire usage Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index efda25ca3a..bdaaed5b01 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -82,14 +82,13 @@ class DataAnalyzer: DataAnalyzer(datalist, dataroot) Note: - The module can also be called from the command line interface (CLI) if MONAI is - installed with the source code. + The module can also be called from the command line interface (CLI). For example: .. code-block:: bash - python monai/apps/auto3d \ + python -m monai/apps/auto3d \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ From ec22f2b0ee7960a27546cb023c3b1dac29a2105c Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 09:19:04 +0800 Subject: [PATCH 051/150] add unit test to read datalist from .json file Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- tests/test_auto3d.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_auto3d.py b/tests/test_auto3d.py index 586b7b2c95..00d13784b2 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3d.py @@ -19,6 +19,7 @@ import torch from monai.apps.auto3d.data_analyzer import DataAnalyzer +from monai.bundle import ConfigParser from monai.data import create_test_image_3d device = "cuda" if torch.cuda.is_available() else "cpu" @@ -52,6 +53,10 @@ def setUp(self): label_fpath = path.join(dataroot, d["label"]) nib.save(nib_image, label_fpath) + # write to a json file + self.fake_json_datalist = path.join(dataroot, "fake_input.json") + ConfigParser.export_config_file(fake_datalist, self.fake_json_datalist) + def test_data_analyzer(self): dataroot = self.test_dir.name yaml_fpath = path.join(dataroot, "data_stats.yaml") @@ -70,6 +75,16 @@ def test_data_analyzer_image_only(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_data_analyzer_from_yaml(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + self.fake_json_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def tearDown(self) -> None: self.test_dir.cleanup() From b5c9076a13e1d4e3bac24fec9fc2f187a46da153 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:15:46 +0800 Subject: [PATCH 052/150] fix docstrings Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- .../utils_pytorch_numpy_unification.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index bf470ce820..e9e41455dc 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -141,7 +141,7 @@ def nonzero(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.nonzero` with equivalent implementation for torch. Args: - x: array/tensor + x: array/tensor. Returns: Index unravelled for given shape @@ -208,7 +208,7 @@ def ravel(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.ravel` with equivalent implementation for torch. Args: - x: array/tensor to ravel + x: array/tensor. to ravel Returns: Return a contiguous flattened array/tensor. @@ -334,7 +334,7 @@ def isnan(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.isnan` with equivalent implementation for torch. Args: - x: array/tensor + x: array/tensor. """ if isinstance(x, np.ndarray): @@ -346,7 +346,7 @@ def ascontiguousarray(x: NdarrayTensor, **kwargs) -> NdarrayOrTensor: """`np.ascontiguousarray` with equivalent implementation for torch (`contiguous`). Args: - x: array/tensor + x: array/tensor. kwargs: if `x` is PyTorch Tensor, additional args for `torch.contiguous`, more details: https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html. @@ -364,8 +364,8 @@ def stack(x: Sequence[NdarrayTensor], dim: int) -> NdarrayTensor: """`np.stack` with equivalent implementation for torch. Args: - x: array/tensor - dim: dimension along which to perform the stack (referred to as `axis` by numpy) + x: array/tensor. + dim: dimension along which to perform the stack (referred to as `axis` by numpy). """ if isinstance(x[0], np.ndarray): return np.stack(x, dim) # type: ignore @@ -376,8 +376,8 @@ def mode(x: NdarrayTensor, dim: int = -1, to_long: bool = True) -> NdarrayTensor """`torch.mode` with equivalent implementation for numpy. Args: - x: array/tensor - dim: dimension along which to perform `mode` (referred to as `axis` by numpy) + x: array/tensor. + dim: dimension along which to perform `mode` (referred to as `axis` by numpy). to_long: convert input to long before performing mode. """ dtype = torch.int64 if to_long else None @@ -391,7 +391,7 @@ def unique(x: NdarrayTensor) -> NdarrayTensor: """`torch.unique` with equivalent implementation for numpy. Args: - x: array/tensor + x: array/tensor. """ return torch.unique(x) if isinstance(x, torch.Tensor) else np.unique(x) # type: ignore @@ -400,7 +400,7 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: """`torch.linalg.inv` with equivalent implementation for numpy. Args: - x: array/tensor + x: array/tensor. """ if isinstance(x, torch.Tensor) and hasattr(torch, "inverse"): # pytorch 1.7.0 return torch.inverse(x) # type: ignore @@ -411,7 +411,7 @@ def max(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTenso """`torch.max` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.max(x, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, **kwargs) # type: ignore @@ -423,7 +423,7 @@ def mean(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTens """`torch.mean` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.mean(x, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, **kwargs) # type: ignore @@ -435,7 +435,7 @@ def median(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTe """`torch.median` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.median(x, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, **kwargs) # type: ignore @@ -447,7 +447,7 @@ def min(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTenso """`torch.min` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.min(x, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, **kwargs) # type: ignore @@ -459,7 +459,7 @@ def std(x: NdarrayOrTensor, dim: Optional[int] = None, unbias: Optional[bool] = """`torch.std` with equivalent implementation for numpy Args: - x: array/tensor + x: array/tensor. """ if dim is None: return torch.std(x, unbias) if isinstance(x, torch.Tensor) else np.std(x) # type: ignore From 963493cbd10851abd03d1d79dda62bcc2655c466 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 10:16:52 +0800 Subject: [PATCH 053/150] fix docstrings Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- .../utils_pytorch_numpy_unification.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index e9e41455dc..2508fad584 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -92,8 +92,8 @@ def percentile( https://numpy.org/doc/stable/reference/generated/numpy.percentile.html. Args: - x: input data - q: percentile to compute (should in range 0 <= q <= 100) + x: input data. + q: percentile to compute (should in range 0 <= q <= 100). dim: the dim along which the percentiles are computed. default is to compute the percentile along a flattened version of the array. keepdim: whether the output data has dim retained or not. @@ -175,8 +175,8 @@ def unravel_index(idx, shape) -> NdarrayOrTensor: """`np.unravel_index` with equivalent implementation for torch. Args: - idx: index to unravel - shape: shape of array/tensor + idx: index to unravel. + shape: shape of array/tensor. Returns: Index unravelled for given shape @@ -194,8 +194,8 @@ def unravel_indices(idx, shape) -> NdarrayOrTensor: """Computing unravel coordinates from indices. Args: - idx: a sequence of indices to unravel - shape: shape of array/tensor + idx: a sequence of indices to unravel. + shape: shape of array/tensor. Returns: Stacked indices unravelled for given shape @@ -208,7 +208,7 @@ def ravel(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.ravel` with equivalent implementation for torch. Args: - x: array/tensor. to ravel + x: array/tensor. to ravel. Returns: Return a contiguous flattened array/tensor. @@ -226,8 +226,8 @@ def any_np_pt(x: NdarrayOrTensor, axis: Union[int, Sequence[int]]) -> NdarrayOrT For pytorch, convert to boolean for compatibility with older versions. Args: - x: input array/tensor - axis: axis to perform `any` over + x: input array/tensor. + axis: axis to perform `any` over. Returns: Return a contiguous flattened array/tensor. @@ -250,8 +250,8 @@ def maximum(a: NdarrayOrTensor, b: NdarrayOrTensor) -> NdarrayOrTensor: """`np.maximum` with equivalent implementation for torch. Args: - a: first array/tensor - b: second array/tensor + a: first array/tensor. + b: second array/tensor. Returns: Element-wise maximum between two arrays/tensors. From 51953c7efc01004aaa307638f5b8080882ffd25c Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:21:11 +0800 Subject: [PATCH 054/150] fix docstrings Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index ac1ca1e8a7..83450b9af1 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -166,9 +166,7 @@ def _get_my_stats(self): # in the DataAnalyzer class. case_stats will be writte case_stats = {'my_stats': my_fun(processed_data)}. return case_stats - def _get_my_stats_sumumary(self): - case_stats_summary = {'stats1': summary_function}. The summary_function will process - + def _get_my_stats_sumumary(self): The _get_my_stats will process the entire datasets case_stats_summary = { "my_stats_summary": {"sum": self._get_my_stats} } @@ -595,6 +593,18 @@ def get_all_case_stats(self) -> Dict: Returns - the data statistics dictionary + - "stats_summary" (summary statistics of the entire datasets) + - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations_summary) + - "image_foreground_stats" (info of the intensity for the non-zero labeled voxels) + - "label_stats" (info of the labels, pixel percentange, image_intensity, and each invidiual label) + - "stats_by_cases" + - List type value. Each element of the list is statistics of a image-label info. For example: + - "image" (value is the path to an image) + - "label" (value is the path to the corresponding label) + - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) + - "image_foreground_stats" (similar to above) + - "label_stats" + """ start = time.time() self.results["stats_summary"] = {} From e098454c3e230ac4e2b7dee5b8ce03aef7e39f95 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 11:38:47 +0800 Subject: [PATCH 055/150] fix docstrings for nan/inf Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 83450b9af1..543a8bcde2 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -547,12 +547,18 @@ def get_case_stats(self, batch_data): Returns: a dictionary to summarize all the statistics for each case in following structure - - image_stats + - "image_stats" - shape, channels,cropped_shape, spacing, intensity - - image_foreground_stats - - intensity - - label_stats + - "image_foreground_stats" + - "intensity" + - "label_stats" - labels, pxiel_percentage, image_intensity, label_0, label_1 + + Note: + nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value + may be generated and carried over in the computation. In such cases, the output dictionary + will include .nan/.inf in the statistics. + """ self.data["image"] = batch_data["image"].to(self.device) @@ -604,7 +610,12 @@ def get_all_case_stats(self) -> Dict: - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) - "image_foreground_stats" (similar to above) - "label_stats" - + + Note: + nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value + may be generated and carried over in the computation. In such cases, the output dictionary + will include .nan/.inf in the statistics. + """ start = time.time() self.results["stats_summary"] = {} From 99a386eb5857fec0acd528a0b8e22fcfd082af74 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:22:17 +0800 Subject: [PATCH 056/150] add missing key handling Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 543a8bcde2..231a6f038d 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -554,6 +554,8 @@ def get_case_stats(self, batch_data): - "label_stats" - labels, pxiel_percentage, image_intensity, label_0, label_1 + Raise + ValueError if data loader is unable to populate "label_meta_dict" Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary @@ -564,7 +566,10 @@ def get_case_stats(self, batch_data): self.data["image"] = batch_data["image"].to(self.device) self.data["label"] = batch_data["label"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] - self.data["label_meta_dict"] = batch_data["label_meta_dict"] + if "label_meta_dict" in batch_data: + self.data["label_meta_dict"] = batch_data["label_meta_dict"] + else: + raise ValueError("Cannot find label_meta_dict from the output of the data loader") case_stats = {} for func in self.functions: case_stats.update(func()) From 6b07836365f92de4ff5c5eb85aa341f40022838e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:56:35 +0800 Subject: [PATCH 057/150] fix _ usage and docstring Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 94 +++++++++++++++--------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 231a6f038d..50d971725a 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -111,7 +111,7 @@ def __init__( self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( - data=files, + data=train_files, transform=transforms.Compose( [ transforms.LoadImaged(keys=["image", "label"]), @@ -221,33 +221,29 @@ def _register_operations(self): def _get_case_image_stats(self) -> Dict: """ - Generate image statistics for cases in datalist ({'image','label'}) - Statistics values are stored under the key "image_stats" + Generate image statistics for cases in datalist ({'image','label'}). + Statistics values are stored under the key "image_stats". Returns: - a dictionary of the images stats - - image_stats - - shape - - channel - - cropped_shape - - spacing - - intensity + a dictionary of the images stats. + - "image_stats" + - "shape", "channel", "cropped_shape", "spacing", "intensity" """ # retrieve transformed data from self.data start = time.time() ndas = self.data["image"] ndas = [ndas[i] for i in range(ndas.shape[0])] if "nda_croppeds" not in self.data: - self.data["nda_croppeds"] = [self._get_foreground_image(_) for _ in ndas] + self.data["nda_croppeds"] = [self._get_foreground_image(nda) for nda in ndas] nda_croppeds = self.data["nda_croppeds"] # perform calculation case_stats = { "image_stats": { - "shape": [list(_.shape) for _ in ndas], + "shape": [list(nda.shape) for nda in ndas], "channels": len(ndas), - "cropped_shape": [list(_.shape) for _ in nda_croppeds], + "cropped_shape": [list(nda_cropped.shape) for nda_cropped in nda_croppeds], "spacing": np.tile(np.diag(self.data["image_meta_dict"]["affine"])[:3], [len(ndas), 1]).tolist(), - "intensity": [self._stats_opt(_) for _ in nda_croppeds], + "intensity": [self._stats_opt(nda_cropped) for nda_cropped in nda_croppeds], } } logger.debug(f"Get image stats spent {time.time()-start}") @@ -291,10 +287,10 @@ def _get_case_foreground_image_stats(self) -> Dict: ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_l = self.data["label"] if "nda_foreground" not in self.data: - self.data["nda_foreground"] = [self._get_foreground_label(_, ndas_l) for _ in ndas] + self.data["nda_foreground"] = [self._get_foreground_label(nda, ndas_l) for nda in ndas] nda_foreground = self.data["nda_foreground"] - case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(_) for _ in nda_foreground]}} + case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(nda) for nda in nda_foreground]}} logger.debug(f"Get foreground image data stats spent {time.time() - start}") return case_stats @@ -316,14 +312,14 @@ def _get_label_stats(self) -> Dict: Returns a dictionary with following structures: - - label_stats - - labels: class_IDs of the label + background class - - pixel_percentanges - - image_intensity - - label_N (N=0,1,...) - - image_intensity - - shape - - ncomponents + - "label_stats" + - "labels" : class_IDs of the label + background class + - "pixel_percentanges" + - "image_intensity" + - "label_N" (N=0,1,...) + - "image_intensity" + - "shape" + - "ncomponents" """ # retrieve transformed data from self.data start = time.time() @@ -335,7 +331,7 @@ def _get_label_stats(self) -> Dict: "label_stats": { "labels": unique_label, "pixel_percentage": None, - "image_intensity": [self._stats_opt(_[ndas_l > 0]) for _ in ndas], + "image_intensity": [self._stats_opt(nda[ndas_l > 0]) for nda in ndas], } } start = time.time() @@ -344,7 +340,7 @@ def _get_label_stats(self) -> Dict: label_dict: Dict[str, Any] = {} mask_index = ndas_l == index s = time.time() - label_dict["image_intensity"] = [self._stats_opt(_[mask_index]) for _ in ndas] + label_dict["image_intensity"] = [self._stats_opt(nda[mask_index]) for nda in ndas] logger.debug(f" label {index} stats takes {time.time() - s}") pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() if self.DO_CONNECTED_COMP: @@ -394,48 +390,50 @@ def _get_label_stats_summary(self): self.gather_summary.update(case_stats_summary) @staticmethod - def _pixelpercent_summary(x): + def _pixelpercent_summary(xs): """ Define the summary function for the pixel percentage over the whole dataset. Args - x: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + Length of xs is number of data samples. Returns a dictionary showing the percentage of labels, with numeric keys (0, 1, ...) """ percent_summary = {} - for _ in x: - for key, value in _.items(): + for x in xs: + for key, value in x.items(): percent_summary[key] = percent_summary.get(key, 0) + value total_percent = np.sum(list(percent_summary.values())) for key, value in percent_summary.items(): percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, x: List, average: bool = False) -> Dict: + def _intensity_summary(self, xs: List, average: bool = False) -> Dict: """ - Define the summary function for stats over the whole dataset + Define the summary function for stats over the whole dataset. Combine overall intensity statistics for all cases in datalist. The intensity features are min, max, mean, std, percentile defined in self._stats_opt(). - Values may be averaged over all the cases if the `average` is set to be True + Values may be averaged over all the cases if the `average` is set to be True. Args: - x: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]] - average: if average is true, operation will be applied along axis 0 and average out the values + xs: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]]. Length of xs is number of data samples. + average: if average is true, operation will be applied along axis 0 and average out the values. Returns - a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations + a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations. """ result = {} - for key in x[0][0].keys(): # .keys() not required, len(x) = N data + for op_key in xs[0][0]: value = [] - for case in x: - value.append([_[key] for _ in case]) + for x in xs: + value.append([stats[op_key] for stats in x]) dim = (0,) if not average else None - value = self.operations_summary[key](value, dim=dim) - result[key] = np.array(value).tolist() + value = self.operations_summary[op_key](value, dim=dim) + result[op_key] = np.array(value).tolist() + return result def _stats_opt_summary(self, datastat_list, average=False, is_label=False): @@ -460,10 +458,10 @@ def _stats_opt_summary(self, datastat_list, average=False, is_label=False): if type(datastat_list[0]) is list or type(datastat_list[0]) is np.array: if not is_label: # size = [num of cases, number of modalities, stats] - datastat_list = np.concatenate([[np.array(_) for _ in datastat_list]]) + datastat_list = np.concatenate([[np.array(datastat) for datastat in datastat_list]]) else: # size = [num of cases, stats] - datastat_list = np.concatenate([np.array(_) for _ in datastat_list]) + datastat_list = np.concatenate([np.array(datastat) for datastat in datastat_list]) axis = (0,) if average and len(datastat_list.shape) > 2: axis = (0, 1) @@ -484,7 +482,7 @@ def _stats_opt(self, raw_data): Calculate statistics calculation operations (ops) on the images/labels Args: - raw_data: ndarray image or label + raw_data: ndarray image or label. Returns: a dictionary to list out the statistics based on give operations (ops). For example, keys can include 'max', 'min', @@ -541,9 +539,11 @@ def get_case_stats(self, batch_data): """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data Args: - batch_data: monai dataloader batch data - images: image with shape [modality, image_shape] - label: label with shape [image_shape] + batch_data has follwing keys (monai dataloader batch data) + - "images" (image with shape [modality, image_shape]) + - "label" (label with shape [image_shape]) + - "image_meta_dict" (meta info of the image data) + - "label_meta_dict" (meta info of the label data) Returns: a dictionary to summarize all the statistics for each case in following structure From 633f189a0e16f6177b11da83e1003147b7e48c8b Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 13:57:19 +0800 Subject: [PATCH 058/150] fix var name update Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 50d971725a..6743054214 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -111,7 +111,7 @@ def __init__( self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( - data=train_files, + data=files, transform=transforms.Compose( [ transforms.LoadImaged(keys=["image", "label"]), From ea76967eb2cf31615959eb5aef404a0e15fcb7ef Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:15:50 +0800 Subject: [PATCH 059/150] add warning for users when output_path file exists Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 6743054214..b4984086f7 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -17,6 +17,7 @@ import time import warnings from functools import partial +from os import path from typing import Any, Dict, List, Union import numpy as np @@ -108,6 +109,9 @@ def __init__( """ The initializer will load the data and register the functions for data statistics gathering. """ + if path.isfile(output_path): + warnings.warn(f"File {output_path} already exists and will be overwritten.") + logger.debug(f"{output_path} will be overwritten by a new datastat.") self.output_path = output_path files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) ds = data.Dataset( @@ -395,7 +399,7 @@ def _pixelpercent_summary(xs): Define the summary function for the pixel percentage over the whole dataset. Args - xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. Length of xs is number of data samples. Returns @@ -433,7 +437,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: dim = (0,) if not average else None value = self.operations_summary[op_key](value, dim=dim) result[op_key] = np.array(value).tolist() - + return result def _stats_opt_summary(self, datastat_list, average=False, is_label=False): @@ -553,7 +557,7 @@ def get_case_stats(self, batch_data): - "intensity" - "label_stats" - labels, pxiel_percentage, image_intensity, label_0, label_1 - + Raise ValueError if data loader is unable to populate "label_meta_dict" Note: @@ -615,12 +619,12 @@ def get_all_case_stats(self) -> Dict: - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) - "image_foreground_stats" (similar to above) - "label_stats" - + Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary will include .nan/.inf in the statistics. - + """ start = time.time() self.results["stats_summary"] = {} From 8de208541aa27b219afe7dbcace867ad3337b740 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:54:35 +0800 Subject: [PATCH 060/150] add optional argument definitions Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index b4984086f7..61aefe3e15 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Union +from typing import Any, Dict, List, Union, Optional import numpy as np import torch @@ -99,12 +99,12 @@ class DataAnalyzer: def __init__( self, datalist: Union[str, Dict], - dataroot: str, - output_path: str = "./data_stats.yaml", - average: bool = False, - do_ccp: bool = True, - device: Union[str, torch.device] = "cuda", - worker: int = 2, + dataroot: Optional[str] = "", + output_path: Optional[str] = "./data_stats.yaml", + average: Optional[bool] = False, + do_ccp: Optional[bool] = True, + device: Optional[Union[str, torch.device]] = "cuda", + worker: Optional[int] = 2, ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -414,7 +414,7 @@ def _pixelpercent_summary(xs): percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, xs: List, average: bool = False) -> Dict: + def _intensity_summary(self, xs: List, average: Optional[bool] = False) -> Dict: """ Define the summary function for stats over the whole dataset. Combine overall intensity statistics for all cases in datalist. The intensity features are @@ -440,7 +440,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: return result - def _stats_opt_summary(self, datastat_list, average=False, is_label=False): + def _stats_opt_summary(self, datastat_list, average: Optional[bool] = False, is_label: Optional[bool] = False): """ Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. From 14dc3ca2fc2b7136e1806266c774d3e8181a60f9 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 22:33:59 +0800 Subject: [PATCH 061/150] fix format Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 61aefe3e15..53a919bf7e 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Union, Optional +from typing import Any, Dict, List, Optional, Union import numpy as np import torch From acc2044ca9479f9737d398baffaa4daf44b25fb2 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:11:06 +0800 Subject: [PATCH 062/150] add optional argument image_only Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 63 +++++++++++++++++------------- tests/test_auto3d.py | 12 +++++- 2 files changed, 47 insertions(+), 28 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 53a919bf7e..ba351c80fa 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -105,6 +105,7 @@ def __init__( do_ccp: Optional[bool] = True, device: Optional[Union[str, torch.device]] = "cuda", worker: Optional[int] = 2, + image_only: Optional[bool] = False, ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -113,22 +114,29 @@ def __init__( warnings.warn(f"File {output_path} already exists and will be overwritten.") logger.debug(f"{output_path} will be overwritten by a new datastat.") self.output_path = output_path + self.image_only = image_only + + if self.image_only: + keys = ["image"] + else: + keys = ["image", "label"] + + transform_list = [ + transforms.LoadImaged(keys=keys), + transforms.EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + transforms.Orientationd(keys=keys, axcodes="RAS"), + transforms.EnsureTyped(keys=keys, data_type="tensor"), + ] + + if not self.image_only: + transform_list += [ + transforms.Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True)), + transforms.SqueezeDimd(keys=["label"], dim=0), + ] + files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) - ds = data.Dataset( - data=files, - transform=transforms.Compose( - [ - transforms.LoadImaged(keys=["image", "label"]), - transforms.EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) - transforms.Orientationd(keys=["image", "label"], axcodes="RAS"), - transforms.EnsureTyped(keys=["image", "label"], data_type="tensor"), - transforms.Lambdad( - keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x - ), - transforms.SqueezeDimd(keys=["label"], dim=0), # make label (H,W,D) - ] - ), - ) + ds = data.Dataset(data=files, transform=transforms.Compose(transform_list)) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=no_collation) # Whether to average all the modalities in the summary # If SUMMARY_AVERAGE is set to false, @@ -183,12 +191,11 @@ def _register_functions(self): self.function_summary.append(self._get_my_stats_sumumary) """ - self.functions = [self._get_case_image_stats, self._get_case_foreground_image_stats, self._get_label_stats] - self.functions_summary = [ - self._get_case_image_stats_summary, - self._get_case_foreground_image_stats_summary, - self._get_label_stats_summary, - ] + self.functions = [self._get_case_image_stats] + self.functions_summary = [self._get_case_image_stats_summary] + if not self.image_only: + self.functions += [self._get_case_foreground_image_stats, self._get_label_stats] + self.functions_summary += [self._get_case_foreground_image_stats_summary, self._get_label_stats_summary] def _register_operations(self): """ @@ -568,12 +575,10 @@ def get_case_stats(self, batch_data): """ self.data["image"] = batch_data["image"].to(self.device) - self.data["label"] = batch_data["label"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] - if "label_meta_dict" in batch_data: + if not self.image_only: + self.data["label"] = batch_data["label"].to(self.device) self.data["label_meta_dict"] = batch_data["label_meta_dict"] - else: - raise ValueError("Cannot find label_meta_dict from the output of the data loader") case_stats = {} for func in self.functions: case_stats.update(func()) @@ -635,9 +640,13 @@ def get_all_case_stats(self) -> Dict: for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] - label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] + if self.image_only: + case_stat = {"image": images_file} + else: + label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] + case_stat = {"image": images_file, "label": label_file} + logger.debug(f"Load data spent {time.time() - s}") - case_stat = {"image": images_file, "label": label_file} case_stat.update(self.get_case_stats(batch_data[0])) self.results["stats_by_cases"].append(case_stat) logger.debug(f"Process data spent {time.time() - s}") diff --git a/tests/test_auto3d.py b/tests/test_auto3d.py index 4504941cf5..586b7b2c95 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3d.py @@ -25,7 +25,7 @@ n_workers = 0 if sys.platform in ("win32", "darwin") else 2 fake_datalist = { - "testing": [{"image": "val_001.fake.nii.gz"}], + "testing": [{"image": "val_001.fake.nii.gz"}, {"image": "val_002.fake.nii.gz"}], "training": [ {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, @@ -60,6 +60,16 @@ def test_data_analyzer(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_data_analyzer_image_only(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, image_only=True + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def tearDown(self) -> None: self.test_dir.cleanup() From 36404c498b98281881018a19750076a272765553 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:16:34 +0800 Subject: [PATCH 063/150] fix optional remove Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index ba351c80fa..88982cc975 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Union import numpy as np import torch @@ -99,13 +99,13 @@ class DataAnalyzer: def __init__( self, datalist: Union[str, Dict], - dataroot: Optional[str] = "", - output_path: Optional[str] = "./data_stats.yaml", - average: Optional[bool] = False, - do_ccp: Optional[bool] = True, - device: Optional[Union[str, torch.device]] = "cuda", - worker: Optional[int] = 2, - image_only: Optional[bool] = False, + dataroot: str = "", + output_path: str = "./data_stats.yaml", + average: bool = False, + do_ccp: bool = True, + device: Union[str, torch.device] = "cuda", + worker: int = 2, + image_only: bool = False, ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -421,7 +421,7 @@ def _pixelpercent_summary(xs): percent_summary[key] = float(value / total_percent) return percent_summary - def _intensity_summary(self, xs: List, average: Optional[bool] = False) -> Dict: + def _intensity_summary(self, xs: List, average: bool = False) -> Dict: """ Define the summary function for stats over the whole dataset. Combine overall intensity statistics for all cases in datalist. The intensity features are @@ -447,7 +447,7 @@ def _intensity_summary(self, xs: List, average: Optional[bool] = False) -> Dict: return result - def _stats_opt_summary(self, datastat_list, average: Optional[bool] = False, is_label: Optional[bool] = False): + def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False): """ Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. From 1f6afc2763d7e92337efd61c99da8ff8bfe59f43 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Fri, 12 Aug 2022 23:30:31 +0800 Subject: [PATCH 064/150] fix docstring Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 88982cc975..d532a0d71d 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -60,6 +60,7 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. + image_only: boolean set to True if the user wants to use the DataAnalyzer on a dataset without labels. For example: @@ -566,7 +567,7 @@ def get_case_stats(self, batch_data): - labels, pxiel_percentage, image_intensity, label_0, label_1 Raise - ValueError if data loader is unable to populate "label_meta_dict" + ValueError if data loader is unable to find "label" or "label_meta_dict" Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary @@ -577,6 +578,10 @@ def get_case_stats(self, batch_data): self.data["image"] = batch_data["image"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] if not self.image_only: + if "label" not in batch_data: + raise ValueError("label not found. Please set image_only to True if there is no label files") + if "label_meta_dict" not in batch_data: + raise ValueError("label_meta_dict not found. Please set image_only to True if there is no label files") self.data["label"] = batch_data["label"].to(self.device) self.data["label_meta_dict"] = batch_data["label_meta_dict"] case_stats = {} @@ -625,6 +630,9 @@ def get_all_case_stats(self) -> Dict: - "image_foreground_stats" (similar to above) - "label_stats" + Raise: + ValueError if the user sent image_only to False but there is no label found + Note: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output dictionary @@ -643,6 +651,11 @@ def get_all_case_stats(self) -> Dict: if self.image_only: case_stat = {"image": images_file} else: + if "label_meta_dict" not in batch_data: + raise ValueError( + "label_meta_dict not found. Please set image_only to True if there is no label files" + ) + label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] case_stat = {"image": images_file, "label": label_file} From 2d5d9299a309dce9be5f7754ee8da6e0aecd3417 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:38:53 +0800 Subject: [PATCH 065/150] fix error raising condition and set average to True by default Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index d532a0d71d..f3c9bd247c 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -102,7 +102,7 @@ def __init__( datalist: Union[str, Dict], dataroot: str = "", output_path: str = "./data_stats.yaml", - average: bool = False, + average: bool = True, do_ccp: bool = True, device: Union[str, torch.device] = "cuda", worker: int = 2, @@ -651,7 +651,7 @@ def get_all_case_stats(self) -> Dict: if self.image_only: case_stat = {"image": images_file} else: - if "label_meta_dict" not in batch_data: + if "label_meta_dict" not in batch_data[0]: raise ValueError( "label_meta_dict not found. Please set image_only to True if there is no label files" ) From 97bad4c3a48e4940b3427a5a8223e6dde070706f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:53:56 +0800 Subject: [PATCH 066/150] misc fix: output type definition Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index f3c9bd247c..efda25ca3a 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -448,7 +448,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: return result - def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False): + def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False) -> Dict: """ Combine other stats calculation methods (like shape/min/max/std). Does not guarantee correct output for custimized stats structure. Check the following input structures. @@ -547,7 +547,7 @@ def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: label_foreground = MetaTensor(image[label > 0]) return label_foreground - def get_case_stats(self, batch_data): + def get_case_stats(self, batch_data) -> Dict: """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data Args: From 645d8251c6b600e4836a5a1e59727d9c992d4ba9 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:58:45 +0800 Subject: [PATCH 067/150] fix docstring for fire usage Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index efda25ca3a..bdaaed5b01 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -82,14 +82,13 @@ class DataAnalyzer: DataAnalyzer(datalist, dataroot) Note: - The module can also be called from the command line interface (CLI) if MONAI is - installed with the source code. + The module can also be called from the command line interface (CLI). For example: .. code-block:: bash - python monai/apps/auto3d \ + python -m monai/apps/auto3d \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ From 3696c0f39a04fad30c553216050c086e23d842a2 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Sat, 13 Aug 2022 09:19:04 +0800 Subject: [PATCH 068/150] add unit test to read datalist from .json file Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- tests/test_auto3d.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tests/test_auto3d.py b/tests/test_auto3d.py index 586b7b2c95..00d13784b2 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3d.py @@ -19,6 +19,7 @@ import torch from monai.apps.auto3d.data_analyzer import DataAnalyzer +from monai.bundle import ConfigParser from monai.data import create_test_image_3d device = "cuda" if torch.cuda.is_available() else "cpu" @@ -52,6 +53,10 @@ def setUp(self): label_fpath = path.join(dataroot, d["label"]) nib.save(nib_image, label_fpath) + # write to a json file + self.fake_json_datalist = path.join(dataroot, "fake_input.json") + ConfigParser.export_config_file(fake_datalist, self.fake_json_datalist) + def test_data_analyzer(self): dataroot = self.test_dir.name yaml_fpath = path.join(dataroot, "data_stats.yaml") @@ -70,6 +75,16 @@ def test_data_analyzer_image_only(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_data_analyzer_from_yaml(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + self.fake_json_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def tearDown(self) -> None: self.test_dir.cleanup() From 718c16b411ef899ccd13f0529b169d30993bb7ba Mon Sep 17 00:00:00 2001 From: Wenqi Li <831580+wyli@users.noreply.github.com> Date: Thu, 11 Aug 2022 12:26:32 +0100 Subject: [PATCH 069/150] 233 - set up a backward compatibility policy (#4857) * set up a backward compatibility policy Signed-off-by: Wenqi Li * update based on comments Signed-off-by: Wenqi Li * update based on comments Signed-off-by: Wenqi Li * update based on comments Signed-off-by: Wenqi Li Signed-off-by: Wenqi Li Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- CHANGELOG.md | 3 +-- CONTRIBUTING.md | 28 +++++++++++++++++++++------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a8dcfc60d..771dd9265b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,7 @@ # Changelog All notable changes to MONAI are documented in this file. -The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) -and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). ## [Unreleased] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac373bad75..1fef0789e3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -283,10 +283,25 @@ for example, ``import monai.transforms.Spacing`` is the equivalent of ``monai.tr For string definition, [f-string](https://www.python.org/dev/peps/pep-0498/) is recommended to use over `%-print` and `format-print`. So please try to use `f-string` if you need to define any string object. #### Backwards compatibility -MONAI is currently under active development, and with major version zero (following the [Semantic Versioning](https://semver.org/)). -The backwards compatibility of the API is not always guaranteed at this initial development stage. -However, utility functions are provided in the `monai.utils.deprecated` modules to help users migrate to the new API. -The use of these functions is encouraged. +MONAI in general follows [PyTorch's policy for backward compatibility](https://github.com/pytorch/pytorch/wiki/PyTorch's-Python-Frontend-Backward-and-Forward-Compatibility-Policy). +Utility functions are provided in `monai.utils.deprecated` to help migrate from the deprecated to new APIs. The use of these utilities is encouraged. +The pull request [template contains checkboxes](https://github.com/Project-MONAI/MONAI/blame/dev/.github/pull_request_template.md#L11-L12) that +the contributor should use accordingly to clearly indicate breaking changes. + +The process of releasing backwards incompatible API changes is as follows: +1. discuss the breaking changes during pull requests or in dev meetings with a feature proposal if needed. +1. add a warning message in the upcoming release (version `X.Y`), the warning message should include a forecast of removing the deprecated API in: + 1. `X+1.0` -- major version `X+1` and minor version `0` the next major version if it's a significant change, + 1. `X.Y+2` -- major version `X` and minor version `Y+2` (the minor version after the next one), if it's a minor API change. + 1. Note that the versioning policy is similar to PyTorch's approach which does not precisely follow [the semantic versioning](https://semver.org/) definition. + Major version numbers are instead used to represent major product version (which is currently not planned to be greater than 1), + minor version for both compatible and incompatible, and patch version for bug fixes. + 1. when recommending new API to use in place of a deprecated API, the recommended version should + provide exact feature-like behaviour otherwise users will have a harder time migrating. +1. add new test cases by extending the existing unit tests to cover both the deprecated and updated APIs. +1. collect feedback from the users during the subsequent few releases, and reconsider step 1 if needed. +1. before each release, review the deprecating APIs and relevant tests, and clean up the removed APIs described in step 2. + ### Submitting pull requests @@ -349,12 +364,11 @@ When major features are ready for a milestone, to prepare for a new release: - Merge `releasing/[version number]` to `dev`, this step must make sure that the tagging commit unchanged on `dev`. - Publish the release note. -Note that the release should be tagged with a [PEP440](https://www.python.org/dev/peps/pep-0440/) compliant -[semantic versioning](https://semver.org/spec/v2.0.0.html) number. +Note that the release should be tagged with a [PEP440](https://www.python.org/dev/peps/pep-0440/) compliant version number. If any error occurs during the release process, first check out a new hotfix branch from the `releasing/[version number]`, then make PRs to the `releasing/[version number]` to fix the bugs via the regular contribution procedure. If any error occurs after the release process, first check out a new hotfix branch from the `main` branch, -make a minor version release following the semantic versioning, for example, `releasing/0.1.1`. +make a patch version release following the semantic versioning, for example, `releasing/0.1.1`. Make sure the `releasing/0.1.1` is merged back into both `dev` and `main` and all the test pipelines succeed. From 108c0093c4af8fbb29ecbf6e9a2ba7c5df2dde4d Mon Sep 17 00:00:00 2001 From: Nic Ma Date: Thu, 11 Aug 2022 21:06:14 +0800 Subject: [PATCH 070/150] 4862 Enhance docstring for the regular 2D image dims (#4892) * [DLMED] enhance docstring Signed-off-by: Nic Ma * [DLMED] update according to comments Signed-off-by: Nic Ma Signed-off-by: Nic Ma Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/transforms/io/array.py | 4 ++++ monai/transforms/io/dictionary.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/monai/transforms/io/array.py b/monai/transforms/io/array.py index dc43475b63..5ee17e6268 100644 --- a/monai/transforms/io/array.py +++ b/monai/transforms/io/array.py @@ -99,6 +99,10 @@ class LoadImage(Transform): - Current default readers: (nii, nii.gz -> NibabelReader), (png, jpg, bmp -> PILReader), (npz, npy -> NumpyReader), (nrrd -> NrrdReader), (DICOM file -> ITKReader). + Please note that for png, jpg, bmp, and other 2D formats, readers often swap axis 0 and 1 after + loading the array because the `HW` definition for non-medical specific file formats is different + from other common medical packages. + See also: - tutorial: https://github.com/Project-MONAI/tutorials/blob/master/modules/load_medical_images.ipynb diff --git a/monai/transforms/io/dictionary.py b/monai/transforms/io/dictionary.py index 761c891e85..a1f088b498 100644 --- a/monai/transforms/io/dictionary.py +++ b/monai/transforms/io/dictionary.py @@ -51,6 +51,10 @@ class LoadImaged(MapTransform): - Current default readers: (nii, nii.gz -> NibabelReader), (png, jpg, bmp -> PILReader), (npz, npy -> NumpyReader), (dcm, DICOM series and others -> ITKReader). + Please note that for png, jpg, bmp, and other 2D formats, readers often swap axis 0 and 1 after + loading the array because the `HW` definition for non-medical specific file formats is different + from other common medical packages. + Note: - If `reader` is specified, the loader will attempt to use the specified readers and the default supported From 1211bf2a439eb81067a0a12d25d9b0f4c173b6ae Mon Sep 17 00:00:00 2001 From: Wenqi Li <831580+wyli@users.noreply.github.com> Date: Thu, 11 Aug 2022 15:16:24 +0100 Subject: [PATCH 071/150] 4754 default ToTensor.track_meta to None (#4874) * default totensor.track_meta to None Signed-off-by: Wenqi Li * fixes tests Signed-off-by: Wenqi Li * update based on comments Signed-off-by: Wenqi Li * update based on comments Signed-off-by: Wenqi Li Signed-off-by: Wenqi Li Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/transforms/utility/array.py | 10 +++++----- monai/transforms/utility/dictionary.py | 6 +++--- tests/test_deepedit_interaction.py | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/monai/transforms/utility/array.py b/monai/transforms/utility/array.py index b99932d169..07de2569b3 100644 --- a/monai/transforms/utility/array.py +++ b/monai/transforms/utility/array.py @@ -415,8 +415,8 @@ class ToTensor(Transform): device: target device to put the converted Tensor data. wrap_sequence: if `False`, then lists will recursively call this function, default to `True`. E.g., if `False`, `[1, 2]` -> `[tensor(1), tensor(2)]`, if `True`, then `[1, 2]` -> `tensor([1, 2])`. - track_meta: whether to convert to `MetaTensor`, default to `False`, output type will be `torch.Tensor`. - if `None`, use the return value of ``get_track_meta``. + track_meta: whether to convert to `MetaTensor` or regular tensor, default to `None`, + use the return value of ``get_track_meta``. """ @@ -427,7 +427,7 @@ def __init__( dtype: Optional[torch.dtype] = None, device: Optional[torch.device] = None, wrap_sequence: bool = True, - track_meta: Optional[bool] = False, + track_meta: Optional[bool] = None, ) -> None: super().__init__() self.dtype = dtype @@ -459,8 +459,8 @@ class EnsureType(Transform): device: for Tensor data type, specify the target device. wrap_sequence: if `False`, then lists will recursively call this function, default to `True`. E.g., if `False`, `[1, 2]` -> `[tensor(1), tensor(2)]`, if `True`, then `[1, 2]` -> `tensor([1, 2])`. - track_meta: whether to convert to `MetaTensor` when `data_type` is "tensor". - If False, the output data type will be `torch.Tensor`. Default to the return value of ``get_track_meta``. + track_meta: if `True` convert to ``MetaTensor``, otherwise to Pytorch ``Tensor``, + if ``None`` behave according to return value of py:func:`monai.data.meta_obj.get_track_meta`. """ diff --git a/monai/transforms/utility/dictionary.py b/monai/transforms/utility/dictionary.py index ad64cb8e01..19098dc17f 100644 --- a/monai/transforms/utility/dictionary.py +++ b/monai/transforms/utility/dictionary.py @@ -489,7 +489,7 @@ def __init__( dtype: Optional[torch.dtype] = None, device: Optional[torch.device] = None, wrap_sequence: bool = True, - track_meta: Optional[bool] = False, + track_meta: Optional[bool] = None, allow_missing_keys: bool = False, ) -> None: """ @@ -500,8 +500,8 @@ def __init__( device: specify the target device to put the Tensor data. wrap_sequence: if `False`, then lists will recursively call this function, default to `True`. E.g., if `False`, `[1, 2]` -> `[tensor(1), tensor(2)]`, if `True`, then `[1, 2]` -> `tensor([1, 2])`. - track_meta: whether to convert to `MetaTensor`, default to `False`, output type will be `torch.Tensor`. - if `None`, use the return value of ``get_track_meta``. + track_meta: if `True` convert to ``MetaTensor``, otherwise to Pytorch ``Tensor``, + if ``None`` behave according to return value of py:func:`monai.data.meta_obj.get_track_meta`. allow_missing_keys: don't raise exception if key is missing. """ diff --git a/tests/test_deepedit_interaction.py b/tests/test_deepedit_interaction.py index 6bb723268f..2bcace59fd 100644 --- a/tests/test_deepedit_interaction.py +++ b/tests/test_deepedit_interaction.py @@ -23,7 +23,7 @@ FindDiscrepancyRegionsDeepEditd, SplitPredsLabeld, ) -from monai.data import Dataset +from monai.data import DataLoader, Dataset from monai.engines import SupervisedTrainer from monai.engines.utils import IterationEvents from monai.losses import DiceCELoss @@ -62,7 +62,7 @@ def run_interaction(self, train): ] ) dataset = Dataset(data, transform=pre_transforms) - data_loader = torch.utils.data.DataLoader(dataset, batch_size=5) + data_loader = DataLoader(dataset, batch_size=5) iteration_transforms = [ FindDiscrepancyRegionsDeepEditd(keys="label", pred="pred", discrepancy="discrepancy"), From 60489d560f6366fa7fc5e60541547a9466e89c40 Mon Sep 17 00:00:00 2001 From: Abhijeet Parida Date: Thu, 11 Aug 2022 12:45:22 -0400 Subject: [PATCH 072/150] fix(VnetInputTransition): added custom out channels (#4895) * fix(VnetInputTransition): added custom out channels previously `out_channels` function argument was ignored in favoure of the fixed 16 * fix(vnetInputTransition): updated a error msg Signed-off-by: a-parida12 * [MONAI] code formatting Signed-off-by: monai-bot Signed-off-by: a-parida12 Signed-off-by: monai-bot Co-authored-by: monai-bot Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/networks/nets/vnet.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/monai/networks/nets/vnet.py b/monai/networks/nets/vnet.py index 7669b4678e..9abd2bc5e2 100644 --- a/monai/networks/nets/vnet.py +++ b/monai/networks/nets/vnet.py @@ -67,16 +67,19 @@ def __init__( ): super().__init__() - if 16 % in_channels != 0: - raise ValueError(f"16 should be divisible by in_channels, got in_channels={in_channels}.") + if out_channels % in_channels != 0: + raise ValueError( + f"out channels should be divisible by in_channels. Got in_channels={in_channels}, out_channels={out_channels}." + ) self.spatial_dims = spatial_dims self.in_channels = in_channels - self.act_function = get_acti_layer(act, 16) + self.out_channels = out_channels + self.act_function = get_acti_layer(act, out_channels) self.conv_block = Convolution( spatial_dims=spatial_dims, in_channels=in_channels, - out_channels=16, + out_channels=out_channels, kernel_size=5, act=None, norm=Norm.BATCH, @@ -85,7 +88,7 @@ def __init__( def forward(self, x): out = self.conv_block(x) - repeat_num = 16 // self.in_channels + repeat_num = self.out_channels // self.in_channels x16 = x.repeat([1, repeat_num, 1, 1, 1][: self.spatial_dims + 2]) out = self.act_function(torch.add(out, x16)) return out From be2d42011a66bdf4515367809d4f1a0dcb417a4b Mon Sep 17 00:00:00 2001 From: Holger Roth <6304754+holgerroth@users.noreply.github.com> Date: Thu, 11 Aug 2022 14:20:38 -0400 Subject: [PATCH 073/150] 4846 send weight differences (#4876) * Add client_algo.py, monai_algo.py and exchange_object.py Signed-off-by: Warvito * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add train test * test predict and get_weights * add test for exchange object * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix formatting * fixes style issues Signed-off-by: Wenqi Li * fixes style and doc Signed-off-by: Wenqi Li * fixes style issue Signed-off-by: Wenqi Li * fixes flake8 Signed-off-by: Wenqi Li * fixes unit tests Signed-off-by: Wenqi Li * fixes tests Signed-off-by: Wenqi Li * update based on comments Signed-off-by: Wenqi Li * combine config files using one parser; use evaluate instead of predict to be closer with moani terminology * fix default return ids * allow standardized usage of bundle * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * remove comments * remove local path from configs * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * [MONAI] code formatting Signed-off-by: monai-bot * fixes tests Signed-off-by: Wenqi Li * support bundle root and use app root provided by FL system support weight differences formatting formatting test for trainer, change epoch separate train and eval parsers use monai network utils make config parsing more flexible; update tests rename variable and use network utils add docstrings [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci formatting Signed-off-by: Holger Roth Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/fl/client/monai_algo.py | 232 +++++++++++++++++---- monai/fl/utils/constants.py | 29 +-- monai/fl/utils/exchange_object.py | 11 +- tests/test_fl_monai_algo.py | 75 ++++--- tests/testing_data/config_fl_evaluate.json | 1 + tests/testing_data/config_fl_train.json | 1 + 6 files changed, 268 insertions(+), 81 deletions(-) diff --git a/monai/fl/client/monai_algo.py b/monai/fl/client/monai_algo.py index 7f0739e74e..d377dc654b 100644 --- a/monai/fl/client/monai_algo.py +++ b/monai/fl/client/monai_algo.py @@ -10,6 +10,7 @@ # limitations under the License. import logging +import os import sys from typing import TYPE_CHECKING, Optional @@ -20,8 +21,17 @@ from monai.bundle.config_item import ConfigItem from monai.config import IgniteInfo from monai.fl.client.client_algo import ClientAlgo -from monai.fl.utils.constants import BundleConst, ExtraItems, FiltersType, FlPhase, WeightType +from monai.fl.utils.constants import ( + BundleKeys, + ExtraItems, + FiltersType, + FlPhase, + FlStatistics, + RequiredBundleKeys, + WeightType, +) from monai.fl.utils.exchange_object import ExchangeObject +from monai.networks.utils import copy_model_state, get_state_dict from monai.utils import min_version, optional_import if TYPE_CHECKING: @@ -38,77 +48,170 @@ def convert_global_weights(global_weights, local_var_dict): model_keys = global_weights.keys() for var_name in local_var_dict: if var_name in model_keys: + weights = global_weights[var_name] try: + # reshape global weights to compute difference later on + weights = torch.reshape(torch.as_tensor(weights), local_var_dict[var_name].shape) # update the local dict - local_var_dict[var_name] = torch.as_tensor(global_weights[var_name]) + local_var_dict[var_name] = weights except Exception as e: raise ValueError(f"Convert weight from {var_name} failed.") from e return local_var_dict +def compute_weight_diff(global_weights, local_var_dict): + if global_weights is None: + raise ValueError("Cannot compute weight differences if `global_weights` is None!") + if local_var_dict is None: + raise ValueError("Cannot compute weight differences if `local_var_dict` is None!") + # compute delta model, global model has the primary key set + weight_diff = {} + for name in global_weights: + if name not in local_var_dict: + continue + weight_diff[name] = local_var_dict[name].cpu() - global_weights[name] + if torch.any(torch.isnan(weight_diff[name])): + raise ValueError(f"Weights for {name} became NaN...") + return weight_diff + + +def check_bundle_config(parser): + for k in RequiredBundleKeys: + if parser.get(k, None) is None: + raise KeyError(f"Bundle config misses required key `{k}`") + + class MonaiAlgo(ClientAlgo): + """ + Implementation of ``ClientAlgo`` to allow federated learning with MONAI bundle configurations. + + Args: + bundle_root: path of bundle. + local_epochs: number of local epochs to execute during each round of local training; defaults to 1. + send_weight_diff: whether to send weight differences rather than full weights; defaults to `True`. + config_train_filename: bundle training config path relative to bundle_root; defaults to "configs/train.json" + config_evaluate_filename: bundle evaluation config path relative to bundle_root; defaults to "configs/evaluate.json" + config_filters_filename: filter configuration file. + """ + def __init__( self, - config_train_file: Optional[str] = None, - config_evaluate_file: Optional[str] = None, - config_filters_file: Optional[str] = None, + bundle_root: str, + local_epochs: int = 1, + send_weight_diff: bool = True, + config_train_filename: Optional[str] = "configs/train.json", + config_evaluate_filename: Optional[str] = "configs/evaluate.json", + config_filters_filename: Optional[str] = None, ): self.logger = logging.getLogger(self.__class__.__name__) - self.config_train_file = config_train_file - self.config_evaluate_file = config_evaluate_file - self.config_filters_file = config_filters_file - self.parser = None + self.bundle_root = bundle_root + self.local_epochs = local_epochs + self.send_weight_diff = send_weight_diff + self.config_train_filename = config_train_filename + self.config_evaluate_filename = config_evaluate_filename + self.config_filters_filename = config_filters_filename + + self.app_root = None + self.train_parser = None + self.eval_parser = None + self.filter_parser = None self.trainer = None self.evaluator = None self.pre_filters = None self.post_weight_filters = None self.post_evaluate_filters = None + self.iter_of_start_time = 0 + self.global_weights = None self.phase = FlPhase.IDLE self.client_name = None def initialize(self, extra=None): + """ + Initialize routine to parse configuration files and extract main components such as trainer, evaluator, and filters. + + Args: + extra: Dict with additional information that should be provided by FL system, + i.e., `ExtraItems.CLIENT_NAME` and `ExtraItems.APP_ROOT`. + + """ if extra is None: extra = {} self.logger.info(f"Initializing {self.client_name} ...") self.client_name = extra.get(ExtraItems.CLIENT_NAME, "noname") + # FL platform needs to provide filepath to configuration files + self.app_root = extra.get(ExtraItems.APP_ROOT, "") + # Read bundle config files - config_files = [] - if self.config_train_file: - config_files.append(self.config_train_file) - if self.config_evaluate_file: - config_files.append(self.config_evaluate_file) - if self.config_filters_file: - config_files.append(self.config_filters_file) + self.bundle_root = os.path.join(self.app_root, self.bundle_root) + + config_train_files = [] + config_eval_files = [] + config_filter_files = [] + if self.config_train_filename: + config_train_files.append(os.path.join(self.bundle_root, self.config_train_filename)) + config_eval_files.append(os.path.join(self.bundle_root, self.config_train_filename)) + if self.config_evaluate_filename: + config_eval_files.append(os.path.join(self.bundle_root, self.config_evaluate_filename)) + if self.config_filters_filename: # filters are read by train_parser + config_filter_files.append(os.path.join(self.bundle_root, self.config_filters_filename)) # Parse - self.parser = ConfigParser() - self.parser.read_config(config_files) - self.parser.parse() - - # Get trainer, evaluator, and filters - self.trainer = self.parser.get_parsed_content( - BundleConst.KEY_TRAINER, default=ConfigItem(None, BundleConst.KEY_TRAINER) + self.train_parser = ConfigParser() + self.eval_parser = ConfigParser() + self.filter_parser = ConfigParser() + if len(config_train_files) > 0: + self.train_parser.read_config(config_train_files) + check_bundle_config(self.train_parser) + if len(config_eval_files) > 0: + self.eval_parser.read_config(config_eval_files) + check_bundle_config(self.eval_parser) + if len(config_filter_files) > 0: + self.filter_parser.read_config(config_eval_files) + + # override some config items + self.train_parser[RequiredBundleKeys.BUNDLE_ROOT] = self.bundle_root + self.eval_parser[RequiredBundleKeys.BUNDLE_ROOT] = self.bundle_root + # number of training epochs for each round + if BundleKeys.TRAIN_TRAINER_MAX_EPOCHS in self.train_parser: + self.train_parser[BundleKeys.TRAIN_TRAINER_MAX_EPOCHS] = self.local_epochs + + self.train_parser.parse() + self.eval_parser.parse() + self.filter_parser.parse() + + # Get trainer, evaluator + self.trainer = self.train_parser.get_parsed_content( + BundleKeys.TRAINER, default=ConfigItem(None, BundleKeys.TRAINER) ) - self.evaluator = self.parser.get_parsed_content( - BundleConst.KEY_EVALUATOR, default=ConfigItem(None, BundleConst.KEY_EVALUATOR) + self.evaluator = self.eval_parser.get_parsed_content( + BundleKeys.EVALUATOR, default=ConfigItem(None, BundleKeys.EVALUATOR) ) - self.pre_filters = self.parser.get_parsed_content( + # Get filters + self.pre_filters = self.filter_parser.get_parsed_content( FiltersType.PRE_FILTERS, default=ConfigItem(None, FiltersType.PRE_FILTERS) ) - self.post_weight_filters = self.parser.get_parsed_content( + self.post_weight_filters = self.filter_parser.get_parsed_content( FiltersType.POST_WEIGHT_FILTERS, default=ConfigItem(None, FiltersType.POST_WEIGHT_FILTERS) ) - self.post_evaluate_filters = self.parser.get_parsed_content( + self.post_evaluate_filters = self.filter_parser.get_parsed_content( FiltersType.POST_EVALUATE_FILTERS, default=ConfigItem(None, FiltersType.POST_EVALUATE_FILTERS) ) self.logger.info(f"Initialized {self.client_name}.") def train(self, data: ExchangeObject, extra=None): + """ + Train on client's local data. + + Args: + data: `ExchangeObject` containing the current global model weights. + extra: Dict with additional information that can be provided by FL system. + + """ if extra is None: extra = {} if not isinstance(data, ExchangeObject): @@ -121,32 +224,54 @@ def train(self, data: ExchangeObject, extra=None): data = _filter(data, extra) self.phase = FlPhase.TRAIN self.logger.info(f"Load {self.client_name} weights...") - local_weights = convert_global_weights( - global_weights=data.weights, local_var_dict=self.trainer.network.state_dict() + self.global_weights = convert_global_weights( + global_weights=data.weights, local_var_dict=get_state_dict(self.trainer.network) ) - self.trainer.network.load_state_dict(local_weights) + # set engine state max epochs. + self.trainer.state.max_epochs = self.trainer.state.epoch + self.local_epochs + # get current iteration when a round starts + self.iter_of_start_time = self.trainer.state.iteration + + copy_model_state(src=self.global_weights, dst=self.trainer.network) self.logger.info(f"Start {self.client_name} training...") self.trainer.run() def get_weights(self, extra=None): + """ + Returns the current weights of the model. + + Args: + extra: Dict with additional information that can be provided by FL system. + + Returns: + return_weights: `ExchangeObject` containing current weights. + + """ if extra is None: extra = {} self.phase = FlPhase.GET_WEIGHTS if self.trainer: - weights = self.trainer.network.state_dict() - stats = self.trainer.get_train_stats() # TODO: returns dict with hardcoded strings from MONAI + weights = get_state_dict(self.trainer.network) + weigh_type = WeightType.WEIGHTS + stats = self.trainer.get_train_stats() + # calculate current iteration and epoch data after training. + stats[FlStatistics.NUM_EXECUTED_ITERATIONS] = self.trainer.state.iteration - self.iter_of_start_time + # compute weight differences + if self.send_weight_diff: + weights = compute_weight_diff(global_weights=self.global_weights, local_var_dict=weights) + weigh_type = WeightType.WEIGHT_DIFF else: weights = None + weigh_type = None stats = dict() - # TODO: support weight diffs if not isinstance(stats, dict): raise ValueError(f"stats is not a dict, {stats}") return_weights = ExchangeObject( weights=weights, optim=None, # could be self.optimizer.state_dict() - weight_type=WeightType.WEIGHTS, + weight_type=weigh_type, statistics=stats, ) @@ -158,6 +283,17 @@ def get_weights(self, extra=None): return return_weights def evaluate(self, data: ExchangeObject, extra=None): + """ + Evaluate on client's local data. + + Args: + data: `ExchangeObject` containing the current global model weights. + extra: Dict with additional information that can be provided by FL system. + + Returns: + return_metrics: `ExchangeObject` containing evaluation metrics. + + """ if extra is None: extra = {} if not isinstance(data, ExchangeObject): @@ -171,13 +307,16 @@ def evaluate(self, data: ExchangeObject, extra=None): self.phase = FlPhase.EVALUATE self.logger.info(f"Load {self.client_name} weights...") - local_weights = convert_global_weights( - global_weights=data.weights, local_var_dict=self.evaluator.network.state_dict() + global_weights = convert_global_weights( + global_weights=data.weights, local_var_dict=get_state_dict(self.evaluator.network) ) - self.evaluator.network.load_state_dict(local_weights) + copy_model_state(src=global_weights, dst=self.evaluator.network) self.logger.info(f"Start {self.client_name} evaluating...") - self.evaluator.run() + if isinstance(self.trainer, monai.engines.Trainer): + self.evaluator.run(self.trainer.state.epoch + 1) + else: + self.evaluator.run() return_metrics = ExchangeObject(metrics=self.evaluator.state.metrics) if self.post_evaluate_filters is not None: @@ -186,8 +325,12 @@ def evaluate(self, data: ExchangeObject, extra=None): return return_metrics def abort(self, extra=None): - if extra is None: - extra = {} + """ + Abort the training or evaluation. + Args: + extra: Dict with additional information that can be provided by FL system. + """ + self.logger.info(f"Aborting {self.client_name} during {self.phase} phase.") if isinstance(self.trainer, monai.engines.Trainer): self.logger.info(f"Aborting {self.client_name} trainer...") @@ -200,8 +343,13 @@ def abort(self, extra=None): self.evaluator.terminate() def finalize(self, extra=None): - # TODO: finalize feature could be built into the MONAI Trainer class + """ + Finalize the training or evaluation. + Args: + extra: Dict with additional information that can be provided by FL system. + """ + # TODO: finalize feature could be built into the MONAI Trainer class if extra is None: extra = {} self.logger.info(f"Terminating {self.client_name} during {self.phase} phase.") diff --git a/monai/fl/utils/constants.py b/monai/fl/utils/constants.py index 11ff7c77a3..90b452e70d 100644 --- a/monai/fl/utils/constants.py +++ b/monai/fl/utils/constants.py @@ -9,38 +9,43 @@ # See the License for the specific language governing permissions and # limitations under the License. +from monai.utils.enums import StrEnum -class WeightType: + +class WeightType(StrEnum): WEIGHTS = "fl_weights_full" WEIGHT_DIFF = "fl_weight_diff" -class ExtraItems: +class ExtraItems(StrEnum): ABORT = "fl_abort" MODEL_NAME = "fl_model_name" CLIENT_NAME = "fl_client_name" + APP_ROOT = "fl_app_root" -class FlPhase: +class FlPhase(StrEnum): IDLE = "fl_idle" TRAIN = "fl_train" EVALUATE = "fl_evaluate" GET_WEIGHTS = "fl_get_weights" -class FlStatistics: - # TODO: currently uses hardcoded strings from. Might move to MONAI core? - # https://github.com/Project-MONAI/MONAI/blob/df4a7d72e1d231b898f88d92cf981721c49ceaeb/monai/engines/trainer.py#L60 - TOTAL_EPOCHS = "total_epochs" - TOTAL_ITERATIONS = "total_iterations" +class FlStatistics(StrEnum): + NUM_EXECUTED_ITERATIONS = "num_executed_iterations" + + +class RequiredBundleKeys(StrEnum): + BUNDLE_ROOT = "bundle_root" -class BundleConst: - KEY_TRAINER = "train#trainer" - KEY_EVALUATOR = "validate#evaluator" +class BundleKeys(StrEnum): + TRAINER = "train#trainer" + EVALUATOR = "validate#evaluator" + TRAIN_TRAINER_MAX_EPOCHS = "train#trainer#max_epochs" -class FiltersType: +class FiltersType(StrEnum): PRE_FILTERS = "pre_filters" POST_WEIGHT_FILTERS = "post_weight_filters" POST_EVALUATE_FILTERS = "post_evaluate_filters" diff --git a/monai/fl/utils/exchange_object.py b/monai/fl/utils/exchange_object.py index a854e3bca5..09f3878ca9 100644 --- a/monai/fl/utils/exchange_object.py +++ b/monai/fl/utils/exchange_object.py @@ -15,10 +15,15 @@ class ExchangeObject(dict): - """Exchange object - - Contains the information shared between client and server + """ + Contains the information shared between client and server. + Args: + weights: model weights. + optim: optimizer weights. + metrics: evaluation metrics. + weight_type: type of weights (see monai.fl.utils.constants.WeightType). + statistics: training statistics, i.e. number executed iterations. """ def __init__( diff --git a/tests/test_fl_monai_algo.py b/tests/test_fl_monai_algo.py index 7bf035a959..c7bb7e0b0a 100644 --- a/tests/test_fl_monai_algo.py +++ b/tests/test_fl_monai_algo.py @@ -24,40 +24,63 @@ TEST_TRAIN_1 = [ { - "config_train_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_train.json"), - "config_filters_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_filters.json"), + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": os.path.join("testing_data", "config_fl_train.json"), + "config_evaluate_filename": None, + "config_filters_filename": os.path.join("testing_data", "config_fl_filters.json"), } ] TEST_TRAIN_2 = [ { - "config_train_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_train.json"), - "config_filters_file": None, + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": os.path.join("testing_data", "config_fl_train.json"), + "config_evaluate_filename": None, + "config_filters_filename": None, } ] TEST_EVALUATE_1 = [ { - "config_evaluate_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_evaluate.json"), - "config_filters_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_filters.json"), + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": None, + "config_evaluate_filename": os.path.join("testing_data", "config_fl_evaluate.json"), + "config_filters_filename": os.path.join("testing_data", "config_fl_filters.json"), } ] TEST_EVALUATE_2 = [ { - "config_evaluate_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_evaluate.json"), - "config_filters_file": None, + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": None, + "config_evaluate_filename": os.path.join("testing_data", "config_fl_evaluate.json"), + "config_filters_filename": None, } ] TEST_GET_WEIGHTS_1 = [ { - "config_train_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_train.json"), - "config_filters_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_filters.json"), + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": os.path.join("testing_data", "config_fl_train.json"), + "config_evaluate_filename": None, + "send_weight_diff": False, + "config_filters_filename": os.path.join("testing_data", "config_fl_filters.json"), } ] TEST_GET_WEIGHTS_2 = [ { - "config_train_file": None, - "config_filters_file": os.path.join(os.path.dirname(__file__), "testing_data", "config_fl_filters.json"), + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": None, + "config_evaluate_filename": None, + "send_weight_diff": False, + "config_filters_filename": os.path.join("testing_data", "config_fl_filters.json"), + } +] +TEST_GET_WEIGHTS_3 = [ + { + "bundle_root": os.path.join(os.path.dirname(__file__)), + "config_train_filename": os.path.join("testing_data", "config_fl_train.json"), + "config_evaluate_filename": None, + "send_weight_diff": True, + "config_filters_filename": os.path.join("testing_data", "config_fl_filters.json"), } ] @@ -67,12 +90,12 @@ class TestFLMonaiAlgo(unittest.TestCase): @parameterized.expand([TEST_TRAIN_1, TEST_TRAIN_2]) def test_train(self, input_params): # get testing data dir and update train config - with open(input_params["config_train_file"]) as f: + with open(os.path.join(input_params["bundle_root"], input_params["config_train_filename"])) as f: config_train = json.load(f) config_train["dataset_dir"] = os.path.join(os.path.dirname(__file__), "testing_data") - with open(input_params["config_train_file"], "w") as f: + with open(os.path.join(input_params["bundle_root"], input_params["config_train_filename"]), "w") as f: json.dump(config_train, f, indent=4) # initialize algo @@ -81,7 +104,7 @@ def test_train(self, input_params): # initialize model parser = ConfigParser() - parser.read_config(input_params["config_train_file"]) + parser.read_config(os.path.join(input_params["bundle_root"], input_params["config_train_filename"])) parser.parse() network = parser.get_parsed_content("network") @@ -93,12 +116,12 @@ def test_train(self, input_params): @parameterized.expand([TEST_EVALUATE_1, TEST_EVALUATE_2]) def test_evaluate(self, input_params): # get testing data dir and update train config - with open(input_params["config_evaluate_file"]) as f: + with open(os.path.join(input_params["bundle_root"], input_params["config_evaluate_filename"])) as f: config_evaluate = json.load(f) config_evaluate["dataset_dir"] = os.path.join(os.path.dirname(__file__), "testing_data") - with open(input_params["config_evaluate_file"], "w") as f: + with open(os.path.join(input_params["bundle_root"], input_params["config_evaluate_filename"]), "w") as f: json.dump(config_evaluate, f, indent=4) # initialize algo @@ -107,7 +130,7 @@ def test_evaluate(self, input_params): # initialize model parser = ConfigParser() - parser.read_config(input_params["config_evaluate_file"]) + parser.read_config(os.path.join(input_params["bundle_root"], input_params["config_evaluate_filename"])) parser.parse() network = parser.get_parsed_content("network") @@ -116,16 +139,16 @@ def test_evaluate(self, input_params): # test evaluate algo.evaluate(data=data, extra={}) - @parameterized.expand([TEST_GET_WEIGHTS_1, TEST_GET_WEIGHTS_2]) + @parameterized.expand([TEST_GET_WEIGHTS_1, TEST_GET_WEIGHTS_2, TEST_GET_WEIGHTS_3]) def test_get_weights(self, input_params): # get testing data dir and update train config - if input_params["config_train_file"]: - with open(input_params["config_train_file"]) as f: + if input_params["config_train_filename"]: + with open(os.path.join(input_params["bundle_root"], input_params["config_train_filename"])) as f: config_train = json.load(f) config_train["dataset_dir"] = os.path.join(os.path.dirname(__file__), "testing_data") - with open(input_params["config_train_file"], "w") as f: + with open(os.path.join(input_params["bundle_root"], input_params["config_train_filename"]), "w") as f: json.dump(config_train, f, indent=4) # initialize algo @@ -133,8 +156,12 @@ def test_get_weights(self, input_params): algo.initialize(extra={ExtraItems.CLIENT_NAME: "test_fl"}) # test train - weights = algo.get_weights(extra={}) - self.assertIsInstance(weights, ExchangeObject) + if input_params["send_weight_diff"]: # should not work as test doesn't receive a global model + with self.assertRaises(ValueError): + weights = algo.get_weights(extra={}) + else: + weights = algo.get_weights(extra={}) + self.assertIsInstance(weights, ExchangeObject) # TODO: test abort and finalize diff --git a/tests/testing_data/config_fl_evaluate.json b/tests/testing_data/config_fl_evaluate.json index e9d7e05c4a..84ab7988f6 100644 --- a/tests/testing_data/config_fl_evaluate.json +++ b/tests/testing_data/config_fl_evaluate.json @@ -1,4 +1,5 @@ { + "bundle_root": "tests/testing_data", "dataset_dir": "tests/testing_data", "imports": [ "$import os" diff --git a/tests/testing_data/config_fl_train.json b/tests/testing_data/config_fl_train.json index 7427ad12d4..5954d2cfbc 100644 --- a/tests/testing_data/config_fl_train.json +++ b/tests/testing_data/config_fl_train.json @@ -1,4 +1,5 @@ { + "bundle_root": "tests/testing_data", "dataset_dir": "tests/testing_data", "imports": [ "$import os" From b49d4553da937d1a3752683dd4c98ca884ffb292 Mon Sep 17 00:00:00 2001 From: binliunls <107988372+binliunls@users.noreply.github.com> Date: Fri, 12 Aug 2022 17:20:35 +0800 Subject: [PATCH 074/150] Add flexible unet for encoder-decoder structure (#4801) * Add flexible unet. A flexible U-Net implements an encoder-decoder network. This network uses U-Net as decoder and efficientnet-V1 family as encoder. The encoder type can be set by passing parameters 'efficientnet-b0, ..., efficientnet-b7, efficientnet-l2' to the initialize function. Signed-off-by: binliu * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix feature_channel name issue and input parameters issue. add a unit test file for flexible unet. Signed-off-by: binliunls * Add flexible unet to monai's documentation and modify the docstring of flexible unet Signed-off-by: binliunls * change the input size in unit test of flexible unet for CI/CD Signed-off-by: binliunls * modify the unit test file of flexible unet to make it works on CI/CD Signed-off-by: binliunls * add pretrain weight check in flexible unet unitest. Signed-off-by: binliunls * fix bias, dim, flexible_unet doc string problem, add @skip_if_quick to unitest since the download may cost a lot of time. Signed-off-by: binliunls * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fix the if branch of adv_prop model to a simple equation. Signed-off-by: binliu * delete the useless legacy pool in init functin of FlexibleUNet, change the dim parameter of segmentation head to spatial_dims. Signed-off-by: binliu * modify the hints of features in unet_decoder forward function Signed-off-by: binliu * add a is_pad parameter to decided whether pad the upsampling features to fit encoder features Signed-off-by: binliu * delete the useless pool input Signed-off-by: binliu Signed-off-by: binliu Signed-off-by: binliunls Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- docs/source/networks.rst | 5 + monai/networks/nets/__init__.py | 1 + monai/networks/nets/basic_unet.py | 18 +- monai/networks/nets/flexible_unet.py | 307 +++++++++++++++++++++++++++ tests/test_flexible_unet.py | 242 +++++++++++++++++++++ 5 files changed, 566 insertions(+), 7 deletions(-) create mode 100644 monai/networks/nets/flexible_unet.py create mode 100644 tests/test_flexible_unet.py diff --git a/docs/source/networks.rst b/docs/source/networks.rst index 8e64d74252..f9d63c13c5 100644 --- a/docs/source/networks.rst +++ b/docs/source/networks.rst @@ -524,6 +524,11 @@ Nets .. autoclass:: BasicUnet .. autoclass:: Basicunet +`FlexibleUNet` +~~~~~~~~~~~~~~ +.. autoclass:: FlexibleUNet + :members: + `VNet` ~~~~~~ .. autoclass:: VNet diff --git a/monai/networks/nets/__init__.py b/monai/networks/nets/__init__.py index a4e8312b30..cd9329f61b 100644 --- a/monai/networks/nets/__init__.py +++ b/monai/networks/nets/__init__.py @@ -40,6 +40,7 @@ drop_connect, get_efficientnet_image_size, ) +from .flexible_unet import FlexibleUNet from .fullyconnectednet import FullyConnectedNet, VarFullyConnectedNet from .generator import Generator from .highresnet import HighResBlock, HighResNet diff --git a/monai/networks/nets/basic_unet.py b/monai/networks/nets/basic_unet.py index 1e46846576..e03aacd5f4 100644 --- a/monai/networks/nets/basic_unet.py +++ b/monai/networks/nets/basic_unet.py @@ -118,6 +118,7 @@ def __init__( align_corners: Optional[bool] = True, halves: bool = True, dim: Optional[int] = None, + is_pad: bool = True, ): """ Args: @@ -139,6 +140,7 @@ def __init__( Only used in the "nontrainable" mode. halves: whether to halve the number of channels during upsampling. This parameter does not work on ``nontrainable`` mode if ``pre_conv`` is `None`. + is_pad: whether to pad upsampling features to fit features from encoder. Defaults to True. .. deprecated:: 0.6.0 ``dim`` is deprecated, use ``spatial_dims`` instead. @@ -161,6 +163,7 @@ def __init__( align_corners=align_corners, ) self.convs = TwoConv(spatial_dims, cat_chns + up_chns, out_chns, act, norm, bias, dropout) + self.is_pad = is_pad def forward(self, x: torch.Tensor, x_e: Optional[torch.Tensor]): """ @@ -172,13 +175,14 @@ def forward(self, x: torch.Tensor, x_e: Optional[torch.Tensor]): x_0 = self.upsample(x) if x_e is not None: - # handling spatial shapes due to the 2x maxpooling with odd edge lengths. - dimensions = len(x.shape) - 2 - sp = [0] * (dimensions * 2) - for i in range(dimensions): - if x_e.shape[-i - 1] != x_0.shape[-i - 1]: - sp[i * 2 + 1] = 1 - x_0 = torch.nn.functional.pad(x_0, sp, "replicate") + if self.is_pad: + # handling spatial shapes due to the 2x maxpooling with odd edge lengths. + dimensions = len(x.shape) - 2 + sp = [0] * (dimensions * 2) + for i in range(dimensions): + if x_e.shape[-i - 1] != x_0.shape[-i - 1]: + sp[i * 2 + 1] = 1 + x_0 = torch.nn.functional.pad(x_0, sp, "replicate") x = self.convs(torch.cat([x_e, x_0], dim=1)) # input channels: (cat_chns + up_chns) else: x = self.convs(x_0) diff --git a/monai/networks/nets/flexible_unet.py b/monai/networks/nets/flexible_unet.py new file mode 100644 index 0000000000..4901decceb --- /dev/null +++ b/monai/networks/nets/flexible_unet.py @@ -0,0 +1,307 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from typing import List, Optional, Sequence, Tuple, Union + +import torch +from torch import nn + +from monai.networks.blocks import UpSample +from monai.networks.layers.factories import Conv +from monai.networks.layers.utils import get_act_layer +from monai.networks.nets import EfficientNetBNFeatures +from monai.networks.nets.basic_unet import UpCat +from monai.utils import InterpolateMode + +__all__ = ["FlexibleUNet"] + +encoder_feature_channel = { + "efficientnet-b0": (16, 24, 40, 112, 320), + "efficientnet-b1": (16, 24, 40, 112, 320), + "efficientnet-b2": (16, 24, 48, 120, 352), + "efficientnet-b3": (24, 32, 48, 136, 384), + "efficientnet-b4": (24, 32, 56, 160, 448), + "efficientnet-b5": (24, 40, 64, 176, 512), + "efficientnet-b6": (32, 40, 72, 200, 576), + "efficientnet-b7": (32, 48, 80, 224, 640), + "efficientnet-b8": (32, 56, 88, 248, 704), + "efficientnet-l2": (72, 104, 176, 480, 1376), +} + + +def _get_encoder_channels_by_backbone(backbone: str, in_channels: int = 3) -> tuple: + """ + Get the encoder output channels by given backbone name. + + Args: + backbone: name of backbone to generate features, can be from [efficientnet-b0, ..., efficientnet-b7]. + in_channels: channel of input tensor, default to 3. + + Returns: + A tuple of output feature map channels' length . + """ + encoder_channel_tuple = encoder_feature_channel[backbone] + encoder_channel_list = [in_channels] + list(encoder_channel_tuple) + encoder_channel = tuple(encoder_channel_list) + return encoder_channel + + +class UNetDecoder(nn.Module): + """ + UNet Decoder. + This class refers to `segmentation_models.pytorch + `_. + + Args: + spatial_dims: number of spatial dimensions. + encoder_channels: number of output channels for all feature maps in encoder. + `len(encoder_channels)` should be no less than 2. + decoder_channels: number of output channels for all feature maps in decoder. + `len(decoder_channels)` should equal to `len(encoder_channels) - 1`. + act: activation type and arguments. + norm: feature normalization type and arguments. + dropout: dropout ratio. + bias: whether to have a bias term in convolution blocks in this decoder. + upsample: upsampling mode, available options are + ``"deconv"``, ``"pixelshuffle"``, ``"nontrainable"``. + pre_conv: a conv block applied before upsampling. + Only used in the "nontrainable" or "pixelshuffle" mode. + interp_mode: {``"nearest"``, ``"linear"``, ``"bilinear"``, ``"bicubic"``, ``"trilinear"``} + Only used in the "nontrainable" mode. + align_corners: set the align_corners parameter for upsample. Defaults to True. + Only used in the "nontrainable" mode. + is_pad: whether to pad upsampling features to fit the encoder spatial dims. + + """ + + def __init__( + self, + spatial_dims: int, + encoder_channels: Sequence[int], + decoder_channels: Sequence[int], + act: Union[str, tuple], + norm: Union[str, tuple], + dropout: Union[float, tuple], + bias: bool, + upsample: str, + pre_conv: Optional[str], + interp_mode: str, + align_corners: Optional[bool], + is_pad: bool, + ): + + super().__init__() + if len(encoder_channels) < 2: + raise ValueError("the length of `encoder_channels` should be no less than 2.") + if len(decoder_channels) != len(encoder_channels) - 1: + raise ValueError("`len(decoder_channels)` should equal to `len(encoder_channels) - 1`.") + + in_channels = [encoder_channels[-1]] + list(decoder_channels[:-1]) + skip_channels = list(encoder_channels[1:-1][::-1]) + [0] + halves = [True] * (len(skip_channels) - 1) + halves.append(False) + blocks = [] + for in_chn, skip_chn, out_chn, halve in zip(in_channels, skip_channels, decoder_channels, halves): + blocks.append( + UpCat( + spatial_dims=spatial_dims, + in_chns=in_chn, + cat_chns=skip_chn, + out_chns=out_chn, + act=act, + norm=norm, + dropout=dropout, + bias=bias, + upsample=upsample, + pre_conv=pre_conv, + interp_mode=interp_mode, + align_corners=align_corners, + halves=halve, + is_pad=is_pad, + ) + ) + self.blocks = nn.ModuleList(blocks) + + def forward(self, features: List[torch.Tensor], skip_connect: int = 4): + skips = features[:-1][::-1] + features = features[1:][::-1] + + x = features[0] + for i, block in enumerate(self.blocks): + if i < skip_connect: + skip = skips[i] + else: + skip = None + x = block(x, skip) + + return x + + +class SegmentationHead(nn.Sequential): + """ + Segmentation head. + This class refers to `segmentation_models.pytorch + `_. + + Args: + spatial_dims: number of spatial dimensions. + in_channels: number of input channels for the block. + out_channels: number of output channels for the block. + kernel_size: kernel size for the conv layer. + act: activation type and arguments. + scale_factor: multiplier for spatial size. Has to match input size if it is a tuple. + + """ + + def __init__( + self, + spatial_dims: int, + in_channels: int, + out_channels: int, + kernel_size: int = 3, + act: Optional[Union[Tuple, str]] = None, + scale_factor: float = 1.0, + ): + + conv_layer = Conv[Conv.CONV, spatial_dims]( + in_channels=in_channels, out_channels=out_channels, kernel_size=kernel_size, padding=kernel_size // 2 + ) + up_layer: nn.Module = nn.Identity() + if scale_factor > 1.0: + up_layer = UpSample( + spatial_dims=spatial_dims, + scale_factor=scale_factor, + mode="nontrainable", + pre_conv=None, + interp_mode=InterpolateMode.LINEAR, + ) + if act is not None: + act_layer = get_act_layer(act) + else: + act_layer = nn.Identity() + super().__init__(conv_layer, up_layer, act_layer) + + +class FlexibleUNet(nn.Module): + """ + A flexible implementation of UNet-like encoder-decoder architecture. + """ + + def __init__( + self, + in_channels: int, + out_channels: int, + backbone: str, + pretrained: bool = False, + decoder_channels: Tuple = (256, 128, 64, 32, 16), + spatial_dims: int = 2, + norm: Union[str, tuple] = ("batch", {"eps": 1e-3, "momentum": 0.1}), + act: Union[str, tuple] = ("relu", {"inplace": True}), + dropout: Union[float, tuple] = 0.0, + decoder_bias: bool = False, + upsample: str = "nontrainable", + interp_mode: str = "nearest", + is_pad: bool = True, + ) -> None: + """ + A flexible implement of UNet, in which the backbone/encoder can be replaced with + any efficient network. Currently the input must have a 2 or 3 spatial dimension + and the spatial size of each dimension must be a multiple of 32 if is pad parameter + is False + + TODO(binliu@nvidia.com): Add more backbones/encoders to this class and make a general + encoder-decoder structure. ETC:2022.09.01 + + Args: + in_channels: number of input channels. + out_channels: number of output channels. + backbone: name of backbones to initialize, only support efficientnet right now, + can be from [efficientnet-b0,..., efficientnet-b8, efficientnet-l2]. + pretrained: whether to initialize pretrained ImageNet weights, only available + for spatial_dims=2 and batch norm is used, default to False. + decoder_channels: number of output channels for all feature maps in decoder. + `len(decoder_channels)` should equal to `len(encoder_channels) - 1`,default + to (256, 128, 64, 32, 16). + spatial_dims: number of spatial dimensions, default to 2. + norm: normalization type and arguments, default to ("batch", {"eps": 1e-3, + "momentum": 0.1}). + act: activation type and arguments, default to ("relu", {"inplace": True}). + dropout: dropout ratio, default to 0.0. + decoder_bias: whether to have a bias term in decoder's convolution blocks. + upsample: upsampling mode, available options are``"deconv"``, ``"pixelshuffle"``, + ``"nontrainable"``. + interp_mode: {``"nearest"``, ``"linear"``, ``"bilinear"``, ``"bicubic"``, ``"trilinear"``} + Only used in the "nontrainable" mode. + is_pad: whether to use padding feature maps to enable the input spatial not necessary + to be a multiple of 32. Default to True. + """ + super().__init__() + + if backbone not in encoder_feature_channel: + raise ValueError(f"invalid model_name {backbone} found, must be one of {encoder_feature_channel.keys()}.") + + if spatial_dims not in (2, 3): + raise ValueError("spatial_dims can only be 2 or 3.") + + adv_prop = "ap" in backbone + + self.backbone = backbone + self.spatial_dims = spatial_dims + model_name = backbone + encoder_channels = _get_encoder_channels_by_backbone(backbone, in_channels) + self.encoder = EfficientNetBNFeatures( + model_name=model_name, + pretrained=pretrained, + in_channels=in_channels, + spatial_dims=spatial_dims, + norm=norm, + adv_prop=adv_prop, + ) + self.decoder = UNetDecoder( + spatial_dims=spatial_dims, + encoder_channels=encoder_channels, + decoder_channels=decoder_channels, + act=act, + norm=norm, + dropout=dropout, + bias=decoder_bias, + upsample=upsample, + interp_mode=interp_mode, + pre_conv=None, + align_corners=None, + is_pad=is_pad, + ) + self.segmentation_head = SegmentationHead( + spatial_dims=spatial_dims, + in_channels=decoder_channels[-1], + out_channels=out_channels, + kernel_size=3, + act=None, + ) + + def forward(self, inputs: torch.Tensor): + """ + Do a typical encoder-decoder-header inference. + + Args: + inputs: input should have spatially N dimensions ``(Batch, in_channels, dim_0[, dim_1, ..., dim_N])``, + N is defined by `dimensions`. + + Returns: + A torch Tensor of "raw" predictions in shape ``(Batch, out_channels, dim_0[, dim_1, ..., dim_N])``. + + """ + x = inputs + enc_out = self.encoder(x) + decoder_out = self.decoder(enc_out) + x_seg = self.segmentation_head(decoder_out) + + return x_seg diff --git a/tests/test_flexible_unet.py b/tests/test_flexible_unet.py new file mode 100644 index 0000000000..1d6746f4eb --- /dev/null +++ b/tests/test_flexible_unet.py @@ -0,0 +1,242 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +import torch +from parameterized import parameterized + +from monai.networks import eval_mode +from monai.networks.nets import EfficientNetBNFeatures, FlexibleUNet +from monai.utils import optional_import +from tests.utils import skip_if_downloading_fails, skip_if_quick + +torchvision, has_torchvision = optional_import("torchvision") +PIL, has_pil = optional_import("PIL") + + +def get_model_names(): + return [f"efficientnet-b{d}" for d in range(8)] + + +def make_shape_cases( + models, + spatial_dims, + batches, + pretrained, + in_channels=3, + num_classes=10, + input_shape=64, + norm=("batch", {"eps": 1e-3, "momentum": 0.01}), +): + ret_tests = [] + for spatial_dim in spatial_dims: # selected spatial_dims + for batch in batches: # check single batch as well as multiple batch input + for model in models: # selected models + for is_pretrained in pretrained: # pretrained or not pretrained + kwargs = { + "in_channels": in_channels, + "out_channels": num_classes, + "backbone": model, + "pretrained": is_pretrained, + "spatial_dims": spatial_dim, + "norm": norm, + } + ret_tests.append( + [ + kwargs, + (batch, in_channels) + (input_shape,) * spatial_dim, + (batch, num_classes) + (input_shape,) * spatial_dim, + ] + ) + return ret_tests + + +# create list of selected models to speed up redundant tests +# only test the models B0, B3 +SEL_MODELS = [get_model_names()[i] for i in [0, 3]] + +# pretrained=False cases +# 2D and 3D models are expensive so use selected models +CASES_2D = make_shape_cases( + models=SEL_MODELS, + spatial_dims=[2], + batches=[1, 4], + pretrained=[False], + in_channels=3, + num_classes=10, + norm="instance", +) +CASES_3D = make_shape_cases( + models=[SEL_MODELS[0]], + spatial_dims=[3], + batches=[1], + pretrained=[False], + in_channels=3, + num_classes=10, + norm="batch", +) + +# varying num_classes and in_channels +CASES_VARIATIONS = [] + +# change num_classes test +# 20 classes +# 2D +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, spatial_dims=[2], batches=[1], pretrained=[False, True], in_channels=3, num_classes=20 + ) +) +# 3D +CASES_VARIATIONS.extend( + make_shape_cases( + models=[SEL_MODELS[0]], spatial_dims=[3], batches=[1], pretrained=[False], in_channels=3, num_classes=20 + ) +) + +# change in_channels test +# 1 channel +# 2D +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, spatial_dims=[2], batches=[1], pretrained=[False, True], in_channels=1, num_classes=10 + ) +) +# 8 channel +# 2D +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, spatial_dims=[2], batches=[1], pretrained=[False, True], in_channels=8, num_classes=10 + ) +) +# 3D +CASES_VARIATIONS.extend( + make_shape_cases( + models=[SEL_MODELS[0]], spatial_dims=[3], batches=[1], pretrained=[False], in_channels=1, num_classes=10 + ) +) + +# change input shape test +# 96 +# 2D 96x96 input +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, + spatial_dims=[2], + batches=[1], + pretrained=[False, True], + in_channels=3, + num_classes=10, + input_shape=96, + ) +) +# 2D 64x64 input +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, + spatial_dims=[2], + batches=[1], + pretrained=[False, True], + in_channels=3, + num_classes=10, + input_shape=64, + ) +) + +# 3D 32x32x32 input +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, + spatial_dims=[2], + batches=[1], + pretrained=[False], + in_channels=3, + num_classes=10, + input_shape=32, + ) +) + +# 3D 64x64x64 input +CASES_VARIATIONS.extend( + make_shape_cases( + models=SEL_MODELS, + spatial_dims=[2], + batches=[1], + pretrained=[False], + in_channels=3, + num_classes=10, + input_shape=64, + ) +) + +# pretrain weight verified +CASES_PRETRAIN = [ + ( + { + "in_channels": 3, + "out_channels": 10, + "backbone": SEL_MODELS[0], + "pretrained": True, + "spatial_dims": 2, + "norm": ("batch", {"eps": 1e-3, "momentum": 0.01}), + }, + { + "in_channels": 3, + "num_classes": 10, + "model_name": SEL_MODELS[0], + "pretrained": True, + "spatial_dims": 2, + "norm": ("batch", {"eps": 1e-3, "momentum": 0.01}), + }, + ["_conv_stem.weight"], + ) +] + + +@skip_if_quick +class TestFLEXIBLEUNET(unittest.TestCase): + @parameterized.expand(CASES_2D + CASES_3D + CASES_VARIATIONS) + def test_shape(self, input_param, input_shape, expected_shape): + device = "cuda" if torch.cuda.is_available() else "cpu" + + with skip_if_downloading_fails(): + net = FlexibleUNet(**input_param).to(device) + + # run inference with random tensor + with eval_mode(net): + result = net(torch.randn(input_shape).to(device)) + + # check output shape + self.assertEqual(result.shape, expected_shape) + + @parameterized.expand(CASES_PRETRAIN) + def test_pretrain(self, input_param, efficient_input_param, weight_list): + device = "cuda" if torch.cuda.is_available() else "cpu" + + with skip_if_downloading_fails(): + net = FlexibleUNet(**input_param).to(device) + + with skip_if_downloading_fails(): + eff_net = EfficientNetBNFeatures(**efficient_input_param).to(device) + + for weight_name in weight_list: + if weight_name in net.encoder.state_dict() and weight_name in eff_net.state_dict(): + net_weight = net.encoder.state_dict()[weight_name] + download_weight = eff_net.state_dict()[weight_name] + weight_diff = torch.abs(net_weight - download_weight) + diff_sum = torch.sum(weight_diff) + # check if a weight in weight_list equals to the downloaded weight. + self.assertLess(abs(diff_sum.item() - 0), 1e-8) + + +if __name__ == "__main__": + unittest.main() From d10f06454c8ee2a7dbc027316dc343b8ec2501df Mon Sep 17 00:00:00 2001 From: Mohammad Zalbagi Darestani <47939388+mersad95zd@users.noreply.github.com> Date: Fri, 12 Aug 2022 06:10:24 -0500 Subject: [PATCH 075/150] e2e-varnet (#4853) * initial commit of e2e-varnet Signed-off-by: mersad95zd * initial commit of e2e-varnet Signed-off-by: mersad95zd * docstrings updated; model attributes changed and polished according to monai style Signed-off-by: mersad95zd * added docs Signed-off-by: mersad95zd * reformatted varnet Signed-off-by: mersad95zd * fixed varnet forward Signed-off-by: mersad95zd * major update to utils and modules to make them jit script compatible Signed-off-by: mersad95zd * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * reformat fft_utils_t Signed-off-by: mersad95zd * made fft_utils_t compatible with pytorch==1.7.1 jit rules Signed-off-by: mersad95zd * removed redundancy between _t and normal funcs Signed-off-by: mersad95zd Signed-off-by: mersad95zd Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- docs/source/networks.rst | 5 + monai/apps/reconstruction/complex_utils.py | 70 ++++++-- monai/apps/reconstruction/mri_utils.py | 27 ++- .../networks/nets/coil_sensitivity_model.py | 10 +- .../networks/nets/complex_unet.py | 11 +- .../reconstruction/networks/nets/utils.py | 157 ++++++++++++++++-- .../reconstruction/networks/nets/varnet.py | 75 +++++++++ monai/networks/blocks/fft_utils_t.py | 54 ++---- tests/test_recon_net_utils.py | 13 ++ tests/test_varnet.py | 60 +++++++ 10 files changed, 406 insertions(+), 76 deletions(-) create mode 100644 monai/apps/reconstruction/networks/nets/varnet.py create mode 100644 tests/test_varnet.py diff --git a/docs/source/networks.rst b/docs/source/networks.rst index f9d63c13c5..04fabd07de 100644 --- a/docs/source/networks.rst +++ b/docs/source/networks.rst @@ -654,6 +654,11 @@ Nets .. autoclass:: monai.apps.reconstruction.networks.nets.coil_sensitivity_model.CoilSensitivityModel :members: +`e2e-VarNet` +~~~~~~~~~~~~ +.. autoclass:: monai.apps.reconstruction.networks.nets.varnet.VariationalNetworkModel + :members: + Utilities --------- .. automodule:: monai.networks.utils diff --git a/monai/apps/reconstruction/complex_utils.py b/monai/apps/reconstruction/complex_utils.py index 7eeeffb1b0..acf2920bb6 100644 --- a/monai/apps/reconstruction/complex_utils.py +++ b/monai/apps/reconstruction/complex_utils.py @@ -98,6 +98,21 @@ def convert_to_tensor_complex( return converted_data +def complex_abs_t(x: Tensor) -> Tensor: + """ + Compute the absolute value of a complex tensor. + + Args: + x: Input tensor with 2 channels in the last dimension representing real and imaginary parts. + + Returns: + Absolute value along the last dimention + """ + if x.shape[-1] != 2: + raise ValueError(f"x.shape[-1] is not 2 ({x.shape[-1]}).") + return (x[..., 0] ** 2 + x[..., 1] ** 2) ** 0.5 # type: ignore + + def complex_abs(x: NdarrayOrTensor) -> NdarrayOrTensor: """ Compute the absolute value of a complex array. @@ -116,9 +131,27 @@ def complex_abs(x: NdarrayOrTensor) -> NdarrayOrTensor: # the following line prints 5 print(complex_abs(x)) """ - if x.shape[-1] != 2: - raise ValueError(f"x.shape[-1] is not 2 ({x.shape[-1]}).") - return (x[..., 0] ** 2 + x[..., 1] ** 2) ** 0.5 + return complex_abs_t(x) # type: ignore + + +def complex_mul_t(x: Tensor, y: Tensor) -> Tensor: + """ + Compute complex-valued multiplication. Supports Ndim inputs with last dim equal to 2 (real/imaginary channels) + + Args: + x: Input tensor with 2 channels in the last dimension representing real and imaginary parts. + y: Input tensor with 2 channels in the last dimension representing real and imaginary parts. + + Returns: + Complex multiplication of x and y + """ + if x.shape[-1] != 2 or y.shape[-1] != 2: + raise ValueError(f"last dim must be 2, but x.shape[-1] is {x.shape[-1]} and y.shape[-1] is {y.shape[-1]}.") + + real_part = x[..., 0] * y[..., 0] - x[..., 1] * y[..., 1] + imag_part = x[..., 0] * y[..., 1] + x[..., 1] * y[..., 0] + + return torch.stack((real_part, imag_part), dim=-1) # type: ignore def complex_mul(x: NdarrayOrTensor, y: NdarrayOrTensor) -> NdarrayOrTensor: @@ -144,20 +177,37 @@ def complex_mul(x: NdarrayOrTensor, y: NdarrayOrTensor) -> NdarrayOrTensor: if x.shape[-1] != 2 or y.shape[-1] != 2: raise ValueError(f"last dim must be 2, but x.shape[-1] is {x.shape[-1]} and y.shape[-1] is {y.shape[-1]}.") - re = x[..., 0] * y[..., 0] - x[..., 1] * y[..., 1] - im = x[..., 0] * y[..., 1] + x[..., 1] * y[..., 0] - if isinstance(x, Tensor): - return torch.stack((re, im), dim=-1) # type: ignore + return complex_mul_t(x, y) # type: ignore + else: - mult: np.ndarray = np.stack((re, im), axis=-1) + real_part = x[..., 0] * y[..., 0] - x[..., 1] * y[..., 1] + imag_part = x[..., 0] * y[..., 1] + x[..., 1] * y[..., 0] + + mult: np.ndarray = np.stack((real_part, imag_part), axis=-1) return mult -def complex_conj(x: NdarrayOrTensor) -> NdarrayOrTensor: +def complex_conj_t(x: Tensor) -> Tensor: """ Compute complex conjugate of a tensor. Supports Ndim inputs with last dim equal to 2 (real/imaginary channels) + Args: + x: Input tensor with 2 channels in the last dimension representing real and imaginary parts. + + Returns: + Complex conjugate of x + """ + if x.shape[-1] != 2: + raise ValueError(f"last dim must be 2, but x.shape[-1] is {x.shape[-1]}.") + + return torch.stack((x[..., 0], -x[..., 1]), dim=-1) + + +def complex_conj(x: NdarrayOrTensor) -> NdarrayOrTensor: + """ + Compute complex conjugate of an/a array/tensor. Supports Ndim inputs with last dim equal to 2 (real/imaginary channels) + Args: x: Input array/tensor with 2 channels in the last dimension representing real and imaginary parts. @@ -176,7 +226,7 @@ def complex_conj(x: NdarrayOrTensor) -> NdarrayOrTensor: raise ValueError(f"last dim must be 2, but x.shape[-1] is {x.shape[-1]}.") if isinstance(x, Tensor): - return torch.stack((x[..., 0], -x[..., 1]), dim=-1) + return complex_conj_t(x) else: np_conj: np.ndarray = np.stack((x[..., 0], -x[..., 1]), axis=-1) return np_conj diff --git a/monai/apps/reconstruction/mri_utils.py b/monai/apps/reconstruction/mri_utils.py index fad952712d..9c06b492d5 100644 --- a/monai/apps/reconstruction/mri_utils.py +++ b/monai/apps/reconstruction/mri_utils.py @@ -9,9 +9,34 @@ # See the License for the specific language governing permissions and # limitations under the License. +from torch import Tensor + from monai.config.type_definitions import NdarrayOrTensor +def root_sum_of_squares_t(x: Tensor, spatial_dim: int) -> Tensor: + """ + Compute the root sum of squares (rss) of the data (typically done for multi-coil MRI samples) + + Args: + x: Input tensor + spatial_dim: dimension along which rss is applied + + Returns: + rss of x along spatial_dim + + Example: + .. code-block:: python + + import numpy as np + x = torch.ones([2,3]) + # the following line prints Tensor([1.41421356, 1.41421356, 1.41421356]) + print(rss(x,spatial_dim=0)) + """ + rss_x: Tensor = (x**2).sum(spatial_dim) ** 0.5 + return rss_x + + def root_sum_of_squares(x: NdarrayOrTensor, spatial_dim: int) -> NdarrayOrTensor: """ Compute the root sum of squares (rss) of the data (typically done for multi-coil MRI samples) @@ -31,5 +56,5 @@ def root_sum_of_squares(x: NdarrayOrTensor, spatial_dim: int) -> NdarrayOrTensor # the following line prints array([1.41421356, 1.41421356, 1.41421356]) print(rss(x,spatial_dim=0)) """ - rss_x: NdarrayOrTensor = (x**2).sum(spatial_dim) ** 0.5 + rss_x: NdarrayOrTensor = root_sum_of_squares_t(x, spatial_dim) # type: ignore return rss_x diff --git a/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py b/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py index 4a9b242da0..605ead743a 100644 --- a/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py +++ b/monai/apps/reconstruction/networks/nets/coil_sensitivity_model.py @@ -9,13 +9,13 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Optional, Sequence, Union +from typing import Optional, Sequence, Tuple, Union import torch import torch.nn as nn from torch import Tensor -from monai.apps.reconstruction.mri_utils import root_sum_of_squares +from monai.apps.reconstruction.mri_utils import root_sum_of_squares_t from monai.apps.reconstruction.networks.nets.complex_unet import ComplexUnet from monai.apps.reconstruction.networks.nets.utils import ( reshape_batch_channel_to_channel_dim, @@ -83,7 +83,7 @@ def __init__( self.spatial_dims = spatial_dims self.coil_dim = coil_dim - def get_fully_sampled_region(self, mask: Tensor) -> Sequence[int]: + def get_fully_sampled_region(self, mask: Tensor) -> Tuple[int, int]: """ Extracts the size of the fully-sampled part of the kspace. Note that when a kspace is under-sampled, a part of its center is fully sampled. This part is called the Auto @@ -129,11 +129,11 @@ def forward(self, masked_kspace: Tensor, mask: Tensor) -> Tensor: x[..., start : start + num_low_freqs, :] = masked_kspace[..., start : start + num_low_freqs, :] # apply inverse fourier to the extracted fully-sampled data - x = ifftn_centered_t(x, spatial_dims=self.spatial_dims) + x = ifftn_centered_t(x, spatial_dims=self.spatial_dims, is_complex=True) x, b = reshape_channel_to_batch_dim(x) # shape of x will be (B*C,1,...) x = self.conv_net(x) x = reshape_batch_channel_to_channel_dim(x, b) # shape will be (B,C,...) # normalize the maps - x = x / root_sum_of_squares(x, spatial_dim=self.coil_dim).unsqueeze(self.coil_dim) # type: ignore + x = x / root_sum_of_squares_t(x, spatial_dim=self.coil_dim).unsqueeze(self.coil_dim) # type: ignore return x diff --git a/monai/apps/reconstruction/networks/nets/complex_unet.py b/monai/apps/reconstruction/networks/nets/complex_unet.py index c927fffdff..f34b1442ad 100644 --- a/monai/apps/reconstruction/networks/nets/complex_unet.py +++ b/monai/apps/reconstruction/networks/nets/complex_unet.py @@ -11,17 +11,17 @@ from typing import Optional, Sequence, Union -import torch import torch.nn as nn from torch import Tensor from monai.apps.reconstruction.networks.nets.utils import ( complex_normalize, + divisible_pad_t, + inverse_divisible_pad_t, reshape_channel_complex_to_last_dim, reshape_complex_to_channel_dim, ) from monai.networks.nets.basic_unet import BasicUNet -from monai.transforms import DivisiblePad class ComplexUnet(nn.Module): @@ -98,14 +98,13 @@ def forward(self, x: Tensor) -> Tensor: x = reshape_complex_to_channel_dim(x) # x will be of shape (B,C*2,H,W) x, mean, std = complex_normalize(x) # x will be of shape (B,C*2,H,W) # pad input - padder = DivisiblePad(k=self.pad_factor) - x = torch.stack( - [padder(xi) for xi in x] + x, padding_sizes = divisible_pad_t( + x, k=self.pad_factor ) # x will be of shape (B,C*2,H',W') where H' and W' are for after padding x = self.unet(x) # inverse padding - x = torch.stack([padder.inverse(xi) for xi in x]) # x will be of shape (B,C*2,H,W) + x = inverse_divisible_pad_t(x, padding_sizes) # x will be of shape (B,C*2,H,W) x = x * std + mean x = reshape_channel_complex_to_last_dim(x) # x will be of shape (B,C,H,W,2) diff --git a/monai/apps/reconstruction/networks/nets/utils.py b/monai/apps/reconstruction/networks/nets/utils.py index 400160222d..0624b5c3d3 100644 --- a/monai/apps/reconstruction/networks/nets/utils.py +++ b/monai/apps/reconstruction/networks/nets/utils.py @@ -12,11 +12,13 @@ This script contains utility functions for developing new networks/blocks in PyTorch. """ -from typing import Sequence +import math +from typing import Tuple from torch import Tensor +from torch.nn import functional as F -from monai.apps.reconstruction.complex_utils import complex_conj, complex_mul +from monai.apps.reconstruction.complex_utils import complex_conj_t, complex_mul_t from monai.networks.blocks.fft_utils_t import fftn_centered_t, ifftn_centered_t @@ -42,6 +44,9 @@ def reshape_complex_to_channel_dim(x: Tensor) -> Tensor: # type: ignore b, c, h, w, d, two = x.shape return x.permute(0, 5, 1, 2, 3, 4).contiguous().view(b, 2 * c, h, w, d) + else: + raise ValueError(f"only 2D (B,C,H,W,2) and 3D (B,C,H,W,D,2) data are supported but x has shape {x.shape}") + def reshape_channel_complex_to_last_dim(x: Tensor) -> Tensor: # type: ignore """ @@ -66,21 +71,33 @@ def reshape_channel_complex_to_last_dim(x: Tensor) -> Tensor: # type: ignore c = c2 // 2 return x.view(b, 2, c, h, w, d).permute(0, 2, 3, 4, 5, 1) + else: + raise ValueError(f"only 2D (B,C*2,H,W) and 3D (B,C*2,H,W,D) data are supported but x has shape {x.shape}") + -def reshape_channel_to_batch_dim(x: Tensor) -> Sequence: +def reshape_channel_to_batch_dim(x: Tensor) -> Tuple[Tensor, int]: """ Combines batch and channel dimensions. Args: - x: Ndim input of shape shape (B,C,...) + x: input of shape (B,C,H,W,2) for 2D data or (B,C,H,W,D,2) for 3D data Returns: A tuple containing: (1) output of shape (B*C,1,...) (2) batch size """ - b, c, *other = x.shape - return x.contiguous().view(b * c, 1, *other), b + + if len(x.shape) == 5: # this is 2D + b, c, h, w, two = x.shape + return x.contiguous().view(b * c, 1, h, w, two), b + + elif len(x.shape) == 6: # this is 3D + b, c, h, w, d, two = x.shape + return x.contiguous().view(b * c, 1, h, w, d, two), b + + else: + raise ValueError(f"only 2D (B,C,H,W,2) and 3D (B,C,H,W,D,2) data are supported but x has shape {x.shape}") def reshape_batch_channel_to_channel_dim(x: Tensor, batch_size: int) -> Tensor: @@ -88,18 +105,27 @@ def reshape_batch_channel_to_channel_dim(x: Tensor, batch_size: int) -> Tensor: Detaches batch and channel dimensions. Args: - x: Ndim input of shape (B*C,1,...) + x: input of shape (B*C,1,H,W,2) for 2D data or (B*C,1,H,W,D,2) for 3D data batch_size: batch size Returns: output of shape (B,C,...) """ - bc, one, *other = x.shape # bc represents B*C - c = bc // batch_size - return x.view(batch_size, c, *other) + if len(x.shape) == 5: # this is 2D + bc, one, h, w, two = x.shape # bc represents B*C + c = bc // batch_size + return x.view(batch_size, c, h, w, two) + + elif len(x.shape) == 6: # this is 3D + bc, one, h, w, d, two = x.shape # bc represents B*C + c = bc // batch_size + return x.view(batch_size, c, h, w, d, two) + + else: + raise ValueError(f"only 2D (B*C,1,H,W,2) and 3D (B*C,1,H,W,D,2) data are supported but x has shape {x.shape}") -def complex_normalize(x: Tensor) -> Sequence: # type: ignore +def complex_normalize(x: Tensor) -> Tuple[Tensor, Tensor, Tensor]: # type: ignore """ Performs layer mean-std normalization for complex data. Normalization is done for each batch member along each part (part refers to real and imaginary parts), separately. @@ -135,6 +161,109 @@ def complex_normalize(x: Tensor) -> Sequence: # type: ignore x = x.view(b, c, h, w, d) return (x - mean) / std, mean, std # type: ignore + else: + raise ValueError(f"only 2D (B,C,H,W) and 3D (B,C,H,W,D) data are supported but x has shape {x.shape}") + + +def divisible_pad_t( + x: Tensor, k: int = 16 +) -> Tuple[Tensor, Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int], int, int, int]]: # type: ignore + """ + Pad input to feed into the network (torch script compatible) + + Args: + x: input of shape (B,C,H,W) for 2D data or (B,C,H,W,D) for 3D data + k: padding factor. each padded dimension will be divisible by k. + + Returns: + A tuple containing + (1) padded input + (2) pad sizes (in order to reverse padding if needed) + + Example: + .. code-block:: python + import torch + + # 2D data + x = torch.ones([3,2,50,70]) + x_pad,padding_sizes = divisible_pad_t(x, k=16) + # the following line should print (3, 2, 64, 80) + print(x_pad.shape) + + # 3D data + x = torch.ones([3,2,50,70,80]) + x_pad,padding_sizes = divisible_pad_t(x, k=16) + # the following line should print (3, 2, 64, 80, 80) + print(x_pad.shape) + """ + if len(x.shape) == 4: # this is 2D + b, c, h, w = x.shape + w_mult = ((w - 1) | (k - 1)) + 1 # OR with (k-1) and then +1 makes sure padding is divisible by k + h_mult = ((h - 1) | (k - 1)) + 1 + w_pad = floor_ceil((w_mult - w) / 2) + h_pad = floor_ceil((h_mult - h) / 2) + x = F.pad(x, w_pad + h_pad) + # dummy values for the 3rd spatial dimension + d_mult = -1 + d_pad = (-1, -1) + pad_sizes = (h_pad, w_pad, d_pad, h_mult, w_mult, d_mult) + + elif len(x.shape) == 5: # this is 3D + b, c, h, w, d = x.shape + w_mult = ((w - 1) | (k - 1)) + 1 + h_mult = ((h - 1) | (k - 1)) + 1 + d_mult = ((d - 1) | (k - 1)) + 1 + w_pad = floor_ceil((w_mult - w) / 2) + h_pad = floor_ceil((h_mult - h) / 2) + d_pad = floor_ceil((d_mult - d) / 2) + x = F.pad(x, d_pad + w_pad + h_pad) + pad_sizes = (h_pad, w_pad, d_pad, h_mult, w_mult, d_mult) + + else: + raise ValueError(f"only 2D (B,C,H,W) and 3D (B,C,H,W,D) data are supported but x has shape {x.shape}") + + return x, pad_sizes + + +def inverse_divisible_pad_t( + x: Tensor, pad_sizes: Tuple[Tuple[int, int], Tuple[int, int], Tuple[int, int], int, int, int] +) -> Tensor: # type: ignore + """ + De-pad network output to match its original shape + + Args: + x: input of shape (B,C,H,W) for 2D data or (B,C,H,W,D) for 3D data + pad_sizes: padding values + + Returns: + de-padded input + """ + h_pad, w_pad, d_pad, h_mult, w_mult, d_mult = pad_sizes + + if len(x.shape) == 4: # this is 2D + return x[..., h_pad[0] : h_mult - h_pad[1], w_pad[0] : w_mult - w_pad[1]] + + elif len(x.shape) == 5: # this is 3D + return x[..., h_pad[0] : h_mult - h_pad[1], w_pad[0] : w_mult - w_pad[1], d_pad[0] : d_mult - d_pad[1]] + + else: + raise ValueError(f"only 2D (B,C,H,W) and 3D (B,C,H,W,D) data are supported but x has shape {x.shape}") + + +def floor_ceil(n: float) -> Tuple[int, int]: + """ + Returns floor and ceil of the input + + Args: + n: input number + + Returns: + A tuple containing: + (1) floor(n) + (2) ceil(n) + """ + return math.floor(n), math.ceil(n) + def sensitivity_map_reduce(kspace: Tensor, sens_maps: Tensor, spatial_dims: int = 2) -> Tensor: """ @@ -152,8 +281,8 @@ def sensitivity_map_reduce(kspace: Tensor, sens_maps: Tensor, spatial_dims: int Returns: reduction of x to (B,1,H,W,2) for 2D data or (B,1,H,W,D,2) for 3D data. """ - img = ifftn_centered_t(kspace, spatial_dims=spatial_dims) # inverse fourier transform - return complex_mul(img, complex_conj(sens_maps)).sum(dim=1, keepdim=True) # type: ignore + img = ifftn_centered_t(kspace, spatial_dims=spatial_dims, is_complex=True) # inverse fourier transform + return complex_mul_t(img, complex_conj_t(sens_maps)).sum(dim=1, keepdim=True) # type: ignore def sensitivity_map_expand(img: Tensor, sens_maps: Tensor, spatial_dims: int = 2) -> Tensor: @@ -173,4 +302,4 @@ def sensitivity_map_expand(img: Tensor, sens_maps: Tensor, spatial_dims: int = 2 Expansion of x to (B,C,H,W,2) for 2D data and (B,C,H,W,D,2) for 3D data. The output is transferred to the frquency domain to yield coil measurements. """ - return fftn_centered_t(complex_mul(img, sens_maps), spatial_dims=spatial_dims) # type: ignore + return fftn_centered_t(complex_mul_t(img, sens_maps), spatial_dims=spatial_dims, is_complex=True) # type: ignore diff --git a/monai/apps/reconstruction/networks/nets/varnet.py b/monai/apps/reconstruction/networks/nets/varnet.py new file mode 100644 index 0000000000..7402dea826 --- /dev/null +++ b/monai/apps/reconstruction/networks/nets/varnet.py @@ -0,0 +1,75 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch.nn as nn +from torch import Tensor + +from monai.apps.reconstruction.complex_utils import complex_abs_t +from monai.apps.reconstruction.mri_utils import root_sum_of_squares_t +from monai.apps.reconstruction.networks.blocks.varnetblock import VarNetBlock +from monai.networks.blocks.fft_utils_t import ifftn_centered_t + + +class VariationalNetworkModel(nn.Module): + """ + The end-to-end variational network (or simply e2e-VarNet) based on Sriram et. al., "End-to-end variational + networks for accelerated MRI reconstruction". + It comprises several cascades each consisting of refinement and data consistency steps. The network takes in + the under-sampled kspace and estimates the ground-truth reconstruction. + + Modified and adopted from: https://github.com/facebookresearch/fastMRI + + Args: + coil_sensitivity_model: A convolutional model for learning coil sensitivity maps. An example is + :py:class:`monai.apps.reconstruction.networks.nets.coil_sensitivity_model.CoilSensitivityModel`. + refinement_model: A convolutional network used in the refinement step of e2e-VarNet. An example + is :py:class:`monai.apps.reconstruction.networks.nets.complex_unet.ComplexUnet`. + num_cascades: Number of cascades. Each cascade is a + :py:class:`monai.apps.reconstruction.networks.blocks.varnetblock.VarNetBlock` which consists of + refinement and data consistency steps. + spatial_dims: number of spatial dimensions. + """ + + def __init__( + self, + coil_sensitivity_model: nn.Module, + refinement_model: nn.Module, + num_cascades: int = 12, + spatial_dims: int = 2, + ): + super().__init__() + self.coil_sensitivity_model = coil_sensitivity_model + self.cascades = nn.ModuleList([VarNetBlock(refinement_model) for i in range(num_cascades)]) + self.spatial_dims = spatial_dims + + def forward(self, masked_kspace: Tensor, mask: Tensor) -> Tensor: + """ + Args: + masked_kspace: The under-sampled kspace. It's a 2D kspace (B,C,H,W,2) + with the last dimension being 2 (for real/imaginary parts) and C denoting the + coil dimension. 3D data will have the shape (B,C,H,W,D,2). + mask: The under-sampling mask with shape (1,1,1,W,1) for 2D data or (1,1,1,1,D,1) for 3D data. + + Returns: + The reconstructed image which is the root sum of squares (rss) of the absolute value + of the inverse fourier of the predicted kspace (note that rss combines coil images into one image). + """ + sensitivity_maps = self.coil_sensitivity_model(masked_kspace, mask) # shape is simlar to masked_kspace + kspace_pred = masked_kspace.clone() + + for cascade in self.cascades: + kspace_pred = cascade(kspace_pred, masked_kspace, mask, sensitivity_maps) + + output_image = root_sum_of_squares_t( + complex_abs_t(ifftn_centered_t(kspace_pred, spatial_dims=self.spatial_dims)), + spatial_dim=1, # 1 is for C which is the coil dimension + ) # shape is (B,H,W) for 2D and (B,H,W,D) for 3D data. + return output_image # type: ignore diff --git a/monai/networks/blocks/fft_utils_t.py b/monai/networks/blocks/fft_utils_t.py index 0d6b99d7e1..26205041be 100644 --- a/monai/networks/blocks/fft_utils_t.py +++ b/monai/networks/blocks/fft_utils_t.py @@ -9,13 +9,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Optional, Sequence +from typing import List import torch from torch import Tensor -from monai.utils.type_conversion import convert_data_type - def roll_1d(x: Tensor, shift: int, shift_dim: int) -> Tensor: """ @@ -44,7 +42,7 @@ def roll_1d(x: Tensor, shift: int, shift_dim: int) -> Tensor: return torch.cat((right, left), dim=shift_dim) -def roll(x: Tensor, shift: Sequence[int], shift_dims: Sequence[int]) -> Tensor: +def roll(x: Tensor, shift: List[int], shift_dims: List[int]) -> Tensor: """ Similar to np.roll but applies to PyTorch Tensors @@ -68,7 +66,7 @@ def roll(x: Tensor, shift: Sequence[int], shift_dims: Sequence[int]) -> Tensor: return x -def fftshift(x: Tensor, shift_dims: Optional[Sequence[int]] = None) -> Tensor: +def fftshift(x: Tensor, shift_dims: List[int]) -> Tensor: """ Similar to np.fft.fftshift but applies to PyTorch Tensors @@ -84,18 +82,13 @@ def fftshift(x: Tensor, shift_dims: Optional[Sequence[int]] = None) -> Tensor: Note: This function is called when fftshift is not available in the running pytorch version """ - if shift_dims is None: - # for torch.jit.script based on the fastmri repository - shift_dims = [0] * (x.dim()) - for i in range(1, x.dim()): - shift_dims[i] = i shift = [0] * len(shift_dims) for i, dim_num in enumerate(shift_dims): shift[i] = x.shape[dim_num] // 2 return roll(x, shift, shift_dims) -def ifftshift(x: Tensor, shift_dims: Optional[Sequence[int]] = None) -> Tensor: +def ifftshift(x: Tensor, shift_dims: List[int]) -> Tensor: """ Similar to np.fft.ifftshift but applies to PyTorch Tensors @@ -111,11 +104,6 @@ def ifftshift(x: Tensor, shift_dims: Optional[Sequence[int]] = None) -> Tensor: Note: This function is called when ifftshift is not available in the running pytorch version """ - if shift_dims is None: - # for torch.jit.script based on the fastmri repository - shift_dims = [0] * (x.dim()) - for i in range(1, x.dim()): - shift_dims[i] = i shift = [0] * len(shift_dims) for i, dim_num in enumerate(shift_dims): shift[i] = (x.shape[dim_num] + 1) // 2 @@ -151,28 +139,21 @@ def ifftn_centered_t(ksp: Tensor, spatial_dims: int, is_complex: bool = True) -> output2 = ifftn_centered(ksp, spatial_dims=2, is_complex=True) """ # define spatial dims to perform ifftshift, fftshift, and ifft - shift = tuple(range(-spatial_dims, 0)) + shift = [i for i in range(-spatial_dims, 0)] # noqa: C416 if is_complex: if ksp.shape[-1] != 2: raise ValueError(f"ksp.shape[-1] is not 2 ({ksp.shape[-1]}).") - shift = tuple(range(-spatial_dims - 1, -1)) - dims = tuple(range(-spatial_dims, 0)) + shift = [i for i in range(-spatial_dims - 1, -1)] # noqa: C416 + dims = [i for i in range(-spatial_dims, 0)] # noqa: C416 - # apply ifft - if hasattr(torch.fft, "ifftshift"): # ifftshift was added in pytorch 1.8 - x = torch.fft.ifftshift(ksp, dim=shift) - else: - x = ifftshift(ksp, shift) + x = ifftshift(ksp, shift) if is_complex: x = torch.view_as_real(torch.fft.ifftn(torch.view_as_complex(x), dim=dims, norm="ortho")) else: x = torch.view_as_real(torch.fft.ifftn(x, dim=dims, norm="ortho")) - if hasattr(torch.fft, "fftshift"): - out = convert_data_type(torch.fft.fftshift(x, dim=shift), torch.Tensor)[0] - else: - out = convert_data_type(fftshift(x, shift), torch.Tensor)[0] + out: Tensor = fftshift(x, shift) return out @@ -206,27 +187,20 @@ def fftn_centered_t(im: Tensor, spatial_dims: int, is_complex: bool = True) -> T output2 = fftn_centered(im, spatial_dims=2, is_complex=True) """ # define spatial dims to perform ifftshift, fftshift, and fft - shift = tuple(range(-spatial_dims, 0)) + shift = [i for i in range(-spatial_dims, 0)] # noqa: C416 if is_complex: if im.shape[-1] != 2: raise ValueError(f"img.shape[-1] is not 2 ({im.shape[-1]}).") - shift = tuple(range(-spatial_dims - 1, -1)) - dims = tuple(range(-spatial_dims, 0)) + shift = [i for i in range(-spatial_dims - 1, -1)] # noqa: C416 + dims = [i for i in range(-spatial_dims, 0)] # noqa: C416 - # apply fft - if hasattr(torch.fft, "ifftshift"): # ifftshift was added in pytorch 1.8 - x = torch.fft.ifftshift(im, dim=shift) - else: - x = ifftshift(im, shift) + x = ifftshift(im, shift) if is_complex: x = torch.view_as_real(torch.fft.fftn(torch.view_as_complex(x), dim=dims, norm="ortho")) else: x = torch.view_as_real(torch.fft.fftn(x, dim=dims, norm="ortho")) - if hasattr(torch.fft, "fftshift"): - out = convert_data_type(torch.fft.fftshift(x, dim=shift), torch.Tensor)[0] - else: - out = convert_data_type(fftshift(x, shift), torch.Tensor)[0] + out: Tensor = fftshift(x, shift) return out diff --git a/tests/test_recon_net_utils.py b/tests/test_recon_net_utils.py index 552a453c50..6621bf735e 100644 --- a/tests/test_recon_net_utils.py +++ b/tests/test_recon_net_utils.py @@ -16,6 +16,8 @@ from monai.apps.reconstruction.networks.nets.utils import ( complex_normalize, + divisible_pad_t, + inverse_divisible_pad_t, reshape_batch_channel_to_channel_dim, reshape_channel_complex_to_last_dim, reshape_channel_to_batch_dim, @@ -23,6 +25,7 @@ sensitivity_map_expand, sensitivity_map_reduce, ) +from tests.utils import assert_allclose # no need for checking devices, these functions don't change device format # reshape test case @@ -33,6 +36,10 @@ im_2d, im_3d = torch.randint(0, 3, [3, 4, 50, 70]).float(), torch.randint(0, 3, [3, 4, 50, 70, 80]).float() TEST_NORMALIZE = [(im_2d,), (im_3d,)] +# pad test case +im_2d, im_3d = torch.ones([3, 4, 50, 70]), torch.ones([3, 4, 50, 70, 80]) +TEST_PAD = [(im_2d,), (im_3d,)] + # test case for sensitivity map expansion/reduction ksp_2d, ksp_3d = torch.ones([3, 4, 50, 70, 2]), torch.ones([3, 4, 50, 70, 80, 2]) sens_2d, sens_3d = torch.ones([3, 4, 50, 70, 2]), torch.ones([3, 4, 50, 70, 80, 2]) @@ -56,6 +63,12 @@ def test_complex_normalize(self, test_data): result = result * std + mean self.assertTrue((((result - test_data) ** 2).mean() ** 0.5).item() < 1e-5) + @parameterized.expand(TEST_PAD) + def test_pad(self, test_data): + result, padding_sizes = divisible_pad_t(test_data, k=16) + result = inverse_divisible_pad_t(result, padding_sizes) + assert_allclose(result, test_data) + @parameterized.expand(TEST_SENS) def test_sens_expand_reduce(self, test_data, sens): result = sensitivity_map_reduce(test_data, sens) diff --git a/tests/test_varnet.py b/tests/test_varnet.py new file mode 100644 index 0000000000..4e8fd9c92e --- /dev/null +++ b/tests/test_varnet.py @@ -0,0 +1,60 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import unittest + +import torch +from parameterized import parameterized + +from monai.apps.reconstruction.networks.nets.coil_sensitivity_model import CoilSensitivityModel +from monai.apps.reconstruction.networks.nets.complex_unet import ComplexUnet +from monai.apps.reconstruction.networks.nets.varnet import VariationalNetworkModel +from monai.networks import eval_mode +from tests.utils import test_script_save + +device = torch.device("cuda" if torch.cuda.is_available() else "cpu") +coil_sens_model = CoilSensitivityModel(spatial_dims=2, features=[8, 16, 32, 64, 128, 8]) +refinement_model = ComplexUnet(spatial_dims=2, features=[8, 16, 32, 64, 128, 8]) +num_cascades = 12 +TESTS = [] +TESTS.append([coil_sens_model, refinement_model, num_cascades, (1, 10, 300, 200, 2), (1, 300, 200)]) # batch=1 +TESTS.append([coil_sens_model, refinement_model, num_cascades, (2, 10, 300, 200, 2), (2, 300, 200)]) # batch=2 + + +class TestVarNet(unittest.TestCase): + @parameterized.expand(TESTS) + def test_shape(self, coil_sens_model, refinement_model, num_cascades, input_shape, expected_shape): + net = VariationalNetworkModel(coil_sens_model, refinement_model, num_cascades).to(device) + mask_shape = [1 for _ in input_shape] + mask_shape[-2] = input_shape[-2] + mask = torch.zeros(mask_shape) + mask[..., mask_shape[-2] // 2 - 5 : mask_shape[-2] // 2 + 5, :] = 1 + + with eval_mode(net): + result = net(torch.randn(input_shape).to(device), mask.byte().to(device)) + self.assertEqual(result.shape, expected_shape) + + @parameterized.expand(TESTS) + def test_script(self, coil_sens_model, refinement_model, num_cascades, input_shape, expected_shape): + net = VariationalNetworkModel(coil_sens_model, refinement_model, num_cascades) + + mask_shape = [1 for _ in input_shape] + mask_shape[-2] = input_shape[-2] + mask = torch.zeros(mask_shape) + mask[..., mask_shape[-2] // 2 - 5 : mask_shape[-2] // 2 + 5, :] = 1 + + test_data = torch.randn(input_shape) + + test_script_save(net, test_data, mask.byte()) + + +if __name__ == "__main__": + unittest.main() From 9e2a18c7cbe8b56291dbe2c53cd0c78d861e4aa9 Mon Sep 17 00:00:00 2001 From: Holger Roth <6304754+holgerroth@users.noreply.github.com> Date: Fri, 12 Aug 2022 14:13:53 -0400 Subject: [PATCH 076/150] Add dummy filter and base class for FL (#4899) * add dummy filter Signed-off-by: Holger Roth * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * adds docstring Signed-off-by: Wenqi Li * rename filter example Signed-off-by: Holger Roth * add license header Signed-off-by: Holger Roth Signed-off-by: Holger Roth Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/README.md | 2 + monai/fl/client/monai_algo.py | 2 +- monai/fl/utils/filters.py | 54 +++++++++++++++++++++++ tests/testing_data/config_fl_filters.json | 13 +++++- 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 monai/fl/utils/filters.py diff --git a/monai/README.md b/monai/README.md index 2c30531bf3..64af824b1d 100644 --- a/monai/README.md +++ b/monai/README.md @@ -12,6 +12,8 @@ * **engines**: engine-derived classes for extending Ignite behaviour. +* **fl**: federated learning components to allow pipeline integration with any federated learning framework. + * **handlers**: defines handlers for implementing functionality at various stages in the training process. * **inferers**: defines model inference methods. diff --git a/monai/fl/client/monai_algo.py b/monai/fl/client/monai_algo.py index d377dc654b..dc9bb12019 100644 --- a/monai/fl/client/monai_algo.py +++ b/monai/fl/client/monai_algo.py @@ -169,7 +169,7 @@ def initialize(self, extra=None): self.eval_parser.read_config(config_eval_files) check_bundle_config(self.eval_parser) if len(config_filter_files) > 0: - self.filter_parser.read_config(config_eval_files) + self.filter_parser.read_config(config_filter_files) # override some config items self.train_parser[RequiredBundleKeys.BUNDLE_ROOT] = self.bundle_root diff --git a/monai/fl/utils/filters.py b/monai/fl/utils/filters.py new file mode 100644 index 0000000000..edda72c312 --- /dev/null +++ b/monai/fl/utils/filters.py @@ -0,0 +1,54 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import abc + +from monai.fl.utils.exchange_object import ExchangeObject + + +class Filter(abc.ABC): + """ + Used to apply filter to content of ExchangeObject. + """ + + def __call__(self, data: ExchangeObject, extra=None) -> ExchangeObject: + """ + Run the filtering. + + Arguments: + data: ExchangeObject containing some data. + + Returns: + ExchangeObject: filtered data. + """ + + raise NotImplementedError + + +class SummaryFilter(Filter): + """ + Summary filter to content of ExchangeObject. + """ + + def __call__(self, data: ExchangeObject, extra=None) -> ExchangeObject: + """ + Example filter that doesn't filter anything but only prints data summary. + + Arguments: + data: ExchangeObject containing some data. + + Returns: + ExchangeObject: filtered data. + """ + + print(f"Summary of ExchangeObject: {data.summary()}") + + return data diff --git a/tests/testing_data/config_fl_filters.json b/tests/testing_data/config_fl_filters.json index e3011ed02c..5ccafa334c 100644 --- a/tests/testing_data/config_fl_filters.json +++ b/tests/testing_data/config_fl_filters.json @@ -1,4 +1,13 @@ { - "pre_filters": [], - "post_weight_filters": [] + "pre_filters": [ + { + "_target_": "monai.fl.utils.filters.SummaryFilter" + } + ], + "post_weight_filters": [ + { + "_target_": "monai.fl.utils.filters.SummaryFilter" + } + ], + "post_evaluate_filters": [] } From a3967f988abaf8a6f80bedad1716ccad10c01366 Mon Sep 17 00:00:00 2001 From: Wenqi Li <831580+wyli@users.noreply.github.com> Date: Mon, 15 Aug 2022 00:21:04 +0100 Subject: [PATCH 077/150] 4907 invertd for resizing same spatial shapes (#4908) * fixes 4907 Signed-off-by: Wenqi Li * fixes flake8 Signed-off-by: Wenqi Li * fixes test cases Signed-off-by: Wenqi Li Signed-off-by: Wenqi Li Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/transforms/spatial/array.py | 28 ++++++++++--------- .../utils_pytorch_numpy_unification.py | 4 +-- tests/test_resize.py | 2 -- tests/test_resized.py | 10 ++++++- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/monai/transforms/spatial/array.py b/monai/transforms/spatial/array.py index a8e76e098b..14da37300a 100644 --- a/monai/transforms/spatial/array.py +++ b/monai/transforms/spatial/array.py @@ -842,10 +842,12 @@ def __call__( scale = self.spatial_size / max(img_size) spatial_size_ = tuple(int(round(s * scale)) for s in img_size) - if tuple(img.shape[1:]) == spatial_size_: # spatial shape is already the desired - return convert_to_tensor(img, track_meta=get_track_meta()) # type: ignore - original_sp_size = img.shape[1:] + _mode = look_up_option(self.mode if mode is None else mode, InterpolateMode) + _align_corners = self.align_corners if align_corners is None else align_corners + if tuple(img.shape[1:]) == spatial_size_: # spatial shape is already the desired + img = convert_to_tensor(img, track_meta=get_track_meta()) # type: ignore + return self._post_process(img, original_sp_size, spatial_size_, _mode, _align_corners, input_ndim) img_ = convert_to_tensor(img, dtype=torch.float, track_meta=False) if anti_aliasing and any(x < y for x, y in zip(spatial_size_, img_.shape[1:])): @@ -862,25 +864,25 @@ def __call__( img_ = convert_to_tensor(anti_aliasing_filter(img_), track_meta=False) img = convert_to_tensor(img, track_meta=get_track_meta()) - _mode = look_up_option(self.mode if mode is None else mode, InterpolateMode) - _align_corners = self.align_corners if align_corners is None else align_corners - resized = torch.nn.functional.interpolate( input=img_.unsqueeze(0), size=spatial_size_, mode=_mode, align_corners=_align_corners ) out, *_ = convert_to_dst_type(resized.squeeze(0), img) + return self._post_process(out, original_sp_size, spatial_size_, _mode, _align_corners, input_ndim) + + def _post_process(self, img: torch.Tensor, orig_size, sp_size, mode, align_corners, ndim) -> torch.Tensor: if get_track_meta(): - self.update_meta(out, original_sp_size, spatial_size_) + self.update_meta(img, orig_size, sp_size) self.push_transform( - out, - orig_size=original_sp_size, + img, + orig_size=orig_size, extra_info={ - "mode": _mode, - "align_corners": _align_corners if _align_corners is not None else TraceKeys.NONE, - "new_dim": len(original_sp_size) - input_ndim, # additional dims appended + "mode": mode, + "align_corners": align_corners if align_corners is not None else TraceKeys.NONE, + "new_dim": len(orig_size) - ndim, # additional dims appended }, ) - return out + return img def update_meta(self, img, spatial_size, new_spatial_size): affine = convert_to_tensor(img.affine, track_meta=False) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 2508fad584..cba2da5137 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -290,7 +290,7 @@ def cumsum(a: NdarrayOrTensor, axis=None, **kwargs) -> NdarrayOrTensor: def isfinite(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.isfinite` with equivalent implementation for torch.""" if not isinstance(x, torch.Tensor): - return np.isfinite(x) + return np.isfinite(x) # type: ignore return torch.isfinite(x) @@ -338,7 +338,7 @@ def isnan(x: NdarrayOrTensor) -> NdarrayOrTensor: """ if isinstance(x, np.ndarray): - return np.isnan(x) + return np.isnan(x) # type: ignore return torch.isnan(x) diff --git a/tests/test_resize.py b/tests/test_resize.py index 8927b5dba5..b755bb3faf 100644 --- a/tests/test_resize.py +++ b/tests/test_resize.py @@ -74,8 +74,6 @@ def test_correct_results(self, spatial_size, mode, anti_aliasing): im = p(self.imt[0]) out = resize(im) if isinstance(im, MetaTensor): - if not out.applied_operations: - return # skipped because good shape im_inv = resize.inverse(out) self.assertTrue(not im_inv.applied_operations) assert_allclose(im_inv.shape, im.shape) diff --git a/tests/test_resized.py b/tests/test_resized.py index b8db666357..c1d987b898 100644 --- a/tests/test_resized.py +++ b/tests/test_resized.py @@ -16,7 +16,7 @@ from parameterized import parameterized from monai.data import MetaTensor, set_track_meta -from monai.transforms import Resized +from monai.transforms import Invertd, Resized from tests.utils import TEST_NDARRAYS_ALL, NumpyImageTestCase2D, assert_allclose, test_local_inversion TEST_CASE_0 = [{"keys": "img", "spatial_size": 15}, (6, 10, 15)] @@ -80,6 +80,14 @@ def test_longest_shape(self, input_param, expected_shape): np.testing.assert_allclose(result["img"].shape[1:], expected_shape) set_track_meta(True) + def test_identical_spatial(self): + test_input = {"X": np.ones((1, 10, 16, 17))} + xform = Resized("X", (-1, 16, 17)) + out = xform(test_input) + out["Y"] = 2 * out["X"] + transform_inverse = Invertd(keys="Y", transform=xform, orig_keys="X") + assert_allclose(transform_inverse(out)["Y"].array, np.ones((1, 10, 16, 17)) * 2) + if __name__ == "__main__": unittest.main() From 3eab8ade2f9c5e483c649a8f48f31da6af9d0079 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 14:44:53 +0800 Subject: [PATCH 078/150] fix: allow user to define their image/label keys Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index bdaaed5b01..23bc11ff3f 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -60,7 +60,9 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - image_only: boolean set to True if the user wants to use the DataAnalyzer on a dataset without labels. + image_key: a string key that the DataAnalyzer needs to find image file paths in the datalist. + label_key: a string key that the DataAnalyzer needs to find label file paths in the datalist. + If the label_key is set to None, the DataAnalzyer will skip looking for label files. For example: @@ -105,7 +107,8 @@ def __init__( do_ccp: bool = True, device: Union[str, torch.device] = "cuda", worker: int = 2, - image_only: bool = False, + image_key: str = "image", + label_key: str = "label", ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -114,12 +117,13 @@ def __init__( warnings.warn(f"File {output_path} already exists and will be overwritten.") logger.debug(f"{output_path} will be overwritten by a new datastat.") self.output_path = output_path - self.image_only = image_only - if self.image_only: - keys = ["image"] + if self.label_key is None: + self.IMAGE_ONLY = True + keys = [image_key] else: - keys = ["image", "label"] + self.IMAGE_ONLY = False + keys = [image_key, label_key] transform_list = [ transforms.LoadImaged(keys=keys), @@ -128,7 +132,7 @@ def __init__( transforms.EnsureTyped(keys=keys, data_type="tensor"), ] - if not self.image_only: + if not self.IMAGE_ONLY: transform_list += [ transforms.Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True)), transforms.SqueezeDimd(keys=["label"], dim=0), @@ -193,7 +197,7 @@ def _register_functions(self): """ self.functions = [self._get_case_image_stats] self.functions_summary = [self._get_case_image_stats_summary] - if not self.image_only: + if not self.IMAGE_ONLY: self.functions += [self._get_case_foreground_image_stats, self._get_label_stats] self.functions_summary += [self._get_case_foreground_image_stats_summary, self._get_label_stats_summary] @@ -576,7 +580,7 @@ def get_case_stats(self, batch_data) -> Dict: """ self.data["image"] = batch_data["image"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] - if not self.image_only: + if not self.IMAGE_ONLY: if "label" not in batch_data: raise ValueError("label not found. Please set image_only to True if there is no label files") if "label_meta_dict" not in batch_data: @@ -647,7 +651,7 @@ def get_all_case_stats(self) -> Dict: for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] - if self.image_only: + if self.IMAGE_ONLY: case_stat = {"image": images_file} else: if "label_meta_dict" not in batch_data[0]: From 9a739ca7d0a74ceb93ea159af829715d76650004 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 06:45:30 +0000 Subject: [PATCH 079/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 23bc11ff3f..0d95866c67 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -60,8 +60,8 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - image_key: a string key that the DataAnalyzer needs to find image file paths in the datalist. - label_key: a string key that the DataAnalyzer needs to find label file paths in the datalist. + image_key: a string key that the DataAnalyzer needs to find image file paths in the datalist. + label_key: a string key that the DataAnalyzer needs to find label file paths in the datalist. If the label_key is set to None, the DataAnalzyer will skip looking for label files. For example: From 3c360ef146dd2b65186151820f277d674140ae6a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 15:00:45 +0800 Subject: [PATCH 080/150] fix: allow user to define image/label keys Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 25 +++++++++++++++---------- tests/test_auto3d.py | 2 +- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index bdaaed5b01..5102c3a45d 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -60,7 +60,11 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - image_only: boolean set to True if the user wants to use the DataAnalyzer on a dataset without labels. + image_key: a string that user specify for the image. The DataAnalyzer will look it up in the + datalist to locate the image files of the dataset. + label_key: a string that user specify for the label. The DataAnalyzer will look it up in the + datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer + will skip looking for labels and all label-related operations. For example: @@ -105,7 +109,8 @@ def __init__( do_ccp: bool = True, device: Union[str, torch.device] = "cuda", worker: int = 2, - image_only: bool = False, + image_key: str = "image", + label_key: str = "label", ): """ The initializer will load the data and register the functions for data statistics gathering. @@ -114,12 +119,12 @@ def __init__( warnings.warn(f"File {output_path} already exists and will be overwritten.") logger.debug(f"{output_path} will be overwritten by a new datastat.") self.output_path = output_path - self.image_only = image_only + self.IMAGE_ONLY = True if label_key is None else False - if self.image_only: - keys = ["image"] + if self.IMAGE_ONLY: + keys = [image_key] else: - keys = ["image", "label"] + keys = [image_key, label_key] transform_list = [ transforms.LoadImaged(keys=keys), @@ -128,7 +133,7 @@ def __init__( transforms.EnsureTyped(keys=keys, data_type="tensor"), ] - if not self.image_only: + if not self.IMAGE_ONLY: transform_list += [ transforms.Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True)), transforms.SqueezeDimd(keys=["label"], dim=0), @@ -193,7 +198,7 @@ def _register_functions(self): """ self.functions = [self._get_case_image_stats] self.functions_summary = [self._get_case_image_stats_summary] - if not self.image_only: + if not self.IMAGE_ONLY: self.functions += [self._get_case_foreground_image_stats, self._get_label_stats] self.functions_summary += [self._get_case_foreground_image_stats_summary, self._get_label_stats_summary] @@ -576,7 +581,7 @@ def get_case_stats(self, batch_data) -> Dict: """ self.data["image"] = batch_data["image"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] - if not self.image_only: + if not self.IMAGE_ONLY: if "label" not in batch_data: raise ValueError("label not found. Please set image_only to True if there is no label files") if "label_meta_dict" not in batch_data: @@ -647,7 +652,7 @@ def get_all_case_stats(self) -> Dict: for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] - if self.image_only: + if self.IMAGE_ONLY: case_stat = {"image": images_file} else: if "label_meta_dict" not in batch_data[0]: diff --git a/tests/test_auto3d.py b/tests/test_auto3d.py index 00d13784b2..c149c780a0 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3d.py @@ -69,7 +69,7 @@ def test_data_analyzer_image_only(self): dataroot = self.test_dir.name yaml_fpath = path.join(dataroot, "data_stats.yaml") analyser = DataAnalyzer( - fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, image_only=True + fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None ) datastat = analyser.get_all_case_stats() From 365722828a43e9076980fc3ba35a7c06ca81f453 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 07:03:16 +0000 Subject: [PATCH 081/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 5102c3a45d..3aa4ca0595 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -60,9 +60,9 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - image_key: a string that user specify for the image. The DataAnalyzer will look it up in the + image_key: a string that user specify for the image. The DataAnalyzer will look it up in the datalist to locate the image files of the dataset. - label_key: a string that user specify for the label. The DataAnalyzer will look it up in the + label_key: a string that user specify for the label. The DataAnalyzer will look it up in the datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. From db09f96e5fa491a40a64962bde38e66bcad5c45e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 17:09:19 +0800 Subject: [PATCH 082/150] add gpu version of ccp Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 64 ++++++++++++++++++++++-------- 1 file changed, 48 insertions(+), 16 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 5102c3a45d..7e6f3c505a 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -18,7 +18,7 @@ import warnings from functools import partial from os import path -from typing import Any, Dict, List, Union +from typing import Any, Dict, List, Tuple, Union import numpy as np import torch @@ -35,7 +35,9 @@ yaml, _ = optional_import("yaml") tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") -measure, _ = optional_import("scipy.ndimage.measurements") +measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) +cp, has_cp = optional_import("cupy") +cucim, has_cucim = optional_import("cucim") logger = get_logger(module_name=__name__) @@ -60,9 +62,9 @@ class DataAnalyzer: do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. worker: number of workers to use for parallel processing. - image_key: a string that user specify for the image. The DataAnalyzer will look it up in the + image_key: a string that user specify for the image. The DataAnalyzer will look it up in the datalist to locate the image files of the dataset. - label_key: a string that user specify for the label. The DataAnalyzer will look it up in the + label_key: a string that user specify for the label. The DataAnalyzer will look it up in the datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. @@ -360,18 +362,9 @@ def _get_label_stats(self) -> Dict: logger.debug(f" label {index} stats takes {time.time() - s}") pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() if self.DO_CONNECTED_COMP: - label_dict["shape"] = [] - label_dict["ncomponents"] = None - # find all connected components and their bounding shape - structure = np.ones(np.ones(len(ndas_l.shape), dtype=np.int32) * 3, dtype=np.int32) - labeled, ncomponents = measure.label(mask_index.data.cpu().numpy(), structure) - label_dict.update({"ncomponents": ncomponents}) - for ncomp in range(1, ncomponents + 1): - comp_idx = np.argwhere(labeled == ncomp) - comp_idx_min = np.min(comp_idx, axis=0).tolist() - comp_idx_max = np.max(comp_idx, axis=0).tolist() - bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] - label_dict["shape"].append(bbox_shape) + shape_list, ncomponents = self._get_label_ccp(mask_index) + label_dict["shape"] = shape_list + label_dict["ncomponents"] = ncomponents case_stats["label_stats"].update({f"label_{index}": label_dict}) # update pixel_percentage total_percent = np.sum(list(pixel_percentage.values())) @@ -551,6 +544,45 @@ def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: label_foreground = MetaTensor(image[label > 0]) return label_foreground + @staticmethod + def _get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[Any], int]: + """ + Find all connected components and their bounding shape. Backend can be cuPy/cuCIM or Numpy + depending on the hardware. + + Args: + mask_index: a binary mask + use_gpu: a switch to use GPU/CUDA or not. If GPU is unavailable, CPU will be used + regardless of this setting + + """ + shape_list = [] + if mask_index.device.type == "cuda" and has_cp and has_cucim and use_gpu: + mask_cupy = transforms.ToCupy()(mask_index.short()) + labeled = cucim.skimage.measure.label(mask_cupy) + vals = cp.unique(labeled[cp.nonzero(labeled)]) + + for ncomp in vals: + comp_idx = cp.argwhere(labeled == ncomp) + comp_idx_min = cp.min(comp_idx, axis=0).tolist() + comp_idx_max = cp.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + shape_list.append(bbox_shape) + ncomponents = len(vals) + + elif has_measure: + labeled, ncomponents = measure_np.label(mask_index.data.cpu().numpy(), background=-1, return_num=True) + for ncomp in range(1, ncomponents + 1): + comp_idx = np.argwhere(labeled == ncomp) + comp_idx_min = np.min(comp_idx, axis=0).tolist() + comp_idx_max = np.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + shape_list.append(bbox_shape) + else: + raise RuntimeError("Cannot find one of the following required dependencies: {cuPy+cuCIM} or {scikit-image}") + + return shape_list, ncomponents + def get_case_stats(self, batch_data) -> Dict: """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data From ed0d855ac600d95f38ebefa2e9befebe22d731fe Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 18:27:17 +0800 Subject: [PATCH 083/150] add warning if the spacing of the images is not constant Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 7e6f3c505a..cef757f88e 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -647,6 +647,29 @@ def _get_case_summary(self): ) recursive_setvalue(key_chain, value, self.results["stats_summary"]) + def _check_data_uniformity(self, keys: List[str] = ["spacing"]): + """ + Check data uniformity since DataAnalyzer provides no support to multi-modal images with different + affine matrices/spacings due to monai transforms. + + Args: + a list of string-type keys under image_stats dictionary. Default value is ["spacing"]. + Returns: + False if one of the selected key values is not constant across the dataset images. + + """ + + for key in keys: + prev_val = None + for stats in self.results["stats_by_cases"]: + image_stats = stats["image_stats"] + if prev_val is None: + prev_val = image_stats[key] + elif prev_val != image_stats[key]: + return False + + return True + def get_all_case_stats(self) -> Dict: """ Get all case stats. Caller of the DataAnalyser class. The function iterates datalist and @@ -701,6 +724,8 @@ def get_all_case_stats(self) -> Dict: logger.debug(f"Process data spent {time.time() - s}") s = time.time() self._get_case_summary() + if not self._check_data_uniformity(): + logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml", default_flow_style=None) logger.debug(f"total time {time.time() - start}") return self.results From 9e7024efc2349a1f46a33407736a6047bfa20949 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 22:15:12 +0800 Subject: [PATCH 084/150] fix docstring and argument list input Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 6 +++--- monai/transforms/utils_pytorch_numpy_unification.py | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index cef757f88e..660f1794c5 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -94,7 +94,7 @@ class DataAnalyzer: .. code-block:: bash - python -m monai/apps/auto3d \ + python -m monai.apps.auto3d \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ @@ -647,7 +647,7 @@ def _get_case_summary(self): ) recursive_setvalue(key_chain, value, self.results["stats_summary"]) - def _check_data_uniformity(self, keys: List[str] = ["spacing"]): + def _check_data_uniformity(self, keys: List[str]): """ Check data uniformity since DataAnalyzer provides no support to multi-modal images with different affine matrices/spacings due to monai transforms. @@ -724,7 +724,7 @@ def get_all_case_stats(self) -> Dict: logger.debug(f"Process data spent {time.time() - s}") s = time.time() self._get_case_summary() - if not self._check_data_uniformity(): + if not self._check_data_uniformity(["spacing"]): logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml", default_flow_style=None) logger.debug(f"total time {time.time() - start}") diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index cba2da5137..0f49454de5 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Optional, Sequence, Union +from typing import Optional, Sequence, Tuple, Union import numpy as np import torch @@ -407,7 +407,7 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore -def max(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: +def max(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.max` with equivalent implementation for numpy Args: @@ -419,7 +419,7 @@ def max(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTenso return torch.max(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, axis=dim, **kwargs) # type: ignore -def mean(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: +def mean(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.mean` with equivalent implementation for numpy Args: @@ -431,7 +431,7 @@ def mean(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTens return torch.mean(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, axis=dim, **kwargs) # type: ignore -def median(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: +def median(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.median` with equivalent implementation for numpy Args: @@ -443,7 +443,7 @@ def median(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTe return torch.median(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, axis=dim, **kwargs) # type: ignore -def min(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTensor: +def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.min` with equivalent implementation for numpy Args: @@ -455,7 +455,7 @@ def min(x: NdarrayOrTensor, dim: Optional[int] = None, **kwargs) -> NdarrayTenso return torch.min(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, axis=dim, **kwargs) # type: ignore -def std(x: NdarrayOrTensor, dim: Optional[int] = None, unbias: Optional[bool] = False) -> NdarrayTensor: +def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NdarrayTensor: """`torch.std` with equivalent implementation for numpy Args: From 10d5dc56089d8c83c2af2591fc8f57fba3e233d3 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 22:49:24 +0800 Subject: [PATCH 085/150] fix: type check Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 660f1794c5..f4df52fedf 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -464,7 +464,7 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ axis = None - if type(datastat_list[0]) is list or type(datastat_list[0]) is np.array: + if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): if not is_label: # size = [num of cases, number of modalities, stats] datastat_list = np.concatenate([[np.array(datastat) for datastat in datastat_list]]) From db2a9716f645140a2fea17bdf8c0dd8fa141b790 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Mon, 15 Aug 2022 23:24:18 +0800 Subject: [PATCH 086/150] fix type hint Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index f4df52fedf..e74731cc30 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -463,7 +463,7 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo Returns a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ - axis = None + axis: Tuple[int, int] = None if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): if not is_label: # size = [num of cases, number of modalities, stats] From b7bde011c73f4f661068b31084a9eeb8205b5d2c Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 00:01:17 +0800 Subject: [PATCH 087/150] fix flake8 Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index f4df52fedf..bd23d785c1 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -463,7 +463,8 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo Returns a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ - axis = None + axis: Union[Tuple[int, int], Tuple[int]] = None + if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): if not is_label: # size = [num of cases, number of modalities, stats] From c3026786d4f4f0c4769b4554b433d1d3791cb2ad Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 15 Aug 2022 16:02:42 +0000 Subject: [PATCH 088/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index bd23d785c1..423bd8b01e 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -464,7 +464,7 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ axis: Union[Tuple[int, int], Tuple[int]] = None - + if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): if not is_label: # size = [num of cases, number of modalities, stats] From 4ce73bcb9f79d28d9e8731796eb0d75647de1987 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 07:30:06 +0800 Subject: [PATCH 089/150] fix flake8 Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 423bd8b01e..55e07084d9 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -463,7 +463,7 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo Returns a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ - axis: Union[Tuple[int, int], Tuple[int]] = None + axis: Union[Tuple[int, int], int] if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): if not is_label: @@ -472,7 +472,7 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo else: # size = [num of cases, stats] datastat_list = np.concatenate([np.array(datastat) for datastat in datastat_list]) - axis = (0,) + axis = 0 if average and len(datastat_list.shape) > 2: axis = (0, 1) # Calculate statistics from the data using numpy. Only used for summary From e8c95db258f74f85ae8f0cce866db8c06e57262e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 07:49:50 +0800 Subject: [PATCH 090/150] fix prev breaking change Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/apps/auto3d/data_analyzer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/apps/auto3d/data_analyzer.py index 55e07084d9..97429ae854 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/apps/auto3d/data_analyzer.py @@ -463,7 +463,7 @@ def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: boo Returns a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary """ - axis: Union[Tuple[int, int], int] + axis: Union[Tuple[int, int], int, None] = None if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): if not is_label: From e38585d24a53f52f8c13a34b3e5d65330e3b40de Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 16 Aug 2022 09:34:57 +0800 Subject: [PATCH 091/150] move from apps/auto3d to auto3dseg Signed-off-by: Mingxin Zheng --- monai/{apps/auto3d => auto3dseg}/__init__.py | 0 monai/{apps/auto3d => auto3dseg}/__main__.py | 2 +- monai/{apps/auto3d => auto3dseg}/data_analyzer.py | 6 +++--- monai/{apps/auto3d => auto3dseg}/data_utils.py | 0 tests/min_tests.py | 2 +- tests/{test_auto3d.py => test_auto3dseg.py} | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) rename monai/{apps/auto3d => auto3dseg}/__init__.py (100%) rename monai/{apps/auto3d => auto3dseg}/__main__.py (92%) rename monai/{apps/auto3d => auto3dseg}/data_analyzer.py (99%) rename monai/{apps/auto3d => auto3dseg}/data_utils.py (100%) rename tests/{test_auto3d.py => test_auto3dseg.py} (98%) diff --git a/monai/apps/auto3d/__init__.py b/monai/auto3dseg/__init__.py similarity index 100% rename from monai/apps/auto3d/__init__.py rename to monai/auto3dseg/__init__.py diff --git a/monai/apps/auto3d/__main__.py b/monai/auto3dseg/__main__.py similarity index 92% rename from monai/apps/auto3d/__main__.py rename to monai/auto3dseg/__main__.py index d6d313880f..1f528b108b 100644 --- a/monai/apps/auto3d/__main__.py +++ b/monai/auto3dseg/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.apps.auto3d.data_analyzer import DataAnalyzer +from monai.auto3dseg.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/monai/apps/auto3d/data_analyzer.py b/monai/auto3dseg/data_analyzer.py similarity index 99% rename from monai/apps/auto3d/data_analyzer.py rename to monai/auto3dseg/data_analyzer.py index 97429ae854..a752e884ce 100644 --- a/monai/apps/auto3d/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -24,8 +24,8 @@ import torch from monai import data, transforms -from monai.apps.auto3d.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue from monai.apps.utils import get_logger +from monai.auto3dseg.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor from monai.data.utils import no_collation @@ -72,7 +72,7 @@ class DataAnalyzer: .. code-block:: python - from monai.apps.auto3d.data_analyzer import DataAnalyzer + from monai.auto3dseg.data_analyzer import DataAnalyzer datalist = { "testing": [{"image": "image_003.nii.gz"}], @@ -94,7 +94,7 @@ class DataAnalyzer: .. code-block:: bash - python -m monai.apps.auto3d \ + python -m monai.auto3dseg \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ diff --git a/monai/apps/auto3d/data_utils.py b/monai/auto3dseg/data_utils.py similarity index 100% rename from monai/apps/auto3d/data_utils.py rename to monai/auto3dseg/data_utils.py diff --git a/tests/min_tests.py b/tests/min_tests.py index a71c81d56b..3fee8b89e0 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -29,7 +29,7 @@ def run_testsuit(): exclude_cases = [ # these cases use external dependencies "test_ahnet", "test_arraydataset", - "test_auto3d", + "test_auto3dseg", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", diff --git a/tests/test_auto3d.py b/tests/test_auto3dseg.py similarity index 98% rename from tests/test_auto3d.py rename to tests/test_auto3dseg.py index c149c780a0..843f9fe678 100644 --- a/tests/test_auto3d.py +++ b/tests/test_auto3dseg.py @@ -18,7 +18,7 @@ import numpy as np import torch -from monai.apps.auto3d.data_analyzer import DataAnalyzer +from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.bundle import ConfigParser from monai.data import create_test_image_3d From 94c1c876f3546d66a8a4132d960563d5fcc552f2 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 16 Aug 2022 09:51:47 +0800 Subject: [PATCH 092/150] fix test_module_list Signed-off-by: Mingxin Zheng --- monai/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/monai/__init__.py b/monai/__init__.py index 6bec0b1084..a8a450a2f5 100644 --- a/monai/__init__.py +++ b/monai/__init__.py @@ -49,6 +49,7 @@ __all__ = [ "apps", + "auto3dseg", "bundle", "config", "data", From 937fdadfab9d6581871017ffd9be477736ab23e3 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 11:13:50 +0800 Subject: [PATCH 093/150] fix docstring Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/auto3dseg/data_analyzer.py | 127 +++++++++--------- monai/auto3dseg/data_utils.py | 4 +- .../utils_pytorch_numpy_unification.py | 2 +- 3 files changed, 63 insertions(+), 70 deletions(-) diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index a752e884ce..e49a87cb27 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -87,7 +87,7 @@ class DataAnalyzer: dataroot = '/datasets' # the directory where you have the image files (nii.gz) DataAnalyzer(datalist, dataroot) - Note: + Notes: The module can also be called from the command line interface (CLI). For example: @@ -243,9 +243,8 @@ def _get_case_image_stats(self) -> Dict: Statistics values are stored under the key "image_stats". Returns: - a dictionary of the images stats. - - "image_stats" - - "shape", "channel", "cropped_shape", "spacing", "intensity" + a dictionary of the images stats in format of {"image_stats": {"shape":[], + "channel":[], "cropped_shape":[], "spacing":[], "intensity":[]}} """ # retrieve transformed data from self.data start = time.time() @@ -290,14 +289,14 @@ def _get_case_foreground_image_stats(self) -> Dict: The statistics will be values with the key name "intensity" under parent the key "image_foreground_stats". - Returns + Returns: a dictionary with following structure - - image_foreground_stats - - intensity - - max - - mean - - median - - ... + - image_foreground_stats + - intensity + - max + - mean + - median + - etc """ # retrieve transformed data from self.data start = time.time() @@ -328,16 +327,9 @@ def _get_label_stats(self) -> Dict: corresponding image region intensity). The statistics are saved in the values with key name "label_stats" in the return variable. - Returns - a dictionary with following structures: - - "label_stats" - - "labels" : class_IDs of the label + background class - - "pixel_percentanges" - - "image_intensity" - - "label_N" (N=0,1,...) - - "image_intensity" - - "shape" - - "ncomponents" + Returns: + a dictionary in format of {"label_stats":{"labels":[], "pixel_percentage":[] + "image_intensity":[], "label_0":{}, "label_1":{}}} """ # retrieve transformed data from self.data start = time.time() @@ -404,10 +396,10 @@ def _pixelpercent_summary(xs): Define the summary function for the pixel percentage over the whole dataset. Args - xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. - Length of xs is number of data samples. + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The + dict may miss some labels. Length of xs is number of data samples. - Returns + Returns: a dictionary showing the percentage of labels, with numeric keys (0, 1, ...) """ percent_summary = {} @@ -430,7 +422,7 @@ def _intensity_summary(self, xs: List, average: bool = False) -> Dict: xs: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]]. Length of xs is number of data samples. average: if average is true, operation will be applied along axis 0 and average out the values. - Returns + Returns: a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations. """ @@ -523,8 +515,12 @@ def _get_foreground_image(image: MetaTensor) -> MetaTensor: Args: image: ndarray image to segment. + Returns: - ndarray of foreground image by removing all-zero edges. Note: the size of the ouput is smaller than the input. + ndarray of foreground image by removing all-zero edges. + + Notes: + the size of the ouput is smaller than the input. """ crop_foreground = transforms.CropForeground(select_fn=lambda x: x > 0) image_foreground = MetaTensor(crop_foreground(image)) @@ -539,7 +535,7 @@ def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: image: ndarray image to segment. label: ndarray the image input and annotated with class IDs. - Return + Returns: 1D array of foreground image with label > 0 """ label_foreground = MetaTensor(image[label > 0]) @@ -587,28 +583,24 @@ def _get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[A def get_case_stats(self, batch_data) -> Dict: """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data + Args: - batch_data has follwing keys (monai dataloader batch data) - - "images" (image with shape [modality, image_shape]) - - "label" (label with shape [image_shape]) - - "image_meta_dict" (meta info of the image data) - - "label_meta_dict" (meta info of the label data) + batch_data: from monai dataloader batch data, with keys "images", "labels", "image_meta_dict", + "label_meta_dict" Returns: - a dictionary to summarize all the statistics for each case in following structure - - "image_stats" - - shape, channels,cropped_shape, spacing, intensity - - "image_foreground_stats" - - "intensity" - - "label_stats" - - labels, pxiel_percentage, image_intensity, label_0, label_1 - - Raise - ValueError if data loader is unable to find "label" or "label_meta_dict" - Note: + a dictionary to summarize all the statistics in format of {"image_stats":{"shape",[], "channels":[] + "cropped_shape":[], "spacing":[], "intensity":[]}, "image_foreground_stats":{"intensity":[]}, + "label_stats":{"labels":[], "pixel_percentage":[], "image_intensity":[], "label_0":[], "label_1": + [], "label_N":[]}} + + Raises: + ValueError: if data loader is unable to find "label" or "label_meta_dict" + + Notes: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output dictionary - will include .nan/.inf in the statistics. + may be generated and carried over in the computation. In such cases, the output + dictionary will include .nan/.inf in the statistics. """ @@ -654,7 +646,8 @@ def _check_data_uniformity(self, keys: List[str]): affine matrices/spacings due to monai transforms. Args: - a list of string-type keys under image_stats dictionary. Default value is ["spacing"]. + keys: a list of string-type keys under image_stats dictionary. + Returns: False if one of the selected key values is not constant across the dataset images. @@ -676,27 +669,27 @@ def get_all_case_stats(self) -> Dict: Get all case stats. Caller of the DataAnalyser class. The function iterates datalist and call get_case_stats to generate stats. Then get_case_summary is called to combine results. - Returns - - the data statistics dictionary - - "stats_summary" (summary statistics of the entire datasets) - - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations_summary) - - "image_foreground_stats" (info of the intensity for the non-zero labeled voxels) - - "label_stats" (info of the labels, pixel percentange, image_intensity, and each invidiual label) - - "stats_by_cases" - - List type value. Each element of the list is statistics of a image-label info. For example: - - "image" (value is the path to an image) - - "label" (value is the path to the corresponding label) - - "image_stats" (summarizing info of shape, channel, spacing, and etc using operations) - - "image_foreground_stats" (similar to above) - - "label_stats" - - Raise: - ValueError if the user sent image_only to False but there is no label found - - Note: - nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output dictionary - will include .nan/.inf in the statistics. + Returns: + A data statistics dictionary containing + "stats_summary" (summary statistics of the entire datasets). Within stats_summary + there are "image_stats" (summarizing info of shape, channel, spacing, and etc + using operations_summary), "image_foreground_stats" (info of the intensity for the + non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, + image_intensity, and each invidiual label) + "stats_by_cases" (List type value. Each element of the list is statistics of + a image-label info. Within each each element, there are: "image" (value is the + path to an image), "label" (value is the path to the corresponding label), "image_stats" + (summarizing info of shape, channel, spacing, and etc using operations), + "image_foreground_stats" (similar to the previous one but one foreground image), and + "label_stats" (stats of the individual labels ) + + Raises: + ValueError: if the user sent image_only to False but there is no label found + + Notes: + Since the backend of the statistics computation are torch/numpy, nan/inf value + may be generated and carried over in the computation. In such cases, the output + dictionary will include .nan/.inf in the statistics. """ start = time.time() diff --git a/monai/auto3dseg/data_utils.py b/monai/auto3dseg/data_utils.py index b034f884d7..d805d08d26 100644 --- a/monai/auto3dseg/data_utils.py +++ b/monai/auto3dseg/data_utils.py @@ -65,7 +65,7 @@ def recursive_getvalue(dicts: Dict, keys: Union[str, List]) -> Any: dicts: a provided dictionary keys: name of the key or a list showing the key chain to access the value - Exmaple: + Examples: dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'] recursive_getvalue(dicts, keys) = 1 """ @@ -85,7 +85,7 @@ def recursive_setvalue(keys: Union[str, List], value: Any, dicts: Dict) -> None: value: key value dicts: user-provided dictionary - Exmaples: + Examples: dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'], value = 2 recursive_setvalue(keys, value, dicts) will set dicts = {'a':{'b':{'c':2}}} """ diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 0f49454de5..53510243fa 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -208,7 +208,7 @@ def ravel(x: NdarrayOrTensor) -> NdarrayOrTensor: """`np.ravel` with equivalent implementation for torch. Args: - x: array/tensor. to ravel. + x: array/tensor to ravel. Returns: Return a contiguous flattened array/tensor. From ac2d68956254e4412231027403f122b4e65c0cfa Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 16 Aug 2022 03:14:30 +0000 Subject: [PATCH 094/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/auto3dseg/data_analyzer.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index e49a87cb27..c20f4269c8 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -243,7 +243,7 @@ def _get_case_image_stats(self) -> Dict: Statistics values are stored under the key "image_stats". Returns: - a dictionary of the images stats in format of {"image_stats": {"shape":[], + a dictionary of the images stats in format of {"image_stats": {"shape":[], "channel":[], "cropped_shape":[], "spacing":[], "intensity":[]}} """ # retrieve transformed data from self.data @@ -396,7 +396,7 @@ def _pixelpercent_summary(xs): Define the summary function for the pixel percentage over the whole dataset. Args - xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. Length of xs is number of data samples. Returns: @@ -515,11 +515,11 @@ def _get_foreground_image(image: MetaTensor) -> MetaTensor: Args: image: ndarray image to segment. - + Returns: - ndarray of foreground image by removing all-zero edges. - - Notes: + ndarray of foreground image by removing all-zero edges. + + Notes: the size of the ouput is smaller than the input. """ crop_foreground = transforms.CropForeground(select_fn=lambda x: x > 0) @@ -583,7 +583,7 @@ def _get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[A def get_case_stats(self, batch_data) -> Dict: """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data - + Args: batch_data: from monai dataloader batch data, with keys "images", "labels", "image_meta_dict", "label_meta_dict" @@ -599,7 +599,7 @@ def get_case_stats(self, batch_data) -> Dict: Notes: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output + may be generated and carried over in the computation. In such cases, the output dictionary will include .nan/.inf in the statistics. @@ -670,15 +670,15 @@ def get_all_case_stats(self) -> Dict: call get_case_stats to generate stats. Then get_case_summary is called to combine results. Returns: - A data statistics dictionary containing + A data statistics dictionary containing "stats_summary" (summary statistics of the entire datasets). Within stats_summary - there are "image_stats" (summarizing info of shape, channel, spacing, and etc - using operations_summary), "image_foreground_stats" (info of the intensity for the - non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, + there are "image_stats" (summarizing info of shape, channel, spacing, and etc + using operations_summary), "image_foreground_stats" (info of the intensity for the + non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, image_intensity, and each invidiual label) - "stats_by_cases" (List type value. Each element of the list is statistics of - a image-label info. Within each each element, there are: "image" (value is the - path to an image), "label" (value is the path to the corresponding label), "image_stats" + "stats_by_cases" (List type value. Each element of the list is statistics of + a image-label info. Within each each element, there are: "image" (value is the + path to an image), "label" (value is the path to the corresponding label), "image_stats" (summarizing info of shape, channel, spacing, and etc using operations), "image_foreground_stats" (similar to the previous one but one foreground image), and "label_stats" (stats of the individual labels ) @@ -688,7 +688,7 @@ def get_all_case_stats(self) -> Dict: Notes: Since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output + may be generated and carried over in the computation. In such cases, the output dictionary will include .nan/.inf in the statistics. """ From 699fdcb9ceb64801559194a44a3f4f1a5c63542a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 11:19:27 +0800 Subject: [PATCH 095/150] misc fix whitespace Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/auto3dseg/data_analyzer.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index e49a87cb27..c20f4269c8 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -243,7 +243,7 @@ def _get_case_image_stats(self) -> Dict: Statistics values are stored under the key "image_stats". Returns: - a dictionary of the images stats in format of {"image_stats": {"shape":[], + a dictionary of the images stats in format of {"image_stats": {"shape":[], "channel":[], "cropped_shape":[], "spacing":[], "intensity":[]}} """ # retrieve transformed data from self.data @@ -396,7 +396,7 @@ def _pixelpercent_summary(xs): Define the summary function for the pixel percentage over the whole dataset. Args - xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The + xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The dict may miss some labels. Length of xs is number of data samples. Returns: @@ -515,11 +515,11 @@ def _get_foreground_image(image: MetaTensor) -> MetaTensor: Args: image: ndarray image to segment. - + Returns: - ndarray of foreground image by removing all-zero edges. - - Notes: + ndarray of foreground image by removing all-zero edges. + + Notes: the size of the ouput is smaller than the input. """ crop_foreground = transforms.CropForeground(select_fn=lambda x: x > 0) @@ -583,7 +583,7 @@ def _get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[A def get_case_stats(self, batch_data) -> Dict: """ Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data - + Args: batch_data: from monai dataloader batch data, with keys "images", "labels", "image_meta_dict", "label_meta_dict" @@ -599,7 +599,7 @@ def get_case_stats(self, batch_data) -> Dict: Notes: nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output + may be generated and carried over in the computation. In such cases, the output dictionary will include .nan/.inf in the statistics. @@ -670,15 +670,15 @@ def get_all_case_stats(self) -> Dict: call get_case_stats to generate stats. Then get_case_summary is called to combine results. Returns: - A data statistics dictionary containing + A data statistics dictionary containing "stats_summary" (summary statistics of the entire datasets). Within stats_summary - there are "image_stats" (summarizing info of shape, channel, spacing, and etc - using operations_summary), "image_foreground_stats" (info of the intensity for the - non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, + there are "image_stats" (summarizing info of shape, channel, spacing, and etc + using operations_summary), "image_foreground_stats" (info of the intensity for the + non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, image_intensity, and each invidiual label) - "stats_by_cases" (List type value. Each element of the list is statistics of - a image-label info. Within each each element, there are: "image" (value is the - path to an image), "label" (value is the path to the corresponding label), "image_stats" + "stats_by_cases" (List type value. Each element of the list is statistics of + a image-label info. Within each each element, there are: "image" (value is the + path to an image), "label" (value is the path to the corresponding label), "image_stats" (summarizing info of shape, channel, spacing, and etc using operations), "image_foreground_stats" (similar to the previous one but one foreground image), and "label_stats" (stats of the individual labels ) @@ -688,7 +688,7 @@ def get_all_case_stats(self) -> Dict: Notes: Since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output + may be generated and carried over in the computation. In such cases, the output dictionary will include .nan/.inf in the statistics. """ From 5359741362cc40052fc243a236a60b428969d555 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 11:23:18 +0800 Subject: [PATCH 096/150] update monai/README.md Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- monai/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/monai/README.md b/monai/README.md index 64af824b1d..2a183803c7 100644 --- a/monai/README.md +++ b/monai/README.md @@ -2,6 +2,8 @@ * **apps**: high level medical domain specific deep learning applications. +* **auto3dseg**: modules to run the Auto3D segmentation pipeline. + * **bundle**: components to build the portable self-descriptive model bundle. * **config**: for system configuration and diagnostic output. From 45fba8d48ce20a7c289e53a2a351b2286714c80c Mon Sep 17 00:00:00 2001 From: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> Date: Tue, 16 Aug 2022 11:50:54 +0800 Subject: [PATCH 097/150] fix build-doc Signed-off-by: Mingxin Zheng <18563433+mingxin-zheng@users.noreply.github.com> --- docs/source/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/source/conf.py b/docs/source/conf.py index a4db053d78..ecc1b3ff59 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -49,6 +49,7 @@ "utils", "inferers", "optimizers", + "auto3dseg", ] From ff09fcd02adea000f15a824036b762e53ab04f5a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 16 Aug 2022 13:54:27 +0800 Subject: [PATCH 098/150] move auto3dseg from monai to monai.apps Signed-off-by: Mingxin Zheng --- docs/source/conf.py | 1 - monai/README.md | 2 -- monai/__init__.py | 1 - monai/{ => apps}/auto3dseg/__init__.py | 0 monai/{ => apps}/auto3dseg/__main__.py | 2 +- monai/{ => apps}/auto3dseg/data_analyzer.py | 6 +++--- monai/{ => apps}/auto3dseg/data_utils.py | 0 tests/test_auto3dseg.py | 2 +- 8 files changed, 5 insertions(+), 9 deletions(-) rename monai/{ => apps}/auto3dseg/__init__.py (100%) rename monai/{ => apps}/auto3dseg/__main__.py (92%) rename monai/{ => apps}/auto3dseg/data_analyzer.py (99%) rename monai/{ => apps}/auto3dseg/data_utils.py (100%) diff --git a/docs/source/conf.py b/docs/source/conf.py index ecc1b3ff59..a4db053d78 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -49,7 +49,6 @@ "utils", "inferers", "optimizers", - "auto3dseg", ] diff --git a/monai/README.md b/monai/README.md index 2a183803c7..64af824b1d 100644 --- a/monai/README.md +++ b/monai/README.md @@ -2,8 +2,6 @@ * **apps**: high level medical domain specific deep learning applications. -* **auto3dseg**: modules to run the Auto3D segmentation pipeline. - * **bundle**: components to build the portable self-descriptive model bundle. * **config**: for system configuration and diagnostic output. diff --git a/monai/__init__.py b/monai/__init__.py index a8a450a2f5..6bec0b1084 100644 --- a/monai/__init__.py +++ b/monai/__init__.py @@ -49,7 +49,6 @@ __all__ = [ "apps", - "auto3dseg", "bundle", "config", "data", diff --git a/monai/auto3dseg/__init__.py b/monai/apps/auto3dseg/__init__.py similarity index 100% rename from monai/auto3dseg/__init__.py rename to monai/apps/auto3dseg/__init__.py diff --git a/monai/auto3dseg/__main__.py b/monai/apps/auto3dseg/__main__.py similarity index 92% rename from monai/auto3dseg/__main__.py rename to monai/apps/auto3dseg/__main__.py index 1f528b108b..301c5d7236 100644 --- a/monai/auto3dseg/__main__.py +++ b/monai/apps/auto3dseg/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.auto3dseg.data_analyzer import DataAnalyzer +from monai.apps.auto3dseg.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/monai/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py similarity index 99% rename from monai/auto3dseg/data_analyzer.py rename to monai/apps/auto3dseg/data_analyzer.py index c20f4269c8..67394b7c61 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/apps/auto3dseg/data_analyzer.py @@ -24,8 +24,8 @@ import torch from monai import data, transforms +from monai.apps.auto3dseg.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue from monai.apps.utils import get_logger -from monai.auto3dseg.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor from monai.data.utils import no_collation @@ -72,7 +72,7 @@ class DataAnalyzer: .. code-block:: python - from monai.auto3dseg.data_analyzer import DataAnalyzer + from monai.apps.auto3dseg.data_analyzer import DataAnalyzer datalist = { "testing": [{"image": "image_003.nii.gz"}], @@ -94,7 +94,7 @@ class DataAnalyzer: .. code-block:: bash - python -m monai.auto3dseg \ + python -m monai.apps.auto3dseg \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ diff --git a/monai/auto3dseg/data_utils.py b/monai/apps/auto3dseg/data_utils.py similarity index 100% rename from monai/auto3dseg/data_utils.py rename to monai/apps/auto3dseg/data_utils.py diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 843f9fe678..3aec2fd408 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -18,7 +18,7 @@ import numpy as np import torch -from monai.auto3dseg.data_analyzer import DataAnalyzer +from monai.apps.auto3dseg.data_analyzer import DataAnalyzer from monai.bundle import ConfigParser from monai.data import create_test_image_3d From 22080cb34905c839e8a29d33489cbf43210256f1 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 17 Aug 2022 14:49:18 +0800 Subject: [PATCH 099/150] fix bugs that cause wrong datastats numbers Signed-off-by: Mingxin Zheng --- monai/apps/auto3dseg/data_analyzer.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/monai/apps/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py index 67394b7c61..7718d20b1c 100644 --- a/monai/apps/auto3dseg/data_analyzer.py +++ b/monai/apps/auto3dseg/data_analyzer.py @@ -137,7 +137,9 @@ def __init__( if not self.IMAGE_ONLY: transform_list += [ - transforms.Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True)), + transforms.Lambdad( + keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x + ), transforms.SqueezeDimd(keys=["label"], dim=0), ] @@ -604,6 +606,7 @@ def get_case_stats(self, batch_data) -> Dict: """ + self.data = {} self.data["image"] = batch_data["image"].to(self.device) self.data["image_meta_dict"] = batch_data["image_meta_dict"] if not self.IMAGE_ONLY: From c296dbe6a37cf59c78dd2ce9f154ea83fa81d05f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Mon, 22 Aug 2022 09:27:14 +0800 Subject: [PATCH 100/150] refactor data analyzer Signed-off-by: Mingxin Zheng --- .../apps/auto3dseg/data_analyzer_refractor.py | 154 +++++ monai/auto3dseg/stats_collector.py | 582 ++++++++++++++++++ tests/test_auto3dseg.py | 2 +- 3 files changed, 737 insertions(+), 1 deletion(-) create mode 100644 monai/apps/auto3dseg/data_analyzer_refractor.py create mode 100644 monai/auto3dseg/stats_collector.py diff --git a/monai/apps/auto3dseg/data_analyzer_refractor.py b/monai/apps/auto3dseg/data_analyzer_refractor.py new file mode 100644 index 0000000000..2219f8c568 --- /dev/null +++ b/monai/apps/auto3dseg/data_analyzer_refractor.py @@ -0,0 +1,154 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +""" +Step 1 of the AutoML pipeline. The dataset is analysized with this script. +""" + +import copy +import time +import warnings +from os import path +from typing import Any, Dict, List, Tuple, Union + +import numpy as np +import torch + +from monai import data +from monai.apps.auto3dseg.data_utils import datafold_read +from monai.apps.utils import get_logger +from monai.data.utils import no_collation +from monai.utils import min_version, optional_import + +yaml, _ = optional_import("yaml") +tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") +measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) +cp, has_cp = optional_import("cupy") +cucim, has_cucim = optional_import("cucim") + +logger = get_logger(module_name=__name__) + +__all__ = ["DataAnalyzer"] + + +from monai.auto3dseg.stats_collector import DATA_STATS + +from monai.auto3dseg.stats_collector import SegAnalyzeCaseEngine, SegAnalyzeSummaryEngine + + + +class DataAnalyzer: + """ + The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. + The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. + which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only segmentation + problem is supported, so the user needs to provide paths to the image and label files. Also, label + data format is preferred to be (1,H,W,D), with the label index in the first dimension. If it is in + onehot format, it will be converted to the preferred format. + + Args: + datalist: a Python dictionary storing group, fold, and other information of the medical + image dataset, or a string to the JSON file storing the dictionary. + dataroot: user's local directory containing the datasets. + output_path: path to save the analysis result. + average: whether to average the statistical value across different image modalities. + do_ccp: apply the connected component algorithm to process the labels/images + device: a string specifying hardware (CUDA/CPU) utilized for the operations. + worker: number of workers to use for parallel processing. + image_key: a string that user specify for the image. The DataAnalyzer will look it up in the + datalist to locate the image files of the dataset. + label_key: a string that user specify for the label. The DataAnalyzer will look it up in the + datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer + will skip looking for labels and all label-related operations. + + For example: + + .. code-block:: python + + from monai.apps.auto3dseg.data_analyzer import DataAnalyzer + + datalist = { + "testing": [{"image": "image_003.nii.gz"}], + "training": [ + {"fold": 0, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, + {"fold": 0, "image": "image_002.nii.gz", "label": "label_002.nii.gz"}, + {"fold": 1, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, + {"fold": 1, "image": "image_004.nii.gz", "label": "label_004.nii.gz"}, + ], + } + + dataroot = '/datasets' # the directory where you have the image files (nii.gz) + DataAnalyzer(datalist, dataroot) + + Notes: + The module can also be called from the command line interface (CLI). + + For example: + + .. code-block:: bash + + python -m monai.apps.auto3dseg \ + DataAnalyzer \ + get_all_case_stats \ + --datalist="my_datalist.json" \ + --dataroot="my_dataroot_dir" + + """ + + def __init__( + self, + datalist: Union[str, Dict], + dataroot: str = "", + output_path: str = "./data_stats.yaml", + do_ccp: bool = True, + device: Union[str, torch.device] = "cuda", + worker: int = 2, + image_key: str = "image", + label_key: str = "label", + ): + """ + The initializer will load the data and register the functions for data statistics gathering. + """ + if path.isfile(output_path): + warnings.warn(f"File {output_path} already exists and will be overwritten.") + logger.debug(f"{output_path} will be overwritten by a new datastat.") + + self.image_key = image_key + self.label_key = label_key + + self.output_path = output_path + self.IMAGE_ONLY = True if label_key is None else False + + self.datalist = datalist + self.dataroot = dataroot + self.device = device + self.worker = worker + + def get_all_case_stats(self): + + keys = list(filter(None, [self.image_key, self.label_key])) + files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) + + result = { + DATA_STATS.SUMMARY: {}, + DATA_STATS.BY_CASE: [], + } + + for batch_data in self.dataset: + case_engine = SegAnalyzeCaseEngine(batch_data[0], self.image_key, self.label_key, device=self.device) + result[DATA_STATS.BY_CASE].append(case_engine()) + + summary_engine = SegAnalyzeSummaryEngine(result[DATA_STATS.BY_CASE]) + result[DATA_STATS.SUMMARY] = summary_engine() + + return result diff --git a/monai/auto3dseg/stats_collector.py b/monai/auto3dseg/stats_collector.py new file mode 100644 index 0000000000..bd7d4225a8 --- /dev/null +++ b/monai/auto3dseg/stats_collector.py @@ -0,0 +1,582 @@ +from operator import concat +from pydoc import resolve +import re +from tkinter import E +import numpy as np +from abc import abstractmethod, ABC +from copy import deepcopy +from collections import UserDict + +import torch +from typing import Any, Dict, List, Tuple, Union, Optional +from functools import partial +from monai.utils.enums import Enum, StrEnum +from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std + +from monai.data.meta_tensor import MetaTensor + +from monai.transforms import ( + Compose, + LoadImaged, + EnsureChannelFirstd, + Orientationd, + EnsureTyped, + Lambdad, + SqueezeDimd, + CropForeground, + ToDeviced, + ToCupy, + transform, +) + +from monai.utils import min_version, optional_import +from monai.utils.misc import label_union +from monai.config.type_definitions import TensorOrList + +measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) +cp, has_cp = optional_import("cupy") +cucim, has_cucim = optional_import("cucim") + +def get_foreground_image(image: MetaTensor) -> np.ndarray: + """ + Get a foreground image by removing all-zero rectangles on the edges of the image + Note for the developer: update select_fn if the foreground is defined differently. + + Args: + image: ndarray image to segment. + + Returns: + ndarray of foreground image by removing all-zero edges. + + Notes: + the size of the ouput is smaller than the input. + """ + copper = CropForeground(select_fn=lambda x: x > 0) + image_foreground = copper(image) + return image_foreground + +def get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: + """ + Get foreground image pixel values and mask out the non-labeled area. + + Args + image: ndarray image to segment. + label: ndarray the image input and annotated with class IDs. + + Returns: + 1D array of foreground image with label > 0 + """ + label_foreground = MetaTensor(image[label > 0]) + return label_foreground + +def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[Any], int]: + """ + Find all connected components and their bounding shape. Backend can be cuPy/cuCIM or Numpy + depending on the hardware. + + Args: + mask_index: a binary mask + use_gpu: a switch to use GPU/CUDA or not. If GPU is unavailable, CPU will be used + regardless of this setting + + """ + shape_list = [] + if mask_index.device.type == "cuda" and has_cp and has_cucim and use_gpu: + mask_cupy = ToCupy()(mask_index.short()) + labeled = cucim.skimage.measure.label(mask_cupy) + vals = cp.unique(labeled[cp.nonzero(labeled)]) + + for ncomp in vals: + comp_idx = cp.argwhere(labeled == ncomp) + comp_idx_min = cp.min(comp_idx, axis=0).tolist() + comp_idx_max = cp.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + shape_list.append(bbox_shape) + ncomponents = len(vals) + + elif has_measure: + labeled, ncomponents = measure_np.label(mask_index.data.cpu().numpy(), background=-1, return_num=True) + for ncomp in range(1, ncomponents + 1): + comp_idx = np.argwhere(labeled == ncomp) + comp_idx_min = np.min(comp_idx, axis=0).tolist() + comp_idx_max = np.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + shape_list.append(bbox_shape) + else: + raise RuntimeError("Cannot find one of the following required dependencies: {cuPy+cuCIM} or {scikit-image}") + + return shape_list, ncomponents + + +class DATA_STATS(StrEnum): + """ + A set of keys for dataset statistical analysis module + + """ + SUMMARY = "stats_summary" + BY_CASE = "stats_by_cases" + BY_CASE_IMAGE_PATH = "image" + BY_CASE_LABEL_PATH = "label" + +class IMAGE_STATS(StrEnum): + """ + + """ + SHAPE = "shape" + CHANNELS = "channels" + CROPPED_SHAPE = "cropped_shape" + SPACING = "spacing" + INTENSITY = "intensity" + +class LABEL_STATS(StrEnum): + """ + + """ + LABEL_UID = "labels" + PIXEL_PCT = "pixel_percentage" + IMAGE_INT = "image_intensity" + LABEL = "label" + LABEL_SHAPE = "shape" + LABEL_NCOMP = "ncomponents" + +class Operations(UserDict): + def evaluate(self, data: Any, **kwargs) -> dict: + return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} + +class SampleOperations(Operations): + # todo: missing value/nan/inf + def __init__(self) -> None: + self.data = { + "max": max, + "mean": mean, + "median": median, + "min": min, + "stdev": std, + "percentile": partial(percentile, q=[0.5, 10, 90, 99.5]) + } + self.data_addon = { + "percentile_00_5": ("percentile", 0), + "percentile_10_0": ("percentile", 1), + "percentile_90_0": ("percentile", 2), + "percentile_99_5": ("percentile", 3), + } + + def evaluate(self, data: Any, **kwargs) -> dict: + ret = super().evaluate(data, **kwargs) + for k, v in self.data_addon.items(): + cache = v[0] + idx = v[1] + if isinstance(v, tuple) and cache in ret: + ret.update({k: ret[cache][idx]}) + + return ret + +class SummaryOperations(Operations): + def __init__(self) -> None: + self.data = { + "max": max, + "mean": mean, + "median": mean, + "min": min, + "stdev": mean, + "percentile_00_5": mean, + "percentile_10_0": mean, + "percentile_90_0": mean, + "percentile_99_5": mean, + } + + def evaluate(self, data: Any, **kwargs) -> dict: + return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} + +class Analyzer(transform.MapTransform, ABC): + def __init__(self, report_format): + self.report_format = report_format + self.ops = {} + + def update_ops(self, key, op): + """ + """ + self.ops[key] = op + + if key in self.report_format: + self.report_format[key] = op # value in report_format will be resolved to a dict with only keys + + def resolve_ops(self, func): + ret = dict.fromkeys([key for key in func.data]) + if hasattr(func, 'data_addon'): + for key in func.data_addon: + ret.update({key: None}) + return ret + + def get_report_format(self): + for k, v in self.report_format.items(): + if issubclass(v.__class__, Operations): + self.report_format[k] = self.resolve_ops(v) + else: + self.report_format[k] = v + + return self.report_format + + @abstractmethod + def __call__(self, data): + """Analyze the dict format dataset, return the summary report""" + raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") + +class ImageStatsCaseAnalyzer(Analyzer): + def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): + + self.image_key = image_key + self.label_key = label_key + self.image_meta_key = self.image_key + meta_key_postfix + self.label_meta_key = self.label_key + meta_key_postfix + + report_format = { + IMAGE_STATS.SHAPE: None, + IMAGE_STATS.CHANNELS: None, + IMAGE_STATS.CROPPED_SHAPE: None, + IMAGE_STATS.SPACING: None, + IMAGE_STATS.INTENSITY: None, + } + + super().__init__(report_format) + self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) + + + def __call__(self, data): + # from time import time + # start = time.time() + ndas = data[self.image_key] + ndas = [ndas[i] for i in range(ndas.shape[0])] + if "nda_croppeds" not in data: + data["nda_croppeds"] = [get_foreground_image(nda) for nda in ndas] + nda_croppeds = data["nda_croppeds"] + + # perform calculation + analysis = deepcopy(self.get_report_format()) + + analysis[IMAGE_STATS.SHAPE] = [list(nda.shape) for nda in ndas] + analysis[IMAGE_STATS.CHANNELS] = len(ndas) + analysis[IMAGE_STATS.CROPPED_SHAPE] = [list(nda_c.shape) for nda_c in nda_croppeds] + analysis[IMAGE_STATS.SPACING] = np.tile(np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1]).tolist() + analysis[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] + + # logger.debug(f"Get image stats spent {time.time()-start}") + return analysis + +class FgImageStatsCasesAnalyzer(Analyzer): + def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): + + self.image_key = image_key + self.label_key = label_key + self.image_meta_key = self.image_key + meta_key_postfix + self.label_meta_key = self.label_key + meta_key_postfix + + report_format = { + IMAGE_STATS.INTENSITY: None + } + + super().__init__(report_format) + self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) + + def __call__(self, data): + + ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) + ndas = [ndas[i] for i in range(ndas.shape[0])] + ndas_label = data[self.label_key] # (H,W,D) + nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] + + # perform calculation + analysis = deepcopy(self.get_report_format()) + + analysis[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] + return analysis + +class LabelStatsCaseAnalyzer(Analyzer): + def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp: bool = True): + + self.image_key = image_key + self.label_key = label_key + self.image_meta_key = self.image_key + meta_key_postfix + self.label_meta_key = self.label_key + meta_key_postfix + self.do_ccp = do_ccp + + report_format = { + LABEL_STATS.LABEL_UID: None, + LABEL_STATS.PIXEL_PCT: None, + LABEL_STATS.IMAGE_INT: None, + LABEL_STATS.LABEL: [{ + LABEL_STATS.IMAGE_INT: None, + LABEL_STATS.LABEL_SHAPE: None, + LABEL_STATS.LABEL_NCOMP: None, + }], + } + + super().__init__(report_format) + self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) + self.update_ops_label_list(LABEL_STATS.LABEL, SampleOperations()) + + def update_ops_label_list(self, key, op): + self.ops[key] = op + # todo: add support for the list-type item print-out + + def __call__(self, data): + ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) + ndas = [ndas[i] for i in range(ndas.shape[0])] + ndas_label = data[self.label_key] # (H,W,D) + nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] + unique_label = torch.unique(ndas_label).data.cpu().numpy().astype(np.int8).tolist() + + # start = time.time() + label_stats = [] + pixel_percentage = {} + for index in unique_label: + label_dict: Dict[str, Any] = {} + mask_index = ndas_label == index + label_dict[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas] + # logger.debug(f" label {index} stats takes {time.time() - s}") + pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() + if self.do_ccp: # apply connected component + shape_list, ncomponents = get_label_ccp(mask_index) + label_dict[LABEL_STATS.LABEL_SHAPE] = shape_list + label_dict[LABEL_STATS.LABEL_NCOMP] = ncomponents + + label_stats.append(label_dict) + + total_percent = np.sum(list(pixel_percentage.values())) + for key, value in pixel_percentage.items(): + pixel_percentage[key] = float(value / total_percent) + + analysis = deepcopy(self.get_report_format()) + analysis[LABEL_STATS.LABEL_UID] = unique_label + analysis[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] + analysis[LABEL_STATS.LABEL] = label_stats + analysis[LABEL_STATS.PIXEL_PCT] = pixel_percentage + + # logger.debug(f"Get label stats spent {time.time()-start}") + return analysis + + +class ImageStatsSummaryAnalyzer(Analyzer): + def __init__(self, case_analyzer_name: str, average: bool = True): + self.case_analyzer_name = case_analyzer_name + self.summary_average = average + report_format = { + IMAGE_STATS.SHAPE: None, + IMAGE_STATS.CHANNELS: None, + IMAGE_STATS.CROPPED_SHAPE: None, + IMAGE_STATS.SPACING: None, + IMAGE_STATS.INTENSITY: None + } + super().__init__(report_format) + + self.update_ops(IMAGE_STATS.SHAPE, SampleOperations()) + self.update_ops(IMAGE_STATS.CHANNELS, SampleOperations()) + self.update_ops(IMAGE_STATS.CROPPED_SHAPE, SampleOperations()) + self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) + self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) + + + def concat_np(self, key: str, data): + return np.concatenate([[np.array(d[self.case_analyzer_name][key]) for d in data]]) + + def concat_to_dict(self, key: str, ld_data): + """ + Pinpointing the key in data structure: list of dicts and concat the value + """ + values = [d[self.case_analyzer_name][key] for d in ld_data] # ld: list of dicts + # analysis is a list of list + key_values = {} + for k in values[0][0]: + key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue + + return key_values + + def __call__(self, data): + analysis = deepcopy(self.get_report_format()) + + axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) + for key in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: + analysis[key] = self.ops[key].evaluate(self.concat_np(key, data), dim=axis) + + axis = None if self.summary_average else 0 + analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + self.concat_to_dict(IMAGE_STATS.INTENSITY, data), dim=axis) + + return analysis + + +class FgImageStatsSummaryAnalyzer(Analyzer): + def __init__(self, case_analyzer_name: str, average=True): + self.case_analyzer_name = case_analyzer_name + self.summary_average = average + + report_format = { + IMAGE_STATS.INTENSITY: None + } + super().__init__(report_format) + self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) + + def concat_to_dict(self, key: str, ld_data): + """ + Pinpointing the key in data structure: list of dicts and concat the value + """ + values = [d[self.case_analyzer_name][key] for d in ld_data] # ld: list of dicts + # analysis is a list of list + key_values = {} + for k in values[0][0]: + key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue + + return key_values + + def __call__(self, data): + analysis = deepcopy(self.get_report_format()) + axis = None if self.summary_average else 0 + analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + self.concat_to_dict(IMAGE_STATS.INTENSITY, data), dim=axis) + + + return analysis + + + +class LabelStatsSummaryAnalyzer(Analyzer): + def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = True): + self.case_analyzer_name = case_analyzer_name + self.summary_average = average + self.do_ccp = do_ccp + + report_format = { + LABEL_STATS.LABEL_UID: None, + LABEL_STATS.PIXEL_PCT: None, + LABEL_STATS.IMAGE_INT: None, + LABEL_STATS.LABEL: [{ + LABEL_STATS.IMAGE_INT: None, + LABEL_STATS.LABEL_SHAPE: None, + LABEL_STATS.LABEL_NCOMP: None, + }] + } + super().__init__(report_format) + self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) + self.update_ops(LABEL_STATS.LABEL_SHAPE, SampleOperations()) + self.update_ops(LABEL_STATS.LABEL_NCOMP, SampleOperations()) + + def concat_to_dict(self, key: str, data): + """ + Pinpointing the key in data structure: list of dicts and concat the value + """ + values = [d[self.case_analyzer_name][key] for d in data] + # analysis is a list of list + key_values = {} + for k in values[0][0]: + key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue + + return key_values + + def concat_label_to_dict(self, label_id: int, key: str, data): + + values = [] + for d in data: + if label_id in d[self.case_analyzer_name][LABEL_STATS.LABEL_UID]: + idx = d[self.case_analyzer_name][LABEL_STATS.LABEL_UID].index(label_id) + values.append(d[self.case_analyzer_name][LABEL_STATS.LABEL][idx][key]) + + if isinstance(values[0], list): + if isinstance(values[0][0], list): + return np.concatenate([[np.array(v[0]) for v in values]]) + elif isinstance(values[0][0], dict): + key_values = {} + for k in values[0][0]: + key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue + return key_values + else: + raise NotImplementedError("The method to get number is not implemented. Unable to find the values.") + else: + return np.array(values) + + + def __call__(self, data): + analysis = deepcopy(self.get_report_format()) + + unique_label = label_union(self.concat_np(LABEL_STATS.LABEL_UID, data)) + pixel_summary = self.concat_ldd(LABEL_STATS.PIXEL_PCT, data) + + axis = None if self.summary_average else 0 + + analysis[LABEL_STATS.LABEL_UID] = unique_label + analysis[LABEL_STATS.PIXEL_PCT] = [{k: mean(v)} for k, v in pixel_summary.items()] + analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( + self.concat_to_dict(LABEL_STATS.IMAGE_INT, data), dim=axis) + + analysis[LABEL_STATS.LABEL] = [] + for label_id in unique_label: + stats = {} + for key in [LABEL_STATS.IMAGE_INT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: + stats[key] = self.ops[key].evaluate(self.concat_label_to_dict(label_id, key, data), dim=axis) + analysis[LABEL_STATS.LABEL].append(stats) + + return analysis + + +class AnalyzeEngine: + def __init__(self, data) -> None: + self.data = data + self.analyzers = {} + + def update(self, analyzer: Dict[str, callable]): + self.analyzers.update(analyzer) + + def __call__(self): + ret = {} + for k, analyzer in self.analyzers.items(): + if callable(analyzer): + ret.update({k: analyzer(self.data)}) + elif isinstance(analyzer, str): + ret.update({k: analyzer}) + return ret + +class SegAnalyzeCaseEngine(AnalyzeEngine): + def __init__(self, + data: Dict, + image_key: str, + label_key: str, + meta_post_fix: str = "_meta_dict", + device: str = "cuda", + ) -> None: + + keys = [image_key] if label_key is None else [image_key, label_key] + + transform_list = [ + LoadImaged(keys=keys), + EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + ToDeviced(keys=keys, device=device, non_blocking=True), + Orientationd(keys=keys, axcodes="RAS"), + EnsureTyped(keys=keys, data_type="tensor"), + Lambdad( + keys=label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x + ) if label_key else None, + SqueezeDimd(keys=["label"], dim=0) if label_key else None, + ] + + transform = Compose(list(filter(None, transform_list))) + + image_meta_key = image_key + meta_post_fix + label_meta_key = label_key + meta_post_fix if label_key else None + + super().__init__(data=transform(data)) + super().update({ + DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key]["filename_or_obj"], + DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key]["filename_or_obj"] if label_meta_key else "", + "image_stats": ImageStatsCaseAnalyzer(image_key, label_key), + "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), + "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), + }) + +class SegAnalyzeSummaryEngine(AnalyzeEngine): + def __init__(self, data: Dict, average=True): + super().__init__(data=data) + super().update({ + "image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average), + "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), + "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) + }) + diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 3aec2fd408..7c244874f2 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -18,7 +18,7 @@ import numpy as np import torch -from monai.apps.auto3dseg.data_analyzer import DataAnalyzer +from monai.apps.auto3dseg.data_analyzer_refractor import DataAnalyzer from monai.bundle import ConfigParser from monai.data import create_test_image_3d From decf6dd6d165142a5835179e2d89324566f36c39 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 22 Aug 2022 01:28:07 +0000 Subject: [PATCH 101/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../apps/auto3dseg/data_analyzer_refractor.py | 17 ++-- monai/auto3dseg/stats_collector.py | 98 +++++++++---------- 2 files changed, 53 insertions(+), 62 deletions(-) diff --git a/monai/apps/auto3dseg/data_analyzer_refractor.py b/monai/apps/auto3dseg/data_analyzer_refractor.py index 2219f8c568..6c0d3cd5ee 100644 --- a/monai/apps/auto3dseg/data_analyzer_refractor.py +++ b/monai/apps/auto3dseg/data_analyzer_refractor.py @@ -13,13 +13,10 @@ Step 1 of the AutoML pipeline. The dataset is analysized with this script. """ -import copy -import time import warnings from os import path -from typing import Any, Dict, List, Tuple, Union +from typing import Dict, Union -import numpy as np import torch from monai import data @@ -120,35 +117,35 @@ def __init__( if path.isfile(output_path): warnings.warn(f"File {output_path} already exists and will be overwritten.") logger.debug(f"{output_path} will be overwritten by a new datastat.") - + self.image_key = image_key self.label_key = label_key self.output_path = output_path self.IMAGE_ONLY = True if label_key is None else False - + self.datalist = datalist self.dataroot = dataroot self.device = device self.worker = worker def get_all_case_stats(self): - + keys = list(filter(None, [self.image_key, self.label_key])) files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) ds = data.Dataset(data=files) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) result = { - DATA_STATS.SUMMARY: {}, + DATA_STATS.SUMMARY: {}, DATA_STATS.BY_CASE: [], } for batch_data in self.dataset: case_engine = SegAnalyzeCaseEngine(batch_data[0], self.image_key, self.label_key, device=self.device) result[DATA_STATS.BY_CASE].append(case_engine()) - + summary_engine = SegAnalyzeSummaryEngine(result[DATA_STATS.BY_CASE]) result[DATA_STATS.SUMMARY] = summary_engine() - + return result diff --git a/monai/auto3dseg/stats_collector.py b/monai/auto3dseg/stats_collector.py index bd7d4225a8..8c90d58760 100644 --- a/monai/auto3dseg/stats_collector.py +++ b/monai/auto3dseg/stats_collector.py @@ -1,28 +1,24 @@ -from operator import concat -from pydoc import resolve -import re -from tkinter import E import numpy as np from abc import abstractmethod, ABC from copy import deepcopy from collections import UserDict import torch -from typing import Any, Dict, List, Tuple, Union, Optional +from typing import Any, Dict, List, Tuple from functools import partial -from monai.utils.enums import Enum, StrEnum +from monai.utils.enums import StrEnum from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std from monai.data.meta_tensor import MetaTensor -from monai.transforms import ( - Compose, - LoadImaged, - EnsureChannelFirstd, - Orientationd, - EnsureTyped, - Lambdad, - SqueezeDimd, +from monai.transforms import ( + Compose, + LoadImaged, + EnsureChannelFirstd, + Orientationd, + EnsureTyped, + Lambdad, + SqueezeDimd, CropForeground, ToDeviced, ToCupy, @@ -31,7 +27,6 @@ from monai.utils import min_version, optional_import from monai.utils.misc import label_union -from monai.config.type_definitions import TensorOrList measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) cp, has_cp = optional_import("cupy") @@ -139,7 +134,7 @@ class LABEL_STATS(StrEnum): LABEL_SHAPE = "shape" LABEL_NCOMP = "ncomponents" -class Operations(UserDict): +class Operations(UserDict): def evaluate(self, data: Any, **kwargs) -> dict: return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} @@ -160,7 +155,7 @@ def __init__(self) -> None: "percentile_90_0": ("percentile", 2), "percentile_99_5": ("percentile", 3), } - + def evaluate(self, data: Any, **kwargs) -> dict: ret = super().evaluate(data, **kwargs) for k, v in self.data_addon.items(): @@ -184,9 +179,9 @@ def __init__(self) -> None: "percentile_90_0": mean, "percentile_99_5": mean, } - + def evaluate(self, data: Any, **kwargs) -> dict: - return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} + return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} class Analyzer(transform.MapTransform, ABC): def __init__(self, report_format): @@ -212,11 +207,11 @@ def get_report_format(self): for k, v in self.report_format.items(): if issubclass(v.__class__, Operations): self.report_format[k] = self.resolve_ops(v) - else: + else: self.report_format[k] = v - + return self.report_format - + @abstractmethod def __call__(self, data): """Analyze the dict format dataset, return the summary report""" @@ -277,7 +272,7 @@ def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) - + def __call__(self, data): ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) @@ -318,7 +313,7 @@ def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp def update_ops_label_list(self, key, op): self.ops[key] = op # todo: add support for the list-type item print-out - + def __call__(self, data): ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] @@ -339,19 +334,19 @@ def __call__(self, data): shape_list, ncomponents = get_label_ccp(mask_index) label_dict[LABEL_STATS.LABEL_SHAPE] = shape_list label_dict[LABEL_STATS.LABEL_NCOMP] = ncomponents - + label_stats.append(label_dict) total_percent = np.sum(list(pixel_percentage.values())) for key, value in pixel_percentage.items(): pixel_percentage[key] = float(value / total_percent) - + analysis = deepcopy(self.get_report_format()) analysis[LABEL_STATS.LABEL_UID] = unique_label analysis[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] analysis[LABEL_STATS.LABEL] = label_stats analysis[LABEL_STATS.PIXEL_PCT] = pixel_percentage - + # logger.debug(f"Get label stats spent {time.time()-start}") return analysis @@ -374,11 +369,11 @@ def __init__(self, case_analyzer_name: str, average: bool = True): self.update_ops(IMAGE_STATS.CROPPED_SHAPE, SampleOperations()) self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - - + + def concat_np(self, key: str, data): return np.concatenate([[np.array(d[self.case_analyzer_name][key]) for d in data]]) - + def concat_to_dict(self, key: str, ld_data): """ Pinpointing the key in data structure: list of dicts and concat the value @@ -388,12 +383,12 @@ def concat_to_dict(self, key: str, ld_data): key_values = {} for k in values[0][0]: key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - + return key_values def __call__(self, data): analysis = deepcopy(self.get_report_format()) - + axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) for key in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: analysis[key] = self.ops[key].evaluate(self.concat_np(key, data), dim=axis) @@ -415,7 +410,7 @@ def __init__(self, case_analyzer_name: str, average=True): } super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - + def concat_to_dict(self, key: str, ld_data): """ Pinpointing the key in data structure: list of dicts and concat the value @@ -425,16 +420,16 @@ def concat_to_dict(self, key: str, ld_data): key_values = {} for k in values[0][0]: key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - + return key_values - + def __call__(self, data): analysis = deepcopy(self.get_report_format()) axis = None if self.summary_average else 0 analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( self.concat_to_dict(IMAGE_STATS.INTENSITY, data), dim=axis) - - + + return analysis @@ -469,11 +464,11 @@ def concat_to_dict(self, key: str, data): key_values = {} for k in values[0][0]: key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - + return key_values def concat_label_to_dict(self, label_id: int, key: str, data): - + values = [] for d in data: if label_id in d[self.case_analyzer_name][LABEL_STATS.LABEL_UID]: @@ -496,24 +491,24 @@ def concat_label_to_dict(self, label_id: int, key: str, data): def __call__(self, data): analysis = deepcopy(self.get_report_format()) - + unique_label = label_union(self.concat_np(LABEL_STATS.LABEL_UID, data)) pixel_summary = self.concat_ldd(LABEL_STATS.PIXEL_PCT, data) - + axis = None if self.summary_average else 0 analysis[LABEL_STATS.LABEL_UID] = unique_label analysis[LABEL_STATS.PIXEL_PCT] = [{k: mean(v)} for k, v in pixel_summary.items()] analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( self.concat_to_dict(LABEL_STATS.IMAGE_INT, data), dim=axis) - + analysis[LABEL_STATS.LABEL] = [] for label_id in unique_label: stats = {} for key in [LABEL_STATS.IMAGE_INT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: stats[key] = self.ops[key].evaluate(self.concat_label_to_dict(label_id, key, data), dim=axis) analysis[LABEL_STATS.LABEL].append(stats) - + return analysis @@ -521,13 +516,13 @@ class AnalyzeEngine: def __init__(self, data) -> None: self.data = data self.analyzers = {} - + def update(self, analyzer: Dict[str, callable]): self.analyzers.update(analyzer) def __call__(self): ret = {} - for k, analyzer in self.analyzers.items(): + for k, analyzer in self.analyzers.items(): if callable(analyzer): ret.update({k: analyzer(self.data)}) elif isinstance(analyzer, str): @@ -535,20 +530,20 @@ def __call__(self): return ret class SegAnalyzeCaseEngine(AnalyzeEngine): - def __init__(self, + def __init__(self, data: Dict, - image_key: str, - label_key: str, + image_key: str, + label_key: str, meta_post_fix: str = "_meta_dict", device: str = "cuda", ) -> None: - + keys = [image_key] if label_key is None else [image_key, label_key] transform_list = [ LoadImaged(keys=keys), EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - ToDeviced(keys=keys, device=device, non_blocking=True), + ToDeviced(keys=keys, device=device, non_blocking=True), Orientationd(keys=keys, axcodes="RAS"), EnsureTyped(keys=keys, data_type="tensor"), Lambdad( @@ -558,7 +553,7 @@ def __init__(self, ] transform = Compose(list(filter(None, transform_list))) - + image_meta_key = image_key + meta_post_fix label_meta_key = label_key + meta_post_fix if label_key else None @@ -579,4 +574,3 @@ def __init__(self, data: Dict, average=True): "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) }) - From 6b2f99dd82edf25244de56ecd72bd6bc5a1c395c Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Mon, 22 Aug 2022 12:39:55 +0800 Subject: [PATCH 102/150] refractor: break into smaller scripts Signed-off-by: Mingxin Zheng --- monai/{apps => }/auto3dseg/__init__.py | 2 - monai/{apps => }/auto3dseg/__main__.py | 0 monai/auto3dseg/analyze_engine.py | 101 +++++++ .../{stats_collector.py => analyzer.py} | 284 ++---------------- .../data_analyzer.py} | 8 +- monai/auto3dseg/operations.py | 64 ++++ monai/auto3dseg/utils.py | 94 ++++++ monai/utils/enums.py | 32 ++ tests/test_auto3dseg.py | 17 +- 9 files changed, 331 insertions(+), 271 deletions(-) rename monai/{apps => }/auto3dseg/__init__.py (93%) rename monai/{apps => }/auto3dseg/__main__.py (100%) create mode 100644 monai/auto3dseg/analyze_engine.py rename monai/auto3dseg/{stats_collector.py => analyzer.py} (60%) rename monai/{apps/auto3dseg/data_analyzer_refractor.py => auto3dseg/data_analyzer.py} (96%) create mode 100644 monai/auto3dseg/operations.py create mode 100644 monai/auto3dseg/utils.py diff --git a/monai/apps/auto3dseg/__init__.py b/monai/auto3dseg/__init__.py similarity index 93% rename from monai/apps/auto3dseg/__init__.py rename to monai/auto3dseg/__init__.py index 1e717be7b7..1e97f89407 100644 --- a/monai/apps/auto3dseg/__init__.py +++ b/monai/auto3dseg/__init__.py @@ -8,5 +8,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -from .data_analyzer import DataAnalyzer diff --git a/monai/apps/auto3dseg/__main__.py b/monai/auto3dseg/__main__.py similarity index 100% rename from monai/apps/auto3dseg/__main__.py rename to monai/auto3dseg/__main__.py diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py new file mode 100644 index 0000000000..59bf696cc5 --- /dev/null +++ b/monai/auto3dseg/analyze_engine.py @@ -0,0 +1,101 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import torch + +from typing import Dict + +from monai.auto3dseg.analyzer import ( + ImageStatsCaseAnalyzer, + FgImageStatsCasesAnalyzer, + LabelStatsCaseAnalyzer, + ImageStatsSummaryAnalyzer, + FgImageStatsSummaryAnalyzer, + LabelStatsSummaryAnalyzer, +) + +from monai.transforms import ( + Compose, + LoadImaged, + EnsureChannelFirstd, + Orientationd, + EnsureTyped, + Lambdad, + SqueezeDimd, + ToDeviced, +) + +from monai.utils.enums import DATA_STATS + + +class AnalyzeEngine: + def __init__(self, data) -> None: + self.data = data + self.analyzers = {} + + def update(self, analyzer: Dict[str, callable]): + self.analyzers.update(analyzer) + + def __call__(self): + ret = {} + for k, analyzer in self.analyzers.items(): + if callable(analyzer): + ret.update({k: analyzer(self.data)}) + elif isinstance(analyzer, str): + ret.update({k: analyzer}) + return ret + +class SegAnalyzeCaseEngine(AnalyzeEngine): + def __init__(self, + data: Dict, + image_key: str, + label_key: str, + meta_post_fix: str = "_meta_dict", + device: str = "cuda", + ) -> None: + + keys = [image_key] if label_key is None else [image_key, label_key] + + transform_list = [ + LoadImaged(keys=keys), + EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + ToDeviced(keys=keys, device=device, non_blocking=True), + Orientationd(keys=keys, axcodes="RAS"), + EnsureTyped(keys=keys, data_type="tensor"), + Lambdad( + keys=label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x + ) if label_key else None, + SqueezeDimd(keys=["label"], dim=0) if label_key else None, + ] + + transform = Compose(list(filter(None, transform_list))) + + image_meta_key = image_key + meta_post_fix + label_meta_key = label_key + meta_post_fix if label_key else None + + super().__init__(data=transform(data)) + super().update({ + DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key]["filename_or_obj"], + DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key]["filename_or_obj"] if label_meta_key else "", + "image_stats": ImageStatsCaseAnalyzer(image_key, label_key), + "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), + "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), + }) + +class SegAnalyzeSummaryEngine(AnalyzeEngine): + def __init__(self, data: Dict, average=True): + super().__init__(data=data) + super().update({ + "image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average), + "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), + "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) + }) + diff --git a/monai/auto3dseg/stats_collector.py b/monai/auto3dseg/analyzer.py similarity index 60% rename from monai/auto3dseg/stats_collector.py rename to monai/auto3dseg/analyzer.py index bd7d4225a8..9287c2e3c3 100644 --- a/monai/auto3dseg/stats_collector.py +++ b/monai/auto3dseg/analyzer.py @@ -1,192 +1,26 @@ -from operator import concat -from pydoc import resolve -import re -from tkinter import E +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import numpy as np +import torch + from abc import abstractmethod, ABC from copy import deepcopy -from collections import UserDict -import torch -from typing import Any, Dict, List, Tuple, Union, Optional -from functools import partial -from monai.utils.enums import Enum, StrEnum -from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std - -from monai.data.meta_tensor import MetaTensor - -from monai.transforms import ( - Compose, - LoadImaged, - EnsureChannelFirstd, - Orientationd, - EnsureTyped, - Lambdad, - SqueezeDimd, - CropForeground, - ToDeviced, - ToCupy, - transform, -) - -from monai.utils import min_version, optional_import +from monai.transforms import transform from monai.utils.misc import label_union -from monai.config.type_definitions import TensorOrList - -measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) -cp, has_cp = optional_import("cupy") -cucim, has_cucim = optional_import("cucim") - -def get_foreground_image(image: MetaTensor) -> np.ndarray: - """ - Get a foreground image by removing all-zero rectangles on the edges of the image - Note for the developer: update select_fn if the foreground is defined differently. - - Args: - image: ndarray image to segment. - - Returns: - ndarray of foreground image by removing all-zero edges. - - Notes: - the size of the ouput is smaller than the input. - """ - copper = CropForeground(select_fn=lambda x: x > 0) - image_foreground = copper(image) - return image_foreground - -def get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: - """ - Get foreground image pixel values and mask out the non-labeled area. - - Args - image: ndarray image to segment. - label: ndarray the image input and annotated with class IDs. - - Returns: - 1D array of foreground image with label > 0 - """ - label_foreground = MetaTensor(image[label > 0]) - return label_foreground - -def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[Any], int]: - """ - Find all connected components and their bounding shape. Backend can be cuPy/cuCIM or Numpy - depending on the hardware. - - Args: - mask_index: a binary mask - use_gpu: a switch to use GPU/CUDA or not. If GPU is unavailable, CPU will be used - regardless of this setting - - """ - shape_list = [] - if mask_index.device.type == "cuda" and has_cp and has_cucim and use_gpu: - mask_cupy = ToCupy()(mask_index.short()) - labeled = cucim.skimage.measure.label(mask_cupy) - vals = cp.unique(labeled[cp.nonzero(labeled)]) - - for ncomp in vals: - comp_idx = cp.argwhere(labeled == ncomp) - comp_idx_min = cp.min(comp_idx, axis=0).tolist() - comp_idx_max = cp.max(comp_idx, axis=0).tolist() - bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] - shape_list.append(bbox_shape) - ncomponents = len(vals) - - elif has_measure: - labeled, ncomponents = measure_np.label(mask_index.data.cpu().numpy(), background=-1, return_num=True) - for ncomp in range(1, ncomponents + 1): - comp_idx = np.argwhere(labeled == ncomp) - comp_idx_min = np.min(comp_idx, axis=0).tolist() - comp_idx_max = np.max(comp_idx, axis=0).tolist() - bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] - shape_list.append(bbox_shape) - else: - raise RuntimeError("Cannot find one of the following required dependencies: {cuPy+cuCIM} or {scikit-image}") - - return shape_list, ncomponents - - -class DATA_STATS(StrEnum): - """ - A set of keys for dataset statistical analysis module - - """ - SUMMARY = "stats_summary" - BY_CASE = "stats_by_cases" - BY_CASE_IMAGE_PATH = "image" - BY_CASE_LABEL_PATH = "label" - -class IMAGE_STATS(StrEnum): - """ - - """ - SHAPE = "shape" - CHANNELS = "channels" - CROPPED_SHAPE = "cropped_shape" - SPACING = "spacing" - INTENSITY = "intensity" - -class LABEL_STATS(StrEnum): - """ - - """ - LABEL_UID = "labels" - PIXEL_PCT = "pixel_percentage" - IMAGE_INT = "image_intensity" - LABEL = "label" - LABEL_SHAPE = "shape" - LABEL_NCOMP = "ncomponents" - -class Operations(UserDict): - def evaluate(self, data: Any, **kwargs) -> dict: - return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} - -class SampleOperations(Operations): - # todo: missing value/nan/inf - def __init__(self) -> None: - self.data = { - "max": max, - "mean": mean, - "median": median, - "min": min, - "stdev": std, - "percentile": partial(percentile, q=[0.5, 10, 90, 99.5]) - } - self.data_addon = { - "percentile_00_5": ("percentile", 0), - "percentile_10_0": ("percentile", 1), - "percentile_90_0": ("percentile", 2), - "percentile_99_5": ("percentile", 3), - } - - def evaluate(self, data: Any, **kwargs) -> dict: - ret = super().evaluate(data, **kwargs) - for k, v in self.data_addon.items(): - cache = v[0] - idx = v[1] - if isinstance(v, tuple) and cache in ret: - ret.update({k: ret[cache][idx]}) +from monai.utils.enums import IMAGE_STATS, LABEL_STATS +from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp +from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations - return ret - -class SummaryOperations(Operations): - def __init__(self) -> None: - self.data = { - "max": max, - "mean": mean, - "median": mean, - "min": min, - "stdev": mean, - "percentile_00_5": mean, - "percentile_10_0": mean, - "percentile_90_0": mean, - "percentile_99_5": mean, - } - - def evaluate(self, data: Any, **kwargs) -> dict: - return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} class Analyzer(transform.MapTransform, ABC): def __init__(self, report_format): @@ -355,7 +189,6 @@ def __call__(self, data): # logger.debug(f"Get label stats spent {time.time()-start}") return analysis - class ImageStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average: bool = True): self.case_analyzer_name = case_analyzer_name @@ -404,7 +237,6 @@ def __call__(self, data): return analysis - class FgImageStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average=True): self.case_analyzer_name = case_analyzer_name @@ -437,8 +269,6 @@ def __call__(self, data): return analysis - - class LabelStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = True): self.case_analyzer_name = case_analyzer_name @@ -460,6 +290,14 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = self.update_ops(LABEL_STATS.LABEL_SHAPE, SampleOperations()) self.update_ops(LABEL_STATS.LABEL_NCOMP, SampleOperations()) + def concat_np(self, key: str, data): + return np.concatenate([[np.array(d[self.case_analyzer_name][key]) for d in data]]) + + def concat_label_np(self, label_id, key: str, data): + values = [d[self.case_analyzer_name][key] for d in data] + # analysis is a list of list + return np.concatenate([[val[label_id] for val in values if label_id in val]]) #gpu/cpu issue + def concat_to_dict(self, key: str, data): """ Pinpointing the key in data structure: list of dicts and concat the value @@ -498,12 +336,15 @@ def __call__(self, data): analysis = deepcopy(self.get_report_format()) unique_label = label_union(self.concat_np(LABEL_STATS.LABEL_UID, data)) - pixel_summary = self.concat_ldd(LABEL_STATS.PIXEL_PCT, data) + + pixel_summary = {} + for label_id in unique_label: + pixel_summary.update({label_id: self.concat_label_np(label_id, LABEL_STATS.PIXEL_PCT, data)}) axis = None if self.summary_average else 0 analysis[LABEL_STATS.LABEL_UID] = unique_label - analysis[LABEL_STATS.PIXEL_PCT] = [{k: mean(v)} for k, v in pixel_summary.items()] + analysis[LABEL_STATS.PIXEL_PCT] = [{k: np.mean(v)} for k, v in pixel_summary.items()] analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( self.concat_to_dict(LABEL_STATS.IMAGE_INT, data), dim=axis) @@ -515,68 +356,3 @@ def __call__(self, data): analysis[LABEL_STATS.LABEL].append(stats) return analysis - - -class AnalyzeEngine: - def __init__(self, data) -> None: - self.data = data - self.analyzers = {} - - def update(self, analyzer: Dict[str, callable]): - self.analyzers.update(analyzer) - - def __call__(self): - ret = {} - for k, analyzer in self.analyzers.items(): - if callable(analyzer): - ret.update({k: analyzer(self.data)}) - elif isinstance(analyzer, str): - ret.update({k: analyzer}) - return ret - -class SegAnalyzeCaseEngine(AnalyzeEngine): - def __init__(self, - data: Dict, - image_key: str, - label_key: str, - meta_post_fix: str = "_meta_dict", - device: str = "cuda", - ) -> None: - - keys = [image_key] if label_key is None else [image_key, label_key] - - transform_list = [ - LoadImaged(keys=keys), - EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - ToDeviced(keys=keys, device=device, non_blocking=True), - Orientationd(keys=keys, axcodes="RAS"), - EnsureTyped(keys=keys, data_type="tensor"), - Lambdad( - keys=label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x - ) if label_key else None, - SqueezeDimd(keys=["label"], dim=0) if label_key else None, - ] - - transform = Compose(list(filter(None, transform_list))) - - image_meta_key = image_key + meta_post_fix - label_meta_key = label_key + meta_post_fix if label_key else None - - super().__init__(data=transform(data)) - super().update({ - DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key]["filename_or_obj"], - DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key]["filename_or_obj"] if label_meta_key else "", - "image_stats": ImageStatsCaseAnalyzer(image_key, label_key), - "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), - "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), - }) - -class SegAnalyzeSummaryEngine(AnalyzeEngine): - def __init__(self, data: Dict, average=True): - super().__init__(data=data) - super().update({ - "image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average), - "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), - "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) - }) - diff --git a/monai/apps/auto3dseg/data_analyzer_refractor.py b/monai/auto3dseg/data_analyzer.py similarity index 96% rename from monai/apps/auto3dseg/data_analyzer_refractor.py rename to monai/auto3dseg/data_analyzer.py index 2219f8c568..cb22ad7eb9 100644 --- a/monai/apps/auto3dseg/data_analyzer_refractor.py +++ b/monai/auto3dseg/data_analyzer.py @@ -9,10 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -""" -Step 1 of the AutoML pipeline. The dataset is analysized with this script. -""" - import copy import time import warnings @@ -39,9 +35,9 @@ __all__ = ["DataAnalyzer"] -from monai.auto3dseg.stats_collector import DATA_STATS +from monai.auto3dseg.analyze_engine import DATA_STATS -from monai.auto3dseg.stats_collector import SegAnalyzeCaseEngine, SegAnalyzeSummaryEngine +from monai.auto3dseg.analyze_engine import SegAnalyzeCaseEngine, SegAnalyzeSummaryEngine diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py new file mode 100644 index 0000000000..3114ea8671 --- /dev/null +++ b/monai/auto3dseg/operations.py @@ -0,0 +1,64 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from collections import UserDict +from functools import partial +from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std +from typing import Any + +class Operations(UserDict): + def evaluate(self, data: Any, **kwargs) -> dict: + return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} + +class SampleOperations(Operations): + # todo: missing value/nan/inf + def __init__(self) -> None: + self.data = { + "max": max, + "mean": mean, + "median": median, + "min": min, + "stdev": std, + "percentile": partial(percentile, q=[0.5, 10, 90, 99.5]) + } + self.data_addon = { + "percentile_00_5": ("percentile", 0), + "percentile_10_0": ("percentile", 1), + "percentile_90_0": ("percentile", 2), + "percentile_99_5": ("percentile", 3), + } + + def evaluate(self, data: Any, **kwargs) -> dict: + ret = super().evaluate(data, **kwargs) + for k, v in self.data_addon.items(): + cache = v[0] + idx = v[1] + if isinstance(v, tuple) and cache in ret: + ret.update({k: ret[cache][idx]}) + + return ret + +class SummaryOperations(Operations): + def __init__(self) -> None: + self.data = { + "max": max, + "mean": mean, + "median": mean, + "min": min, + "stdev": mean, + "percentile_00_5": mean, + "percentile_10_0": mean, + "percentile_90_0": mean, + "percentile_99_5": mean, + } + + def evaluate(self, data: Any, **kwargs) -> dict: + return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py new file mode 100644 index 0000000000..24edc4ebfc --- /dev/null +++ b/monai/auto3dseg/utils.py @@ -0,0 +1,94 @@ +import numpy as np + +from typing import Any, List, Tuple +from monai.data.meta_tensor import MetaTensor +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from monai.transforms import CropForeground, ToCupy +from monai.utils import min_version, optional_import + +measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) +cp, has_cp = optional_import("cupy") +cucim, has_cucim = optional_import("cucim") + +def get_foreground_image(image: MetaTensor): + """ + Get a foreground image by removing all-zero rectangles on the edges of the image + Note for the developer: update select_fn if the foreground is defined differently. + + Args: + image: ndarray image to segment. + + Returns: + ndarray of foreground image by removing all-zero edges. + + Notes: + the size of the ouput is smaller than the input. + """ + # todo(mingxin): type check + copper = CropForeground(select_fn=lambda x: x > 0) + image_foreground = copper(image) + return image_foreground + +def get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: + """ + Get foreground image pixel values and mask out the non-labeled area. + + Args + image: ndarray image to segment. + label: ndarray the image input and annotated with class IDs. + + Returns: + 1D array of foreground image with label > 0 + """ + # todo(mingxin): type check + label_foreground = MetaTensor(image[label > 0]) + return label_foreground + +def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[Any], int]: + """ + Find all connected components and their bounding shape. Backend can be cuPy/cuCIM or Numpy + depending on the hardware. + + Args: + mask_index: a binary mask + use_gpu: a switch to use GPU/CUDA or not. If GPU is unavailable, CPU will be used + regardless of this setting + + """ + # todo(mingxin): type check + shape_list = [] + if mask_index.device.type == "cuda" and has_cp and has_cucim and use_gpu: + mask_cupy = ToCupy()(mask_index.short()) + labeled = cucim.skimage.measure.label(mask_cupy) + vals = cp.unique(labeled[cp.nonzero(labeled)]) + + for ncomp in vals: + comp_idx = cp.argwhere(labeled == ncomp) + comp_idx_min = cp.min(comp_idx, axis=0).tolist() + comp_idx_max = cp.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + shape_list.append(bbox_shape) + ncomponents = len(vals) + + elif has_measure: + labeled, ncomponents = measure_np.label(mask_index.data.cpu().numpy(), background=-1, return_num=True) + for ncomp in range(1, ncomponents + 1): + comp_idx = np.argwhere(labeled == ncomp) + comp_idx_min = np.min(comp_idx, axis=0).tolist() + comp_idx_max = np.max(comp_idx, axis=0).tolist() + bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] + shape_list.append(bbox_shape) + else: + raise RuntimeError("Cannot find one of the following required dependencies: {cuPy+cuCIM} or {scikit-image}") + + return shape_list, ncomponents \ No newline at end of file diff --git a/monai/utils/enums.py b/monai/utils/enums.py index 9082425761..ea6bef620f 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -483,3 +483,35 @@ class EngineStatsKeys(StrEnum): TOTAL_ITERATIONS = "total_iterations" BEST_VALIDATION_EPOCH = "best_validation_epoch" BEST_VALIDATION_METRTC = "best_validation_metric" + + +class DATA_STATS(StrEnum): + """ + A set of keys for dataset statistical analysis module + + """ + SUMMARY = "stats_summary" + BY_CASE = "stats_by_cases" + BY_CASE_IMAGE_PATH = "image" + BY_CASE_LABEL_PATH = "label" + +class IMAGE_STATS(StrEnum): + """ + + """ + SHAPE = "shape" + CHANNELS = "channels" + CROPPED_SHAPE = "cropped_shape" + SPACING = "spacing" + INTENSITY = "intensity" + +class LABEL_STATS(StrEnum): + """ + + """ + LABEL_UID = "labels" + PIXEL_PCT = "pixel_percentage" + IMAGE_INT = "image_intensity" + LABEL = "label" + LABEL_SHAPE = "shape" + LABEL_NCOMP = "ncomponents" \ No newline at end of file diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 7c244874f2..fc94517a6e 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -18,7 +18,7 @@ import numpy as np import torch -from monai.apps.auto3dseg.data_analyzer_refractor import DataAnalyzer +from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.bundle import ConfigParser from monai.data import create_test_image_3d @@ -35,7 +35,6 @@ ], } - class TestDataAnalyzer(unittest.TestCase): def setUp(self): self.test_dir = tempfile.TemporaryDirectory() @@ -65,13 +64,13 @@ def test_data_analyzer(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - def test_data_analyzer_image_only(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer( - fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None - ) - datastat = analyser.get_all_case_stats() + # def test_data_analyzer_image_only(self): + # dataroot = self.test_dir.name + # yaml_fpath = path.join(dataroot, "data_stats.yaml") + # analyser = DataAnalyzer( + # fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None + # ) + # datastat = analyser.get_all_case_stats() assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) From 5e352e6b9409d4fda046b771efea259c557b6e29 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Mon, 22 Aug 2022 14:56:23 +0800 Subject: [PATCH 103/150] refractor remove duplicated function defs Signed-off-by: Mingxin Zheng --- monai/README.md | 2 + monai/__init__.py | 1 + monai/auto3dseg/analyze_engine.py | 6 +-- monai/auto3dseg/analyzer.py | 41 ++++++++--------- monai/auto3dseg/utils.py | 75 ++++++++++++++++++++++++++++++- monai/utils/misc.py | 4 +- tests/test_auto3dseg.py | 2 +- 7 files changed, 101 insertions(+), 30 deletions(-) diff --git a/monai/README.md b/monai/README.md index 64af824b1d..2a183803c7 100644 --- a/monai/README.md +++ b/monai/README.md @@ -2,6 +2,8 @@ * **apps**: high level medical domain specific deep learning applications. +* **auto3dseg**: modules to run the Auto3D segmentation pipeline. + * **bundle**: components to build the portable self-descriptive model bundle. * **config**: for system configuration and diagnostic output. diff --git a/monai/__init__.py b/monai/__init__.py index 6bec0b1084..a8a450a2f5 100644 --- a/monai/__init__.py +++ b/monai/__init__.py @@ -49,6 +49,7 @@ __all__ = [ "apps", + "auto3dseg", "bundle", "config", "data", diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index 59bf696cc5..da1c4ba21d 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -34,7 +34,7 @@ ) from monai.utils.enums import DATA_STATS - +from monai.utils.misc import ImageMetaKey class AnalyzeEngine: def __init__(self, data) -> None: @@ -83,8 +83,8 @@ def __init__(self, super().__init__(data=transform(data)) super().update({ - DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key]["filename_or_obj"], - DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key]["filename_or_obj"] if label_meta_key else "", + DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key][ImageMetaKey.FILENAME_OR_OBJ], + DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key][ImageMetaKey.FILENAME_OR_OBJ] if label_meta_key else "", "image_stats": ImageStatsCaseAnalyzer(image_key, label_key), "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 9287c2e3c3..e19dde4d4d 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -18,9 +18,10 @@ from monai.transforms import transform from monai.utils.misc import label_union from monai.utils.enums import IMAGE_STATS, LABEL_STATS -from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp +from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp, concat_val_to_np from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations +from typing import Any, Dict class Analyzer(transform.MapTransform, ABC): def __init__(self, report_format): @@ -191,7 +192,7 @@ def __call__(self, data): class ImageStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average: bool = True): - self.case_analyzer_name = case_analyzer_name + self.case = case_analyzer_name self.summary_average = average report_format = { IMAGE_STATS.SHAPE: None, @@ -208,15 +209,12 @@ def __init__(self, case_analyzer_name: str, average: bool = True): self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - - def concat_np(self, key: str, data): - return np.concatenate([[np.array(d[self.case_analyzer_name][key]) for d in data]]) def concat_to_dict(self, key: str, ld_data): """ Pinpointing the key in data structure: list of dicts and concat the value """ - values = [d[self.case_analyzer_name][key] for d in ld_data] # ld: list of dicts + values = [d[self.case][key] for d in ld_data] # ld: list of dicts # analysis is a list of list key_values = {} for k in values[0][0]: @@ -228,8 +226,12 @@ def __call__(self, data): analysis = deepcopy(self.get_report_format()) axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) - for key in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: - analysis[key] = self.ops[key].evaluate(self.concat_np(key, data), dim=axis) + analysis[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate( + concat_val_to_np(data, [self.case, IMAGE_STATS.SHAPE]), dim=axis) + analysis[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate( + concat_val_to_np(data, [self.case, IMAGE_STATS.CROPPED_SHAPE]), dim=axis) + analysis[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate( + concat_val_to_np(data, [self.case, IMAGE_STATS.SPACING]), dim=axis) axis = None if self.summary_average else 0 analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( @@ -239,7 +241,7 @@ def __call__(self, data): class FgImageStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average=True): - self.case_analyzer_name = case_analyzer_name + self.case = case_analyzer_name self.summary_average = average report_format = { @@ -252,7 +254,7 @@ def concat_to_dict(self, key: str, ld_data): """ Pinpointing the key in data structure: list of dicts and concat the value """ - values = [d[self.case_analyzer_name][key] for d in ld_data] # ld: list of dicts + values = [d[self.case][key] for d in ld_data] # ld: list of dicts # analysis is a list of list key_values = {} for k in values[0][0]: @@ -266,12 +268,11 @@ def __call__(self, data): analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( self.concat_to_dict(IMAGE_STATS.INTENSITY, data), dim=axis) - return analysis class LabelStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = True): - self.case_analyzer_name = case_analyzer_name + self.case = case_analyzer_name self.summary_average = average self.do_ccp = do_ccp @@ -290,11 +291,8 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = self.update_ops(LABEL_STATS.LABEL_SHAPE, SampleOperations()) self.update_ops(LABEL_STATS.LABEL_NCOMP, SampleOperations()) - def concat_np(self, key: str, data): - return np.concatenate([[np.array(d[self.case_analyzer_name][key]) for d in data]]) - def concat_label_np(self, label_id, key: str, data): - values = [d[self.case_analyzer_name][key] for d in data] + values = [d[self.case][key] for d in data] # analysis is a list of list return np.concatenate([[val[label_id] for val in values if label_id in val]]) #gpu/cpu issue @@ -302,7 +300,7 @@ def concat_to_dict(self, key: str, data): """ Pinpointing the key in data structure: list of dicts and concat the value """ - values = [d[self.case_analyzer_name][key] for d in data] + values = [d[self.case][key] for d in data] # analysis is a list of list key_values = {} for k in values[0][0]: @@ -311,12 +309,11 @@ def concat_to_dict(self, key: str, data): return key_values def concat_label_to_dict(self, label_id: int, key: str, data): - values = [] for d in data: - if label_id in d[self.case_analyzer_name][LABEL_STATS.LABEL_UID]: - idx = d[self.case_analyzer_name][LABEL_STATS.LABEL_UID].index(label_id) - values.append(d[self.case_analyzer_name][LABEL_STATS.LABEL][idx][key]) + if label_id in d[self.case][LABEL_STATS.LABEL_UID]: + idx = d[self.case][LABEL_STATS.LABEL_UID].index(label_id) + values.append(d[self.case][LABEL_STATS.LABEL][idx][key]) if isinstance(values[0], list): if isinstance(values[0][0], list): @@ -335,7 +332,7 @@ def concat_label_to_dict(self, label_id: int, key: str, data): def __call__(self, data): analysis = deepcopy(self.get_report_format()) - unique_label = label_union(self.concat_np(LABEL_STATS.LABEL_UID, data)) + unique_label = label_union(concat_val_to_np(data, [self.case, LABEL_STATS.LABEL_UID], flatten=True)) pixel_summary = {} for label_id in unique_label: diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 24edc4ebfc..57551a846a 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -1,6 +1,7 @@ +from multiprocessing.sharedctypes import Value import numpy as np -from typing import Any, List, Tuple +from typing import Any, List, Tuple, Union from monai.data.meta_tensor import MetaTensor # Copyright (c) MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); @@ -13,9 +14,23 @@ # See the License for the specific language governing permissions and # limitations under the License. +import torch + +from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import +from numbers import Number + +from typing import Dict, List + +__all__ = [ + "get_foreground_image", + "get_foreground_label", + "get_label_ccp", + "concat_val_to_np", +] + measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) cp, has_cp = optional_import("cupy") cucim, has_cucim = optional_import("cucim") @@ -39,6 +54,7 @@ def get_foreground_image(image: MetaTensor): image_foreground = copper(image) return image_foreground + def get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: """ Get foreground image pixel values and mask out the non-labeled area. @@ -54,6 +70,7 @@ def get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: label_foreground = MetaTensor(image[label > 0]) return label_foreground + def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[Any], int]: """ Find all connected components and their bounding shape. Backend can be cuPy/cuCIM or Numpy @@ -91,4 +108,58 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An else: raise RuntimeError("Cannot find one of the following required dependencies: {cuPy+cuCIM} or {scikit-image}") - return shape_list, ncomponents \ No newline at end of file + return shape_list, ncomponents + + +def concat_val_to_np( + data_list: List[Dict], + keys: List[Union[str, int]], + flatten=False + ): + """ + Get the nested value in a list of dictionary that shares the same structure + + Args: + key1: the first key in the dict. + key2: the second key nested under the first. + data_list: a list of dictionary {key1: {key2: np.ndarray}}. + flatten: if True, numbers are flattened before concat + + Returns: + nd.array of concatanated array + + """ + + np_list = [] + for data in data_list: + from monai.bundle.config_parser import ConfigParser + from monai.bundle.utils import ID_SEP_KEY + + parser = ConfigParser(data) + for i, key in enumerate(keys): + if isinstance(key, int): + keys[i] = str(key) + + val = parser.get(ID_SEP_KEY.join(keys)) + + if val is None: + raise AttributeError(f"{keys} is not nested in the dictionary") + elif isinstance(val, list): # only list of number/ndarray/tensor + if any(isinstance(v, (torch.Tensor, MetaTensor)) for v in val): + raise NotImplementedError('list of MetaTensor is not supported for concat') + np_list.append(np.array(val)) + elif isinstance(val, (torch.Tensor)): + np_list.append(val.cpu().nump()) + elif isinstance(val, np.ndarray): + np_list.appen(val) + elif isinstance(val, Number): + np_list.append(np.array(val)) + else: + raise NotImplementedError(f'{val.__class__} concat is not supported.' ) + + if flatten: + ret = np.concatenate(np_list, axis=None) # when axis is None, numbers are flatten before use + else: + ret = np.concatenate([np_list]) + + return ret diff --git a/monai/utils/misc.py b/monai/utils/misc.py index f883053656..8e23d3c6cb 100644 --- a/monai/utils/misc.py +++ b/monai/utils/misc.py @@ -21,7 +21,7 @@ from collections.abc import Iterable from distutils.util import strtobool from pathlib import Path -from typing import Any, Callable, List, Optional, Sequence, Tuple, Union, cast +from typing import Any, Callable, List, Optional, Sequence, Tuple, Union, cast, Dict import numpy as np import torch @@ -483,4 +483,4 @@ def label_union(x: List) -> List: Returns a list showing the union (the union the class IDs) """ - return list(set.union(*[set(np.array(_).tolist()) for _ in x])) + return list(set.union(set(np.array(x)))) \ No newline at end of file diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index fc94517a6e..77ee56eeac 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -72,7 +72,7 @@ def test_data_analyzer(self): # ) # datastat = analyser.get_all_case_stats() - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + # assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) def test_data_analyzer_from_yaml(self): dataroot = self.test_dir.name From f9c26b475db00430484a86c51f7e97775559071b Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Mon, 22 Aug 2022 15:32:33 +0800 Subject: [PATCH 104/150] refactor remove duplicate function defs concat_np/concat_dict Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 37 ++++++++++------------------------- monai/auto3dseg/utils.py | 39 +++++++++++++++++++++++++++++++------ 2 files changed, 43 insertions(+), 33 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index e19dde4d4d..39288e1231 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -18,7 +18,7 @@ from monai.transforms import transform from monai.utils.misc import label_union from monai.utils.enums import IMAGE_STATS, LABEL_STATS -from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp, concat_val_to_np +from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp, concat_val_to_np, concat_val_to_formatted_dict from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations from typing import Any, Dict @@ -234,8 +234,9 @@ def __call__(self, data): concat_val_to_np(data, [self.case, IMAGE_STATS.SPACING]), dim=axis) axis = None if self.summary_average else 0 + op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - self.concat_to_dict(IMAGE_STATS.INTENSITY, data), dim=axis) + concat_val_to_formatted_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) return analysis @@ -249,24 +250,14 @@ def __init__(self, case_analyzer_name: str, average=True): } super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - - def concat_to_dict(self, key: str, ld_data): - """ - Pinpointing the key in data structure: list of dicts and concat the value - """ - values = [d[self.case][key] for d in ld_data] # ld: list of dicts - # analysis is a list of list - key_values = {} - for k in values[0][0]: - key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - - return key_values + def __call__(self, data): analysis = deepcopy(self.get_report_format()) axis = None if self.summary_average else 0 + op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - self.concat_to_dict(IMAGE_STATS.INTENSITY, data), dim=axis) + concat_val_to_formatted_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) return analysis @@ -291,22 +282,12 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = self.update_ops(LABEL_STATS.LABEL_SHAPE, SampleOperations()) self.update_ops(LABEL_STATS.LABEL_NCOMP, SampleOperations()) + def concat_label_np(self, label_id, key: str, data): values = [d[self.case][key] for d in data] # analysis is a list of list return np.concatenate([[val[label_id] for val in values if label_id in val]]) #gpu/cpu issue - def concat_to_dict(self, key: str, data): - """ - Pinpointing the key in data structure: list of dicts and concat the value - """ - values = [d[self.case][key] for d in data] - # analysis is a list of list - key_values = {} - for k in values[0][0]: - key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - - return key_values def concat_label_to_dict(self, label_id: int, key: str, data): values = [] @@ -342,9 +323,11 @@ def __call__(self, data): analysis[LABEL_STATS.LABEL_UID] = unique_label analysis[LABEL_STATS.PIXEL_PCT] = [{k: np.mean(v)} for k, v in pixel_summary.items()] + op_keys = analysis[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( - self.concat_to_dict(LABEL_STATS.IMAGE_INT, data), dim=axis) + concat_val_to_formatted_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis) + analysis[LABEL_STATS.LABEL] = [] for label_id in unique_label: stats = {} diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 57551a846a..0016382633 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -29,6 +29,7 @@ "get_foreground_label", "get_label_ccp", "concat_val_to_np", + "concat_val_to_formatted_dict", ] measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) @@ -117,13 +118,12 @@ def concat_val_to_np( flatten=False ): """ - Get the nested value in a list of dictionary that shares the same structure + Get the nested value in a list of dictionary that shares the same structure. Args: - key1: the first key in the dict. - key2: the second key nested under the first. data_list: a list of dictionary {key1: {key2: np.ndarray}}. - flatten: if True, numbers are flattened before concat + keys: a list of keys that records to path to the value in the dict elements. + flatten: if True, numbers are flattened before concat. Returns: nd.array of concatanated array @@ -148,8 +148,8 @@ def concat_val_to_np( if any(isinstance(v, (torch.Tensor, MetaTensor)) for v in val): raise NotImplementedError('list of MetaTensor is not supported for concat') np_list.append(np.array(val)) - elif isinstance(val, (torch.Tensor)): - np_list.append(val.cpu().nump()) + elif isinstance(val, (torch.Tensor, MetaTensor)): + np_list.append(val.cpu().numpy()) elif isinstance(val, np.ndarray): np_list.appen(val) elif isinstance(val, Number): @@ -163,3 +163,30 @@ def concat_val_to_np( ret = np.concatenate([np_list]) return ret + + +def concat_val_to_formatted_dict( + data_list: List[Dict], + keys: List[Union[str, int]], + op_keys: List[str], + **kwargs, + ): + """ + Get the nested value in a list of dictionary that shares the same structure iteratively on all op_keys. + It returns a dictionary with op_keys with the found values in nd.ndarray. + + Args: + data_list: a list of dictionary {key1: {key2: np.ndarray}}. + keys: a list of keys that records to path to the value in the dict elements. + flatten: if True, numbers are flattened before concat. + + Returns: + a dict with op_keys - nd.array of concatanated array pair + """ + + ret_dict = {} + for op_key in op_keys: + val = concat_val_to_np(data_list, keys + [0, op_key], **kwargs) + ret_dict.update({op_key: val}) + + return ret_dict From ae6029565034a59ceddc7cac555e5053c095a358 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 00:27:20 +0800 Subject: [PATCH 105/150] refractor unify numerics retrieval methods in utils Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 224 ++++++++++++++++++++-------------- monai/auto3dseg/utils.py | 69 ++++++----- monai/bundle/config_parser.py | 2 +- 3 files changed, 172 insertions(+), 123 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 39288e1231..ecd60669d9 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -18,45 +18,96 @@ from monai.transforms import transform from monai.utils.misc import label_union from monai.utils.enums import IMAGE_STATS, LABEL_STATS -from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp, concat_val_to_np, concat_val_to_formatted_dict +from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp, concat_val_to_np, concat_multikeys_to_dict from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations +from monai.bundle.utils import ID_SEP_KEY +from monai.bundle.config_parser import ConfigParser from typing import Any, Dict class Analyzer(transform.MapTransform, ABC): def __init__(self, report_format): self.report_format = report_format - self.ops = {} + self.ops = ConfigParser({}) - def update_ops(self, key, op): + def update_ops(self, key: str, op): """ + Register an statistical operation to the Analyzer and update the report_format + + Args: + key: value key in the report + op: Operation object + """ self.ops[key] = op + parser = ConfigParser(self.report_format) + + if parser.get(key, "NA") != "NA": + parser[key] = op + + self.report_format = parser.config + + def update_ops_nested_label(self, nested_key, op): + """ + Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys + + Args: + nested_key: str that has format of 'key1#0#key2' + op: statistical operation + """ + keys = nested_key.split(ID_SEP_KEY) + if len(keys) != 3: + raise ValueError('Nested_key input format is wrong. Please ensure it is like key1#0#key2') + + (root, _, child_key) = keys + if root not in self.ops: + self.ops[root] = [{}] + self.ops[root][0].update({child_key: None}) + + self.ops[nested_key] = op + + parser = ConfigParser(self.report_format) + if parser.get(nested_key, "NA") != "NA": + parser[nested_key] = op + - if key in self.report_format: - self.report_format[key] = op # value in report_format will be resolved to a dict with only keys + def get_report_format(self): + """ + Get the report format by resolving the registered operations. - def resolve_ops(self, func): + Returns: + a dictionary with keys-None pairs + + """ + self.resolve_ops(self.report_format) + return self.report_format + + + @staticmethod + def unwrap_ops(func): ret = dict.fromkeys([key for key in func.data]) if hasattr(func, 'data_addon'): for key in func.data_addon: ret.update({key: None}) return ret - def get_report_format(self): - for k, v in self.report_format.items(): + + def resolve_ops(self, report: dict): + for k, v in report.items(): if issubclass(v.__class__, Operations): - self.report_format[k] = self.resolve_ops(v) - else: - self.report_format[k] = v - - return self.report_format - + report[k] = self.unwrap_ops(v) + elif isinstance(v, list) and len(v) > 0: + self.resolve_ops(v[0]) + else: + report[k] = v + + @abstractmethod def __call__(self, data): """Analyze the dict format dataset, return the summary report""" raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") + class ImageStatsCaseAnalyzer(Analyzer): def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): @@ -98,6 +149,7 @@ def __call__(self, data): # logger.debug(f"Get image stats spent {time.time()-start}") return analysis + class FgImageStatsCasesAnalyzer(Analyzer): def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): @@ -126,6 +178,7 @@ def __call__(self, data): analysis[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] return analysis + class LabelStatsCaseAnalyzer(Analyzer): def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp: bool = True): @@ -137,23 +190,24 @@ def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp report_format = { LABEL_STATS.LABEL_UID: None, - LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None, LABEL_STATS.LABEL: [{ + LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None, - LABEL_STATS.LABEL_SHAPE: None, - LABEL_STATS.LABEL_NCOMP: None, }], } + + if self.do_ccp: + report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_SHAPE: None}) + report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_NCOMP: None}) super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) - self.update_ops_label_list(LABEL_STATS.LABEL, SampleOperations()) - def update_ops_label_list(self, key, op): - self.ops[key] = op - # todo: add support for the list-type item print-out - + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.IMAGE_INT]) + self.update_ops_nested_label(id_seq, SampleOperations()) + + def __call__(self, data): ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] @@ -162,34 +216,37 @@ def __call__(self, data): unique_label = torch.unique(ndas_label).data.cpu().numpy().astype(np.int8).tolist() # start = time.time() - label_stats = [] - pixel_percentage = {} + detailed_label_stats = [] # each element is one label + pixel_sum = 0 for index in unique_label: label_dict: Dict[str, Any] = {} mask_index = ndas_label == index + label_dict[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas] - # logger.debug(f" label {index} stats takes {time.time() - s}") - pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() + pixel_num = torch.sum(mask_index).data.cpu().numpy() # pixel_percentage[index] + label_dict[LABEL_STATS.PIXEL_PCT] = pixel_num.astype(np.float64) + pixel_sum += pixel_num if self.do_ccp: # apply connected component shape_list, ncomponents = get_label_ccp(mask_index) label_dict[LABEL_STATS.LABEL_SHAPE] = shape_list label_dict[LABEL_STATS.LABEL_NCOMP] = ncomponents - label_stats.append(label_dict) + detailed_label_stats.append(label_dict) + # logger.debug(f" label {index} stats takes {time.time() - s}") - total_percent = np.sum(list(pixel_percentage.values())) - for key, value in pixel_percentage.items(): - pixel_percentage[key] = float(value / total_percent) + # total_percent = np.sum(list(pixel_percentage.values())) + for i, _ in enumerate(unique_label): + detailed_label_stats[i][LABEL_STATS.PIXEL_PCT] /= pixel_sum analysis = deepcopy(self.get_report_format()) analysis[LABEL_STATS.LABEL_UID] = unique_label analysis[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] - analysis[LABEL_STATS.LABEL] = label_stats - analysis[LABEL_STATS.PIXEL_PCT] = pixel_percentage + analysis[LABEL_STATS.LABEL] = detailed_label_stats # logger.debug(f"Get label stats spent {time.time()-start}") return analysis + class ImageStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average: bool = True): self.case = case_analyzer_name @@ -208,19 +265,7 @@ def __init__(self, case_analyzer_name: str, average: bool = True): self.update_ops(IMAGE_STATS.CROPPED_SHAPE, SampleOperations()) self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - - - def concat_to_dict(self, key: str, ld_data): - """ - Pinpointing the key in data structure: list of dicts and concat the value - """ - values = [d[self.case][key] for d in ld_data] # ld: list of dicts - # analysis is a list of list - key_values = {} - for k in values[0][0]: - key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - - return key_values + def __call__(self, data): analysis = deepcopy(self.get_report_format()) @@ -236,10 +281,11 @@ def __call__(self, data): axis = None if self.summary_average else 0 op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - concat_val_to_formatted_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) + concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) return analysis + class FgImageStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average=True): self.case = case_analyzer_name @@ -257,10 +303,11 @@ def __call__(self, data): axis = None if self.summary_average else 0 op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - concat_val_to_formatted_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) + concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) return analysis + class LabelStatsSummaryAnalyzer(Analyzer): def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = True): self.case = case_analyzer_name @@ -269,70 +316,61 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = report_format = { LABEL_STATS.LABEL_UID: None, - LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None, LABEL_STATS.LABEL: [{ + LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None, - LABEL_STATS.LABEL_SHAPE: None, - LABEL_STATS.LABEL_NCOMP: None, - }] + }], } + if self.do_ccp: + report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_SHAPE: None}) + report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_NCOMP: None}) + super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) - self.update_ops(LABEL_STATS.LABEL_SHAPE, SampleOperations()) - self.update_ops(LABEL_STATS.LABEL_NCOMP, SampleOperations()) - - - def concat_label_np(self, label_id, key: str, data): - values = [d[self.case][key] for d in data] - # analysis is a list of list - return np.concatenate([[val[label_id] for val in values if label_id in val]]) #gpu/cpu issue - - - def concat_label_to_dict(self, label_id: int, key: str, data): - values = [] - for d in data: - if label_id in d[self.case][LABEL_STATS.LABEL_UID]: - idx = d[self.case][LABEL_STATS.LABEL_UID].index(label_id) - values.append(d[self.case][LABEL_STATS.LABEL][idx][key]) - - if isinstance(values[0], list): - if isinstance(values[0][0], list): - return np.concatenate([[np.array(v[0]) for v in values]]) - elif isinstance(values[0][0], dict): - key_values = {} - for k in values[0][0]: - key_values[k] = np.concatenate([[val[0][k].cpu().numpy() for val in values]]) #gpu/cpu issue - return key_values - else: - raise NotImplementedError("The method to get number is not implemented. Unable to find the values.") - else: - return np.array(values) + + # label-0-'pixel percentage' + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.PIXEL_PCT]) + self.update_ops_nested_label(id_seq, SampleOperations()) + # label-0-'image intensity' + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.IMAGE_INT]) + self.update_ops_nested_label(id_seq, SummaryOperations()) + # label-0-shape + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.LABEL_SHAPE]) + self.update_ops_nested_label(id_seq, SampleOperations()) + # label-0-ncomponents + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.LABEL_NCOMP]) + self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data): analysis = deepcopy(self.get_report_format()) - unique_label = label_union(concat_val_to_np(data, [self.case, LABEL_STATS.LABEL_UID], flatten=True)) - - pixel_summary = {} - for label_id in unique_label: - pixel_summary.update({label_id: self.concat_label_np(label_id, LABEL_STATS.PIXEL_PCT, data)}) - - axis = None if self.summary_average else 0 + axis = None if self.summary_average else 0 analysis[LABEL_STATS.LABEL_UID] = unique_label - analysis[LABEL_STATS.PIXEL_PCT] = [{k: np.mean(v)} for k, v in pixel_summary.items()] op_keys = analysis[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( - concat_val_to_formatted_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis) + concat_multikeys_to_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis) + + detailed_label_list = [] - analysis[LABEL_STATS.LABEL] = [] for label_id in unique_label: stats = {} - for key in [LABEL_STATS.IMAGE_INT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: - stats[key] = self.ops[key].evaluate(self.concat_label_to_dict(label_id, key, data), dim=axis) - analysis[LABEL_STATS.LABEL].append(stats) + axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) + for key in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: + stats[key] = self.ops[LABEL_STATS.LABEL][0][key].evaluate( + concat_val_to_np(data, [self.case, LABEL_STATS.LABEL, label_id, key], allow_missing=True, flatten=True), dim=axis) + axis = None + label_image_intensity = [self.case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] + op_keys = analysis[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].keys() + stats[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( + concat_multikeys_to_dict(data, label_image_intensity, op_keys, allow_missing=True, flatten=True), dim=axis) + + detailed_label_list.append(stats) + + analysis[LABEL_STATS.LABEL] = detailed_label_list + return analysis diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 0016382633..570f86d1c5 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -1,8 +1,4 @@ -from multiprocessing.sharedctypes import Value -import numpy as np -from typing import Any, List, Tuple, Union -from monai.data.meta_tensor import MetaTensor # Copyright (c) MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,22 +10,24 @@ # See the License for the specific language governing permissions and # limitations under the License. +import numpy as np import torch +from monai.data.meta_tensor import MetaTensor from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import from numbers import Number -from typing import Dict, List +from typing import Any, List, Dict, Tuple, Union __all__ = [ "get_foreground_image", "get_foreground_label", "get_label_ccp", "concat_val_to_np", - "concat_val_to_formatted_dict", + "concat_multikeys_to_dict", ] measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) @@ -50,7 +48,7 @@ def get_foreground_image(image: MetaTensor): Notes: the size of the ouput is smaller than the input. """ - # todo(mingxin): type check + copper = CropForeground(select_fn=lambda x: x > 0) image_foreground = copper(image) return image_foreground @@ -67,7 +65,7 @@ def get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: Returns: 1D array of foreground image with label > 0 """ - # todo(mingxin): type check + label_foreground = MetaTensor(image[label > 0]) return label_foreground @@ -83,7 +81,7 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An regardless of this setting """ - # todo(mingxin): type check + shape_list = [] if mask_index.device.type == "cuda" and has_cp and has_cucim and use_gpu: mask_cupy = ToCupy()(mask_index.short()) @@ -114,16 +112,18 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An def concat_val_to_np( data_list: List[Dict], - keys: List[Union[str, int]], - flatten=False + fixed_keys: List[Union[str, int]], + flatten=False, + allow_missing=False, ): """ Get the nested value in a list of dictionary that shares the same structure. Args: data_list: a list of dictionary {key1: {key2: np.ndarray}}. - keys: a list of keys that records to path to the value in the dict elements. + fixed_keys: a list of keys that records to path to the value in the dict elements. flatten: if True, numbers are flattened before concat. + allow_missing: if True, it will return a None if the value cannot be found Returns: nd.array of concatanated array @@ -136,27 +136,34 @@ def concat_val_to_np( from monai.bundle.utils import ID_SEP_KEY parser = ConfigParser(data) - for i, key in enumerate(keys): - if isinstance(key, int): - keys[i] = str(key) + for i, key in enumerate(fixed_keys): + if isinstance(key, (int, np.integer)): + fixed_keys[i] = str(key) - val = parser.get(ID_SEP_KEY.join(keys)) + val = parser.get(ID_SEP_KEY.join(fixed_keys)) if val is None: - raise AttributeError(f"{keys} is not nested in the dictionary") - elif isinstance(val, list): # only list of number/ndarray/tensor + if allow_missing: + np_list.append(None) + else: + raise AttributeError(f"{fixed_keys} is not nested in the dictionary") + elif isinstance(val, list): + # only list of number/np.ndrray if any(isinstance(v, (torch.Tensor, MetaTensor)) for v in val): raise NotImplementedError('list of MetaTensor is not supported for concat') np_list.append(np.array(val)) elif isinstance(val, (torch.Tensor, MetaTensor)): np_list.append(val.cpu().numpy()) elif isinstance(val, np.ndarray): - np_list.appen(val) + np_list.append(val) elif isinstance(val, Number): np_list.append(np.array(val)) else: raise NotImplementedError(f'{val.__class__} concat is not supported.' ) + if allow_missing: + np_list = [x for x in np_list if x is not None] + if flatten: ret = np.concatenate(np_list, axis=None) # when axis is None, numbers are flatten before use else: @@ -165,28 +172,32 @@ def concat_val_to_np( return ret -def concat_val_to_formatted_dict( +def concat_multikeys_to_dict( data_list: List[Dict], - keys: List[Union[str, int]], - op_keys: List[str], + fixed_keys: List[Union[str, int]], + keys: List[str], + zero_insert: bool = True, **kwargs, ): """ - Get the nested value in a list of dictionary that shares the same structure iteratively on all op_keys. - It returns a dictionary with op_keys with the found values in nd.ndarray. + Get the nested value in a list of dictionary that shares the same structure iteratively on all keys. + It returns a dictionary with keys with the found values in nd.ndarray. Args: data_list: a list of dictionary {key1: {key2: np.ndarray}}. - keys: a list of keys that records to path to the value in the dict elements. + fixed_keys: a list of keys that records to path to the value in the dict elements. + keys: a list of string keys that will be iterated to generate a dict output + zero_insert: insert a zero in the list so that it can find the value in element 0 before getting the keys flatten: if True, numbers are flattened before concat. Returns: - a dict with op_keys - nd.array of concatanated array pair + a dict with keys - nd.array of concatanated array pair """ ret_dict = {} - for op_key in op_keys: - val = concat_val_to_np(data_list, keys + [0, op_key], **kwargs) - ret_dict.update({op_key: val}) + for key in keys: + addon = [0, key] if zero_insert else [key] + val = concat_val_to_np(data_list, fixed_keys + addon, **kwargs) + ret_dict.update({key: val}) return ret_dict diff --git a/monai/bundle/config_parser.py b/monai/bundle/config_parser.py index b4ffc853bb..2676222a9f 100644 --- a/monai/bundle/config_parser.py +++ b/monai/bundle/config_parser.py @@ -173,7 +173,7 @@ def get(self, id: str = "", default: Optional[Any] = None): """ try: return self[id] - except KeyError: + except (KeyError, IndexError): return default def set(self, config: Any, id: str = ""): From e2921de9548c33c128a4a0cc050a48081db35d10 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 00:50:48 +0800 Subject: [PATCH 106/150] fix to allow no label key / image_only Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 24 ++++++++++++++++++------ monai/auto3dseg/analyzer.py | 4 +--- monai/auto3dseg/data_analyzer.py | 2 +- tests/test_auto3dseg.py | 18 +++++++++--------- 4 files changed, 29 insertions(+), 19 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index da1c4ba21d..57b9e724e5 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -85,17 +85,29 @@ def __init__(self, super().update({ DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key][ImageMetaKey.FILENAME_OR_OBJ], DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key][ImageMetaKey.FILENAME_OR_OBJ] if label_meta_key else "", - "image_stats": ImageStatsCaseAnalyzer(image_key, label_key), - "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), - "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), + "image_stats": ImageStatsCaseAnalyzer(image_key), }) + if label_key is not None: + super().update({ + "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), + "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), + }) + class SegAnalyzeSummaryEngine(AnalyzeEngine): - def __init__(self, data: Dict, average=True): + def __init__(self, + data: Dict, + image_key: str, + label_key: str, + average=True): super().__init__(data=data) super().update({ "image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average), - "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), - "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) }) + if label_key is not None: + super().update({ + "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), + "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) + }) + diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index ecd60669d9..efe54ba8e1 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -109,12 +109,10 @@ def __call__(self, data): class ImageStatsCaseAnalyzer(Analyzer): - def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): + def __init__(self, image_key, meta_key_postfix = "_meta_dict"): self.image_key = image_key - self.label_key = label_key self.image_meta_key = self.image_key + meta_key_postfix - self.label_meta_key = self.label_key + meta_key_postfix report_format = { IMAGE_STATS.SHAPE: None, diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index e64972af86..139afb41e2 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -141,7 +141,7 @@ def get_all_case_stats(self): case_engine = SegAnalyzeCaseEngine(batch_data[0], self.image_key, self.label_key, device=self.device) result[DATA_STATS.BY_CASE].append(case_engine()) - summary_engine = SegAnalyzeSummaryEngine(result[DATA_STATS.BY_CASE]) + summary_engine = SegAnalyzeSummaryEngine(result[DATA_STATS.BY_CASE], self.image_key, self.label_key) result[DATA_STATS.SUMMARY] = summary_engine() return result diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 77ee56eeac..efd6db73d3 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -64,15 +64,15 @@ def test_data_analyzer(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - # def test_data_analyzer_image_only(self): - # dataroot = self.test_dir.name - # yaml_fpath = path.join(dataroot, "data_stats.yaml") - # analyser = DataAnalyzer( - # fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None - # ) - # datastat = analyser.get_all_case_stats() - - # assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_data_analyzer_image_only(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) def test_data_analyzer_from_yaml(self): dataroot = self.test_dir.name From 6b62640fb338c483d54be89fe84671340bc75e79 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 00:52:27 +0800 Subject: [PATCH 107/150] autofix Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 102 ++++++++++---------- monai/auto3dseg/analyzer.py | 152 +++++++++++++++--------------- monai/auto3dseg/data_analyzer.py | 14 +-- monai/auto3dseg/operations.py | 36 +++---- monai/auto3dseg/utils.py | 41 +++----- monai/utils/enums.py | 11 ++- monai/utils/misc.py | 4 +- tests/test_auto3dseg.py | 1 + 8 files changed, 176 insertions(+), 185 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index 57b9e724e5..c1e3c470f7 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -9,105 +9,103 @@ # See the License for the specific language governing permissions and # limitations under the License. -import torch - from typing import Dict +import torch + from monai.auto3dseg.analyzer import ( - ImageStatsCaseAnalyzer, FgImageStatsCasesAnalyzer, - LabelStatsCaseAnalyzer, - ImageStatsSummaryAnalyzer, FgImageStatsSummaryAnalyzer, + ImageStatsCaseAnalyzer, + ImageStatsSummaryAnalyzer, + LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, ) - -from monai.transforms import ( - Compose, - LoadImaged, - EnsureChannelFirstd, - Orientationd, - EnsureTyped, - Lambdad, - SqueezeDimd, +from monai.transforms import ( + Compose, + EnsureChannelFirstd, + EnsureTyped, + Lambdad, + LoadImaged, + Orientationd, + SqueezeDimd, ToDeviced, ) - from monai.utils.enums import DATA_STATS from monai.utils.misc import ImageMetaKey + class AnalyzeEngine: def __init__(self, data) -> None: self.data = data self.analyzers = {} - + def update(self, analyzer: Dict[str, callable]): self.analyzers.update(analyzer) def __call__(self): ret = {} - for k, analyzer in self.analyzers.items(): + for k, analyzer in self.analyzers.items(): if callable(analyzer): ret.update({k: analyzer(self.data)}) elif isinstance(analyzer, str): ret.update({k: analyzer}) return ret + class SegAnalyzeCaseEngine(AnalyzeEngine): - def __init__(self, - data: Dict, - image_key: str, - label_key: str, - meta_post_fix: str = "_meta_dict", - device: str = "cuda", - ) -> None: - + def __init__( + self, data: Dict, image_key: str, label_key: str, meta_post_fix: str = "_meta_dict", device: str = "cuda" + ) -> None: + keys = [image_key] if label_key is None else [image_key, label_key] transform_list = [ LoadImaged(keys=keys), EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - ToDeviced(keys=keys, device=device, non_blocking=True), + ToDeviced(keys=keys, device=device, non_blocking=True), Orientationd(keys=keys, axcodes="RAS"), EnsureTyped(keys=keys, data_type="tensor"), - Lambdad( - keys=label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x - ) if label_key else None, + Lambdad(keys=label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x) + if label_key + else None, SqueezeDimd(keys=["label"], dim=0) if label_key else None, ] transform = Compose(list(filter(None, transform_list))) - + image_meta_key = image_key + meta_post_fix label_meta_key = label_key + meta_post_fix if label_key else None super().__init__(data=transform(data)) - super().update({ - DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key][ImageMetaKey.FILENAME_OR_OBJ], - DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key][ImageMetaKey.FILENAME_OR_OBJ] if label_meta_key else "", - "image_stats": ImageStatsCaseAnalyzer(image_key), - }) + super().update( + { + DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key][ImageMetaKey.FILENAME_OR_OBJ], + DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key][ImageMetaKey.FILENAME_OR_OBJ] + if label_meta_key + else "", + "image_stats": ImageStatsCaseAnalyzer(image_key), + } + ) if label_key is not None: - super().update({ - "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), - "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), - }) + super().update( + { + "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), + "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), + } + ) + class SegAnalyzeSummaryEngine(AnalyzeEngine): - def __init__(self, - data: Dict, - image_key: str, - label_key: str, - average=True): + def __init__(self, data: Dict, image_key: str, label_key: str, average=True): super().__init__(data=data) - super().update({ - "image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average), - }) + super().update({"image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average)}) if label_key is not None: - super().update({ - "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), - "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average) - }) - + super().update( + { + "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), + "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average), + } + ) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index efe54ba8e1..1b590860e6 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -9,21 +9,27 @@ # See the License for the specific language governing permissions and # limitations under the License. +from abc import ABC, abstractmethod +from copy import deepcopy +from typing import Any, Dict + import numpy as np import torch -from abc import abstractmethod, ABC -from copy import deepcopy - -from monai.transforms import transform -from monai.utils.misc import label_union -from monai.utils.enums import IMAGE_STATS, LABEL_STATS -from monai.auto3dseg.utils import get_foreground_image, get_foreground_label, get_label_ccp, concat_val_to_np, concat_multikeys_to_dict from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations -from monai.bundle.utils import ID_SEP_KEY +from monai.auto3dseg.utils import ( + concat_multikeys_to_dict, + concat_val_to_np, + get_foreground_image, + get_foreground_label, + get_label_ccp, +) from monai.bundle.config_parser import ConfigParser +from monai.bundle.utils import ID_SEP_KEY +from monai.transforms import transform +from monai.utils.enums import IMAGE_STATS, LABEL_STATS +from monai.utils.misc import label_union -from typing import Any, Dict class Analyzer(transform.MapTransform, ABC): def __init__(self, report_format): @@ -37,14 +43,14 @@ def update_ops(self, key: str, op): Args: key: value key in the report op: Operation object - + """ self.ops[key] = op parser = ConfigParser(self.report_format) if parser.get(key, "NA") != "NA": parser[key] = op - + self.report_format = parser.config def update_ops_nested_label(self, nested_key, op): @@ -57,19 +63,18 @@ def update_ops_nested_label(self, nested_key, op): """ keys = nested_key.split(ID_SEP_KEY) if len(keys) != 3: - raise ValueError('Nested_key input format is wrong. Please ensure it is like key1#0#key2') - + raise ValueError("Nested_key input format is wrong. Please ensure it is like key1#0#key2") + (root, _, child_key) = keys if root not in self.ops: self.ops[root] = [{}] self.ops[root][0].update({child_key: None}) - + self.ops[nested_key] = op parser = ConfigParser(self.report_format) if parser.get(nested_key, "NA") != "NA": - parser[nested_key] = op - + parser[nested_key] = op def get_report_format(self): """ @@ -82,16 +87,14 @@ def get_report_format(self): self.resolve_ops(self.report_format) return self.report_format - @staticmethod def unwrap_ops(func): ret = dict.fromkeys([key for key in func.data]) - if hasattr(func, 'data_addon'): + if hasattr(func, "data_addon"): for key in func.data_addon: ret.update({key: None}) return ret - def resolve_ops(self, report: dict): for k, v in report.items(): if issubclass(v.__class__, Operations): @@ -101,7 +104,6 @@ def resolve_ops(self, report: dict): else: report[k] = v - @abstractmethod def __call__(self, data): """Analyze the dict format dataset, return the summary report""" @@ -109,7 +111,7 @@ def __call__(self, data): class ImageStatsCaseAnalyzer(Analyzer): - def __init__(self, image_key, meta_key_postfix = "_meta_dict"): + def __init__(self, image_key, meta_key_postfix="_meta_dict"): self.image_key = image_key self.image_meta_key = self.image_key + meta_key_postfix @@ -125,7 +127,6 @@ def __init__(self, image_key, meta_key_postfix = "_meta_dict"): super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) - def __call__(self, data): # from time import time # start = time.time() @@ -141,7 +142,9 @@ def __call__(self, data): analysis[IMAGE_STATS.SHAPE] = [list(nda.shape) for nda in ndas] analysis[IMAGE_STATS.CHANNELS] = len(ndas) analysis[IMAGE_STATS.CROPPED_SHAPE] = [list(nda_c.shape) for nda_c in nda_croppeds] - analysis[IMAGE_STATS.SPACING] = np.tile(np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1]).tolist() + analysis[IMAGE_STATS.SPACING] = np.tile( + np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1] + ).tolist() analysis[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] # logger.debug(f"Get image stats spent {time.time()-start}") @@ -149,25 +152,23 @@ def __call__(self, data): class FgImageStatsCasesAnalyzer(Analyzer): - def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict"): + def __init__(self, image_key, label_key, meta_key_postfix="_meta_dict"): self.image_key = image_key self.label_key = label_key self.image_meta_key = self.image_key + meta_key_postfix self.label_meta_key = self.label_key + meta_key_postfix - report_format = { - IMAGE_STATS.INTENSITY: None - } + report_format = {IMAGE_STATS.INTENSITY: None} super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) - + def __call__(self, data): - ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) + ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] - ndas_label = data[self.label_key] # (H,W,D) + ndas_label = data[self.label_key] # (H,W,D) nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] # perform calculation @@ -178,7 +179,7 @@ def __call__(self, data): class LabelStatsCaseAnalyzer(Analyzer): - def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp: bool = True): + def __init__(self, image_key, label_key, meta_key_postfix="_meta_dict", do_ccp: bool = True): self.image_key = image_key self.label_key = label_key @@ -189,12 +190,9 @@ def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp report_format = { LABEL_STATS.LABEL_UID: None, LABEL_STATS.IMAGE_INT: None, - LABEL_STATS.LABEL: [{ - LABEL_STATS.PIXEL_PCT: None, - LABEL_STATS.IMAGE_INT: None, - }], + LABEL_STATS.LABEL: [{LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None}], } - + if self.do_ccp: report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_SHAPE: None}) report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_NCOMP: None}) @@ -202,14 +200,13 @@ def __init__(self, image_key, label_key, meta_key_postfix = "_meta_dict", do_ccp super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.IMAGE_INT]) + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.IMAGE_INT]) self.update_ops_nested_label(id_seq, SampleOperations()) - def __call__(self, data): - ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) + ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] - ndas_label = data[self.label_key] # (H,W,D) + ndas_label = data[self.label_key] # (H,W,D) nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] unique_label = torch.unique(ndas_label).data.cpu().numpy().astype(np.int8).tolist() @@ -220,27 +217,29 @@ def __call__(self, data): label_dict: Dict[str, Any] = {} mask_index = ndas_label == index - label_dict[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas] - pixel_num = torch.sum(mask_index).data.cpu().numpy() # pixel_percentage[index] + label_dict[LABEL_STATS.IMAGE_INT] = [ + self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas + ] + pixel_num = torch.sum(mask_index).data.cpu().numpy() # pixel_percentage[index] label_dict[LABEL_STATS.PIXEL_PCT] = pixel_num.astype(np.float64) pixel_sum += pixel_num if self.do_ccp: # apply connected component shape_list, ncomponents = get_label_ccp(mask_index) label_dict[LABEL_STATS.LABEL_SHAPE] = shape_list label_dict[LABEL_STATS.LABEL_NCOMP] = ncomponents - + detailed_label_stats.append(label_dict) # logger.debug(f" label {index} stats takes {time.time() - s}") # total_percent = np.sum(list(pixel_percentage.values())) for i, _ in enumerate(unique_label): detailed_label_stats[i][LABEL_STATS.PIXEL_PCT] /= pixel_sum - + analysis = deepcopy(self.get_report_format()) analysis[LABEL_STATS.LABEL_UID] = unique_label analysis[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] analysis[LABEL_STATS.LABEL] = detailed_label_stats - + # logger.debug(f"Get label stats spent {time.time()-start}") return analysis @@ -254,7 +253,7 @@ def __init__(self, case_analyzer_name: str, average: bool = True): IMAGE_STATS.CHANNELS: None, IMAGE_STATS.CROPPED_SHAPE: None, IMAGE_STATS.SPACING: None, - IMAGE_STATS.INTENSITY: None + IMAGE_STATS.INTENSITY: None, } super().__init__(report_format) @@ -264,22 +263,25 @@ def __init__(self, case_analyzer_name: str, average: bool = True): self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - def __call__(self, data): analysis = deepcopy(self.get_report_format()) - - axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) + + axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) analysis[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate( - concat_val_to_np(data, [self.case, IMAGE_STATS.SHAPE]), dim=axis) + concat_val_to_np(data, [self.case, IMAGE_STATS.SHAPE]), dim=axis + ) analysis[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate( - concat_val_to_np(data, [self.case, IMAGE_STATS.CROPPED_SHAPE]), dim=axis) + concat_val_to_np(data, [self.case, IMAGE_STATS.CROPPED_SHAPE]), dim=axis + ) analysis[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate( - concat_val_to_np(data, [self.case, IMAGE_STATS.SPACING]), dim=axis) + concat_val_to_np(data, [self.case, IMAGE_STATS.SPACING]), dim=axis + ) axis = None if self.summary_average else 0 op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) + concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis + ) return analysis @@ -289,20 +291,18 @@ def __init__(self, case_analyzer_name: str, average=True): self.case = case_analyzer_name self.summary_average = average - report_format = { - IMAGE_STATS.INTENSITY: None - } + report_format = {IMAGE_STATS.INTENSITY: None} super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - def __call__(self, data): analysis = deepcopy(self.get_report_format()) axis = None if self.summary_average else 0 op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis) - + concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis + ) + return analysis @@ -315,10 +315,7 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = report_format = { LABEL_STATS.LABEL_UID: None, LABEL_STATS.IMAGE_INT: None, - LABEL_STATS.LABEL: [{ - LABEL_STATS.PIXEL_PCT: None, - LABEL_STATS.IMAGE_INT: None, - }], + LABEL_STATS.LABEL: [{LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None}], } if self.do_ccp: report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_SHAPE: None}) @@ -328,19 +325,18 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) # label-0-'pixel percentage' - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.PIXEL_PCT]) + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.PIXEL_PCT]) self.update_ops_nested_label(id_seq, SampleOperations()) # label-0-'image intensity' - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.IMAGE_INT]) + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.IMAGE_INT]) self.update_ops_nested_label(id_seq, SummaryOperations()) # label-0-shape - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.LABEL_SHAPE]) + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.LABEL_SHAPE]) self.update_ops_nested_label(id_seq, SampleOperations()) # label-0-ncomponents - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, '0', LABEL_STATS.LABEL_NCOMP]) + id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.LABEL_NCOMP]) self.update_ops_nested_label(id_seq, SampleOperations()) - def __call__(self, data): analysis = deepcopy(self.get_report_format()) unique_label = label_union(concat_val_to_np(data, [self.case, LABEL_STATS.LABEL_UID], flatten=True)) @@ -349,26 +345,32 @@ def __call__(self, data): analysis[LABEL_STATS.LABEL_UID] = unique_label op_keys = analysis[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( - concat_multikeys_to_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis) + concat_multikeys_to_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis + ) - detailed_label_list = [] for label_id in unique_label: stats = {} - axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) + axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) for key in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: stats[key] = self.ops[LABEL_STATS.LABEL][0][key].evaluate( - concat_val_to_np(data, [self.case, LABEL_STATS.LABEL, label_id, key], allow_missing=True, flatten=True), dim=axis) - + concat_val_to_np( + data, [self.case, LABEL_STATS.LABEL, label_id, key], allow_missing=True, flatten=True + ), + dim=axis, + ) + axis = None label_image_intensity = [self.case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] op_keys = analysis[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].keys() stats[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( - concat_multikeys_to_dict(data, label_image_intensity, op_keys, allow_missing=True, flatten=True), dim=axis) + concat_multikeys_to_dict(data, label_image_intensity, op_keys, allow_missing=True, flatten=True), + dim=axis, + ) detailed_label_list.append(stats) - + analysis[LABEL_STATS.LABEL] = detailed_label_list return analysis diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 139afb41e2..e659c0f00d 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -32,10 +32,7 @@ __all__ = ["DataAnalyzer"] -from monai.auto3dseg.analyze_engine import DATA_STATS - -from monai.auto3dseg.analyze_engine import SegAnalyzeCaseEngine, SegAnalyzeSummaryEngine - +from monai.auto3dseg.analyze_engine import DATA_STATS, SegAnalyzeCaseEngine, SegAnalyzeSummaryEngine class DataAnalyzer: @@ -130,12 +127,11 @@ def get_all_case_stats(self): keys = list(filter(None, [self.image_key, self.label_key])) files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) + self.dataset = data.DataLoader( + ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation + ) - result = { - DATA_STATS.SUMMARY: {}, - DATA_STATS.BY_CASE: [], - } + result = {DATA_STATS.SUMMARY: {}, DATA_STATS.BY_CASE: []} for batch_data in self.dataset: case_engine = SegAnalyzeCaseEngine(batch_data[0], self.image_key, self.label_key, device=self.device) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 3114ea8671..0232446aa1 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -11,13 +11,16 @@ from collections import UserDict from functools import partial -from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std from typing import Any -class Operations(UserDict): +from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std + + +class Operations(UserDict): def evaluate(self, data: Any, **kwargs) -> dict: return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} + class SampleOperations(Operations): # todo: missing value/nan/inf def __init__(self) -> None: @@ -27,7 +30,7 @@ def __init__(self) -> None: "median": median, "min": min, "stdev": std, - "percentile": partial(percentile, q=[0.5, 10, 90, 99.5]) + "percentile": partial(percentile, q=[0.5, 10, 90, 99.5]), } self.data_addon = { "percentile_00_5": ("percentile", 0), @@ -35,7 +38,7 @@ def __init__(self) -> None: "percentile_90_0": ("percentile", 2), "percentile_99_5": ("percentile", 3), } - + def evaluate(self, data: Any, **kwargs) -> dict: ret = super().evaluate(data, **kwargs) for k, v in self.data_addon.items(): @@ -46,19 +49,20 @@ def evaluate(self, data: Any, **kwargs) -> dict: return ret + class SummaryOperations(Operations): def __init__(self) -> None: self.data = { - "max": max, - "mean": mean, - "median": mean, - "min": min, - "stdev": mean, - "percentile_00_5": mean, - "percentile_10_0": mean, - "percentile_90_0": mean, - "percentile_99_5": mean, - } - + "max": max, + "mean": mean, + "median": mean, + "min": min, + "stdev": mean, + "percentile_00_5": mean, + "percentile_10_0": mean, + "percentile_90_0": mean, + "percentile_99_5": mean, + } + def evaluate(self, data: Any, **kwargs) -> dict: - return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} + return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 570f86d1c5..4588b06bef 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -1,4 +1,3 @@ - # Copyright (c) MONAI Consortium # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -10,18 +9,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +from numbers import Number +from typing import Any, Dict, List, Tuple, Union + import numpy as np import torch -from monai.data.meta_tensor import MetaTensor from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import -from numbers import Number - -from typing import Any, List, Dict, Tuple, Union - __all__ = [ "get_foreground_image", "get_foreground_label", @@ -34,6 +31,7 @@ cp, has_cp = optional_import("cupy") cucim, has_cucim = optional_import("cucim") + def get_foreground_image(image: MetaTensor): """ Get a foreground image by removing all-zero rectangles on the edges of the image @@ -110,12 +108,7 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An return shape_list, ncomponents -def concat_val_to_np( - data_list: List[Dict], - fixed_keys: List[Union[str, int]], - flatten=False, - allow_missing=False, - ): +def concat_val_to_np(data_list: List[Dict], fixed_keys: List[Union[str, int]], flatten=False, allow_missing=False): """ Get the nested value in a list of dictionary that shares the same structure. @@ -124,7 +117,7 @@ def concat_val_to_np( fixed_keys: a list of keys that records to path to the value in the dict elements. flatten: if True, numbers are flattened before concat. allow_missing: if True, it will return a None if the value cannot be found - + Returns: nd.array of concatanated array @@ -139,7 +132,7 @@ def concat_val_to_np( for i, key in enumerate(fixed_keys): if isinstance(key, (int, np.integer)): fixed_keys[i] = str(key) - + val = parser.get(ID_SEP_KEY.join(fixed_keys)) if val is None: @@ -147,10 +140,10 @@ def concat_val_to_np( np_list.append(None) else: raise AttributeError(f"{fixed_keys} is not nested in the dictionary") - elif isinstance(val, list): + elif isinstance(val, list): # only list of number/np.ndrray if any(isinstance(v, (torch.Tensor, MetaTensor)) for v in val): - raise NotImplementedError('list of MetaTensor is not supported for concat') + raise NotImplementedError("list of MetaTensor is not supported for concat") np_list.append(np.array(val)) elif isinstance(val, (torch.Tensor, MetaTensor)): np_list.append(val.cpu().numpy()) @@ -159,8 +152,8 @@ def concat_val_to_np( elif isinstance(val, Number): np_list.append(np.array(val)) else: - raise NotImplementedError(f'{val.__class__} concat is not supported.' ) - + raise NotImplementedError(f"{val.__class__} concat is not supported.") + if allow_missing: np_list = [x for x in np_list if x is not None] @@ -173,12 +166,8 @@ def concat_val_to_np( def concat_multikeys_to_dict( - data_list: List[Dict], - fixed_keys: List[Union[str, int]], - keys: List[str], - zero_insert: bool = True, - **kwargs, - ): + data_list: List[Dict], fixed_keys: List[Union[str, int]], keys: List[str], zero_insert: bool = True, **kwargs +): """ Get the nested value in a list of dictionary that shares the same structure iteratively on all keys. It returns a dictionary with keys with the found values in nd.ndarray. @@ -189,7 +178,7 @@ def concat_multikeys_to_dict( keys: a list of string keys that will be iterated to generate a dict output zero_insert: insert a zero in the list so that it can find the value in element 0 before getting the keys flatten: if True, numbers are flattened before concat. - + Returns: a dict with keys - nd.array of concatanated array pair """ @@ -199,5 +188,5 @@ def concat_multikeys_to_dict( addon = [0, key] if zero_insert else [key] val = concat_val_to_np(data_list, fixed_keys + addon, **kwargs) ret_dict.update({key: val}) - + return ret_dict diff --git a/monai/utils/enums.py b/monai/utils/enums.py index ea6bef620f..a3547e926f 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -490,28 +490,29 @@ class DATA_STATS(StrEnum): A set of keys for dataset statistical analysis module """ + SUMMARY = "stats_summary" BY_CASE = "stats_by_cases" BY_CASE_IMAGE_PATH = "image" BY_CASE_LABEL_PATH = "label" + class IMAGE_STATS(StrEnum): - """ + """ """ - """ SHAPE = "shape" CHANNELS = "channels" CROPPED_SHAPE = "cropped_shape" SPACING = "spacing" INTENSITY = "intensity" + class LABEL_STATS(StrEnum): - """ + """ """ - """ LABEL_UID = "labels" PIXEL_PCT = "pixel_percentage" IMAGE_INT = "image_intensity" LABEL = "label" LABEL_SHAPE = "shape" - LABEL_NCOMP = "ncomponents" \ No newline at end of file + LABEL_NCOMP = "ncomponents" diff --git a/monai/utils/misc.py b/monai/utils/misc.py index 8e23d3c6cb..b9bd127e2e 100644 --- a/monai/utils/misc.py +++ b/monai/utils/misc.py @@ -21,7 +21,7 @@ from collections.abc import Iterable from distutils.util import strtobool from pathlib import Path -from typing import Any, Callable, List, Optional, Sequence, Tuple, Union, cast, Dict +from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union, cast import numpy as np import torch @@ -483,4 +483,4 @@ def label_union(x: List) -> List: Returns a list showing the union (the union the class IDs) """ - return list(set.union(set(np.array(x)))) \ No newline at end of file + return list(set.union(set(np.array(x)))) diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index efd6db73d3..843f9fe678 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -35,6 +35,7 @@ ], } + class TestDataAnalyzer(unittest.TestCase): def setUp(self): self.test_dir = tempfile.TemporaryDirectory() From 6a49a0e2b0e1d860eb5714c885c2afb2abac81db Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 01:26:49 +0800 Subject: [PATCH 108/150] refractor make AnalyzeEngine callable and remove data from init Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 53 +++++++++++++++++++++---------- monai/auto3dseg/data_analyzer.py | 8 ++--- monai/auto3dseg/utils.py | 16 ++++++++++ 3 files changed, 57 insertions(+), 20 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index c1e3c470f7..bb8b6c94a3 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -21,6 +21,7 @@ LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, ) +from monai.auto3dseg.utils import get_filename from monai.transforms import ( Compose, EnsureChannelFirstd, @@ -32,32 +33,55 @@ ToDeviced, ) from monai.utils.enums import DATA_STATS -from monai.utils.misc import ImageMetaKey class AnalyzeEngine: - def __init__(self, data) -> None: - self.data = data + """ + AnalyzeEngine is a base class to serialize the operations for data analysis in Auto3Dseg pipeline. + + Args: + data: a dict-type data to run analysis on + + Examples: + + .. code-block:: python + + import numpy as np + from monai.auto3dseg.analyze_engine import AnalyzeEngine + + engine = AnalyzeEngine() + engine.update({"max": np.max}) + engine.update({"min": np.min}) + + input = np.array([1,2,3,4]) + print(engine(input)) + + """ + + def __init__(self) -> None: self.analyzers = {} + self.transform = None def update(self, analyzer: Dict[str, callable]): self.analyzers.update(analyzer) - def __call__(self): + def __call__(self, data): + if self.transform: + data = self.transform(data) + ret = {} for k, analyzer in self.analyzers.items(): if callable(analyzer): - ret.update({k: analyzer(self.data)}) + ret.update({k: analyzer(data)}) elif isinstance(analyzer, str): ret.update({k: analyzer}) return ret class SegAnalyzeCaseEngine(AnalyzeEngine): - def __init__( - self, data: Dict, image_key: str, label_key: str, meta_post_fix: str = "_meta_dict", device: str = "cuda" - ) -> None: + def __init__(self, image_key: str, label_key: str, meta_post_fix: str = "_meta_dict", device: str = "cuda") -> None: + super().__init__() keys = [image_key] if label_key is None else [image_key, label_key] transform_list = [ @@ -72,18 +96,15 @@ def __init__( SqueezeDimd(keys=["label"], dim=0) if label_key else None, ] - transform = Compose(list(filter(None, transform_list))) + self.transform = Compose(list(filter(None, transform_list))) image_meta_key = image_key + meta_post_fix label_meta_key = label_key + meta_post_fix if label_key else None - super().__init__(data=transform(data)) super().update( { - DATA_STATS.BY_CASE_IMAGE_PATH: self.data[image_meta_key][ImageMetaKey.FILENAME_OR_OBJ], - DATA_STATS.BY_CASE_LABEL_PATH: self.data[label_meta_key][ImageMetaKey.FILENAME_OR_OBJ] - if label_meta_key - else "", + DATA_STATS.BY_CASE_IMAGE_PATH: lambda data: get_filename(data, meta_key=image_meta_key), + DATA_STATS.BY_CASE_LABEL_PATH: lambda data: get_filename(data, meta_key=label_meta_key), "image_stats": ImageStatsCaseAnalyzer(image_key), } ) @@ -98,8 +119,8 @@ def __init__( class SegAnalyzeSummaryEngine(AnalyzeEngine): - def __init__(self, data: Dict, image_key: str, label_key: str, average=True): - super().__init__(data=data) + def __init__(self, image_key: str, label_key: str, average=True): + super().__init__() super().update({"image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average)}) if label_key is not None: diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index e659c0f00d..de063cf742 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -133,11 +133,11 @@ def get_all_case_stats(self): result = {DATA_STATS.SUMMARY: {}, DATA_STATS.BY_CASE: []} + case_engine = SegAnalyzeCaseEngine(self.image_key, self.label_key, device=self.device) for batch_data in self.dataset: - case_engine = SegAnalyzeCaseEngine(batch_data[0], self.image_key, self.label_key, device=self.device) - result[DATA_STATS.BY_CASE].append(case_engine()) + result[DATA_STATS.BY_CASE].append(case_engine(batch_data[0])) - summary_engine = SegAnalyzeSummaryEngine(result[DATA_STATS.BY_CASE], self.image_key, self.label_key) - result[DATA_STATS.SUMMARY] = summary_engine() + summary_engine = SegAnalyzeSummaryEngine(self.image_key, self.label_key) + result[DATA_STATS.SUMMARY] = summary_engine(result[DATA_STATS.BY_CASE]) return result diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 4588b06bef..7ccee82897 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -18,8 +18,10 @@ from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import +from monai.utils.misc import ImageMetaKey __all__ = [ + "get_filename", "get_foreground_image", "get_foreground_label", "get_label_ccp", @@ -32,6 +34,20 @@ cucim, has_cucim = optional_import("cucim") +def get_filename(data, meta_key="image_meta_dict"): + """ + Get the filenames for image/labels + + Args: + data: data from the dataloader + meta_key: key to access the file names + + Returns: + a str (filename) if the key is valid. Otherwise, an empty string. + """ + return data[meta_key][ImageMetaKey.FILENAME_OR_OBJ] if meta_key else "" + + def get_foreground_image(image: MetaTensor): """ Get a foreground image by removing all-zero rectangles on the edges of the image From ed8b6c9625d7c461acf32f56e95380bdf632909c Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 13:54:44 +0800 Subject: [PATCH 109/150] add docstring and unit tests for analyzer Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 55 ++++++++++++++++++++++++++++--------- tests/test_auto3dseg.py | 39 ++++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 13 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 1b590860e6..6882651f3a 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -26,13 +26,23 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY -from monai.transforms import transform +from monai.transforms.transform import MapTransform from monai.utils.enums import IMAGE_STATS, LABEL_STATS from monai.utils.misc import label_union -class Analyzer(transform.MapTransform, ABC): - def __init__(self, report_format): +class Analyzer(MapTransform, ABC): + """ + The Analyzer component is a base class. Other classes inherit this class will provide a callable + with the same class name and produces one pre-formatted dictionary for the input data. The format + is pre-defined by the init function of the class that inherit this base class. Function operations + can also be registerred before the runtime of the callable. + + Args: + report_format: a dictionary that outlines the key structures of the report format. + + """ + def __init__(self, report_format: dict) -> None: self.report_format = report_format self.ops = ConfigParser({}) @@ -41,8 +51,8 @@ def update_ops(self, key: str, op): Register an statistical operation to the Analyzer and update the report_format Args: - key: value key in the report - op: Operation object + key: value key in the report. + op: Operation object. """ self.ops[key] = op @@ -55,11 +65,12 @@ def update_ops(self, key: str, op): def update_ops_nested_label(self, nested_key, op): """ - Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys + Update operations for nested label format. Operation value in report_format will be resolved + to a dict with only keys Args: - nested_key: str that has format of 'key1#0#key2' - op: statistical operation + nested_key: str that has format of 'key1#0#key2'. + op: statistical operation. """ keys = nested_key.split(ID_SEP_KEY) if len(keys) != 3: @@ -78,29 +89,47 @@ def update_ops_nested_label(self, nested_key, op): def get_report_format(self): """ - Get the report format by resolving the registered operations. + Get the report format by resolving the registered operations recursively. Returns: - a dictionary with keys-None pairs + a dictionary with {keys: None} pairs. """ - self.resolve_ops(self.report_format) + self.resolve_format(self.report_format) return self.report_format @staticmethod def unwrap_ops(func): + """ + Unwrap a function value and generates the same set keys in a dict when the function is actually + called in runtime + + Args: + func: Operation. + + Returns: + a dict with a set of keys. + + """ ret = dict.fromkeys([key for key in func.data]) if hasattr(func, "data_addon"): for key in func.data_addon: ret.update({key: None}) return ret - def resolve_ops(self, report: dict): + def resolve_format(self, report: dict): + """ + Resolve the format of the pre-defined report. + + Args: + report: the dictionary to resolve. Values will be replaced in-place. + + """ for k, v in report.items(): if issubclass(v.__class__, Operations): report[k] = self.unwrap_ops(v) elif isinstance(v, list) and len(v) > 0: - self.resolve_ops(v[0]) + self.resolve_format(v[0]) else: report[k] = v diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 843f9fe678..a8fe099ad5 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -9,6 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +from copy import deepcopy import sys import tempfile import unittest @@ -19,8 +20,11 @@ import torch from monai.auto3dseg.data_analyzer import DataAnalyzer +from monai.auto3dseg.analyzer import Analyzer +from monai.auto3dseg.operations import Operations from monai.bundle import ConfigParser from monai.data import create_test_image_3d +from monai.transforms import Compose, LoadImaged, SimulateDelayd device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 @@ -35,6 +39,29 @@ ], } +class TestOperations(Operations): + """ + Test example for user operation + """ + def __init__(self) -> None: + self.data = { + "max": np.max, + "mean": np.mean, + "min": np.min, + } + +class TestAnalyzer(Analyzer): + """ + Test example for a simple Analyzer + """ + def __init__(self, report_format): + super().__init__(report_format) + + def __call__(self, data): + report = deepcopy(self.get_report_format()) + report["stats"] = self.ops["stats"].evaluate(data) + return report + class TestDataAnalyzer(unittest.TestCase): def setUp(self): @@ -85,6 +112,18 @@ def test_data_analyzer_from_yaml(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_basic_analyzer_class(self): + test_data = np.random.rand(10,10) + report_format = { + "stats": None + } + user_analyzer = TestAnalyzer(report_format) + user_analyzer.update_ops("stats", TestOperations()) + result = user_analyzer(test_data) + assert result["stats"]["max"] == np.max(test_data) + assert result["stats"]['min'] == np.min(test_data) + assert result["stats"]['mean'] == np.mean(test_data) + def tearDown(self) -> None: self.test_dir.cleanup() From 6172a0ec6bb793795a2871ec295503c10cdc3ee8 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 15:15:23 +0800 Subject: [PATCH 110/150] fix MapTranform init for Analyzer Signed-off-by: Mingxin Zheng --- monai/auto3dseg/utils.py | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 7ccee82897..8a4f5169b7 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -9,12 +9,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os +from copy import deepcopy from numbers import Number from typing import Any, Dict, List, Tuple, Union import numpy as np import torch +from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import @@ -27,6 +30,7 @@ "get_label_ccp", "concat_val_to_np", "concat_multikeys_to_dict", + "datafold_read", ] measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) @@ -206,3 +210,42 @@ def concat_multikeys_to_dict( ret_dict.update({key: val}) return ret_dict + + +def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: str = "training") -> Tuple[List, List]: + """ + Read a list of data dictionary `datalist` + + Args: + datalist: the name of a JSON file listing the data, or a dictionary + basedir: directory of image files + fold: which fold to use (0..1 if in training set) + key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges) + + Returns: + A tuple of two arrays (training, validation) + """ + + if isinstance(datalist, str): + json_data = ConfigParser.load_config_file(datalist) + else: + json_data = datalist + + dict_data = deepcopy(json_data[key]) + + for d in dict_data: + for k, _ in d.items(): + if isinstance(d[k], list): + d[k] = [os.path.join(basedir, iv) for iv in d[k]] + elif isinstance(d[k], str): + d[k] = os.path.join(basedir, d[k]) if len(d[k]) > 0 else d[k] + + tr = [] + val = [] + for d in dict_data: + if "fold" in d and d["fold"] == fold: + val.append(d) + else: + tr.append(d) + + return tr, val From b10f153b5f147660a1ecad479ce39b81997347c9 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 15:15:56 +0800 Subject: [PATCH 111/150] add unit tests for Analyzer and move datafold_read to util.py Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 74 ++++++++++++++++---------------- monai/auto3dseg/data_analyzer.py | 7 +-- tests/test_auto3dseg.py | 67 ++++++++++++++++++++++------- 3 files changed, 90 insertions(+), 58 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 6882651f3a..d270e21d00 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -11,7 +11,7 @@ from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict +from typing import Any, Dict, Optional import numpy as np import torch @@ -26,6 +26,7 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY +from monai.config.type_definitions import KeysCollection from monai.transforms.transform import MapTransform from monai.utils.enums import IMAGE_STATS, LABEL_STATS from monai.utils.misc import label_union @@ -43,6 +44,7 @@ class Analyzer(MapTransform, ABC): """ def __init__(self, report_format: dict) -> None: + super().__init__(None) self.report_format = report_format self.ops = ConfigParser({}) @@ -65,7 +67,7 @@ def update_ops(self, key: str, op): def update_ops_nested_label(self, nested_key, op): """ - Update operations for nested label format. Operation value in report_format will be resolved + Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys Args: @@ -123,7 +125,7 @@ def resolve_format(self, report: dict): Args: report: the dictionary to resolve. Values will be replaced in-place. - + """ for k, v in report.items(): if issubclass(v.__class__, Operations): @@ -166,18 +168,18 @@ def __call__(self, data): nda_croppeds = data["nda_croppeds"] # perform calculation - analysis = deepcopy(self.get_report_format()) + report = deepcopy(self.get_report_format()) - analysis[IMAGE_STATS.SHAPE] = [list(nda.shape) for nda in ndas] - analysis[IMAGE_STATS.CHANNELS] = len(ndas) - analysis[IMAGE_STATS.CROPPED_SHAPE] = [list(nda_c.shape) for nda_c in nda_croppeds] - analysis[IMAGE_STATS.SPACING] = np.tile( + report[IMAGE_STATS.SHAPE] = [list(nda.shape) for nda in ndas] + report[IMAGE_STATS.CHANNELS] = len(ndas) + report[IMAGE_STATS.CROPPED_SHAPE] = [list(nda_c.shape) for nda_c in nda_croppeds] + report[IMAGE_STATS.SPACING] = np.tile( np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1] ).tolist() - analysis[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] + report[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] # logger.debug(f"Get image stats spent {time.time()-start}") - return analysis + return report class FgImageStatsCasesAnalyzer(Analyzer): @@ -201,10 +203,10 @@ def __call__(self, data): nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] # perform calculation - analysis = deepcopy(self.get_report_format()) + report = deepcopy(self.get_report_format()) - analysis[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] - return analysis + report[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] + return report class LabelStatsCaseAnalyzer(Analyzer): @@ -264,13 +266,13 @@ def __call__(self, data): for i, _ in enumerate(unique_label): detailed_label_stats[i][LABEL_STATS.PIXEL_PCT] /= pixel_sum - analysis = deepcopy(self.get_report_format()) - analysis[LABEL_STATS.LABEL_UID] = unique_label - analysis[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] - analysis[LABEL_STATS.LABEL] = detailed_label_stats + report = deepcopy(self.get_report_format()) + report[LABEL_STATS.LABEL_UID] = unique_label + report[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] + report[LABEL_STATS.LABEL] = detailed_label_stats # logger.debug(f"Get label stats spent {time.time()-start}") - return analysis + return report class ImageStatsSummaryAnalyzer(Analyzer): @@ -293,26 +295,26 @@ def __init__(self, case_analyzer_name: str, average: bool = True): self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) def __call__(self, data): - analysis = deepcopy(self.get_report_format()) + report = deepcopy(self.get_report_format()) axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) - analysis[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate( + report[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate( concat_val_to_np(data, [self.case, IMAGE_STATS.SHAPE]), dim=axis ) - analysis[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate( + report[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate( concat_val_to_np(data, [self.case, IMAGE_STATS.CROPPED_SHAPE]), dim=axis ) - analysis[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate( + report[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate( concat_val_to_np(data, [self.case, IMAGE_STATS.SPACING]), dim=axis ) axis = None if self.summary_average else 0 - op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... - analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + op_keys = report[IMAGE_STATS.INTENSITY].keys() # template, max/min/... + report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis ) - return analysis + return report class FgImageStatsSummaryAnalyzer(Analyzer): @@ -325,14 +327,14 @@ def __init__(self, case_analyzer_name: str, average=True): self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) def __call__(self, data): - analysis = deepcopy(self.get_report_format()) + report = deepcopy(self.get_report_format()) axis = None if self.summary_average else 0 - op_keys = analysis[IMAGE_STATS.INTENSITY].keys() # template, max/min/... - analysis[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + op_keys = report[IMAGE_STATS.INTENSITY].keys() # template, max/min/... + report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis ) - return analysis + return report class LabelStatsSummaryAnalyzer(Analyzer): @@ -367,13 +369,13 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data): - analysis = deepcopy(self.get_report_format()) + report = deepcopy(self.get_report_format()) unique_label = label_union(concat_val_to_np(data, [self.case, LABEL_STATS.LABEL_UID], flatten=True)) axis = None if self.summary_average else 0 - analysis[LABEL_STATS.LABEL_UID] = unique_label - op_keys = analysis[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... - analysis[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( + report[LABEL_STATS.LABEL_UID] = unique_label + op_keys = report[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... + report[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( concat_multikeys_to_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis ) @@ -392,7 +394,7 @@ def __call__(self, data): axis = None label_image_intensity = [self.case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] - op_keys = analysis[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].keys() + op_keys = report[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].keys() stats[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( concat_multikeys_to_dict(data, label_image_intensity, op_keys, allow_missing=True, flatten=True), dim=axis, @@ -400,6 +402,6 @@ def __call__(self, data): detailed_label_list.append(stats) - analysis[LABEL_STATS.LABEL] = detailed_label_list + report[LABEL_STATS.LABEL] = detailed_label_list - return analysis + return report diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index de063cf742..7d496ba109 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -16,17 +16,12 @@ import torch from monai import data -from monai.apps.auto3dseg.data_utils import datafold_read from monai.apps.utils import get_logger +from monai.auto3dseg.utils import datafold_read from monai.data.utils import no_collation from monai.utils import min_version, optional_import -yaml, _ = optional_import("yaml") tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") -measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) -cp, has_cp = optional_import("cupy") -cucim, has_cucim = optional_import("cucim") - logger = get_logger(module_name=__name__) __all__ = ["DataAnalyzer"] diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index a8fe099ad5..8f40f719e9 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -9,22 +9,25 @@ # See the License for the specific language governing permissions and # limitations under the License. -from copy import deepcopy import sys import tempfile import unittest +from copy import deepcopy from os import path import nibabel as nib import numpy as np import torch -from monai.auto3dseg.data_analyzer import DataAnalyzer +from monai import data from monai.auto3dseg.analyzer import Analyzer +from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations +from monai.auto3dseg.utils import datafold_read from monai.bundle import ConfigParser from monai.data import create_test_image_3d -from monai.transforms import Compose, LoadImaged, SimulateDelayd +from monai.data.utils import no_collation +from monai.transforms import Compose, LoadImaged device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 @@ -39,30 +42,50 @@ ], } + class TestOperations(Operations): """ Test example for user operation """ + def __init__(self) -> None: - self.data = { - "max": np.max, - "mean": np.mean, - "min": np.min, - } - + self.data = {"max": np.max, "mean": np.mean, "min": np.min} + + class TestAnalyzer(Analyzer): """ Test example for a simple Analyzer """ + def __init__(self, report_format): super().__init__(report_format) - + def __call__(self, data): report = deepcopy(self.get_report_format()) report["stats"] = self.ops["stats"].evaluate(data) return report +class TestImageAnalyzer(Analyzer): + """ + Test example for a simple Analyzer + """ + + def __init__(self, image_key="image"): + + self.image_key = image_key + report_format = {"stats": None} + + super().__init__(report_format) + self.update_ops("stats", TestOperations()) + + def __call__(self, data): + nda = data[self.image_key] + report = deepcopy(self.get_report_format()) + report["stats"] = self.ops["stats"].evaluate(nda) + return report + + class TestDataAnalyzer(unittest.TestCase): def setUp(self): self.test_dir = tempfile.TemporaryDirectory() @@ -113,16 +136,28 @@ def test_data_analyzer_from_yaml(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) def test_basic_analyzer_class(self): - test_data = np.random.rand(10,10) - report_format = { - "stats": None - } + test_data = np.random.rand(10, 10) + report_format = {"stats": None} user_analyzer = TestAnalyzer(report_format) user_analyzer.update_ops("stats", TestOperations()) result = user_analyzer(test_data) assert result["stats"]["max"] == np.max(test_data) - assert result["stats"]['min'] == np.min(test_data) - assert result["stats"]['mean'] == np.mean(test_data) + assert result["stats"]["min"] == np.min(test_data) + assert result["stats"]["mean"] == np.mean(test_data) + + def test_transform_analyzer_class(self): + transform_list = [LoadImaged(keys=["image"]), TestImageAnalyzer(image_key="image")] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=0, collate_fn=no_collation) + for batch_data in self.dataset: + result = transform(batch_data[0]) + assert "stats" in result + assert "max" in result["stats"] + assert "min" in result["stats"] + assert "mean" in result["stats"] def tearDown(self) -> None: self.test_dir.cleanup() From e5266c340778a48f7c6d90a413f2e712414856b3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 23 Aug 2022 07:30:30 +0000 Subject: [PATCH 112/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/auto3dseg/analyzer.py | 3 +-- monai/utils/enums.py | 1 - monai/utils/misc.py | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index d270e21d00..38d12cf580 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -11,7 +11,7 @@ from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict, Optional +from typing import Any, Dict import numpy as np import torch @@ -26,7 +26,6 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY -from monai.config.type_definitions import KeysCollection from monai.transforms.transform import MapTransform from monai.utils.enums import IMAGE_STATS, LABEL_STATS from monai.utils.misc import label_union diff --git a/monai/utils/enums.py b/monai/utils/enums.py index 12fa5b1a38..5476778d59 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -559,4 +559,3 @@ class LABEL_STATS(StrEnum): LABEL = "label" LABEL_SHAPE = "shape" LABEL_NCOMP = "ncomponents" - diff --git a/monai/utils/misc.py b/monai/utils/misc.py index 7e0538302c..5856e5f960 100644 --- a/monai/utils/misc.py +++ b/monai/utils/misc.py @@ -21,7 +21,7 @@ from collections.abc import Iterable from distutils.util import strtobool from pathlib import Path -from typing import Any, Callable, Dict, List, Optional, Sequence, Tuple, Union, cast +from typing import Any, Callable, List, Optional, Sequence, Tuple, Union, cast import numpy as np import torch From 2d807477f6e5b5a172ab74c6e309781e7fe1c2a5 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 18:12:05 +0800 Subject: [PATCH 113/150] fix missing MetaTensor support in unified operations Signed-off-by: Mingxin Zheng --- .../utils_pytorch_numpy_unification.py | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 53510243fa..affeefa09b 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -393,7 +393,7 @@ def unique(x: NdarrayTensor) -> NdarrayTensor: Args: x: array/tensor. """ - return torch.unique(x) if isinstance(x, torch.Tensor) else np.unique(x) # type: ignore + return np.unique(x) if isinstance(x, np.ndarray) else torch.unique(x) # type: ignore def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: @@ -414,9 +414,9 @@ def max(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - x: array/tensor. """ if dim is None: - return torch.max(x, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, **kwargs) # type: ignore + return np.max(x, **kwargs) if isinstance(x, np.ndarray) else torch.max(x, **kwargs) # type: ignore else: - return torch.max(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.max(x, axis=dim, **kwargs) # type: ignore + return np.max(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.max(x, dim, **kwargs) # type: ignore def mean(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: @@ -426,9 +426,9 @@ def mean(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) x: array/tensor. """ if dim is None: - return torch.mean(x, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, **kwargs) # type: ignore + return np.mean(x, **kwargs) if isinstance(x, np.ndarray) else torch.mean(x, **kwargs) # type: ignore else: - return torch.mean(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.mean(x, axis=dim, **kwargs) # type: ignore + return np.mean(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.mean(x, dim, **kwargs) # type: ignore def median(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: @@ -438,9 +438,9 @@ def median(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs x: array/tensor. """ if dim is None: - return torch.median(x, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, **kwargs) # type: ignore + return np.median(x, **kwargs) if isinstance(x, np.ndarray) else torch.median(x, **kwargs) # type: ignore else: - return torch.median(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.median(x, axis=dim, **kwargs) # type: ignore + return np.median(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.median(x, dim, **kwargs) # type: ignore def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: @@ -450,9 +450,9 @@ def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - x: array/tensor. """ if dim is None: - return torch.min(x, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, **kwargs) # type: ignore + return np.min(x, **kwargs) if isinstance(x, np.ndarray) else torch.min(x, **kwargs) # type: ignore else: - return torch.min(x, dim, **kwargs) if isinstance(x, torch.Tensor) else np.min(x, axis=dim, **kwargs) # type: ignore + return np.min(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.min(x, dim, **kwargs) # type: ignore def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NdarrayTensor: @@ -462,6 +462,17 @@ def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Opt x: array/tensor. """ if dim is None: - return torch.std(x, unbias) if isinstance(x, torch.Tensor) else np.std(x) # type: ignore + return np.std(x) if isinstance(x, np.ndarray) else torch.std(x, unbias) # type: ignore else: - return torch.std(x, dim, unbias) if isinstance(x, torch.Tensor) else np.std(x, axis=dim) # type: ignore + return np.std(x, axis=dim) if isinstance(x, np.ndarray) else torch.std(x, dim, unbias) # type: ignore + +def sum(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: + """`torch.sum` with equivalent implementation for numpy + + Args: + x: array/tensor. + """ + if dim is None: + return np.sum(x, **kwargs) if isinstance(x, np.ndarray) else torch.sum(x, **kwargs) # type: ignore + else: + return np.sum(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.sum(x, dim, **kwargs) # type: ignore From 7dabc0cf6ced0cb89214c79589010c5e6adaef6e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 23 Aug 2022 18:21:45 +0800 Subject: [PATCH 114/150] add docstrings and unit tests for case analyzers Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 142 +++++++++++++++++++++++++++++++----- monai/auto3dseg/utils.py | 33 ++++++++- tests/test_auto3dseg.py | 80 +++++++++++++++++++- 3 files changed, 230 insertions(+), 25 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 38d12cf580..787701a897 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -11,7 +11,7 @@ from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict +from typing import Any, Dict, Optional, Type import numpy as np import torch @@ -26,7 +26,9 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY +from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform +from monai.transforms.utils_pytorch_numpy_unification import unique, sum from monai.utils.enums import IMAGE_STATS, LABEL_STATS from monai.utils.misc import label_union @@ -47,13 +49,13 @@ def __init__(self, report_format: dict) -> None: self.report_format = report_format self.ops = ConfigParser({}) - def update_ops(self, key: str, op): + def update_ops(self, key: str, op: Type[Operations]): """ Register an statistical operation to the Analyzer and update the report_format Args: key: value key in the report. - op: Operation object. + op: Operation sub-class object that represents statistical operations. """ self.ops[key] = op @@ -64,14 +66,14 @@ def update_ops(self, key: str, op): self.report_format = parser.config - def update_ops_nested_label(self, nested_key, op): + def update_ops_nested_label(self, nested_key: str, op: Type[Operations]): """ Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys Args: nested_key: str that has format of 'key1#0#key2'. - op: statistical operation. + op: Operation sub-class object that represents statistical operations. """ keys = nested_key.split(ID_SEP_KEY) if len(keys) != 3: @@ -100,13 +102,13 @@ def get_report_format(self): return self.report_format @staticmethod - def unwrap_ops(func): + def unwrap_ops(func: Type[Operations]): """ Unwrap a function value and generates the same set keys in a dict when the function is actually called in runtime Args: - func: Operation. + func: Operation sub-class object that represents statistical operations. Returns: a dict with a set of keys. @@ -135,13 +137,34 @@ def resolve_format(self, report: dict): report[k] = v @abstractmethod - def __call__(self, data): + def __call__(self, data: Any): """Analyze the dict format dataset, return the summary report""" raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") class ImageStatsCaseAnalyzer(Analyzer): - def __init__(self, image_key, meta_key_postfix="_meta_dict"): + """ + Analyzer to extract image stats properties for each case(image). + + Args: + image_key: the key to find image data in the callable function input (data) + meta_key_postfix: the postfix to append for meta_dict ("image_meta_dict") + + Examples: + + .. code-block:: python + + import numpy as np + from monai.auto3dseg.analyzer import ImageStatsCaseAnalyzer + + input = {} + input['image'] = np.random.rand(1,30,30,30) + input['image_meta_dict'] = {'affine': np.eye(4)} + analyzer = ImageStatsCaseAnalyzer(image_key="image") + print(analyzer(input)) + + """ + def __init__(self, image_key: str, meta_key_postfix: Optional[str] = "_meta_dict"): self.image_key = image_key self.image_meta_key = self.image_key + meta_key_postfix @@ -158,6 +181,19 @@ def __init__(self, image_key, meta_key_postfix="_meta_dict"): self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) def __call__(self, data): + """ + Callable to execute the pre-defined functions + + Returns: + A dictionary. The dict has the key in self.report_format. The value of + IMAGE_STATS.INTENSITY is in a list format. Each element of the value list + has stats pre-defined by SampleOperations (max, min, ....) + + Note: + The stats operation uses numpy and torch to compute max, min, and other + functions. If the input has nan/inf, the stats results will be nan/inf. + + """ # from time import time # start = time.time() ndas = data[self.image_key] @@ -182,19 +218,50 @@ def __call__(self, data): class FgImageStatsCasesAnalyzer(Analyzer): - def __init__(self, image_key, label_key, meta_key_postfix="_meta_dict"): + """ + Analyzer to extract foreground label properties for each case(image and label). + + Args: + image_key: the key to find image data in the callable function input (data) + label_key: the key to find label data in the callable function input (data) + + Examples: + + .. code-block:: python + + import numpy as np + from monai.auto3dseg.analyzer import FgImageStatsCasesAnalyzer + + input = {} + input['image'] = np.random.rand(1,30,30,30) + input['label'] = np.ones([30,30,30]) + analyzer = FgImageStatsCasesAnalyzer(image_key='image', label_key='label') + print(analyzer(input)) + + """ + def __init__(self, image_key, label_key): self.image_key = image_key self.label_key = label_key - self.image_meta_key = self.image_key + meta_key_postfix - self.label_meta_key = self.label_key + meta_key_postfix report_format = {IMAGE_STATS.INTENSITY: None} super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) - def __call__(self, data): + def __call__(self, data) -> dict: + """ + Callable to execute the pre-defined functions + + Returns: + A dictionary. The dict has the key in self.report_format and value + in a list format. Each element of the value list has stats pre-defined + by SampleOperations (max, min, ....) + + Note: + The stats operation uses numpy and torch to compute max, min, and other + functions. If the input has nan/inf, the stats results will be nan/inf. + """ ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] @@ -209,12 +276,32 @@ def __call__(self, data): class LabelStatsCaseAnalyzer(Analyzer): - def __init__(self, image_key, label_key, meta_key_postfix="_meta_dict", do_ccp: bool = True): + """ + Analyzer to extract label stats properties for each case(image and label). + + Args: + image_key: the key to find image data in the callable function input (data) + label_key: the key to find label data in the callable function input (data) + do_ccp: performs connected component analysis. Default is True. + + Examples: + + .. code-block:: python + + import numpy as np + from monai.auto3dseg.analyzer import LabelStatsCaseAnalyzer + + input = {} + input['image'] = np.random.rand(1,30,30,30) + input['label'] = np.ones([30,30,30]) + analyzer = LabelStatsCaseAnalyzer(image_key='image', label_key='label') + print(analyzer(input)) + + """ + def __init__(self, image_key: str, label_key: str, do_ccp: Optional[bool] = True): self.image_key = image_key self.label_key = label_key - self.image_meta_key = self.image_key + meta_key_postfix - self.label_meta_key = self.label_key + meta_key_postfix self.do_ccp = do_ccp report_format = { @@ -234,11 +321,28 @@ def __init__(self, image_key, label_key, meta_key_postfix="_meta_dict", do_ccp: self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data): + """ + Callable to execute the pre-defined functions + + Returns: + A dictionary. The dict has the key in self.report_format and value + in a list format. Each element of the value list has stats pre-defined + by SampleOperations (max, min, ....) + + Note: + The stats operation uses numpy and torch to compute max, min, and other + functions. If the input has nan/inf, the stats results will be nan/inf. + """ ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_label = data[self.label_key] # (H,W,D) nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] - unique_label = torch.unique(ndas_label).data.cpu().numpy().astype(np.int8).tolist() + + unique_label = unique(ndas_label) + if isinstance(ndas_label, (MetaTensor, torch.Tensor)): + unique_label = unique_label.data.cpu().numpy() + + unique_label = unique_label.astype(np.int8).tolist() # start = time.time() detailed_label_stats = [] # each element is one label @@ -250,7 +354,9 @@ def __call__(self, data): label_dict[LABEL_STATS.IMAGE_INT] = [ self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas ] - pixel_num = torch.sum(mask_index).data.cpu().numpy() # pixel_percentage[index] + pixel_num = sum(mask_index) + if isinstance(pixel_num, (MetaTensor, torch.Tensor)): + pixel_num = pixel_num.data.cpu().numpy() # pixel_percentage[index] label_dict[LABEL_STATS.PIXEL_PCT] = pixel_num.astype(np.float64) pixel_sum += pixel_num if self.do_ccp: # apply connected component diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 8a4f5169b7..f9658a5daf 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -9,19 +9,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os -from copy import deepcopy from numbers import Number from typing import Any, Dict, List, Tuple, Union +import os import numpy as np import torch -from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import from monai.utils.misc import ImageMetaKey +from monai.bundle.config_parser import ConfigParser +from copy import deepcopy __all__ = [ "get_filename", @@ -30,7 +30,7 @@ "get_label_ccp", "concat_val_to_np", "concat_multikeys_to_dict", - "datafold_read", + "datafold_read" ] measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) @@ -249,3 +249,28 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: tr.append(d) return tr, val + + +def verify_report_format(report: dict, report_format: dict): + """ + Compares the report and the the report_format that has only keys + + Args: + report: dict that has real values + report_format: dict that only has keys and list-nested value + """ + for k_fmt, v_fmt in report_format.items(): + if k_fmt not in report: + return False + + v = report[k_fmt] + + if isinstance(v_fmt, list) and isinstance(v, list): + if len(v_fmt) != 1: + raise UserWarning('list length in report_format is not 1') + if len(v_fmt) > 0 and len(v) > 0: + return verify_report_format(v[0], v_fmt[0]) + else: + return False + + return True diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 8f40f719e9..a08b8b8f24 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -20,14 +20,24 @@ import torch from monai import data -from monai.auto3dseg.analyzer import Analyzer +from monai.auto3dseg import analyze_engine +from monai.auto3dseg.analyzer import Analyzer, ImageStatsCaseAnalyzer, FgImageStatsCasesAnalyzer, LabelStatsCaseAnalyzer from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations -from monai.auto3dseg.utils import datafold_read +from monai.auto3dseg.utils import datafold_read, verify_report_format from monai.bundle import ConfigParser from monai.data import create_test_image_3d from monai.data.utils import no_collation -from monai.transforms import Compose, LoadImaged +from monai.transforms import ( + Compose, + EnsureChannelFirstd, + EnsureTyped, + Lambdad, + LoadImaged, + Orientationd, + SqueezeDimd, + ToDeviced, +) device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 @@ -159,6 +169,70 @@ def test_transform_analyzer_class(self): assert "min" in result["stats"] assert "mean" in result["stats"] + def test_image_stats_case_analyzer(self): + analyzer = ImageStatsCaseAnalyzer(image_key="image") + transform_list = [ + LoadImaged(keys=["image"]), + EnsureChannelFirstd(keys=["image"]), # this creates label to be (1,H,W,D) + ToDeviced(keys=["image"], device=device, non_blocking=True), + Orientationd(keys=["image"], axcodes="RAS"), + EnsureTyped(keys=["image"], data_type="tensor"), + analyzer, + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + for batch_data in self.dataset: + report = transform(batch_data[0]) + report_format = analyzer.get_report_format() + assert verify_report_format(report, report_format) + + def test_foreground_image_stats_cases_analyzer(self): + analyzer = FgImageStatsCasesAnalyzer(image_key="image", label_key="label") + transform_list = [ + LoadImaged(keys=["image", "label"]), + EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) + ToDeviced(keys=["image", "label"], device=device, non_blocking=True), + Orientationd(keys=["image", "label"], axcodes="RAS"), + EnsureTyped(keys=["image", "label"], data_type="tensor"), + Lambdad(keys=["label"], func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), + SqueezeDimd(keys=["label"], dim=0), + analyzer, + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + for batch_data in self.dataset: + report = transform(batch_data[0]) + report_format = analyzer.get_report_format() + assert verify_report_format(report, report_format) + + def test_label_stats_case_analyzer(self): + analyzer = LabelStatsCaseAnalyzer(image_key="image", label_key="label") + transform_list = [ + LoadImaged(keys=["image", "label"]), + EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) + ToDeviced(keys=["image", "label"], device=device, non_blocking=True), + Orientationd(keys=["image", "label"], axcodes="RAS"), + EnsureTyped(keys=["image", "label"], data_type="tensor"), + Lambdad(keys=["label"], func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), + SqueezeDimd(keys=["label"], dim=0), + analyzer, + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + for batch_data in self.dataset: + report = transform(batch_data[0]) + report_format = analyzer.get_report_format() + assert verify_report_format(report, report_format) + def tearDown(self) -> None: self.test_dir.cleanup() From c0ef5f755ad4affdd8a0cea1c25ab258e1b97b1a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 00:23:14 +0800 Subject: [PATCH 115/150] add docstring, unit tests, minor refractoring Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 4 +- monai/auto3dseg/analyzer.py | 170 +++++++++++++++++++++--------- monai/auto3dseg/utils.py | 5 +- tests/test_auto3dseg.py | 63 ++++++++++- 4 files changed, 183 insertions(+), 59 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index bb8b6c94a3..5bd743d0e3 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -14,7 +14,7 @@ import torch from monai.auto3dseg.analyzer import ( - FgImageStatsCasesAnalyzer, + FgImageStatsCaseAnalyzer, FgImageStatsSummaryAnalyzer, ImageStatsCaseAnalyzer, ImageStatsSummaryAnalyzer, @@ -112,7 +112,7 @@ def __init__(self, image_key: str, label_key: str, meta_post_fix: str = "_meta_d if label_key is not None: super().update( { - "image_foreground_stats": FgImageStatsCasesAnalyzer(image_key, label_key), + "image_foreground_stats": FgImageStatsCaseAnalyzer(image_key, label_key), "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), } ) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 787701a897..ce8ecf4e9b 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -11,7 +11,7 @@ from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict, Optional, Type +from typing import Any, Dict, List, Optional, Type import numpy as np import torch @@ -217,7 +217,7 @@ def __call__(self, data): return report -class FgImageStatsCasesAnalyzer(Analyzer): +class FgImageStatsCaseAnalyzer(Analyzer): """ Analyzer to extract foreground label properties for each case(image and label). @@ -230,12 +230,12 @@ class FgImageStatsCasesAnalyzer(Analyzer): .. code-block:: python import numpy as np - from monai.auto3dseg.analyzer import FgImageStatsCasesAnalyzer + from monai.auto3dseg.analyzer import FgImageStatsCaseAnalyzer input = {} input['image'] = np.random.rand(1,30,30,30) input['label'] = np.ones([30,30,30]) - analyzer = FgImageStatsCasesAnalyzer(image_key='image', label_key='label') + analyzer = FgImageStatsCaseAnalyzer(image_key='image', label_key='label') print(analyzer(input)) """ @@ -329,7 +329,38 @@ def __call__(self, data): in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) - Note: + Examples: + output dict contains { + LABEL_STATS.LABEL_UID:[0,1,3], + LABEL_STATS.IMAGE_INT: {...}, + LABEL_STATS.LABEL:[ + { + LABEL_STATS.PIXEL_PCT: 0.8, + LABEL_STATS.IMAGE_INT: {...}, + LABEL_STATS.LABEL_SHAPE: [...], + LABEL_STATS.LABEL_NCOMP: 1 + } + { + LABEL_STATS.PIXEL_PCT: 0.1, + LABEL_STATS.IMAGE_INT: {...}, + LABEL_STATS.LABEL_SHAPE: [...], + LABEL_STATS.LABEL_NCOMP: 1 + } + { + LABEL_STATS.PIXEL_PCT: 0.1, + LABEL_STATS.IMAGE_INT: {...}, + LABEL_STATS.LABEL_SHAPE: [...], + LABEL_STATS.LABEL_NCOMP: 1 + } + ] + } + + Notes: + The label class_ID of the dictionary in LABEL_STATS.LABEL IS NOT the + index. Instead, the class_ID is the LABEL_STATS.LABEL_UID with the same + index. For instance, the last dict in LABEL_STATS.LABEL in the Examples + is 3, which is the last element under LABEL_STATS.LABEL_UID. + The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. """ @@ -381,8 +412,18 @@ def __call__(self, data): class ImageStatsSummaryAnalyzer(Analyzer): - def __init__(self, case_analyzer_name: str, average: bool = True): - self.case = case_analyzer_name + """ + Analyzer to process the values of specific key `key_in_case` in a list of dict. + Typically, the list of dict is the output of case analyzer under the same prefix + (ImageStatsCaseAnalyzer). + + Args: + key_in_case: the key of the to-process value in the dict + average: whether to average the statistical value across different image modalities. + + """ + def __init__(self, key_in_case: str, average: bool = True): + self.key_case = key_in_case self.summary_average = average report_format = { IMAGE_STATS.SHAPE: None, @@ -399,52 +440,78 @@ def __init__(self, case_analyzer_name: str, average: bool = True): self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - def __call__(self, data): + def __call__(self, data: List[Dict]): + """ + Callable to execute the pre-defined functions + + Returns: + A dictionary. The dict has the key in self.report_format and value + in a list format. Each element of the value list has stats pre-defined + by SampleOperations (max, min, ....) + + Examples: + output dict contains a dictionary for all of the following keys{ + IMAGE_STATS.SHAPE:{...} + IMAGE_STATS.CHANNELS: {...}, + IMAGE_STATS.CROPPED_SHAPE: {...}, + IMAGE_STATS.SPACING: {...}, + IMAGE_STATS.INTENSITY: {...}, + } + + Notes: + The stats operation uses numpy and torch to compute max, min, and other + functions. If the input has nan/inf, the stats results will be nan/inf. + """ + if not isinstance(data, list): + return ValueError(f"Callable {self.__class__} requires list inputs") + report = deepcopy(self.get_report_format()) - axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) - report[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate( - concat_val_to_np(data, [self.case, IMAGE_STATS.SHAPE]), dim=axis - ) - report[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate( - concat_val_to_np(data, [self.case, IMAGE_STATS.CROPPED_SHAPE]), dim=axis - ) - report[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate( - concat_val_to_np(data, [self.case, IMAGE_STATS.SPACING]), dim=axis - ) - - axis = None if self.summary_average else 0 + shape_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.SHAPE]) + crops_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.CROPPED_SHAPE]) + space_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.SPACING]) + op_keys = report[IMAGE_STATS.INTENSITY].keys() # template, max/min/... - report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis - ) + intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) + + report[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate(shape_np, + dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0) + report[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate(crops_np, + dim=(0, 1) if crops_np.ndim > 2 and self.summary_average else 0) + report[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate(space_np, + dim=(0, 1) if space_np.ndim > 2 and self.summary_average else 0) + report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, + dim=None if self.summary_average else 0) return report class FgImageStatsSummaryAnalyzer(Analyzer): - def __init__(self, case_analyzer_name: str, average=True): - self.case = case_analyzer_name + def __init__(self, key_in_case: str, average=True): + self.key_case = key_in_case self.summary_average = average report_format = {IMAGE_STATS.INTENSITY: None} super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) - def __call__(self, data): + def __call__(self, data: List[Dict]): + if not isinstance(data, list): + return ValueError(f"Callable {self.__class__} requires list inputs") + report = deepcopy(self.get_report_format()) - axis = None if self.summary_average else 0 op_keys = report[IMAGE_STATS.INTENSITY].keys() # template, max/min/... - report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate( - concat_multikeys_to_dict(data, [self.case, IMAGE_STATS.INTENSITY], op_keys), dim=axis - ) + intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) + + report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, + dim=None if self.summary_average else 0) return report class LabelStatsSummaryAnalyzer(Analyzer): - def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = True): - self.case = case_analyzer_name + def __init__(self, key_in_case: str, average: bool = True, do_ccp: bool = True): + self.key_case = key_in_case self.summary_average = average self.do_ccp = do_ccp @@ -473,37 +540,36 @@ def __init__(self, case_analyzer_name: str, average: bool = True, do_ccp: bool = id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.LABEL_NCOMP]) self.update_ops_nested_label(id_seq, SampleOperations()) - def __call__(self, data): + def __call__(self, data: List[Dict]): + if not isinstance(data, list): + return ValueError(f"Callable {self.__class__} requires list inputs") + report = deepcopy(self.get_report_format()) - unique_label = label_union(concat_val_to_np(data, [self.case, LABEL_STATS.LABEL_UID], flatten=True)) + uid_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL_UID], flatten=True) + unique_label = label_union(uid_np) - axis = None if self.summary_average else 0 report[LABEL_STATS.LABEL_UID] = unique_label op_keys = report[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... - report[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( - concat_multikeys_to_dict(data, [self.case, LABEL_STATS.IMAGE_INT], op_keys), dim=axis - ) + intst_dict = concat_multikeys_to_dict(data, [self.key_case, LABEL_STATS.IMAGE_INT], op_keys) + report[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate(intst_dict, + dim=None if self.summary_average else 0) detailed_label_list = [] for label_id in unique_label: stats = {} axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) - for key in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: - stats[key] = self.ops[LABEL_STATS.LABEL][0][key].evaluate( - concat_val_to_np( - data, [self.case, LABEL_STATS.LABEL, label_id, key], allow_missing=True, flatten=True - ), - dim=axis, - ) - - axis = None - label_image_intensity = [self.case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] + for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: + v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, k], + allow_missing=True, flatten=True) + stats[k] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, + dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + + intst_fixed_keys = [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] op_keys = report[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].keys() - stats[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( - concat_multikeys_to_dict(data, label_image_intensity, op_keys, allow_missing=True, flatten=True), - dim=axis, - ) + intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True, flatten=True) + stats[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate(intst_dict, + dim=None if self.summary_average else 0) detailed_label_list.append(stats) diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index f9658a5daf..ffeeaf6879 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -150,8 +150,7 @@ def concat_val_to_np(data_list: List[Dict], fixed_keys: List[Union[str, int]], f parser = ConfigParser(data) for i, key in enumerate(fixed_keys): - if isinstance(key, (int, np.integer)): - fixed_keys[i] = str(key) + fixed_keys[i] = str(key) val = parser.get(ID_SEP_KEY.join(fixed_keys)) @@ -178,7 +177,7 @@ def concat_val_to_np(data_list: List[Dict], fixed_keys: List[Union[str, int]], f np_list = [x for x in np_list if x is not None] if flatten: - ret = np.concatenate(np_list, axis=None) # when axis is None, numbers are flatten before use + ret = np.concatenate(np_list, axis=None) # when axis is None, numbers are flatten before use, axis = 1 for ncomponent else: ret = np.concatenate([np_list]) diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index a08b8b8f24..d4a01c7fc6 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -21,7 +21,16 @@ from monai import data from monai.auto3dseg import analyze_engine -from monai.auto3dseg.analyzer import Analyzer, ImageStatsCaseAnalyzer, FgImageStatsCasesAnalyzer, LabelStatsCaseAnalyzer +from monai.auto3dseg.analyzer import ( + Analyzer, + ImageStatsCaseAnalyzer, + FgImageStatsCaseAnalyzer, + LabelStatsCaseAnalyzer, + ImageStatsSummaryAnalyzer, + FgImageStatsSummaryAnalyzer, + LabelStatsSummaryAnalyzer, +) + from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations from monai.auto3dseg.utils import datafold_read, verify_report_format @@ -190,7 +199,7 @@ def test_image_stats_case_analyzer(self): assert verify_report_format(report, report_format) def test_foreground_image_stats_cases_analyzer(self): - analyzer = FgImageStatsCasesAnalyzer(image_key="image", label_key="label") + analyzer = FgImageStatsCaseAnalyzer(image_key="image", label_key="label") transform_list = [ LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) @@ -233,6 +242,56 @@ def test_label_stats_case_analyzer(self): report_format = analyzer.get_report_format() assert verify_report_format(report, report_format) + def test_fg_image_stats_summary_analyzer(self): + summary_analyzer = FgImageStatsSummaryAnalyzer("image_stats") + + transform_list = [ + LoadImaged(keys=["image"]), + EnsureChannelFirstd(keys=["image"]), # this creates label to be (1,H,W,D) + ToDeviced(keys=["image"], device=device, non_blocking=True), + Orientationd(keys=["image"], axcodes="RAS"), + EnsureTyped(keys=["image"], data_type="tensor"), + ImageStatsCaseAnalyzer(image_key="image"), + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + stats = [] + for batch_data in self.dataset: + report = transform(batch_data[0]) + stats.append({"image_stats": report}) + summary_report = summary_analyzer(stats) + report_format = summary_analyzer.get_report_format() + assert verify_report_format(summary_report, report_format) + + def image_stats_summary_analyzer(self): + summary_analyzer = ImageStatsSummaryAnalyzer("image_foreground_stats") + + transform_list = [ + LoadImaged(keys=["image", "label"]), + EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) + ToDeviced(keys=["image", "label"], device=device, non_blocking=True), + Orientationd(keys=["image", "label"], axcodes="RAS"), + EnsureTyped(keys=["image", "label"], data_type="tensor"), + Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), + SqueezeDimd(keys=["label"], dim=0), + FgImageStatsCaseAnalyzer(image_key="image", label_key="label"), + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + stats = [] + for batch_data in self.dataset: + report = transform(batch_data[0]) + stats.append({"image_foreground_stats": report}) + summary_report = summary_analyzer(stats) + report_format = summary_analyzer.get_report_format() + assert verify_report_format(summary_report, report_format) + def tearDown(self) -> None: self.test_dir.cleanup() From 9147b45f8ced287a1df42e62fb68e0b1aa010717 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 00:35:15 +0800 Subject: [PATCH 116/150] extend numpy operations for list object (in addition to nd.ndarray) Signed-off-by: Mingxin Zheng --- .../utils_pytorch_numpy_unification.py | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index affeefa09b..6aabcd0489 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -393,7 +393,7 @@ def unique(x: NdarrayTensor) -> NdarrayTensor: Args: x: array/tensor. """ - return np.unique(x) if isinstance(x, np.ndarray) else torch.unique(x) # type: ignore + return np.unique(x) if isinstance(x, (np.ndarray, list)) else torch.unique(x) # type: ignore def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: @@ -414,9 +414,9 @@ def max(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - x: array/tensor. """ if dim is None: - return np.max(x, **kwargs) if isinstance(x, np.ndarray) else torch.max(x, **kwargs) # type: ignore + return np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) # type: ignore else: - return np.max(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.max(x, dim, **kwargs) # type: ignore + return np.max(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, dim, **kwargs) # type: ignore def mean(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: @@ -426,9 +426,9 @@ def mean(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) x: array/tensor. """ if dim is None: - return np.mean(x, **kwargs) if isinstance(x, np.ndarray) else torch.mean(x, **kwargs) # type: ignore + return np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) # type: ignore else: - return np.mean(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.mean(x, dim, **kwargs) # type: ignore + return np.mean(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, dim, **kwargs) # type: ignore def median(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: @@ -438,9 +438,9 @@ def median(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs x: array/tensor. """ if dim is None: - return np.median(x, **kwargs) if isinstance(x, np.ndarray) else torch.median(x, **kwargs) # type: ignore + return np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) # type: ignore else: - return np.median(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.median(x, dim, **kwargs) # type: ignore + return np.median(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, dim, **kwargs) # type: ignore def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: @@ -450,9 +450,9 @@ def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - x: array/tensor. """ if dim is None: - return np.min(x, **kwargs) if isinstance(x, np.ndarray) else torch.min(x, **kwargs) # type: ignore + return np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) # type: ignore else: - return np.min(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.min(x, dim, **kwargs) # type: ignore + return np.min(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, dim, **kwargs) # type: ignore def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NdarrayTensor: @@ -462,9 +462,9 @@ def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Opt x: array/tensor. """ if dim is None: - return np.std(x) if isinstance(x, np.ndarray) else torch.std(x, unbias) # type: ignore + return np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) # type: ignore else: - return np.std(x, axis=dim) if isinstance(x, np.ndarray) else torch.std(x, dim, unbias) # type: ignore + return np.std(x, axis=dim) if isinstance(x, (np.ndarray, list)) else torch.std(x, dim, unbias) # type: ignore def sum(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.sum` with equivalent implementation for numpy @@ -473,6 +473,6 @@ def sum(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - x: array/tensor. """ if dim is None: - return np.sum(x, **kwargs) if isinstance(x, np.ndarray) else torch.sum(x, **kwargs) # type: ignore + return np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) # type: ignore else: - return np.sum(x, axis=dim, **kwargs) if isinstance(x, np.ndarray) else torch.sum(x, dim, **kwargs) # type: ignore + return np.sum(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, dim, **kwargs) # type: ignore From c0941cf8ecdb638407560380f5a5dcdc5ddc7c10 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 02:04:00 +0800 Subject: [PATCH 117/150] force numerical values in basic types and list Signed-off-by: Mingxin Zheng --- monai/auto3dseg/operations.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 0232446aa1..44e31fcb95 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -9,10 +9,12 @@ # See the License for the specific language governing permissions and # limitations under the License. +import torch from collections import UserDict from functools import partial -from typing import Any +from typing import Any, Optional +from monai.data.meta_tensor import MetaTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std @@ -23,7 +25,14 @@ def evaluate(self, data: Any, **kwargs) -> dict: class SampleOperations(Operations): # todo: missing value/nan/inf - def __init__(self) -> None: + """ + Apply statistical operation to a sample (image/ndarray/tensor) + + Args: + to_list: all numerical values in the output dict will be list of basic types (int, floats, ...) if to_list is True + """ + def __init__(self, to_list: Optional[bool] = True) -> None: + self.convert_to_np = True self.data = { "max": max, "mean": mean, @@ -47,6 +56,8 @@ def evaluate(self, data: Any, **kwargs) -> dict: if isinstance(v, tuple) and cache in ret: ret.update({k: ret[cache][idx]}) + for k, v in ret.items(): + ret[k] = v.tolist() return ret From 5d0afdef90c99304fb11b2eea0b71b014f566e59 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 02:15:30 +0800 Subject: [PATCH 118/150] fix StrEnum key can not be written to yaml Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 123 +++++++++++++++++++++--------------- 1 file changed, 72 insertions(+), 51 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index ce8ecf4e9b..018651c27a 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -11,7 +11,7 @@ from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict, List, Optional, Type +from typing import Any, Dict, List, Optional, Type, Union import numpy as np import torch @@ -29,7 +29,7 @@ from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform from monai.transforms.utils_pytorch_numpy_unification import unique, sum -from monai.utils.enums import IMAGE_STATS, LABEL_STATS +from monai.utils.enums import IMAGE_STATS, LABEL_STATS, StrEnum from monai.utils.misc import label_union @@ -46,10 +46,14 @@ class Analyzer(MapTransform, ABC): """ def __init__(self, report_format: dict) -> None: super().__init__(None) - self.report_format = report_format + parser = ConfigParser(report_format) + self.report_format = parser.config self.ops = ConfigParser({}) - def update_ops(self, key: str, op: Type[Operations]): + def update_ops( + self, + key: Union[str, Type[StrEnum]], + op: Type[Operations]): """ Register an statistical operation to the Analyzer and update the report_format @@ -66,7 +70,10 @@ def update_ops(self, key: str, op: Type[Operations]): self.report_format = parser.config - def update_ops_nested_label(self, nested_key: str, op: Type[Operations]): + def update_ops_nested_label( + self, + nested_key: Union[str, Type[StrEnum]], + op: Type[Operations]): """ Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys @@ -170,15 +177,15 @@ def __init__(self, image_key: str, meta_key_postfix: Optional[str] = "_meta_dict self.image_meta_key = self.image_key + meta_key_postfix report_format = { - IMAGE_STATS.SHAPE: None, - IMAGE_STATS.CHANNELS: None, - IMAGE_STATS.CROPPED_SHAPE: None, - IMAGE_STATS.SPACING: None, - IMAGE_STATS.INTENSITY: None, + str(IMAGE_STATS.SHAPE): None, + str(IMAGE_STATS.CHANNELS): None, + str(IMAGE_STATS.CROPPED_SHAPE): None, + str(IMAGE_STATS.SPACING): None, + str(IMAGE_STATS.INTENSITY): None, } super().__init__(report_format) - self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) + self.update_ops(str(IMAGE_STATS.INTENSITY), SampleOperations()) def __call__(self, data): """ @@ -205,13 +212,13 @@ def __call__(self, data): # perform calculation report = deepcopy(self.get_report_format()) - report[IMAGE_STATS.SHAPE] = [list(nda.shape) for nda in ndas] - report[IMAGE_STATS.CHANNELS] = len(ndas) - report[IMAGE_STATS.CROPPED_SHAPE] = [list(nda_c.shape) for nda_c in nda_croppeds] - report[IMAGE_STATS.SPACING] = np.tile( + report[str(IMAGE_STATS.SHAPE)] = [list(nda.shape) for nda in ndas] + report[str(IMAGE_STATS.CHANNELS)] = len(ndas) + report[str(IMAGE_STATS.CROPPED_SHAPE)] = [list(nda_c.shape) for nda_c in nda_croppeds] + report[str(IMAGE_STATS.SPACING)] = np.tile( np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1] ).tolist() - report[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] + report[str(IMAGE_STATS.INTENSITY)] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] # logger.debug(f"Get image stats spent {time.time()-start}") return report @@ -244,7 +251,7 @@ def __init__(self, image_key, label_key): self.image_key = image_key self.label_key = label_key - report_format = {IMAGE_STATS.INTENSITY: None} + report_format = {str(IMAGE_STATS.INTENSITY): None} super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) @@ -271,7 +278,7 @@ def __call__(self, data) -> dict: # perform calculation report = deepcopy(self.get_report_format()) - report[IMAGE_STATS.INTENSITY] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] + report[str(IMAGE_STATS.INTENSITY)] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] return report @@ -305,14 +312,21 @@ def __init__(self, image_key: str, label_key: str, do_ccp: Optional[bool] = True self.do_ccp = do_ccp report_format = { - LABEL_STATS.LABEL_UID: None, - LABEL_STATS.IMAGE_INT: None, - LABEL_STATS.LABEL: [{LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None}], + str(LABEL_STATS.LABEL_UID): None, + str(LABEL_STATS.IMAGE_INT): None, + str(LABEL_STATS.LABEL): [ + { + str(LABEL_STATS.PIXEL_PCT): None, + str(LABEL_STATS.IMAGE_INT): None + }], } if self.do_ccp: - report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_SHAPE: None}) - report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_NCOMP: None}) + report_format[str(LABEL_STATS.LABEL)][0].update( + { + str(LABEL_STATS.LABEL_SHAPE): None, + str(LABEL_STATS.LABEL_NCOMP): None + }) super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) @@ -403,9 +417,9 @@ def __call__(self, data): detailed_label_stats[i][LABEL_STATS.PIXEL_PCT] /= pixel_sum report = deepcopy(self.get_report_format()) - report[LABEL_STATS.LABEL_UID] = unique_label - report[LABEL_STATS.IMAGE_INT] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] - report[LABEL_STATS.LABEL] = detailed_label_stats + report[str(LABEL_STATS.LABEL_UID)] = unique_label + report[str(LABEL_STATS.IMAGE_INT)] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] + report[str(LABEL_STATS.LABEL)] = detailed_label_stats # logger.debug(f"Get label stats spent {time.time()-start}") return report @@ -426,11 +440,11 @@ def __init__(self, key_in_case: str, average: bool = True): self.key_case = key_in_case self.summary_average = average report_format = { - IMAGE_STATS.SHAPE: None, - IMAGE_STATS.CHANNELS: None, - IMAGE_STATS.CROPPED_SHAPE: None, - IMAGE_STATS.SPACING: None, - IMAGE_STATS.INTENSITY: None, + str(IMAGE_STATS.SHAPE): None, + str(IMAGE_STATS.CHANNELS): None, + str(IMAGE_STATS.CROPPED_SHAPE): None, + str(IMAGE_STATS.SPACING): None, + str(IMAGE_STATS.INTENSITY): None, } super().__init__(report_format) @@ -471,16 +485,16 @@ def __call__(self, data: List[Dict]): crops_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.CROPPED_SHAPE]) space_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.SPACING]) - op_keys = report[IMAGE_STATS.INTENSITY].keys() # template, max/min/... + op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) - report[IMAGE_STATS.SHAPE] = self.ops[IMAGE_STATS.SHAPE].evaluate(shape_np, + report[str(IMAGE_STATS.SHAPE)] = self.ops[IMAGE_STATS.SHAPE].evaluate(shape_np, dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0) - report[IMAGE_STATS.CROPPED_SHAPE] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate(crops_np, + report[str(IMAGE_STATS.CROPPED_SHAPE)] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate(crops_np, dim=(0, 1) if crops_np.ndim > 2 and self.summary_average else 0) - report[IMAGE_STATS.SPACING] = self.ops[IMAGE_STATS.SPACING].evaluate(space_np, + report[str(IMAGE_STATS.SPACING)] = self.ops[IMAGE_STATS.SPACING].evaluate(space_np, dim=(0, 1) if space_np.ndim > 2 and self.summary_average else 0) - report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, + report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, dim=None if self.summary_average else 0) return report @@ -491,7 +505,7 @@ def __init__(self, key_in_case: str, average=True): self.key_case = key_in_case self.summary_average = average - report_format = {IMAGE_STATS.INTENSITY: None} + report_format = {str(IMAGE_STATS.INTENSITY): None} super().__init__(report_format) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) @@ -500,10 +514,10 @@ def __call__(self, data: List[Dict]): return ValueError(f"Callable {self.__class__} requires list inputs") report = deepcopy(self.get_report_format()) - op_keys = report[IMAGE_STATS.INTENSITY].keys() # template, max/min/... + op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) - report[IMAGE_STATS.INTENSITY] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, + report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, dim=None if self.summary_average else 0) return report @@ -516,13 +530,20 @@ def __init__(self, key_in_case: str, average: bool = True, do_ccp: bool = True): self.do_ccp = do_ccp report_format = { - LABEL_STATS.LABEL_UID: None, - LABEL_STATS.IMAGE_INT: None, - LABEL_STATS.LABEL: [{LABEL_STATS.PIXEL_PCT: None, LABEL_STATS.IMAGE_INT: None}], + str(LABEL_STATS.LABEL_UID): None, + str(LABEL_STATS.IMAGE_INT): None, + str(LABEL_STATS.LABEL): [ + { + str(LABEL_STATS.PIXEL_PCT): None, + str(LABEL_STATS.IMAGE_INT): None + }], } if self.do_ccp: - report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_SHAPE: None}) - report_format[LABEL_STATS.LABEL][0].update({LABEL_STATS.LABEL_NCOMP: None}) + report_format[str(LABEL_STATS.LABEL)][0].update( + { + str(LABEL_STATS.LABEL_SHAPE): None, + str(LABEL_STATS.LABEL_NCOMP): None + }) super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) @@ -548,10 +569,10 @@ def __call__(self, data: List[Dict]): uid_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL_UID], flatten=True) unique_label = label_union(uid_np) - report[LABEL_STATS.LABEL_UID] = unique_label - op_keys = report[LABEL_STATS.IMAGE_INT].keys() # template, max/min/... + report[str(LABEL_STATS.LABEL_UID)] = unique_label + op_keys = report[str(LABEL_STATS.IMAGE_INT)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, LABEL_STATS.IMAGE_INT], op_keys) - report[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.IMAGE_INT].evaluate(intst_dict, + report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate(intst_dict, dim=None if self.summary_average else 0) detailed_label_list = [] @@ -562,17 +583,17 @@ def __call__(self, data: List[Dict]): for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, k], allow_missing=True, flatten=True) - stats[k] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, + stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) intst_fixed_keys = [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] - op_keys = report[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].keys() + op_keys = report[str(LABEL_STATS.LABEL)][0][LABEL_STATS.IMAGE_INT].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True, flatten=True) - stats[LABEL_STATS.IMAGE_INT] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate(intst_dict, + stats[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate(intst_dict, dim=None if self.summary_average else 0) detailed_label_list.append(stats) - report[LABEL_STATS.LABEL] = detailed_label_list + report[str(LABEL_STATS.LABEL)] = detailed_label_list return report From 128d89a82e203b299c00a8c21b22bbdf5cd2e7be Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 02:22:08 +0800 Subject: [PATCH 119/150] misc fix StrEnum key can not be written to yaml Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 018651c27a..6f2a79654b 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -396,18 +396,18 @@ def __call__(self, data): label_dict: Dict[str, Any] = {} mask_index = ndas_label == index - label_dict[LABEL_STATS.IMAGE_INT] = [ + label_dict[str(LABEL_STATS.IMAGE_INT)] = [ self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas ] pixel_num = sum(mask_index) if isinstance(pixel_num, (MetaTensor, torch.Tensor)): pixel_num = pixel_num.data.cpu().numpy() # pixel_percentage[index] - label_dict[LABEL_STATS.PIXEL_PCT] = pixel_num.astype(np.float64) + label_dict[str(LABEL_STATS.PIXEL_PCT)] = pixel_num.astype(np.float64) pixel_sum += pixel_num if self.do_ccp: # apply connected component shape_list, ncomponents = get_label_ccp(mask_index) - label_dict[LABEL_STATS.LABEL_SHAPE] = shape_list - label_dict[LABEL_STATS.LABEL_NCOMP] = ncomponents + label_dict[str(LABEL_STATS.LABEL_SHAPE)] = shape_list + label_dict[str(LABEL_STATS.LABEL_NCOMP)] = ncomponents detailed_label_stats.append(label_dict) # logger.debug(f" label {index} stats takes {time.time() - s}") From b49151c48c2d84ea3d97c78b27c0dcf1881c1dbb Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 02:36:10 +0800 Subject: [PATCH 120/150] misc fix for pixel_percentage Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 6f2a79654b..51a65008b6 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -390,8 +390,9 @@ def __call__(self, data): unique_label = unique_label.astype(np.int8).tolist() # start = time.time() - detailed_label_stats = [] # each element is one label + label_substats = [] # each element is one label pixel_sum = 0 + pixel_arr = [] for index in unique_label: label_dict: Dict[str, Any] = {} mask_index = ndas_label == index @@ -399,27 +400,24 @@ def __call__(self, data): label_dict[str(LABEL_STATS.IMAGE_INT)] = [ self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas ] - pixel_num = sum(mask_index) - if isinstance(pixel_num, (MetaTensor, torch.Tensor)): - pixel_num = pixel_num.data.cpu().numpy() # pixel_percentage[index] - label_dict[str(LABEL_STATS.PIXEL_PCT)] = pixel_num.astype(np.float64) - pixel_sum += pixel_num + pixel_count = sum(mask_index) + pixel_arr.append(pixel_count) + pixel_sum += pixel_count if self.do_ccp: # apply connected component shape_list, ncomponents = get_label_ccp(mask_index) label_dict[str(LABEL_STATS.LABEL_SHAPE)] = shape_list label_dict[str(LABEL_STATS.LABEL_NCOMP)] = ncomponents - detailed_label_stats.append(label_dict) + label_substats.append(label_dict) # logger.debug(f" label {index} stats takes {time.time() - s}") - # total_percent = np.sum(list(pixel_percentage.values())) for i, _ in enumerate(unique_label): - detailed_label_stats[i][LABEL_STATS.PIXEL_PCT] /= pixel_sum + label_substats[i].update({str(LABEL_STATS.PIXEL_PCT): float(pixel_arr[i]/pixel_sum)}) report = deepcopy(self.get_report_format()) report[str(LABEL_STATS.LABEL_UID)] = unique_label report[str(LABEL_STATS.IMAGE_INT)] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] - report[str(LABEL_STATS.LABEL)] = detailed_label_stats + report[str(LABEL_STATS.LABEL)] = label_substats # logger.debug(f"Get label stats spent {time.time()-start}") return report From 19df8056ffbbddc36401ad58f20d29e7ede32187 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 04:06:45 +0800 Subject: [PATCH 121/150] fix report results and StrEnums for data_analyzer Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 4 ++-- monai/auto3dseg/analyzer.py | 29 +++++++++++++------------- monai/auto3dseg/data_analyzer.py | 6 +++--- monai/auto3dseg/operations.py | 2 +- monai/auto3dseg/utils.py | 21 +++++++++++++------ monai/utils/misc.py | 4 ++-- tests/test_auto3dseg.py | 34 +++++++++++++++++++++++++++---- 7 files changed, 67 insertions(+), 33 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index 5bd743d0e3..75d4efa3a9 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -103,8 +103,8 @@ def __init__(self, image_key: str, label_key: str, meta_post_fix: str = "_meta_d super().update( { - DATA_STATS.BY_CASE_IMAGE_PATH: lambda data: get_filename(data, meta_key=image_meta_key), - DATA_STATS.BY_CASE_LABEL_PATH: lambda data: get_filename(data, meta_key=label_meta_key), + str(DATA_STATS.BY_CASE_IMAGE_PATH): lambda data: get_filename(data, meta_key=image_meta_key), + str(DATA_STATS.BY_CASE_LABEL_PATH): lambda data: get_filename(data, meta_key=label_meta_key), "image_stats": ImageStatsCaseAnalyzer(image_key), } ) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 51a65008b6..cbc7ca60ec 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -479,19 +479,13 @@ def __call__(self, data: List[Dict]): report = deepcopy(self.get_report_format()) - shape_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.SHAPE]) - crops_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.CROPPED_SHAPE]) - space_np = concat_val_to_np(data, [self.key_case, IMAGE_STATS.SPACING]) + for k in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: + v_np = concat_val_to_np(data, [self.key_case, k]) + report[str(k)] = self.ops[k].evaluate(v_np, + dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) - - report[str(IMAGE_STATS.SHAPE)] = self.ops[IMAGE_STATS.SHAPE].evaluate(shape_np, - dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0) - report[str(IMAGE_STATS.CROPPED_SHAPE)] = self.ops[IMAGE_STATS.CROPPED_SHAPE].evaluate(crops_np, - dim=(0, 1) if crops_np.ndim > 2 and self.summary_average else 0) - report[str(IMAGE_STATS.SPACING)] = self.ops[IMAGE_STATS.SPACING].evaluate(space_np, - dim=(0, 1) if space_np.ndim > 2 and self.summary_average else 0) report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, dim=None if self.summary_average else 0) @@ -564,10 +558,10 @@ def __call__(self, data: List[Dict]): return ValueError(f"Callable {self.__class__} requires list inputs") report = deepcopy(self.get_report_format()) - uid_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL_UID], flatten=True) + uid_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL_UID], axis=None, ragged=True) unique_label = label_union(uid_np) - report[str(LABEL_STATS.LABEL_UID)] = unique_label + op_keys = report[str(LABEL_STATS.IMAGE_INT)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, LABEL_STATS.IMAGE_INT], op_keys) report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate(intst_dict, @@ -578,15 +572,20 @@ def __call__(self, data: List[Dict]): for label_id in unique_label: stats = {} axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) - for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_SHAPE, LABEL_STATS.LABEL_NCOMP]: + for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_NCOMP]: v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, k], - allow_missing=True, flatten=True) + allow_missing=True) stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], + ragged=True, allow_missing=True) + stats[str(LABEL_STATS.LABEL_SHAPE)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, + dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + intst_fixed_keys = [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] op_keys = report[str(LABEL_STATS.LABEL)][0][LABEL_STATS.IMAGE_INT].keys() - intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True, flatten=True) + intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) stats[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate(intst_dict, dim=None if self.summary_average else 0) diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 7d496ba109..cf4af8fcb4 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -126,13 +126,13 @@ def get_all_case_stats(self): ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation ) - result = {DATA_STATS.SUMMARY: {}, DATA_STATS.BY_CASE: []} + result = {str(DATA_STATS.SUMMARY): {}, str(DATA_STATS.BY_CASE): []} case_engine = SegAnalyzeCaseEngine(self.image_key, self.label_key, device=self.device) for batch_data in self.dataset: - result[DATA_STATS.BY_CASE].append(case_engine(batch_data[0])) + result[str(DATA_STATS.BY_CASE)].append(case_engine(batch_data[0])) summary_engine = SegAnalyzeSummaryEngine(self.image_key, self.label_key) - result[DATA_STATS.SUMMARY] = summary_engine(result[DATA_STATS.BY_CASE]) + result[str(DATA_STATS.SUMMARY)] = summary_engine(result[str(DATA_STATS.BY_CASE)]) return result diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 44e31fcb95..f4fc6e9847 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -76,4 +76,4 @@ def __init__(self) -> None: } def evaluate(self, data: Any, **kwargs) -> dict: - return {k: v(data[k], **kwargs) for k, v in self.data.items() if callable(v)} + return {k: v(data[k], **kwargs).tolist() for k, v in self.data.items() if callable(v)} diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index ffeeaf6879..083f34abec 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -10,7 +10,7 @@ # limitations under the License. from numbers import Number -from typing import Any, Dict, List, Tuple, Union +from typing import Any, Dict, List, Optional, Tuple, Union import os import numpy as np @@ -128,14 +128,20 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An return shape_list, ncomponents -def concat_val_to_np(data_list: List[Dict], fixed_keys: List[Union[str, int]], flatten=False, allow_missing=False): +def concat_val_to_np( + data_list: List[Dict], + fixed_keys: List[Union[str, int]], + ragged: Optional[bool] = False, + allow_missing: Optional[bool] = False, + **kwargs + ): """ Get the nested value in a list of dictionary that shares the same structure. Args: data_list: a list of dictionary {key1: {key2: np.ndarray}}. fixed_keys: a list of keys that records to path to the value in the dict elements. - flatten: if True, numbers are flattened before concat. + ragged: if True, numbers can be in list of lists or ragged format so concat mode needs change. allow_missing: if True, it will return a None if the value cannot be found Returns: @@ -176,10 +182,13 @@ def concat_val_to_np(data_list: List[Dict], fixed_keys: List[Union[str, int]], f if allow_missing: np_list = [x for x in np_list if x is not None] - if flatten: - ret = np.concatenate(np_list, axis=None) # when axis is None, numbers are flatten before use, axis = 1 for ncomponent + if len(np_list) == 0: + return np.array(0) + + if ragged: + ret = np.concatenate(np_list, **kwargs) else: - ret = np.concatenate([np_list]) + ret = np.concatenate([np_list], **kwargs) return ret diff --git a/monai/utils/misc.py b/monai/utils/misc.py index 5856e5f960..ee9353df3b 100644 --- a/monai/utils/misc.py +++ b/monai/utils/misc.py @@ -526,9 +526,9 @@ def label_union(x: List) -> List: """ Compute the union of class IDs in label and generate a list to include all class IDs Args: - x: a list of lists that has number (usually class_id) in each + x: a list of numbers (for example, class_IDs) Returns a list showing the union (the union the class IDs) """ - return list(set.union(set(np.array(x)))) + return list(set.union(set(np.array(x).tolist()))) diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index d4a01c7fc6..61dd7cd857 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -242,8 +242,8 @@ def test_label_stats_case_analyzer(self): report_format = analyzer.get_report_format() assert verify_report_format(report, report_format) - def test_fg_image_stats_summary_analyzer(self): - summary_analyzer = FgImageStatsSummaryAnalyzer("image_stats") + def test_image_stats_summary_analyzer(self): + summary_analyzer = ImageStatsSummaryAnalyzer("image_stats") transform_list = [ LoadImaged(keys=["image"]), @@ -266,8 +266,8 @@ def test_fg_image_stats_summary_analyzer(self): report_format = summary_analyzer.get_report_format() assert verify_report_format(summary_report, report_format) - def image_stats_summary_analyzer(self): - summary_analyzer = ImageStatsSummaryAnalyzer("image_foreground_stats") + def test_fg_image_stats_summary_analyzer(self): + summary_analyzer = FgImageStatsSummaryAnalyzer("image_foreground_stats") transform_list = [ LoadImaged(keys=["image", "label"]), @@ -292,6 +292,32 @@ def image_stats_summary_analyzer(self): report_format = summary_analyzer.get_report_format() assert verify_report_format(summary_report, report_format) + def test_label_stats_summary_analyzer(self): + summary_analyzer = LabelStatsSummaryAnalyzer("label_stats") + + transform_list = [ + LoadImaged(keys=["image", "label"]), + EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) + ToDeviced(keys=["image", "label"], device=device, non_blocking=True), + Orientationd(keys=["image", "label"], axcodes="RAS"), + EnsureTyped(keys=["image", "label"], data_type="tensor"), + Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), + SqueezeDimd(keys=["label"], dim=0), + LabelStatsCaseAnalyzer(image_key="image", label_key="label"), + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + stats = [] + for batch_data in self.dataset: + report = transform(batch_data[0]) + stats.append({"label_stats": report}) + summary_report = summary_analyzer(stats) + report_format = summary_analyzer.get_report_format() + assert verify_report_format(summary_report, report_format) + def tearDown(self) -> None: self.test_dir.cleanup() From 8150bd067bc314be481f826f86c76566fdffae6d Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 10:46:41 +0800 Subject: [PATCH 122/150] autofix Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 145 +++++++++--------- monai/auto3dseg/operations.py | 4 +- monai/auto3dseg/utils.py | 26 ++-- .../utils_pytorch_numpy_unification.py | 5 +- tests/test_auto3dseg.py | 23 ++- 5 files changed, 102 insertions(+), 101 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index cbc7ca60ec..30feaa662c 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -28,7 +28,7 @@ from monai.bundle.utils import ID_SEP_KEY from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform -from monai.transforms.utils_pytorch_numpy_unification import unique, sum +from monai.transforms.utils_pytorch_numpy_unification import sum, unique from monai.utils.enums import IMAGE_STATS, LABEL_STATS, StrEnum from monai.utils.misc import label_union @@ -44,16 +44,14 @@ class Analyzer(MapTransform, ABC): report_format: a dictionary that outlines the key structures of the report format. """ + def __init__(self, report_format: dict) -> None: super().__init__(None) parser = ConfigParser(report_format) self.report_format = parser.config self.ops = ConfigParser({}) - def update_ops( - self, - key: Union[str, Type[StrEnum]], - op: Type[Operations]): + def update_ops(self, key: Union[str, Type[StrEnum]], op: Type[Operations]): """ Register an statistical operation to the Analyzer and update the report_format @@ -70,10 +68,7 @@ def update_ops( self.report_format = parser.config - def update_ops_nested_label( - self, - nested_key: Union[str, Type[StrEnum]], - op: Type[Operations]): + def update_ops_nested_label(self, nested_key: Union[str, Type[StrEnum]], op: Type[Operations]): """ Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys @@ -151,12 +146,12 @@ def __call__(self, data: Any): class ImageStatsCaseAnalyzer(Analyzer): """ - Analyzer to extract image stats properties for each case(image). + Analyzer to extract image stats properties for each case(image). Args: - image_key: the key to find image data in the callable function input (data) + image_key: the key to find image data in the callable function input (data) meta_key_postfix: the postfix to append for meta_dict ("image_meta_dict") - + Examples: .. code-block:: python @@ -171,6 +166,7 @@ class ImageStatsCaseAnalyzer(Analyzer): print(analyzer(input)) """ + def __init__(self, image_key: str, meta_key_postfix: Optional[str] = "_meta_dict"): self.image_key = image_key @@ -192,14 +188,14 @@ def __call__(self, data): Callable to execute the pre-defined functions Returns: - A dictionary. The dict has the key in self.report_format. The value of - IMAGE_STATS.INTENSITY is in a list format. Each element of the value list + A dictionary. The dict has the key in self.report_format. The value of + IMAGE_STATS.INTENSITY is in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) - + Note: The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. - + """ # from time import time # start = time.time() @@ -226,10 +222,10 @@ def __call__(self, data): class FgImageStatsCaseAnalyzer(Analyzer): """ - Analyzer to extract foreground label properties for each case(image and label). + Analyzer to extract foreground label properties for each case(image and label). Args: - image_key: the key to find image data in the callable function input (data) + image_key: the key to find image data in the callable function input (data) label_key: the key to find label data in the callable function input (data) Examples: @@ -244,8 +240,9 @@ class FgImageStatsCaseAnalyzer(Analyzer): input['label'] = np.ones([30,30,30]) analyzer = FgImageStatsCaseAnalyzer(image_key='image', label_key='label') print(analyzer(input)) - + """ + def __init__(self, image_key, label_key): self.image_key = image_key @@ -264,7 +261,7 @@ def __call__(self, data) -> dict: A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) - + Note: The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. @@ -278,19 +275,21 @@ def __call__(self, data) -> dict: # perform calculation report = deepcopy(self.get_report_format()) - report[str(IMAGE_STATS.INTENSITY)] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds] + report[str(IMAGE_STATS.INTENSITY)] = [ + self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds + ] return report class LabelStatsCaseAnalyzer(Analyzer): """ - Analyzer to extract label stats properties for each case(image and label). + Analyzer to extract label stats properties for each case(image and label). Args: - image_key: the key to find image data in the callable function input (data) - label_key: the key to find label data in the callable function input (data) + image_key: the key to find image data in the callable function input (data) + label_key: the key to find label data in the callable function input (data) do_ccp: performs connected component analysis. Default is True. - + Examples: .. code-block:: python @@ -303,8 +302,9 @@ class LabelStatsCaseAnalyzer(Analyzer): input['label'] = np.ones([30,30,30]) analyzer = LabelStatsCaseAnalyzer(image_key='image', label_key='label') print(analyzer(input)) - + """ + def __init__(self, image_key: str, label_key: str, do_ccp: Optional[bool] = True): self.image_key = image_key @@ -314,19 +314,13 @@ def __init__(self, image_key: str, label_key: str, do_ccp: Optional[bool] = True report_format = { str(LABEL_STATS.LABEL_UID): None, str(LABEL_STATS.IMAGE_INT): None, - str(LABEL_STATS.LABEL): [ - { - str(LABEL_STATS.PIXEL_PCT): None, - str(LABEL_STATS.IMAGE_INT): None - }], + str(LABEL_STATS.LABEL): [{str(LABEL_STATS.PIXEL_PCT): None, str(LABEL_STATS.IMAGE_INT): None}], } if self.do_ccp: report_format[str(LABEL_STATS.LABEL)][0].update( - { - str(LABEL_STATS.LABEL_SHAPE): None, - str(LABEL_STATS.LABEL_NCOMP): None - }) + {str(LABEL_STATS.LABEL_SHAPE): None, str(LABEL_STATS.LABEL_NCOMP): None} + ) super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) @@ -342,10 +336,10 @@ def __call__(self, data): A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) - + Examples: output dict contains { - LABEL_STATS.LABEL_UID:[0,1,3], + LABEL_STATS.LABEL_UID:[0,1,3], LABEL_STATS.IMAGE_INT: {...}, LABEL_STATS.LABEL:[ { @@ -368,9 +362,9 @@ def __call__(self, data): } ] } - + Notes: - The label class_ID of the dictionary in LABEL_STATS.LABEL IS NOT the + The label class_ID of the dictionary in LABEL_STATS.LABEL IS NOT the index. Instead, the class_ID is the LABEL_STATS.LABEL_UID with the same index. For instance, the last dict in LABEL_STATS.LABEL in the Examples is 3, which is the last element under LABEL_STATS.LABEL_UID. @@ -386,7 +380,7 @@ def __call__(self, data): unique_label = unique(ndas_label) if isinstance(ndas_label, (MetaTensor, torch.Tensor)): unique_label = unique_label.data.cpu().numpy() - + unique_label = unique_label.astype(np.int8).tolist() # start = time.time() @@ -412,11 +406,13 @@ def __call__(self, data): # logger.debug(f" label {index} stats takes {time.time() - s}") for i, _ in enumerate(unique_label): - label_substats[i].update({str(LABEL_STATS.PIXEL_PCT): float(pixel_arr[i]/pixel_sum)}) + label_substats[i].update({str(LABEL_STATS.PIXEL_PCT): float(pixel_arr[i] / pixel_sum)}) report = deepcopy(self.get_report_format()) report[str(LABEL_STATS.LABEL_UID)] = unique_label - report[str(LABEL_STATS.IMAGE_INT)] = [self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds] + report[str(LABEL_STATS.IMAGE_INT)] = [ + self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds + ] report[str(LABEL_STATS.LABEL)] = label_substats # logger.debug(f"Get label stats spent {time.time()-start}") @@ -425,7 +421,7 @@ def __call__(self, data): class ImageStatsSummaryAnalyzer(Analyzer): """ - Analyzer to process the values of specific key `key_in_case` in a list of dict. + Analyzer to process the values of specific key `key_in_case` in a list of dict. Typically, the list of dict is the output of case analyzer under the same prefix (ImageStatsCaseAnalyzer). @@ -434,6 +430,7 @@ class ImageStatsSummaryAnalyzer(Analyzer): average: whether to average the statistical value across different image modalities. """ + def __init__(self, key_in_case: str, average: bool = True): self.key_case = key_in_case self.summary_average = average @@ -460,10 +457,10 @@ def __call__(self, data: List[Dict]): A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) - + Examples: output dict contains a dictionary for all of the following keys{ - IMAGE_STATS.SHAPE:{...} + IMAGE_STATS.SHAPE:{...} IMAGE_STATS.CHANNELS: {...}, IMAGE_STATS.CROPPED_SHAPE: {...}, IMAGE_STATS.SPACING: {...}, @@ -481,13 +478,13 @@ def __call__(self, data: List[Dict]): for k in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: v_np = concat_val_to_np(data, [self.key_case, k]) - report[str(k)] = self.ops[k].evaluate(v_np, - dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + report[str(k)] = self.ops[k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) - report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, - dim=None if self.summary_average else 0) + report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + intst_dict, dim=None if self.summary_average else 0 + ) return report @@ -509,8 +506,9 @@ def __call__(self, data: List[Dict]): op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) - report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate(intst_dict, - dim=None if self.summary_average else 0) + report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + intst_dict, dim=None if self.summary_average else 0 + ) return report @@ -524,18 +522,12 @@ def __init__(self, key_in_case: str, average: bool = True, do_ccp: bool = True): report_format = { str(LABEL_STATS.LABEL_UID): None, str(LABEL_STATS.IMAGE_INT): None, - str(LABEL_STATS.LABEL): [ - { - str(LABEL_STATS.PIXEL_PCT): None, - str(LABEL_STATS.IMAGE_INT): None - }], + str(LABEL_STATS.LABEL): [{str(LABEL_STATS.PIXEL_PCT): None, str(LABEL_STATS.IMAGE_INT): None}], } if self.do_ccp: report_format[str(LABEL_STATS.LABEL)][0].update( - { - str(LABEL_STATS.LABEL_SHAPE): None, - str(LABEL_STATS.LABEL_NCOMP): None - }) + {str(LABEL_STATS.LABEL_SHAPE): None, str(LABEL_STATS.LABEL_NCOMP): None} + ) super().__init__(report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) @@ -564,8 +556,9 @@ def __call__(self, data: List[Dict]): op_keys = report[str(LABEL_STATS.IMAGE_INT)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.key_case, LABEL_STATS.IMAGE_INT], op_keys) - report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate(intst_dict, - dim=None if self.summary_average else 0) + report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( + intst_dict, dim=None if self.summary_average else 0 + ) detailed_label_list = [] @@ -573,21 +566,27 @@ def __call__(self, data: List[Dict]): stats = {} axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_NCOMP]: - v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, k], - allow_missing=True) - stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, - dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) - - v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], - ragged=True, allow_missing=True) - stats[str(LABEL_STATS.LABEL_SHAPE)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate(v_np, - dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, k], allow_missing=True) + stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate( + v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 + ) + + v_np = concat_val_to_np( + data, + [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], + ragged=True, + allow_missing=True, + ) + stats[str(LABEL_STATS.LABEL_SHAPE)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate( + v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 + ) intst_fixed_keys = [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] op_keys = report[str(LABEL_STATS.LABEL)][0][LABEL_STATS.IMAGE_INT].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) - stats[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate(intst_dict, - dim=None if self.summary_average else 0) + stats[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( + intst_dict, dim=None if self.summary_average else 0 + ) detailed_label_list.append(stats) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index f4fc6e9847..54fbf2236a 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -9,11 +9,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import torch from collections import UserDict from functools import partial from typing import Any, Optional +import torch + from monai.data.meta_tensor import MetaTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std @@ -31,6 +32,7 @@ class SampleOperations(Operations): Args: to_list: all numerical values in the output dict will be list of basic types (int, floats, ...) if to_list is True """ + def __init__(self, to_list: Optional[bool] = True) -> None: self.convert_to_np = True self.data = { diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 083f34abec..606f94d29b 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -9,19 +9,19 @@ # See the License for the specific language governing permissions and # limitations under the License. +import os +from copy import deepcopy from numbers import Number from typing import Any, Dict, List, Optional, Tuple, Union -import os import numpy as np import torch +from monai.bundle.config_parser import ConfigParser from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import from monai.utils.misc import ImageMetaKey -from monai.bundle.config_parser import ConfigParser -from copy import deepcopy __all__ = [ "get_filename", @@ -30,7 +30,7 @@ "get_label_ccp", "concat_val_to_np", "concat_multikeys_to_dict", - "datafold_read" + "datafold_read", ] measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) @@ -129,12 +129,12 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An def concat_val_to_np( - data_list: List[Dict], - fixed_keys: List[Union[str, int]], - ragged: Optional[bool] = False, - allow_missing: Optional[bool] = False, - **kwargs - ): + data_list: List[Dict], + fixed_keys: List[Union[str, int]], + ragged: Optional[bool] = False, + allow_missing: Optional[bool] = False, + **kwargs, +): """ Get the nested value in a list of dictionary that shares the same structure. @@ -272,13 +272,13 @@ def verify_report_format(report: dict, report_format: dict): return False v = report[k_fmt] - + if isinstance(v_fmt, list) and isinstance(v, list): if len(v_fmt) != 1: - raise UserWarning('list length in report_format is not 1') + raise UserWarning("list length in report_format is not 1") if len(v_fmt) > 0 and len(v) > 0: return verify_report_format(v[0], v_fmt[0]) else: return False - + return True diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 6aabcd0489..9ae20e26ff 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -452,7 +452,7 @@ def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - if dim is None: return np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) # type: ignore else: - return np.min(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, dim, **kwargs) # type: ignore + return np.min(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, dim, **kwargs) # type: ignore def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NdarrayTensor: @@ -466,6 +466,7 @@ def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Opt else: return np.std(x, axis=dim) if isinstance(x, (np.ndarray, list)) else torch.std(x, dim, unbias) # type: ignore + def sum(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.sum` with equivalent implementation for numpy @@ -475,4 +476,4 @@ def sum(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) - if dim is None: return np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) # type: ignore else: - return np.sum(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, dim, **kwargs) # type: ignore + return np.sum(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, dim, **kwargs) # type: ignore diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 61dd7cd857..e3a3e594de 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -22,15 +22,14 @@ from monai import data from monai.auto3dseg import analyze_engine from monai.auto3dseg.analyzer import ( - Analyzer, - ImageStatsCaseAnalyzer, - FgImageStatsCaseAnalyzer, - LabelStatsCaseAnalyzer, - ImageStatsSummaryAnalyzer, + Analyzer, + FgImageStatsCaseAnalyzer, FgImageStatsSummaryAnalyzer, + ImageStatsCaseAnalyzer, + ImageStatsSummaryAnalyzer, + LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, ) - from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations from monai.auto3dseg.utils import datafold_read, verify_report_format @@ -181,7 +180,7 @@ def test_transform_analyzer_class(self): def test_image_stats_case_analyzer(self): analyzer = ImageStatsCaseAnalyzer(image_key="image") transform_list = [ - LoadImaged(keys=["image"]), + LoadImaged(keys=["image"]), EnsureChannelFirstd(keys=["image"]), # this creates label to be (1,H,W,D) ToDeviced(keys=["image"], device=device, non_blocking=True), Orientationd(keys=["image"], axcodes="RAS"), @@ -201,7 +200,7 @@ def test_image_stats_case_analyzer(self): def test_foreground_image_stats_cases_analyzer(self): analyzer = FgImageStatsCaseAnalyzer(image_key="image", label_key="label") transform_list = [ - LoadImaged(keys=["image", "label"]), + LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) ToDeviced(keys=["image", "label"], device=device, non_blocking=True), Orientationd(keys=["image", "label"], axcodes="RAS"), @@ -223,7 +222,7 @@ def test_foreground_image_stats_cases_analyzer(self): def test_label_stats_case_analyzer(self): analyzer = LabelStatsCaseAnalyzer(image_key="image", label_key="label") transform_list = [ - LoadImaged(keys=["image", "label"]), + LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) ToDeviced(keys=["image", "label"], device=device, non_blocking=True), Orientationd(keys=["image", "label"], axcodes="RAS"), @@ -246,7 +245,7 @@ def test_image_stats_summary_analyzer(self): summary_analyzer = ImageStatsSummaryAnalyzer("image_stats") transform_list = [ - LoadImaged(keys=["image"]), + LoadImaged(keys=["image"]), EnsureChannelFirstd(keys=["image"]), # this creates label to be (1,H,W,D) ToDeviced(keys=["image"], device=device, non_blocking=True), Orientationd(keys=["image"], axcodes="RAS"), @@ -270,7 +269,7 @@ def test_fg_image_stats_summary_analyzer(self): summary_analyzer = FgImageStatsSummaryAnalyzer("image_foreground_stats") transform_list = [ - LoadImaged(keys=["image", "label"]), + LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) ToDeviced(keys=["image", "label"], device=device, non_blocking=True), Orientationd(keys=["image", "label"], axcodes="RAS"), @@ -296,7 +295,7 @@ def test_label_stats_summary_analyzer(self): summary_analyzer = LabelStatsSummaryAnalyzer("label_stats") transform_list = [ - LoadImaged(keys=["image", "label"]), + LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) ToDeviced(keys=["image", "label"], device=device, non_blocking=True), Orientationd(keys=["image", "label"], axcodes="RAS"), From eb7fb87eaa65871a9a6074a3b507805a5829ef7d Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 11:42:00 +0800 Subject: [PATCH 123/150] add docstring and unit tests for operations Signed-off-by: Mingxin Zheng --- monai/auto3dseg/operations.py | 77 ++++++++++++++++++++++++++++++++--- monai/auto3dseg/utils.py | 2 +- tests/test_auto3dseg.py | 50 ++++++++++++++++++++++- 3 files changed, 122 insertions(+), 7 deletions(-) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 54fbf2236a..f388b8e7ab 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -20,7 +20,22 @@ class Operations(UserDict): + """ + Base class of operation + """ def evaluate(self, data: Any, **kwargs) -> dict: + """ + For key-value pairs in the self.data, if the value is a callable, + then this function will apply the callable to the input data. + The result will be written under the same key under the output dict. + + Args: + data: input data + + Returns: + a dictionary which has same keys as the self.data if the value + is callable + """ return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} @@ -29,12 +44,28 @@ class SampleOperations(Operations): """ Apply statistical operation to a sample (image/ndarray/tensor) - Args: - to_list: all numerical values in the output dict will be list of basic types (int, floats, ...) if to_list is True + Notes: + Percentile operation uses a partial function that embeds different kwargs (q). + In order to print the result nicely, data_addon is added to map the numbers + generated by percentile to different keys ("percentile_00_5" for example). + Annotation of the postfix means the percentage for percentile computation. + For example, _00_5 means 0.5% and _99_5 means 99.5%. + + Example: + + .. code-block:: python + # use the existing operations + import numpy as np + op = SampleOperations() + data_np = np.random.rand(10, 10).astype(np.float64) + print(op.evaluate(data_np)) + + # add a new operation + op.update({"sum": np.sum}) + print(op.evaluate(data_np)) """ - def __init__(self, to_list: Optional[bool] = True) -> None: - self.convert_to_np = True + def __init__(self) -> None: self.data = { "max": max, "mean": mean, @@ -51,6 +82,13 @@ def __init__(self, to_list: Optional[bool] = True) -> None: } def evaluate(self, data: Any, **kwargs) -> dict: + """ + Applies the callables to the data, and convert the + numerics to list or Python numeric types (int/float). + + Args: + data: input data + """ ret = super().evaluate(data, **kwargs) for k, v in self.data_addon.items(): cache = v[0] @@ -64,6 +102,28 @@ def evaluate(self, data: Any, **kwargs) -> dict: class SummaryOperations(Operations): + """ + Apply statistical operation to summarize a dict. The key-value looks like: {"max", "min" + ,"mean", ....}. The value may contain multiple values in a list format. Then this operation + will apply the operation to the list. Typically, the dict is generated by multiple + `SampleOperation` and `concat_multikeys_to_dict` functions. + + Examples: + + .. code-block:: python + import numpy as np + data = { + "min": np.random.rand(4), + "max": np.random.rand(4), + "mean": np.random.rand(4), + "sum": np.random.rand(4), + } + op = SummaryOperations() + print(op.evaluate(data)) # "sum" is not registerred yet, so it won't contain "sum" + + op.update({"sum", np.sum}) + print(op.evaluate(data)) # output has "sum" + """ def __init__(self) -> None: self.data = { "max": max, @@ -78,4 +138,11 @@ def __init__(self) -> None: } def evaluate(self, data: Any, **kwargs) -> dict: - return {k: v(data[k], **kwargs).tolist() for k, v in self.data.items() if callable(v)} + """ + Applies the callables to the data, and convert the + numerics to list or Python numeric types (int/float). + + Args: + data: input data + """ + return {k: v(data[k], **kwargs).tolist() for k, v in self.data.items() if (callable(v) and k in data)} diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 606f94d29b..3b8c2dec2e 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -183,7 +183,7 @@ def concat_val_to_np( np_list = [x for x in np_list if x is not None] if len(np_list) == 0: - return np.array(0) + return np.array([0]) if ragged: ret = np.concatenate(np_list, **kwargs) diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index e3a3e594de..0498f5855f 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -31,10 +31,11 @@ LabelStatsSummaryAnalyzer, ) from monai.auto3dseg.data_analyzer import DataAnalyzer -from monai.auto3dseg.operations import Operations +from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations from monai.auto3dseg.utils import datafold_read, verify_report_format from monai.bundle import ConfigParser from monai.data import create_test_image_3d +from monai.data.meta_tensor import MetaTensor from monai.data.utils import no_collation from monai.transforms import ( Compose, @@ -46,6 +47,7 @@ SqueezeDimd, ToDeviced, ) +from numbers import Number device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 @@ -153,6 +155,52 @@ def test_data_analyzer_from_yaml(self): assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_basic_operation_class(self): + op = TestOperations() + test_data = np.random.rand(10, 10).astype(np.float64) + test_ret_1 = op.evaluate(test_data) + test_ret_2 = op.evaluate(test_data, axis=0) + assert isinstance(test_ret_1, dict) and isinstance(test_ret_2, dict) + assert ("max" in test_ret_1) and ("max" in test_ret_2) + assert ("mean" in test_ret_1) and ("mean" in test_ret_2) + assert ("min" in test_ret_1) and ("min" in test_ret_2) + assert isinstance(test_ret_1['max'], np.float64) + assert isinstance(test_ret_2['max'], np.ndarray) + assert test_ret_1['max'].ndim == 0 + assert test_ret_2['max'].ndim == 1 + + def test_sample_operations(self): + op = SampleOperations() + test_data_np = np.random.rand(10, 10).astype(np.float64) + test_data_mt = MetaTensor(test_data_np, device=device) + test_ret_np = op.evaluate(test_data_np) + test_ret_mt = op.evaluate(test_data_mt) + assert isinstance(test_ret_np['max'], Number) + assert isinstance(test_ret_np['percentile'], list) + assert isinstance(test_ret_mt['max'], Number) + assert isinstance(test_ret_mt['percentile'], list) + + op.update({"sum": np.sum}) + test_ret_np = op.evaluate(test_data_np) + assert "sum" in test_ret_np + + def test_summary_operations(self): + op = SummaryOperations() + test_dict = { + "min": [0, 1, 2, 3], + "max": [2, 3, 4, 5], + "mean": [1, 2, 3, 4], + "sum": [2, 4, 6, 8], + } + test_ret = op.evaluate(test_dict) + assert isinstance(test_ret['max'], Number) + assert isinstance(test_ret['min'], Number) + + op.update({"sum": np.sum}) + test_ret = op.evaluate(test_dict) + assert "sum" in test_ret + assert isinstance(test_ret['sum'], Number) + def test_basic_analyzer_class(self): test_data = np.random.rand(10, 10) report_format = {"stats": None} From 3e5c65587593f3f1897930f52bec209aaaab695d Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 17:57:06 +0800 Subject: [PATCH 124/150] make AnalyzerEngine a subclass of Compose Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 148 +++++++++++----------------- monai/auto3dseg/analyzer.py | 155 ++++++++++++++++++++++-------- monai/auto3dseg/data_analyzer.py | 108 +++++++++++++++++---- monai/utils/enums.py | 7 +- tests/test_auto3dseg.py | 137 +++++++++++++++++++------- 5 files changed, 367 insertions(+), 188 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index 75d4efa3a9..a1f56b76cd 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -9,9 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict - -import torch +from typing import Dict, List from monai.auto3dseg.analyzer import ( FgImageStatsCaseAnalyzer, @@ -20,113 +18,77 @@ ImageStatsSummaryAnalyzer, LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, + FilenameCaseAnalyzer, ) from monai.auto3dseg.utils import get_filename -from monai.transforms import ( - Compose, - EnsureChannelFirstd, - EnsureTyped, - Lambdad, - LoadImaged, - Orientationd, - SqueezeDimd, - ToDeviced, -) +from monai.transforms import Compose from monai.utils.enums import DATA_STATS -class AnalyzeEngine: +class SegAnalyzeEngine(Compose): """ - AnalyzeEngine is a base class to serialize the operations for data analysis in Auto3Dseg pipeline. + SegAnalyzeEngine serializes the operations for data analysis in Auto3Dseg pipeline. It loads + two types of analyzer functions and execuate differently. The first type of analyzer is + CaseAnalyzer which is similar to traditional monai transforms. It can be composed with other + transforms to process the data dict which has image/label keys. The second type of analyzer + is SummaryAnalyzer which works only on a list of dictionary. Each dictionary is the output + of the case analyzers on a single dataset. Args: - data: a dict-type data to run analysis on - - Examples: - - .. code-block:: python - - import numpy as np - from monai.auto3dseg.analyze_engine import AnalyzeEngine - - engine = AnalyzeEngine() - engine.update({"max": np.max}) - engine.update({"min": np.min}) - - input = np.array([1,2,3,4]) - print(engine(input)) - + image_key: a string that user specify for the image. The DataAnalyzer will look it up in the + datalist to locate the image files of the dataset. + label_key: a string that user specify for the label. The DataAnalyzer will look it up in the + datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer + will skip looking for labels and all label-related operations. + do_ccp: apply the connected component algorithm to process the labels/images """ - def __init__(self) -> None: - self.analyzers = {} - self.transform = None + def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: - def update(self, analyzer: Dict[str, callable]): - self.analyzers.update(analyzer) + self.image_key = image_key + self.label_key = label_key - def __call__(self, data): - if self.transform: - data = self.transform(data) + self.summary_analyzers = [] + super().__init__() - ret = {} - for k, analyzer in self.analyzers.items(): - if callable(analyzer): - ret.update({k: analyzer(data)}) - elif isinstance(analyzer, str): - ret.update({k: analyzer}) - return ret + self.add_analyzer( + FilenameCaseAnalyzer(image_key, DATA_STATS.BY_CASE_IMAGE_PATH), None + ) + self.add_analyzer( + FilenameCaseAnalyzer(label_key, DATA_STATS.BY_CASE_LABEL_PATH), None + ) + self.add_analyzer( + ImageStatsCaseAnalyzer(image_key), ImageStatsSummaryAnalyzer() + ) + if label_key is None: + return -class SegAnalyzeCaseEngine(AnalyzeEngine): - def __init__(self, image_key: str, label_key: str, meta_post_fix: str = "_meta_dict", device: str = "cuda") -> None: + self.add_analyzer( + FgImageStatsCaseAnalyzer(image_key, label_key), FgImageStatsSummaryAnalyzer() + ) - super().__init__() - keys = [image_key] if label_key is None else [image_key, label_key] - - transform_list = [ - LoadImaged(keys=keys), - EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - ToDeviced(keys=keys, device=device, non_blocking=True), - Orientationd(keys=keys, axcodes="RAS"), - EnsureTyped(keys=keys, data_type="tensor"), - Lambdad(keys=label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x) - if label_key - else None, - SqueezeDimd(keys=["label"], dim=0) if label_key else None, - ] - - self.transform = Compose(list(filter(None, transform_list))) - - image_meta_key = image_key + meta_post_fix - label_meta_key = label_key + meta_post_fix if label_key else None - - super().update( - { - str(DATA_STATS.BY_CASE_IMAGE_PATH): lambda data: get_filename(data, meta_key=image_meta_key), - str(DATA_STATS.BY_CASE_LABEL_PATH): lambda data: get_filename(data, meta_key=label_meta_key), - "image_stats": ImageStatsCaseAnalyzer(image_key), - } + self.add_analyzer( + LabelStatsCaseAnalyzer(image_key, label_key, do_ccp=do_ccp), LabelStatsSummaryAnalyzer(do_ccp=do_ccp) ) - if label_key is not None: - super().update( - { - "image_foreground_stats": FgImageStatsCaseAnalyzer(image_key, label_key), - "label_stats": LabelStatsCaseAnalyzer(image_key, label_key), - } - ) + def add_analyzer(self, case_analyzer, summary_analzyer): + self.transforms += (case_analyzer, ) + self.summary_analyzers.append(summary_analzyer) + def summarize(self, data: List[Dict]): + if not isinstance(data, list): + raise ValueError(f"{self.__class__} summarize function needs input to be a list of dict") -class SegAnalyzeSummaryEngine(AnalyzeEngine): - def __init__(self, image_key: str, label_key: str, average=True): - super().__init__() - super().update({"image_stats": ImageStatsSummaryAnalyzer("image_stats", average=average)}) - - if label_key is not None: - super().update( - { - "image_foreground_stats": FgImageStatsSummaryAnalyzer("image_foreground_stats", average=average), - "label_stats": LabelStatsSummaryAnalyzer("label_stats", average=average), - } - ) + report = {} + if len(data) == 0: + return report + + if not isinstance(data[0], dict): + raise ValueError(f"{self.__class__} summarize function needs a list of dict. Now we have {type(data[0])}") + + for analyzer in self.summary_analyzers: + if callable(analyzer): + report.update({analyzer.stats_name: analyzer(data)}) + + return report \ No newline at end of file diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 30feaa662c..dd245c538b 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -26,12 +26,12 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY +from monai.config.type_definitions import KeysCollection from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform from monai.transforms.utils_pytorch_numpy_unification import sum, unique from monai.utils.enums import IMAGE_STATS, LABEL_STATS, StrEnum -from monai.utils.misc import label_union - +from monai.utils.misc import ImageMetaKey, label_union class Analyzer(MapTransform, ABC): """ @@ -45,10 +45,11 @@ class Analyzer(MapTransform, ABC): """ - def __init__(self, report_format: dict) -> None: + def __init__(self, stats_name: str, report_format: dict) -> None: super().__init__(None) parser = ConfigParser(report_format) self.report_format = parser.config + self.stats_name = stats_name self.ops = ConfigParser({}) def update_ops(self, key: Union[str, Type[StrEnum]], op: Type[Operations]): @@ -167,10 +168,17 @@ class ImageStatsCaseAnalyzer(Analyzer): """ - def __init__(self, image_key: str, meta_key_postfix: Optional[str] = "_meta_dict"): + def __init__(self, + image_key: str, + stats_name: str = "image_stats", + meta_key_postfix: Optional[str] = "meta_dict" + ) -> None: + + if not isinstance(image_key, str): + raise ValueError("image_key input must be str") self.image_key = image_key - self.image_meta_key = self.image_key + meta_key_postfix + self.image_meta_key = f"{self.image_key}_{meta_key_postfix}" report_format = { str(IMAGE_STATS.SHAPE): None, @@ -180,7 +188,7 @@ def __init__(self, image_key: str, meta_key_postfix: Optional[str] = "_meta_dict str(IMAGE_STATS.INTENSITY): None, } - super().__init__(report_format) + super().__init__(stats_name, report_format) self.update_ops(str(IMAGE_STATS.INTENSITY), SampleOperations()) def __call__(self, data): @@ -197,13 +205,13 @@ def __call__(self, data): functions. If the input has nan/inf, the stats results will be nan/inf. """ + d = dict(data) # from time import time # start = time.time() ndas = data[self.image_key] ndas = [ndas[i] for i in range(ndas.shape[0])] - if "nda_croppeds" not in data: - data["nda_croppeds"] = [get_foreground_image(nda) for nda in ndas] - nda_croppeds = data["nda_croppeds"] + if "nda_croppeds" not in d: + nda_croppeds = [get_foreground_image(nda) for nda in ndas] # perform calculation report = deepcopy(self.get_report_format()) @@ -217,7 +225,8 @@ def __call__(self, data): report[str(IMAGE_STATS.INTENSITY)] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] # logger.debug(f"Get image stats spent {time.time()-start}") - return report + d[self.stats_name] = report + return d class FgImageStatsCaseAnalyzer(Analyzer): @@ -243,14 +252,18 @@ class FgImageStatsCaseAnalyzer(Analyzer): """ - def __init__(self, image_key, label_key): + def __init__(self, + image_key: str, + label_key: str, + stats_name: str = "image_foreground_stats", + ): self.image_key = image_key self.label_key = label_key - + report_format = {str(IMAGE_STATS.INTENSITY): None} - super().__init__(report_format) + super().__init__(stats_name, report_format) self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) def __call__(self, data) -> dict: @@ -267,9 +280,11 @@ def __call__(self, data) -> dict: functions. If the input has nan/inf, the stats results will be nan/inf. """ - ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) + d = dict(data) + + ndas = d[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] - ndas_label = data[self.label_key] # (H,W,D) + ndas_label = d[self.label_key] # (H,W,D) nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] # perform calculation @@ -278,7 +293,9 @@ def __call__(self, data) -> dict: report[str(IMAGE_STATS.INTENSITY)] = [ self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds ] - return report + + d[self.stats_name] = report + return d class LabelStatsCaseAnalyzer(Analyzer): @@ -305,7 +322,11 @@ class LabelStatsCaseAnalyzer(Analyzer): """ - def __init__(self, image_key: str, label_key: str, do_ccp: Optional[bool] = True): + def __init__(self, + image_key: str, + label_key: str, + stats_name: str = "label_stats", + do_ccp: Optional[bool] = True): self.image_key = image_key self.label_key = label_key @@ -322,7 +343,7 @@ def __init__(self, image_key: str, label_key: str, do_ccp: Optional[bool] = True {str(LABEL_STATS.LABEL_SHAPE): None, str(LABEL_STATS.LABEL_NCOMP): None} ) - super().__init__(report_format) + super().__init__(stats_name, report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.IMAGE_INT]) @@ -372,9 +393,11 @@ def __call__(self, data): The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. """ - ndas = data[self.image_key] # (1,H,W,D) or (C,H,W,D) + d = dict(data) + + ndas = d[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] - ndas_label = data[self.label_key] # (H,W,D) + ndas_label = d[self.label_key] # (H,W,D) nda_foregrounds = [get_foreground_label(nda, ndas_label) for nda in ndas] unique_label = unique(ndas_label) @@ -415,24 +438,27 @@ def __call__(self, data): ] report[str(LABEL_STATS.LABEL)] = label_substats + d[self.stats_name] = report # logger.debug(f"Get label stats spent {time.time()-start}") - return report + return d class ImageStatsSummaryAnalyzer(Analyzer): """ - Analyzer to process the values of specific key `key_in_case` in a list of dict. + Analyzer to process the values of specific key `stats_name` in a list of dict. Typically, the list of dict is the output of case analyzer under the same prefix (ImageStatsCaseAnalyzer). Args: - key_in_case: the key of the to-process value in the dict + stats_name: the key of the to-process value in the dict average: whether to average the statistical value across different image modalities. """ - def __init__(self, key_in_case: str, average: bool = True): - self.key_case = key_in_case + def __init__(self, + stats_name: Optional[str] = "image_stats", + average: Optional[bool] = True + ): self.summary_average = average report_format = { str(IMAGE_STATS.SHAPE): None, @@ -441,7 +467,7 @@ def __init__(self, key_in_case: str, average: bool = True): str(IMAGE_STATS.SPACING): None, str(IMAGE_STATS.INTENSITY): None, } - super().__init__(report_format) + super().__init__(stats_name, report_format) self.update_ops(IMAGE_STATS.SHAPE, SampleOperations()) self.update_ops(IMAGE_STATS.CHANNELS, SampleOperations()) @@ -473,15 +499,21 @@ def __call__(self, data: List[Dict]): """ if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") + + if len(data) == 0: + return ValueError(f"Callable {self.__class__} input list is empty") + + if self.stats_name not in data[0]: + return KeyError(f"{self.stats_name} is not in input data") report = deepcopy(self.get_report_format()) for k in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: - v_np = concat_val_to_np(data, [self.key_case, k]) + v_np = concat_val_to_np(data, [self.stats_name, k]) report[str(k)] = self.ops[k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, IMAGE_STATS.INTENSITY], op_keys) report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate( intst_dict, dim=None if self.summary_average else 0 ) @@ -490,21 +522,39 @@ def __call__(self, data: List[Dict]): class FgImageStatsSummaryAnalyzer(Analyzer): - def __init__(self, key_in_case: str, average=True): - self.key_case = key_in_case + """ + Analyzer to process the values of specific key `stats_name` in a list of dict. + Typically, the list of dict is the output of case analyzer under the same prefix + (FgImageStatsCaseAnalyzer). + + Args: + stats_name: the key of the to-process value in the dict + average: whether to average the statistical value across different image modalities. + + """ + def __init__(self, + stats_name: Optional[str] = "image_foreground_stats", + average: Optional[bool] = True, + ): self.summary_average = average report_format = {str(IMAGE_STATS.INTENSITY): None} - super().__init__(report_format) + super().__init__(stats_name, report_format) self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) def __call__(self, data: List[Dict]): if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") + + if len(data) == 0: + return ValueError(f"Callable {self.__class__} input list is empty") + + if self.stats_name not in data[0]: + return KeyError(f"{self.stats_name} is not in input data") report = deepcopy(self.get_report_format()) op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.key_case, IMAGE_STATS.INTENSITY], op_keys) + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, IMAGE_STATS.INTENSITY], op_keys) report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate( intst_dict, dim=None if self.summary_average else 0 @@ -514,8 +564,11 @@ def __call__(self, data: List[Dict]): class LabelStatsSummaryAnalyzer(Analyzer): - def __init__(self, key_in_case: str, average: bool = True, do_ccp: bool = True): - self.key_case = key_in_case + def __init__(self, + stats_name: Optional[str] = "label_stats", + average: Optional[bool] = True, + do_ccp: Optional[bool] = True + ): self.summary_average = average self.do_ccp = do_ccp @@ -529,7 +582,7 @@ def __init__(self, key_in_case: str, average: bool = True, do_ccp: bool = True): {str(LABEL_STATS.LABEL_SHAPE): None, str(LABEL_STATS.LABEL_NCOMP): None} ) - super().__init__(report_format) + super().__init__(stats_name, report_format) self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) # label-0-'pixel percentage' @@ -548,14 +601,20 @@ def __init__(self, key_in_case: str, average: bool = True, do_ccp: bool = True): def __call__(self, data: List[Dict]): if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") + + if len(data) == 0: + return ValueError(f"Callable {self.__class__} input list is empty") + + if self.stats_name not in data[0]: + return KeyError(f"{self.stats_name} is not in input data") report = deepcopy(self.get_report_format()) - uid_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL_UID], axis=None, ragged=True) + uid_np = concat_val_to_np(data, [self.stats_name, LABEL_STATS.LABEL_UID], axis=None, ragged=True) unique_label = label_union(uid_np) report[str(LABEL_STATS.LABEL_UID)] = unique_label op_keys = report[str(LABEL_STATS.IMAGE_INT)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.key_case, LABEL_STATS.IMAGE_INT], op_keys) + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, LABEL_STATS.IMAGE_INT], op_keys) report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( intst_dict, dim=None if self.summary_average else 0 ) @@ -566,14 +625,14 @@ def __call__(self, data: List[Dict]): stats = {} axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_NCOMP]: - v_np = concat_val_to_np(data, [self.key_case, LABEL_STATS.LABEL, label_id, k], allow_missing=True) + v_np = concat_val_to_np(data, [self.stats_name, LABEL_STATS.LABEL, label_id, k], allow_missing=True) stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate( v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 ) v_np = concat_val_to_np( data, - [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], + [self.stats_name, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], ragged=True, allow_missing=True, ) @@ -581,7 +640,7 @@ def __call__(self, data: List[Dict]): v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 ) - intst_fixed_keys = [self.key_case, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] + intst_fixed_keys = [self.stats_name, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] op_keys = report[str(LABEL_STATS.LABEL)][0][LABEL_STATS.IMAGE_INT].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) stats[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( @@ -593,3 +652,19 @@ def __call__(self, data: List[Dict]): report[str(LABEL_STATS.LABEL)] = detailed_label_list return report + +class FilenameCaseAnalyzer(Analyzer): + def __init__( + self, + key: str, + stats_name: str, + meta_key_postfix: Optional[str] = "meta_dict" + ) -> None: + self.key = key + self.meta_key = None if key is None else f"{key}_{meta_key_postfix}" + super().__init__(stats_name, {}) + + def __call__(self, data): + d = dict(data) + d[self.stats_name] = d[self.meta_key][ImageMetaKey.FILENAME_OR_OBJ] if self.meta_key else "" + return d diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index cf4af8fcb4..42bfcccf14 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -9,17 +9,35 @@ # See the License for the specific language governing permissions and # limitations under the License. +from tkinter.tix import IMAGE import warnings from os import path from typing import Dict, Union import torch +import numpy as np from monai import data from monai.apps.utils import get_logger from monai.auto3dseg.utils import datafold_read from monai.data.utils import no_collation from monai.utils import min_version, optional_import +from monai.transforms import ( + Compose, + EnsureChannelFirstd, + EnsureTyped, + Lambdad, + LoadImaged, + Orientationd, + SqueezeDimd, + ToDeviced, +) + +from monai.auto3dseg.analyze_engine import DATA_STATS, SegAnalyzeEngine +from monai.bundle.config_parser import ConfigParser +from typing import List + +from monai.utils.enums import IMAGE_STATS tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") logger = get_logger(module_name=__name__) @@ -27,9 +45,6 @@ __all__ = ["DataAnalyzer"] -from monai.auto3dseg.analyze_engine import DATA_STATS, SegAnalyzeCaseEngine, SegAnalyzeSummaryEngine - - class DataAnalyzer: """ The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. @@ -99,40 +114,93 @@ def __init__( image_key: str = "image", label_key: str = "label", ): - """ - The initializer will load the data and register the functions for data statistics gathering. - """ if path.isfile(output_path): warnings.warn(f"File {output_path} already exists and will be overwritten.") logger.debug(f"{output_path} will be overwritten by a new datastat.") - self.image_key = image_key - self.label_key = label_key - - self.output_path = output_path - self.IMAGE_ONLY = True if label_key is None else False - self.datalist = datalist self.dataroot = dataroot + self.output_path = output_path + self.do_ccp = do_ccp self.device = device self.worker = worker + self.image_key = image_key + self.label_key = label_key + + def _check_data_uniformity(self, keys: List[str], result): + """ + Check data uniformity since DataAnalyzer provides no support to multi-modal images with different + affine matrices/spacings due to monai transforms. + + Args: + keys: a list of string-type keys under image_stats dictionary. + + Returns: + False if one of the selected key values is not constant across the dataset images. + + """ + + constant_props = [result[DATA_STATS.SUMMARY][DATA_STATS.IMAGE_STATS][key] for key in keys] + for prop in constant_props: + if "stdev" in prop: + if np.any(prop["stdev"]): + return False + + return True def get_all_case_stats(self): - keys = list(filter(None, [self.image_key, self.label_key])) files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) ds = data.Dataset(data=files) self.dataset = data.DataLoader( ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation ) - result = {str(DATA_STATS.SUMMARY): {}, str(DATA_STATS.BY_CASE): []} - - case_engine = SegAnalyzeCaseEngine(self.image_key, self.label_key, device=self.device) - for batch_data in self.dataset: - result[str(DATA_STATS.BY_CASE)].append(case_engine(batch_data[0])) + analyze_engine = SegAnalyzeEngine(self.image_key, self.label_key, do_ccp=self.do_ccp) + keys = list(filter(None, [self.image_key, self.label_key])) + transform_list = [ + LoadImaged(keys=keys), + EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + ToDeviced(keys=keys, device=self.device, non_blocking=True), + Orientationd(keys=keys, axcodes="RAS"), + EnsureTyped(keys=keys, data_type="tensor"), + Lambdad(keys=self.label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x) + if self.label_key + else None, + SqueezeDimd(keys=["label"], dim=0) if self.label_key else None, + analyze_engine, + ] + + tranform = Compose(list(filter(None, transform_list))) + + result = { + str(DATA_STATS.SUMMARY): {}, + str(DATA_STATS.BY_CASE): [] + } - summary_engine = SegAnalyzeSummaryEngine(self.image_key, self.label_key) - result[str(DATA_STATS.SUMMARY)] = summary_engine(result[str(DATA_STATS.BY_CASE)]) + if not has_tqdm: + warnings.warn("tqdm is not installed. not displaying the caching progress.") + + for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: + d = tranform(batch_data[0]) + stats_by_cases = { + str(DATA_STATS.BY_CASE_IMAGE_PATH): d[str(DATA_STATS.BY_CASE_IMAGE_PATH)], + str(DATA_STATS.BY_CASE_LABEL_PATH): d[str(DATA_STATS.BY_CASE_LABEL_PATH)], + str(DATA_STATS.IMAGE_STATS): d[str(DATA_STATS.IMAGE_STATS)] + } + + if self.label_key is not None: + stats_by_cases.update({ + str(DATA_STATS.FG_IMAGE_STATS): d[str(DATA_STATS.FG_IMAGE_STATS)], + str(DATA_STATS.LABEL_STATS): d[str(DATA_STATS.LABEL_STATS)], + }) + result[str(DATA_STATS.BY_CASE)].append(stats_by_cases) + + result[str(DATA_STATS.SUMMARY)] = analyze_engine.summarize(result[str(DATA_STATS.BY_CASE)]) + + if not self._check_data_uniformity([IMAGE_STATS.SPACING], result): + logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") + + ConfigParser.export_config_file(result, self.output_path, fmt="yaml", default_flow_style=None) return result diff --git a/monai/utils/enums.py b/monai/utils/enums.py index 5476778d59..5d25921f41 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -536,8 +536,11 @@ class DATA_STATS(StrEnum): SUMMARY = "stats_summary" BY_CASE = "stats_by_cases" - BY_CASE_IMAGE_PATH = "image" - BY_CASE_LABEL_PATH = "label" + BY_CASE_IMAGE_PATH = "image_filepath" + BY_CASE_LABEL_PATH = "label_filepath" + IMAGE_STATS = "image_stats" + FG_IMAGE_STATS = "image_foreground_stats" + LABEL_STATS = "label_stats" class IMAGE_STATS(StrEnum): diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 0498f5855f..f4deaa8209 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -29,7 +29,9 @@ ImageStatsSummaryAnalyzer, LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, + FilenameCaseAnalyzer, ) +from monai.auto3dseg.analyze_engine import SegAnalyzeEngine from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations from monai.auto3dseg.utils import datafold_read, verify_report_format @@ -49,6 +51,8 @@ ) from numbers import Number +from monai.utils.enums import DATA_STATS + device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 @@ -77,13 +81,16 @@ class TestAnalyzer(Analyzer): Test example for a simple Analyzer """ - def __init__(self, report_format): - super().__init__(report_format) + def __init__(self, key, report_format, stats_name="test"): + self.key = key + super().__init__(stats_name, report_format) def __call__(self, data): + d = dict(data) report = deepcopy(self.get_report_format()) - report["stats"] = self.ops["stats"].evaluate(data) - return report + report["stats"] = self.ops["stats"].evaluate(d[self.key]) + d[self.stats_name] = report + return d class TestImageAnalyzer(Analyzer): @@ -91,19 +98,20 @@ class TestImageAnalyzer(Analyzer): Test example for a simple Analyzer """ - def __init__(self, image_key="image"): + def __init__(self, image_key="image", stats_name="test_image"): self.image_key = image_key - report_format = {"stats": None} + report_format = {"test_stats": None} - super().__init__(report_format) - self.update_ops("stats", TestOperations()) + super().__init__(stats_name, report_format) + self.update_ops("test_stats", TestOperations()) def __call__(self, data): - nda = data[self.image_key] + d = dict(data) report = deepcopy(self.get_report_format()) - report["stats"] = self.ops["stats"].evaluate(nda) - return report + report["test_stats"] = self.ops["test_stats"].evaluate(d[self.image_key]) + d[self.stats_name] = report + return d class TestDataAnalyzer(unittest.TestCase): @@ -202,14 +210,15 @@ def test_summary_operations(self): assert isinstance(test_ret['sum'], Number) def test_basic_analyzer_class(self): - test_data = np.random.rand(10, 10) + test_data = {} + test_data['image_test'] = np.random.rand(10, 10) report_format = {"stats": None} - user_analyzer = TestAnalyzer(report_format) + user_analyzer = TestAnalyzer('image_test', report_format) user_analyzer.update_ops("stats", TestOperations()) result = user_analyzer(test_data) - assert result["stats"]["max"] == np.max(test_data) - assert result["stats"]["min"] == np.min(test_data) - assert result["stats"]["mean"] == np.mean(test_data) + assert result["test"]["stats"]["max"] == np.max(test_data['image_test']) + assert result["test"]["stats"]["min"] == np.min(test_data['image_test']) + assert result["test"]["stats"]["mean"] == np.mean(test_data['image_test']) def test_transform_analyzer_class(self): transform_list = [LoadImaged(keys=["image"]), TestImageAnalyzer(image_key="image")] @@ -219,11 +228,12 @@ def test_transform_analyzer_class(self): ds = data.Dataset(data=files) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=0, collate_fn=no_collation) for batch_data in self.dataset: - result = transform(batch_data[0]) - assert "stats" in result - assert "max" in result["stats"] - assert "min" in result["stats"] - assert "mean" in result["stats"] + d = transform(batch_data[0]) + assert "test_image" in d + assert "test_stats" in d["test_image"] + assert "max" in d["test_image"]["test_stats"] + assert "min" in d["test_image"]["test_stats"] + assert "mean" in d["test_image"]["test_stats"] def test_image_stats_case_analyzer(self): analyzer = ImageStatsCaseAnalyzer(image_key="image") @@ -241,9 +251,9 @@ def test_image_stats_case_analyzer(self): ds = data.Dataset(data=files) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: - report = transform(batch_data[0]) + d = transform(batch_data[0]) report_format = analyzer.get_report_format() - assert verify_report_format(report, report_format) + assert verify_report_format(d["image_stats"], report_format) def test_foreground_image_stats_cases_analyzer(self): analyzer = FgImageStatsCaseAnalyzer(image_key="image", label_key="label") @@ -263,9 +273,9 @@ def test_foreground_image_stats_cases_analyzer(self): ds = data.Dataset(data=files) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: - report = transform(batch_data[0]) + d = transform(batch_data[0]) report_format = analyzer.get_report_format() - assert verify_report_format(report, report_format) + assert verify_report_format(d["image_foreground_stats"], report_format) def test_label_stats_case_analyzer(self): analyzer = LabelStatsCaseAnalyzer(image_key="image", label_key="label") @@ -285,9 +295,45 @@ def test_label_stats_case_analyzer(self): ds = data.Dataset(data=files) self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: - report = transform(batch_data[0]) + d = transform(batch_data[0]) report_format = analyzer.get_report_format() - assert verify_report_format(report, report_format) + assert verify_report_format(d["label_stats"], report_format) + + def test_filename_case_analyzer(self): + analyzer_image = FilenameCaseAnalyzer("image", DATA_STATS.BY_CASE_IMAGE_PATH) + analyzer_label = FilenameCaseAnalyzer("label", DATA_STATS.BY_CASE_IMAGE_PATH) + transform_list = [ + LoadImaged(keys=["image", "label"]), + analyzer_image, + analyzer_label + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + for batch_data in self.dataset: + d = transform(batch_data[0]) + assert DATA_STATS.BY_CASE_IMAGE_PATH in d + assert DATA_STATS.BY_CASE_IMAGE_PATH in d + + def test_filename_case_analyzer(self): + analyzer_image = FilenameCaseAnalyzer("image", DATA_STATS.BY_CASE_IMAGE_PATH) + analyzer_label = FilenameCaseAnalyzer(None, DATA_STATS.BY_CASE_IMAGE_PATH) + transform_list = [ + LoadImaged(keys=["image"]), + analyzer_image, + analyzer_label + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + for batch_data in self.dataset: + d = transform(batch_data[0]) + assert DATA_STATS.BY_CASE_IMAGE_PATH in d + assert d[DATA_STATS.BY_CASE_IMAGE_PATH] == "" def test_image_stats_summary_analyzer(self): summary_analyzer = ImageStatsSummaryAnalyzer("image_stats") @@ -307,8 +353,7 @@ def test_image_stats_summary_analyzer(self): self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: - report = transform(batch_data[0]) - stats.append({"image_stats": report}) + stats.append(transform(batch_data[0])) summary_report = summary_analyzer(stats) report_format = summary_analyzer.get_report_format() assert verify_report_format(summary_report, report_format) @@ -333,8 +378,7 @@ def test_fg_image_stats_summary_analyzer(self): self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: - report = transform(batch_data[0]) - stats.append({"image_foreground_stats": report}) + stats.append(transform(batch_data[0])) summary_report = summary_analyzer(stats) report_format = summary_analyzer.get_report_format() assert verify_report_format(summary_report, report_format) @@ -359,12 +403,39 @@ def test_label_stats_summary_analyzer(self): self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: - report = transform(batch_data[0]) - stats.append({"label_stats": report}) + stats.append(transform(batch_data[0])) summary_report = summary_analyzer(stats) report_format = summary_analyzer.get_report_format() assert verify_report_format(summary_report, report_format) + def test_analyzer_engine(self): + analyze_engine = SegAnalyzeEngine("image", "label") + keys = ["image", "label"] + transform_list = [ + LoadImaged(keys=keys), + EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + ToDeviced(keys=keys, device=device, non_blocking=True), + Orientationd(keys=keys, axcodes="RAS"), + EnsureTyped(keys=keys, data_type="tensor"), + Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), + SqueezeDimd(keys=["label"], dim=0), + analyze_engine, + ] + transform = Compose(transform_list) + dataroot = self.test_dir.name + files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) + ds = data.Dataset(data=files) + self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + stats = [] + for batch_data in self.dataset: + d = transform(batch_data[0]) + stats.append(d) + report = analyze_engine.summarize(stats) + assert str(DATA_STATS.IMAGE_STATS) in report + assert str(DATA_STATS.FG_IMAGE_STATS) in report + assert str(DATA_STATS.LABEL_STATS) in report + + def tearDown(self) -> None: self.test_dir.cleanup() From 2fe02f50d16fd0f559bb3691393ed970a900c910 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 24 Aug 2022 10:08:28 +0000 Subject: [PATCH 125/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/auto3dseg/analyze_engine.py | 7 +++-- monai/auto3dseg/analyzer.py | 45 +++++++++++++++---------------- monai/auto3dseg/data_analyzer.py | 7 +++-- monai/auto3dseg/operations.py | 14 +++++----- tests/test_auto3dseg.py | 6 ++--- 5 files changed, 37 insertions(+), 42 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index a1f56b76cd..83b50a75fa 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -20,7 +20,6 @@ LabelStatsSummaryAnalyzer, FilenameCaseAnalyzer, ) -from monai.auto3dseg.utils import get_filename from monai.transforms import Compose from monai.utils.enums import DATA_STATS @@ -83,12 +82,12 @@ def summarize(self, data: List[Dict]): report = {} if len(data) == 0: return report - + if not isinstance(data[0], dict): raise ValueError(f"{self.__class__} summarize function needs a list of dict. Now we have {type(data[0])}") for analyzer in self.summary_analyzers: if callable(analyzer): report.update({analyzer.stats_name: analyzer(data)}) - - return report \ No newline at end of file + + return report diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index dd245c538b..7122a453c9 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -26,7 +26,6 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY -from monai.config.type_definitions import KeysCollection from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform from monai.transforms.utils_pytorch_numpy_unification import sum, unique @@ -168,8 +167,8 @@ class ImageStatsCaseAnalyzer(Analyzer): """ - def __init__(self, - image_key: str, + def __init__(self, + image_key: str, stats_name: str = "image_stats", meta_key_postfix: Optional[str] = "meta_dict" ) -> None: @@ -252,15 +251,15 @@ class FgImageStatsCaseAnalyzer(Analyzer): """ - def __init__(self, - image_key: str, + def __init__(self, + image_key: str, label_key: str, stats_name: str = "image_foreground_stats", ): self.image_key = image_key self.label_key = label_key - + report_format = {str(IMAGE_STATS.INTENSITY): None} super().__init__(stats_name, report_format) @@ -281,7 +280,7 @@ def __call__(self, data) -> dict: """ d = dict(data) - + ndas = d[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_label = d[self.label_key] # (H,W,D) @@ -322,9 +321,9 @@ class LabelStatsCaseAnalyzer(Analyzer): """ - def __init__(self, - image_key: str, - label_key: str, + def __init__(self, + image_key: str, + label_key: str, stats_name: str = "label_stats", do_ccp: Optional[bool] = True): @@ -394,7 +393,7 @@ def __call__(self, data): functions. If the input has nan/inf, the stats results will be nan/inf. """ d = dict(data) - + ndas = d[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_label = d[self.label_key] # (H,W,D) @@ -455,8 +454,8 @@ class ImageStatsSummaryAnalyzer(Analyzer): """ - def __init__(self, - stats_name: Optional[str] = "image_stats", + def __init__(self, + stats_name: Optional[str] = "image_stats", average: Optional[bool] = True ): self.summary_average = average @@ -499,7 +498,7 @@ def __call__(self, data: List[Dict]): """ if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") - + if len(data) == 0: return ValueError(f"Callable {self.__class__} input list is empty") @@ -532,8 +531,8 @@ class FgImageStatsSummaryAnalyzer(Analyzer): average: whether to average the statistical value across different image modalities. """ - def __init__(self, - stats_name: Optional[str] = "image_foreground_stats", + def __init__(self, + stats_name: Optional[str] = "image_foreground_stats", average: Optional[bool] = True, ): self.summary_average = average @@ -545,7 +544,7 @@ def __init__(self, def __call__(self, data: List[Dict]): if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") - + if len(data) == 0: return ValueError(f"Callable {self.__class__} input list is empty") @@ -564,9 +563,9 @@ def __call__(self, data: List[Dict]): class LabelStatsSummaryAnalyzer(Analyzer): - def __init__(self, - stats_name: Optional[str] = "label_stats", - average: Optional[bool] = True, + def __init__(self, + stats_name: Optional[str] = "label_stats", + average: Optional[bool] = True, do_ccp: Optional[bool] = True ): self.summary_average = average @@ -601,7 +600,7 @@ def __init__(self, def __call__(self, data: List[Dict]): if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") - + if len(data) == 0: return ValueError(f"Callable {self.__class__} input list is empty") @@ -656,14 +655,14 @@ def __call__(self, data: List[Dict]): class FilenameCaseAnalyzer(Analyzer): def __init__( self, - key: str, + key: str, stats_name: str, meta_key_postfix: Optional[str] = "meta_dict" ) -> None: self.key = key self.meta_key = None if key is None else f"{key}_{meta_key_postfix}" super().__init__(stats_name, {}) - + def __call__(self, data): d = dict(data) d[self.stats_name] = d[self.meta_key][ImageMetaKey.FILENAME_OR_OBJ] if self.meta_key else "" diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 42bfcccf14..13f13f5066 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -9,7 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from tkinter.tix import IMAGE import warnings from os import path from typing import Dict, Union @@ -139,7 +138,7 @@ def _check_data_uniformity(self, keys: List[str], result): False if one of the selected key values is not constant across the dataset images. """ - + constant_props = [result[DATA_STATS.SUMMARY][DATA_STATS.IMAGE_STATS][key] for key in keys] for prop in constant_props: if "stdev" in prop: @@ -174,7 +173,7 @@ def get_all_case_stats(self): tranform = Compose(list(filter(None, transform_list))) result = { - str(DATA_STATS.SUMMARY): {}, + str(DATA_STATS.SUMMARY): {}, str(DATA_STATS.BY_CASE): [] } @@ -188,7 +187,7 @@ def get_all_case_stats(self): str(DATA_STATS.BY_CASE_LABEL_PATH): d[str(DATA_STATS.BY_CASE_LABEL_PATH)], str(DATA_STATS.IMAGE_STATS): d[str(DATA_STATS.IMAGE_STATS)] } - + if self.label_key is not None: stats_by_cases.update({ str(DATA_STATS.FG_IMAGE_STATS): d[str(DATA_STATS.FG_IMAGE_STATS)], diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index f388b8e7ab..d4d587b4f9 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -11,11 +11,9 @@ from collections import UserDict from functools import partial -from typing import Any, Optional +from typing import Any -import torch -from monai.data.meta_tensor import MetaTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std @@ -48,9 +46,9 @@ class SampleOperations(Operations): Percentile operation uses a partial function that embeds different kwargs (q). In order to print the result nicely, data_addon is added to map the numbers generated by percentile to different keys ("percentile_00_5" for example). - Annotation of the postfix means the percentage for percentile computation. + Annotation of the postfix means the percentage for percentile computation. For example, _00_5 means 0.5% and _99_5 means 99.5%. - + Example: .. code-block:: python @@ -105,7 +103,7 @@ class SummaryOperations(Operations): """ Apply statistical operation to summarize a dict. The key-value looks like: {"max", "min" ,"mean", ....}. The value may contain multiple values in a list format. Then this operation - will apply the operation to the list. Typically, the dict is generated by multiple + will apply the operation to the list. Typically, the dict is generated by multiple `SampleOperation` and `concat_multikeys_to_dict` functions. Examples: @@ -116,13 +114,13 @@ class SummaryOperations(Operations): "min": np.random.rand(4), "max": np.random.rand(4), "mean": np.random.rand(4), - "sum": np.random.rand(4), + "sum": np.random.rand(4), } op = SummaryOperations() print(op.evaluate(data)) # "sum" is not registerred yet, so it won't contain "sum" op.update({"sum", np.sum}) - print(op.evaluate(data)) # output has "sum" + print(op.evaluate(data)) # output has "sum" """ def __init__(self) -> None: self.data = { diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index f4deaa8209..8d4add7d3b 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -191,7 +191,7 @@ def test_sample_operations(self): op.update({"sum": np.sum}) test_ret_np = op.evaluate(test_data_np) assert "sum" in test_ret_np - + def test_summary_operations(self): op = SummaryOperations() test_dict = { @@ -316,7 +316,7 @@ def test_filename_case_analyzer(self): d = transform(batch_data[0]) assert DATA_STATS.BY_CASE_IMAGE_PATH in d assert DATA_STATS.BY_CASE_IMAGE_PATH in d - + def test_filename_case_analyzer(self): analyzer_image = FilenameCaseAnalyzer("image", DATA_STATS.BY_CASE_IMAGE_PATH) analyzer_label = FilenameCaseAnalyzer(None, DATA_STATS.BY_CASE_IMAGE_PATH) @@ -434,7 +434,7 @@ def test_analyzer_engine(self): assert str(DATA_STATS.IMAGE_STATS) in report assert str(DATA_STATS.FG_IMAGE_STATS) in report assert str(DATA_STATS.LABEL_STATS) in report - + def tearDown(self) -> None: self.test_dir.cleanup() From 69dee739b4dd0f4ce817375968a4b9017159132a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 18:42:07 +0800 Subject: [PATCH 126/150] add docstring Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyze_engine.py | 98 ++++++++++++++++++++++++++++++- monai/auto3dseg/analyzer.py | 20 ++++++- monai/auto3dseg/data_analyzer.py | 33 +++++------ 3 files changed, 129 insertions(+), 22 deletions(-) diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/analyze_engine.py index a1f56b76cd..84bb9aae86 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/analyze_engine.py @@ -9,9 +9,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, List +from typing import Dict, List, Type from monai.auto3dseg.analyzer import ( + Analyzer, FgImageStatsCaseAnalyzer, FgImageStatsSummaryAnalyzer, ImageStatsCaseAnalyzer, @@ -41,6 +42,31 @@ class SegAnalyzeEngine(Compose): datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. do_ccp: apply the connected component algorithm to process the labels/images + + Examples: + .. code-block:: python + # imports + + analyze_engine = SegAnalyzeEngine("image", "label") + transform_list = [ + LoadImaged(keys=keys), + EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) + ToDeviced(keys=keys, device=device, non_blocking=True), + Orientationd(keys=keys, axcodes="RAS"), + EnsureTyped(keys=keys, data_type="tensor"), + Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), + SqueezeDimd(keys=["label"], dim=0), + analyze_engine, + ] + ... + # skip some steps to set up data loader + dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + transform = Compose(transform_list) + stats = [] + for batch_data in dataset: + d = transform(batch_data[0]) + stats.append(d) + report = analyze_engine.summarize(stats) """ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: @@ -72,11 +98,79 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: LabelStatsCaseAnalyzer(image_key, label_key, do_ccp=do_ccp), LabelStatsSummaryAnalyzer(do_ccp=do_ccp) ) - def add_analyzer(self, case_analyzer, summary_analzyer): + def add_analyzer(self, case_analyzer: Type[Analyzer], summary_analzyer: Type[Analyzer]) -> None: + """ + Add new analyzers to the engine so that the callable and summarize functions will + utilize the new analyzers for stats computations. + + Args: + case_analyzer: analyzer that works on each data + summary_analyzer: analyzer that works on list of stats dict (output from case_analyzers) + + Examples: + .. code-block:: python + from monai.auto3dseg.analyzer import Analyzer + from monai.auto3dseg.utils import concat_val_to_np + from monai.auto3dseg.analyzer_engine import SegAnalyzeEngine + + class UserAnalyzer(Analyzer): + def __init__(self, image_key="image", stats_name="user_stats"): + self.image_key = image_key + report_format = {"ndims": None} + super().__init__(stats_name, report_format) + + def __call__(self, data): + d = dict(data) + report = deepcopy(self.get_report_format()) + report["ndims"] = d[self.image_key].ndim + d[self.stats_name] = report + return d + + class UserSummaryAnalyzer(Analyzer): + def __init__(stats_name="user_stats"): + report_format = {"ndims": None} + super().__init__(stats_name, report_format) + self.update_ops("ndims", SampleOperations()) + + def __call__(self, data): + report = deepcopy(self.get_report_format()) + v_np = concat_val_to_np(data, [self.stats_name, "ndims"]) + report["ndims"] = self.ops["ndims"].evaluate(v_np) + return report + + case_engine = SegAnalyzeEngine() + case_engine.add_analyzer(UserAnalyzer, UserSummaryAnalyzer) + + """ self.transforms += (case_analyzer, ) self.summary_analyzers.append(summary_analzyer) def summarize(self, data: List[Dict]): + """ + Summarize the input list of data and generates a report ready for json/yaml export. + + Args: + data: a list of data dicts. + + Returns: + a dict that summarizes the stats across data samples + + Examples: + stats_summary: + image_foreground_stats: + intensity: {...} + image_stats: + channels: {...} + cropped_shape: {...} + ... + label_stats: + image_intensity: {...} + label: + - image_intensity: {...} + - image_intensity: {...} + - image_intensity: {...} + - image_intensity: {...} + """ if not isinstance(data, list): raise ValueError(f"{self.__class__} summarize function needs input to be a list of dict") diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index dd245c538b..20de42706d 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -609,10 +609,12 @@ def __call__(self, data: List[Dict]): return KeyError(f"{self.stats_name} is not in input data") report = deepcopy(self.get_report_format()) + # unique class ID uid_np = concat_val_to_np(data, [self.stats_name, LABEL_STATS.LABEL_UID], axis=None, ragged=True) unique_label = label_union(uid_np) report[str(LABEL_STATS.LABEL_UID)] = unique_label + # image intensity op_keys = report[str(LABEL_STATS.IMAGE_INT)].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.stats_name, LABEL_STATS.IMAGE_INT], op_keys) report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( @@ -620,16 +622,18 @@ def __call__(self, data: List[Dict]): ) detailed_label_list = [] - + # iterate through each label for label_id in unique_label: stats = {} - axis = 0 # todo: if self.summary_average and data[...].shape > 2, axis = (0, 1) + # todo(check ccp) for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_NCOMP]: + # allow_missing value can be missing because label dist is not even v_np = concat_val_to_np(data, [self.stats_name, LABEL_STATS.LABEL, label_id, k], allow_missing=True) stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate( v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 ) - + # label shape is a 3-element value, but the number of labels in each image + # can vary from 0 to N. So the value in a list format is "ragged" v_np = concat_val_to_np( data, [self.stats_name, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], @@ -654,6 +658,16 @@ def __call__(self, data: List[Dict]): return report class FilenameCaseAnalyzer(Analyzer): + """ + Analyzer to process the values of specific key `stats_name` in a list of dict. + Typically, the list of dict is the output of case analyzer under the same prefix + (FgImageStatsCaseAnalyzer). + + Args: + key: the key to fetch the filename (for example, "image", "label") + stats_name: the key to store the filename in the output stats report + + """ def __init__( self, key: str, diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 42bfcccf14..c11a50da65 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -69,24 +69,23 @@ class DataAnalyzer: datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. - For example: - - .. code-block:: python - - from monai.apps.auto3dseg.data_analyzer import DataAnalyzer - - datalist = { - "testing": [{"image": "image_003.nii.gz"}], - "training": [ - {"fold": 0, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, - {"fold": 0, "image": "image_002.nii.gz", "label": "label_002.nii.gz"}, - {"fold": 1, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, - {"fold": 1, "image": "image_004.nii.gz", "label": "label_004.nii.gz"}, - ], - } + Examples: + .. code-block:: python + + from monai.apps.auto3dseg.data_analyzer import DataAnalyzer + + datalist = { + "testing": [{"image": "image_003.nii.gz"}], + "training": [ + {"fold": 0, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, + {"fold": 0, "image": "image_002.nii.gz", "label": "label_002.nii.gz"}, + {"fold": 1, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, + {"fold": 1, "image": "image_004.nii.gz", "label": "label_004.nii.gz"}, + ], + } - dataroot = '/datasets' # the directory where you have the image files (nii.gz) - DataAnalyzer(datalist, dataroot) + dataroot = '/datasets' # the directory where you have the image files (nii.gz) + DataAnalyzer(datalist, dataroot) Notes: The module can also be called from the command line interface (CLI). From 383829d998ed4a6e4632d09970113fabe9db26b3 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 22:24:18 +0800 Subject: [PATCH 127/150] autofix, rename case engine to SegSummarizer Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 63 +++++---------- monai/auto3dseg/data_analyzer.py | 41 +++++----- monai/auto3dseg/operations.py | 12 +-- .../{analyze_engine.py => seg_summarizer.py} | 56 ++++++------- tests/test_auto3dseg.py | 80 ++++++++----------- 5 files changed, 103 insertions(+), 149 deletions(-) rename monai/auto3dseg/{analyze_engine.py => seg_summarizer.py} (85%) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 20de42706d..61a8e0d19c 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -33,6 +33,7 @@ from monai.utils.enums import IMAGE_STATS, LABEL_STATS, StrEnum from monai.utils.misc import ImageMetaKey, label_union + class Analyzer(MapTransform, ABC): """ The Analyzer component is a base class. Other classes inherit this class will provide a callable @@ -168,10 +169,8 @@ class ImageStatsCaseAnalyzer(Analyzer): """ - def __init__(self, - image_key: str, - stats_name: str = "image_stats", - meta_key_postfix: Optional[str] = "meta_dict" + def __init__( + self, image_key: str, stats_name: str = "image_stats", meta_key_postfix: Optional[str] = "meta_dict" ) -> None: if not isinstance(image_key, str): @@ -252,15 +251,11 @@ class FgImageStatsCaseAnalyzer(Analyzer): """ - def __init__(self, - image_key: str, - label_key: str, - stats_name: str = "image_foreground_stats", - ): + def __init__(self, image_key: str, label_key: str, stats_name: str = "image_foreground_stats"): self.image_key = image_key self.label_key = label_key - + report_format = {str(IMAGE_STATS.INTENSITY): None} super().__init__(stats_name, report_format) @@ -281,7 +276,7 @@ def __call__(self, data) -> dict: """ d = dict(data) - + ndas = d[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_label = d[self.label_key] # (H,W,D) @@ -322,11 +317,7 @@ class LabelStatsCaseAnalyzer(Analyzer): """ - def __init__(self, - image_key: str, - label_key: str, - stats_name: str = "label_stats", - do_ccp: Optional[bool] = True): + def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stats", do_ccp: Optional[bool] = True): self.image_key = image_key self.label_key = label_key @@ -394,7 +385,7 @@ def __call__(self, data): functions. If the input has nan/inf, the stats results will be nan/inf. """ d = dict(data) - + ndas = d[self.image_key] # (1,H,W,D) or (C,H,W,D) ndas = [ndas[i] for i in range(ndas.shape[0])] ndas_label = d[self.label_key] # (H,W,D) @@ -455,10 +446,7 @@ class ImageStatsSummaryAnalyzer(Analyzer): """ - def __init__(self, - stats_name: Optional[str] = "image_stats", - average: Optional[bool] = True - ): + def __init__(self, stats_name: Optional[str] = "image_stats", average: Optional[bool] = True): self.summary_average = average report_format = { str(IMAGE_STATS.SHAPE): None, @@ -499,7 +487,7 @@ def __call__(self, data: List[Dict]): """ if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") - + if len(data) == 0: return ValueError(f"Callable {self.__class__} input list is empty") @@ -532,10 +520,8 @@ class FgImageStatsSummaryAnalyzer(Analyzer): average: whether to average the statistical value across different image modalities. """ - def __init__(self, - stats_name: Optional[str] = "image_foreground_stats", - average: Optional[bool] = True, - ): + + def __init__(self, stats_name: Optional[str] = "image_foreground_stats", average: Optional[bool] = True): self.summary_average = average report_format = {str(IMAGE_STATS.INTENSITY): None} @@ -545,7 +531,7 @@ def __init__(self, def __call__(self, data: List[Dict]): if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") - + if len(data) == 0: return ValueError(f"Callable {self.__class__} input list is empty") @@ -564,10 +550,8 @@ def __call__(self, data: List[Dict]): class LabelStatsSummaryAnalyzer(Analyzer): - def __init__(self, - stats_name: Optional[str] = "label_stats", - average: Optional[bool] = True, - do_ccp: Optional[bool] = True + def __init__( + self, stats_name: Optional[str] = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True ): self.summary_average = average self.do_ccp = do_ccp @@ -601,7 +585,7 @@ def __init__(self, def __call__(self, data: List[Dict]): if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") - + if len(data) == 0: return ValueError(f"Callable {self.__class__} input list is empty") @@ -622,7 +606,7 @@ def __call__(self, data: List[Dict]): ) detailed_label_list = [] - # iterate through each label + # iterate through each label for label_id in unique_label: stats = {} # todo(check ccp) @@ -657,7 +641,8 @@ def __call__(self, data: List[Dict]): return report -class FilenameCaseAnalyzer(Analyzer): + +class FilenameStats(Analyzer): """ Analyzer to process the values of specific key `stats_name` in a list of dict. Typically, the list of dict is the output of case analyzer under the same prefix @@ -668,16 +653,12 @@ class FilenameCaseAnalyzer(Analyzer): stats_name: the key to store the filename in the output stats report """ - def __init__( - self, - key: str, - stats_name: str, - meta_key_postfix: Optional[str] = "meta_dict" - ) -> None: + + def __init__(self, key: str, stats_name: str, meta_key_postfix: Optional[str] = "meta_dict") -> None: self.key = key self.meta_key = None if key is None else f"{key}_{meta_key_postfix}" super().__init__(stats_name, {}) - + def __call__(self, data): d = dict(data) d[self.stats_name] = d[self.meta_key][ImageMetaKey.FILENAME_OR_OBJ] if self.meta_key else "" diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index c11a50da65..7281a3e955 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -9,19 +9,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -from tkinter.tix import IMAGE import warnings from os import path -from typing import Dict, Union +from typing import Dict, List, Union -import torch import numpy as np +import torch from monai import data from monai.apps.utils import get_logger +from monai.auto3dseg.seg_summarizer import DATA_STATS, SegSummarizer from monai.auto3dseg.utils import datafold_read +from monai.bundle.config_parser import ConfigParser from monai.data.utils import no_collation -from monai.utils import min_version, optional_import from monai.transforms import ( Compose, EnsureChannelFirstd, @@ -32,11 +32,7 @@ SqueezeDimd, ToDeviced, ) - -from monai.auto3dseg.analyze_engine import DATA_STATS, SegAnalyzeEngine -from monai.bundle.config_parser import ConfigParser -from typing import List - +from monai.utils import min_version, optional_import from monai.utils.enums import IMAGE_STATS tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") @@ -138,7 +134,7 @@ def _check_data_uniformity(self, keys: List[str], result): False if one of the selected key values is not constant across the dataset images. """ - + constant_props = [result[DATA_STATS.SUMMARY][DATA_STATS.IMAGE_STATS][key] for key in keys] for prop in constant_props: if "stdev" in prop: @@ -155,7 +151,7 @@ def get_all_case_stats(self): ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation ) - analyze_engine = SegAnalyzeEngine(self.image_key, self.label_key, do_ccp=self.do_ccp) + summarizer = SegSummarizer(self.image_key, self.label_key, do_ccp=self.do_ccp) keys = list(filter(None, [self.image_key, self.label_key])) transform_list = [ LoadImaged(keys=keys), @@ -167,15 +163,12 @@ def get_all_case_stats(self): if self.label_key else None, SqueezeDimd(keys=["label"], dim=0) if self.label_key else None, - analyze_engine, + summarizer, ] tranform = Compose(list(filter(None, transform_list))) - result = { - str(DATA_STATS.SUMMARY): {}, - str(DATA_STATS.BY_CASE): [] - } + result = {str(DATA_STATS.SUMMARY): {}, str(DATA_STATS.BY_CASE): []} if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") @@ -185,17 +178,19 @@ def get_all_case_stats(self): stats_by_cases = { str(DATA_STATS.BY_CASE_IMAGE_PATH): d[str(DATA_STATS.BY_CASE_IMAGE_PATH)], str(DATA_STATS.BY_CASE_LABEL_PATH): d[str(DATA_STATS.BY_CASE_LABEL_PATH)], - str(DATA_STATS.IMAGE_STATS): d[str(DATA_STATS.IMAGE_STATS)] + str(DATA_STATS.IMAGE_STATS): d[str(DATA_STATS.IMAGE_STATS)], } - + if self.label_key is not None: - stats_by_cases.update({ - str(DATA_STATS.FG_IMAGE_STATS): d[str(DATA_STATS.FG_IMAGE_STATS)], - str(DATA_STATS.LABEL_STATS): d[str(DATA_STATS.LABEL_STATS)], - }) + stats_by_cases.update( + { + str(DATA_STATS.FG_IMAGE_STATS): d[str(DATA_STATS.FG_IMAGE_STATS)], + str(DATA_STATS.LABEL_STATS): d[str(DATA_STATS.LABEL_STATS)], + } + ) result[str(DATA_STATS.BY_CASE)].append(stats_by_cases) - result[str(DATA_STATS.SUMMARY)] = analyze_engine.summarize(result[str(DATA_STATS.BY_CASE)]) + result[str(DATA_STATS.SUMMARY)] = summarizer.summarize(result[str(DATA_STATS.BY_CASE)]) if not self._check_data_uniformity([IMAGE_STATS.SPACING], result): logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index f388b8e7ab..d66533cce8 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -23,6 +23,7 @@ class Operations(UserDict): """ Base class of operation """ + def evaluate(self, data: Any, **kwargs) -> dict: """ For key-value pairs in the self.data, if the value is a callable, @@ -48,9 +49,9 @@ class SampleOperations(Operations): Percentile operation uses a partial function that embeds different kwargs (q). In order to print the result nicely, data_addon is added to map the numbers generated by percentile to different keys ("percentile_00_5" for example). - Annotation of the postfix means the percentage for percentile computation. + Annotation of the postfix means the percentage for percentile computation. For example, _00_5 means 0.5% and _99_5 means 99.5%. - + Example: .. code-block:: python @@ -105,7 +106,7 @@ class SummaryOperations(Operations): """ Apply statistical operation to summarize a dict. The key-value looks like: {"max", "min" ,"mean", ....}. The value may contain multiple values in a list format. Then this operation - will apply the operation to the list. Typically, the dict is generated by multiple + will apply the operation to the list. Typically, the dict is generated by multiple `SampleOperation` and `concat_multikeys_to_dict` functions. Examples: @@ -116,14 +117,15 @@ class SummaryOperations(Operations): "min": np.random.rand(4), "max": np.random.rand(4), "mean": np.random.rand(4), - "sum": np.random.rand(4), + "sum": np.random.rand(4), } op = SummaryOperations() print(op.evaluate(data)) # "sum" is not registerred yet, so it won't contain "sum" op.update({"sum", np.sum}) - print(op.evaluate(data)) # output has "sum" + print(op.evaluate(data)) # output has "sum" """ + def __init__(self) -> None: self.data = { "max": max, diff --git a/monai/auto3dseg/analyze_engine.py b/monai/auto3dseg/seg_summarizer.py similarity index 85% rename from monai/auto3dseg/analyze_engine.py rename to monai/auto3dseg/seg_summarizer.py index 84bb9aae86..7c25380708 100644 --- a/monai/auto3dseg/analyze_engine.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -15,20 +15,20 @@ Analyzer, FgImageStatsCaseAnalyzer, FgImageStatsSummaryAnalyzer, + FilenameStats, ImageStatsCaseAnalyzer, ImageStatsSummaryAnalyzer, LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, - FilenameCaseAnalyzer, ) from monai.auto3dseg.utils import get_filename from monai.transforms import Compose from monai.utils.enums import DATA_STATS -class SegAnalyzeEngine(Compose): +class SegSummarizer(Compose): """ - SegAnalyzeEngine serializes the operations for data analysis in Auto3Dseg pipeline. It loads + SegSummarizer serializes the operations for data analysis in Auto3Dseg pipeline. It loads two types of analyzer functions and execuate differently. The first type of analyzer is CaseAnalyzer which is similar to traditional monai transforms. It can be composed with other transforms to process the data dict which has image/label keys. The second type of analyzer @@ -42,12 +42,12 @@ class SegAnalyzeEngine(Compose): datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. do_ccp: apply the connected component algorithm to process the labels/images - + Examples: .. code-block:: python # imports - analyze_engine = SegAnalyzeEngine("image", "label") + summarizer = SegSummarizer("image", "label") transform_list = [ LoadImaged(keys=keys), EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) @@ -56,7 +56,7 @@ class SegAnalyzeEngine(Compose): EnsureTyped(keys=keys, data_type="tensor"), Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), SqueezeDimd(keys=["label"], dim=0), - analyze_engine, + summarizer, ] ... # skip some steps to set up data loader @@ -66,7 +66,7 @@ class SegAnalyzeEngine(Compose): for batch_data in dataset: d = transform(batch_data[0]) stats.append(d) - report = analyze_engine.summarize(stats) + report = summarizer.summarize(stats) """ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: @@ -77,22 +77,14 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.summary_analyzers = [] super().__init__() - self.add_analyzer( - FilenameCaseAnalyzer(image_key, DATA_STATS.BY_CASE_IMAGE_PATH), None - ) - self.add_analyzer( - FilenameCaseAnalyzer(label_key, DATA_STATS.BY_CASE_LABEL_PATH), None - ) - self.add_analyzer( - ImageStatsCaseAnalyzer(image_key), ImageStatsSummaryAnalyzer() - ) + self.add_analyzer(FilenameStats(image_key, DATA_STATS.BY_CASE_IMAGE_PATH), None) + self.add_analyzer(FilenameStats(label_key, DATA_STATS.BY_CASE_LABEL_PATH), None) + self.add_analyzer(ImageStatsCaseAnalyzer(image_key), ImageStatsSummaryAnalyzer()) if label_key is None: return - self.add_analyzer( - FgImageStatsCaseAnalyzer(image_key, label_key), FgImageStatsSummaryAnalyzer() - ) + self.add_analyzer(FgImageStatsCaseAnalyzer(image_key, label_key), FgImageStatsSummaryAnalyzer()) self.add_analyzer( LabelStatsCaseAnalyzer(image_key, label_key, do_ccp=do_ccp), LabelStatsSummaryAnalyzer(do_ccp=do_ccp) @@ -111,7 +103,7 @@ def add_analyzer(self, case_analyzer: Type[Analyzer], summary_analzyer: Type[Ana .. code-block:: python from monai.auto3dseg.analyzer import Analyzer from monai.auto3dseg.utils import concat_val_to_np - from monai.auto3dseg.analyzer_engine import SegAnalyzeEngine + from monai.auto3dseg.analyzer_engine import SegSummarizer class UserAnalyzer(Analyzer): def __init__(self, image_key="image", stats_name="user_stats"): @@ -125,24 +117,24 @@ def __call__(self, data): report["ndims"] = d[self.image_key].ndim d[self.stats_name] = report return d - + class UserSummaryAnalyzer(Analyzer): def __init__(stats_name="user_stats"): report_format = {"ndims": None} super().__init__(stats_name, report_format) self.update_ops("ndims", SampleOperations()) - + def __call__(self, data): report = deepcopy(self.get_report_format()) v_np = concat_val_to_np(data, [self.stats_name, "ndims"]) report["ndims"] = self.ops["ndims"].evaluate(v_np) return report - - case_engine = SegAnalyzeEngine() - case_engine.add_analyzer(UserAnalyzer, UserSummaryAnalyzer) - + + summarizer = SegSummarizer() + summarizer.add_analyzer(UserAnalyzer, UserSummaryAnalyzer) + """ - self.transforms += (case_analyzer, ) + self.transforms += (case_analyzer,) self.summary_analyzers.append(summary_analzyer) def summarize(self, data: List[Dict]): @@ -151,10 +143,10 @@ def summarize(self, data: List[Dict]): Args: data: a list of data dicts. - + Returns: a dict that summarizes the stats across data samples - + Examples: stats_summary: image_foreground_stats: @@ -177,12 +169,12 @@ def summarize(self, data: List[Dict]): report = {} if len(data) == 0: return report - + if not isinstance(data[0], dict): raise ValueError(f"{self.__class__} summarize function needs a list of dict. Now we have {type(data[0])}") for analyzer in self.summary_analyzers: if callable(analyzer): report.update({analyzer.stats_name: analyzer(data)}) - - return report \ No newline at end of file + + return report diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index f4deaa8209..5f36bdcef0 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -13,6 +13,7 @@ import tempfile import unittest from copy import deepcopy +from numbers import Number from os import path import nibabel as nib @@ -20,18 +21,17 @@ import torch from monai import data -from monai.auto3dseg import analyze_engine +from monai.auto3dseg.seg_summarizer import SegSummarizer from monai.auto3dseg.analyzer import ( Analyzer, FgImageStatsCaseAnalyzer, FgImageStatsSummaryAnalyzer, + FilenameStats, ImageStatsCaseAnalyzer, ImageStatsSummaryAnalyzer, LabelStatsCaseAnalyzer, LabelStatsSummaryAnalyzer, - FilenameCaseAnalyzer, ) -from monai.auto3dseg.analyze_engine import SegAnalyzeEngine from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations from monai.auto3dseg.utils import datafold_read, verify_report_format @@ -49,8 +49,6 @@ SqueezeDimd, ToDeviced, ) -from numbers import Number - from monai.utils.enums import DATA_STATS device = "cuda" if torch.cuda.is_available() else "cpu" @@ -172,10 +170,10 @@ def test_basic_operation_class(self): assert ("max" in test_ret_1) and ("max" in test_ret_2) assert ("mean" in test_ret_1) and ("mean" in test_ret_2) assert ("min" in test_ret_1) and ("min" in test_ret_2) - assert isinstance(test_ret_1['max'], np.float64) - assert isinstance(test_ret_2['max'], np.ndarray) - assert test_ret_1['max'].ndim == 0 - assert test_ret_2['max'].ndim == 1 + assert isinstance(test_ret_1["max"], np.float64) + assert isinstance(test_ret_2["max"], np.ndarray) + assert test_ret_1["max"].ndim == 0 + assert test_ret_2["max"].ndim == 1 def test_sample_operations(self): op = SampleOperations() @@ -183,42 +181,37 @@ def test_sample_operations(self): test_data_mt = MetaTensor(test_data_np, device=device) test_ret_np = op.evaluate(test_data_np) test_ret_mt = op.evaluate(test_data_mt) - assert isinstance(test_ret_np['max'], Number) - assert isinstance(test_ret_np['percentile'], list) - assert isinstance(test_ret_mt['max'], Number) - assert isinstance(test_ret_mt['percentile'], list) + assert isinstance(test_ret_np["max"], Number) + assert isinstance(test_ret_np["percentile"], list) + assert isinstance(test_ret_mt["max"], Number) + assert isinstance(test_ret_mt["percentile"], list) op.update({"sum": np.sum}) test_ret_np = op.evaluate(test_data_np) assert "sum" in test_ret_np - + def test_summary_operations(self): op = SummaryOperations() - test_dict = { - "min": [0, 1, 2, 3], - "max": [2, 3, 4, 5], - "mean": [1, 2, 3, 4], - "sum": [2, 4, 6, 8], - } + test_dict = {"min": [0, 1, 2, 3], "max": [2, 3, 4, 5], "mean": [1, 2, 3, 4], "sum": [2, 4, 6, 8]} test_ret = op.evaluate(test_dict) - assert isinstance(test_ret['max'], Number) - assert isinstance(test_ret['min'], Number) + assert isinstance(test_ret["max"], Number) + assert isinstance(test_ret["min"], Number) op.update({"sum": np.sum}) test_ret = op.evaluate(test_dict) assert "sum" in test_ret - assert isinstance(test_ret['sum'], Number) + assert isinstance(test_ret["sum"], Number) def test_basic_analyzer_class(self): test_data = {} - test_data['image_test'] = np.random.rand(10, 10) + test_data["image_test"] = np.random.rand(10, 10) report_format = {"stats": None} - user_analyzer = TestAnalyzer('image_test', report_format) + user_analyzer = TestAnalyzer("image_test", report_format) user_analyzer.update_ops("stats", TestOperations()) result = user_analyzer(test_data) - assert result["test"]["stats"]["max"] == np.max(test_data['image_test']) - assert result["test"]["stats"]["min"] == np.min(test_data['image_test']) - assert result["test"]["stats"]["mean"] == np.mean(test_data['image_test']) + assert result["test"]["stats"]["max"] == np.max(test_data["image_test"]) + assert result["test"]["stats"]["min"] == np.min(test_data["image_test"]) + assert result["test"]["stats"]["mean"] == np.mean(test_data["image_test"]) def test_transform_analyzer_class(self): transform_list = [LoadImaged(keys=["image"]), TestImageAnalyzer(image_key="image")] @@ -300,13 +293,9 @@ def test_label_stats_case_analyzer(self): assert verify_report_format(d["label_stats"], report_format) def test_filename_case_analyzer(self): - analyzer_image = FilenameCaseAnalyzer("image", DATA_STATS.BY_CASE_IMAGE_PATH) - analyzer_label = FilenameCaseAnalyzer("label", DATA_STATS.BY_CASE_IMAGE_PATH) - transform_list = [ - LoadImaged(keys=["image", "label"]), - analyzer_image, - analyzer_label - ] + analyzer_image = FilenameStats("image", DATA_STATS.BY_CASE_IMAGE_PATH) + analyzer_label = FilenameStats("label", DATA_STATS.BY_CASE_IMAGE_PATH) + transform_list = [LoadImaged(keys=["image", "label"]), analyzer_image, analyzer_label] transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) @@ -316,15 +305,11 @@ def test_filename_case_analyzer(self): d = transform(batch_data[0]) assert DATA_STATS.BY_CASE_IMAGE_PATH in d assert DATA_STATS.BY_CASE_IMAGE_PATH in d - + def test_filename_case_analyzer(self): - analyzer_image = FilenameCaseAnalyzer("image", DATA_STATS.BY_CASE_IMAGE_PATH) - analyzer_label = FilenameCaseAnalyzer(None, DATA_STATS.BY_CASE_IMAGE_PATH) - transform_list = [ - LoadImaged(keys=["image"]), - analyzer_image, - analyzer_label - ] + analyzer_image = FilenameStats("image", DATA_STATS.BY_CASE_IMAGE_PATH) + analyzer_label = FilenameStats(None, DATA_STATS.BY_CASE_IMAGE_PATH) + transform_list = [LoadImaged(keys=["image"]), analyzer_image, analyzer_label] transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) @@ -408,8 +393,8 @@ def test_label_stats_summary_analyzer(self): report_format = summary_analyzer.get_report_format() assert verify_report_format(summary_report, report_format) - def test_analyzer_engine(self): - analyze_engine = SegAnalyzeEngine("image", "label") + def test_seg_summarizer(self): + summarizer = SegSummarizer("image", "label") keys = ["image", "label"] transform_list = [ LoadImaged(keys=keys), @@ -419,7 +404,7 @@ def test_analyzer_engine(self): EnsureTyped(keys=keys, data_type="tensor"), Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), SqueezeDimd(keys=["label"], dim=0), - analyze_engine, + summarizer, ] transform = Compose(transform_list) dataroot = self.test_dir.name @@ -430,11 +415,10 @@ def test_analyzer_engine(self): for batch_data in self.dataset: d = transform(batch_data[0]) stats.append(d) - report = analyze_engine.summarize(stats) + report = summarizer.summarize(stats) assert str(DATA_STATS.IMAGE_STATS) in report assert str(DATA_STATS.FG_IMAGE_STATS) in report assert str(DATA_STATS.LABEL_STATS) in report - def tearDown(self) -> None: self.test_dir.cleanup() From 79e5d9dc48b2859a2c183abb62648b3fbdcb3c50 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 22:31:35 +0800 Subject: [PATCH 128/150] rename Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 36 +++++++++++++++---------------- monai/auto3dseg/seg_summarizer.py | 20 ++++++++--------- tests/test_auto3dseg.py | 32 +++++++++++++-------------- 3 files changed, 43 insertions(+), 45 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 61a8e0d19c..9b0013a3ae 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -146,7 +146,7 @@ def __call__(self, data: Any): raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") -class ImageStatsCaseAnalyzer(Analyzer): +class ImageStats(Analyzer): """ Analyzer to extract image stats properties for each case(image). @@ -159,12 +159,12 @@ class ImageStatsCaseAnalyzer(Analyzer): .. code-block:: python import numpy as np - from monai.auto3dseg.analyzer import ImageStatsCaseAnalyzer + from monai.auto3dseg.analyzer import ImageStats input = {} input['image'] = np.random.rand(1,30,30,30) input['image_meta_dict'] = {'affine': np.eye(4)} - analyzer = ImageStatsCaseAnalyzer(image_key="image") + analyzer = ImageStats(image_key="image") print(analyzer(input)) """ @@ -228,7 +228,7 @@ def __call__(self, data): return d -class FgImageStatsCaseAnalyzer(Analyzer): +class FgImageStats(Analyzer): """ Analyzer to extract foreground label properties for each case(image and label). @@ -241,12 +241,12 @@ class FgImageStatsCaseAnalyzer(Analyzer): .. code-block:: python import numpy as np - from monai.auto3dseg.analyzer import FgImageStatsCaseAnalyzer + from monai.auto3dseg.analyzer import FgImageStats input = {} input['image'] = np.random.rand(1,30,30,30) input['label'] = np.ones([30,30,30]) - analyzer = FgImageStatsCaseAnalyzer(image_key='image', label_key='label') + analyzer = FgImageStats(image_key='image', label_key='label') print(analyzer(input)) """ @@ -293,7 +293,7 @@ def __call__(self, data) -> dict: return d -class LabelStatsCaseAnalyzer(Analyzer): +class LabelStats(Analyzer): """ Analyzer to extract label stats properties for each case(image and label). @@ -307,12 +307,12 @@ class LabelStatsCaseAnalyzer(Analyzer): .. code-block:: python import numpy as np - from monai.auto3dseg.analyzer import LabelStatsCaseAnalyzer + from monai.auto3dseg.analyzer import LabelStats input = {} input['image'] = np.random.rand(1,30,30,30) input['label'] = np.ones([30,30,30]) - analyzer = LabelStatsCaseAnalyzer(image_key='image', label_key='label') + analyzer = LabelStats(image_key='image', label_key='label') print(analyzer(input)) """ @@ -434,11 +434,11 @@ def __call__(self, data): return d -class ImageStatsSummaryAnalyzer(Analyzer): +class ImageStatsSumm(Analyzer): """ - Analyzer to process the values of specific key `stats_name` in a list of dict. + This summary analyzer processes the values of specific key `stats_name` in a list of dict. Typically, the list of dict is the output of case analyzer under the same prefix - (ImageStatsCaseAnalyzer). + (ImageStats). Args: stats_name: the key of the to-process value in the dict @@ -509,11 +509,11 @@ def __call__(self, data: List[Dict]): return report -class FgImageStatsSummaryAnalyzer(Analyzer): +class FgImageStatsSumm(Analyzer): """ - Analyzer to process the values of specific key `stats_name` in a list of dict. - Typically, the list of dict is the output of case analyzer under the same prefix - (FgImageStatsCaseAnalyzer). + This summary analyzer processes the values of specific key `stats_name` in a list of + dict. Typically, the list of dict is the output of case analyzer under the similar name + (FgImageStats). Args: stats_name: the key of the to-process value in the dict @@ -549,7 +549,7 @@ def __call__(self, data: List[Dict]): return report -class LabelStatsSummaryAnalyzer(Analyzer): +class LabelStatsSumm(Analyzer): def __init__( self, stats_name: Optional[str] = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True ): @@ -646,7 +646,7 @@ class FilenameStats(Analyzer): """ Analyzer to process the values of specific key `stats_name` in a list of dict. Typically, the list of dict is the output of case analyzer under the same prefix - (FgImageStatsCaseAnalyzer). + (FgImageStats). Args: key: the key to fetch the filename (for example, "image", "label") diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 7c25380708..5ca703fafe 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -13,13 +13,13 @@ from monai.auto3dseg.analyzer import ( Analyzer, - FgImageStatsCaseAnalyzer, - FgImageStatsSummaryAnalyzer, + FgImageStats, + FgImageStatsSumm, FilenameStats, - ImageStatsCaseAnalyzer, - ImageStatsSummaryAnalyzer, - LabelStatsCaseAnalyzer, - LabelStatsSummaryAnalyzer, + ImageStats, + ImageStatsSumm, + LabelStats, + LabelStatsSumm, ) from monai.auto3dseg.utils import get_filename from monai.transforms import Compose @@ -79,16 +79,14 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.add_analyzer(FilenameStats(image_key, DATA_STATS.BY_CASE_IMAGE_PATH), None) self.add_analyzer(FilenameStats(label_key, DATA_STATS.BY_CASE_LABEL_PATH), None) - self.add_analyzer(ImageStatsCaseAnalyzer(image_key), ImageStatsSummaryAnalyzer()) + self.add_analyzer(ImageStats(image_key), ImageStatsSumm()) if label_key is None: return - self.add_analyzer(FgImageStatsCaseAnalyzer(image_key, label_key), FgImageStatsSummaryAnalyzer()) + self.add_analyzer(FgImageStats(image_key, label_key), FgImageStatsSumm()) - self.add_analyzer( - LabelStatsCaseAnalyzer(image_key, label_key, do_ccp=do_ccp), LabelStatsSummaryAnalyzer(do_ccp=do_ccp) - ) + self.add_analyzer(LabelStats(image_key, label_key, do_ccp=do_ccp), LabelStatsSumm(do_ccp=do_ccp)) def add_analyzer(self, case_analyzer: Type[Analyzer], summary_analzyer: Type[Analyzer]) -> None: """ diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 5f36bdcef0..5c53dbad88 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -21,19 +21,19 @@ import torch from monai import data -from monai.auto3dseg.seg_summarizer import SegSummarizer from monai.auto3dseg.analyzer import ( Analyzer, - FgImageStatsCaseAnalyzer, - FgImageStatsSummaryAnalyzer, + FgImageStats, + FgImageStatsSumm, FilenameStats, - ImageStatsCaseAnalyzer, - ImageStatsSummaryAnalyzer, - LabelStatsCaseAnalyzer, - LabelStatsSummaryAnalyzer, + ImageStats, + ImageStatsSumm, + LabelStats, + LabelStatsSumm, ) from monai.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations +from monai.auto3dseg.seg_summarizer import SegSummarizer from monai.auto3dseg.utils import datafold_read, verify_report_format from monai.bundle import ConfigParser from monai.data import create_test_image_3d @@ -229,7 +229,7 @@ def test_transform_analyzer_class(self): assert "mean" in d["test_image"]["test_stats"] def test_image_stats_case_analyzer(self): - analyzer = ImageStatsCaseAnalyzer(image_key="image") + analyzer = ImageStats(image_key="image") transform_list = [ LoadImaged(keys=["image"]), EnsureChannelFirstd(keys=["image"]), # this creates label to be (1,H,W,D) @@ -249,7 +249,7 @@ def test_image_stats_case_analyzer(self): assert verify_report_format(d["image_stats"], report_format) def test_foreground_image_stats_cases_analyzer(self): - analyzer = FgImageStatsCaseAnalyzer(image_key="image", label_key="label") + analyzer = FgImageStats(image_key="image", label_key="label") transform_list = [ LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) @@ -271,7 +271,7 @@ def test_foreground_image_stats_cases_analyzer(self): assert verify_report_format(d["image_foreground_stats"], report_format) def test_label_stats_case_analyzer(self): - analyzer = LabelStatsCaseAnalyzer(image_key="image", label_key="label") + analyzer = LabelStats(image_key="image", label_key="label") transform_list = [ LoadImaged(keys=["image", "label"]), EnsureChannelFirstd(keys=["image", "label"]), # this creates label to be (1,H,W,D) @@ -321,7 +321,7 @@ def test_filename_case_analyzer(self): assert d[DATA_STATS.BY_CASE_IMAGE_PATH] == "" def test_image_stats_summary_analyzer(self): - summary_analyzer = ImageStatsSummaryAnalyzer("image_stats") + summary_analyzer = ImageStatsSumm("image_stats") transform_list = [ LoadImaged(keys=["image"]), @@ -329,7 +329,7 @@ def test_image_stats_summary_analyzer(self): ToDeviced(keys=["image"], device=device, non_blocking=True), Orientationd(keys=["image"], axcodes="RAS"), EnsureTyped(keys=["image"], data_type="tensor"), - ImageStatsCaseAnalyzer(image_key="image"), + ImageStats(image_key="image"), ] transform = Compose(transform_list) dataroot = self.test_dir.name @@ -344,7 +344,7 @@ def test_image_stats_summary_analyzer(self): assert verify_report_format(summary_report, report_format) def test_fg_image_stats_summary_analyzer(self): - summary_analyzer = FgImageStatsSummaryAnalyzer("image_foreground_stats") + summary_analyzer = FgImageStatsSumm("image_foreground_stats") transform_list = [ LoadImaged(keys=["image", "label"]), @@ -354,7 +354,7 @@ def test_fg_image_stats_summary_analyzer(self): EnsureTyped(keys=["image", "label"], data_type="tensor"), Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), SqueezeDimd(keys=["label"], dim=0), - FgImageStatsCaseAnalyzer(image_key="image", label_key="label"), + FgImageStats(image_key="image", label_key="label"), ] transform = Compose(transform_list) dataroot = self.test_dir.name @@ -369,7 +369,7 @@ def test_fg_image_stats_summary_analyzer(self): assert verify_report_format(summary_report, report_format) def test_label_stats_summary_analyzer(self): - summary_analyzer = LabelStatsSummaryAnalyzer("label_stats") + summary_analyzer = LabelStatsSumm("label_stats") transform_list = [ LoadImaged(keys=["image", "label"]), @@ -379,7 +379,7 @@ def test_label_stats_summary_analyzer(self): EnsureTyped(keys=["image", "label"], data_type="tensor"), Lambdad(keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x), SqueezeDimd(keys=["label"], dim=0), - LabelStatsCaseAnalyzer(image_key="image", label_key="label"), + LabelStats(image_key="image", label_key="label"), ] transform = Compose(transform_list) dataroot = self.test_dir.name From 77206283d85534a111498ad6f10611539281dccf Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 23:03:21 +0800 Subject: [PATCH 129/150] fix flake Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 203 +++++++++++++++--------------- monai/auto3dseg/data_analyzer.py | 36 +++--- monai/auto3dseg/operations.py | 6 +- monai/auto3dseg/seg_summarizer.py | 7 +- monai/auto3dseg/utils.py | 24 +--- monai/utils/enums.py | 18 ++- tests/test_auto3dseg.py | 26 ++-- 7 files changed, 151 insertions(+), 169 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 9b0013a3ae..55efdfeb3a 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -26,11 +26,10 @@ ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY -from monai.config.type_definitions import KeysCollection from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform from monai.transforms.utils_pytorch_numpy_unification import sum, unique -from monai.utils.enums import IMAGE_STATS, LABEL_STATS, StrEnum +from monai.utils.enums import ImageStatsKeys, LabelStatsKeys, StrEnum from monai.utils.misc import ImageMetaKey, label_union @@ -180,15 +179,15 @@ def __init__( self.image_meta_key = f"{self.image_key}_{meta_key_postfix}" report_format = { - str(IMAGE_STATS.SHAPE): None, - str(IMAGE_STATS.CHANNELS): None, - str(IMAGE_STATS.CROPPED_SHAPE): None, - str(IMAGE_STATS.SPACING): None, - str(IMAGE_STATS.INTENSITY): None, + str(ImageStatsKeys.SHAPE): None, + str(ImageStatsKeys.CHANNELS): None, + str(ImageStatsKeys.CROPPED_SHAPE): None, + str(ImageStatsKeys.SPACING): None, + str(ImageStatsKeys.INTENSITY): None, } super().__init__(stats_name, report_format) - self.update_ops(str(IMAGE_STATS.INTENSITY), SampleOperations()) + self.update_ops(str(ImageStatsKeys.INTENSITY), SampleOperations()) def __call__(self, data): """ @@ -196,7 +195,7 @@ def __call__(self, data): Returns: A dictionary. The dict has the key in self.report_format. The value of - IMAGE_STATS.INTENSITY is in a list format. Each element of the value list + ImageStatsKeys.INTENSITY is in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) Note: @@ -215,13 +214,15 @@ def __call__(self, data): # perform calculation report = deepcopy(self.get_report_format()) - report[str(IMAGE_STATS.SHAPE)] = [list(nda.shape) for nda in ndas] - report[str(IMAGE_STATS.CHANNELS)] = len(ndas) - report[str(IMAGE_STATS.CROPPED_SHAPE)] = [list(nda_c.shape) for nda_c in nda_croppeds] - report[str(IMAGE_STATS.SPACING)] = np.tile( + report[str(ImageStatsKeys.SHAPE)] = [list(nda.shape) for nda in ndas] + report[str(ImageStatsKeys.CHANNELS)] = len(ndas) + report[str(ImageStatsKeys.CROPPED_SHAPE)] = [list(nda_c.shape) for nda_c in nda_croppeds] + report[str(ImageStatsKeys.SPACING)] = np.tile( np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1] ).tolist() - report[str(IMAGE_STATS.INTENSITY)] = [self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds] + report[str(ImageStatsKeys.INTENSITY)] = [ + self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds + ] # logger.debug(f"Get image stats spent {time.time()-start}") d[self.stats_name] = report @@ -256,10 +257,10 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "image_fore self.image_key = image_key self.label_key = label_key - report_format = {str(IMAGE_STATS.INTENSITY): None} + report_format = {str(ImageStatsKeys.INTENSITY): None} super().__init__(stats_name, report_format) - self.update_ops(IMAGE_STATS.INTENSITY, SampleOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SampleOperations()) def __call__(self, data) -> dict: """ @@ -285,8 +286,8 @@ def __call__(self, data) -> dict: # perform calculation report = deepcopy(self.get_report_format()) - report[str(IMAGE_STATS.INTENSITY)] = [ - self.ops[IMAGE_STATS.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds + report[str(ImageStatsKeys.INTENSITY)] = [ + self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds ] d[self.stats_name] = report @@ -324,20 +325,20 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stat self.do_ccp = do_ccp report_format = { - str(LABEL_STATS.LABEL_UID): None, - str(LABEL_STATS.IMAGE_INT): None, - str(LABEL_STATS.LABEL): [{str(LABEL_STATS.PIXEL_PCT): None, str(LABEL_STATS.IMAGE_INT): None}], + str(LabelStatsKeys.LABEL_UID): None, + str(LabelStatsKeys.IMAGE_INT): None, + str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INT): None}], } if self.do_ccp: - report_format[str(LABEL_STATS.LABEL)][0].update( - {str(LABEL_STATS.LABEL_SHAPE): None, str(LABEL_STATS.LABEL_NCOMP): None} + report_format[str(LabelStatsKeys.LABEL)][0].update( + {str(LabelStatsKeys.LABEL_SHAPE): None, str(LabelStatsKeys.LABEL_NCOMP): None} ) super().__init__(stats_name, report_format) - self.update_ops(LABEL_STATS.IMAGE_INT, SampleOperations()) + self.update_ops(LabelStatsKeys.IMAGE_INT, SampleOperations()) - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.IMAGE_INT]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INT]) self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data): @@ -351,35 +352,35 @@ def __call__(self, data): Examples: output dict contains { - LABEL_STATS.LABEL_UID:[0,1,3], - LABEL_STATS.IMAGE_INT: {...}, - LABEL_STATS.LABEL:[ + LabelStatsKeys.LABEL_UID:[0,1,3], + LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.LABEL:[ { - LABEL_STATS.PIXEL_PCT: 0.8, - LABEL_STATS.IMAGE_INT: {...}, - LABEL_STATS.LABEL_SHAPE: [...], - LABEL_STATS.LABEL_NCOMP: 1 + LabelStatsKeys.PIXEL_PCT: 0.8, + LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.LABEL_SHAPE: [...], + LabelStatsKeys.LABEL_NCOMP: 1 } { - LABEL_STATS.PIXEL_PCT: 0.1, - LABEL_STATS.IMAGE_INT: {...}, - LABEL_STATS.LABEL_SHAPE: [...], - LABEL_STATS.LABEL_NCOMP: 1 + LabelStatsKeys.PIXEL_PCT: 0.1, + LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.LABEL_SHAPE: [...], + LabelStatsKeys.LABEL_NCOMP: 1 } { - LABEL_STATS.PIXEL_PCT: 0.1, - LABEL_STATS.IMAGE_INT: {...}, - LABEL_STATS.LABEL_SHAPE: [...], - LABEL_STATS.LABEL_NCOMP: 1 + LabelStatsKeys.PIXEL_PCT: 0.1, + LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.LABEL_SHAPE: [...], + LabelStatsKeys.LABEL_NCOMP: 1 } ] } Notes: - The label class_ID of the dictionary in LABEL_STATS.LABEL IS NOT the - index. Instead, the class_ID is the LABEL_STATS.LABEL_UID with the same - index. For instance, the last dict in LABEL_STATS.LABEL in the Examples - is 3, which is the last element under LABEL_STATS.LABEL_UID. + The label class_ID of the dictionary in LabelStatsKeys.LABEL IS NOT the + index. Instead, the class_ID is the LabelStatsKeys.LABEL_UID with the same + index. For instance, the last dict in LabelStatsKeys.LABEL in the Examples + is 3, which is the last element under LabelStatsKeys.LABEL_UID. The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. @@ -405,29 +406,29 @@ def __call__(self, data): label_dict: Dict[str, Any] = {} mask_index = ndas_label == index - label_dict[str(LABEL_STATS.IMAGE_INT)] = [ - self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas + label_dict[str(LabelStatsKeys.IMAGE_INT)] = [ + self.ops[LabelStatsKeys.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas ] pixel_count = sum(mask_index) pixel_arr.append(pixel_count) pixel_sum += pixel_count if self.do_ccp: # apply connected component shape_list, ncomponents = get_label_ccp(mask_index) - label_dict[str(LABEL_STATS.LABEL_SHAPE)] = shape_list - label_dict[str(LABEL_STATS.LABEL_NCOMP)] = ncomponents + label_dict[str(LabelStatsKeys.LABEL_SHAPE)] = shape_list + label_dict[str(LabelStatsKeys.LABEL_NCOMP)] = ncomponents label_substats.append(label_dict) # logger.debug(f" label {index} stats takes {time.time() - s}") for i, _ in enumerate(unique_label): - label_substats[i].update({str(LABEL_STATS.PIXEL_PCT): float(pixel_arr[i] / pixel_sum)}) + label_substats[i].update({str(LabelStatsKeys.PIXEL_PCT): float(pixel_arr[i] / pixel_sum)}) report = deepcopy(self.get_report_format()) - report[str(LABEL_STATS.LABEL_UID)] = unique_label - report[str(LABEL_STATS.IMAGE_INT)] = [ - self.ops[LABEL_STATS.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds + report[str(LabelStatsKeys.LABEL_UID)] = unique_label + report[str(LabelStatsKeys.IMAGE_INT)] = [ + self.ops[LabelStatsKeys.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds ] - report[str(LABEL_STATS.LABEL)] = label_substats + report[str(LabelStatsKeys.LABEL)] = label_substats d[self.stats_name] = report # logger.debug(f"Get label stats spent {time.time()-start}") @@ -449,19 +450,19 @@ class ImageStatsSumm(Analyzer): def __init__(self, stats_name: Optional[str] = "image_stats", average: Optional[bool] = True): self.summary_average = average report_format = { - str(IMAGE_STATS.SHAPE): None, - str(IMAGE_STATS.CHANNELS): None, - str(IMAGE_STATS.CROPPED_SHAPE): None, - str(IMAGE_STATS.SPACING): None, - str(IMAGE_STATS.INTENSITY): None, + str(ImageStatsKeys.SHAPE): None, + str(ImageStatsKeys.CHANNELS): None, + str(ImageStatsKeys.CROPPED_SHAPE): None, + str(ImageStatsKeys.SPACING): None, + str(ImageStatsKeys.INTENSITY): None, } super().__init__(stats_name, report_format) - self.update_ops(IMAGE_STATS.SHAPE, SampleOperations()) - self.update_ops(IMAGE_STATS.CHANNELS, SampleOperations()) - self.update_ops(IMAGE_STATS.CROPPED_SHAPE, SampleOperations()) - self.update_ops(IMAGE_STATS.SPACING, SampleOperations()) - self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) + self.update_ops(ImageStatsKeys.SHAPE, SampleOperations()) + self.update_ops(ImageStatsKeys.CHANNELS, SampleOperations()) + self.update_ops(ImageStatsKeys.CROPPED_SHAPE, SampleOperations()) + self.update_ops(ImageStatsKeys.SPACING, SampleOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SummaryOperations()) def __call__(self, data: List[Dict]): """ @@ -474,11 +475,11 @@ def __call__(self, data: List[Dict]): Examples: output dict contains a dictionary for all of the following keys{ - IMAGE_STATS.SHAPE:{...} - IMAGE_STATS.CHANNELS: {...}, - IMAGE_STATS.CROPPED_SHAPE: {...}, - IMAGE_STATS.SPACING: {...}, - IMAGE_STATS.INTENSITY: {...}, + ImageStatsKeys.SHAPE:{...} + ImageStatsKeys.CHANNELS: {...}, + ImageStatsKeys.CROPPED_SHAPE: {...}, + ImageStatsKeys.SPACING: {...}, + ImageStatsKeys.INTENSITY: {...}, } Notes: @@ -496,13 +497,13 @@ def __call__(self, data: List[Dict]): report = deepcopy(self.get_report_format()) - for k in [IMAGE_STATS.SHAPE, IMAGE_STATS.CHANNELS, IMAGE_STATS.CROPPED_SHAPE, IMAGE_STATS.SPACING]: + for k in [ImageStatsKeys.SHAPE, ImageStatsKeys.CHANNELS, ImageStatsKeys.CROPPED_SHAPE, ImageStatsKeys.SPACING]: v_np = concat_val_to_np(data, [self.stats_name, k]) report[str(k)] = self.ops[k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) - op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.stats_name, IMAGE_STATS.INTENSITY], op_keys) - report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + op_keys = report[str(ImageStatsKeys.INTENSITY)].keys() # template, max/min/... + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, ImageStatsKeys.INTENSITY], op_keys) + report[str(ImageStatsKeys.INTENSITY)] = self.ops[ImageStatsKeys.INTENSITY].evaluate( intst_dict, dim=None if self.summary_average else 0 ) @@ -524,9 +525,9 @@ class FgImageStatsSumm(Analyzer): def __init__(self, stats_name: Optional[str] = "image_foreground_stats", average: Optional[bool] = True): self.summary_average = average - report_format = {str(IMAGE_STATS.INTENSITY): None} + report_format = {str(ImageStatsKeys.INTENSITY): None} super().__init__(stats_name, report_format) - self.update_ops(IMAGE_STATS.INTENSITY, SummaryOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SummaryOperations()) def __call__(self, data: List[Dict]): if not isinstance(data, list): @@ -539,10 +540,10 @@ def __call__(self, data: List[Dict]): return KeyError(f"{self.stats_name} is not in input data") report = deepcopy(self.get_report_format()) - op_keys = report[str(IMAGE_STATS.INTENSITY)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.stats_name, IMAGE_STATS.INTENSITY], op_keys) + op_keys = report[str(ImageStatsKeys.INTENSITY)].keys() # template, max/min/... + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, ImageStatsKeys.INTENSITY], op_keys) - report[str(IMAGE_STATS.INTENSITY)] = self.ops[IMAGE_STATS.INTENSITY].evaluate( + report[str(ImageStatsKeys.INTENSITY)] = self.ops[ImageStatsKeys.INTENSITY].evaluate( intst_dict, dim=None if self.summary_average else 0 ) @@ -557,29 +558,29 @@ def __init__( self.do_ccp = do_ccp report_format = { - str(LABEL_STATS.LABEL_UID): None, - str(LABEL_STATS.IMAGE_INT): None, - str(LABEL_STATS.LABEL): [{str(LABEL_STATS.PIXEL_PCT): None, str(LABEL_STATS.IMAGE_INT): None}], + str(LabelStatsKeys.LABEL_UID): None, + str(LabelStatsKeys.IMAGE_INT): None, + str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INT): None}], } if self.do_ccp: - report_format[str(LABEL_STATS.LABEL)][0].update( - {str(LABEL_STATS.LABEL_SHAPE): None, str(LABEL_STATS.LABEL_NCOMP): None} + report_format[str(LabelStatsKeys.LABEL)][0].update( + {str(LabelStatsKeys.LABEL_SHAPE): None, str(LabelStatsKeys.LABEL_NCOMP): None} ) super().__init__(stats_name, report_format) - self.update_ops(LABEL_STATS.IMAGE_INT, SummaryOperations()) + self.update_ops(LabelStatsKeys.IMAGE_INT, SummaryOperations()) # label-0-'pixel percentage' - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.PIXEL_PCT]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.PIXEL_PCT]) self.update_ops_nested_label(id_seq, SampleOperations()) # label-0-'image intensity' - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.IMAGE_INT]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INT]) self.update_ops_nested_label(id_seq, SummaryOperations()) # label-0-shape - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.LABEL_SHAPE]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.LABEL_SHAPE]) self.update_ops_nested_label(id_seq, SampleOperations()) # label-0-ncomponents - id_seq = ID_SEP_KEY.join([LABEL_STATS.LABEL, "0", LABEL_STATS.LABEL_NCOMP]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.LABEL_NCOMP]) self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data: List[Dict]): @@ -594,14 +595,14 @@ def __call__(self, data: List[Dict]): report = deepcopy(self.get_report_format()) # unique class ID - uid_np = concat_val_to_np(data, [self.stats_name, LABEL_STATS.LABEL_UID], axis=None, ragged=True) + uid_np = concat_val_to_np(data, [self.stats_name, LabelStatsKeys.LABEL_UID], axis=None, ragged=True) unique_label = label_union(uid_np) - report[str(LABEL_STATS.LABEL_UID)] = unique_label + report[str(LabelStatsKeys.LABEL_UID)] = unique_label # image intensity - op_keys = report[str(LABEL_STATS.IMAGE_INT)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.stats_name, LABEL_STATS.IMAGE_INT], op_keys) - report[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.IMAGE_INT].evaluate( + op_keys = report[str(LabelStatsKeys.IMAGE_INT)].keys() # template, max/min/... + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, LabelStatsKeys.IMAGE_INT], op_keys) + report[str(LabelStatsKeys.IMAGE_INT)] = self.ops[LabelStatsKeys.IMAGE_INT].evaluate( intst_dict, dim=None if self.summary_average else 0 ) @@ -610,34 +611,34 @@ def __call__(self, data: List[Dict]): for label_id in unique_label: stats = {} # todo(check ccp) - for k in [LABEL_STATS.PIXEL_PCT, LABEL_STATS.LABEL_NCOMP]: + for k in [LabelStatsKeys.PIXEL_PCT, LabelStatsKeys.LABEL_NCOMP]: # allow_missing value can be missing because label dist is not even - v_np = concat_val_to_np(data, [self.stats_name, LABEL_STATS.LABEL, label_id, k], allow_missing=True) - stats[str(k)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate( + v_np = concat_val_to_np(data, [self.stats_name, LabelStatsKeys.LABEL, label_id, k], allow_missing=True) + stats[str(k)] = self.ops[LabelStatsKeys.LABEL][0][k].evaluate( v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 ) # label shape is a 3-element value, but the number of labels in each image # can vary from 0 to N. So the value in a list format is "ragged" v_np = concat_val_to_np( data, - [self.stats_name, LABEL_STATS.LABEL, label_id, LABEL_STATS.LABEL_SHAPE], + [self.stats_name, LabelStatsKeys.LABEL, label_id, LabelStatsKeys.LABEL_SHAPE], ragged=True, allow_missing=True, ) - stats[str(LABEL_STATS.LABEL_SHAPE)] = self.ops[LABEL_STATS.LABEL][0][k].evaluate( + stats[str(LabelStatsKeys.LABEL_SHAPE)] = self.ops[LabelStatsKeys.LABEL][0][k].evaluate( v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 ) - intst_fixed_keys = [self.stats_name, LABEL_STATS.LABEL, label_id, LABEL_STATS.IMAGE_INT] - op_keys = report[str(LABEL_STATS.LABEL)][0][LABEL_STATS.IMAGE_INT].keys() + intst_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, LabelStatsKeys.IMAGE_INT] + op_keys = report[str(LabelStatsKeys.LABEL)][0][LabelStatsKeys.IMAGE_INT].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) - stats[str(LABEL_STATS.IMAGE_INT)] = self.ops[LABEL_STATS.LABEL][0][LABEL_STATS.IMAGE_INT].evaluate( + stats[str(LabelStatsKeys.IMAGE_INT)] = self.ops[LabelStatsKeys.LABEL][0][LabelStatsKeys.IMAGE_INT].evaluate( intst_dict, dim=None if self.summary_average else 0 ) detailed_label_list.append(stats) - report[str(LABEL_STATS.LABEL)] = detailed_label_list + report[str(LabelStatsKeys.LABEL)] = detailed_label_list return report diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 7281a3e955..d64dd8c66c 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -18,7 +18,7 @@ from monai import data from monai.apps.utils import get_logger -from monai.auto3dseg.seg_summarizer import DATA_STATS, SegSummarizer +from monai.auto3dseg.seg_summarizer import DataStatsKeys, SegSummarizer from monai.auto3dseg.utils import datafold_read from monai.bundle.config_parser import ConfigParser from monai.data.utils import no_collation @@ -33,7 +33,7 @@ ToDeviced, ) from monai.utils import min_version, optional_import -from monai.utils.enums import IMAGE_STATS +from monai.utils.enums import ImageStatsKeys tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") logger = get_logger(module_name=__name__) @@ -44,11 +44,11 @@ class DataAnalyzer: """ The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. - The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. - which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only segmentation - problem is supported, so the user needs to provide paths to the image and label files. Also, label - data format is preferred to be (1,H,W,D), with the label index in the first dimension. If it is in - onehot format, it will be converted to the preferred format. + The module expects file paths to the image data and utilizes the LoadImaged transform to read the + files, which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only + segmentation task is supported, so the user needs to provide paths to the image and label files + (if have). Also, label data format is preferred to be (1,H,W,D), with the label index in the + first dimension. If it is in onehot format, it will be converted to the preferred format. Args: datalist: a Python dictionary storing group, fold, and other information of the medical @@ -122,7 +122,7 @@ def __init__( self.image_key = image_key self.label_key = label_key - def _check_data_uniformity(self, keys: List[str], result): + def _check_data_uniformity(self, keys: List[str], result: Dict): """ Check data uniformity since DataAnalyzer provides no support to multi-modal images with different affine matrices/spacings due to monai transforms. @@ -135,7 +135,7 @@ def _check_data_uniformity(self, keys: List[str], result): """ - constant_props = [result[DATA_STATS.SUMMARY][DATA_STATS.IMAGE_STATS][key] for key in keys] + constant_props = [result[DataStatsKeys.SUMMARY][DataStatsKeys.IMAGE_STATS][key] for key in keys] for prop in constant_props: if "stdev" in prop: if np.any(prop["stdev"]): @@ -168,7 +168,7 @@ def get_all_case_stats(self): tranform = Compose(list(filter(None, transform_list))) - result = {str(DATA_STATS.SUMMARY): {}, str(DATA_STATS.BY_CASE): []} + result = {str(DataStatsKeys.SUMMARY): {}, str(DataStatsKeys.BY_CASE): []} if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") @@ -176,23 +176,23 @@ def get_all_case_stats(self): for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: d = tranform(batch_data[0]) stats_by_cases = { - str(DATA_STATS.BY_CASE_IMAGE_PATH): d[str(DATA_STATS.BY_CASE_IMAGE_PATH)], - str(DATA_STATS.BY_CASE_LABEL_PATH): d[str(DATA_STATS.BY_CASE_LABEL_PATH)], - str(DATA_STATS.IMAGE_STATS): d[str(DATA_STATS.IMAGE_STATS)], + str(DataStatsKeys.BY_CASE_IMAGE_PATH): d[str(DataStatsKeys.BY_CASE_IMAGE_PATH)], + str(DataStatsKeys.BY_CASE_LABEL_PATH): d[str(DataStatsKeys.BY_CASE_LABEL_PATH)], + str(DataStatsKeys.IMAGE_STATS): d[str(DataStatsKeys.IMAGE_STATS)], } if self.label_key is not None: stats_by_cases.update( { - str(DATA_STATS.FG_IMAGE_STATS): d[str(DATA_STATS.FG_IMAGE_STATS)], - str(DATA_STATS.LABEL_STATS): d[str(DATA_STATS.LABEL_STATS)], + str(DataStatsKeys.FG_IMAGE_STATS): d[str(DataStatsKeys.FG_IMAGE_STATS)], + str(DataStatsKeys.LABEL_STATS): d[str(DataStatsKeys.LABEL_STATS)], } ) - result[str(DATA_STATS.BY_CASE)].append(stats_by_cases) + result[str(DataStatsKeys.BY_CASE)].append(stats_by_cases) - result[str(DATA_STATS.SUMMARY)] = summarizer.summarize(result[str(DATA_STATS.BY_CASE)]) + result[str(DataStatsKeys.SUMMARY)] = summarizer.summarize(result[str(DataStatsKeys.BY_CASE)]) - if not self._check_data_uniformity([IMAGE_STATS.SPACING], result): + if not self._check_data_uniformity([ImageStatsKeys.SPACING], result): logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") ConfigParser.export_config_file(result, self.output_path, fmt="yaml", default_flow_style=None) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index d66533cce8..3ae3941b29 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -11,11 +11,8 @@ from collections import UserDict from functools import partial -from typing import Any, Optional +from typing import Any -import torch - -from monai.data.meta_tensor import MetaTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std @@ -41,7 +38,6 @@ def evaluate(self, data: Any, **kwargs) -> dict: class SampleOperations(Operations): - # todo: missing value/nan/inf """ Apply statistical operation to a sample (image/ndarray/tensor) diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 5ca703fafe..5fb9e8a04e 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -21,9 +21,8 @@ LabelStats, LabelStatsSumm, ) -from monai.auto3dseg.utils import get_filename from monai.transforms import Compose -from monai.utils.enums import DATA_STATS +from monai.utils.enums import DataStatsKeys class SegSummarizer(Compose): @@ -77,8 +76,8 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.summary_analyzers = [] super().__init__() - self.add_analyzer(FilenameStats(image_key, DATA_STATS.BY_CASE_IMAGE_PATH), None) - self.add_analyzer(FilenameStats(label_key, DATA_STATS.BY_CASE_LABEL_PATH), None) + self.add_analyzer(FilenameStats(image_key, DataStatsKeys.BY_CASE_IMAGE_PATH), None) + self.add_analyzer(FilenameStats(label_key, DataStatsKeys.BY_CASE_LABEL_PATH), None) self.add_analyzer(ImageStats(image_key), ImageStatsSumm()) if label_key is None: diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 3b8c2dec2e..0df82eabb2 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -18,13 +18,12 @@ import torch from monai.bundle.config_parser import ConfigParser +from monai.bundle.utils import ID_SEP_KEY from monai.data.meta_tensor import MetaTensor from monai.transforms import CropForeground, ToCupy from monai.utils import min_version, optional_import -from monai.utils.misc import ImageMetaKey __all__ = [ - "get_filename", "get_foreground_image", "get_foreground_label", "get_label_ccp", @@ -38,20 +37,6 @@ cucim, has_cucim = optional_import("cucim") -def get_filename(data, meta_key="image_meta_dict"): - """ - Get the filenames for image/labels - - Args: - data: data from the dataloader - meta_key: key to access the file names - - Returns: - a str (filename) if the key is valid. Otherwise, an empty string. - """ - return data[meta_key][ImageMetaKey.FILENAME_OR_OBJ] if meta_key else "" - - def get_foreground_image(image: MetaTensor): """ Get a foreground image by removing all-zero rectangles on the edges of the image @@ -151,13 +136,11 @@ def concat_val_to_np( np_list = [] for data in data_list: - from monai.bundle.config_parser import ConfigParser - from monai.bundle.utils import ID_SEP_KEY - parser = ConfigParser(data) for i, key in enumerate(fixed_keys): fixed_keys[i] = str(key) + val: Any val = parser.get(ID_SEP_KEY.join(fixed_keys)) if val is None: @@ -166,9 +149,6 @@ def concat_val_to_np( else: raise AttributeError(f"{fixed_keys} is not nested in the dictionary") elif isinstance(val, list): - # only list of number/np.ndrray - if any(isinstance(v, (torch.Tensor, MetaTensor)) for v in val): - raise NotImplementedError("list of MetaTensor is not supported for concat") np_list.append(np.array(val)) elif isinstance(val, (torch.Tensor, MetaTensor)): np_list.append(val.cpu().numpy()) diff --git a/monai/utils/enums.py b/monai/utils/enums.py index 5d25921f41..0be239ff51 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -528,9 +528,9 @@ class EngineStatsKeys(StrEnum): BEST_VALIDATION_METRTC = "best_validation_metric" -class DATA_STATS(StrEnum): +class DataStatsKeys(StrEnum): """ - A set of keys for dataset statistical analysis module + Defaults keys for dataset statistical analysis modules """ @@ -543,8 +543,11 @@ class DATA_STATS(StrEnum): LABEL_STATS = "label_stats" -class IMAGE_STATS(StrEnum): - """ """ +class ImageStatsKeys(StrEnum): + """ + Defaults keys for dataset statistical analysis image modules + + """ SHAPE = "shape" CHANNELS = "channels" @@ -553,8 +556,11 @@ class IMAGE_STATS(StrEnum): INTENSITY = "intensity" -class LABEL_STATS(StrEnum): - """ """ +class LabelStatsKeys(StrEnum): + """ + Defaults keys for dataset statistical analysis label modules + + """ LABEL_UID = "labels" PIXEL_PCT = "pixel_percentage" diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 5c53dbad88..dc3247a3c5 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -49,7 +49,7 @@ SqueezeDimd, ToDeviced, ) -from monai.utils.enums import DATA_STATS +from monai.utils.enums import DataStatsKeys device = "cuda" if torch.cuda.is_available() else "cpu" n_workers = 0 if sys.platform in ("win32", "darwin") else 2 @@ -293,8 +293,8 @@ def test_label_stats_case_analyzer(self): assert verify_report_format(d["label_stats"], report_format) def test_filename_case_analyzer(self): - analyzer_image = FilenameStats("image", DATA_STATS.BY_CASE_IMAGE_PATH) - analyzer_label = FilenameStats("label", DATA_STATS.BY_CASE_IMAGE_PATH) + analyzer_image = FilenameStats("image", DataStatsKeys.BY_CASE_IMAGE_PATH) + analyzer_label = FilenameStats("label", DataStatsKeys.BY_CASE_IMAGE_PATH) transform_list = [LoadImaged(keys=["image", "label"]), analyzer_image, analyzer_label] transform = Compose(transform_list) dataroot = self.test_dir.name @@ -303,12 +303,12 @@ def test_filename_case_analyzer(self): self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) - assert DATA_STATS.BY_CASE_IMAGE_PATH in d - assert DATA_STATS.BY_CASE_IMAGE_PATH in d + assert DataStatsKeys.BY_CASE_IMAGE_PATH in d + assert DataStatsKeys.BY_CASE_IMAGE_PATH in d - def test_filename_case_analyzer(self): - analyzer_image = FilenameStats("image", DATA_STATS.BY_CASE_IMAGE_PATH) - analyzer_label = FilenameStats(None, DATA_STATS.BY_CASE_IMAGE_PATH) + def test_filename_case_analyzer_image_only(self): + analyzer_image = FilenameStats("image", DataStatsKeys.BY_CASE_IMAGE_PATH) + analyzer_label = FilenameStats(None, DataStatsKeys.BY_CASE_IMAGE_PATH) transform_list = [LoadImaged(keys=["image"]), analyzer_image, analyzer_label] transform = Compose(transform_list) dataroot = self.test_dir.name @@ -317,8 +317,8 @@ def test_filename_case_analyzer(self): self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) - assert DATA_STATS.BY_CASE_IMAGE_PATH in d - assert d[DATA_STATS.BY_CASE_IMAGE_PATH] == "" + assert DataStatsKeys.BY_CASE_IMAGE_PATH in d + assert d[DataStatsKeys.BY_CASE_IMAGE_PATH] == "" def test_image_stats_summary_analyzer(self): summary_analyzer = ImageStatsSumm("image_stats") @@ -416,9 +416,9 @@ def test_seg_summarizer(self): d = transform(batch_data[0]) stats.append(d) report = summarizer.summarize(stats) - assert str(DATA_STATS.IMAGE_STATS) in report - assert str(DATA_STATS.FG_IMAGE_STATS) in report - assert str(DATA_STATS.LABEL_STATS) in report + assert str(DataStatsKeys.IMAGE_STATS) in report + assert str(DataStatsKeys.FG_IMAGE_STATS) in report + assert str(DataStatsKeys.LABEL_STATS) in report def tearDown(self) -> None: self.test_dir.cleanup() From 06aba86c6b0fee856adb2dda7f2b9c73982deb02 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 23:51:12 +0800 Subject: [PATCH 130/150] fix format Signed-off-by: Mingxin Zheng --- data_stats.yaml | 24118 ++++++++++++++++++++++++++++ monai/auto3dseg/__init__.py | 21 + monai/auto3dseg/__main__.py | 2 +- monai/auto3dseg/analyzer.py | 11 + monai/auto3dseg/data_analyzer.py | 2 +- monai/auto3dseg/operations.py | 2 + monai/auto3dseg/seg_summarizer.py | 2 + 7 files changed, 24156 insertions(+), 2 deletions(-) create mode 100644 data_stats.yaml diff --git a/data_stats.yaml b/data_stats.yaml new file mode 100644 index 0000000000..36227b783b --- /dev/null +++ b/data_stats.yaml @@ -0,0 +1,24118 @@ +stats_by_cases: +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_367.nii.gz + image_foreground_stats: + intensity: + - max: 1076.275146484375 + mean: 481.9836120605469 + median: 464.75518798828125 + min: 57.075199127197266 + percentile: [220.14718627929688, 350.60479736328125, 644.1343994140625, 921.3567504882812] + percentile_00_5: 220.14718627929688 + percentile_10_0: 350.60479736328125 + percentile_90_0: 644.1343994140625 + percentile_99_5: 921.3567504882812 + stdev: 123.6221694946289 + image_stats: + channels: 1 + cropped_shape: + - [36, 57, 37] + intensity: + - max: 1932.4031982421875 + mean: 596.255126953125 + median: 587.0592041015625 + min: 0.0 + percentile: [32.61439895629883, 228.30079650878906, 953.97119140625, 1084.4287109375] + percentile_00_5: 32.61439895629883 + percentile_10_0: 228.30079650878906 + percentile_90_0: 953.97119140625 + percentile_99_5: 1084.4287109375 + stdev: 273.3035583496094 + shape: + - [36, 57, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_367.nii.gz + label_stats: + image_intensity: + - max: 1076.275146484375 + mean: 481.9836120605469 + median: 464.75518798828125 + min: 57.075199127197266 + percentile: [220.14718627929688, 350.60479736328125, 644.1343994140625, 921.3567504882812] + percentile_00_5: 220.14718627929688 + percentile_10_0: 350.60479736328125 + percentile_90_0: 644.1343994140625 + percentile_99_5: 921.3567504882812 + stdev: 123.6221694946289 + label: + - image_intensity: + - max: 1932.4031982421875 + mean: 602.864013671875 + median: 611.5199584960938 + min: 0.0 + percentile: [24.460800170898438, 211.99359130859375, 962.124755859375, 1084.4287109375] + percentile_00_5: 24.460800170898438 + percentile_10_0: 211.99359130859375 + percentile_90_0: 962.124755859375 + percentile_99_5: 1084.4287109375 + stdev: 278.0864562988281 + ncomponents: 1 + pixel_percentage: 0.9453269243240356 + shape: + - [36, 57, 37] + - image_intensity: + - max: 880.5887451171875 + mean: 484.6379089355469 + median: 472.9087829589844 + min: 97.84320068359375 + percentile: [228.30079650878906, 351.4201965332031, 635.9807739257812, 831.6671752929688] + percentile_00_5: 228.30079650878906 + percentile_10_0: 351.4201965332031 + percentile_90_0: 635.9807739257812 + percentile_99_5: 831.6671752929688 + stdev: 111.9344482421875 + ncomponents: 1 + pixel_percentage: 0.029134398326277733 + shape: + - [24, 20, 16] + - image_intensity: + - max: 1076.275146484375 + mean: 478.9556579589844 + median: 448.447998046875 + min: 57.075199127197266 + percentile: [203.83999633789062, 342.4512023925781, 652.2879638671875, 962.124755859375] + percentile_00_5: 203.83999633789062 + percentile_10_0: 342.4512023925781 + percentile_90_0: 652.2879638671875 + percentile_99_5: 962.124755859375 + stdev: 135.6686553955078 + ncomponents: 1 + pixel_percentage: 0.025538695976138115 + shape: + - [21, 27, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_304.nii.gz + image_foreground_stats: + intensity: + - max: 775.0296020507812 + mean: 358.2229309082031 + median: 343.64520263671875 + min: 7.311600208282471 + percentile: [124.29720306396484, 241.28280639648438, 497.1888122558594, 684.7306518554688] + percentile_00_5: 124.29720306396484 + percentile_10_0: 241.28280639648438 + percentile_90_0: 497.1888122558594 + percentile_99_5: 684.7306518554688 + stdev: 103.74859619140625 + image_stats: + channels: 1 + cropped_shape: + - [36, 48, 38] + intensity: + - max: 1835.211669921875 + mean: 527.3478393554688 + median: 555.681640625 + min: 0.0 + percentile: [29.246400833129883, 204.7248077392578, 796.9644165039062, 935.8848266601562] + percentile_00_5: 29.246400833129883 + percentile_10_0: 204.7248077392578 + percentile_90_0: 796.9644165039062 + percentile_99_5: 935.8848266601562 + stdev: 229.5199432373047 + shape: + - [36, 48, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_304.nii.gz + label_stats: + image_intensity: + - max: 775.0296020507812 + mean: 358.2229309082031 + median: 343.64520263671875 + min: 7.311600208282471 + percentile: [124.29720306396484, 241.28280639648438, 497.1888122558594, 684.7306518554688] + percentile_00_5: 124.29720306396484 + percentile_10_0: 241.28280639648438 + percentile_90_0: 497.1888122558594 + percentile_99_5: 684.7306518554688 + stdev: 103.74859619140625 + label: + - image_intensity: + - max: 1835.211669921875 + mean: 536.9735717773438 + median: 577.6163940429688 + min: 0.0 + percentile: [29.246400833129883, 197.4132080078125, 804.2760009765625, 935.8848266601562] + percentile_00_5: 29.246400833129883 + percentile_10_0: 197.4132080078125 + percentile_90_0: 804.2760009765625 + percentile_99_5: 935.8848266601562 + stdev: 230.964111328125 + ncomponents: 1 + pixel_percentage: 0.9461501240730286 + shape: + - [36, 48, 38] + - image_intensity: + - max: 753.0948486328125 + mean: 375.4376525878906 + median: 365.58001708984375 + min: 7.311600208282471 + percentile: [110.22237396240234, 263.2176208496094, 511.81201171875, 650.732421875] + percentile_00_5: 110.22237396240234 + percentile_10_0: 263.2176208496094 + percentile_90_0: 511.81201171875 + percentile_99_5: 650.732421875 + stdev: 100.17163848876953 + ncomponents: 1 + pixel_percentage: 0.030701754614710808 + shape: + - [23, 18, 15] + - image_intensity: + - max: 775.0296020507812 + mean: 335.39080810546875 + median: 314.3988037109375 + min: 65.80440521240234 + percentile: [131.6088104248047, 226.65960693359375, 482.56561279296875, 697.5634155273438] + percentile_00_5: 131.6088104248047 + percentile_10_0: 226.65960693359375 + percentile_90_0: 482.56561279296875 + percentile_99_5: 697.5634155273438 + stdev: 104.00409698486328 + ncomponents: 1 + pixel_percentage: 0.023148147389292717 + shape: + - [20, 20, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_204.nii.gz + image_foreground_stats: + intensity: + - max: 372605.3125 + mean: 165115.921875 + median: 160553.515625 + min: 15146.5576171875 + percentile: [60586.23046875, 115113.8359375, 224169.046875, 320016.15625] + percentile_00_5: 60586.23046875 + percentile_10_0: 115113.8359375 + percentile_90_0: 224169.046875 + percentile_99_5: 320016.15625 + stdev: 44515.078125 + image_stats: + channels: 1 + cropped_shape: + - [36, 48, 39] + intensity: + - max: 581627.8125 + mean: 218917.875 + median: 218110.4375 + min: 0.0 + percentile: [12117.24609375, 63615.54296875, 366546.6875, 424103.625] + percentile_00_5: 12117.24609375 + percentile_10_0: 63615.54296875 + percentile_90_0: 366546.6875 + percentile_99_5: 424103.625 + stdev: 110472.5546875 + shape: + - [36, 48, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_204.nii.gz + label_stats: + image_intensity: + - max: 372605.3125 + mean: 165115.921875 + median: 160553.515625 + min: 15146.5576171875 + percentile: [60586.23046875, 115113.8359375, 224169.046875, 320016.15625] + percentile_00_5: 60586.23046875 + percentile_10_0: 115113.8359375 + percentile_90_0: 224169.046875 + percentile_99_5: 320016.15625 + stdev: 44515.078125 + label: + - image_intensity: + - max: 581627.8125 + mean: 221313.65625 + median: 227198.359375 + min: 0.0 + percentile: [12117.24609375, 60586.23046875, 369576.0, 424103.625] + percentile_00_5: 12117.24609375 + percentile_10_0: 60586.23046875 + percentile_90_0: 369576.0 + percentile_99_5: 424103.625 + stdev: 111914.0625 + ncomponents: 1 + pixel_percentage: 0.9573688507080078 + shape: + - [36, 48, 39] + - image_intensity: + - max: 305960.46875 + mean: 167676.65625 + median: 163582.828125 + min: 15146.5576171875 + percentile: [45439.671875, 118143.1484375, 227198.359375, 275667.34375] + percentile_00_5: 45439.671875 + percentile_10_0: 118143.1484375 + percentile_90_0: 227198.359375 + percentile_99_5: 275667.34375 + stdev: 42764.04296875 + ncomponents: 1 + pixel_percentage: 0.024364909157156944 + shape: + - [21, 16, 14] + - image_intensity: + - max: 372605.3125 + mean: 161700.265625 + median: 154494.890625 + min: 54527.609375 + percentile: [63615.54296875, 115113.8359375, 221139.734375, 341403.25] + percentile_00_5: 63615.54296875 + percentile_10_0: 115113.8359375 + percentile_90_0: 221139.734375 + percentile_99_5: 341403.25 + stdev: 46529.92578125 + ncomponents: 1 + pixel_percentage: 0.018266262486577034 + shape: + - [17, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_279.nii.gz + image_foreground_stats: + intensity: + - max: 608.6841430664062 + mean: 321.3305969238281 + median: 315.21142578125 + min: 59.78147888183594 + percentile: [129.916015625, 233.6912384033203, 423.905029296875, 571.1575317382812] + percentile_00_5: 129.916015625 + percentile_10_0: 233.6912384033203 + percentile_90_0: 423.905029296875 + percentile_99_5: 571.1575317382812 + stdev: 78.96026611328125 + image_stats: + channels: 1 + cropped_shape: + - [34, 50, 32] + intensity: + - max: 1374.9739990234375 + mean: 393.75341796875 + median: 407.60101318359375 + min: 0.0 + percentile: [16.304039001464844, 114.12828063964844, 614.1188354492188, 739.116455078125] + percentile_00_5: 16.304039001464844 + percentile_10_0: 114.12828063964844 + percentile_90_0: 614.1188354492188 + percentile_99_5: 739.116455078125 + stdev: 181.21543884277344 + shape: + - [34, 50, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_279.nii.gz + label_stats: + image_intensity: + - max: 608.6841430664062 + mean: 321.3305969238281 + median: 315.21142578125 + min: 59.78147888183594 + percentile: [129.916015625, 233.6912384033203, 423.905029296875, 571.1575317382812] + percentile_00_5: 129.916015625 + percentile_10_0: 233.6912384033203 + percentile_90_0: 423.905029296875 + percentile_99_5: 571.1575317382812 + stdev: 78.96026611328125 + label: + - image_intensity: + - max: 1374.9739990234375 + mean: 397.0698547363281 + median: 418.4703674316406 + min: 0.0 + percentile: [16.304039001464844, 108.693603515625, 614.1188354492188, 744.5511474609375] + percentile_00_5: 16.304039001464844 + percentile_10_0: 108.693603515625 + percentile_90_0: 614.1188354492188 + percentile_99_5: 744.5511474609375 + stdev: 183.86439514160156 + ncomponents: 1 + pixel_percentage: 0.9562132358551025 + shape: + - [34, 50, 32] + - image_intensity: + - max: 576.0760498046875 + mean: 323.8052062988281 + median: 320.6461181640625 + min: 59.78147888183594 + percentile: [110.32400512695312, 228.25656127929688, 423.905029296875, 547.27197265625] + percentile_00_5: 110.32400512695312 + percentile_10_0: 228.25656127929688 + percentile_90_0: 423.905029296875 + percentile_99_5: 547.27197265625 + stdev: 79.53681182861328 + ncomponents: 1 + pixel_percentage: 0.023180147632956505 + shape: + - [18, 15, 11] + - image_intensity: + - max: 608.6841430664062 + mean: 318.5469055175781 + median: 304.3420715332031 + min: 92.38955688476562 + percentile: [163.0404052734375, 233.6912384033203, 423.905029296875, 583.6847534179688] + percentile_00_5: 163.0404052734375 + percentile_10_0: 233.6912384033203 + percentile_90_0: 423.905029296875 + percentile_99_5: 583.6847534179688 + stdev: 78.21311950683594 + ncomponents: 1 + pixel_percentage: 0.020606618374586105 + shape: + - [16, 21, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_308.nii.gz + image_foreground_stats: + intensity: + - max: 93.0 + mean: 48.50218963623047 + median: 47.0 + min: 21.0 + percentile: [26.0, 36.0, 64.0, 82.735107421875] + percentile_00_5: 26.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 82.735107421875 + stdev: 11.26266860961914 + image_stats: + channels: 1 + cropped_shape: + - [38, 48, 40] + intensity: + - max: 255.0 + mean: 63.103755950927734 + median: 65.0 + min: 2.0 + percentile: [6.0, 24.0, 97.0, 107.0] + percentile_00_5: 6.0 + percentile_10_0: 24.0 + percentile_90_0: 97.0 + percentile_99_5: 107.0 + stdev: 28.243206024169922 + shape: + - [38, 48, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_308.nii.gz + label_stats: + image_intensity: + - max: 93.0 + mean: 48.50218963623047 + median: 47.0 + min: 21.0 + percentile: [26.0, 36.0, 64.0, 82.735107421875] + percentile_00_5: 26.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 82.735107421875 + stdev: 11.26266860961914 + label: + - image_intensity: + - max: 255.0 + mean: 63.87358856201172 + median: 68.0 + min: 2.0 + percentile: [6.0, 23.0, 97.0, 108.0] + percentile_00_5: 6.0 + percentile_10_0: 23.0 + percentile_90_0: 97.0 + percentile_99_5: 108.0 + stdev: 28.656818389892578 + ncomponents: 1 + pixel_percentage: 0.949917733669281 + shape: + - [38, 48, 40] + - image_intensity: + - max: 93.0 + mean: 49.473392486572266 + median: 49.0 + min: 21.0 + percentile: [25.049999237060547, 37.0, 64.0, 80.0] + percentile_00_5: 25.049999237060547 + percentile_10_0: 37.0 + percentile_90_0: 64.0 + percentile_99_5: 80.0 + stdev: 10.876535415649414 + ncomponents: 1 + pixel_percentage: 0.027563048526644707 + shape: + - [24, 16, 16] + - image_intensity: + - max: 91.0 + mean: 47.31344985961914 + median: 45.0 + min: 23.0 + percentile: [26.0, 35.0, 64.0, 84.7900390625] + percentile_00_5: 26.0 + percentile_10_0: 35.0 + percentile_90_0: 64.0 + percentile_99_5: 84.7900390625 + stdev: 11.607906341552734 + ncomponents: 1 + pixel_percentage: 0.0225191880017519 + shape: + - [19, 21, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_375.nii.gz + image_foreground_stats: + intensity: + - max: 981.7236328125 + mean: 419.49102783203125 + median: 398.1816101074219 + min: 20.595600128173828 + percentile: [151.75523376464844, 295.20361328125, 569.8115844726562, 802.5076904296875] + percentile_00_5: 151.75523376464844 + percentile_10_0: 295.20361328125 + percentile_90_0: 569.8115844726562 + percentile_99_5: 802.5076904296875 + stdev: 114.06122589111328 + image_stats: + channels: 1 + cropped_shape: + - [32, 54, 34] + intensity: + - max: 1675.1087646484375 + mean: 501.00372314453125 + median: 487.42919921875 + min: 0.0 + percentile: [20.595600128173828, 178.49520874023438, 803.2283935546875, 899.3411865234375] + percentile_00_5: 20.595600128173828 + percentile_10_0: 178.49520874023438 + percentile_90_0: 803.2283935546875 + percentile_99_5: 899.3411865234375 + stdev: 228.4934844970703 + shape: + - [32, 54, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_375.nii.gz + label_stats: + image_intensity: + - max: 981.7236328125 + mean: 419.49102783203125 + median: 398.1816101074219 + min: 20.595600128173828 + percentile: [151.75523376464844, 295.20361328125, 569.8115844726562, 802.5076904296875] + percentile_00_5: 151.75523376464844 + percentile_10_0: 295.20361328125 + percentile_90_0: 569.8115844726562 + percentile_99_5: 802.5076904296875 + stdev: 114.06122589111328 + label: + - image_intensity: + - max: 1675.1087646484375 + mean: 505.73333740234375 + median: 501.15960693359375 + min: 0.0 + percentile: [20.595600128173828, 171.6300048828125, 803.2283935546875, 899.3411865234375] + percentile_00_5: 20.595600128173828 + percentile_10_0: 171.6300048828125 + percentile_90_0: 803.2283935546875 + percentile_99_5: 899.3411865234375 + stdev: 232.5421142578125 + ncomponents: 1 + pixel_percentage: 0.9451593160629272 + shape: + - [32, 54, 34] + - image_intensity: + - max: 878.74560546875 + mean: 414.59130859375 + median: 405.04681396484375 + min: 20.595600128173828 + percentile: [119.62611389160156, 288.3384094238281, 549.2160034179688, 769.9315185546875] + percentile_00_5: 119.62611389160156 + percentile_10_0: 288.3384094238281 + percentile_90_0: 549.2160034179688 + percentile_99_5: 769.9315185546875 + stdev: 107.9845962524414 + ncomponents: 1 + pixel_percentage: 0.028696894645690918 + shape: + - [19, 18, 15] + - image_intensity: + - max: 981.7236328125 + mean: 424.86920166015625 + median: 398.1816101074219 + min: 89.24760437011719 + percentile: [212.82119750976562, 302.06878662109375, 593.83984375, 826.0548706054688] + percentile_00_5: 212.82119750976562 + percentile_10_0: 302.06878662109375 + percentile_90_0: 593.83984375 + percentile_99_5: 826.0548706054688 + stdev: 120.14885711669922 + ncomponents: 1 + pixel_percentage: 0.026143791154026985 + shape: + - [17, 26, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_216.nii.gz + image_foreground_stats: + intensity: + - max: 327023.46875 + mean: 152649.546875 + median: 144644.984375 + min: 50311.30078125 + percentile: [72322.4921875, 106911.515625, 204389.65625, 298723.34375] + percentile_00_5: 72322.4921875 + percentile_10_0: 106911.515625 + percentile_90_0: 204389.65625 + percentile_99_5: 298723.34375 + stdev: 41539.86328125 + image_stats: + channels: 1 + cropped_shape: + - [32, 49, 36] + intensity: + - max: 537702.0 + mean: 201198.734375 + median: 204389.65625 + min: 0.0 + percentile: [9433.369140625, 78611.40625, 311301.1875, 349034.65625] + percentile_00_5: 9433.369140625 + percentile_10_0: 78611.40625 + percentile_90_0: 311301.1875 + percentile_99_5: 349034.65625 + stdev: 88123.3671875 + shape: + - [32, 49, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_216.nii.gz + label_stats: + image_intensity: + - max: 327023.46875 + mean: 152649.546875 + median: 144644.984375 + min: 50311.30078125 + percentile: [72322.4921875, 106911.515625, 204389.65625, 298723.34375] + percentile_00_5: 72322.4921875 + percentile_10_0: 106911.515625 + percentile_90_0: 204389.65625 + percentile_99_5: 298723.34375 + stdev: 41539.86328125 + label: + - image_intensity: + - max: 537702.0 + mean: 204351.328125 + median: 213823.03125 + min: 0.0 + percentile: [9433.369140625, 72322.4921875, 311301.1875, 349034.65625] + percentile_00_5: 9433.369140625 + percentile_10_0: 72322.4921875 + percentile_90_0: 311301.1875 + percentile_99_5: 349034.65625 + stdev: 89414.53125 + ncomponents: 1 + pixel_percentage: 0.9390235543251038 + shape: + - [32, 49, 36] + - image_intensity: + - max: 295578.90625 + mean: 151590.53125 + median: 147789.453125 + min: 50311.30078125 + percentile: [72322.4921875, 106911.515625, 201245.203125, 260989.875] + percentile_00_5: 72322.4921875 + percentile_10_0: 106911.515625 + percentile_90_0: 201245.203125 + percentile_99_5: 260989.875 + stdev: 36454.01171875 + ncomponents: 1 + pixel_percentage: 0.033340420573949814 + shape: + - [21, 16, 15] + - image_intensity: + - max: 327023.46875 + mean: 153927.1875 + median: 144644.984375 + min: 50311.30078125 + percentile: [77966.7890625, 103767.0546875, 210678.578125, 315090.09375] + percentile_00_5: 77966.7890625 + percentile_10_0: 103767.0546875 + percentile_90_0: 210678.578125 + percentile_99_5: 315090.09375 + stdev: 46916.05859375 + ncomponents: 1 + pixel_percentage: 0.027636054903268814 + shape: + - [19, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_316.nii.gz + image_foreground_stats: + intensity: + - max: 556.8160400390625 + mean: 254.1913299560547 + median: 246.28399658203125 + min: 26.770000457763672 + percentile: [107.08000183105469, 182.0360107421875, 331.947998046875, 471.1520080566406] + percentile_00_5: 107.08000183105469 + percentile_10_0: 182.0360107421875 + percentile_90_0: 331.947998046875 + percentile_99_5: 471.1520080566406 + stdev: 62.83604431152344 + image_stats: + channels: 1 + cropped_shape: + - [37, 51, 33] + intensity: + - max: 1493.7659912109375 + mean: 351.4002990722656 + median: 337.302001953125 + min: 0.0 + percentile: [21.416000366210938, 123.14199829101562, 583.5859985351562, 685.31201171875] + percentile_00_5: 21.416000366210938 + percentile_10_0: 123.14199829101562 + percentile_90_0: 583.5859985351562 + percentile_99_5: 685.31201171875 + stdev: 170.51121520996094 + shape: + - [37, 51, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_316.nii.gz + label_stats: + image_intensity: + - max: 556.8160400390625 + mean: 254.1913299560547 + median: 246.28399658203125 + min: 26.770000457763672 + percentile: [107.08000183105469, 182.0360107421875, 331.947998046875, 471.1520080566406] + percentile_00_5: 107.08000183105469 + percentile_10_0: 182.0360107421875 + percentile_90_0: 331.947998046875 + percentile_99_5: 471.1520080566406 + stdev: 62.83604431152344 + label: + - image_intensity: + - max: 1493.7659912109375 + mean: 356.4845275878906 + median: 348.010009765625 + min: 0.0 + percentile: [21.416000366210938, 117.78800201416016, 583.5859985351562, 685.31201171875] + percentile_00_5: 21.416000366210938 + percentile_10_0: 117.78800201416016 + percentile_90_0: 583.5859985351562 + percentile_99_5: 685.31201171875 + stdev: 172.82394409179688 + ncomponents: 1 + pixel_percentage: 0.9502978920936584 + shape: + - [37, 51, 33] + - image_intensity: + - max: 492.5679931640625 + mean: 258.5575256347656 + median: 251.63800048828125 + min: 32.124000549316406 + percentile: [112.43400573730469, 187.38999938964844, 331.947998046875, 451.4222106933594] + percentile_00_5: 112.43400573730469 + percentile_10_0: 187.38999938964844 + percentile_90_0: 331.947998046875 + percentile_99_5: 451.4222106933594 + stdev: 59.11429214477539 + ncomponents: 1 + pixel_percentage: 0.02537296712398529 + shape: + - [22, 17, 13] + - image_intensity: + - max: 556.8160400390625 + mean: 249.6377716064453 + median: 240.9300079345703 + min: 26.770000457763672 + percentile: [101.72599792480469, 171.3280029296875, 331.947998046875, 475.75701904296875] + percentile_00_5: 101.72599792480469 + percentile_10_0: 171.3280029296875 + percentile_90_0: 331.947998046875 + percentile_99_5: 475.75701904296875 + stdev: 66.1898193359375 + ncomponents: 1 + pixel_percentage: 0.02432914264500141 + shape: + - [18, 25, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_089.nii.gz + image_foreground_stats: + intensity: + - max: 784.9529418945312 + mean: 376.9897155761719 + median: 362.2859802246094 + min: 120.76199340820312 + percentile: [181.1429901123047, 271.7144775390625, 501.16229248046875, 700.4195556640625] + percentile_00_5: 181.1429901123047 + percentile_10_0: 271.7144775390625 + percentile_90_0: 501.16229248046875 + percentile_99_5: 700.4195556640625 + stdev: 95.98075866699219 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 38] + intensity: + - max: 2016.725341796875 + mean: 536.9136962890625 + median: 561.5432739257812 + min: 0.0 + percentile: [36.228599548339844, 241.52398681640625, 809.1053466796875, 954.019775390625] + percentile_00_5: 36.228599548339844 + percentile_10_0: 241.52398681640625 + percentile_90_0: 809.1053466796875 + percentile_99_5: 954.019775390625 + stdev: 223.04946899414062 + shape: + - [34, 51, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_089.nii.gz + label_stats: + image_intensity: + - max: 784.9529418945312 + mean: 376.9897155761719 + median: 362.2859802246094 + min: 120.76199340820312 + percentile: [181.1429901123047, 271.7144775390625, 501.16229248046875, 700.4195556640625] + percentile_00_5: 181.1429901123047 + percentile_10_0: 271.7144775390625 + percentile_90_0: 501.16229248046875 + percentile_99_5: 700.4195556640625 + stdev: 95.98075866699219 + label: + - image_intensity: + - max: 2016.725341796875 + mean: 546.3899536132812 + median: 579.6575927734375 + min: 0.0 + percentile: [30.341413497924805, 235.4858856201172, 815.1434936523438, 954.019775390625] + percentile_00_5: 30.341413497924805 + percentile_10_0: 235.4858856201172 + percentile_90_0: 815.1434936523438 + percentile_99_5: 954.019775390625 + stdev: 224.82859802246094 + ncomponents: 1 + pixel_percentage: 0.9440599679946899 + shape: + - [34, 51, 38] + - image_intensity: + - max: 730.6100463867188 + mean: 380.2952575683594 + median: 368.3240966796875 + min: 120.76199340820312 + percentile: [181.1429901123047, 271.7144775390625, 501.16229248046875, 652.11474609375] + percentile_00_5: 181.1429901123047 + percentile_10_0: 271.7144775390625 + percentile_90_0: 501.16229248046875 + percentile_99_5: 652.11474609375 + stdev: 92.89605712890625 + ncomponents: 1 + pixel_percentage: 0.026179201900959015 + shape: + - [24, 17, 14] + - image_intensity: + - max: 784.9529418945312 + mean: 374.0820007324219 + median: 356.2478942871094 + min: 138.8762969970703 + percentile: [185.9734649658203, 271.7144775390625, 507.20037841796875, 718.5338745117188] + percentile_00_5: 185.9734649658203 + percentile_10_0: 271.7144775390625 + percentile_90_0: 507.20037841796875 + percentile_99_5: 718.5338745117188 + stdev: 98.52285766601562 + ncomponents: 1 + pixel_percentage: 0.029760820791125298 + shape: + - [21, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_189.nii.gz + image_foreground_stats: + intensity: + - max: 407048.125 + mean: 201265.359375 + median: 195383.09375 + min: 48845.7734375 + percentile: [95314.390625, 149793.703125, 260510.796875, 357323.0625] + percentile_00_5: 95314.390625 + percentile_10_0: 149793.703125 + percentile_90_0: 260510.796875 + percentile_99_5: 357323.0625 + stdev: 46420.56640625 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 30] + intensity: + - max: 1126709.25 + mean: 266940.28125 + median: 267023.5625 + min: 0.0 + percentile: [13025.5400390625, 117229.859375, 410304.5, 475432.21875] + percentile_00_5: 13025.5400390625 + percentile_10_0: 117229.859375 + percentile_90_0: 410304.5 + percentile_99_5: 475432.21875 + stdev: 114874.328125 + shape: + - [35, 53, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_189.nii.gz + label_stats: + image_intensity: + - max: 407048.125 + mean: 201265.359375 + median: 195383.09375 + min: 48845.7734375 + percentile: [95314.390625, 149793.703125, 260510.796875, 357323.0625] + percentile_00_5: 95314.390625 + percentile_10_0: 149793.703125 + percentile_90_0: 260510.796875 + percentile_99_5: 357323.0625 + stdev: 46420.56640625 + label: + - image_intensity: + - max: 1126709.25 + mean: 271287.53125 + median: 276792.71875 + min: 0.0 + percentile: [13025.5400390625, 110717.09375, 413560.90625, 478688.59375] + percentile_00_5: 13025.5400390625 + percentile_10_0: 110717.09375 + percentile_90_0: 413560.90625 + percentile_99_5: 478688.59375 + stdev: 116715.7578125 + ncomponents: 1 + pixel_percentage: 0.937915563583374 + shape: + - [35, 53, 30] + - image_intensity: + - max: 335407.65625 + mean: 197281.0 + median: 195383.09375 + min: 48845.7734375 + percentile: [94109.5234375, 146537.328125, 253998.03125, 309356.5625] + percentile_00_5: 94109.5234375 + percentile_10_0: 146537.328125 + percentile_90_0: 253998.03125 + percentile_99_5: 309356.5625 + stdev: 42110.90625 + ncomponents: 1 + pixel_percentage: 0.03200359269976616 + shape: + - [21, 17, 13] + - image_intensity: + - max: 407048.125 + mean: 205504.34375 + median: 195383.09375 + min: 58614.9296875 + percentile: [105392.8984375, 149793.703125, 273536.34375, 377740.65625] + percentile_00_5: 105392.8984375 + percentile_10_0: 149793.703125 + percentile_90_0: 273536.34375 + percentile_99_5: 377740.65625 + stdev: 50258.70703125 + ncomponents: 1 + pixel_percentage: 0.03008086234331131 + shape: + - [21, 24, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_243.nii.gz + image_foreground_stats: + intensity: + - max: 914.921630859375 + mean: 419.0277099609375 + median: 408.09454345703125 + min: 13.164340019226074 + percentile: [131.64340209960938, 309.36199951171875, 546.3201293945312, 771.5955200195312] + percentile_00_5: 131.64340209960938 + percentile_10_0: 309.36199951171875 + percentile_90_0: 546.3201293945312 + percentile_99_5: 771.5955200195312 + stdev: 103.33892822265625 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 24] + intensity: + - max: 2277.430908203125 + mean: 499.8215026855469 + median: 506.82708740234375 + min: 0.0 + percentile: [19.746509552001953, 111.89688873291016, 803.0247192382812, 921.5037841796875] + percentile_00_5: 19.746509552001953 + percentile_10_0: 111.89688873291016 + percentile_90_0: 803.0247192382812 + percentile_99_5: 921.5037841796875 + stdev: 251.4006805419922 + shape: + - [34, 53, 24] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_243.nii.gz + label_stats: + image_intensity: + - max: 914.921630859375 + mean: 419.0277099609375 + median: 408.09454345703125 + min: 13.164340019226074 + percentile: [131.64340209960938, 309.36199951171875, 546.3201293945312, 771.5955200195312] + percentile_00_5: 131.64340209960938 + percentile_10_0: 309.36199951171875 + percentile_90_0: 546.3201293945312 + percentile_99_5: 771.5955200195312 + stdev: 103.33892822265625 + label: + - image_intensity: + - max: 2277.430908203125 + mean: 505.7488708496094 + median: 533.15576171875 + min: 0.0 + percentile: [19.746509552001953, 105.3147201538086, 809.60693359375, 921.5037841796875] + percentile_00_5: 19.746509552001953 + percentile_10_0: 105.3147201538086 + percentile_90_0: 809.60693359375 + percentile_99_5: 921.5037841796875 + stdev: 257.9566345214844 + ncomponents: 1 + pixel_percentage: 0.9316500425338745 + shape: + - [34, 53, 24] + - image_intensity: + - max: 750.3673706054688 + mean: 421.5970153808594 + median: 414.67669677734375 + min: 13.164340019226074 + percentile: [125.06123352050781, 309.36199951171875, 546.3201293945312, 684.545654296875] + percentile_00_5: 125.06123352050781 + percentile_10_0: 309.36199951171875 + percentile_90_0: 546.3201293945312 + percentile_99_5: 684.545654296875 + stdev: 96.92529296875 + ncomponents: 1 + pixel_percentage: 0.0328570120036602 + shape: + - [21, 16, 10] + - image_intensity: + - max: 914.921630859375 + mean: 416.649169921875 + median: 401.5123596191406 + min: 92.15038299560547 + percentile: [153.62783813476562, 309.36199951171875, 546.3201293945312, 824.9430541992188] + percentile_00_5: 153.62783813476562 + percentile_10_0: 309.36199951171875 + percentile_90_0: 546.3201293945312 + percentile_99_5: 824.9430541992188 + stdev: 108.88616943359375 + ncomponents: 1 + pixel_percentage: 0.035492971539497375 + shape: + - [22, 28, 13] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_343.nii.gz + image_foreground_stats: + intensity: + - max: 756.9825439453125 + mean: 347.78546142578125 + median: 326.1794738769531 + min: 18.462989807128906 + percentile: [147.70391845703125, 252.3275146484375, 467.72906494140625, 689.284912109375] + percentile_00_5: 147.70391845703125 + percentile_10_0: 252.3275146484375 + percentile_90_0: 467.72906494140625 + percentile_99_5: 689.284912109375 + stdev: 94.21290588378906 + image_stats: + channels: 1 + cropped_shape: + - [32, 45, 38] + intensity: + - max: 1009.31005859375 + mean: 479.31915283203125 + median: 492.34637451171875 + min: 0.0 + percentile: [24.617319107055664, 166.16690063476562, 750.8282470703125, 855.4518432617188] + percentile_00_5: 24.617319107055664 + percentile_10_0: 166.16690063476562 + percentile_90_0: 750.8282470703125 + percentile_99_5: 855.4518432617188 + stdev: 217.9313201904297 + shape: + - [32, 45, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_343.nii.gz + label_stats: + image_intensity: + - max: 756.9825439453125 + mean: 347.78546142578125 + median: 326.1794738769531 + min: 18.462989807128906 + percentile: [147.70391845703125, 252.3275146484375, 467.72906494140625, 689.284912109375] + percentile_00_5: 147.70391845703125 + percentile_10_0: 252.3275146484375 + percentile_90_0: 467.72906494140625 + percentile_99_5: 689.284912109375 + stdev: 94.21290588378906 + label: + - image_intensity: + - max: 1009.31005859375 + mean: 485.92840576171875 + median: 510.8093566894531 + min: 0.0 + percentile: [24.617319107055664, 160.0125732421875, 750.8282470703125, 861.6061401367188] + percentile_00_5: 24.617319107055664 + percentile_10_0: 160.0125732421875 + percentile_90_0: 750.8282470703125 + percentile_99_5: 861.6061401367188 + stdev: 220.2759552001953 + ncomponents: 1 + pixel_percentage: 0.9521564245223999 + shape: + - [32, 45, 38] + - image_intensity: + - max: 689.284912109375 + mean: 347.5610046386719 + median: 332.33380126953125 + min: 18.462989807128906 + percentile: [100.50020599365234, 252.3275146484375, 461.5747375488281, 638.0196533203125] + percentile_00_5: 100.50020599365234 + percentile_10_0: 252.3275146484375 + percentile_90_0: 461.5747375488281 + percentile_99_5: 638.0196533203125 + stdev: 89.56442260742188 + ncomponents: 1 + pixel_percentage: 0.019499268382787704 + shape: + - [18, 14, 13] + - image_intensity: + - max: 756.9825439453125 + mean: 347.93988037109375 + median: 326.1794738769531 + min: 123.08659362792969 + percentile: [184.62989807128906, 258.4818420410156, 473.8833923339844, 696.9778442382812] + percentile_00_5: 184.62989807128906 + percentile_10_0: 258.4818420410156 + percentile_90_0: 473.8833923339844 + percentile_99_5: 696.9778442382812 + stdev: 97.28160858154297 + ncomponents: 1 + pixel_percentage: 0.028344297781586647 + shape: + - [20, 20, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_220.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 47.252899169921875 + median: 45.0 + min: 20.0 + percentile: [29.0, 37.0, 60.0, 80.35498046875] + percentile_00_5: 29.0 + percentile_10_0: 37.0 + percentile_90_0: 60.0 + percentile_99_5: 80.35498046875 + stdev: 9.435927391052246 + image_stats: + channels: 1 + cropped_shape: + - [39, 45, 40] + intensity: + - max: 199.0 + mean: 63.99891662597656 + median: 66.0 + min: 1.0 + percentile: [6.0, 27.0, 98.0, 110.0] + percentile_00_5: 6.0 + percentile_10_0: 27.0 + percentile_90_0: 98.0 + percentile_99_5: 110.0 + stdev: 27.288511276245117 + shape: + - [39, 45, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_220.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 47.252899169921875 + median: 45.0 + min: 20.0 + percentile: [29.0, 37.0, 60.0, 80.35498046875] + percentile_00_5: 29.0 + percentile_10_0: 37.0 + percentile_90_0: 60.0 + percentile_99_5: 80.35498046875 + stdev: 9.435927391052246 + label: + - image_intensity: + - max: 199.0 + mean: 64.72830200195312 + median: 68.0 + min: 1.0 + percentile: [6.0, 26.0, 99.0, 110.0] + percentile_00_5: 6.0 + percentile_10_0: 26.0 + percentile_90_0: 99.0 + percentile_99_5: 110.0 + stdev: 27.576671600341797 + ncomponents: 1 + pixel_percentage: 0.9582620859146118 + shape: + - [39, 45, 40] + - image_intensity: + - max: 82.0 + mean: 47.16810989379883 + median: 46.0 + min: 20.0 + percentile: [28.244998931884766, 38.0, 60.0, 73.7550048828125] + percentile_00_5: 28.244998931884766 + percentile_10_0: 38.0 + percentile_90_0: 60.0 + percentile_99_5: 73.7550048828125 + stdev: 8.68209457397461 + ncomponents: 1 + pixel_percentage: 0.026353277266025543 + shape: + - [23, 16, 17] + - image_intensity: + - max: 96.0 + mean: 47.39814758300781 + median: 45.0 + min: 20.0 + percentile: [31.0, 37.0, 62.0, 88.6298828125] + percentile_00_5: 31.0 + percentile_10_0: 37.0 + percentile_90_0: 62.0 + percentile_99_5: 88.6298828125 + stdev: 10.601834297180176 + ncomponents: 1 + pixel_percentage: 0.015384615398943424 + shape: + - [17, 19, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_097.nii.gz + image_foreground_stats: + intensity: + - max: 824.9482421875 + mean: 377.7955627441406 + median: 361.4058837890625 + min: 117.84974670410156 + percentile: [172.84629821777344, 274.9827575683594, 518.5388793945312, 703.0128784179688] + percentile_00_5: 172.84629821777344 + percentile_10_0: 274.9827575683594 + percentile_90_0: 518.5388793945312 + percentile_99_5: 703.0128784179688 + stdev: 98.58232879638672 + image_stats: + channels: 1 + cropped_shape: + - [37, 48, 34] + intensity: + - max: 2011.3023681640625 + mean: 476.25152587890625 + median: 479.2556457519531 + min: 0.0 + percentile: [23.569950103759766, 141.41969299316406, 769.95166015625, 887.8014526367188] + percentile_00_5: 23.569950103759766 + percentile_10_0: 141.41969299316406 + percentile_90_0: 769.95166015625 + percentile_99_5: 887.8014526367188 + stdev: 229.5313720703125 + shape: + - [37, 48, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_097.nii.gz + label_stats: + image_intensity: + - max: 824.9482421875 + mean: 377.7955627441406 + median: 361.4058837890625 + min: 117.84974670410156 + percentile: [172.84629821777344, 274.9827575683594, 518.5388793945312, 703.0128784179688] + percentile_00_5: 172.84629821777344 + percentile_10_0: 274.9827575683594 + percentile_90_0: 518.5388793945312 + percentile_99_5: 703.0128784179688 + stdev: 98.58232879638672 + label: + - image_intensity: + - max: 2011.3023681640625 + mean: 480.9547119140625 + median: 494.96893310546875 + min: 0.0 + percentile: [23.569950103759766, 133.56304931640625, 769.95166015625, 895.6580810546875] + percentile_00_5: 23.569950103759766 + percentile_10_0: 133.56304931640625 + percentile_90_0: 769.95166015625 + percentile_99_5: 895.6580810546875 + stdev: 232.92044067382812 + ncomponents: 1 + pixel_percentage: 0.9544084668159485 + shape: + - [37, 48, 34] + - image_intensity: + - max: 824.9482421875 + mean: 372.3146667480469 + median: 361.4058837890625 + min: 117.84974670410156 + percentile: [180.70294189453125, 274.9827575683594, 487.1123046875, 673.3538208007812] + percentile_00_5: 180.70294189453125 + percentile_10_0: 274.9827575683594 + percentile_90_0: 487.1123046875 + percentile_99_5: 673.3538208007812 + stdev: 87.86534881591797 + ncomponents: 1 + pixel_percentage: 0.022423159331083298 + shape: + - [19, 15, 14] + - image_intensity: + - max: 754.2384033203125 + mean: 383.10015869140625 + median: 353.54925537109375 + min: 117.84974670410156 + percentile: [172.76773071289062, 274.9827575683594, 549.9655151367188, 722.811767578125] + percentile_00_5: 172.76773071289062 + percentile_10_0: 274.9827575683594 + percentile_90_0: 549.9655151367188 + percentile_99_5: 722.811767578125 + stdev: 107.6807632446289 + ncomponents: 1 + pixel_percentage: 0.02316838875412941 + shape: + - [18, 22, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_320.nii.gz + image_foreground_stats: + intensity: + - max: 72.0 + mean: 41.76091384887695 + median: 41.0 + min: 15.0 + percentile: [23.0, 31.0, 54.0, 68.0] + percentile_00_5: 23.0 + percentile_10_0: 31.0 + percentile_90_0: 54.0 + percentile_99_5: 68.0 + stdev: 8.930665969848633 + image_stats: + channels: 1 + cropped_shape: + - [33, 47, 34] + intensity: + - max: 121.0 + mean: 51.29743576049805 + median: 52.0 + min: 1.0 + percentile: [5.665008544921875, 16.0, 83.0, 96.0] + percentile_00_5: 5.665008544921875 + percentile_10_0: 16.0 + percentile_90_0: 83.0 + percentile_99_5: 96.0 + stdev: 24.259214401245117 + shape: + - [33, 47, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_320.nii.gz + label_stats: + image_intensity: + - max: 72.0 + mean: 41.76091384887695 + median: 41.0 + min: 15.0 + percentile: [23.0, 31.0, 54.0, 68.0] + percentile_00_5: 23.0 + percentile_10_0: 31.0 + percentile_90_0: 54.0 + percentile_99_5: 68.0 + stdev: 8.930665969848633 + label: + - image_intensity: + - max: 121.0 + mean: 51.76228332519531 + median: 54.0 + min: 1.0 + percentile: [5.0, 15.0, 83.0, 96.0] + percentile_00_5: 5.0 + percentile_10_0: 15.0 + percentile_90_0: 83.0 + percentile_99_5: 96.0 + stdev: 24.671016693115234 + ncomponents: 1 + pixel_percentage: 0.9535214304924011 + shape: + - [33, 47, 34] + - image_intensity: + - max: 70.0 + mean: 41.20208740234375 + median: 40.0 + min: 19.0 + percentile: [23.264999389648438, 32.0, 52.0, 67.7349853515625] + percentile_00_5: 23.264999389648438 + percentile_10_0: 32.0 + percentile_90_0: 52.0 + percentile_99_5: 67.7349853515625 + stdev: 8.365009307861328 + ncomponents: 1 + pixel_percentage: 0.01998710446059704 + shape: + - [18, 13, 11] + - image_intensity: + - max: 72.0 + mean: 42.182533264160156 + median: 41.0 + min: 15.0 + percentile: [21.940000534057617, 31.0, 55.0, 68.02001953125] + percentile_00_5: 21.940000534057617 + percentile_10_0: 31.0 + percentile_90_0: 55.0 + percentile_99_5: 68.02001953125 + stdev: 9.312612533569336 + ncomponents: 1 + pixel_percentage: 0.026491448283195496 + shape: + - [16, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_197.nii.gz + image_foreground_stats: + intensity: + - max: 100.0 + mean: 48.65205764770508 + median: 47.0 + min: 18.0 + percentile: [27.0, 36.0, 63.0, 84.0] + percentile_00_5: 27.0 + percentile_10_0: 36.0 + percentile_90_0: 63.0 + percentile_99_5: 84.0 + stdev: 10.97022819519043 + image_stats: + channels: 1 + cropped_shape: + - [38, 51, 31] + intensity: + - max: 145.0 + mean: 62.399696350097656 + median: 62.0 + min: 1.0 + percentile: [6.0, 21.0, 100.0, 111.0] + percentile_00_5: 6.0 + percentile_10_0: 21.0 + percentile_90_0: 100.0 + percentile_99_5: 111.0 + stdev: 28.665061950683594 + shape: + - [38, 51, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_197.nii.gz + label_stats: + image_intensity: + - max: 100.0 + mean: 48.65205764770508 + median: 47.0 + min: 18.0 + percentile: [27.0, 36.0, 63.0, 84.0] + percentile_00_5: 27.0 + percentile_10_0: 36.0 + percentile_90_0: 63.0 + percentile_99_5: 84.0 + stdev: 10.97022819519043 + label: + - image_intensity: + - max: 145.0 + mean: 63.218482971191406 + median: 65.0 + min: 1.0 + percentile: [6.0, 20.0, 100.0, 111.0] + percentile_00_5: 6.0 + percentile_10_0: 20.0 + percentile_90_0: 100.0 + percentile_99_5: 111.0 + stdev: 29.180978775024414 + ncomponents: 1 + pixel_percentage: 0.9437897205352783 + shape: + - [38, 51, 31] + - image_intensity: + - max: 95.0 + mean: 48.67937469482422 + median: 47.0 + min: 22.0 + percentile: [27.0, 36.0, 63.0, 81.0849609375] + percentile_00_5: 27.0 + percentile_10_0: 36.0 + percentile_90_0: 63.0 + percentile_99_5: 81.0849609375 + stdev: 10.763160705566406 + ncomponents: 1 + pixel_percentage: 0.029694730415940285 + shape: + - [23, 16, 11] + - image_intensity: + - max: 100.0 + mean: 48.6214714050293 + median: 47.0 + min: 18.0 + percentile: [27.0, 36.0, 63.0, 87.0400390625] + percentile_00_5: 27.0 + percentile_10_0: 36.0 + percentile_90_0: 63.0 + percentile_99_5: 87.0400390625 + stdev: 11.197501182556152 + ncomponents: 1 + pixel_percentage: 0.026515530422329903 + shape: + - [22, 19, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_351.nii.gz + image_foreground_stats: + intensity: + - max: 83.0 + mean: 44.23603820800781 + median: 43.0 + min: 20.0 + percentile: [25.0, 33.0, 58.0, 77.0] + percentile_00_5: 25.0 + percentile_10_0: 33.0 + percentile_90_0: 58.0 + percentile_99_5: 77.0 + stdev: 9.867890357971191 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 35] + intensity: + - max: 228.0 + mean: 54.463050842285156 + median: 54.0 + min: 1.0 + percentile: [6.0, 23.0, 85.0, 95.0] + percentile_00_5: 6.0 + percentile_10_0: 23.0 + percentile_90_0: 85.0 + percentile_99_5: 95.0 + stdev: 23.402904510498047 + shape: + - [35, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_351.nii.gz + label_stats: + image_intensity: + - max: 83.0 + mean: 44.23603820800781 + median: 43.0 + min: 20.0 + percentile: [25.0, 33.0, 58.0, 77.0] + percentile_00_5: 25.0 + percentile_10_0: 33.0 + percentile_90_0: 58.0 + percentile_99_5: 77.0 + stdev: 9.867890357971191 + label: + - image_intensity: + - max: 228.0 + mean: 55.111297607421875 + median: 56.0 + min: 1.0 + percentile: [6.0, 21.0, 85.0, 95.0] + percentile_00_5: 6.0 + percentile_10_0: 21.0 + percentile_90_0: 85.0 + percentile_99_5: 95.0 + stdev: 23.857709884643555 + ncomponents: 1 + pixel_percentage: 0.9403921365737915 + shape: + - [35, 51, 35] + - image_intensity: + - max: 72.0 + mean: 43.16300964355469 + median: 43.0 + min: 20.0 + percentile: [24.0, 32.0, 54.0, 67.89501953125] + percentile_00_5: 24.0 + percentile_10_0: 32.0 + percentile_90_0: 54.0 + percentile_99_5: 67.89501953125 + stdev: 8.438666343688965 + ncomponents: 1 + pixel_percentage: 0.0291636660695076 + shape: + - [19, 16, 15] + - image_intensity: + - max: 83.0 + mean: 45.26393127441406 + median: 42.0 + min: 25.0 + percentile: [27.0, 34.0, 62.0, 78.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 62.0 + percentile_99_5: 78.0 + stdev: 10.967198371887207 + ncomponents: 1 + pixel_percentage: 0.030444176867604256 + shape: + - [18, 26, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_251.nii.gz + image_foreground_stats: + intensity: + - max: 110.0 + mean: 51.39105224609375 + median: 50.0 + min: 12.0 + percentile: [22.0, 36.0, 69.0, 96.130126953125] + percentile_00_5: 22.0 + percentile_10_0: 36.0 + percentile_90_0: 69.0 + percentile_99_5: 96.130126953125 + stdev: 13.44233226776123 + image_stats: + channels: 1 + cropped_shape: + - [36, 58, 28] + intensity: + - max: 188.0 + mean: 66.17532348632812 + median: 66.0 + min: 2.0 + percentile: [7.0, 26.0, 106.0, 120.0] + percentile_00_5: 7.0 + percentile_10_0: 26.0 + percentile_90_0: 106.0 + percentile_99_5: 120.0 + stdev: 29.98658561706543 + shape: + - [36, 58, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_251.nii.gz + label_stats: + image_intensity: + - max: 110.0 + mean: 51.39105224609375 + median: 50.0 + min: 12.0 + percentile: [22.0, 36.0, 69.0, 96.130126953125] + percentile_00_5: 22.0 + percentile_10_0: 36.0 + percentile_90_0: 69.0 + percentile_99_5: 96.130126953125 + stdev: 13.44233226776123 + label: + - image_intensity: + - max: 188.0 + mean: 67.13824462890625 + median: 69.0 + min: 2.0 + percentile: [7.0, 25.0, 106.0, 121.0] + percentile_00_5: 7.0 + percentile_10_0: 25.0 + percentile_90_0: 106.0 + percentile_99_5: 121.0 + stdev: 30.509489059448242 + ncomponents: 1 + pixel_percentage: 0.9388512372970581 + shape: + - [36, 58, 28] + - image_intensity: + - max: 107.0 + mean: 49.77127456665039 + median: 49.0 + min: 12.0 + percentile: [21.099998474121094, 35.0, 66.0, 84.0] + percentile_00_5: 21.099998474121094 + percentile_10_0: 35.0 + percentile_90_0: 66.0 + percentile_99_5: 84.0 + stdev: 12.365617752075195 + ncomponents: 1 + pixel_percentage: 0.037989191710948944 + shape: + - [19, 22, 14] + - image_intensity: + - max: 110.0 + mean: 54.048004150390625 + median: 52.0 + min: 21.0 + percentile: [25.0, 38.0, 74.0, 98.2349853515625] + percentile_00_5: 25.0 + percentile_10_0: 38.0 + percentile_90_0: 74.0 + percentile_99_5: 98.2349853515625 + stdev: 14.659954071044922 + ncomponents: 1 + pixel_percentage: 0.02315955050289631 + shape: + - [17, 25, 11] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_185.nii.gz + image_foreground_stats: + intensity: + - max: 346674.8125 + mean: 156078.453125 + median: 147713.609375 + min: 54262.140625 + percentile: [78378.6484375, 111538.8515625, 211019.4375, 319543.71875] + percentile_00_5: 78378.6484375 + percentile_10_0: 111538.8515625 + percentile_90_0: 211019.4375 + percentile_99_5: 319543.71875 + stdev: 42209.59765625 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 33] + intensity: + - max: 943558.375 + mean: 200821.484375 + median: 192932.0625 + min: 0.0 + percentile: [12058.25390625, 87422.34375, 316529.15625, 376820.4375] + percentile_00_5: 12058.25390625 + percentile_10_0: 87422.34375 + percentile_90_0: 316529.15625 + percentile_99_5: 376820.4375 + stdev: 89863.71875 + shape: + - [35, 49, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_185.nii.gz + label_stats: + image_intensity: + - max: 346674.8125 + mean: 156078.453125 + median: 147713.609375 + min: 54262.140625 + percentile: [78378.6484375, 111538.8515625, 211019.4375, 319543.71875] + percentile_00_5: 78378.6484375 + percentile_10_0: 111538.8515625 + percentile_90_0: 211019.4375 + percentile_99_5: 319543.71875 + stdev: 42209.59765625 + label: + - image_intensity: + - max: 943558.375 + mean: 203425.8125 + median: 198961.1875 + min: 0.0 + percentile: [12058.25390625, 81393.2109375, 319543.71875, 376820.4375] + percentile_00_5: 12058.25390625 + percentile_10_0: 81393.2109375 + percentile_90_0: 319543.71875 + percentile_99_5: 376820.4375 + stdev: 91205.9296875 + ncomponents: 1 + pixel_percentage: 0.9449951648712158 + shape: + - [35, 49, 33] + - image_intensity: + - max: 322558.28125 + mean: 151587.84375 + median: 147713.609375 + min: 54262.140625 + percentile: [75364.0859375, 111538.8515625, 198961.1875, 261664.265625] + percentile_00_5: 75364.0859375 + percentile_10_0: 111538.8515625 + percentile_90_0: 198961.1875 + percentile_99_5: 261664.265625 + stdev: 35058.625 + ncomponents: 1 + pixel_percentage: 0.032529376447200775 + shape: + - [22, 17, 15] + - image_intensity: + - max: 346674.8125 + mean: 162577.875 + median: 150728.171875 + min: 75364.0859375 + percentile: [84407.78125, 114553.4140625, 232121.390625, 328587.40625] + percentile_00_5: 84407.78125 + percentile_10_0: 114553.4140625 + percentile_90_0: 232121.390625 + percentile_99_5: 328587.40625 + stdev: 50099.22265625 + ncomponents: 1 + pixel_percentage: 0.022475482895970345 + shape: + - [19, 23, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_332.nii.gz + image_foreground_stats: + intensity: + - max: 735.0159301757812 + mean: 323.45281982421875 + median: 315.0068359375 + min: 75.83497619628906 + percentile: [134.16957092285156, 227.5049285888672, 431.676025390625, 597.1719360351562] + percentile_00_5: 134.16957092285156 + percentile_10_0: 227.5049285888672 + percentile_90_0: 431.676025390625 + percentile_99_5: 597.1719360351562 + stdev: 84.13334655761719 + image_stats: + channels: 1 + cropped_shape: + - [35, 52, 33] + intensity: + - max: 1131.691162109375 + mean: 398.6791687011719 + median: 408.3421936035156 + min: 0.0 + percentile: [17.50037956237793, 122.50265502929688, 630.013671875, 705.8486328125] + percentile_00_5: 17.50037956237793 + percentile_10_0: 122.50265502929688 + percentile_90_0: 630.013671875 + percentile_99_5: 705.8486328125 + stdev: 185.0409698486328 + shape: + - [35, 52, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_332.nii.gz + label_stats: + image_intensity: + - max: 735.0159301757812 + mean: 323.45281982421875 + median: 315.0068359375 + min: 75.83497619628906 + percentile: [134.16957092285156, 227.5049285888672, 431.676025390625, 597.1719360351562] + percentile_00_5: 134.16957092285156 + percentile_10_0: 227.5049285888672 + percentile_90_0: 431.676025390625 + percentile_99_5: 597.1719360351562 + stdev: 84.13334655761719 + label: + - image_intensity: + - max: 1131.691162109375 + mean: 403.0907287597656 + median: 420.00909423828125 + min: 0.0 + percentile: [17.50037956237793, 110.83573913574219, 630.013671875, 705.8486328125] + percentile_00_5: 17.50037956237793 + percentile_10_0: 110.83573913574219 + percentile_90_0: 630.013671875 + percentile_99_5: 705.8486328125 + stdev: 188.36582946777344 + ncomponents: 1 + pixel_percentage: 0.9446054100990295 + shape: + - [35, 52, 33] + - image_intensity: + - max: 735.0159301757812 + mean: 325.86492919921875 + median: 315.0068359375 + min: 75.83497619628906 + percentile: [134.16957092285156, 239.17185974121094, 425.8425598144531, 612.3965454101562] + percentile_00_5: 134.16957092285156 + percentile_10_0: 239.17185974121094 + percentile_90_0: 425.8425598144531 + percentile_99_5: 612.3965454101562 + stdev: 79.28632354736328 + ncomponents: 1 + pixel_percentage: 0.030019979923963547 + shape: + - [24, 17, 13] + - image_intensity: + - max: 647.5140380859375 + mean: 320.5991516113281 + median: 303.33990478515625 + min: 81.66844177246094 + percentile: [134.16957092285156, 221.67147827148438, 443.34295654296875, 589.179443359375] + percentile_00_5: 134.16957092285156 + percentile_10_0: 221.67147827148438 + percentile_90_0: 443.34295654296875 + percentile_99_5: 589.179443359375 + stdev: 89.44551849365234 + ncomponents: 1 + pixel_percentage: 0.025374624878168106 + shape: + - [22, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_232.nii.gz + image_foreground_stats: + intensity: + - max: 771.6840209960938 + mean: 343.7138671875 + median: 330.72174072265625 + min: 38.90843963623047 + percentile: [138.18980407714844, 239.9353790283203, 466.9012756347656, 627.0091552734375] + percentile_00_5: 138.18980407714844 + percentile_10_0: 239.9353790283203 + percentile_90_0: 466.9012756347656 + percentile_99_5: 627.0091552734375 + stdev: 92.4798355102539 + image_stats: + channels: 1 + cropped_shape: + - [36, 44, 43] + intensity: + - max: 1368.2801513671875 + mean: 459.8207092285156 + median: 486.35546875 + min: 0.0 + percentile: [19.454219818115234, 129.69479370117188, 726.2908325195312, 810.5924682617188] + percentile_00_5: 19.454219818115234 + percentile_10_0: 129.69479370117188 + percentile_90_0: 726.2908325195312 + percentile_99_5: 810.5924682617188 + stdev: 220.6343231201172 + shape: + - [36, 44, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_232.nii.gz + label_stats: + image_intensity: + - max: 771.6840209960938 + mean: 343.7138671875 + median: 330.72174072265625 + min: 38.90843963623047 + percentile: [138.18980407714844, 239.9353790283203, 466.9012756347656, 627.0091552734375] + percentile_00_5: 138.18980407714844 + percentile_10_0: 239.9353790283203 + percentile_90_0: 466.9012756347656 + percentile_99_5: 627.0091552734375 + stdev: 92.4798355102539 + label: + - image_intensity: + - max: 1368.2801513671875 + mean: 464.915283203125 + median: 505.8096923828125 + min: 0.0 + percentile: [19.454219818115234, 123.21005249023438, 726.2908325195312, 810.5924682617188] + percentile_00_5: 19.454219818115234 + percentile_10_0: 123.21005249023438 + percentile_90_0: 726.2908325195312 + percentile_99_5: 810.5924682617188 + stdev: 223.21006774902344 + ncomponents: 1 + pixel_percentage: 0.9579662680625916 + shape: + - [36, 44, 43] + - image_intensity: + - max: 771.6840209960938 + mean: 349.5762939453125 + median: 337.20648193359375 + min: 64.84739685058594 + percentile: [139.84341430664062, 246.42010498046875, 473.3860168457031, 622.5350341796875] + percentile_00_5: 139.84341430664062 + percentile_10_0: 246.42010498046875 + percentile_90_0: 473.3860168457031 + percentile_99_5: 622.5350341796875 + stdev: 88.98282623291016 + ncomponents: 1 + pixel_percentage: 0.022228095680475235 + shape: + - [21, 14, 17] + - image_intensity: + - max: 719.8060913085938 + mean: 337.1343688964844 + median: 324.23699951171875 + min: 38.90843963623047 + percentile: [140.97824096679688, 233.4506378173828, 466.9012756347656, 629.019775390625] + percentile_00_5: 140.97824096679688 + percentile_10_0: 233.4506378173828 + percentile_90_0: 466.9012756347656 + percentile_99_5: 629.019775390625 + stdev: 95.82720947265625 + ncomponents: 1 + pixel_percentage: 0.01980561390519142 + shape: + - [19, 19, 26] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_298.nii.gz + image_foreground_stats: + intensity: + - max: 777.1678466796875 + mean: 333.4384765625 + median: 318.9867858886719 + min: 75.39688110351562 + percentile: [127.59471893310547, 220.390869140625, 469.7805480957031, 653.748779296875] + percentile_00_5: 127.59471893310547 + percentile_10_0: 220.390869140625 + percentile_90_0: 469.7805480957031 + percentile_99_5: 653.748779296875 + stdev: 98.78781127929688 + image_stats: + channels: 1 + cropped_shape: + - [37, 50, 33] + intensity: + - max: 2679.489013671875 + mean: 408.6648254394531 + median: 417.58270263671875 + min: 0.0 + percentile: [17.399280548095703, 121.79496002197266, 655.3728637695312, 788.767333984375] + percentile_00_5: 17.399280548095703 + percentile_10_0: 121.79496002197266 + percentile_90_0: 655.3728637695312 + percentile_99_5: 788.767333984375 + stdev: 204.18528747558594 + shape: + - [37, 50, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_298.nii.gz + label_stats: + image_intensity: + - max: 777.1678466796875 + mean: 333.4384765625 + median: 318.9867858886719 + min: 75.39688110351562 + percentile: [127.59471893310547, 220.390869140625, 469.7805480957031, 653.748779296875] + percentile_00_5: 127.59471893310547 + percentile_10_0: 220.390869140625 + percentile_90_0: 469.7805480957031 + percentile_99_5: 653.748779296875 + stdev: 98.78781127929688 + label: + - image_intensity: + - max: 2679.489013671875 + mean: 412.35809326171875 + median: 429.1822204589844 + min: 0.0 + percentile: [17.399280548095703, 115.99519348144531, 655.3728637695312, 794.5670776367188] + percentile_00_5: 17.399280548095703 + percentile_10_0: 115.99519348144531 + percentile_90_0: 655.3728637695312 + percentile_99_5: 794.5670776367188 + stdev: 207.28700256347656 + ncomponents: 1 + pixel_percentage: 0.9532023072242737 + shape: + - [37, 50, 33] + - image_intensity: + - max: 777.1678466796875 + mean: 334.13775634765625 + median: 318.9867858886719 + min: 92.79615783691406 + percentile: [127.50772094726562, 220.390869140625, 469.7805480957031, 661.172607421875] + percentile_00_5: 127.50772094726562 + percentile_10_0: 220.390869140625 + percentile_90_0: 469.7805480957031 + percentile_99_5: 661.172607421875 + stdev: 98.68000793457031 + ncomponents: 1 + pixel_percentage: 0.029451269656419754 + shape: + - [24, 18, 14] + - image_intensity: + - max: 690.1714477539062 + mean: 332.251220703125 + median: 318.9867858886719 + min: 75.39688110351562 + percentile: [129.27664184570312, 226.1906280517578, 469.7805480957031, 643.7733154296875] + percentile_00_5: 129.27664184570312 + percentile_10_0: 226.1906280517578 + percentile_90_0: 469.7805480957031 + percentile_99_5: 643.7733154296875 + stdev: 98.95924377441406 + ncomponents: 1 + pixel_percentage: 0.017346438020467758 + shape: + - [21, 23, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_152.nii.gz + image_foreground_stats: + intensity: + - max: 92.0 + mean: 45.35102844238281 + median: 43.0 + min: 5.0 + percentile: [21.0, 32.0, 62.0, 81.0] + percentile_00_5: 21.0 + percentile_10_0: 32.0 + percentile_90_0: 62.0 + percentile_99_5: 81.0 + stdev: 11.96658992767334 + image_stats: + channels: 1 + cropped_shape: + - [36, 53, 37] + intensity: + - max: 255.0 + mean: 65.83080291748047 + median: 66.0 + min: 1.0 + percentile: [8.0, 29.0, 103.0, 117.0] + percentile_00_5: 8.0 + percentile_10_0: 29.0 + percentile_90_0: 103.0 + percentile_99_5: 117.0 + stdev: 29.092395782470703 + shape: + - [36, 53, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_152.nii.gz + label_stats: + image_intensity: + - max: 92.0 + mean: 45.35102844238281 + median: 43.0 + min: 5.0 + percentile: [21.0, 32.0, 62.0, 81.0] + percentile_00_5: 21.0 + percentile_10_0: 32.0 + percentile_90_0: 62.0 + percentile_99_5: 81.0 + stdev: 11.96658992767334 + label: + - image_intensity: + - max: 255.0 + mean: 67.05892944335938 + median: 69.0 + min: 1.0 + percentile: [7.0, 28.0, 103.0, 118.0] + percentile_00_5: 7.0 + percentile_10_0: 28.0 + percentile_90_0: 103.0 + percentile_99_5: 118.0 + stdev: 29.357707977294922 + ncomponents: 1 + pixel_percentage: 0.9434245824813843 + shape: + - [36, 53, 37] + - image_intensity: + - max: 92.0 + mean: 44.925506591796875 + median: 43.0 + min: 5.0 + percentile: [21.0, 32.0, 61.0, 80.0] + percentile_00_5: 21.0 + percentile_10_0: 32.0 + percentile_90_0: 61.0 + percentile_99_5: 80.0 + stdev: 11.415231704711914 + ncomponents: 1 + pixel_percentage: 0.03004419431090355 + shape: + - [22, 18, 16] + - image_intensity: + - max: 91.0 + mean: 45.832889556884766 + median: 44.0 + min: 9.0 + percentile: [21.360000610351562, 32.0, 64.0, 82.0] + percentile_00_5: 21.360000610351562 + percentile_10_0: 32.0 + percentile_90_0: 64.0 + percentile_99_5: 82.0 + stdev: 12.544351577758789 + ncomponents: 1 + pixel_percentage: 0.026531247422099113 + shape: + - [17, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_052.nii.gz + image_foreground_stats: + intensity: + - max: 950.1234741210938 + mean: 413.4596862792969 + median: 392.6130065917969 + min: 15.704520225524902 + percentile: [179.03152465820312, 274.8291015625, 581.0672607421875, 800.9305419921875] + percentile_00_5: 179.03152465820312 + percentile_10_0: 274.8291015625 + percentile_90_0: 581.0672607421875 + percentile_99_5: 800.9305419921875 + stdev: 123.13238525390625 + image_stats: + channels: 1 + cropped_shape: + - [34, 52, 40] + intensity: + - max: 3305.801513671875 + mean: 540.4805297851562 + median: 565.3627319335938 + min: 0.0 + percentile: [23.556779861450195, 180.60198974609375, 848.0440673828125, 973.6802368164062] + percentile_00_5: 23.556779861450195 + percentile_10_0: 180.60198974609375 + percentile_90_0: 848.0440673828125 + percentile_99_5: 973.6802368164062 + stdev: 251.4863739013672 + shape: + - [34, 52, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_052.nii.gz + label_stats: + image_intensity: + - max: 950.1234741210938 + mean: 413.4596862792969 + median: 392.6130065917969 + min: 15.704520225524902 + percentile: [179.03152465820312, 274.8291015625, 581.0672607421875, 800.9305419921875] + percentile_00_5: 179.03152465820312 + percentile_10_0: 274.8291015625 + percentile_90_0: 581.0672607421875 + percentile_99_5: 800.9305419921875 + stdev: 123.13238525390625 + label: + - image_intensity: + - max: 3305.801513671875 + mean: 546.8184204101562 + median: 581.0672607421875 + min: 0.0 + percentile: [23.556779861450195, 172.74972534179688, 855.8963623046875, 981.5325317382812] + percentile_00_5: 23.556779861450195 + percentile_10_0: 172.74972534179688 + percentile_90_0: 855.8963623046875 + percentile_99_5: 981.5325317382812 + stdev: 254.5572509765625 + ncomponents: 1 + pixel_percentage: 0.9524745345115662 + shape: + - [34, 52, 40] + - image_intensity: + - max: 816.6350708007812 + mean: 424.75750732421875 + median: 408.3175354003906 + min: 15.704520225524902 + percentile: [174.5557403564453, 290.53363037109375, 581.0672607421875, 759.8634033203125] + percentile_00_5: 174.5557403564453 + percentile_10_0: 290.53363037109375 + percentile_90_0: 581.0672607421875 + percentile_99_5: 759.8634033203125 + stdev: 116.4361343383789 + ncomponents: 1 + pixel_percentage: 0.026117080822587013 + shape: + - [22, 18, 16] + - image_intensity: + - max: 950.1234741210938 + mean: 399.67694091796875 + median: 376.9084777832031 + min: 94.22711944580078 + percentile: [180.60198974609375, 259.12457275390625, 581.0672607421875, 812.198974609375] + percentile_00_5: 180.60198974609375 + percentile_10_0: 259.12457275390625 + percentile_90_0: 581.0672607421875 + percentile_99_5: 812.198974609375 + stdev: 129.5104522705078 + ncomponents: 1 + pixel_percentage: 0.02140837162733078 + shape: + - [18, 23, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_386.nii.gz + image_foreground_stats: + intensity: + - max: 909.3862915039062 + mean: 430.47882080078125 + median: 409.5709228515625 + min: 104.12820434570312 + percentile: [194.37265014648438, 305.4427185058594, 590.059814453125, 826.083740234375] + percentile_00_5: 194.37265014648438 + percentile_10_0: 305.4427185058594 + percentile_90_0: 590.059814453125 + percentile_99_5: 826.083740234375 + stdev: 114.90670776367188 + image_stats: + channels: 1 + cropped_shape: + - [37, 45, 40] + intensity: + - max: 2957.240966796875 + mean: 586.9544677734375 + median: 610.8854370117188 + min: 0.0 + percentile: [27.767520904541016, 180.4888916015625, 923.2700805664062, 1062.107666015625] + percentile_00_5: 27.767520904541016 + percentile_10_0: 180.4888916015625 + percentile_90_0: 923.2700805664062 + percentile_99_5: 1062.107666015625 + stdev: 274.523193359375 + shape: + - [37, 45, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_386.nii.gz + label_stats: + image_intensity: + - max: 909.3862915039062 + mean: 430.47882080078125 + median: 409.5709228515625 + min: 104.12820434570312 + percentile: [194.37265014648438, 305.4427185058594, 590.059814453125, 826.083740234375] + percentile_00_5: 194.37265014648438 + percentile_10_0: 305.4427185058594 + percentile_90_0: 590.059814453125 + percentile_99_5: 826.083740234375 + stdev: 114.90670776367188 + label: + - image_intensity: + - max: 2957.240966796875 + mean: 594.8729858398438 + median: 638.6529541015625 + min: 0.0 + percentile: [27.767520904541016, 173.54701232910156, 930.2119750976562, 1062.107666015625] + percentile_00_5: 27.767520904541016 + percentile_10_0: 173.54701232910156 + percentile_90_0: 930.2119750976562 + percentile_99_5: 1062.107666015625 + stdev: 277.8612060546875 + ncomponents: 1 + pixel_percentage: 0.9518318176269531 + shape: + - [37, 45, 40] + - image_intensity: + - max: 888.5606689453125 + mean: 436.0273132324219 + median: 416.5128173828125 + min: 104.12820434570312 + percentile: [192.91485595703125, 319.32647705078125, 583.117919921875, 756.6649169921875] + percentile_00_5: 192.91485595703125 + percentile_10_0: 319.32647705078125 + percentile_90_0: 583.117919921875 + percentile_99_5: 756.6649169921875 + stdev: 103.90769958496094 + ncomponents: 1 + pixel_percentage: 0.02941441349685192 + shape: + - [22, 16, 18] + - image_intensity: + - max: 909.3862915039062 + mean: 421.7761535644531 + median: 388.74530029296875 + min: 180.4888916015625 + percentile: [194.37265014648438, 284.6170959472656, 610.8854370117188, 853.8512573242188] + percentile_00_5: 194.37265014648438 + percentile_10_0: 284.6170959472656 + percentile_90_0: 610.8854370117188 + percentile_99_5: 853.8512573242188 + stdev: 129.82447814941406 + ncomponents: 1 + pixel_percentage: 0.01875375397503376 + shape: + - [17, 18, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_286.nii.gz + image_foreground_stats: + intensity: + - max: 76.0 + mean: 38.50819778442383 + median: 37.0 + min: 11.0 + percentile: [19.0, 28.0, 51.0, 67.0] + percentile_00_5: 19.0 + percentile_10_0: 28.0 + percentile_90_0: 51.0 + percentile_99_5: 67.0 + stdev: 9.296651840209961 + image_stats: + channels: 1 + cropped_shape: + - [37, 45, 46] + intensity: + - max: 163.0 + mean: 53.14793014526367 + median: 55.0 + min: 1.0 + percentile: [6.0, 19.0, 83.0, 93.0] + percentile_00_5: 6.0 + percentile_10_0: 19.0 + percentile_90_0: 83.0 + percentile_99_5: 93.0 + stdev: 23.763294219970703 + shape: + - [37, 45, 46] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_286.nii.gz + label_stats: + image_intensity: + - max: 76.0 + mean: 38.50819778442383 + median: 37.0 + min: 11.0 + percentile: [19.0, 28.0, 51.0, 67.0] + percentile_00_5: 19.0 + percentile_10_0: 28.0 + percentile_90_0: 51.0 + percentile_99_5: 67.0 + stdev: 9.296651840209961 + label: + - image_intensity: + - max: 163.0 + mean: 53.78043746948242 + median: 57.0 + min: 1.0 + percentile: [6.0, 19.0, 83.0, 93.0] + percentile_00_5: 6.0 + percentile_10_0: 19.0 + percentile_90_0: 83.0 + percentile_99_5: 93.0 + stdev: 23.993701934814453 + ncomponents: 1 + pixel_percentage: 0.9585846662521362 + shape: + - [37, 45, 46] + - image_intensity: + - max: 76.0 + mean: 40.06209945678711 + median: 39.0 + min: 11.0 + percentile: [19.80500030517578, 31.0, 51.0, 67.0] + percentile_00_5: 19.80500030517578 + percentile_10_0: 31.0 + percentile_90_0: 51.0 + percentile_99_5: 67.0 + stdev: 8.490899085998535 + ncomponents: 1 + pixel_percentage: 0.020394306629896164 + shape: + - [20, 14, 16] + - image_intensity: + - max: 74.0 + mean: 37.0006217956543 + median: 35.0 + min: 15.0 + percentile: [19.0, 27.0, 51.0, 67.9549560546875] + percentile_00_5: 19.0 + percentile_10_0: 27.0 + percentile_90_0: 51.0 + percentile_99_5: 67.9549560546875 + stdev: 9.783526420593262 + ncomponents: 1 + pixel_percentage: 0.021021021530032158 + shape: + - [17, 20, 26] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_040.nii.gz + image_foreground_stats: + intensity: + - max: 986.6376342773438 + mean: 430.5716247558594 + median: 419.32098388671875 + min: 90.44178009033203 + percentile: [189.1055450439453, 295.99127197265625, 583.7605590820312, 871.5299072265625] + percentile_00_5: 189.1055450439453 + percentile_10_0: 295.99127197265625 + percentile_90_0: 583.7605590820312 + percentile_99_5: 871.5299072265625 + stdev: 120.52799224853516 + image_stats: + channels: 1 + cropped_shape: + - [36, 52, 37] + intensity: + - max: 3329.90185546875 + mean: 607.1381225585938 + median: 608.426513671875 + min: 0.0 + percentile: [49.331878662109375, 254.88137817382812, 945.5277099609375, 1192.1871337890625] + percentile_00_5: 49.331878662109375 + percentile_10_0: 254.88137817382812 + percentile_90_0: 945.5277099609375 + percentile_99_5: 1192.1871337890625 + stdev: 275.4247741699219 + shape: + - [36, 52, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_040.nii.gz + label_stats: + image_intensity: + - max: 986.6376342773438 + mean: 430.5716247558594 + median: 419.32098388671875 + min: 90.44178009033203 + percentile: [189.1055450439453, 295.99127197265625, 583.7605590820312, 871.5299072265625] + percentile_00_5: 189.1055450439453 + percentile_10_0: 295.99127197265625 + percentile_90_0: 583.7605590820312 + percentile_99_5: 871.5299072265625 + stdev: 120.52799224853516 + label: + - image_intensity: + - max: 3329.90185546875 + mean: 616.379638671875 + median: 633.0924682617188 + min: 0.0 + percentile: [49.331878662109375, 254.88137817382812, 945.5277099609375, 1208.631103515625] + percentile_00_5: 49.331878662109375 + percentile_10_0: 254.88137817382812 + percentile_90_0: 945.5277099609375 + percentile_99_5: 1208.631103515625 + stdev: 278.1219177246094 + ncomponents: 1 + pixel_percentage: 0.9502627849578857 + shape: + - [36, 52, 37] + - image_intensity: + - max: 781.088134765625 + mean: 429.6911926269531 + median: 419.32098388671875 + min: 123.32970428466797 + percentile: [189.1055450439453, 304.2132568359375, 575.5386352539062, 723.5342407226562] + percentile_00_5: 189.1055450439453 + percentile_10_0: 304.2132568359375 + percentile_90_0: 575.5386352539062 + percentile_99_5: 723.5342407226562 + stdev: 103.72377014160156 + ncomponents: 1 + pixel_percentage: 0.027517901733517647 + shape: + - [23, 19, 15] + - image_intensity: + - max: 986.6376342773438 + mean: 431.6619567871094 + median: 411.0989990234375 + min: 90.44178009033203 + percentile: [180.88356018066406, 279.5473327636719, 610.0704956054688, 906.9671020507812] + percentile_00_5: 180.88356018066406 + percentile_10_0: 279.5473327636719 + percentile_90_0: 610.0704956054688 + percentile_99_5: 906.9671020507812 + stdev: 138.53466796875 + ncomponents: 1 + pixel_percentage: 0.022219333797693253 + shape: + - [19, 24, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_294.nii.gz + image_foreground_stats: + intensity: + - max: 1034.036865234375 + mean: 338.003662109375 + median: 323.13653564453125 + min: 47.001678466796875 + percentile: [146.8802490234375, 235.00839233398438, 458.266357421875, 650.7684326171875] + percentile_00_5: 146.8802490234375 + percentile_10_0: 235.00839233398438 + percentile_90_0: 458.266357421875 + percentile_99_5: 650.7684326171875 + stdev: 91.43244171142578 + image_stats: + channels: 1 + cropped_shape: + - [35, 44, 44] + intensity: + - max: 2044.572998046875 + mean: 463.3653259277344 + median: 481.7672119140625 + min: 0.0 + percentile: [23.500839233398438, 170.38108825683594, 728.5260009765625, 846.0302124023438] + percentile_00_5: 23.500839233398438 + percentile_10_0: 170.38108825683594 + percentile_90_0: 728.5260009765625 + percentile_99_5: 846.0302124023438 + stdev: 212.98977661132812 + shape: + - [35, 44, 44] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_294.nii.gz + label_stats: + image_intensity: + - max: 1034.036865234375 + mean: 338.003662109375 + median: 323.13653564453125 + min: 47.001678466796875 + percentile: [146.8802490234375, 235.00839233398438, 458.266357421875, 650.7684326171875] + percentile_00_5: 146.8802490234375 + percentile_10_0: 235.00839233398438 + percentile_90_0: 458.266357421875 + percentile_99_5: 650.7684326171875 + stdev: 91.43244171142578 + label: + - image_intensity: + - max: 2044.572998046875 + mean: 469.6769104003906 + median: 499.392822265625 + min: 0.0 + percentile: [23.500839233398438, 164.50587463378906, 728.5260009765625, 846.0302124023438] + percentile_00_5: 23.500839233398438 + percentile_10_0: 164.50587463378906 + percentile_90_0: 728.5260009765625 + percentile_99_5: 846.0302124023438 + stdev: 215.39883422851562 + ncomponents: 1 + pixel_percentage: 0.9520661234855652 + shape: + - [35, 44, 44] + - image_intensity: + - max: 1034.036865234375 + mean: 345.9845886230469 + median: 340.7621765136719 + min: 47.001678466796875 + percentile: [129.25460815429688, 246.75881958007812, 458.266357421875, 622.772216796875] + percentile_00_5: 129.25460815429688 + percentile_10_0: 246.75881958007812 + percentile_90_0: 458.266357421875 + percentile_99_5: 622.772216796875 + stdev: 86.27320861816406 + ncomponents: 1 + pixel_percentage: 0.025767413899302483 + shape: + - [22, 15, 18] + - image_intensity: + - max: 781.4028930664062 + mean: 328.7261962890625 + median: 311.3861083984375 + min: 135.12982177734375 + percentile: [155.72244262695312, 223.25796508789062, 452.3911437988281, 666.806884765625] + percentile_00_5: 155.72244262695312 + percentile_10_0: 223.25796508789062 + percentile_90_0: 452.3911437988281 + percentile_99_5: 666.806884765625 + stdev: 96.25769805908203 + ncomponents: 1 + pixel_percentage: 0.02216647006571293 + shape: + - [21, 17, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_023.nii.gz + image_foreground_stats: + intensity: + - max: 1152.9541015625 + mean: 552.4085083007812 + median: 530.7249145507812 + min: 118.9555892944336 + percentile: [247.0615997314453, 393.4684753417969, 734.7777099609375, 1008.0574340820312] + percentile_00_5: 247.0615997314453 + percentile_10_0: 393.4684753417969 + percentile_90_0: 734.7777099609375 + percentile_99_5: 1008.0574340820312 + stdev: 141.21958923339844 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 35] + intensity: + - max: 2772.580322265625 + mean: 737.96044921875 + median: 732.0343627929688 + min: 0.0 + percentile: [54.90258026123047, 356.86676025390625, 1134.6533203125, 1271.9097900390625] + percentile_00_5: 54.90258026123047 + percentile_10_0: 356.86676025390625 + percentile_90_0: 1134.6533203125 + percentile_99_5: 1271.9097900390625 + stdev: 303.10107421875 + shape: + - [35, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_023.nii.gz + label_stats: + image_intensity: + - max: 1152.9541015625 + mean: 552.4085083007812 + median: 530.7249145507812 + min: 118.9555892944336 + percentile: [247.0615997314453, 393.4684753417969, 734.7777099609375, 1008.0574340820312] + percentile_00_5: 247.0615997314453 + percentile_10_0: 393.4684753417969 + percentile_90_0: 734.7777099609375 + percentile_99_5: 1008.0574340820312 + stdev: 141.21958923339844 + label: + - image_intensity: + - max: 2772.580322265625 + mean: 749.1994018554688 + median: 759.4856567382812 + min: 0.0 + percentile: [45.75214767456055, 347.7163391113281, 1143.8037109375, 1271.9097900390625] + percentile_00_5: 45.75214767456055 + percentile_10_0: 347.7163391113281 + percentile_90_0: 1143.8037109375 + percentile_99_5: 1271.9097900390625 + stdev: 306.61895751953125 + ncomponents: 1 + pixel_percentage: 0.9428891539573669 + shape: + - [35, 51, 35] + - image_intensity: + - max: 1152.9541015625 + mean: 551.5122680664062 + median: 539.8753662109375 + min: 118.9555892944336 + percentile: [269.66314697265625, 393.4684753417969, 722.8839721679688, 990.67138671875] + percentile_00_5: 269.66314697265625 + percentile_10_0: 393.4684753417969 + percentile_90_0: 722.8839721679688 + percentile_99_5: 990.67138671875 + stdev: 134.81661987304688 + ncomponents: 1 + pixel_percentage: 0.02797919139266014 + shape: + - [23, 17, 14] + - image_intensity: + - max: 1134.6533203125 + mean: 553.2691650390625 + median: 530.7249145507812 + min: 164.70773315429688 + percentile: [247.0615997314453, 393.4684753417969, 759.4856567382812, 1015.6976928710938] + percentile_00_5: 247.0615997314453 + percentile_10_0: 393.4684753417969 + percentile_90_0: 759.4856567382812 + percentile_99_5: 1015.6976928710938 + stdev: 147.1019744873047 + ncomponents: 1 + pixel_percentage: 0.029131652787327766 + shape: + - [21, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_394.nii.gz + image_foreground_stats: + intensity: + - max: 988.16162109375 + mean: 414.5062561035156 + median: 395.2646484375 + min: 16.4693603515625 + percentile: [156.45892333984375, 271.74444580078125, 576.4276123046875, 847.6372680664062] + percentile_00_5: 156.45892333984375 + percentile_10_0: 271.74444580078125 + percentile_90_0: 576.4276123046875 + percentile_99_5: 847.6372680664062 + stdev: 125.80195617675781 + image_stats: + channels: 1 + cropped_shape: + - [36, 52, 32] + intensity: + - max: 1836.333740234375 + mean: 564.4026489257812 + median: 559.958251953125 + min: 0.0 + percentile: [32.938720703125, 205.86700439453125, 914.0494995117188, 1045.804443359375] + percentile_00_5: 32.938720703125 + percentile_10_0: 205.86700439453125 + percentile_90_0: 914.0494995117188 + percentile_99_5: 1045.804443359375 + stdev: 270.1158447265625 + shape: + - [36, 52, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_394.nii.gz + label_stats: + image_intensity: + - max: 988.16162109375 + mean: 414.5062561035156 + median: 395.2646484375 + min: 16.4693603515625 + percentile: [156.45892333984375, 271.74444580078125, 576.4276123046875, 847.6372680664062] + percentile_00_5: 156.45892333984375 + percentile_10_0: 271.74444580078125 + percentile_90_0: 576.4276123046875 + percentile_99_5: 847.6372680664062 + stdev: 125.80195617675781 + label: + - image_intensity: + - max: 1836.333740234375 + mean: 574.5952758789062 + median: 584.6622924804688 + min: 0.0 + percentile: [32.938720703125, 197.63232421875, 922.2841796875, 1045.804443359375] + percentile_00_5: 32.938720703125 + percentile_10_0: 197.63232421875 + percentile_90_0: 922.2841796875 + percentile_99_5: 1045.804443359375 + stdev: 274.2553405761719 + ncomponents: 1 + pixel_percentage: 0.9363314509391785 + shape: + - [36, 52, 32] + - image_intensity: + - max: 889.345458984375 + mean: 415.80364990234375 + median: 403.49932861328125 + min: 16.4693603515625 + percentile: [172.92828369140625, 279.9791259765625, 568.1929321289062, 749.3558959960938] + percentile_00_5: 172.92828369140625 + percentile_10_0: 279.9791259765625 + percentile_90_0: 568.1929321289062 + percentile_99_5: 749.3558959960938 + stdev: 113.1595458984375 + ncomponents: 1 + pixel_percentage: 0.033169738948345184 + shape: + - [24, 17, 14] + - image_intensity: + - max: 988.16162109375 + mean: 413.0951843261719 + median: 387.02996826171875 + min: 49.4080810546875 + percentile: [141.06007385253906, 263.509765625, 601.1316528320312, 872.8760986328125] + percentile_00_5: 141.06007385253906 + percentile_10_0: 263.509765625 + percentile_90_0: 601.1316528320312 + percentile_99_5: 872.8760986328125 + stdev: 138.23146057128906 + ncomponents: 1 + pixel_percentage: 0.030498798936605453 + shape: + - [24, 25, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_123.nii.gz + image_foreground_stats: + intensity: + - max: 108.0 + mean: 55.92598342895508 + median: 54.0 + min: 22.0 + percentile: [30.0, 41.0, 76.0, 98.0] + percentile_00_5: 30.0 + percentile_10_0: 41.0 + percentile_90_0: 76.0 + percentile_99_5: 98.0 + stdev: 13.69267749786377 + image_stats: + channels: 1 + cropped_shape: + - [32, 53, 38] + intensity: + - max: 234.0 + mean: 71.28019714355469 + median: 70.0 + min: 4.0 + percentile: [11.0, 32.0, 111.0, 130.0] + percentile_00_5: 11.0 + percentile_10_0: 32.0 + percentile_90_0: 111.0 + percentile_99_5: 130.0 + stdev: 30.06114959716797 + shape: + - [32, 53, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_123.nii.gz + label_stats: + image_intensity: + - max: 108.0 + mean: 55.92598342895508 + median: 54.0 + min: 22.0 + percentile: [30.0, 41.0, 76.0, 98.0] + percentile_00_5: 30.0 + percentile_10_0: 41.0 + percentile_90_0: 76.0 + percentile_99_5: 98.0 + stdev: 13.69267749786377 + label: + - image_intensity: + - max: 234.0 + mean: 72.09004974365234 + median: 72.0 + min: 4.0 + percentile: [11.0, 31.0, 112.0, 130.0] + percentile_00_5: 11.0 + percentile_10_0: 31.0 + percentile_90_0: 112.0 + percentile_99_5: 130.0 + stdev: 30.468955993652344 + ncomponents: 1 + pixel_percentage: 0.9498975872993469 + shape: + - [32, 53, 38] + - image_intensity: + - max: 98.0 + mean: 54.029205322265625 + median: 53.0 + min: 25.0 + percentile: [30.0, 40.0, 70.0, 92.0] + percentile_00_5: 30.0 + percentile_10_0: 40.0 + percentile_90_0: 70.0 + percentile_99_5: 92.0 + stdev: 11.895095825195312 + ncomponents: 1 + pixel_percentage: 0.02656405232846737 + shape: + - [19, 18, 14] + - image_intensity: + - max: 108.0 + mean: 58.06657791137695 + median: 55.0 + min: 22.0 + percentile: [32.58000183105469, 42.0, 81.0, 102.0] + percentile_00_5: 32.58000183105469 + percentile_10_0: 42.0 + percentile_90_0: 81.0 + percentile_99_5: 102.0 + stdev: 15.190643310546875 + ncomponents: 1 + pixel_percentage: 0.02353835664689541 + shape: + - [16, 24, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_176.nii.gz + image_foreground_stats: + intensity: + - max: 666.8442993164062 + mean: 314.9391784667969 + median: 303.1110534667969 + min: 11.02221965789795 + percentile: [82.6666488647461, 214.93328857421875, 435.377685546875, 606.2221069335938] + percentile_00_5: 82.6666488647461 + percentile_10_0: 214.93328857421875 + percentile_90_0: 435.377685546875 + percentile_99_5: 606.2221069335938 + stdev: 89.95835876464844 + image_stats: + channels: 1 + cropped_shape: + - [35, 50, 36] + intensity: + - max: 1322.6663818359375 + mean: 386.8445129394531 + median: 391.2887878417969 + min: 0.0 + percentile: [16.533329010009766, 93.6888656616211, 639.2887573242188, 732.9776000976562] + percentile_00_5: 16.533329010009766 + percentile_10_0: 93.6888656616211 + percentile_90_0: 639.2887573242188 + percentile_99_5: 732.9776000976562 + stdev: 198.47616577148438 + shape: + - [35, 50, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_176.nii.gz + label_stats: + image_intensity: + - max: 666.8442993164062 + mean: 314.9391784667969 + median: 303.1110534667969 + min: 11.02221965789795 + percentile: [82.6666488647461, 214.93328857421875, 435.377685546875, 606.2221069335938] + percentile_00_5: 82.6666488647461 + percentile_10_0: 214.93328857421875 + percentile_90_0: 435.377685546875 + percentile_99_5: 606.2221069335938 + stdev: 89.95835876464844 + label: + - image_intensity: + - max: 1322.6663818359375 + mean: 390.3392028808594 + median: 402.3110046386719 + min: 0.0 + percentile: [16.533329010009766, 93.6888656616211, 639.2887573242188, 738.4887084960938] + percentile_00_5: 16.533329010009766 + percentile_10_0: 93.6888656616211 + percentile_90_0: 639.2887573242188 + percentile_99_5: 738.4887084960938 + stdev: 201.61978149414062 + ncomponents: 1 + pixel_percentage: 0.9536507725715637 + shape: + - [35, 50, 36] + - image_intensity: + - max: 650.3109741210938 + mean: 320.0105285644531 + median: 314.1332702636719 + min: 11.02221965789795 + percentile: [82.6666488647461, 225.95550537109375, 429.8665771484375, 578.66650390625] + percentile_00_5: 82.6666488647461 + percentile_10_0: 225.95550537109375 + percentile_90_0: 429.8665771484375 + percentile_99_5: 578.66650390625 + stdev: 84.17182159423828 + ncomponents: 1 + pixel_percentage: 0.028428571298718452 + shape: + - [22, 18, 14] + - image_intensity: + - max: 666.8442993164062 + mean: 306.8941345214844 + median: 292.08880615234375 + min: 49.5999870300293 + percentile: [86.19375610351562, 202.80885314941406, 440.8887939453125, 641.272705078125] + percentile_00_5: 86.19375610351562 + percentile_10_0: 202.80885314941406 + percentile_90_0: 440.8887939453125 + percentile_99_5: 641.272705078125 + stdev: 97.9051513671875 + ncomponents: 1 + pixel_percentage: 0.017920635640621185 + shape: + - [15, 21, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_015.nii.gz + image_foreground_stats: + intensity: + - max: 771.322265625 + mean: 336.4197998046875 + median: 325.8171691894531 + min: 46.545310974121094 + percentile: [140.23435974121094, 246.02520751953125, 438.85577392578125, 631.6863403320312] + percentile_00_5: 140.23435974121094 + percentile_10_0: 246.02520751953125 + percentile_90_0: 438.85577392578125 + percentile_99_5: 631.6863403320312 + stdev: 83.5125961303711 + image_stats: + channels: 1 + cropped_shape: + - [42, 51, 28] + intensity: + - max: 1682.280517578125 + mean: 439.5932312011719 + median: 445.505126953125 + min: 0.0 + percentile: [19.94799041748047, 126.33727264404297, 711.4783325195312, 837.8156127929688] + percentile_00_5: 19.94799041748047 + percentile_10_0: 126.33727264404297 + percentile_90_0: 711.4783325195312 + percentile_99_5: 837.8156127929688 + stdev: 215.39454650878906 + shape: + - [42, 51, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_015.nii.gz + label_stats: + image_intensity: + - max: 771.322265625 + mean: 336.4197998046875 + median: 325.8171691894531 + min: 46.545310974121094 + percentile: [140.23435974121094, 246.02520751953125, 438.85577392578125, 631.6863403320312] + percentile_00_5: 140.23435974121094 + percentile_10_0: 246.02520751953125 + percentile_90_0: 438.85577392578125 + percentile_99_5: 631.6863403320312 + stdev: 83.5125961303711 + label: + - image_intensity: + - max: 1682.280517578125 + mean: 444.6817932128906 + median: 465.453125 + min: 0.0 + percentile: [19.94799041748047, 119.68794250488281, 718.127685546875, 837.8156127929688] + percentile_00_5: 19.94799041748047 + percentile_10_0: 119.68794250488281 + percentile_90_0: 718.127685546875 + percentile_99_5: 837.8156127929688 + stdev: 218.60498046875 + ncomponents: 1 + pixel_percentage: 0.9529978632926941 + shape: + - [42, 51, 28] + - image_intensity: + - max: 691.5303344726562 + mean: 332.7789611816406 + median: 325.8171691894531 + min: 106.3892822265625 + percentile: [149.94239807128906, 239.37588500976562, 432.2064514160156, 558.543701171875] + percentile_00_5: 149.94239807128906 + percentile_10_0: 239.37588500976562 + percentile_90_0: 432.2064514160156 + percentile_99_5: 558.543701171875 + stdev: 77.00646209716797 + ncomponents: 1 + pixel_percentage: 0.025193409994244576 + shape: + - [17, 17, 13] + - image_intensity: + - max: 771.322265625 + mean: 340.62567138671875 + median: 325.8171691894531 + min: 46.545310974121094 + percentile: [126.33727264404297, 246.02520751953125, 458.80377197265625, 681.3233642578125] + percentile_00_5: 126.33727264404297 + percentile_10_0: 246.02520751953125 + percentile_90_0: 458.80377197265625 + percentile_99_5: 681.3233642578125 + stdev: 90.26513671875 + ncomponents: 1 + pixel_percentage: 0.021808722987771034 + shape: + - [26, 20, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_068.nii.gz + image_foreground_stats: + intensity: + - max: 928.3577270507812 + mean: 409.1097412109375 + median: 390.1793518066406 + min: 47.09061050415039 + percentile: [141.27183532714844, 275.8164367675781, 565.0873413085938, 813.9948120117188] + percentile_00_5: 141.27183532714844 + percentile_10_0: 275.8164367675781 + percentile_90_0: 565.0873413085938 + percentile_99_5: 813.9948120117188 + stdev: 118.60790252685547 + image_stats: + channels: 1 + cropped_shape: + - [36, 40, 43] + intensity: + - max: 2253.6220703125 + mean: 551.4539184570312 + median: 578.5418090820312 + min: 0.0 + percentile: [26.908920288085938, 154.72628784179688, 881.2671508789062, 1015.811767578125] + percentile_00_5: 26.908920288085938 + percentile_10_0: 154.72628784179688 + percentile_90_0: 881.2671508789062 + percentile_99_5: 1015.811767578125 + stdev: 267.2597961425781 + shape: + - [36, 40, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_068.nii.gz + label_stats: + image_intensity: + - max: 928.3577270507812 + mean: 409.1097412109375 + median: 390.1793518066406 + min: 47.09061050415039 + percentile: [141.27183532714844, 275.8164367675781, 565.0873413085938, 813.9948120117188] + percentile_00_5: 141.27183532714844 + percentile_10_0: 275.8164367675781 + percentile_90_0: 565.0873413085938 + percentile_99_5: 813.9948120117188 + stdev: 118.60790252685547 + label: + - image_intensity: + - max: 2253.6220703125 + mean: 558.7015991210938 + median: 598.7234497070312 + min: 0.0 + percentile: [26.908920288085938, 147.99905395507812, 881.2671508789062, 1015.811767578125] + percentile_00_5: 26.908920288085938 + percentile_10_0: 147.99905395507812 + percentile_90_0: 881.2671508789062 + percentile_99_5: 1015.811767578125 + stdev: 270.6735534667969 + ncomponents: 1 + pixel_percentage: 0.9515503644943237 + shape: + - [36, 40, 43] + - image_intensity: + - max: 854.3582153320312 + mean: 416.7738342285156 + median: 403.6337890625 + min: 53.817840576171875 + percentile: [172.48617553710938, 295.99810791015625, 551.6328735351562, 753.4497680664062] + percentile_00_5: 172.48617553710938 + percentile_10_0: 295.99810791015625 + percentile_90_0: 551.6328735351562 + percentile_99_5: 753.4497680664062 + stdev: 104.87812042236328 + ncomponents: 1 + pixel_percentage: 0.027987726032733917 + shape: + - [21, 13, 18] + - image_intensity: + - max: 928.3577270507812 + mean: 398.6268615722656 + median: 369.9976501464844 + min: 47.09061050415039 + percentile: [130.037353515625, 269.0892028808594, 581.2328491210938, 849.9188232421875] + percentile_00_5: 130.037353515625 + percentile_10_0: 269.0892028808594 + percentile_90_0: 581.2328491210938 + percentile_99_5: 849.9188232421875 + stdev: 134.44171142578125 + ncomponents: 1 + pixel_percentage: 0.02046188712120056 + shape: + - [18, 16, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_019.nii.gz + image_foreground_stats: + intensity: + - max: 1228.8173828125 + mean: 571.5551147460938 + median: 556.1071166992188 + min: 89.6947021484375 + percentile: [222.21861267089844, 412.5956115722656, 753.4354858398438, 1078.35546875] + percentile_00_5: 222.21861267089844 + percentile_10_0: 412.5956115722656 + percentile_90_0: 753.4354858398438 + percentile_99_5: 1078.35546875 + stdev: 142.1681671142578 + image_stats: + channels: 1 + cropped_shape: + - [36, 47, 41] + intensity: + - max: 3264.88720703125 + mean: 747.8118286132812 + median: 771.3744506835938 + min: 0.0 + percentile: [35.87788009643555, 269.0841064453125, 1166.0311279296875, 1327.4815673828125] + percentile_00_5: 35.87788009643555 + percentile_10_0: 269.0841064453125 + percentile_90_0: 1166.0311279296875 + percentile_99_5: 1327.4815673828125 + stdev: 333.8447570800781 + shape: + - [36, 47, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_019.nii.gz + label_stats: + image_intensity: + - max: 1228.8173828125 + mean: 571.5551147460938 + median: 556.1071166992188 + min: 89.6947021484375 + percentile: [222.21861267089844, 412.5956115722656, 753.4354858398438, 1078.35546875] + percentile_00_5: 222.21861267089844 + percentile_10_0: 412.5956115722656 + percentile_90_0: 753.4354858398438 + percentile_99_5: 1078.35546875 + stdev: 142.1681671142578 + label: + - image_intensity: + - max: 3264.88720703125 + mean: 756.77197265625 + median: 798.2828369140625 + min: 0.0 + percentile: [35.87788009643555, 260.1146240234375, 1175.0006103515625, 1327.4815673828125] + percentile_00_5: 35.87788009643555 + percentile_10_0: 260.1146240234375 + percentile_90_0: 1175.0006103515625 + percentile_99_5: 1327.4815673828125 + stdev: 338.276611328125 + ncomponents: 1 + pixel_percentage: 0.9516231417655945 + shape: + - [36, 47, 41] + - image_intensity: + - max: 1130.1531982421875 + mean: 557.7794189453125 + median: 547.1376953125 + min: 116.60311126708984 + percentile: [224.23675537109375, 394.65667724609375, 744.4660034179688, 973.7710571289062] + percentile_00_5: 224.23675537109375 + percentile_10_0: 394.65667724609375 + percentile_90_0: 744.4660034179688 + percentile_99_5: 973.7710571289062 + stdev: 135.6869354248047 + ncomponents: 1 + pixel_percentage: 0.027215590700507164 + shape: + - [23, 15, 15] + - image_intensity: + - max: 1228.8173828125 + mean: 589.2721557617188 + median: 574.0460815429688 + min: 89.6947021484375 + percentile: [215.3121337890625, 430.5345458984375, 765.0951538085938, 1127.1488037109375] + percentile_00_5: 215.3121337890625 + percentile_10_0: 430.5345458984375 + percentile_90_0: 765.0951538085938 + percentile_99_5: 1127.1488037109375 + stdev: 148.22247314453125 + ncomponents: 1 + pixel_percentage: 0.02116127498447895 + shape: + - [19, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_164.nii.gz + image_foreground_stats: + intensity: + - max: 89.0 + mean: 46.3367805480957 + median: 45.0 + min: 5.0 + percentile: [21.0, 34.0, 60.0, 77.0] + percentile_00_5: 21.0 + percentile_10_0: 34.0 + percentile_90_0: 60.0 + percentile_99_5: 77.0 + stdev: 10.357429504394531 + image_stats: + channels: 1 + cropped_shape: + - [41, 48, 47] + intensity: + - max: 187.0 + mean: 62.757232666015625 + median: 66.0 + min: 2.0 + percentile: [6.0, 23.0, 96.0, 105.0] + percentile_00_5: 6.0 + percentile_10_0: 23.0 + percentile_90_0: 96.0 + percentile_99_5: 105.0 + stdev: 27.59726905822754 + shape: + - [41, 48, 47] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_164.nii.gz + label_stats: + image_intensity: + - max: 89.0 + mean: 46.3367805480957 + median: 45.0 + min: 5.0 + percentile: [21.0, 34.0, 60.0, 77.0] + percentile_00_5: 21.0 + percentile_10_0: 34.0 + percentile_90_0: 60.0 + percentile_99_5: 77.0 + stdev: 10.357429504394531 + label: + - image_intensity: + - max: 187.0 + mean: 63.474063873291016 + median: 68.0 + min: 2.0 + percentile: [6.0, 22.0, 96.0, 105.0] + percentile_00_5: 6.0 + percentile_10_0: 22.0 + percentile_90_0: 96.0 + percentile_99_5: 105.0 + stdev: 27.890670776367188 + ncomponents: 1 + pixel_percentage: 0.9581711888313293 + shape: + - [41, 48, 47] + - image_intensity: + - max: 83.0 + mean: 47.371761322021484 + median: 46.0 + min: 5.0 + percentile: [17.494998931884766, 36.0, 61.0, 75.5050048828125] + percentile_00_5: 17.494998931884766 + percentile_10_0: 36.0 + percentile_90_0: 61.0 + percentile_99_5: 75.5050048828125 + stdev: 10.19108772277832 + ncomponents: 1 + pixel_percentage: 0.018379172310233116 + shape: + - [23, 11, 18] + - image_intensity: + - max: 89.0 + mean: 45.52558898925781 + median: 44.0 + min: 19.0 + percentile: [26.0, 34.0, 59.0, 78.159912109375] + percentile_00_5: 26.0 + percentile_10_0: 34.0 + percentile_90_0: 59.0 + percentile_99_5: 78.159912109375 + stdev: 10.414304733276367 + ncomponents: 1 + pixel_percentage: 0.023449663072824478 + shape: + - [21, 25, 31] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_064.nii.gz + image_foreground_stats: + intensity: + - max: 764.8714599609375 + mean: 340.3051452636719 + median: 320.517578125 + min: 36.42245101928711 + percentile: [125.98526000976562, 233.1036834716797, 473.4918518066406, 682.5936889648438] + percentile_00_5: 125.98526000976562 + percentile_10_0: 233.1036834716797 + percentile_90_0: 473.4918518066406 + percentile_99_5: 682.5936889648438 + stdev: 100.44424438476562 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 35] + intensity: + - max: 1216.5098876953125 + mean: 445.3707580566406 + median: 451.6383972167969 + min: 0.0 + percentile: [21.853469848632812, 145.68980407714844, 713.8800048828125, 801.2938842773438] + percentile_00_5: 21.853469848632812 + percentile_10_0: 145.68980407714844 + percentile_90_0: 713.8800048828125 + percentile_99_5: 801.2938842773438 + stdev: 211.80593872070312 + shape: + - [35, 53, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_064.nii.gz + label_stats: + image_intensity: + - max: 764.8714599609375 + mean: 340.3051452636719 + median: 320.517578125 + min: 36.42245101928711 + percentile: [125.98526000976562, 233.1036834716797, 473.4918518066406, 682.5936889648438] + percentile_00_5: 125.98526000976562 + percentile_10_0: 233.1036834716797 + percentile_90_0: 473.4918518066406 + percentile_99_5: 682.5936889648438 + stdev: 100.44424438476562 + label: + - image_intensity: + - max: 1216.5098876953125 + mean: 451.6474609375 + median: 473.4918518066406 + min: 0.0 + percentile: [21.853469848632812, 138.4053192138672, 721.16455078125, 801.2938842773438] + percentile_00_5: 21.853469848632812 + percentile_10_0: 138.4053192138672 + percentile_90_0: 721.16455078125 + percentile_99_5: 801.2938842773438 + stdev: 215.03543090820312 + ncomponents: 1 + pixel_percentage: 0.9436272382736206 + shape: + - [35, 53, 35] + - image_intensity: + - max: 764.8714599609375 + mean: 334.32745361328125 + median: 320.517578125 + min: 36.42245101928711 + percentile: [96.26454162597656, 240.38816833496094, 458.9228820800781, 648.3196411132812] + percentile_00_5: 96.26454162597656 + percentile_10_0: 240.38816833496094 + percentile_90_0: 458.9228820800781 + percentile_99_5: 648.3196411132812 + stdev: 92.85419464111328 + ncomponents: 1 + pixel_percentage: 0.031482480466365814 + shape: + - [22, 18, 15] + - image_intensity: + - max: 757.5869750976562 + mean: 347.8659362792969 + median: 320.517578125 + min: 116.55184173583984 + percentile: [160.2587890625, 233.1036834716797, 495.3453369140625, 713.3340454101562] + percentile_00_5: 160.2587890625 + percentile_10_0: 233.1036834716797 + percentile_90_0: 495.3453369140625 + percentile_99_5: 713.3340454101562 + stdev: 108.82281494140625 + ncomponents: 1 + pixel_percentage: 0.02489025890827179 + shape: + - [19, 22, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_107.nii.gz + image_foreground_stats: + intensity: + - max: 969.8787231445312 + mean: 402.8367614746094 + median: 390.9588623046875 + min: 105.2581558227539 + percentile: [195.47943115234375, 285.7007141113281, 537.5684204101562, 799.0214233398438] + percentile_00_5: 195.47943115234375 + percentile_10_0: 285.7007141113281 + percentile_90_0: 537.5684204101562 + percentile_99_5: 799.0214233398438 + stdev: 103.18428039550781 + image_stats: + channels: 1 + cropped_shape: + - [35, 55, 34] + intensity: + - max: 2533.714111328125 + mean: 529.7173461914062 + median: 503.7354736328125 + min: 0.0 + percentile: [37.59219741821289, 218.03475952148438, 872.1390380859375, 1022.5078125] + percentile_00_5: 37.59219741821289 + percentile_10_0: 218.03475952148438 + percentile_90_0: 872.1390380859375 + percentile_99_5: 1022.5078125 + stdev: 245.522216796875 + shape: + - [35, 55, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_107.nii.gz + label_stats: + image_intensity: + - max: 969.8787231445312 + mean: 402.8367614746094 + median: 390.9588623046875 + min: 105.2581558227539 + percentile: [195.47943115234375, 285.7007141113281, 537.5684204101562, 799.0214233398438] + percentile_00_5: 195.47943115234375 + percentile_10_0: 285.7007141113281 + percentile_90_0: 537.5684204101562 + percentile_99_5: 799.0214233398438 + stdev: 103.18428039550781 + label: + - image_intensity: + - max: 2533.714111328125 + mean: 537.85791015625 + median: 518.7723388671875 + min: 0.0 + percentile: [37.59219741821289, 210.5163116455078, 872.1390380859375, 1022.5078125] + percentile_00_5: 37.59219741821289 + percentile_10_0: 210.5163116455078 + percentile_90_0: 872.1390380859375 + percentile_99_5: 1022.5078125 + stdev: 249.73280334472656 + ncomponents: 1 + pixel_percentage: 0.9397097229957581 + shape: + - [35, 55, 34] + - image_intensity: + - max: 706.7333374023438 + mean: 401.215576171875 + median: 390.9588623046875 + min: 172.9241180419922 + percentile: [202.9978790283203, 293.2191467285156, 526.290771484375, 646.5858154296875] + percentile_00_5: 202.9978790283203 + percentile_10_0: 293.2191467285156 + percentile_90_0: 526.290771484375 + percentile_99_5: 646.5858154296875 + stdev: 90.23644256591797 + ncomponents: 1 + pixel_percentage: 0.02919786050915718 + shape: + - [22, 17, 14] + - image_intensity: + - max: 969.8787231445312 + mean: 404.3590393066406 + median: 383.4404296875 + min: 105.2581558227539 + percentile: [174.20225524902344, 285.7007141113281, 548.8461303710938, 857.1021118164062] + percentile_00_5: 174.20225524902344 + percentile_10_0: 285.7007141113281 + percentile_90_0: 548.8461303710938 + percentile_99_5: 857.1021118164062 + stdev: 113.99118041992188 + ncomponents: 1 + pixel_percentage: 0.031092436984181404 + shape: + - [19, 27, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_007.nii.gz + image_foreground_stats: + intensity: + - max: 949.5974731445312 + mean: 410.4916076660156 + median: 392.50030517578125 + min: 25.322599411010742 + percentile: [208.91143798828125, 303.8711853027344, 525.4439086914062, 812.1593017578125] + percentile_00_5: 208.91143798828125 + percentile_10_0: 303.8711853027344 + percentile_90_0: 525.4439086914062 + percentile_99_5: 812.1593017578125 + stdev: 99.98128509521484 + image_stats: + channels: 1 + cropped_shape: + - [34, 47, 40] + intensity: + - max: 2728.510009765625 + mean: 564.9981689453125 + median: 563.4278564453125 + min: 0.0 + percentile: [31.653249740600586, 234.23403930664062, 898.9522705078125, 1050.8878173828125] + percentile_00_5: 31.653249740600586 + percentile_10_0: 234.23403930664062 + percentile_90_0: 898.9522705078125 + percentile_99_5: 1050.8878173828125 + stdev: 256.2774353027344 + shape: + - [34, 47, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_007.nii.gz + label_stats: + image_intensity: + - max: 949.5974731445312 + mean: 410.4916076660156 + median: 392.50030517578125 + min: 25.322599411010742 + percentile: [208.91143798828125, 303.8711853027344, 525.4439086914062, 812.1593017578125] + percentile_00_5: 208.91143798828125 + percentile_10_0: 303.8711853027344 + percentile_90_0: 525.4439086914062 + percentile_99_5: 812.1593017578125 + stdev: 99.98128509521484 + label: + - image_intensity: + - max: 2728.510009765625 + mean: 573.6029052734375 + median: 582.4197998046875 + min: 0.0 + percentile: [31.653249740600586, 221.57273864746094, 905.282958984375, 1057.218505859375] + percentile_00_5: 31.653249740600586 + percentile_10_0: 221.57273864746094 + percentile_90_0: 905.282958984375 + percentile_99_5: 1057.218505859375 + stdev: 259.568115234375 + ncomponents: 1 + pixel_percentage: 0.9472465515136719 + shape: + - [34, 47, 40] + - image_intensity: + - max: 829.3151245117188 + mean: 403.7112731933594 + median: 386.1696472167969 + min: 25.322599411010742 + percentile: [202.58079528808594, 303.8711853027344, 519.11328125, 714.06591796875] + percentile_00_5: 202.58079528808594 + percentile_10_0: 303.8711853027344 + percentile_90_0: 519.11328125 + percentile_99_5: 714.06591796875 + stdev: 90.17729187011719 + ncomponents: 1 + pixel_percentage: 0.028817271813750267 + shape: + - [22, 16, 19] + - image_intensity: + - max: 949.5974731445312 + mean: 418.65460205078125 + median: 405.1615905761719 + min: 177.25819396972656 + percentile: [219.3253631591797, 303.8711853027344, 544.4359130859375, 854.6377563476562] + percentile_00_5: 219.3253631591797 + percentile_10_0: 303.8711853027344 + percentile_90_0: 544.4359130859375 + percentile_99_5: 854.6377563476562 + stdev: 110.08525085449219 + ncomponents: 1 + pixel_percentage: 0.02393617108464241 + shape: + - [21, 21, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_296.nii.gz + image_foreground_stats: + intensity: + - max: 807.00537109375 + mean: 349.041748046875 + median: 328.51544189453125 + min: 35.70820236206055 + percentile: [114.26624298095703, 228.53248596191406, 492.7731628417969, 707.0223999023438] + percentile_00_5: 114.26624298095703 + percentile_10_0: 228.53248596191406 + percentile_90_0: 492.7731628417969 + percentile_99_5: 707.0223999023438 + stdev: 108.85616302490234 + image_stats: + channels: 1 + cropped_shape: + - [35, 54, 35] + intensity: + - max: 1771.126708984375 + mean: 451.5725402832031 + median: 457.0649719238281 + min: 0.0 + percentile: [21.4249210357666, 171.3993682861328, 714.1640014648438, 807.00537109375] + percentile_00_5: 21.4249210357666 + percentile_10_0: 171.3993682861328 + percentile_90_0: 714.1640014648438 + percentile_99_5: 807.00537109375 + stdev: 204.8345489501953 + shape: + - [35, 54, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_296.nii.gz + label_stats: + image_intensity: + - max: 807.00537109375 + mean: 349.041748046875 + median: 328.51544189453125 + min: 35.70820236206055 + percentile: [114.26624298095703, 228.53248596191406, 492.7731628417969, 707.0223999023438] + percentile_00_5: 114.26624298095703 + percentile_10_0: 228.53248596191406 + percentile_90_0: 492.7731628417969 + percentile_99_5: 707.0223999023438 + stdev: 108.85616302490234 + label: + - image_intensity: + - max: 1771.126708984375 + mean: 458.0277099609375 + median: 471.3482666015625 + min: 0.0 + percentile: [21.4249210357666, 164.25772094726562, 714.1640014648438, 807.00537109375] + percentile_00_5: 21.4249210357666 + percentile_10_0: 164.25772094726562 + percentile_90_0: 714.1640014648438 + percentile_99_5: 807.00537109375 + stdev: 207.7238006591797 + ncomponents: 1 + pixel_percentage: 0.9407709836959839 + shape: + - [35, 54, 35] + - image_intensity: + - max: 807.00537109375 + mean: 357.265869140625 + median: 335.6570739746094 + min: 78.55804443359375 + percentile: [135.691162109375, 242.81576538085938, 514.1981201171875, 717.8411865234375] + percentile_00_5: 135.691162109375 + percentile_10_0: 242.81576538085938 + percentile_90_0: 514.1981201171875 + percentile_99_5: 717.8411865234375 + stdev: 110.63986206054688 + ncomponents: 1 + pixel_percentage: 0.03171579912304878 + shape: + - [21, 18, 15] + - image_intensity: + - max: 771.297119140625 + mean: 339.56146240234375 + median: 321.3738098144531 + min: 35.70820236206055 + percentile: [100.66142272949219, 228.53248596191406, 478.4898986816406, 671.3141479492188] + percentile_00_5: 100.66142272949219 + percentile_10_0: 228.53248596191406 + percentile_90_0: 478.4898986816406 + percentile_99_5: 671.3141479492188 + stdev: 105.97406005859375 + ncomponents: 1 + pixel_percentage: 0.027513228356838226 + shape: + - [21, 27, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_288.nii.gz + image_foreground_stats: + intensity: + - max: 892.0337524414062 + mean: 397.5159606933594 + median: 382.3001708984375 + min: 25.486679077148438 + percentile: [154.32183837890625, 267.6101379394531, 547.963623046875, 732.7420043945312] + percentile_00_5: 154.32183837890625 + percentile_10_0: 267.6101379394531 + percentile_90_0: 547.963623046875 + percentile_99_5: 732.7420043945312 + stdev: 111.45790100097656 + image_stats: + channels: 1 + cropped_shape: + - [38, 50, 42] + intensity: + - max: 3549.02001953125 + mean: 539.287841796875 + median: 560.7069091796875 + min: 0.0 + percentile: [31.858348846435547, 203.8934326171875, 841.0604248046875, 962.1221313476562] + percentile_00_5: 31.858348846435547 + percentile_10_0: 203.8934326171875 + percentile_90_0: 841.0604248046875 + percentile_99_5: 962.1221313476562 + stdev: 244.7753143310547 + shape: + - [38, 50, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_288.nii.gz + label_stats: + image_intensity: + - max: 892.0337524414062 + mean: 397.5159606933594 + median: 382.3001708984375 + min: 25.486679077148438 + percentile: [154.32183837890625, 267.6101379394531, 547.963623046875, 732.7420043945312] + percentile_00_5: 154.32183837890625 + percentile_10_0: 267.6101379394531 + percentile_90_0: 547.963623046875 + percentile_99_5: 732.7420043945312 + stdev: 111.45790100097656 + label: + - image_intensity: + - max: 3549.02001953125 + mean: 546.464599609375 + median: 579.8219604492188 + min: 0.0 + percentile: [31.858348846435547, 197.52175903320312, 841.0604248046875, 962.1221313476562] + percentile_00_5: 31.858348846435547 + percentile_10_0: 197.52175903320312 + percentile_90_0: 841.0604248046875 + percentile_99_5: 962.1221313476562 + stdev: 247.4876708984375 + ncomponents: 1 + pixel_percentage: 0.9518170356750488 + shape: + - [38, 50, 42] + - image_intensity: + - max: 764.600341796875 + mean: 399.9238586425781 + median: 388.6718444824219 + min: 127.43339538574219 + percentile: [167.22447204589844, 273.9818115234375, 541.5919189453125, 699.3226318359375] + percentile_00_5: 167.22447204589844 + percentile_10_0: 273.9818115234375 + percentile_90_0: 541.5919189453125 + percentile_99_5: 699.3226318359375 + stdev: 104.55581665039062 + ncomponents: 1 + pixel_percentage: 0.023182956501841545 + shape: + - [24, 14, 15] + - image_intensity: + - max: 892.0337524414062 + mean: 395.2830810546875 + median: 382.3001708984375 + min: 25.486679077148438 + percentile: [152.92007446289062, 261.23846435546875, 554.3352661132812, 745.4853515625] + percentile_00_5: 152.92007446289062 + percentile_10_0: 261.23846435546875 + percentile_90_0: 554.3352661132812 + percentile_99_5: 745.4853515625 + stdev: 117.45246124267578 + ncomponents: 1 + pixel_percentage: 0.02500000037252903 + shape: + - [19, 25, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_042.nii.gz + image_foreground_stats: + intensity: + - max: 851.3782348632812 + mean: 356.6930847167969 + median: 327.9899597167969 + min: 13.957019805908203 + percentile: [86.95222473144531, 223.31231689453125, 544.3237915039062, 746.7005615234375] + percentile_00_5: 86.95222473144531 + percentile_10_0: 223.31231689453125 + percentile_90_0: 544.3237915039062 + percentile_99_5: 746.7005615234375 + stdev: 127.29399871826172 + image_stats: + channels: 1 + cropped_shape: + - [37, 52, 34] + intensity: + - max: 1479.444091796875 + mean: 462.8306884765625 + median: 467.5601501464844 + min: 0.0 + percentile: [20.935529708862305, 153.5272216796875, 746.7005615234375, 837.4212036132812] + percentile_00_5: 20.935529708862305 + percentile_10_0: 153.5272216796875 + percentile_90_0: 746.7005615234375 + percentile_99_5: 837.4212036132812 + stdev: 223.15386962890625 + shape: + - [37, 52, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_042.nii.gz + label_stats: + image_intensity: + - max: 851.3782348632812 + mean: 356.6930847167969 + median: 327.9899597167969 + min: 13.957019805908203 + percentile: [86.95222473144531, 223.31231689453125, 544.3237915039062, 746.7005615234375] + percentile_00_5: 86.95222473144531 + percentile_10_0: 223.31231689453125 + percentile_90_0: 544.3237915039062 + percentile_99_5: 746.7005615234375 + stdev: 127.29399871826172 + label: + - image_intensity: + - max: 1479.444091796875 + mean: 469.4624328613281 + median: 488.4956970214844 + min: 0.0 + percentile: [20.935529708862305, 146.5487060546875, 746.7005615234375, 837.4212036132812] + percentile_00_5: 20.935529708862305 + percentile_10_0: 146.5487060546875 + percentile_90_0: 746.7005615234375 + percentile_99_5: 837.4212036132812 + stdev: 226.1610565185547 + ncomponents: 1 + pixel_percentage: 0.9411917328834534 + shape: + - [37, 52, 34] + - image_intensity: + - max: 851.3782348632812 + mean: 354.81488037109375 + median: 334.9684753417969 + min: 27.914039611816406 + percentile: [114.0986328125, 237.2693328857422, 516.4097290039062, 746.7005615234375] + percentile_00_5: 114.0986328125 + percentile_10_0: 237.2693328857422 + percentile_90_0: 516.4097290039062 + percentile_99_5: 746.7005615234375 + stdev: 113.72482299804688 + ncomponents: 1 + pixel_percentage: 0.028601564466953278 + shape: + - [24, 17, 14] + - image_intensity: + - max: 802.5286254882812 + mean: 358.47149658203125 + median: 321.0114440917969 + min: 13.957019805908203 + percentile: [68.91278076171875, 216.33380126953125, 579.21630859375, 746.7005615234375] + percentile_00_5: 68.91278076171875 + percentile_10_0: 216.33380126953125 + percentile_90_0: 579.21630859375 + percentile_99_5: 746.7005615234375 + stdev: 138.90249633789062 + ncomponents: 1 + pixel_percentage: 0.030206676572561264 + shape: + - [20, 24, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_142.nii.gz + image_foreground_stats: + intensity: + - max: 75.0 + mean: 38.61253356933594 + median: 37.0 + min: 20.0 + percentile: [23.0, 29.0, 50.0, 67.0] + percentile_00_5: 23.0 + percentile_10_0: 29.0 + percentile_90_0: 50.0 + percentile_99_5: 67.0 + stdev: 8.484759330749512 + image_stats: + channels: 1 + cropped_shape: + - [38, 43, 41] + intensity: + - max: 127.0 + mean: 54.025150299072266 + median: 56.0 + min: 1.0 + percentile: [5.0, 24.0, 81.0, 91.0] + percentile_00_5: 5.0 + percentile_10_0: 24.0 + percentile_90_0: 81.0 + percentile_99_5: 91.0 + stdev: 22.143171310424805 + shape: + - [38, 43, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_142.nii.gz + label_stats: + image_intensity: + - max: 75.0 + mean: 38.61253356933594 + median: 37.0 + min: 20.0 + percentile: [23.0, 29.0, 50.0, 67.0] + percentile_00_5: 23.0 + percentile_10_0: 29.0 + percentile_90_0: 50.0 + percentile_99_5: 67.0 + stdev: 8.484759330749512 + label: + - image_intensity: + - max: 127.0 + mean: 54.67164993286133 + median: 58.0 + min: 1.0 + percentile: [5.0, 23.0, 81.0, 91.0] + percentile_00_5: 5.0 + percentile_10_0: 23.0 + percentile_90_0: 81.0 + percentile_99_5: 91.0 + stdev: 22.304372787475586 + ncomponents: 1 + pixel_percentage: 0.9597426652908325 + shape: + - [38, 43, 41] + - image_intensity: + - max: 67.0 + mean: 39.854007720947266 + median: 39.0 + min: 22.0 + percentile: [24.604999542236328, 32.0, 49.0, 64.39501953125] + percentile_00_5: 24.604999542236328 + percentile_10_0: 32.0 + percentile_90_0: 49.0 + percentile_99_5: 64.39501953125 + stdev: 7.334498882293701 + ncomponents: 1 + pixel_percentage: 0.019733110442757607 + shape: + - [20, 12, 16] + - image_intensity: + - max: 75.0 + mean: 37.418907165527344 + median: 35.0 + min: 20.0 + percentile: [22.0, 28.0, 51.0, 69.0] + percentile_00_5: 22.0 + percentile_10_0: 28.0 + percentile_90_0: 51.0 + percentile_99_5: 69.0 + stdev: 9.30480670928955 + ncomponents: 1 + pixel_percentage: 0.020524226129055023 + shape: + - [17, 18, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_133.nii.gz + image_foreground_stats: + intensity: + - max: 84.0 + mean: 43.596946716308594 + median: 42.0 + min: 20.0 + percentile: [27.0, 33.0, 56.0, 75.0] + percentile_00_5: 27.0 + percentile_10_0: 33.0 + percentile_90_0: 56.0 + percentile_99_5: 75.0 + stdev: 9.128755569458008 + image_stats: + channels: 1 + cropped_shape: + - [39, 41, 42] + intensity: + - max: 197.0 + mean: 59.93269729614258 + median: 62.0 + min: 2.0 + percentile: [8.0, 26.0, 92.0, 102.0] + percentile_00_5: 8.0 + percentile_10_0: 26.0 + percentile_90_0: 92.0 + percentile_99_5: 102.0 + stdev: 25.196924209594727 + shape: + - [39, 41, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_133.nii.gz + label_stats: + image_intensity: + - max: 84.0 + mean: 43.596946716308594 + median: 42.0 + min: 20.0 + percentile: [27.0, 33.0, 56.0, 75.0] + percentile_00_5: 27.0 + percentile_10_0: 33.0 + percentile_90_0: 56.0 + percentile_99_5: 75.0 + stdev: 9.128755569458008 + label: + - image_intensity: + - max: 197.0 + mean: 60.80625534057617 + median: 64.0 + min: 2.0 + percentile: [8.0, 25.0, 92.0, 102.0] + percentile_00_5: 8.0 + percentile_10_0: 25.0 + percentile_90_0: 92.0 + percentile_99_5: 102.0 + stdev: 25.482267379760742 + ncomponents: 1 + pixel_percentage: 0.9492391347885132 + shape: + - [39, 41, 42] + - image_intensity: + - max: 71.0 + mean: 43.45655822753906 + median: 42.0 + min: 20.0 + percentile: [26.489999771118164, 33.0, 56.0, 66.510009765625] + percentile_00_5: 26.489999771118164 + percentile_10_0: 33.0 + percentile_90_0: 56.0 + percentile_99_5: 66.510009765625 + stdev: 8.651559829711914 + ncomponents: 1 + pixel_percentage: 0.028276601806282997 + shape: + - [21, 14, 19] + - image_intensity: + - max: 84.0 + mean: 43.77350997924805 + median: 42.0 + min: 24.0 + percentile: [27.545000076293945, 33.0, 57.0, 79.0] + percentile_00_5: 27.545000076293945 + percentile_10_0: 33.0 + percentile_90_0: 57.0 + percentile_99_5: 79.0 + stdev: 9.692713737487793 + ncomponents: 1 + pixel_percentage: 0.022484291344881058 + shape: + - [19, 17, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_033.nii.gz + image_foreground_stats: + intensity: + - max: 109.0 + mean: 51.78702926635742 + median: 50.0 + min: 19.0 + percentile: [27.0, 40.0, 67.0, 96.0] + percentile_00_5: 27.0 + percentile_10_0: 40.0 + percentile_90_0: 67.0 + percentile_99_5: 96.0 + stdev: 11.581384658813477 + image_stats: + channels: 1 + cropped_shape: + - [33, 48, 38] + intensity: + - max: 253.0 + mean: 68.4669418334961 + median: 68.0 + min: 1.0 + percentile: [9.0, 32.0, 106.0, 123.0] + percentile_00_5: 9.0 + percentile_10_0: 32.0 + percentile_90_0: 106.0 + percentile_99_5: 123.0 + stdev: 28.341306686401367 + shape: + - [33, 48, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_033.nii.gz + label_stats: + image_intensity: + - max: 109.0 + mean: 51.78702926635742 + median: 50.0 + min: 19.0 + percentile: [27.0, 40.0, 67.0, 96.0] + percentile_00_5: 27.0 + percentile_10_0: 40.0 + percentile_90_0: 67.0 + percentile_99_5: 96.0 + stdev: 11.581384658813477 + label: + - image_intensity: + - max: 253.0 + mean: 69.47268676757812 + median: 70.0 + min: 1.0 + percentile: [9.0, 31.0, 107.0, 123.0] + percentile_00_5: 9.0 + percentile_10_0: 31.0 + percentile_90_0: 107.0 + percentile_99_5: 123.0 + stdev: 28.73651123046875 + ncomponents: 1 + pixel_percentage: 0.9431319832801819 + shape: + - [33, 48, 38] + - image_intensity: + - max: 90.0 + mean: 50.17034912109375 + median: 49.0 + min: 19.0 + percentile: [27.270000457763672, 39.0, 63.0, 82.0] + percentile_00_5: 27.270000457763672 + percentile_10_0: 39.0 + percentile_90_0: 63.0 + percentile_99_5: 82.0 + stdev: 9.91424560546875 + ncomponents: 1 + pixel_percentage: 0.030818048864603043 + shape: + - [23, 18, 15] + - image_intensity: + - max: 109.0 + mean: 53.699615478515625 + median: 51.0 + min: 21.0 + percentile: [26.0, 41.0, 71.0, 102.1650390625] + percentile_00_5: 26.0 + percentile_10_0: 41.0 + percentile_90_0: 71.0 + percentile_99_5: 102.1650390625 + stdev: 13.029731750488281 + ncomponents: 1 + pixel_percentage: 0.02604997344315052 + shape: + - [17, 21, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_150.nii.gz + image_foreground_stats: + intensity: + - max: 90.0 + mean: 44.409324645996094 + median: 43.0 + min: 19.0 + percentile: [26.0, 34.0, 58.0, 77.0] + percentile_00_5: 26.0 + percentile_10_0: 34.0 + percentile_90_0: 58.0 + percentile_99_5: 77.0 + stdev: 9.746139526367188 + image_stats: + channels: 1 + cropped_shape: + - [37, 49, 34] + intensity: + - max: 249.0 + mean: 61.88175582885742 + median: 64.0 + min: 1.0 + percentile: [7.0, 24.0, 96.0, 110.0] + percentile_00_5: 7.0 + percentile_10_0: 24.0 + percentile_90_0: 96.0 + percentile_99_5: 110.0 + stdev: 27.496156692504883 + shape: + - [37, 49, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_150.nii.gz + label_stats: + image_intensity: + - max: 90.0 + mean: 44.409324645996094 + median: 43.0 + min: 19.0 + percentile: [26.0, 34.0, 58.0, 77.0] + percentile_00_5: 26.0 + percentile_10_0: 34.0 + percentile_90_0: 58.0 + percentile_99_5: 77.0 + stdev: 9.746139526367188 + label: + - image_intensity: + - max: 249.0 + mean: 62.8032112121582 + median: 67.0 + min: 1.0 + percentile: [7.0, 24.0, 96.0, 110.0] + percentile_00_5: 7.0 + percentile_10_0: 24.0 + percentile_90_0: 96.0 + percentile_99_5: 110.0 + stdev: 27.819988250732422 + ncomponents: 1 + pixel_percentage: 0.9499042630195618 + shape: + - [37, 49, 34] + - image_intensity: + - max: 80.0 + mean: 45.20498275756836 + median: 44.0 + min: 24.0 + percentile: [28.0, 35.0, 57.0, 73.0] + percentile_00_5: 28.0 + percentile_10_0: 35.0 + percentile_90_0: 57.0 + percentile_99_5: 73.0 + stdev: 8.745254516601562 + ncomponents: 1 + pixel_percentage: 0.026037441566586494 + shape: + - [19, 16, 12] + - image_intensity: + - max: 90.0 + mean: 43.548213958740234 + median: 41.0 + min: 19.0 + percentile: [25.0, 33.0, 58.0, 79.5899658203125] + percentile_00_5: 25.0 + percentile_10_0: 33.0 + percentile_90_0: 58.0 + percentile_99_5: 79.5899658203125 + stdev: 10.657902717590332 + ncomponents: 1 + pixel_percentage: 0.024058271199464798 + shape: + - [18, 21, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_050.nii.gz + image_foreground_stats: + intensity: + - max: 1221.247314453125 + mean: 535.8847045898438 + median: 519.2705078125 + min: 67.3128433227539 + percentile: [211.5546417236328, 355.79644775390625, 740.4412841796875, 1028.9249267578125] + percentile_00_5: 211.5546417236328 + percentile_10_0: 355.79644775390625 + percentile_90_0: 740.4412841796875 + percentile_99_5: 1028.9249267578125 + stdev: 152.28477478027344 + image_stats: + channels: 1 + cropped_shape: + - [38, 49, 38] + intensity: + - max: 4375.3349609375 + mean: 721.3748168945312 + median: 711.5928955078125 + min: 0.0 + percentile: [48.08060073852539, 288.4836120605469, 1153.9344482421875, 1384.7213134765625] + percentile_00_5: 48.08060073852539 + percentile_10_0: 288.4836120605469 + percentile_90_0: 1153.9344482421875 + percentile_99_5: 1384.7213134765625 + stdev: 334.9332580566406 + shape: + - [38, 49, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_050.nii.gz + label_stats: + image_intensity: + - max: 1221.247314453125 + mean: 535.8847045898438 + median: 519.2705078125 + min: 67.3128433227539 + percentile: [211.5546417236328, 355.79644775390625, 740.4412841796875, 1028.9249267578125] + percentile_00_5: 211.5546417236328 + percentile_10_0: 355.79644775390625 + percentile_90_0: 740.4412841796875 + percentile_99_5: 1028.9249267578125 + stdev: 152.28477478027344 + label: + - image_intensity: + - max: 4375.3349609375 + mean: 731.9928588867188 + median: 730.8251342773438 + min: 0.0 + percentile: [48.08060073852539, 288.4836120605469, 1153.9344482421875, 1384.7213134765625] + percentile_00_5: 48.08060073852539 + percentile_10_0: 288.4836120605469 + percentile_90_0: 1153.9344482421875 + percentile_99_5: 1384.7213134765625 + stdev: 339.3995666503906 + ncomponents: 1 + pixel_percentage: 0.9458561539649963 + shape: + - [38, 49, 38] + - image_intensity: + - max: 1105.8538818359375 + mean: 537.65185546875 + median: 528.8865966796875 + min: 67.3128433227539 + percentile: [201.9385223388672, 355.79644775390625, 730.8251342773438, 942.3798217773438] + percentile_00_5: 201.9385223388672 + percentile_10_0: 355.79644775390625 + percentile_90_0: 730.8251342773438 + percentile_99_5: 942.3798217773438 + stdev: 144.1819305419922 + ncomponents: 1 + pixel_percentage: 0.02859121561050415 + shape: + - [25, 15, 14] + - image_intensity: + - max: 1221.247314453125 + mean: 533.9074096679688 + median: 500.03826904296875 + min: 173.0901641845703 + percentile: [240.40301513671875, 355.79644775390625, 752.9415283203125, 1086.28466796875] + percentile_00_5: 240.40301513671875 + percentile_10_0: 355.79644775390625 + percentile_90_0: 752.9415283203125 + percentile_99_5: 1086.28466796875 + stdev: 160.84506225585938 + ncomponents: 1 + pixel_percentage: 0.025552602484822273 + shape: + - [21, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_105.nii.gz + image_foreground_stats: + intensity: + - max: 870.085693359375 + mean: 407.8662109375 + median: 394.1413879394531 + min: 89.23955535888672 + percentile: [171.04248046875, 282.5919189453125, 557.7472534179688, 728.7897338867188] + percentile_00_5: 171.04248046875 + percentile_10_0: 282.5919189453125 + percentile_90_0: 557.7472534179688 + percentile_99_5: 728.7897338867188 + stdev: 107.11434936523438 + image_stats: + channels: 1 + cropped_shape: + - [33, 47, 37] + intensity: + - max: 1695.5516357421875 + mean: 532.9242553710938 + median: 542.8739624023438 + min: 0.0 + percentile: [37.18314743041992, 252.8454132080078, 795.7193603515625, 951.8886108398438] + percentile_00_5: 37.18314743041992 + percentile_10_0: 252.8454132080078 + percentile_90_0: 795.7193603515625 + percentile_99_5: 951.8886108398438 + stdev: 213.3580322265625 + shape: + - [33, 47, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_105.nii.gz + label_stats: + image_intensity: + - max: 870.085693359375 + mean: 407.8662109375 + median: 394.1413879394531 + min: 89.23955535888672 + percentile: [171.04248046875, 282.5919189453125, 557.7472534179688, 728.7897338867188] + percentile_00_5: 171.04248046875 + percentile_10_0: 282.5919189453125 + percentile_90_0: 557.7472534179688 + percentile_99_5: 728.7897338867188 + stdev: 107.11434936523438 + label: + - image_intensity: + - max: 1695.5516357421875 + mean: 540.2118530273438 + median: 557.7472534179688 + min: 0.0 + percentile: [37.18314743041992, 245.40878295898438, 803.156005859375, 951.8886108398438] + percentile_00_5: 37.18314743041992 + percentile_10_0: 245.40878295898438 + percentile_90_0: 803.156005859375 + percentile_99_5: 951.8886108398438 + stdev: 215.7342987060547 + ncomponents: 1 + pixel_percentage: 0.9449352622032166 + shape: + - [33, 47, 37] + - image_intensity: + - max: 870.085693359375 + mean: 412.4894104003906 + median: 401.5780029296875 + min: 89.23955535888672 + percentile: [143.601318359375, 282.5919189453125, 557.7472534179688, 736.226318359375] + percentile_00_5: 143.601318359375 + percentile_10_0: 282.5919189453125 + percentile_90_0: 557.7472534179688 + percentile_99_5: 736.226318359375 + stdev: 107.95480346679688 + ncomponents: 1 + pixel_percentage: 0.03192360699176788 + shape: + - [22, 17, 16] + - image_intensity: + - max: 773.4094848632812 + mean: 401.4884033203125 + median: 386.7047424316406 + min: 156.16921997070312 + percentile: [200.78900146484375, 282.5919189453125, 557.7472534179688, 709.1941528320312] + percentile_00_5: 200.78900146484375 + percentile_10_0: 282.5919189453125 + percentile_90_0: 557.7472534179688 + percentile_99_5: 709.1941528320312 + stdev: 105.61235046386719 + ncomponents: 1 + pixel_percentage: 0.023141128942370415 + shape: + - [15, 18, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_178.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 52.73397445678711 + median: 51.0 + min: 30.0 + percentile: [33.0, 40.0, 68.0, 84.43505859375] + percentile_00_5: 33.0 + percentile_10_0: 40.0 + percentile_90_0: 68.0 + percentile_99_5: 84.43505859375 + stdev: 10.81682300567627 + image_stats: + channels: 1 + cropped_shape: + - [35, 44, 41] + intensity: + - max: 255.0 + mean: 68.1161880493164 + median: 73.0 + min: 1.0 + percentile: [6.0, 33.0, 96.0, 112.0] + percentile_00_5: 6.0 + percentile_10_0: 33.0 + percentile_90_0: 96.0 + percentile_99_5: 112.0 + stdev: 25.415904998779297 + shape: + - [35, 44, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_178.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 52.73397445678711 + median: 51.0 + min: 30.0 + percentile: [33.0, 40.0, 68.0, 84.43505859375] + percentile_00_5: 33.0 + percentile_10_0: 40.0 + percentile_90_0: 68.0 + percentile_99_5: 84.43505859375 + stdev: 10.81682300567627 + label: + - image_intensity: + - max: 255.0 + mean: 68.80706787109375 + median: 75.0 + min: 1.0 + percentile: [6.0, 32.0, 96.0, 112.0] + percentile_00_5: 6.0 + percentile_10_0: 32.0 + percentile_90_0: 96.0 + percentile_99_5: 112.0 + stdev: 25.663625717163086 + ncomponents: 1 + pixel_percentage: 0.9570161700248718 + shape: + - [35, 44, 41] + - image_intensity: + - max: 84.0 + mean: 55.15277862548828 + median: 54.0 + min: 32.0 + percentile: [34.11499786376953, 44.0, 69.0, 79.0] + percentile_00_5: 34.11499786376953 + percentile_10_0: 44.0 + percentile_90_0: 69.0 + percentile_99_5: 79.0 + stdev: 9.584864616394043 + ncomponents: 1 + pixel_percentage: 0.01938549242913723 + shape: + - [21, 13, 14] + - image_intensity: + - max: 96.0 + mean: 50.74698257446289 + median: 48.0 + min: 30.0 + percentile: [32.0, 39.0, 66.0, 88.0] + percentile_00_5: 32.0 + percentile_10_0: 39.0 + percentile_90_0: 66.0 + percentile_99_5: 88.0 + stdev: 11.353254318237305 + ncomponents: 1 + pixel_percentage: 0.023598352447152138 + shape: + - [14, 20, 26] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_166.nii.gz + image_foreground_stats: + intensity: + - max: 78.0 + mean: 42.06772232055664 + median: 41.0 + min: 9.0 + percentile: [18.0, 30.0, 57.0, 72.0] + percentile_00_5: 18.0 + percentile_10_0: 30.0 + percentile_90_0: 57.0 + percentile_99_5: 72.0 + stdev: 10.452546119689941 + image_stats: + channels: 1 + cropped_shape: + - [36, 49, 31] + intensity: + - max: 218.0 + mean: 55.80059814453125 + median: 55.0 + min: 2.0 + percentile: [6.0, 16.0, 91.0, 105.0] + percentile_00_5: 6.0 + percentile_10_0: 16.0 + percentile_90_0: 91.0 + percentile_99_5: 105.0 + stdev: 27.738901138305664 + shape: + - [36, 49, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_166.nii.gz + label_stats: + image_intensity: + - max: 78.0 + mean: 42.06772232055664 + median: 41.0 + min: 9.0 + percentile: [18.0, 30.0, 57.0, 72.0] + percentile_00_5: 18.0 + percentile_10_0: 30.0 + percentile_90_0: 57.0 + percentile_99_5: 72.0 + stdev: 10.452546119689941 + label: + - image_intensity: + - max: 218.0 + mean: 56.60531997680664 + median: 57.0 + min: 2.0 + percentile: [6.0, 16.0, 92.0, 105.0] + percentile_00_5: 6.0 + percentile_10_0: 16.0 + percentile_90_0: 92.0 + percentile_99_5: 105.0 + stdev: 28.221158981323242 + ncomponents: 1 + pixel_percentage: 0.9446455836296082 + shape: + - [36, 49, 31] + - image_intensity: + - max: 77.0 + mean: 42.94293975830078 + median: 42.0 + min: 17.0 + percentile: [22.0, 30.0, 57.0, 72.0] + percentile_00_5: 22.0 + percentile_10_0: 30.0 + percentile_90_0: 57.0 + percentile_99_5: 72.0 + stdev: 10.471667289733887 + ncomponents: 1 + pixel_percentage: 0.025638211518526077 + shape: + - [19, 13, 13] + - image_intensity: + - max: 78.0 + mean: 41.31261444091797 + median: 40.0 + min: 9.0 + percentile: [17.0, 30.0, 56.0, 71.8800048828125] + percentile_00_5: 17.0 + percentile_10_0: 30.0 + percentile_90_0: 56.0 + percentile_99_5: 71.8800048828125 + stdev: 10.376873016357422 + ncomponents: 1 + pixel_percentage: 0.029716188088059425 + shape: + - [20, 24, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_017.nii.gz + image_foreground_stats: + intensity: + - max: 920.2604370117188 + mean: 399.8487243652344 + median: 383.4418640136719 + min: 76.68836975097656 + percentile: [153.37673950195312, 278.8668212890625, 550.761962890625, 780.8270263671875] + percentile_00_5: 153.37673950195312 + percentile_10_0: 278.8668212890625 + percentile_90_0: 550.761962890625 + percentile_99_5: 780.8270263671875 + stdev: 112.03753662109375 + image_stats: + channels: 1 + cropped_shape: + - [35, 48, 32] + intensity: + - max: 1045.75048828125 + mean: 505.2635192871094 + median: 501.96026611328125 + min: 0.0 + percentile: [27.886680603027344, 167.32008361816406, 808.7137451171875, 920.2604370117188] + percentile_00_5: 27.886680603027344 + percentile_10_0: 167.32008361816406 + percentile_90_0: 808.7137451171875 + percentile_99_5: 920.2604370117188 + stdev: 234.48104858398438 + shape: + - [35, 48, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_017.nii.gz + label_stats: + image_intensity: + - max: 920.2604370117188 + mean: 399.8487243652344 + median: 383.4418640136719 + min: 76.68836975097656 + percentile: [153.37673950195312, 278.8668212890625, 550.761962890625, 780.8270263671875] + percentile_00_5: 153.37673950195312 + percentile_10_0: 278.8668212890625 + percentile_90_0: 550.761962890625 + percentile_99_5: 780.8270263671875 + stdev: 112.03753662109375 + label: + - image_intensity: + - max: 1045.75048828125 + mean: 512.5550537109375 + median: 522.875244140625 + min: 0.0 + percentile: [27.886680603027344, 160.34841918945312, 808.7137451171875, 920.2604370117188] + percentile_00_5: 27.886680603027344 + percentile_10_0: 160.34841918945312 + percentile_90_0: 808.7137451171875 + percentile_99_5: 920.2604370117188 + stdev: 238.9442901611328 + ncomponents: 1 + pixel_percentage: 0.9353050589561462 + shape: + - [35, 48, 32] + - image_intensity: + - max: 794.7703857421875 + mean: 393.3262939453125 + median: 383.4418640136719 + min: 76.68836975097656 + percentile: [165.01943969726562, 278.8668212890625, 529.846923828125, 685.52490234375] + percentile_00_5: 165.01943969726562 + percentile_10_0: 278.8668212890625 + percentile_90_0: 529.846923828125 + percentile_99_5: 685.52490234375 + stdev: 98.92593383789062 + ncomponents: 1 + pixel_percentage: 0.0397135429084301 + shape: + - [23, 17, 15] + - image_intensity: + - max: 920.2604370117188 + mean: 410.2176513671875 + median: 383.4418640136719 + min: 104.5750503540039 + percentile: [144.38328552246094, 278.8668212890625, 599.5636596679688, 824.6791381835938] + percentile_00_5: 144.38328552246094 + percentile_10_0: 278.8668212890625 + percentile_90_0: 599.5636596679688 + percentile_99_5: 824.6791381835938 + stdev: 129.51663208007812 + ncomponents: 1 + pixel_percentage: 0.02498139813542366 + shape: + - [17, 21, 14] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_109.nii.gz + image_foreground_stats: + intensity: + - max: 102.0 + mean: 53.21404266357422 + median: 51.0 + min: 19.0 + percentile: [30.09000015258789, 40.0, 69.0, 89.0] + percentile_00_5: 30.09000015258789 + percentile_10_0: 40.0 + percentile_90_0: 69.0 + percentile_99_5: 89.0 + stdev: 11.526534080505371 + image_stats: + channels: 1 + cropped_shape: + - [36, 49, 36] + intensity: + - max: 122.0 + mean: 65.65961456298828 + median: 69.0 + min: 1.0 + percentile: [7.0, 29.0, 98.0, 112.0] + percentile_00_5: 7.0 + percentile_10_0: 29.0 + percentile_90_0: 98.0 + percentile_99_5: 112.0 + stdev: 25.907041549682617 + shape: + - [36, 49, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_109.nii.gz + label_stats: + image_intensity: + - max: 102.0 + mean: 53.21404266357422 + median: 51.0 + min: 19.0 + percentile: [30.09000015258789, 40.0, 69.0, 89.0] + percentile_00_5: 30.09000015258789 + percentile_10_0: 40.0 + percentile_90_0: 69.0 + percentile_99_5: 89.0 + stdev: 11.526534080505371 + label: + - image_intensity: + - max: 122.0 + mean: 66.32415771484375 + median: 71.0 + min: 1.0 + percentile: [7.0, 28.0, 98.0, 112.0] + percentile_00_5: 7.0 + percentile_10_0: 28.0 + percentile_90_0: 98.0 + percentile_99_5: 112.0 + stdev: 26.29080581665039 + ncomponents: 1 + pixel_percentage: 0.949310302734375 + shape: + - [36, 49, 36] + - image_intensity: + - max: 102.0 + mean: 53.38325881958008 + median: 52.0 + min: 26.0 + percentile: [30.940000534057617, 40.0, 67.0, 89.0] + percentile_00_5: 30.940000534057617 + percentile_10_0: 40.0 + percentile_90_0: 67.0 + percentile_99_5: 89.0 + stdev: 11.177430152893066 + ncomponents: 1 + pixel_percentage: 0.025022046640515327 + shape: + - [24, 14, 12] + - image_intensity: + - max: 93.0 + mean: 53.04907989501953 + median: 51.0 + min: 19.0 + percentile: [30.145000457763672, 40.0, 70.0, 90.0] + percentile_00_5: 30.145000457763672 + percentile_10_0: 40.0 + percentile_90_0: 70.0 + percentile_99_5: 90.0 + stdev: 11.854642868041992 + ncomponents: 1 + pixel_percentage: 0.025667674839496613 + shape: + - [16, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_074.nii.gz + image_foreground_stats: + intensity: + - max: 742.7111206054688 + mean: 366.6538391113281 + median: 355.75238037109375 + min: 87.37777709960938 + percentile: [180.9656219482422, 262.1333312988281, 486.8190612792969, 642.8828125] + percentile_00_5: 180.9656219482422 + percentile_10_0: 262.1333312988281 + percentile_90_0: 486.8190612792969 + percentile_99_5: 642.8828125 + stdev: 89.24051666259766 + image_stats: + channels: 1 + cropped_shape: + - [37, 47, 42] + intensity: + - max: 1560.3175048828125 + mean: 509.3006896972656 + median: 549.2317504882812 + min: 0.0 + percentile: [24.96508026123047, 224.68572998046875, 742.7111206054688, 842.5714721679688] + percentile_00_5: 24.96508026123047 + percentile_10_0: 224.68572998046875 + percentile_90_0: 742.7111206054688 + percentile_99_5: 842.5714721679688 + stdev: 205.00839233398438 + shape: + - [37, 47, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_074.nii.gz + label_stats: + image_intensity: + - max: 742.7111206054688 + mean: 366.6538391113281 + median: 355.75238037109375 + min: 87.37777709960938 + percentile: [180.9656219482422, 262.1333312988281, 486.8190612792969, 642.8828125] + percentile_00_5: 180.9656219482422 + percentile_10_0: 262.1333312988281 + percentile_90_0: 486.8190612792969 + percentile_99_5: 642.8828125 + stdev: 89.24051666259766 + label: + - image_intensity: + - max: 1560.3175048828125 + mean: 515.4107055664062 + median: 561.7142944335938 + min: 0.0 + percentile: [24.96508026123047, 212.20318603515625, 748.952392578125, 842.5714721679688] + percentile_00_5: 24.96508026123047 + percentile_10_0: 212.20318603515625 + percentile_90_0: 748.952392578125 + percentile_99_5: 842.5714721679688 + stdev: 206.3459014892578 + ncomponents: 1 + pixel_percentage: 0.9589254856109619 + shape: + - [37, 47, 42] + - image_intensity: + - max: 742.7111206054688 + mean: 381.6593322753906 + median: 368.23492431640625 + min: 143.54920959472656 + percentile: [194.63400268554688, 280.8571472167969, 505.5428771972656, 649.0921020507812] + percentile_00_5: 194.63400268554688 + percentile_10_0: 280.8571472167969 + percentile_90_0: 505.5428771972656 + percentile_99_5: 649.0921020507812 + stdev: 87.2670669555664 + ncomponents: 1 + pixel_percentage: 0.019688380882143974 + shape: + - [19, 15, 15] + - image_intensity: + - max: 711.5047607421875 + mean: 352.83953857421875 + median: 337.0285949707031 + min: 87.37777709960938 + percentile: [156.03175354003906, 255.89207458496094, 474.3365173339844, 631.5857543945312] + percentile_00_5: 156.03175354003906 + percentile_10_0: 255.89207458496094 + percentile_90_0: 474.3365173339844 + percentile_99_5: 631.5857543945312 + stdev: 88.80553436279297 + ncomponents: 1 + pixel_percentage: 0.021386127918958664 + shape: + - [20, 18, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_174.nii.gz + image_foreground_stats: + intensity: + - max: 100.0 + mean: 47.161895751953125 + median: 46.0 + min: 11.0 + percentile: [25.729999542236328, 34.0, 63.0, 81.0] + percentile_00_5: 25.729999542236328 + percentile_10_0: 34.0 + percentile_90_0: 63.0 + percentile_99_5: 81.0 + stdev: 11.338601112365723 + image_stats: + channels: 1 + cropped_shape: + - [37, 55, 34] + intensity: + - max: 255.0 + mean: 59.3338508605957 + median: 59.0 + min: 1.0 + percentile: [6.0, 30.0, 89.0, 102.0] + percentile_00_5: 6.0 + percentile_10_0: 30.0 + percentile_90_0: 89.0 + percentile_99_5: 102.0 + stdev: 23.294349670410156 + shape: + - [37, 55, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_174.nii.gz + label_stats: + image_intensity: + - max: 100.0 + mean: 47.161895751953125 + median: 46.0 + min: 11.0 + percentile: [25.729999542236328, 34.0, 63.0, 81.0] + percentile_00_5: 25.729999542236328 + percentile_10_0: 34.0 + percentile_90_0: 63.0 + percentile_99_5: 81.0 + stdev: 11.338601112365723 + label: + - image_intensity: + - max: 255.0 + mean: 60.07020950317383 + median: 61.0 + min: 1.0 + percentile: [6.0, 30.0, 89.0, 102.0] + percentile_00_5: 6.0 + percentile_10_0: 30.0 + percentile_90_0: 89.0 + percentile_99_5: 102.0 + stdev: 23.625642776489258 + ncomponents: 1 + pixel_percentage: 0.9429541826248169 + shape: + - [37, 55, 34] + - image_intensity: + - max: 88.0 + mean: 47.45484924316406 + median: 46.0 + min: 26.0 + percentile: [29.0, 36.30000305175781, 60.0, 77.0] + percentile_00_5: 29.0 + percentile_10_0: 36.30000305175781 + percentile_90_0: 60.0 + percentile_99_5: 77.0 + stdev: 9.509099960327148 + ncomponents: 1 + pixel_percentage: 0.025928601622581482 + shape: + - [21, 17, 13] + - image_intensity: + - max: 100.0 + mean: 46.917789459228516 + median: 45.0 + min: 11.0 + percentile: [24.0, 33.0, 66.0, 82.0] + percentile_00_5: 24.0 + percentile_10_0: 33.0 + percentile_90_0: 66.0 + percentile_99_5: 82.0 + stdev: 12.657561302185059 + ncomponents: 1 + pixel_percentage: 0.031117213889956474 + shape: + - [19, 27, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_314.nii.gz + image_foreground_stats: + intensity: + - max: 521.9302368164062 + mean: 242.8621368408203 + median: 235.872314453125 + min: 20.07423973083496 + percentile: [75.27839660644531, 170.63104248046875, 326.2063903808594, 461.70751953125] + percentile_00_5: 75.27839660644531 + percentile_10_0: 170.63104248046875 + percentile_90_0: 326.2063903808594 + percentile_99_5: 461.70751953125 + stdev: 66.6104507446289 + image_stats: + channels: 1 + cropped_shape: + - [37, 53, 33] + intensity: + - max: 893.3036499023438 + mean: 295.9065856933594 + median: 296.09503173828125 + min: 0.0 + percentile: [15.055679321289062, 80.29695892333984, 471.74462890625, 536.9859008789062] + percentile_00_5: 15.055679321289062 + percentile_10_0: 80.29695892333984 + percentile_90_0: 471.74462890625 + percentile_99_5: 536.9859008789062 + stdev: 142.02987670898438 + shape: + - [37, 53, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_314.nii.gz + label_stats: + image_intensity: + - max: 521.9302368164062 + mean: 242.8621368408203 + median: 235.872314453125 + min: 20.07423973083496 + percentile: [75.27839660644531, 170.63104248046875, 326.2063903808594, 461.70751953125] + percentile_00_5: 75.27839660644531 + percentile_10_0: 170.63104248046875 + percentile_90_0: 326.2063903808594 + percentile_99_5: 461.70751953125 + stdev: 66.6104507446289 + label: + - image_intensity: + - max: 893.3036499023438 + mean: 298.4338684082031 + median: 306.13214111328125 + min: 0.0 + percentile: [10.03711986541748, 80.29695892333984, 476.76318359375, 542.0044555664062] + percentile_00_5: 10.03711986541748 + percentile_10_0: 80.29695892333984 + percentile_90_0: 476.76318359375 + percentile_99_5: 542.0044555664062 + stdev: 144.1587677001953 + ncomponents: 1 + pixel_percentage: 0.9545222520828247 + shape: + - [37, 53, 33] + - image_intensity: + - max: 516.9116821289062 + mean: 244.52247619628906 + median: 235.872314453125 + min: 20.07423973083496 + percentile: [62.63162612915039, 165.6124725341797, 336.2435302734375, 464.3172607421875] + percentile_00_5: 62.63162612915039 + percentile_10_0: 165.6124725341797 + percentile_90_0: 336.2435302734375 + percentile_99_5: 464.3172607421875 + stdev: 69.5777587890625 + ncomponents: 1 + pixel_percentage: 0.026223478838801384 + shape: + - [21, 17, 14] + - image_intensity: + - max: 521.9302368164062 + mean: 240.6008758544922 + median: 230.853759765625 + min: 50.18560028076172 + percentile: [105.38975524902344, 170.63104248046875, 321.1878356933594, 446.6518249511719] + percentile_00_5: 105.38975524902344 + percentile_10_0: 170.63104248046875 + percentile_90_0: 321.1878356933594 + percentile_99_5: 446.6518249511719 + stdev: 62.271202087402344 + ncomponents: 1 + pixel_percentage: 0.01925424486398697 + shape: + - [20, 22, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_269.nii.gz + image_foreground_stats: + intensity: + - max: 1266.0704345703125 + mean: 561.149169921875 + median: 537.3967895507812 + min: 36.43368148803711 + percentile: [182.1684112548828, 409.87890625, 746.8904418945312, 1102.118896484375] + percentile_00_5: 182.1684112548828 + percentile_10_0: 409.87890625 + percentile_90_0: 746.8904418945312 + percentile_99_5: 1102.118896484375 + stdev: 148.75927734375 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 37] + intensity: + - max: 2987.561767578125 + mean: 761.5499877929688 + median: 737.7820434570312 + min: 0.0 + percentile: [54.65052032470703, 364.3368225097656, 1211.419921875, 1366.2630615234375] + percentile_00_5: 54.65052032470703 + percentile_10_0: 364.3368225097656 + percentile_90_0: 1211.419921875 + percentile_99_5: 1366.2630615234375 + stdev: 321.4253234863281 + shape: + - [35, 49, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_269.nii.gz + label_stats: + image_intensity: + - max: 1266.0704345703125 + mean: 561.149169921875 + median: 537.3967895507812 + min: 36.43368148803711 + percentile: [182.1684112548828, 409.87890625, 746.8904418945312, 1102.118896484375] + percentile_00_5: 182.1684112548828 + percentile_10_0: 409.87890625 + percentile_90_0: 746.8904418945312 + percentile_99_5: 1102.118896484375 + stdev: 148.75927734375 + label: + - image_intensity: + - max: 2987.561767578125 + mean: 773.033203125 + median: 765.1072998046875 + min: 0.0 + percentile: [54.65052032470703, 364.3368225097656, 1211.419921875, 1366.2630615234375] + percentile_00_5: 54.65052032470703 + percentile_10_0: 364.3368225097656 + percentile_90_0: 1211.419921875 + percentile_99_5: 1366.2630615234375 + stdev: 324.858642578125 + ncomponents: 1 + pixel_percentage: 0.9458041191101074 + shape: + - [35, 49, 37] + - image_intensity: + - max: 1211.419921875 + mean: 550.5128784179688 + median: 537.3967895507812 + min: 36.43368148803711 + percentile: [133.1651153564453, 409.87890625, 719.565185546875, 1029.25146484375] + percentile_00_5: 133.1651153564453 + percentile_10_0: 409.87890625 + percentile_90_0: 719.565185546875 + percentile_99_5: 1029.25146484375 + stdev: 132.73135375976562 + ncomponents: 1 + pixel_percentage: 0.02718461863696575 + shape: + - [21, 17, 15] + - image_intensity: + - max: 1266.0704345703125 + mean: 571.8536376953125 + median: 546.5052490234375 + min: 72.86736297607422 + percentile: [223.7483367919922, 400.7705078125, 792.4325561523438, 1111.227294921875] + percentile_00_5: 223.7483367919922 + percentile_10_0: 400.7705078125 + percentile_90_0: 792.4325561523438 + percentile_99_5: 1111.227294921875 + stdev: 162.6085662841797 + ncomponents: 1 + pixel_percentage: 0.027011267840862274 + shape: + - [22, 23, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_277.nii.gz + image_foreground_stats: + intensity: + - max: 958.1455688476562 + mean: 430.1173095703125 + median: 409.5299377441406 + min: 139.0856475830078 + percentile: [200.9014892578125, 301.35223388671875, 571.7965087890625, 884.6241455078125] + percentile_00_5: 200.9014892578125 + percentile_10_0: 301.35223388671875 + percentile_90_0: 571.7965087890625 + percentile_99_5: 884.6241455078125 + stdev: 115.2838134765625 + image_stats: + channels: 1 + cropped_shape: + - [33, 59, 29] + intensity: + - max: 1900.837158203125 + mean: 567.2924194335938 + median: 556.3425903320312 + min: 0.0 + percentile: [30.907920837402344, 208.6284637451172, 919.5106201171875, 1058.5963134765625] + percentile_00_5: 30.907920837402344 + percentile_10_0: 208.6284637451172 + percentile_90_0: 919.5106201171875 + percentile_99_5: 1058.5963134765625 + stdev: 265.82025146484375 + shape: + - [33, 59, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_277.nii.gz + label_stats: + image_intensity: + - max: 958.1455688476562 + mean: 430.1173095703125 + median: 409.5299377441406 + min: 139.0856475830078 + percentile: [200.9014892578125, 301.35223388671875, 571.7965087890625, 884.6241455078125] + percentile_00_5: 200.9014892578125 + percentile_10_0: 301.35223388671875 + percentile_90_0: 571.7965087890625 + percentile_99_5: 884.6241455078125 + stdev: 115.2838134765625 + label: + - image_intensity: + - max: 1900.837158203125 + mean: 575.8182983398438 + median: 587.25048828125 + min: 0.0 + percentile: [30.907920837402344, 193.17449951171875, 927.2376098632812, 1066.3232421875] + percentile_00_5: 30.907920837402344 + percentile_10_0: 193.17449951171875 + percentile_90_0: 927.2376098632812 + percentile_99_5: 1066.3232421875 + stdev: 270.15533447265625 + ncomponents: 1 + pixel_percentage: 0.9414837956428528 + shape: + - [33, 59, 29] + - image_intensity: + - max: 888.6027221679688 + mean: 425.53094482421875 + median: 417.2569274902344 + min: 139.0856475830078 + percentile: [204.53317260742188, 309.0792236328125, 564.069580078125, 738.1586303710938] + percentile_00_5: 204.53317260742188 + percentile_10_0: 309.0792236328125 + percentile_90_0: 564.069580078125 + percentile_99_5: 738.1586303710938 + stdev: 103.8145751953125 + ncomponents: 1 + pixel_percentage: 0.03001965954899788 + shape: + - [20, 21, 12] + - image_intensity: + - max: 958.1455688476562 + mean: 434.94879150390625 + median: 409.5299377441406 + min: 139.0856475830078 + percentile: [200.9014892578125, 301.35223388671875, 587.25048828125, 911.78369140625] + percentile_00_5: 200.9014892578125 + percentile_10_0: 301.35223388671875 + percentile_90_0: 587.25048828125 + percentile_99_5: 911.78369140625 + stdev: 126.063720703125 + ncomponents: 1 + pixel_percentage: 0.02849653735756874 + shape: + - [19, 27, 15] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_318.nii.gz + image_foreground_stats: + intensity: + - max: 1146.9981689453125 + mean: 489.7340087890625 + median: 469.22650146484375 + min: 43.4468994140625 + percentile: [199.85572814941406, 338.88580322265625, 669.0822143554688, 947.1423950195312] + percentile_00_5: 199.85572814941406 + percentile_10_0: 338.88580322265625 + percentile_90_0: 669.0822143554688 + percentile_99_5: 947.1423950195312 + stdev: 139.6933135986328 + image_stats: + channels: 1 + cropped_shape: + - [37, 51, 33] + intensity: + - max: 3840.705810546875 + mean: 653.2035522460938 + median: 643.0140991210938 + min: 0.0 + percentile: [43.4468994140625, 269.3707580566406, 1025.3468017578125, 1233.8919677734375] + percentile_00_5: 43.4468994140625 + percentile_10_0: 269.3707580566406 + percentile_90_0: 1025.3468017578125 + percentile_99_5: 1233.8919677734375 + stdev: 294.1993103027344 + shape: + - [37, 51, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_318.nii.gz + label_stats: + image_intensity: + - max: 1146.9981689453125 + mean: 489.7340087890625 + median: 469.22650146484375 + min: 43.4468994140625 + percentile: [199.85572814941406, 338.88580322265625, 669.0822143554688, 947.1423950195312] + percentile_00_5: 199.85572814941406 + percentile_10_0: 338.88580322265625 + percentile_90_0: 669.0822143554688 + percentile_99_5: 947.1423950195312 + stdev: 139.6933135986328 + label: + - image_intensity: + - max: 3840.705810546875 + mean: 662.9857788085938 + median: 669.0822143554688 + min: 0.0 + percentile: [43.4468994140625, 260.681396484375, 1034.0361328125, 1242.581298828125] + percentile_00_5: 43.4468994140625 + percentile_10_0: 260.681396484375 + percentile_90_0: 1034.0361328125 + percentile_99_5: 1242.581298828125 + stdev: 298.1109619140625 + ncomponents: 1 + pixel_percentage: 0.9435371160507202 + shape: + - [37, 51, 33] + - image_intensity: + - max: 1060.1043701171875 + mean: 513.7568969726562 + median: 495.2946472167969 + min: 43.4468994140625 + percentile: [225.9238739013672, 356.2645568847656, 695.150390625, 970.7772216796875] + percentile_00_5: 225.9238739013672 + percentile_10_0: 356.2645568847656 + percentile_90_0: 695.150390625 + percentile_99_5: 970.7772216796875 + stdev: 138.53636169433594 + ncomponents: 1 + pixel_percentage: 0.032583385705947876 + shape: + - [22, 21, 15] + - image_intensity: + - max: 1146.9981689453125 + mean: 456.95501708984375 + median: 434.468994140625 + min: 139.0300750732422 + percentile: [186.21340942382812, 312.8176574707031, 634.32470703125, 903.6954956054688] + percentile_00_5: 186.21340942382812 + percentile_10_0: 312.8176574707031 + percentile_90_0: 634.32470703125 + percentile_99_5: 903.6954956054688 + stdev: 134.50479125976562 + ncomponents: 1 + pixel_percentage: 0.02387949451804161 + shape: + - [25, 19, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_265.nii.gz + image_foreground_stats: + intensity: + - max: 895.892822265625 + mean: 424.09954833984375 + median: 413.000244140625 + min: 19.06155014038086 + percentile: [101.6615982055664, 298.6309509277344, 571.8464965820312, 781.5235595703125] + percentile_00_5: 101.6615982055664 + percentile_10_0: 298.6309509277344 + percentile_90_0: 571.8464965820312 + percentile_99_5: 781.5235595703125 + stdev: 113.05168914794922 + image_stats: + channels: 1 + cropped_shape: + - [31, 54, 34] + intensity: + - max: 2007.8165283203125 + mean: 509.0809020996094 + median: 533.723388671875 + min: 0.0 + percentile: [19.06155014038086, 114.36930084228516, 826.00048828125, 972.1390380859375] + percentile_00_5: 19.06155014038086 + percentile_10_0: 114.36930084228516 + percentile_90_0: 826.00048828125 + percentile_99_5: 972.1390380859375 + stdev: 253.69354248046875 + shape: + - [31, 54, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_265.nii.gz + label_stats: + image_intensity: + - max: 895.892822265625 + mean: 424.09954833984375 + median: 413.000244140625 + min: 19.06155014038086 + percentile: [101.6615982055664, 298.6309509277344, 571.8464965820312, 781.5235595703125] + percentile_00_5: 101.6615982055664 + percentile_10_0: 298.6309509277344 + percentile_90_0: 571.8464965820312 + percentile_99_5: 781.5235595703125 + stdev: 113.05168914794922 + label: + - image_intensity: + - max: 2007.8165283203125 + mean: 513.9912109375 + median: 546.4310913085938 + min: 0.0 + percentile: [19.06155014038086, 114.36930084228516, 832.3543090820312, 978.2943115234375] + percentile_00_5: 19.06155014038086 + percentile_10_0: 114.36930084228516 + percentile_90_0: 832.3543090820312 + percentile_99_5: 978.2943115234375 + stdev: 258.6490173339844 + ncomponents: 1 + pixel_percentage: 0.9453756213188171 + shape: + - [31, 54, 34] + - image_intensity: + - max: 845.06201171875 + mean: 418.8693542480469 + median: 406.6463928222656 + min: 50.8307991027832 + percentile: [103.37713623046875, 285.9232482910156, 565.4926147460938, 730.6927490234375] + percentile_00_5: 103.37713623046875 + percentile_10_0: 285.9232482910156 + percentile_90_0: 565.4926147460938 + percentile_99_5: 730.6927490234375 + stdev: 111.59127044677734 + ncomponents: 1 + pixel_percentage: 0.025563988834619522 + shape: + - [19, 18, 12] + - image_intensity: + - max: 895.892822265625 + mean: 428.7004699707031 + median: 419.3540954589844 + min: 19.06155014038086 + percentile: [101.6615982055664, 304.98480224609375, 571.8464965820312, 806.93896484375] + percentile_00_5: 101.6615982055664 + percentile_10_0: 304.98480224609375 + percentile_90_0: 571.8464965820312 + percentile_99_5: 806.93896484375 + stdev: 114.12297821044922 + ncomponents: 1 + pixel_percentage: 0.029060369357466698 + shape: + - [20, 26, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_330.nii.gz + image_foreground_stats: + intensity: + - max: 834.427978515625 + mean: 342.95977783203125 + median: 321.8507995605469 + min: 11.92039966583252 + percentile: [65.56219482421875, 208.60699462890625, 506.6169738769531, 774.9453125] + percentile_00_5: 65.56219482421875 + percentile_10_0: 208.60699462890625 + percentile_90_0: 506.6169738769531 + percentile_99_5: 774.9453125 + stdev: 126.40260314941406 + image_stats: + channels: 1 + cropped_shape: + - [35, 55, 33] + intensity: + - max: 3099.303955078125 + mean: 469.9204406738281 + median: 476.81597900390625 + min: 0.0 + percentile: [29.80099868774414, 172.84579467773438, 733.1045532226562, 1140.656494140625] + percentile_00_5: 29.80099868774414 + percentile_10_0: 172.84579467773438 + percentile_90_0: 733.1045532226562 + percentile_99_5: 1140.656494140625 + stdev: 230.31602478027344 + shape: + - [35, 55, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_330.nii.gz + label_stats: + image_intensity: + - max: 834.427978515625 + mean: 342.95977783203125 + median: 321.8507995605469 + min: 11.92039966583252 + percentile: [65.56219482421875, 208.60699462890625, 506.6169738769531, 774.9453125] + percentile_00_5: 65.56219482421875 + percentile_10_0: 208.60699462890625 + percentile_90_0: 506.6169738769531 + percentile_99_5: 774.9453125 + stdev: 126.40260314941406 + label: + - image_intensity: + - max: 3099.303955078125 + mean: 478.44525146484375 + median: 500.65679931640625 + min: 0.0 + percentile: [29.80099868774414, 166.88558959960938, 733.1045532226562, 1168.19921875] + percentile_00_5: 29.80099868774414 + percentile_10_0: 166.88558959960938 + percentile_90_0: 733.1045532226562 + percentile_99_5: 1168.19921875 + stdev: 233.19390869140625 + ncomponents: 1 + pixel_percentage: 0.937079906463623 + shape: + - [35, 55, 33] + - image_intensity: + - max: 834.427978515625 + mean: 342.9998779296875 + median: 327.8110046386719 + min: 11.92039966583252 + percentile: [60.52582550048828, 214.56719970703125, 482.77618408203125, 792.7066040039062] + percentile_00_5: 60.52582550048828 + percentile_10_0: 214.56719970703125 + percentile_90_0: 482.77618408203125 + percentile_99_5: 792.7066040039062 + stdev: 121.12010192871094 + ncomponents: 1 + pixel_percentage: 0.035135772079229355 + shape: + - [25, 19, 16] + - image_intensity: + - max: 762.9055786132812 + mean: 342.9090576171875 + median: 315.8905944824219 + min: 11.92039966583252 + percentile: [70.4495620727539, 196.6865997314453, 542.378173828125, 733.1045532226562] + percentile_00_5: 70.4495620727539 + percentile_10_0: 196.6865997314453 + percentile_90_0: 542.378173828125 + percentile_99_5: 733.1045532226562 + stdev: 132.78219604492188 + ncomponents: 1 + pixel_percentage: 0.027784336358308792 + shape: + - [19, 25, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_087.nii.gz + image_foreground_stats: + intensity: + - max: 103.0 + mean: 49.31804656982422 + median: 48.0 + min: 15.0 + percentile: [25.0, 37.0, 64.0, 92.469970703125] + percentile_00_5: 25.0 + percentile_10_0: 37.0 + percentile_90_0: 64.0 + percentile_99_5: 92.469970703125 + stdev: 11.17258071899414 + image_stats: + channels: 1 + cropped_shape: + - [35, 55, 32] + intensity: + - max: 180.0 + mean: 64.32040405273438 + median: 66.0 + min: 2.0 + percentile: [8.0, 31.0, 96.0, 108.0] + percentile_00_5: 8.0 + percentile_10_0: 31.0 + percentile_90_0: 96.0 + percentile_99_5: 108.0 + stdev: 24.828886032104492 + shape: + - [35, 55, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_087.nii.gz + label_stats: + image_intensity: + - max: 103.0 + mean: 49.31804656982422 + median: 48.0 + min: 15.0 + percentile: [25.0, 37.0, 64.0, 92.469970703125] + percentile_00_5: 25.0 + percentile_10_0: 37.0 + percentile_90_0: 64.0 + percentile_99_5: 92.469970703125 + stdev: 11.17258071899414 + label: + - image_intensity: + - max: 180.0 + mean: 65.28103637695312 + median: 68.0 + min: 2.0 + percentile: [8.0, 30.0, 97.0, 108.0] + percentile_00_5: 8.0 + percentile_10_0: 30.0 + percentile_90_0: 97.0 + percentile_99_5: 108.0 + stdev: 25.15194320678711 + ncomponents: 1 + pixel_percentage: 0.9398214221000671 + shape: + - [35, 55, 32] + - image_intensity: + - max: 88.0 + mean: 49.41904067993164 + median: 48.0 + min: 24.0 + percentile: [30.65999984741211, 38.0, 63.0, 78.0] + percentile_00_5: 30.65999984741211 + percentile_10_0: 38.0 + percentile_90_0: 63.0 + percentile_99_5: 78.0 + stdev: 9.808950424194336 + ncomponents: 1 + pixel_percentage: 0.03137987107038498 + shape: + - [19, 18, 14] + - image_intensity: + - max: 103.0 + mean: 49.208003997802734 + median: 47.0 + min: 15.0 + percentile: [22.0, 36.0, 64.0, 95.27001953125] + percentile_00_5: 22.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 95.27001953125 + stdev: 12.489143371582031 + ncomponents: 1 + pixel_percentage: 0.028798701241612434 + shape: + - [17, 26, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_230.nii.gz + image_foreground_stats: + intensity: + - max: 723.9269409179688 + mean: 332.20819091796875 + median: 318.74395751953125 + min: 5.402440071105957 + percentile: [134.08856201171875, 232.30491638183594, 443.0000915527344, 653.6952514648438] + percentile_00_5: 134.08856201171875 + percentile_10_0: 232.30491638183594 + percentile_90_0: 443.0000915527344 + percentile_99_5: 653.6952514648438 + stdev: 88.19351959228516 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 37] + intensity: + - max: 1458.6588134765625 + mean: 454.0013122558594 + median: 464.6098327636719 + min: 0.0 + percentile: [27.01219940185547, 183.68296813964844, 707.7196655273438, 799.5611572265625] + percentile_00_5: 27.01219940185547 + percentile_10_0: 183.68296813964844 + percentile_90_0: 707.7196655273438 + percentile_99_5: 799.5611572265625 + stdev: 198.5008544921875 + shape: + - [34, 49, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_230.nii.gz + label_stats: + image_intensity: + - max: 723.9269409179688 + mean: 332.20819091796875 + median: 318.74395751953125 + min: 5.402440071105957 + percentile: [134.08856201171875, 232.30491638183594, 443.0000915527344, 653.6952514648438] + percentile_00_5: 134.08856201171875 + percentile_10_0: 232.30491638183594 + percentile_90_0: 443.0000915527344 + percentile_99_5: 653.6952514648438 + stdev: 88.19351959228516 + label: + - image_intensity: + - max: 1458.6588134765625 + mean: 460.5931701660156 + median: 480.8171691894531 + min: 0.0 + percentile: [27.01219940185547, 178.280517578125, 707.7196655273438, 799.5611572265625] + percentile_00_5: 27.01219940185547 + percentile_10_0: 178.280517578125 + percentile_90_0: 707.7196655273438 + percentile_99_5: 799.5611572265625 + stdev: 200.66871643066406 + ncomponents: 1 + pixel_percentage: 0.9486551284790039 + shape: + - [34, 49, 37] + - image_intensity: + - max: 723.9269409179688 + mean: 334.3610534667969 + median: 329.5488586425781 + min: 5.402440071105957 + percentile: [118.85368347167969, 243.10980224609375, 432.1951904296875, 580.491943359375] + percentile_00_5: 118.85368347167969 + percentile_10_0: 243.10980224609375 + percentile_90_0: 432.1951904296875 + percentile_99_5: 580.491943359375 + stdev: 79.44342803955078 + ncomponents: 1 + pixel_percentage: 0.025242529809474945 + shape: + - [19, 16, 14] + - image_intensity: + - max: 718.5245361328125 + mean: 330.1263427734375 + median: 313.3415222167969 + min: 54.02439880371094 + percentile: [151.26832580566406, 226.90248107910156, 459.2073974609375, 669.686279296875] + percentile_00_5: 151.26832580566406 + percentile_10_0: 226.90248107910156 + percentile_90_0: 459.2073974609375 + percentile_99_5: 669.686279296875 + stdev: 95.85301971435547 + ncomponents: 1 + pixel_percentage: 0.026102332398295403 + shape: + - [20, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_199.nii.gz + image_foreground_stats: + intensity: + - max: 415736.8125 + mean: 189918.921875 + median: 179598.3125 + min: 46562.5234375 + percentile: [86473.2578125, 133035.78125, 259419.78125, 356901.9375] + percentile_00_5: 86473.2578125 + percentile_10_0: 133035.78125 + percentile_90_0: 259419.78125 + percentile_99_5: 356901.9375 + stdev: 50569.71875 + image_stats: + channels: 1 + cropped_shape: + - [37, 52, 26] + intensity: + - max: 548772.625 + mean: 239031.328125 + median: 236138.515625 + min: 0.0 + percentile: [9977.68359375, 79821.46875, 395781.4375, 462299.34375] + percentile_00_5: 9977.68359375 + percentile_10_0: 79821.46875 + percentile_90_0: 395781.4375 + percentile_99_5: 462299.34375 + stdev: 114870.359375 + shape: + - [37, 52, 26] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_199.nii.gz + label_stats: + image_intensity: + - max: 415736.8125 + mean: 189918.921875 + median: 179598.3125 + min: 46562.5234375 + percentile: [86473.2578125, 133035.78125, 259419.78125, 356901.9375] + percentile_00_5: 86473.2578125 + percentile_10_0: 133035.78125 + percentile_90_0: 259419.78125 + percentile_99_5: 356901.9375 + stdev: 50569.71875 + label: + - image_intensity: + - max: 548772.625 + mean: 241691.125 + median: 242790.296875 + min: 0.0 + percentile: [9977.68359375, 76495.578125, 395781.4375, 462299.34375] + percentile_00_5: 9977.68359375 + percentile_10_0: 76495.578125 + percentile_90_0: 395781.4375 + percentile_99_5: 462299.34375 + stdev: 116763.1015625 + ncomponents: 1 + pixel_percentage: 0.9486246705055237 + shape: + - [37, 52, 26] + - image_intensity: + - max: 355870.71875 + mean: 187783.8125 + median: 182924.203125 + min: 46562.5234375 + percentile: [73635.3046875, 129709.890625, 249442.09375, 326652.625] + percentile_00_5: 73635.3046875 + percentile_10_0: 129709.890625 + percentile_90_0: 249442.09375 + percentile_99_5: 326652.625 + stdev: 47912.109375 + ncomponents: 1 + pixel_percentage: 0.02314888872206211 + shape: + - [17, 13, 13] + - image_intensity: + - max: 415736.8125 + mean: 191669.984375 + median: 179598.3125 + min: 86473.2578125 + percentile: [103285.65625, 136361.671875, 269397.46875, 375459.875] + percentile_00_5: 103285.65625 + percentile_10_0: 136361.671875 + percentile_90_0: 269397.46875 + percentile_99_5: 375459.875 + stdev: 52584.57421875 + ncomponents: 1 + pixel_percentage: 0.028226451948285103 + shape: + - [20, 27, 12] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_099.nii.gz + image_foreground_stats: + intensity: + - max: 919.1619262695312 + mean: 447.0655822753906 + median: 432.54681396484375 + min: 23.172149658203125 + percentile: [154.4810028076172, 301.2379455566406, 610.199951171875, 787.8530883789062] + percentile_00_5: 154.4810028076172 + percentile_10_0: 301.2379455566406 + percentile_90_0: 610.199951171875 + percentile_99_5: 787.8530883789062 + stdev: 122.59172058105469 + image_stats: + channels: 1 + cropped_shape: + - [33, 52, 27] + intensity: + - max: 1197.227783203125 + mean: 555.216552734375 + median: 563.8556518554688 + min: 0.0 + percentile: [30.89620018005371, 208.54934692382812, 872.817626953125, 1027.2987060546875] + percentile_00_5: 30.89620018005371 + percentile_10_0: 208.54934692382812 + percentile_90_0: 872.817626953125 + percentile_99_5: 1027.2987060546875 + stdev: 247.91482543945312 + shape: + - [33, 52, 27] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_099.nii.gz + label_stats: + image_intensity: + - max: 919.1619262695312 + mean: 447.0655822753906 + median: 432.54681396484375 + min: 23.172149658203125 + percentile: [154.4810028076172, 301.2379455566406, 610.199951171875, 787.8530883789062] + percentile_00_5: 154.4810028076172 + percentile_10_0: 301.2379455566406 + percentile_90_0: 610.199951171875 + percentile_99_5: 787.8530883789062 + stdev: 122.59172058105469 + label: + - image_intensity: + - max: 1197.227783203125 + mean: 561.4763793945312 + median: 587.02783203125 + min: 0.0 + percentile: [30.89620018005371, 200.82530212402344, 872.817626953125, 1027.2987060546875] + percentile_00_5: 30.89620018005371 + percentile_10_0: 200.82530212402344 + percentile_90_0: 872.817626953125 + percentile_99_5: 1027.2987060546875 + stdev: 251.85935974121094 + ncomponents: 1 + pixel_percentage: 0.945286214351654 + shape: + - [33, 52, 27] + - image_intensity: + - max: 857.3695678710938 + mean: 434.4222717285156 + median: 424.82275390625 + min: 23.172149658203125 + percentile: [139.03289794921875, 285.78985595703125, 594.7518310546875, 764.6809692382812] + percentile_00_5: 139.03289794921875 + percentile_10_0: 285.78985595703125 + percentile_90_0: 594.7518310546875 + percentile_99_5: 764.6809692382812 + stdev: 121.58951568603516 + ncomponents: 1 + pixel_percentage: 0.027022359892725945 + shape: + - [16, 16, 11] + - image_intensity: + - max: 919.1619262695312 + mean: 459.4033508300781 + median: 447.9949035644531 + min: 146.7569580078125 + percentile: [211.71621704101562, 310.5068054199219, 625.6480712890625, 803.3012084960938] + percentile_00_5: 211.71621704101562 + percentile_10_0: 310.5068054199219 + percentile_90_0: 625.6480712890625 + percentile_99_5: 803.3012084960938 + stdev: 122.30831146240234 + ncomponents: 1 + pixel_percentage: 0.027691444382071495 + shape: + - [13, 25, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_353.nii.gz + image_foreground_stats: + intensity: + - max: 761.9340209960938 + mean: 371.3425598144531 + median: 355.5692138671875 + min: 57.145050048828125 + percentile: [157.27587890625, 266.6769104003906, 501.6065673828125, 685.7406005859375] + percentile_00_5: 157.27587890625 + percentile_10_0: 266.6769104003906 + percentile_90_0: 501.6065673828125 + percentile_99_5: 685.7406005859375 + stdev: 97.31470489501953 + image_stats: + channels: 1 + cropped_shape: + - [32, 51, 31] + intensity: + - max: 2419.140380859375 + mean: 464.3216247558594 + median: 469.85931396484375 + min: 0.0 + percentile: [25.39780044555664, 171.43515014648438, 717.4878540039062, 819.0790405273438] + percentile_00_5: 25.39780044555664 + percentile_10_0: 171.43515014648438 + percentile_90_0: 717.4878540039062 + percentile_99_5: 819.0790405273438 + stdev: 205.36114501953125 + shape: + - [32, 51, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_353.nii.gz + label_stats: + image_intensity: + - max: 761.9340209960938 + mean: 371.3425598144531 + median: 355.5692138671875 + min: 57.145050048828125 + percentile: [157.27587890625, 266.6769104003906, 501.6065673828125, 685.7406005859375] + percentile_00_5: 157.27587890625 + percentile_10_0: 266.6769104003906 + percentile_90_0: 501.6065673828125 + percentile_99_5: 685.7406005859375 + stdev: 97.31470489501953 + label: + - image_intensity: + - max: 2419.140380859375 + mean: 469.6763916015625 + median: 488.90765380859375 + min: 0.0 + percentile: [19.048351287841797, 158.7362518310547, 717.4878540039062, 819.0790405273438] + percentile_00_5: 19.048351287841797 + percentile_10_0: 158.7362518310547 + percentile_90_0: 717.4878540039062 + percentile_99_5: 819.0790405273438 + stdev: 208.63858032226562 + ncomponents: 1 + pixel_percentage: 0.9455447793006897 + shape: + - [32, 51, 31] + - image_intensity: + - max: 749.235107421875 + mean: 362.96417236328125 + median: 355.5692138671875 + min: 63.49449920654297 + percentile: [152.83126831054688, 266.6769104003906, 476.2087707519531, 634.5009155273438] + percentile_00_5: 152.83126831054688 + percentile_10_0: 266.6769104003906 + percentile_90_0: 476.2087707519531 + percentile_99_5: 634.5009155273438 + stdev: 87.85298156738281 + ncomponents: 1 + pixel_percentage: 0.02796884812414646 + shape: + - [20, 17, 12] + - image_intensity: + - max: 761.9340209960938 + mean: 380.1899108886719 + median: 361.9186706542969 + min: 57.145050048828125 + percentile: [158.7362518310547, 266.6769104003906, 539.7032470703125, 698.4395141601562] + percentile_00_5: 158.7362518310547 + percentile_10_0: 266.6769104003906 + percentile_90_0: 539.7032470703125 + percentile_99_5: 698.4395141601562 + stdev: 105.67789459228516 + ncomponents: 1 + pixel_percentage: 0.02648640051484108 + shape: + - [20, 24, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_253.nii.gz + image_foreground_stats: + intensity: + - max: 1118.748046875 + mean: 536.9090576171875 + median: 519.7333374023438 + min: 96.89944458007812 + percentile: [238.8130645751953, 378.7887268066406, 713.5322265625, 968.994384765625] + percentile_00_5: 238.8130645751953 + percentile_10_0: 378.7887268066406 + percentile_90_0: 713.5322265625 + percentile_99_5: 968.994384765625 + stdev: 136.1533966064453 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 31] + intensity: + - max: 3523.615966796875 + mean: 694.6358642578125 + median: 669.487060546875 + min: 0.0 + percentile: [52.85424041748047, 325.9344787597656, 1092.3209228515625, 1277.310791015625] + percentile_00_5: 52.85424041748047 + percentile_10_0: 325.9344787597656 + percentile_90_0: 1092.3209228515625 + percentile_99_5: 1277.310791015625 + stdev: 299.05560302734375 + shape: + - [34, 51, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_253.nii.gz + label_stats: + image_intensity: + - max: 1118.748046875 + mean: 536.9090576171875 + median: 519.7333374023438 + min: 96.89944458007812 + percentile: [238.8130645751953, 378.7887268066406, 713.5322265625, 968.994384765625] + percentile_00_5: 238.8130645751953 + percentile_10_0: 378.7887268066406 + percentile_90_0: 713.5322265625 + percentile_99_5: 968.994384765625 + stdev: 136.1533966064453 + label: + - image_intensity: + - max: 3523.615966796875 + mean: 706.71240234375 + median: 695.9141845703125 + min: 0.0 + percentile: [49.77102279663086, 308.31640625, 1101.1300048828125, 1286.119873046875] + percentile_00_5: 49.77102279663086 + percentile_10_0: 308.31640625 + percentile_90_0: 1101.1300048828125 + percentile_99_5: 1286.119873046875 + stdev: 304.6504211425781 + ncomponents: 1 + pixel_percentage: 0.9288797378540039 + shape: + - [34, 51, 31] + - image_intensity: + - max: 995.4215087890625 + mean: 529.69287109375 + median: 510.92431640625 + min: 96.89944458007812 + percentile: [223.92579650878906, 369.97967529296875, 713.5322265625, 924.94921875] + percentile_00_5: 223.92579650878906 + percentile_10_0: 369.97967529296875 + percentile_90_0: 713.5322265625 + percentile_99_5: 924.94921875 + stdev: 135.2327880859375 + ncomponents: 1 + pixel_percentage: 0.04358745366334915 + shape: + - [24, 19, 15] + - image_intensity: + - max: 1118.748046875 + mean: 548.3330078125 + median: 528.5424194335938 + min: 176.18080139160156 + percentile: [255.462158203125, 396.40679931640625, 722.34130859375, 1009.5598754882812] + percentile_00_5: 255.462158203125 + percentile_10_0: 396.40679931640625 + percentile_90_0: 722.34130859375 + percentile_99_5: 1009.5598754882812 + stdev: 136.82225036621094 + ncomponents: 1 + pixel_percentage: 0.02753283455967903 + shape: + - [18, 20, 14] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_222.nii.gz + image_foreground_stats: + intensity: + - max: 85.0 + mean: 42.53278732299805 + median: 42.0 + min: 11.0 + percentile: [14.0, 26.0, 60.0, 75.0] + percentile_00_5: 14.0 + percentile_10_0: 26.0 + percentile_90_0: 60.0 + percentile_99_5: 75.0 + stdev: 12.974384307861328 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 36] + intensity: + - max: 136.0 + mean: 55.98877716064453 + median: 55.0 + min: 3.0 + percentile: [8.0, 20.0, 90.0, 114.0] + percentile_00_5: 8.0 + percentile_10_0: 20.0 + percentile_90_0: 90.0 + percentile_99_5: 114.0 + stdev: 26.314069747924805 + shape: + - [34, 49, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_222.nii.gz + label_stats: + image_intensity: + - max: 85.0 + mean: 42.53278732299805 + median: 42.0 + min: 11.0 + percentile: [14.0, 26.0, 60.0, 75.0] + percentile_00_5: 14.0 + percentile_10_0: 26.0 + percentile_90_0: 60.0 + percentile_99_5: 75.0 + stdev: 12.974384307861328 + label: + - image_intensity: + - max: 136.0 + mean: 56.61915969848633 + median: 57.0 + min: 3.0 + percentile: [8.0, 20.0, 91.0, 114.0] + percentile_00_5: 8.0 + percentile_10_0: 20.0 + percentile_90_0: 91.0 + percentile_99_5: 114.0 + stdev: 26.610210418701172 + ncomponents: 1 + pixel_percentage: 0.9552487730979919 + shape: + - [34, 49, 36] + - image_intensity: + - max: 76.0 + mean: 39.69189453125 + median: 39.0 + min: 11.0 + percentile: [14.0, 24.0, 57.0, 69.0] + percentile_00_5: 14.0 + percentile_10_0: 24.0 + percentile_90_0: 57.0 + percentile_99_5: 69.0 + stdev: 12.116634368896484 + ncomponents: 1 + pixel_percentage: 0.02819461189210415 + shape: + - [21, 16, 13] + - image_intensity: + - max: 85.0 + mean: 47.3705940246582 + median: 47.0 + min: 12.0 + percentile: [14.0, 31.0, 65.0, 80.0] + percentile_00_5: 14.0 + percentile_10_0: 31.0 + percentile_90_0: 65.0 + percentile_99_5: 80.0 + stdev: 12.955172538757324 + ncomponents: 1 + pixel_percentage: 0.016556622460484505 + shape: + - [13, 17, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_095.nii.gz + image_foreground_stats: + intensity: + - max: 823.018798828125 + mean: 352.78875732421875 + median: 340.55950927734375 + min: 35.47494888305664 + percentile: [134.8048095703125, 241.22964477539062, 482.45928955078125, 653.3072509765625] + percentile_00_5: 134.8048095703125 + percentile_10_0: 241.22964477539062 + percentile_90_0: 482.45928955078125 + percentile_99_5: 653.3072509765625 + stdev: 97.66397857666016 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 39] + intensity: + - max: 1972.4071044921875 + mean: 474.8093566894531 + median: 482.45928955078125 + min: 0.0 + percentile: [35.47494888305664, 205.75469970703125, 723.68896484375, 872.6837158203125] + percentile_00_5: 35.47494888305664 + percentile_10_0: 205.75469970703125 + percentile_90_0: 723.68896484375 + percentile_99_5: 872.6837158203125 + stdev: 199.72964477539062 + shape: + - [34, 49, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_095.nii.gz + label_stats: + image_intensity: + - max: 823.018798828125 + mean: 352.78875732421875 + median: 340.55950927734375 + min: 35.47494888305664 + percentile: [134.8048095703125, 241.22964477539062, 482.45928955078125, 653.3072509765625] + percentile_00_5: 134.8048095703125 + percentile_10_0: 241.22964477539062 + percentile_90_0: 482.45928955078125 + percentile_99_5: 653.3072509765625 + stdev: 97.66397857666016 + label: + - image_intensity: + - max: 1972.4071044921875 + mean: 482.3572998046875 + median: 503.7442626953125 + min: 0.0 + percentile: [35.47494888305664, 198.6597137451172, 723.68896484375, 872.6837158203125] + percentile_00_5: 35.47494888305664 + percentile_10_0: 198.6597137451172 + percentile_90_0: 723.68896484375 + percentile_99_5: 872.6837158203125 + stdev: 201.96922302246094 + ncomponents: 1 + pixel_percentage: 0.941745936870575 + shape: + - [34, 49, 39] + - image_intensity: + - max: 652.7390747070312 + mean: 344.1150817871094 + median: 340.55950927734375 + min: 70.94989776611328 + percentile: [127.7098159790039, 234.13465881347656, 468.2693176269531, 567.5991821289062] + percentile_00_5: 127.7098159790039 + percentile_10_0: 234.13465881347656 + percentile_90_0: 468.2693176269531 + percentile_99_5: 567.5991821289062 + stdev: 89.3750991821289 + ncomponents: 1 + pixel_percentage: 0.033721182495355606 + shape: + - [20, 18, 15] + - image_intensity: + - max: 823.018798828125 + mean: 364.7109375 + median: 354.7494812011719 + min: 35.47494888305664 + percentile: [148.99478149414062, 241.22964477539062, 510.8392639160156, 703.1497192382812] + percentile_00_5: 148.99478149414062 + percentile_10_0: 241.22964477539062 + percentile_90_0: 510.8392639160156 + percentile_99_5: 703.1497192382812 + stdev: 106.88170623779297 + ncomponents: 1 + pixel_percentage: 0.02453288994729519 + shape: + - [17, 20, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_322.nii.gz + image_foreground_stats: + intensity: + - max: 771.893310546875 + mean: 339.6101379394531 + median: 322.1286926269531 + min: 72.93479919433594 + percentile: [139.7917022705078, 218.8043975830078, 480.1540832519531, 668.5689697265625] + percentile_00_5: 139.7917022705078 + percentile_10_0: 218.8043975830078 + percentile_90_0: 480.1540832519531 + percentile_99_5: 668.5689697265625 + stdev: 104.36428833007812 + image_stats: + channels: 1 + cropped_shape: + - [38, 47, 37] + intensity: + - max: 2467.62744140625 + mean: 415.7384033203125 + median: 425.4530029296875 + min: 0.0 + percentile: [24.311599731445312, 164.10330200195312, 638.1795043945312, 796.2048950195312] + percentile_00_5: 24.311599731445312 + percentile_10_0: 164.10330200195312 + percentile_90_0: 638.1795043945312 + percentile_99_5: 796.2048950195312 + stdev: 185.8555450439453 + shape: + - [38, 47, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_322.nii.gz + label_stats: + image_intensity: + - max: 771.893310546875 + mean: 339.6101379394531 + median: 322.1286926269531 + min: 72.93479919433594 + percentile: [139.7917022705078, 218.8043975830078, 480.1540832519531, 668.5689697265625] + percentile_00_5: 139.7917022705078 + percentile_10_0: 218.8043975830078 + percentile_90_0: 480.1540832519531 + percentile_99_5: 668.5689697265625 + stdev: 104.36428833007812 + label: + - image_intensity: + - max: 2467.62744140625 + mean: 419.9317932128906 + median: 431.5308837890625 + min: 0.0 + percentile: [24.311599731445312, 158.025390625, 644.2573852539062, 796.2048950195312] + percentile_00_5: 24.311599731445312 + percentile_10_0: 158.025390625 + percentile_90_0: 644.2573852539062 + percentile_99_5: 796.2048950195312 + stdev: 188.43621826171875 + ncomponents: 1 + pixel_percentage: 0.947792112827301 + shape: + - [38, 47, 37] + - image_intensity: + - max: 771.893310546875 + mean: 361.20355224609375 + median: 346.4403076171875 + min: 72.93479919433594 + percentile: [145.20101928710938, 243.11599731445312, 487.447265625, 681.3932495117188] + percentile_00_5: 145.20101928710938 + percentile_10_0: 243.11599731445312 + percentile_90_0: 487.447265625 + percentile_99_5: 681.3932495117188 + stdev: 100.3365249633789 + ncomponents: 1 + pixel_percentage: 0.029947640374302864 + shape: + - [24, 19, 15] + - image_intensity: + - max: 698.95849609375 + mean: 310.5596008300781 + median: 285.6612854003906 + min: 103.32429504394531 + percentile: [129.76316833496094, 194.4927978515625, 467.998291015625, 623.8965454101562] + percentile_00_5: 129.76316833496094 + percentile_10_0: 194.4927978515625 + percentile_90_0: 467.998291015625 + percentile_99_5: 623.8965454101562 + stdev: 102.61524200439453 + ncomponents: 1 + pixel_percentage: 0.02226022258400917 + shape: + - [21, 19, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_195.nii.gz + image_foreground_stats: + intensity: + - max: 391272.0 + mean: 184049.796875 + median: 176072.40625 + min: 48909.0 + percentile: [82493.1796875, 130424.0, 251066.203125, 344645.28125] + percentile_00_5: 82493.1796875 + percentile_10_0: 130424.0 + percentile_90_0: 251066.203125 + percentile_99_5: 344645.28125 + stdev: 48297.94921875 + image_stats: + channels: 1 + cropped_shape: + - [33, 53, 28] + intensity: + - max: 736895.625 + mean: 239347.421875 + median: 231502.609375 + min: 0.0 + percentile: [19563.6015625, 104339.203125, 378229.625, 446702.21875] + percentile_00_5: 19563.6015625 + percentile_10_0: 104339.203125 + percentile_90_0: 378229.625 + percentile_99_5: 446702.21875 + stdev: 104526.4921875 + shape: + - [33, 53, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_195.nii.gz + label_stats: + image_intensity: + - max: 391272.0 + mean: 184049.796875 + median: 176072.40625 + min: 48909.0 + percentile: [82493.1796875, 130424.0, 251066.203125, 344645.28125] + percentile_00_5: 82493.1796875 + percentile_10_0: 130424.0 + percentile_90_0: 251066.203125 + percentile_99_5: 344645.28125 + stdev: 48297.94921875 + label: + - image_intensity: + - max: 736895.625 + mean: 243815.328125 + median: 244545.0 + min: 0.0 + percentile: [16303.0, 101078.6015625, 381490.21875, 446702.21875] + percentile_00_5: 16303.0 + percentile_10_0: 101078.6015625 + percentile_90_0: 381490.21875 + percentile_99_5: 446702.21875 + stdev: 106550.734375 + ncomponents: 1 + pixel_percentage: 0.9252430200576782 + shape: + - [33, 53, 28] + - image_intensity: + - max: 345623.625 + mean: 188874.390625 + median: 182593.609375 + min: 48909.0 + percentile: [75482.890625, 136945.203125, 251066.203125, 315789.0625] + percentile_00_5: 75482.890625 + percentile_10_0: 136945.203125 + percentile_90_0: 251066.203125 + percentile_99_5: 315789.0625 + stdev: 45424.4296875 + ncomponents: 1 + pixel_percentage: 0.03738871216773987 + shape: + - [20, 19, 12] + - image_intensity: + - max: 391272.0 + mean: 179222.546875 + median: 169551.203125 + min: 65212.0 + percentile: [85248.390625, 127163.40625, 244545.0, 358666.0] + percentile_00_5: 85248.390625 + percentile_10_0: 127163.40625 + percentile_90_0: 244545.0 + percentile_99_5: 358666.0 + stdev: 50552.54296875 + ncomponents: 1 + pixel_percentage: 0.037368293851614 + shape: + - [21, 25, 15] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_341.nii.gz + image_foreground_stats: + intensity: + - max: 841.9711303710938 + mean: 419.8479919433594 + median: 406.2657775878906 + min: 64.76700592041016 + percentile: [192.38743591308594, 312.0592346191406, 553.4635009765625, 777.5864868164062] + percentile_00_5: 192.38743591308594 + percentile_10_0: 312.0592346191406 + percentile_90_0: 553.4635009765625 + percentile_99_5: 777.5864868164062 + stdev: 100.92493438720703 + image_stats: + channels: 1 + cropped_shape: + - [34, 48, 35] + intensity: + - max: 2066.65625 + mean: 557.1394653320312 + median: 571.1272583007812 + min: 0.0 + percentile: [35.32746124267578, 241.40431213378906, 841.9711303710938, 1006.8325805664062] + percentile_00_5: 35.32746124267578 + percentile_10_0: 241.40431213378906 + percentile_90_0: 841.9711303710938 + percentile_99_5: 1006.8325805664062 + stdev: 235.8335418701172 + shape: + - [34, 48, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_341.nii.gz + label_stats: + image_intensity: + - max: 841.9711303710938 + mean: 419.8479919433594 + median: 406.2657775878906 + min: 64.76700592041016 + percentile: [192.38743591308594, 312.0592346191406, 553.4635009765625, 777.5864868164062] + percentile_00_5: 192.38743591308594 + percentile_10_0: 312.0592346191406 + percentile_90_0: 553.4635009765625 + percentile_99_5: 777.5864868164062 + stdev: 100.92493438720703 + label: + - image_intensity: + - max: 2066.65625 + mean: 563.655029296875 + median: 588.791015625 + min: 0.0 + percentile: [35.32746124267578, 235.51638793945312, 847.8590087890625, 1012.7205200195312] + percentile_00_5: 35.32746124267578 + percentile_10_0: 235.51638793945312 + percentile_90_0: 847.8590087890625 + percentile_99_5: 1012.7205200195312 + stdev: 238.4042205810547 + ncomponents: 1 + pixel_percentage: 0.9546918869018555 + shape: + - [34, 48, 35] + - image_intensity: + - max: 712.4370727539062 + mean: 405.37664794921875 + median: 394.4899597167969 + min: 64.76700592041016 + percentile: [143.07620239257812, 306.17132568359375, 524.0239868164062, 661.5065307617188] + percentile_00_5: 143.07620239257812 + percentile_10_0: 306.17132568359375 + percentile_90_0: 524.0239868164062 + percentile_99_5: 661.5065307617188 + stdev: 87.95243835449219 + ncomponents: 1 + pixel_percentage: 0.02330182120203972 + shape: + - [19, 17, 12] + - image_intensity: + - max: 841.9711303710938 + mean: 435.17132568359375 + median: 412.1536865234375 + min: 82.43074035644531 + percentile: [200.18893432617188, 317.9471435546875, 588.791015625, 799.10693359375] + percentile_00_5: 200.18893432617188 + percentile_10_0: 317.9471435546875 + percentile_90_0: 588.791015625 + percentile_99_5: 799.10693359375 + stdev: 111.01235961914062 + ncomponents: 1 + pixel_percentage: 0.022006303071975708 + shape: + - [18, 22, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_070.nii.gz + image_foreground_stats: + intensity: + - max: 111.0 + mean: 58.20927429199219 + median: 58.0 + min: 12.0 + percentile: [25.0, 41.0, 75.0, 95.755126953125] + percentile_00_5: 25.0 + percentile_10_0: 41.0 + percentile_90_0: 75.0 + percentile_99_5: 95.755126953125 + stdev: 13.540565490722656 + image_stats: + channels: 1 + cropped_shape: + - [37, 50, 38] + intensity: + - max: 255.0 + mean: 74.82958984375 + median: 76.0 + min: 3.0 + percentile: [11.0, 31.0, 115.0, 145.0] + percentile_00_5: 11.0 + percentile_10_0: 31.0 + percentile_90_0: 115.0 + percentile_99_5: 145.0 + stdev: 32.01144790649414 + shape: + - [37, 50, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_070.nii.gz + label_stats: + image_intensity: + - max: 111.0 + mean: 58.20927429199219 + median: 58.0 + min: 12.0 + percentile: [25.0, 41.0, 75.0, 95.755126953125] + percentile_00_5: 25.0 + percentile_10_0: 41.0 + percentile_90_0: 75.0 + percentile_99_5: 95.755126953125 + stdev: 13.540565490722656 + label: + - image_intensity: + - max: 255.0 + mean: 75.68733215332031 + median: 78.0 + min: 3.0 + percentile: [11.0, 30.0, 116.0, 146.0] + percentile_00_5: 11.0 + percentile_10_0: 30.0 + percentile_90_0: 116.0 + percentile_99_5: 146.0 + stdev: 32.45248031616211 + ncomponents: 1 + pixel_percentage: 0.9509246349334717 + shape: + - [37, 50, 38] + - image_intensity: + - max: 105.0 + mean: 58.88337707519531 + median: 59.0 + min: 17.0 + percentile: [27.0, 41.0, 76.0, 94.0] + percentile_00_5: 27.0 + percentile_10_0: 41.0 + percentile_90_0: 76.0 + percentile_99_5: 94.0 + stdev: 13.366148948669434 + ncomponents: 1 + pixel_percentage: 0.026955902576446533 + shape: + - [23, 17, 14] + - image_intensity: + - max: 111.0 + mean: 57.387779235839844 + median: 57.0 + min: 12.0 + percentile: [24.0, 40.0, 74.0, 96.0] + percentile_00_5: 24.0 + percentile_10_0: 40.0 + percentile_90_0: 74.0 + percentile_99_5: 96.0 + stdev: 13.705378532409668 + ncomponents: 1 + pixel_percentage: 0.022119488567113876 + shape: + - [19, 21, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_170.nii.gz + image_foreground_stats: + intensity: + - max: 354846.28125 + mean: 174948.203125 + median: 169709.09375 + min: 27770.578125 + percentile: [89482.9765625, 129596.03125, 228335.875, 301326.3125] + percentile_00_5: 89482.9765625 + percentile_10_0: 129596.03125 + percentile_90_0: 228335.875 + percentile_99_5: 301326.3125 + stdev: 39547.90625 + image_stats: + channels: 1 + cropped_shape: + - [34, 48, 40] + intensity: + - max: 1144765.0 + mean: 232726.078125 + median: 237592.734375 + min: 0.0 + percentile: [12342.4794921875, 95654.21875, 357931.90625, 410387.4375] + percentile_00_5: 12342.4794921875 + percentile_10_0: 95654.21875 + percentile_90_0: 357931.90625 + percentile_99_5: 410387.4375 + stdev: 100169.7421875 + shape: + - [34, 48, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_170.nii.gz + label_stats: + image_intensity: + - max: 354846.28125 + mean: 174948.203125 + median: 169709.09375 + min: 27770.578125 + percentile: [89482.9765625, 129596.03125, 228335.875, 301326.3125] + percentile_00_5: 89482.9765625 + percentile_10_0: 129596.03125 + percentile_90_0: 228335.875 + percentile_99_5: 301326.3125 + stdev: 39547.90625 + label: + - image_intensity: + - max: 1144765.0 + mean: 235383.078125 + median: 243763.96875 + min: 0.0 + percentile: [12342.4794921875, 92568.59375, 357931.90625, 413473.0625] + percentile_00_5: 12342.4794921875 + percentile_10_0: 92568.59375 + percentile_90_0: 357931.90625 + percentile_99_5: 413473.0625 + stdev: 101305.984375 + ncomponents: 1 + pixel_percentage: 0.9560355544090271 + shape: + - [34, 48, 40] + - image_intensity: + - max: 305476.375 + mean: 181703.234375 + median: 178965.953125 + min: 61712.3984375 + percentile: [95654.21875, 135767.28125, 234507.109375, 277705.78125] + percentile_00_5: 95654.21875 + percentile_10_0: 135767.28125 + percentile_90_0: 234507.109375 + percentile_99_5: 277705.78125 + stdev: 37449.59765625 + ncomponents: 1 + pixel_percentage: 0.02008272148668766 + shape: + - [21, 13, 15] + - image_intensity: + - max: 354846.28125 + mean: 169267.734375 + median: 163537.859375 + min: 27770.578125 + percentile: [86397.359375, 123424.796875, 222164.625, 318466.71875] + percentile_00_5: 86397.359375 + percentile_10_0: 123424.796875 + percentile_90_0: 222164.625 + percentile_99_5: 318466.71875 + stdev: 40364.1015625 + ncomponents: 1 + pixel_percentage: 0.023881740868091583 + shape: + - [17, 22, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_101.nii.gz + image_foreground_stats: + intensity: + - max: 884.090087890625 + mean: 375.64373779296875 + median: 355.0853576660156 + min: 57.973121643066406 + percentile: [188.4126434326172, 268.1257019042969, 500.0181884765625, 731.91064453125] + percentile_00_5: 188.4126434326172 + percentile_10_0: 268.1257019042969 + percentile_90_0: 500.0181884765625 + percentile_99_5: 731.91064453125 + stdev: 98.09960174560547 + image_stats: + channels: 1 + cropped_shape: + - [36, 52, 32] + intensity: + - max: 2260.95166015625 + mean: 494.76104736328125 + median: 492.77154541015625 + min: 0.0 + percentile: [28.986560821533203, 195.65928649902344, 782.6371459960938, 905.8300170898438] + percentile_00_5: 28.986560821533203 + percentile_10_0: 195.65928649902344 + percentile_90_0: 782.6371459960938 + percentile_99_5: 905.8300170898438 + stdev: 222.32177734375 + shape: + - [36, 52, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_101.nii.gz + label_stats: + image_intensity: + - max: 884.090087890625 + mean: 375.64373779296875 + median: 355.0853576660156 + min: 57.973121643066406 + percentile: [188.4126434326172, 268.1257019042969, 500.0181884765625, 731.91064453125] + percentile_00_5: 188.4126434326172 + percentile_10_0: 268.1257019042969 + percentile_90_0: 500.0181884765625 + percentile_99_5: 731.91064453125 + stdev: 98.09960174560547 + label: + - image_intensity: + - max: 2260.95166015625 + mean: 502.3637390136719 + median: 514.511474609375 + min: 0.0 + percentile: [28.986560821533203, 188.4126434326172, 789.8837890625, 905.8300170898438] + percentile_00_5: 28.986560821533203 + percentile_10_0: 188.4126434326172 + percentile_90_0: 789.8837890625 + percentile_99_5: 905.8300170898438 + stdev: 225.84072875976562 + ncomponents: 1 + pixel_percentage: 0.9400039911270142 + shape: + - [36, 52, 32] + - image_intensity: + - max: 688.4308471679688 + mean: 369.95098876953125 + median: 355.0853576660156 + min: 57.973121643066406 + percentile: [188.4126434326172, 268.1257019042969, 492.77154541015625, 652.1976318359375] + percentile_00_5: 188.4126434326172 + percentile_10_0: 268.1257019042969 + percentile_90_0: 492.77154541015625 + percentile_99_5: 652.1976318359375 + stdev: 90.42042541503906 + ncomponents: 1 + pixel_percentage: 0.03151709586381912 + shape: + - [25, 19, 13] + - image_intensity: + - max: 884.090087890625 + mean: 381.94378662109375 + median: 362.3320007324219 + min: 115.94624328613281 + percentile: [195.65928649902344, 275.372314453125, 514.511474609375, 764.3391723632812] + percentile_00_5: 195.65928649902344 + percentile_10_0: 275.372314453125 + percentile_90_0: 514.511474609375 + percentile_99_5: 764.3391723632812 + stdev: 105.5940170288086 + ncomponents: 1 + pixel_percentage: 0.028478899970650673 + shape: + - [18, 22, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_001.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 51.38365173339844 + median: 49.0 + min: 21.0 + percentile: [32.0, 40.0, 67.0, 91.0] + percentile_00_5: 32.0 + percentile_10_0: 40.0 + percentile_90_0: 67.0 + percentile_99_5: 91.0 + stdev: 10.986161231994629 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 35] + intensity: + - max: 139.0 + mean: 63.521793365478516 + median: 63.0 + min: 2.0 + percentile: [7.0, 32.0, 96.0, 109.0] + percentile_00_5: 7.0 + percentile_10_0: 32.0 + percentile_90_0: 96.0 + percentile_99_5: 109.0 + stdev: 24.972482681274414 + shape: + - [35, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_001.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 51.38365173339844 + median: 49.0 + min: 21.0 + percentile: [32.0, 40.0, 67.0, 91.0] + percentile_00_5: 32.0 + percentile_10_0: 40.0 + percentile_90_0: 67.0 + percentile_99_5: 91.0 + stdev: 10.986161231994629 + label: + - image_intensity: + - max: 139.0 + mean: 64.1229248046875 + median: 65.0 + min: 2.0 + percentile: [7.0, 32.0, 97.0, 109.0] + percentile_00_5: 7.0 + percentile_10_0: 32.0 + percentile_90_0: 97.0 + percentile_99_5: 109.0 + stdev: 25.315486907958984 + ncomponents: 1 + pixel_percentage: 0.9528131484985352 + shape: + - [35, 51, 35] + - image_intensity: + - max: 86.0 + mean: 49.9108772277832 + median: 49.0 + min: 26.0 + percentile: [32.0, 40.0, 61.0, 79.385009765625] + percentile_00_5: 32.0 + percentile_10_0: 40.0 + percentile_90_0: 61.0 + percentile_99_5: 79.385009765625 + stdev: 8.771498680114746 + ncomponents: 1 + pixel_percentage: 0.021192476153373718 + shape: + - [19, 14, 12] + - image_intensity: + - max: 96.0 + mean: 52.58435821533203 + median: 50.0 + min: 21.0 + percentile: [33.0, 40.0, 71.0, 92.885009765625] + percentile_00_5: 33.0 + percentile_10_0: 40.0 + percentile_90_0: 71.0 + percentile_99_5: 92.885009765625 + stdev: 12.375747680664062 + ncomponents: 1 + pixel_percentage: 0.025994397699832916 + shape: + - [15, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_162.nii.gz + image_foreground_stats: + intensity: + - max: 82.0 + mean: 40.384796142578125 + median: 39.0 + min: 9.0 + percentile: [20.0, 30.0, 53.0, 76.0] + percentile_00_5: 20.0 + percentile_10_0: 30.0 + percentile_90_0: 53.0 + percentile_99_5: 76.0 + stdev: 9.902531623840332 + image_stats: + channels: 1 + cropped_shape: + - [38, 51, 37] + intensity: + - max: 255.0 + mean: 55.23063659667969 + median: 56.0 + min: 1.0 + percentile: [6.0, 20.0, 88.0, 101.0] + percentile_00_5: 6.0 + percentile_10_0: 20.0 + percentile_90_0: 88.0 + percentile_99_5: 101.0 + stdev: 25.886722564697266 + shape: + - [38, 51, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_162.nii.gz + label_stats: + image_intensity: + - max: 82.0 + mean: 40.384796142578125 + median: 39.0 + min: 9.0 + percentile: [20.0, 30.0, 53.0, 76.0] + percentile_00_5: 20.0 + percentile_10_0: 30.0 + percentile_90_0: 53.0 + percentile_99_5: 76.0 + stdev: 9.902531623840332 + label: + - image_intensity: + - max: 255.0 + mean: 55.97416687011719 + median: 58.0 + min: 1.0 + percentile: [6.0, 20.0, 88.0, 101.0] + percentile_00_5: 6.0 + percentile_10_0: 20.0 + percentile_90_0: 88.0 + percentile_99_5: 101.0 + stdev: 26.214157104492188 + ncomponents: 1 + pixel_percentage: 0.952305257320404 + shape: + - [38, 51, 37] + - image_intensity: + - max: 77.0 + mean: 41.52111053466797 + median: 41.0 + min: 17.0 + percentile: [23.994998931884766, 32.0, 53.0, 70.0] + percentile_00_5: 23.994998931884766 + percentile_10_0: 32.0 + percentile_90_0: 53.0 + percentile_99_5: 70.0 + stdev: 8.557167053222656 + ncomponents: 1 + pixel_percentage: 0.02510250173509121 + shape: + - [20, 17, 13] + - image_intensity: + - max: 82.0 + mean: 39.122222900390625 + median: 37.0 + min: 9.0 + percentile: [20.0, 28.0, 54.0, 78.0] + percentile_00_5: 20.0 + percentile_10_0: 28.0 + percentile_90_0: 54.0 + percentile_99_5: 78.0 + stdev: 11.073654174804688 + ncomponents: 1 + pixel_percentage: 0.022592252120375633 + shape: + - [18, 23, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_380.nii.gz + image_foreground_stats: + intensity: + - max: 1117.8118896484375 + mean: 424.15020751953125 + median: 407.202880859375 + min: 79.84370422363281 + percentile: [177.01348876953125, 287.43731689453125, 574.8746337890625, 834.2886962890625] + percentile_00_5: 177.01348876953125 + percentile_10_0: 287.43731689453125 + percentile_90_0: 574.8746337890625 + percentile_99_5: 834.2886962890625 + stdev: 120.41974639892578 + image_stats: + channels: 1 + cropped_shape: + - [35, 46, 42] + intensity: + - max: 2882.357666015625 + mean: 583.3995971679688 + median: 614.7965087890625 + min: 0.0 + percentile: [31.937480926513672, 207.5936279296875, 910.2182006835938, 1045.9525146484375] + percentile_00_5: 31.937480926513672 + percentile_10_0: 207.5936279296875 + percentile_90_0: 910.2182006835938 + percentile_99_5: 1045.9525146484375 + stdev: 265.29473876953125 + shape: + - [35, 46, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_380.nii.gz + label_stats: + image_intensity: + - max: 1117.8118896484375 + mean: 424.15020751953125 + median: 407.202880859375 + min: 79.84370422363281 + percentile: [177.01348876953125, 287.43731689453125, 574.8746337890625, 834.2886962890625] + percentile_00_5: 177.01348876953125 + percentile_10_0: 287.43731689453125 + percentile_90_0: 574.8746337890625 + percentile_99_5: 834.2886962890625 + stdev: 120.41974639892578 + label: + - image_intensity: + - max: 2882.357666015625 + mean: 591.9221801757812 + median: 638.7496337890625 + min: 0.0 + percentile: [31.937480926513672, 199.6092529296875, 910.2182006835938, 1053.9368896484375] + percentile_00_5: 31.937480926513672 + percentile_10_0: 199.6092529296875 + percentile_90_0: 910.2182006835938 + percentile_99_5: 1053.9368896484375 + stdev: 268.2200927734375 + ncomponents: 1 + pixel_percentage: 0.9492014050483704 + shape: + - [35, 46, 42] + - image_intensity: + - max: 902.2338256835938 + mean: 438.2311706542969 + median: 423.171630859375 + min: 103.79681396484375 + percentile: [188.79042053222656, 303.40606689453125, 590.8433837890625, 801.2713012695312] + percentile_00_5: 188.79042053222656 + percentile_10_0: 303.40606689453125 + percentile_90_0: 590.8433837890625 + percentile_99_5: 801.2713012695312 + stdev: 119.11589813232422 + ncomponents: 1 + pixel_percentage: 0.0255841463804245 + shape: + - [24, 16, 15] + - image_intensity: + - max: 1117.8118896484375 + mean: 409.8628234863281 + median: 391.234130859375 + min: 79.84370422363281 + percentile: [167.67176818847656, 279.4529724121094, 558.9059448242188, 846.0235595703125] + percentile_00_5: 167.67176818847656 + percentile_10_0: 279.4529724121094 + percentile_90_0: 558.9059448242188 + percentile_99_5: 846.0235595703125 + stdev: 120.05208587646484 + ncomponents: 1 + pixel_percentage: 0.025214433670043945 + shape: + - [21, 20, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_037.nii.gz + image_foreground_stats: + intensity: + - max: 663.42236328125 + mean: 319.8084716796875 + median: 304.96026611328125 + min: 58.85198211669922 + percentile: [133.593994140625, 230.0577392578125, 433.3645935058594, 594.0306396484375] + percentile_00_5: 133.593994140625 + percentile_10_0: 230.0577392578125 + percentile_90_0: 433.3645935058594 + percentile_99_5: 594.0306396484375 + stdev: 85.11212158203125 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 32] + intensity: + - max: 1476.6497802734375 + mean: 380.85552978515625 + median: 379.86279296875 + min: 0.0 + percentile: [21.400720596313477, 187.2563018798828, 577.8194580078125, 668.7725219726562] + percentile_00_5: 21.400720596313477 + percentile_10_0: 187.2563018798828 + percentile_90_0: 577.8194580078125 + percentile_99_5: 668.7725219726562 + stdev: 151.89596557617188 + shape: + - [34, 51, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_037.nii.gz + label_stats: + image_intensity: + - max: 663.42236328125 + mean: 319.8084716796875 + median: 304.96026611328125 + min: 58.85198211669922 + percentile: [133.593994140625, 230.0577392578125, 433.3645935058594, 594.0306396484375] + percentile_00_5: 133.593994140625 + percentile_10_0: 230.0577392578125 + percentile_90_0: 433.3645935058594 + percentile_99_5: 594.0306396484375 + stdev: 85.11212158203125 + label: + - image_intensity: + - max: 1476.6497802734375 + mean: 384.5854187011719 + median: 385.2129821777344 + min: 0.0 + percentile: [21.400720596313477, 181.9061279296875, 577.8194580078125, 668.7725219726562] + percentile_00_5: 21.400720596313477 + percentile_10_0: 181.9061279296875 + percentile_90_0: 577.8194580078125 + percentile_99_5: 668.7725219726562 + stdev: 154.26551818847656 + ncomponents: 1 + pixel_percentage: 0.9424200057983398 + shape: + - [34, 51, 32] + - image_intensity: + - max: 663.42236328125 + mean: 329.8294677734375 + median: 315.6606140136719 + min: 96.3032455444336 + percentile: [187.2563018798828, 246.10829162597656, 438.71478271484375, 599.2201538085938] + percentile_00_5: 187.2563018798828 + percentile_10_0: 246.10829162597656 + percentile_90_0: 438.71478271484375 + percentile_99_5: 599.2201538085938 + stdev: 81.60671997070312 + ncomponents: 1 + pixel_percentage: 0.02843858115375042 + shape: + - [22, 19, 14] + - image_intensity: + - max: 631.3212280273438 + mean: 310.02923583984375 + median: 299.6100769042969 + min: 58.85198211669922 + percentile: [118.1319808959961, 219.35739135742188, 433.3645935058594, 588.092041015625] + percentile_00_5: 118.1319808959961 + percentile_10_0: 219.35739135742188 + percentile_90_0: 433.3645935058594 + percentile_99_5: 588.092041015625 + stdev: 87.29698181152344 + ncomponents: 1 + pixel_percentage: 0.029141435399651527 + shape: + - [23, 21, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_280.nii.gz + image_foreground_stats: + intensity: + - max: 722.8124389648438 + mean: 334.44183349609375 + median: 326.080810546875 + min: 5.434679985046387 + percentile: [114.12828063964844, 217.38720703125, 467.3824768066406, 608.6841430664062] + percentile_00_5: 114.12828063964844 + percentile_10_0: 217.38720703125 + percentile_90_0: 467.3824768066406 + percentile_99_5: 608.6841430664062 + stdev: 98.31048583984375 + image_stats: + channels: 1 + cropped_shape: + - [37, 47, 32] + intensity: + - max: 1929.3114013671875 + mean: 395.4591064453125 + median: 418.4703674316406 + min: 0.0 + percentile: [16.304039001464844, 119.56295776367188, 619.5535278320312, 760.855224609375] + percentile_00_5: 16.304039001464844 + percentile_10_0: 119.56295776367188 + percentile_90_0: 619.5535278320312 + percentile_99_5: 760.855224609375 + stdev: 185.5244140625 + shape: + - [37, 47, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_280.nii.gz + label_stats: + image_intensity: + - max: 722.8124389648438 + mean: 334.44183349609375 + median: 326.080810546875 + min: 5.434679985046387 + percentile: [114.12828063964844, 217.38720703125, 467.3824768066406, 608.6841430664062] + percentile_00_5: 114.12828063964844 + percentile_10_0: 217.38720703125 + percentile_90_0: 467.3824768066406 + percentile_99_5: 608.6841430664062 + stdev: 98.31048583984375 + label: + - image_intensity: + - max: 1929.3114013671875 + mean: 398.46539306640625 + median: 429.3397216796875 + min: 0.0 + percentile: [16.304039001464844, 114.12828063964844, 619.5535278320312, 760.855224609375] + percentile_00_5: 16.304039001464844 + percentile_10_0: 114.12828063964844 + percentile_90_0: 619.5535278320312 + percentile_99_5: 760.855224609375 + stdev: 188.27230834960938 + ncomponents: 1 + pixel_percentage: 0.9530441164970398 + shape: + - [37, 47, 32] + - image_intensity: + - max: 722.8124389648438 + mean: 349.1791687011719 + median: 342.38482666015625 + min: 5.434679985046387 + percentile: [130.43231201171875, 233.6912384033203, 483.6865234375, 615.04296875] + percentile_00_5: 130.43231201171875 + percentile_10_0: 233.6912384033203 + percentile_90_0: 483.6865234375 + percentile_99_5: 615.04296875 + stdev: 96.939697265625 + ncomponents: 1 + pixel_percentage: 0.02456512302160263 + shape: + - [20, 16, 12] + - image_intensity: + - max: 695.6390380859375 + mean: 318.2733459472656 + median: 304.3420715332031 + min: 76.08551788330078 + percentile: [104.48171997070312, 203.80050659179688, 451.07843017578125, 581.5107421875] + percentile_00_5: 104.48171997070312 + percentile_10_0: 203.80050659179688 + percentile_90_0: 451.07843017578125 + percentile_99_5: 581.5107421875 + stdev: 97.25684356689453 + ncomponents: 1 + pixel_percentage: 0.022390741854906082 + shape: + - [16, 21, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_154.nii.gz + image_foreground_stats: + intensity: + - max: 82.0 + mean: 42.10561752319336 + median: 40.0 + min: 20.0 + percentile: [25.0, 32.0, 55.0, 72.719970703125] + percentile_00_5: 25.0 + percentile_10_0: 32.0 + percentile_90_0: 55.0 + percentile_99_5: 72.719970703125 + stdev: 9.343899726867676 + image_stats: + channels: 1 + cropped_shape: + - [35, 46, 42] + intensity: + - max: 218.0 + mean: 58.45921325683594 + median: 61.0 + min: 2.0 + percentile: [7.0, 22.0, 90.0, 100.0] + percentile_00_5: 7.0 + percentile_10_0: 22.0 + percentile_90_0: 90.0 + percentile_99_5: 100.0 + stdev: 25.572208404541016 + shape: + - [35, 46, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_154.nii.gz + label_stats: + image_intensity: + - max: 82.0 + mean: 42.10561752319336 + median: 40.0 + min: 20.0 + percentile: [25.0, 32.0, 55.0, 72.719970703125] + percentile_00_5: 25.0 + percentile_10_0: 32.0 + percentile_90_0: 55.0 + percentile_99_5: 72.719970703125 + stdev: 9.343899726867676 + label: + - image_intensity: + - max: 218.0 + mean: 59.28676223754883 + median: 63.0 + min: 2.0 + percentile: [6.0, 21.0, 91.0, 100.0] + percentile_00_5: 6.0 + percentile_10_0: 21.0 + percentile_90_0: 91.0 + percentile_99_5: 100.0 + stdev: 25.85329818725586 + ncomponents: 1 + pixel_percentage: 0.9518337845802307 + shape: + - [35, 46, 42] + - image_intensity: + - max: 81.0 + mean: 43.32270050048828 + median: 42.0 + min: 20.0 + percentile: [27.0, 34.0, 55.0, 72.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 55.0 + percentile_99_5: 72.0 + stdev: 8.740777015686035 + ncomponents: 1 + pixel_percentage: 0.023646850138902664 + shape: + - [21, 13, 16] + - image_intensity: + - max: 82.0 + mean: 40.931846618652344 + median: 38.0 + min: 24.0 + percentile: [25.0, 31.0, 55.0, 73.0] + percentile_00_5: 25.0 + percentile_10_0: 31.0 + percentile_90_0: 55.0 + percentile_99_5: 73.0 + stdev: 9.747886657714844 + ncomponents: 1 + pixel_percentage: 0.02451937273144722 + shape: + - [19, 23, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_058.nii.gz + image_foreground_stats: + intensity: + - max: 688.5119018554688 + mean: 310.172607421875 + median: 299.3529968261719 + min: 29.935300827026367 + percentile: [101.78002166748047, 209.54710388183594, 419.0942077636719, 582.9607543945312] + percentile_00_5: 101.78002166748047 + percentile_10_0: 209.54710388183594 + percentile_90_0: 419.0942077636719 + percentile_99_5: 582.9607543945312 + stdev: 84.84986877441406 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 36] + intensity: + - max: 1179.4508056640625 + mean: 403.25250244140625 + median: 413.1071472167969 + min: 0.0 + percentile: [17.961179733276367, 125.72826385498047, 640.6154174804688, 724.4342651367188] + percentile_00_5: 17.961179733276367 + percentile_10_0: 125.72826385498047 + percentile_90_0: 640.6154174804688 + percentile_99_5: 724.4342651367188 + stdev: 188.4087677001953 + shape: + - [34, 53, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_058.nii.gz + label_stats: + image_intensity: + - max: 688.5119018554688 + mean: 310.172607421875 + median: 299.3529968261719 + min: 29.935300827026367 + percentile: [101.78002166748047, 209.54710388183594, 419.0942077636719, 582.9607543945312] + percentile_00_5: 101.78002166748047 + percentile_10_0: 209.54710388183594 + percentile_90_0: 419.0942077636719 + percentile_99_5: 582.9607543945312 + stdev: 84.84986877441406 + label: + - image_intensity: + - max: 1179.4508056640625 + mean: 407.9664001464844 + median: 425.0812683105469 + min: 0.0 + percentile: [17.961179733276367, 119.74120330810547, 640.6154174804688, 724.4342651367188] + percentile_00_5: 17.961179733276367 + percentile_10_0: 119.74120330810547 + percentile_90_0: 640.6154174804688 + percentile_99_5: 724.4342651367188 + stdev: 190.97122192382812 + ncomponents: 1 + pixel_percentage: 0.951797366142273 + shape: + - [34, 53, 36] + - image_intensity: + - max: 544.8224487304688 + mean: 317.807861328125 + median: 311.3271179199219 + min: 53.883541107177734 + percentile: [107.76708221435547, 227.50828552246094, 425.0812683105469, 510.9055480957031] + percentile_00_5: 107.76708221435547 + percentile_10_0: 227.50828552246094 + percentile_90_0: 425.0812683105469 + percentile_99_5: 510.9055480957031 + stdev: 77.63871765136719 + ncomponents: 1 + pixel_percentage: 0.02056357078254223 + shape: + - [22, 15, 13] + - image_intensity: + - max: 688.5119018554688 + mean: 304.4919128417969 + median: 293.3659362792969 + min: 29.935300827026367 + percentile: [101.78002166748047, 203.56004333496094, 419.0942077636719, 605.1724853515625] + percentile_00_5: 101.78002166748047 + percentile_10_0: 203.56004333496094 + percentile_90_0: 419.0942077636719 + percentile_99_5: 605.1724853515625 + stdev: 89.41828155517578 + ncomponents: 1 + pixel_percentage: 0.02763904258608818 + shape: + - [21, 27, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_158.nii.gz + image_foreground_stats: + intensity: + - max: 796.8997192382812 + mean: 371.3193054199219 + median: 359.16607666015625 + min: 61.73167037963867 + percentile: [168.35910034179688, 258.1506042480469, 505.0773010253906, 695.5759887695312] + percentile_00_5: 168.35910034179688 + percentile_10_0: 258.1506042480469 + percentile_90_0: 505.0773010253906 + percentile_99_5: 695.5759887695312 + stdev: 99.31587982177734 + image_stats: + channels: 1 + cropped_shape: + - [38, 52, 36] + intensity: + - max: 3137.09130859375 + mean: 487.7275085449219 + median: 499.46533203125 + min: 0.0 + percentile: [22.447879791259766, 151.523193359375, 768.8399047851562, 897.9151611328125] + percentile_00_5: 22.447879791259766 + percentile_10_0: 151.523193359375 + percentile_90_0: 768.8399047851562 + percentile_99_5: 897.9151611328125 + stdev: 230.8609161376953 + shape: + - [38, 52, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_158.nii.gz + label_stats: + image_intensity: + - max: 796.8997192382812 + mean: 371.3193054199219 + median: 359.16607666015625 + min: 61.73167037963867 + percentile: [168.35910034179688, 258.1506042480469, 505.0773010253906, 695.5759887695312] + percentile_00_5: 168.35910034179688 + percentile_10_0: 258.1506042480469 + percentile_90_0: 505.0773010253906 + percentile_99_5: 695.5759887695312 + stdev: 99.31587982177734 + label: + - image_intensity: + - max: 3137.09130859375 + mean: 493.59222412109375 + median: 516.3012084960938 + min: 0.0 + percentile: [22.447879791259766, 145.91122436523438, 774.4518432617188, 897.9151611328125] + percentile_00_5: 22.447879791259766 + percentile_10_0: 145.91122436523438 + percentile_90_0: 774.4518432617188 + percentile_99_5: 897.9151611328125 + stdev: 234.02536010742188 + ncomponents: 1 + pixel_percentage: 0.9520355463027954 + shape: + - [38, 52, 36] + - image_intensity: + - max: 796.8997192382812 + mean: 386.9444274902344 + median: 376.0019836425781 + min: 117.85137176513672 + percentile: [173.9710693359375, 280.5985107421875, 510.68927001953125, 679.04833984375] + percentile_00_5: 173.9710693359375 + percentile_10_0: 280.5985107421875 + percentile_90_0: 510.68927001953125 + percentile_99_5: 679.04833984375 + stdev: 92.32966613769531 + ncomponents: 1 + pixel_percentage: 0.026343904435634613 + shape: + - [25, 16, 13] + - image_intensity: + - max: 746.3920288085938 + mean: 352.2806701660156 + median: 331.1062316894531 + min: 61.73167037963867 + percentile: [151.523193359375, 241.31471252441406, 505.0773010253906, 703.2643432617188] + percentile_00_5: 151.523193359375 + percentile_10_0: 241.31471252441406 + percentile_90_0: 505.0773010253906 + percentile_99_5: 703.2643432617188 + stdev: 104.09162902832031 + ncomponents: 1 + pixel_percentage: 0.021620558574795723 + shape: + - [23, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_292.nii.gz + image_foreground_stats: + intensity: + - max: 605.1464233398438 + mean: 291.65008544921875 + median: 283.4920349121094 + min: 27.25885009765625 + percentile: [100.25804138183594, 190.81195068359375, 403.43096923828125, 537.599609375] + percentile_00_5: 100.25804138183594 + percentile_10_0: 190.81195068359375 + percentile_90_0: 403.43096923828125 + percentile_99_5: 537.599609375 + stdev: 83.40442657470703 + image_stats: + channels: 1 + cropped_shape: + - [38, 52, 33] + intensity: + - max: 1924.4747314453125 + mean: 386.9342041015625 + median: 381.6239013671875 + min: 0.0 + percentile: [27.25885009765625, 163.5531005859375, 610.5982055664062, 725.0853881835938] + percentile_00_5: 27.25885009765625 + percentile_10_0: 163.5531005859375 + percentile_90_0: 610.5982055664062 + percentile_99_5: 725.0853881835938 + stdev: 171.26904296875 + shape: + - [38, 52, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_292.nii.gz + label_stats: + image_intensity: + - max: 605.1464233398438 + mean: 291.65008544921875 + median: 283.4920349121094 + min: 27.25885009765625 + percentile: [100.25804138183594, 190.81195068359375, 403.43096923828125, 537.599609375] + percentile_00_5: 100.25804138183594 + percentile_10_0: 190.81195068359375 + percentile_90_0: 403.43096923828125 + percentile_99_5: 537.599609375 + stdev: 83.40442657470703 + label: + - image_intensity: + - max: 1924.4747314453125 + mean: 392.3043518066406 + median: 392.5274353027344 + min: 0.0 + percentile: [27.25885009765625, 163.5531005859375, 616.0499877929688, 725.0853881835938] + percentile_00_5: 27.25885009765625 + percentile_10_0: 163.5531005859375 + percentile_90_0: 616.0499877929688 + percentile_99_5: 725.0853881835938 + stdev: 173.36001586914062 + ncomponents: 1 + pixel_percentage: 0.9466476440429688 + shape: + - [38, 52, 33] + - image_intensity: + - max: 605.1464233398438 + mean: 292.00201416015625 + median: 283.4920349121094 + min: 81.77655029296875 + percentile: [114.48716735839844, 196.2637176513672, 397.97918701171875, 531.2747192382812] + percentile_00_5: 114.48716735839844 + percentile_10_0: 196.2637176513672 + percentile_90_0: 397.97918701171875 + percentile_99_5: 531.2747192382812 + stdev: 80.0480728149414 + ncomponents: 1 + pixel_percentage: 0.02930621989071369 + shape: + - [25, 18, 14] + - image_intensity: + - max: 599.6947021484375 + mean: 291.2211608886719 + median: 283.4920349121094 + min: 27.25885009765625 + percentile: [86.32877349853516, 185.36016845703125, 408.88275146484375, 546.0767211914062] + percentile_00_5: 86.32877349853516 + percentile_10_0: 185.36016845703125 + percentile_90_0: 408.88275146484375 + percentile_99_5: 546.0767211914062 + stdev: 87.3188247680664 + ncomponents: 1 + pixel_percentage: 0.02404612861573696 + shape: + - [18, 24, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_025.nii.gz + image_foreground_stats: + intensity: + - max: 822.6514892578125 + mean: 395.1009826660156 + median: 380.6297912597656 + min: 85.94866180419922 + percentile: [196.45408630371094, 300.8203125, 509.55279541015625, 689.8914794921875] + percentile_00_5: 196.45408630371094 + percentile_10_0: 300.8203125 + percentile_90_0: 509.55279541015625 + percentile_99_5: 689.8914794921875 + stdev: 87.15746307373047 + image_stats: + channels: 1 + cropped_shape: + - [35, 48, 35] + intensity: + - max: 2510.9287109375 + mean: 513.5413208007812 + median: 515.6919555664062 + min: 0.0 + percentile: [24.556760787963867, 227.15003967285156, 785.8163452148438, 896.32177734375] + percentile_00_5: 24.556760787963867 + percentile_10_0: 227.15003967285156 + percentile_90_0: 785.8163452148438 + percentile_99_5: 896.32177734375 + stdev: 219.72698974609375 + shape: + - [35, 48, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_025.nii.gz + label_stats: + image_intensity: + - max: 822.6514892578125 + mean: 395.1009826660156 + median: 380.6297912597656 + min: 85.94866180419922 + percentile: [196.45408630371094, 300.8203125, 509.55279541015625, 689.8914794921875] + percentile_00_5: 196.45408630371094 + percentile_10_0: 300.8203125 + percentile_90_0: 509.55279541015625 + percentile_99_5: 689.8914794921875 + stdev: 87.15746307373047 + label: + - image_intensity: + - max: 2510.9287109375 + mean: 520.6425170898438 + median: 540.2487182617188 + min: 0.0 + percentile: [24.556760787963867, 221.01084899902344, 791.9555053710938, 896.32177734375] + percentile_00_5: 24.556760787963867 + percentile_10_0: 221.01084899902344 + percentile_90_0: 791.9555053710938 + percentile_99_5: 896.32177734375 + stdev: 223.2211456298828 + ncomponents: 1 + pixel_percentage: 0.9434353709220886 + shape: + - [35, 48, 35] + - image_intensity: + - max: 742.842041015625 + mean: 402.57672119140625 + median: 392.9081726074219 + min: 165.7581329345703 + percentile: [211.64857482910156, 306.9595031738281, 515.6919555664062, 656.8933715820312] + percentile_00_5: 211.64857482910156 + percentile_10_0: 306.9595031738281 + percentile_90_0: 515.6919555664062 + percentile_99_5: 656.8933715820312 + stdev: 81.44914245605469 + ncomponents: 1 + pixel_percentage: 0.03224489837884903 + shape: + - [24, 18, 15] + - image_intensity: + - max: 822.6514892578125 + mean: 385.1891174316406 + median: 368.3514099121094 + min: 85.94866180419922 + percentile: [190.3148956298828, 288.54193115234375, 503.4136047363281, 728.7830810546875] + percentile_00_5: 190.3148956298828 + percentile_10_0: 288.54193115234375 + percentile_90_0: 503.4136047363281 + percentile_99_5: 728.7830810546875 + stdev: 93.27474975585938 + ncomponents: 1 + pixel_percentage: 0.02431972697377205 + shape: + - [22, 20, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_125.nii.gz + image_foreground_stats: + intensity: + - max: 98.0 + mean: 51.966617584228516 + median: 50.0 + min: 24.0 + percentile: [34.0, 41.0, 66.0, 86.0] + percentile_00_5: 34.0 + percentile_10_0: 41.0 + percentile_90_0: 66.0 + percentile_99_5: 86.0 + stdev: 10.361655235290527 + image_stats: + channels: 1 + cropped_shape: + - [43, 42, 39] + intensity: + - max: 254.0 + mean: 68.65299224853516 + median: 69.0 + min: 2.0 + percentile: [7.0, 28.0, 107.0, 132.0] + percentile_00_5: 7.0 + percentile_10_0: 28.0 + percentile_90_0: 107.0 + percentile_99_5: 132.0 + stdev: 29.863319396972656 + shape: + - [43, 42, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_125.nii.gz + label_stats: + image_intensity: + - max: 98.0 + mean: 51.966617584228516 + median: 50.0 + min: 24.0 + percentile: [34.0, 41.0, 66.0, 86.0] + percentile_00_5: 34.0 + percentile_10_0: 41.0 + percentile_90_0: 66.0 + percentile_99_5: 86.0 + stdev: 10.361655235290527 + label: + - image_intensity: + - max: 254.0 + mean: 69.3248062133789 + median: 70.0 + min: 2.0 + percentile: [7.0, 27.0, 108.0, 132.0] + percentile_00_5: 7.0 + percentile_10_0: 27.0 + percentile_90_0: 108.0 + percentile_99_5: 132.0 + stdev: 30.19502067565918 + ncomponents: 1 + pixel_percentage: 0.9612970948219299 + shape: + - [43, 42, 39] + - image_intensity: + - max: 98.0 + mean: 51.78635787963867 + median: 50.0 + min: 27.0 + percentile: [33.279998779296875, 41.0, 65.0, 87.43994140625] + percentile_00_5: 33.279998779296875 + percentile_10_0: 41.0 + percentile_90_0: 65.0 + percentile_99_5: 87.43994140625 + stdev: 10.17601203918457 + ncomponents: 1 + pixel_percentage: 0.023525569587945938 + shape: + - [18, 14, 16] + - image_intensity: + - max: 93.0 + mean: 52.24602508544922 + median: 49.0 + min: 24.0 + percentile: [35.0, 42.0, 69.0, 85.0] + percentile_00_5: 35.0 + percentile_10_0: 42.0 + percentile_90_0: 69.0 + percentile_99_5: 85.0 + stdev: 10.636977195739746 + ncomponents: 1 + pixel_percentage: 0.015177329070866108 + shape: + - [17, 15, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_046.nii.gz + image_foreground_stats: + intensity: + - max: 912.9042358398438 + mean: 366.8056945800781 + median: 351.11700439453125 + min: 28.089359283447266 + percentile: [154.49148559570312, 252.8042449951172, 505.6084899902344, 692.8709106445312] + percentile_00_5: 154.49148559570312 + percentile_10_0: 252.8042449951172 + percentile_90_0: 505.6084899902344 + percentile_99_5: 692.8709106445312 + stdev: 101.17153930664062 + image_stats: + channels: 1 + cropped_shape: + - [36, 49, 38] + intensity: + - max: 3164.734619140625 + mean: 494.99981689453125 + median: 529.0162963867188 + min: 0.0 + percentile: [28.089359283447266, 201.3070831298828, 744.3680419921875, 837.999267578125] + percentile_00_5: 28.089359283447266 + percentile_10_0: 201.3070831298828 + percentile_90_0: 744.3680419921875 + percentile_99_5: 837.999267578125 + stdev: 211.18258666992188 + shape: + - [36, 49, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_046.nii.gz + label_stats: + image_intensity: + - max: 912.9042358398438 + mean: 366.8056945800781 + median: 351.11700439453125 + min: 28.089359283447266 + percentile: [154.49148559570312, 252.8042449951172, 505.6084899902344, 692.8709106445312] + percentile_00_5: 154.49148559570312 + percentile_10_0: 252.8042449951172 + percentile_90_0: 505.6084899902344 + percentile_99_5: 692.8709106445312 + stdev: 101.17153930664062 + label: + - image_intensity: + - max: 3164.734619140625 + mean: 501.6207275390625 + median: 543.0609741210938 + min: 0.0 + percentile: [28.089359283447266, 196.62551879882812, 749.0496215820312, 837.999267578125] + percentile_00_5: 28.089359283447266 + percentile_10_0: 196.62551879882812 + percentile_90_0: 749.0496215820312 + percentile_99_5: 837.999267578125 + stdev: 213.2609100341797 + ncomponents: 1 + pixel_percentage: 0.9508891105651855 + shape: + - [36, 49, 38] + - image_intensity: + - max: 912.9042358398438 + mean: 369.1894226074219 + median: 355.7985534667969 + min: 28.089359283447266 + percentile: [150.04400634765625, 252.8042449951172, 510.2900390625, 716.2786865234375] + percentile_00_5: 150.04400634765625 + percentile_10_0: 252.8042449951172 + percentile_90_0: 510.2900390625 + percentile_99_5: 716.2786865234375 + stdev: 104.2449951171875 + ncomponents: 1 + pixel_percentage: 0.02403329685330391 + shape: + - [22, 17, 14] + - image_intensity: + - max: 697.5524291992188 + mean: 364.5211181640625 + median: 351.11700439453125 + min: 79.58651733398438 + percentile: [156.36410522460938, 252.8042449951172, 496.245361328125, 674.1446533203125] + percentile_00_5: 156.36410522460938 + percentile_10_0: 252.8042449951172 + percentile_90_0: 496.245361328125 + percentile_99_5: 674.1446533203125 + stdev: 98.08143615722656 + ncomponents: 1 + pixel_percentage: 0.0250775758177042 + shape: + - [23, 23, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_146.nii.gz + image_foreground_stats: + intensity: + - max: 308881.15625 + mean: 135703.203125 + median: 132377.640625 + min: 2757.867431640625 + percentile: [37520.78515625, 93767.4921875, 182019.25, 250965.9375] + percentile_00_5: 37520.78515625 + percentile_10_0: 93767.4921875 + percentile_90_0: 182019.25 + percentile_99_5: 250965.9375 + stdev: 36209.54296875 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 32] + intensity: + - max: 954222.125 + mean: 186644.140625 + median: 176503.515625 + min: 0.0 + percentile: [8273.6025390625, 52399.48046875, 322670.5, 372312.09375] + percentile_00_5: 8273.6025390625 + percentile_10_0: 52399.48046875 + percentile_90_0: 322670.5 + percentile_99_5: 372312.09375 + stdev: 99301.734375 + shape: + - [36, 51, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_146.nii.gz + label_stats: + image_intensity: + - max: 308881.15625 + mean: 135703.203125 + median: 132377.640625 + min: 2757.867431640625 + percentile: [37520.78515625, 93767.4921875, 182019.25, 250965.9375] + percentile_00_5: 37520.78515625 + percentile_10_0: 93767.4921875 + percentile_90_0: 182019.25 + percentile_99_5: 250965.9375 + stdev: 36209.54296875 + label: + - image_intensity: + - max: 954222.125 + mean: 189892.640625 + median: 184777.125 + min: 0.0 + percentile: [8273.6025390625, 52399.48046875, 325428.34375, 372312.09375] + percentile_00_5: 8273.6025390625 + percentile_10_0: 52399.48046875 + percentile_90_0: 325428.34375 + percentile_99_5: 372312.09375 + stdev: 101143.5234375 + ncomponents: 1 + pixel_percentage: 0.9400531053543091 + shape: + - [36, 51, 32] + - image_intensity: + - max: 275786.75 + mean: 135434.953125 + median: 135135.5 + min: 2757.867431640625 + percentile: [33094.41015625, 91009.625, 182019.25, 231660.859375] + percentile_00_5: 33094.41015625 + percentile_10_0: 91009.625 + percentile_90_0: 182019.25 + percentile_99_5: 231660.859375 + stdev: 35204.32421875 + ncomponents: 1 + pixel_percentage: 0.03433074802160263 + shape: + - [23, 18, 15] + - image_intensity: + - max: 308881.15625 + mean: 136062.71875 + median: 132377.640625 + min: 16547.205078125 + percentile: [46883.74609375, 93767.4921875, 184777.125, 261997.40625] + percentile_00_5: 46883.74609375 + percentile_10_0: 93767.4921875 + percentile_90_0: 184777.125 + percentile_99_5: 261997.40625 + stdev: 37511.515625 + ncomponents: 1 + pixel_percentage: 0.025616148486733437 + shape: + - [19, 23, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_226.nii.gz + image_foreground_stats: + intensity: + - max: 962.52001953125 + mean: 430.33642578125 + median: 417.09197998046875 + min: 72.18899536132812 + percentile: [168.4409942626953, 296.7770080566406, 593.5540161132812, 798.4889526367188] + percentile_00_5: 168.4409942626953 + percentile_10_0: 296.7770080566406 + percentile_90_0: 593.5540161132812 + percentile_99_5: 798.4889526367188 + stdev: 119.77847290039062 + image_stats: + channels: 1 + cropped_shape: + - [32, 51, 28] + intensity: + - max: 2045.35498046875 + mean: 561.3385009765625 + median: 585.5330200195312 + min: 0.0 + percentile: [24.062999725341797, 160.4199981689453, 890.3309936523438, 1026.68798828125] + percentile_00_5: 24.062999725341797 + percentile_10_0: 160.4199981689453 + percentile_90_0: 890.3309936523438 + percentile_99_5: 1026.68798828125 + stdev: 270.8314208984375 + shape: + - [32, 51, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_226.nii.gz + label_stats: + image_intensity: + - max: 962.52001953125 + mean: 430.33642578125 + median: 417.09197998046875 + min: 72.18899536132812 + percentile: [168.4409942626953, 296.7770080566406, 593.5540161132812, 798.4889526367188] + percentile_00_5: 168.4409942626953 + percentile_10_0: 296.7770080566406 + percentile_90_0: 593.5540161132812 + percentile_99_5: 798.4889526367188 + stdev: 119.77847290039062 + label: + - image_intensity: + - max: 2045.35498046875 + mean: 569.068115234375 + median: 609.5960083007812 + min: 0.0 + percentile: [24.062999725341797, 152.3990020751953, 898.3519897460938, 1026.68798828125] + percentile_00_5: 24.062999725341797 + percentile_10_0: 152.3990020751953 + percentile_90_0: 898.3519897460938 + percentile_99_5: 1026.68798828125 + stdev: 275.24298095703125 + ncomponents: 1 + pixel_percentage: 0.9442839622497559 + shape: + - [32, 51, 28] + - image_intensity: + - max: 962.52001953125 + mean: 441.64892578125 + median: 425.1130065917969 + min: 104.27299499511719 + percentile: [192.50399780273438, 304.7980041503906, 601.5750122070312, 804.469482421875] + percentile_00_5: 192.50399780273438 + percentile_10_0: 304.7980041503906 + percentile_90_0: 601.5750122070312 + percentile_99_5: 804.469482421875 + stdev: 116.0084457397461 + ncomponents: 1 + pixel_percentage: 0.02984943985939026 + shape: + - [22, 17, 11] + - image_intensity: + - max: 898.3519897460938 + mean: 417.2820129394531 + median: 401.04998779296875 + min: 72.18899536132812 + percentile: [152.3990020751953, 280.7349853515625, 585.5330200195312, 795.6024780273438] + percentile_00_5: 152.3990020751953 + percentile_10_0: 280.7349853515625 + percentile_90_0: 585.5330200195312 + percentile_99_5: 795.6024780273438 + stdev: 122.69710540771484 + ncomponents: 1 + pixel_percentage: 0.025866596028208733 + shape: + - [21, 22, 14] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_091.nii.gz + image_foreground_stats: + intensity: + - max: 620.0889892578125 + mean: 311.21441650390625 + median: 301.51116943359375 + min: 73.95556640625 + percentile: [147.9111328125, 221.86671447753906, 420.97784423828125, 563.2001342773438] + percentile_00_5: 147.9111328125 + percentile_10_0: 221.86671447753906 + percentile_90_0: 420.97784423828125 + percentile_99_5: 563.2001342773438 + stdev: 78.77804565429688 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 29] + intensity: + - max: 853.33349609375 + mean: 408.6790466308594 + median: 420.97784423828125 + min: 0.0 + percentile: [22.75555992126465, 153.60003662109375, 625.7778930664062, 722.489013671875] + percentile_00_5: 22.75555992126465 + percentile_10_0: 153.60003662109375 + percentile_90_0: 625.7778930664062 + percentile_99_5: 722.489013671875 + stdev: 177.88653564453125 + shape: + - [36, 51, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_091.nii.gz + label_stats: + image_intensity: + - max: 620.0889892578125 + mean: 311.21441650390625 + median: 301.51116943359375 + min: 73.95556640625 + percentile: [147.9111328125, 221.86671447753906, 420.97784423828125, 563.2001342773438] + percentile_00_5: 147.9111328125 + percentile_10_0: 221.86671447753906 + percentile_90_0: 420.97784423828125 + percentile_99_5: 563.2001342773438 + stdev: 78.77804565429688 + label: + - image_intensity: + - max: 853.33349609375 + mean: 414.6241149902344 + median: 438.0445251464844 + min: 0.0 + percentile: [17.066669464111328, 142.2222442626953, 631.466796875, 728.1779174804688] + percentile_00_5: 17.066669464111328 + percentile_10_0: 142.2222442626953 + percentile_90_0: 631.466796875 + percentile_99_5: 728.1779174804688 + stdev: 180.50057983398438 + ncomponents: 1 + pixel_percentage: 0.9425099492073059 + shape: + - [36, 51, 29] + - image_intensity: + - max: 603.0223388671875 + mean: 319.94580078125 + median: 307.2000732421875 + min: 119.46669006347656 + percentile: [170.6667022705078, 238.93338012695312, 415.2889709472656, 557.51123046875] + percentile_00_5: 170.6667022705078 + percentile_10_0: 238.93338012695312 + percentile_90_0: 415.2889709472656 + percentile_99_5: 557.51123046875 + stdev: 73.9090347290039 + ncomponents: 1 + pixel_percentage: 0.02608744613826275 + shape: + - [22, 15, 10] + - image_intensity: + - max: 620.0889892578125 + mean: 303.9609375 + median: 290.1333923339844 + min: 73.95556640625 + percentile: [142.2222442626953, 216.17782592773438, 420.97784423828125, 574.577880859375] + percentile_00_5: 142.2222442626953 + percentile_10_0: 216.17782592773438 + percentile_90_0: 420.97784423828125 + percentile_99_5: 574.577880859375 + stdev: 81.90016174316406 + ncomponents: 1 + pixel_percentage: 0.031402599066495895 + shape: + - [19, 23, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_326.nii.gz + image_foreground_stats: + intensity: + - max: 968.2608642578125 + mean: 439.8835754394531 + median: 417.2181091308594 + min: 31.4881591796875 + percentile: [157.4407958984375, 299.13751220703125, 629.76318359375, 842.3082275390625] + percentile_00_5: 157.4407958984375 + percentile_10_0: 299.13751220703125 + percentile_90_0: 629.76318359375 + percentile_99_5: 842.3082275390625 + stdev: 131.4296875 + image_stats: + channels: 1 + cropped_shape: + - [36, 49, 41] + intensity: + - max: 4573.6552734375 + mean: 585.5774536132812 + median: 606.1470947265625 + min: 0.0 + percentile: [31.4881591796875, 212.54507446289062, 921.0286865234375, 1078.469482421875] + percentile_00_5: 31.4881591796875 + percentile_10_0: 212.54507446289062 + percentile_90_0: 921.0286865234375 + percentile_99_5: 1078.469482421875 + stdev: 275.0150146484375 + shape: + - [36, 49, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_326.nii.gz + label_stats: + image_intensity: + - max: 968.2608642578125 + mean: 439.8835754394531 + median: 417.2181091308594 + min: 31.4881591796875 + percentile: [157.4407958984375, 299.13751220703125, 629.76318359375, 842.3082275390625] + percentile_00_5: 157.4407958984375 + percentile_10_0: 299.13751220703125 + percentile_90_0: 629.76318359375 + percentile_99_5: 842.3082275390625 + stdev: 131.4296875 + label: + - image_intensity: + - max: 4573.6552734375 + mean: 594.0686645507812 + median: 621.89111328125 + min: 0.0 + percentile: [31.4881591796875, 204.67303466796875, 921.0286865234375, 1086.341552734375] + percentile_00_5: 31.4881591796875 + percentile_10_0: 204.67303466796875 + percentile_90_0: 921.0286865234375 + percentile_99_5: 1086.341552734375 + stdev: 278.79254150390625 + ncomponents: 1 + pixel_percentage: 0.9449283480644226 + shape: + - [36, 49, 41] + - image_intensity: + - max: 921.0286865234375 + mean: 450.01885986328125 + median: 425.09014892578125 + min: 31.4881591796875 + percentile: [149.56875610351562, 307.0095520019531, 637.63525390625, 837.0346069335938] + percentile_00_5: 149.56875610351562 + percentile_10_0: 307.0095520019531 + percentile_90_0: 637.63525390625 + percentile_99_5: 837.0346069335938 + stdev: 131.8859100341797 + ncomponents: 1 + pixel_percentage: 0.029519937932491302 + shape: + - [24, 19, 15] + - image_intensity: + - max: 968.2608642578125 + mean: 428.17425537109375 + median: 409.3460693359375 + min: 86.59243774414062 + percentile: [167.1627655029297, 291.2654724121094, 608.5081176757812, 846.4806518554688] + percentile_00_5: 167.1627655029297 + percentile_10_0: 291.2654724121094 + percentile_90_0: 608.5081176757812 + percentile_99_5: 846.4806518554688 + stdev: 129.91993713378906 + ncomponents: 1 + pixel_percentage: 0.025551684200763702 + shape: + - [26, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_245.nii.gz + image_foreground_stats: + intensity: + - max: 1222.011474609375 + mean: 500.84820556640625 + median: 474.73828125 + min: 43.95724868774414 + percentile: [102.15663146972656, 334.0750732421875, 712.107421875, 1107.72265625] + percentile_00_5: 102.15663146972656 + percentile_10_0: 334.0750732421875 + percentile_90_0: 712.107421875 + percentile_99_5: 1107.72265625 + stdev: 170.43917846679688 + image_stats: + channels: 1 + cropped_shape: + - [35, 48, 42] + intensity: + - max: 2936.34423828125 + mean: 657.06396484375 + median: 659.3587036132812 + min: 0.0 + percentile: [35.16579818725586, 272.5349426269531, 1019.8081665039062, 1169.2628173828125] + percentile_00_5: 35.16579818725586 + percentile_10_0: 272.5349426269531 + percentile_90_0: 1019.8081665039062 + percentile_99_5: 1169.2628173828125 + stdev: 288.3003845214844 + shape: + - [35, 48, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_245.nii.gz + label_stats: + image_intensity: + - max: 1222.011474609375 + mean: 500.84820556640625 + median: 474.73828125 + min: 43.95724868774414 + percentile: [102.15663146972656, 334.0750732421875, 712.107421875, 1107.72265625] + percentile_00_5: 102.15663146972656 + percentile_10_0: 334.0750732421875 + percentile_90_0: 712.107421875 + percentile_99_5: 1107.72265625 + stdev: 170.43917846679688 + label: + - image_intensity: + - max: 2936.34423828125 + mean: 664.7893676757812 + median: 676.9415893554688 + min: 0.0 + percentile: [35.16579818725586, 272.5349426269531, 1019.8081665039062, 1169.2628173828125] + percentile_00_5: 35.16579818725586 + percentile_10_0: 272.5349426269531 + percentile_90_0: 1019.8081665039062 + percentile_99_5: 1169.2628173828125 + stdev: 290.7308654785156 + ncomponents: 1 + pixel_percentage: 0.9528769850730896 + shape: + - [35, 48, 42] + - image_intensity: + - max: 1195.6370849609375 + mean: 481.5179138183594 + median: 465.94683837890625 + min: 43.95724868774414 + percentile: [79.123046875, 307.70074462890625, 676.9415893554688, 1107.72265625] + percentile_00_5: 79.123046875 + percentile_10_0: 307.70074462890625 + percentile_90_0: 676.9415893554688 + percentile_99_5: 1107.72265625 + stdev: 176.57275390625 + ncomponents: 1 + pixel_percentage: 0.02310090698301792 + shape: + - [24, 14, 17] + - image_intensity: + - max: 1222.011474609375 + mean: 519.437255859375 + median: 483.52972412109375 + min: 114.2888412475586 + percentile: [241.50111389160156, 360.4494323730469, 738.4817504882812, 1094.7994384765625] + percentile_00_5: 241.50111389160156 + percentile_10_0: 360.4494323730469 + percentile_90_0: 738.4817504882812 + percentile_99_5: 1094.7994384765625 + stdev: 162.16607666015625 + ncomponents: 1 + pixel_percentage: 0.02402210794389248 + shape: + - [17, 22, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_345.nii.gz + image_foreground_stats: + intensity: + - max: 817.9187622070312 + mean: 383.730224609375 + median: 372.970947265625 + min: 39.260101318359375 + percentile: [150.49705505371094, 268.27734375, 516.9246826171875, 700.1384887695312] + percentile_00_5: 150.49705505371094 + percentile_10_0: 268.27734375 + percentile_90_0: 516.9246826171875 + percentile_99_5: 700.1384887695312 + stdev: 101.55867767333984 + image_stats: + channels: 1 + cropped_shape: + - [32, 49, 30] + intensity: + - max: 1779.791259765625 + mean: 520.00732421875 + median: 530.0113525390625 + min: 0.0 + percentile: [32.71675109863281, 229.0172576904297, 791.745361328125, 942.242431640625] + percentile_00_5: 32.71675109863281 + percentile_10_0: 229.0172576904297 + percentile_90_0: 791.745361328125 + percentile_99_5: 942.242431640625 + stdev: 220.99542236328125 + shape: + - [32, 49, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_345.nii.gz + label_stats: + image_intensity: + - max: 817.9187622070312 + mean: 383.730224609375 + median: 372.970947265625 + min: 39.260101318359375 + percentile: [150.49705505371094, 268.27734375, 516.9246826171875, 700.1384887695312] + percentile_00_5: 150.49705505371094 + percentile_10_0: 268.27734375 + percentile_90_0: 516.9246826171875 + percentile_99_5: 700.1384887695312 + stdev: 101.55867767333984 + label: + - image_intensity: + - max: 1779.791259765625 + mean: 529.2244262695312 + median: 556.1847534179688 + min: 0.0 + percentile: [32.71675109863281, 215.93055725097656, 798.2886962890625, 942.242431640625] + percentile_00_5: 32.71675109863281 + percentile_10_0: 215.93055725097656 + percentile_90_0: 798.2886962890625 + percentile_99_5: 942.242431640625 + stdev: 223.83828735351562 + ncomponents: 1 + pixel_percentage: 0.9366496801376343 + shape: + - [32, 49, 30] + - image_intensity: + - max: 759.0286254882812 + mean: 380.4695739746094 + median: 366.4276123046875 + min: 39.260101318359375 + percentile: [133.61521911621094, 261.7340087890625, 523.468017578125, 697.3899536132812] + percentile_00_5: 133.61521911621094 + percentile_10_0: 261.7340087890625 + percentile_90_0: 523.468017578125 + percentile_99_5: 697.3899536132812 + stdev: 104.3608169555664 + ncomponents: 1 + pixel_percentage: 0.035820577293634415 + shape: + - [19, 17, 13] + - image_intensity: + - max: 817.9187622070312 + mean: 387.9726867675781 + median: 372.970947265625 + min: 91.60690307617188 + percentile: [186.2891845703125, 287.90740966796875, 510.3813171386719, 723.629638671875] + percentile_00_5: 186.2891845703125 + percentile_10_0: 287.90740966796875 + percentile_90_0: 510.3813171386719 + percentile_99_5: 723.629638671875 + stdev: 97.62962341308594 + ncomponents: 1 + pixel_percentage: 0.0275297611951828 + shape: + - [20, 22, 14] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_238.nii.gz + image_foreground_stats: + intensity: + - max: 866.5263671875 + mean: 430.0534973144531 + median: 415.65087890625 + min: 21.134790420532227 + percentile: [183.16818237304688, 288.8421325683594, 591.7741088867188, 782.4808959960938] + percentile_00_5: 183.16818237304688 + percentile_10_0: 288.8421325683594 + percentile_90_0: 591.7741088867188 + percentile_99_5: 782.4808959960938 + stdev: 118.1028823852539 + image_stats: + channels: 1 + cropped_shape: + - [37, 56, 36] + intensity: + - max: 2345.961669921875 + mean: 559.8272094726562 + median: 556.5494384765625 + min: 0.0 + percentile: [28.179719924926758, 183.16818237304688, 915.8408813476562, 1042.649658203125] + percentile_00_5: 28.179719924926758 + percentile_10_0: 183.16818237304688 + percentile_90_0: 915.8408813476562 + percentile_99_5: 1042.649658203125 + stdev: 271.83837890625 + shape: + - [37, 56, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_238.nii.gz + label_stats: + image_intensity: + - max: 866.5263671875 + mean: 430.0534973144531 + median: 415.65087890625 + min: 21.134790420532227 + percentile: [183.16818237304688, 288.8421325683594, 591.7741088867188, 782.4808959960938] + percentile_00_5: 183.16818237304688 + percentile_10_0: 288.8421325683594 + percentile_90_0: 591.7741088867188 + percentile_99_5: 782.4808959960938 + stdev: 118.1028823852539 + label: + - image_intensity: + - max: 2345.961669921875 + mean: 567.1553955078125 + median: 577.6842651367188 + min: 0.0 + percentile: [21.134790420532227, 176.1232452392578, 915.8408813476562, 1049.694580078125] + percentile_00_5: 21.134790420532227 + percentile_10_0: 176.1232452392578 + percentile_90_0: 915.8408813476562 + percentile_99_5: 1049.694580078125 + stdev: 276.1821594238281 + ncomponents: 1 + pixel_percentage: 0.9465492367744446 + shape: + - [37, 56, 36] + - image_intensity: + - max: 859.4814453125 + mean: 431.87994384765625 + median: 422.69580078125 + min: 21.134790420532227 + percentile: [183.16818237304688, 302.9319763183594, 577.6842651367188, 753.669921875] + percentile_00_5: 183.16818237304688 + percentile_10_0: 302.9319763183594 + percentile_90_0: 577.6842651367188 + percentile_99_5: 753.669921875 + stdev: 109.42985534667969 + ncomponents: 1 + pixel_percentage: 0.03086121752858162 + shape: + - [26, 20, 16] + - image_intensity: + - max: 866.5263671875 + mean: 427.5582580566406 + median: 408.6059265136719 + min: 119.76380920410156 + percentile: [190.21310424804688, 281.7972106933594, 605.8639526367188, 800.162841796875] + percentile_00_5: 190.21310424804688 + percentile_10_0: 281.7972106933594 + percentile_90_0: 605.8639526367188 + percentile_99_5: 800.162841796875 + stdev: 128.970947265625 + ncomponents: 1 + pixel_percentage: 0.022589553147554398 + shape: + - [15, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_338.nii.gz + image_foreground_stats: + intensity: + - max: 699.834716796875 + mean: 320.0660400390625 + median: 309.5422668457031 + min: 33.64590072631836 + percentile: [108.4070816040039, 222.0629425048828, 444.1258850097656, 625.0744018554688] + percentile_00_5: 108.4070816040039 + percentile_10_0: 222.0629425048828 + percentile_90_0: 444.1258850097656 + percentile_99_5: 625.0744018554688 + stdev: 90.90975189208984 + image_stats: + channels: 1 + cropped_shape: + - [37, 43, 43] + intensity: + - max: 1951.462158203125 + mean: 432.2680358886719 + median: 450.85504150390625 + min: 0.0 + percentile: [20.18754005432129, 121.12523651123047, 679.6471557617188, 841.1474609375] + percentile_00_5: 20.18754005432129 + percentile_10_0: 121.12523651123047 + percentile_90_0: 679.6471557617188 + percentile_99_5: 841.1474609375 + stdev: 213.0406494140625 + shape: + - [37, 43, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_338.nii.gz + label_stats: + image_intensity: + - max: 699.834716796875 + mean: 320.0660400390625 + median: 309.5422668457031 + min: 33.64590072631836 + percentile: [108.4070816040039, 222.0629425048828, 444.1258850097656, 625.0744018554688] + percentile_00_5: 108.4070816040039 + percentile_10_0: 222.0629425048828 + percentile_90_0: 444.1258850097656 + percentile_99_5: 625.0744018554688 + stdev: 90.90975189208984 + label: + - image_intensity: + - max: 1951.462158203125 + mean: 438.54229736328125 + median: 471.0426025390625 + min: 0.0 + percentile: [20.18754005432129, 114.39605712890625, 679.6471557617188, 841.5154418945312] + percentile_00_5: 20.18754005432129 + percentile_10_0: 114.39605712890625 + percentile_90_0: 679.6471557617188 + percentile_99_5: 841.5154418945312 + stdev: 216.145263671875 + ncomponents: 1 + pixel_percentage: 0.9470422267913818 + shape: + - [37, 43, 43] + - image_intensity: + - max: 679.6471557617188 + mean: 330.44061279296875 + median: 316.2714538574219 + min: 67.29180145263672 + percentile: [107.66687774658203, 235.52130126953125, 450.85504150390625, 612.1532592773438] + percentile_00_5: 107.66687774658203 + percentile_10_0: 235.52130126953125 + percentile_90_0: 450.85504150390625 + percentile_99_5: 612.1532592773438 + stdev: 87.88365936279297 + ncomponents: 1 + pixel_percentage: 0.029336528852581978 + shape: + - [23, 15, 19] + - image_intensity: + - max: 699.834716796875 + mean: 307.1812438964844 + median: 289.354736328125 + min: 33.64590072631836 + percentile: [127.85441589355469, 215.33375549316406, 430.6675109863281, 632.5429077148438] + percentile_00_5: 127.85441589355469 + percentile_10_0: 215.33375549316406 + percentile_90_0: 430.6675109863281 + percentile_99_5: 632.5429077148438 + stdev: 92.93462371826172 + ncomponents: 1 + pixel_percentage: 0.023621242493391037 + shape: + - [24, 18, 27] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_349.nii.gz + image_foreground_stats: + intensity: + - max: 962.0310668945312 + mean: 469.5776062011719 + median: 461.13885498046875 + min: 71.5560302734375 + percentile: [190.81607055664062, 333.9281311035156, 620.1522216796875, 898.8624267578125] + percentile_00_5: 190.81607055664062 + percentile_10_0: 333.9281311035156 + percentile_90_0: 620.1522216796875 + percentile_99_5: 898.8624267578125 + stdev: 119.70670318603516 + image_stats: + channels: 1 + cropped_shape: + - [34, 50, 34] + intensity: + - max: 2226.1875 + mean: 643.1356811523438 + median: 667.8562622070312 + min: 0.0 + percentile: [31.80267906188965, 254.4214324951172, 985.883056640625, 1136.94580078125] + percentile_00_5: 31.80267906188965 + percentile_10_0: 254.4214324951172 + percentile_90_0: 985.883056640625 + percentile_99_5: 1136.94580078125 + stdev: 276.0068664550781 + shape: + - [34, 50, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_349.nii.gz + label_stats: + image_intensity: + - max: 962.0310668945312 + mean: 469.5776062011719 + median: 461.13885498046875 + min: 71.5560302734375 + percentile: [190.81607055664062, 333.9281311035156, 620.1522216796875, 898.8624267578125] + percentile_00_5: 190.81607055664062 + percentile_10_0: 333.9281311035156 + percentile_90_0: 620.1522216796875 + percentile_99_5: 898.8624267578125 + stdev: 119.70670318603516 + label: + - image_intensity: + - max: 2226.1875 + mean: 651.2777099609375 + median: 691.708251953125 + min: 0.0 + percentile: [31.80267906188965, 246.47076416015625, 985.883056640625, 1136.94580078125] + percentile_00_5: 31.80267906188965 + percentile_10_0: 246.47076416015625 + percentile_90_0: 985.883056640625 + percentile_99_5: 1136.94580078125 + stdev: 278.5711975097656 + ncomponents: 1 + pixel_percentage: 0.9551903009414673 + shape: + - [34, 50, 34] + - image_intensity: + - max: 922.2777099609375 + mean: 468.6322021484375 + median: 461.13885498046875 + min: 71.5560302734375 + percentile: [167.60011291503906, 341.8788146972656, 604.2509155273438, 881.2529296875] + percentile_00_5: 167.60011291503906 + percentile_10_0: 341.8788146972656 + percentile_90_0: 604.2509155273438 + percentile_99_5: 881.2529296875 + stdev: 112.98323059082031 + ncomponents: 1 + pixel_percentage: 0.02105536311864853 + shape: + - [19, 17, 13] + - image_intensity: + - max: 962.0310668945312 + mean: 470.4156188964844 + median: 453.18817138671875 + min: 151.06272888183594 + percentile: [221.5056610107422, 327.56756591796875, 636.0535888671875, 915.4402465820312] + percentile_00_5: 221.5056610107422 + percentile_10_0: 327.56756591796875 + percentile_90_0: 636.0535888671875 + percentile_99_5: 915.4402465820312 + stdev: 125.35918426513672 + ncomponents: 1 + pixel_percentage: 0.02375432476401329 + shape: + - [22, 23, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_249.nii.gz + image_foreground_stats: + intensity: + - max: 1088.947021484375 + mean: 467.9893798828125 + median: 456.18048095703125 + min: 36.78874969482422 + percentile: [137.8842315673828, 331.0987548828125, 618.051025390625, 905.0032348632812] + percentile_00_5: 137.8842315673828 + percentile_10_0: 331.0987548828125 + percentile_90_0: 618.051025390625 + percentile_99_5: 905.0032348632812 + stdev: 124.7997817993164 + image_stats: + channels: 1 + cropped_shape: + - [32, 52, 34] + intensity: + - max: 1942.446044921875 + mean: 608.9041748046875 + median: 588.6199951171875 + min: 0.0 + percentile: [36.78874969482422, 235.447998046875, 993.2962646484375, 1155.166748046875] + percentile_00_5: 36.78874969482422 + percentile_10_0: 235.447998046875 + percentile_90_0: 993.2962646484375 + percentile_99_5: 1155.166748046875 + stdev: 278.94866943359375 + shape: + - [32, 52, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_249.nii.gz + label_stats: + image_intensity: + - max: 1088.947021484375 + mean: 467.9893798828125 + median: 456.18048095703125 + min: 36.78874969482422 + percentile: [137.8842315673828, 331.0987548828125, 618.051025390625, 905.0032348632812] + percentile_00_5: 137.8842315673828 + percentile_10_0: 331.0987548828125 + percentile_90_0: 618.051025390625 + percentile_99_5: 905.0032348632812 + stdev: 124.7997817993164 + label: + - image_intensity: + - max: 1942.446044921875 + mean: 617.7703857421875 + median: 610.6932373046875 + min: 0.0 + percentile: [36.78874969482422, 228.09024047851562, 1000.6539916992188, 1162.5245361328125] + percentile_00_5: 36.78874969482422 + percentile_10_0: 228.09024047851562 + percentile_90_0: 1000.6539916992188 + percentile_99_5: 1162.5245361328125 + stdev: 283.5494689941406 + ncomponents: 1 + pixel_percentage: 0.9408053159713745 + shape: + - [32, 52, 34] + - image_intensity: + - max: 897.6455078125 + mean: 462.24322509765625 + median: 456.18048095703125 + min: 36.78874969482422 + percentile: [101.75768280029297, 331.0987548828125, 603.3355102539062, 795.2620849609375] + percentile_00_5: 101.75768280029297 + percentile_10_0: 331.0987548828125 + percentile_90_0: 603.3355102539062 + percentile_99_5: 795.2620849609375 + stdev: 116.77919006347656 + ncomponents: 1 + pixel_percentage: 0.031532805413007736 + shape: + - [23, 18, 14] + - image_intensity: + - max: 1088.947021484375 + mean: 474.53961181640625 + median: 456.18048095703125 + min: 36.78874969482422 + percentile: [197.3348388671875, 338.45648193359375, 632.7664794921875, 956.5075073242188] + percentile_00_5: 197.3348388671875 + percentile_10_0: 338.45648193359375 + percentile_90_0: 632.7664794921875 + percentile_99_5: 956.5075073242188 + stdev: 133.0533447265625 + ncomponents: 1 + pixel_percentage: 0.02766190655529499 + shape: + - [16, 24, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_334.nii.gz + image_foreground_stats: + intensity: + - max: 911.4951782226562 + mean: 388.3150939941406 + median: 375.9273681640625 + min: 20.5987606048584 + percentile: [84.37767028808594, 236.8857421875, 561.3162231445312, 775.6205444335938] + percentile_00_5: 84.37767028808594 + percentile_10_0: 236.8857421875 + percentile_90_0: 561.3162231445312 + percentile_99_5: 775.6205444335938 + stdev: 126.49773406982422 + image_stats: + channels: 1 + cropped_shape: + - [34, 47, 36] + intensity: + - max: 2482.150634765625 + mean: 514.087646484375 + median: 535.5677490234375 + min: 0.0 + percentile: [36.04783248901367, 211.13729858398438, 772.4535522460938, 968.1417236328125] + percentile_00_5: 36.04783248901367 + percentile_10_0: 211.13729858398438 + percentile_90_0: 772.4535522460938 + percentile_99_5: 968.1417236328125 + stdev: 214.4650421142578 + shape: + - [34, 47, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_334.nii.gz + label_stats: + image_intensity: + - max: 911.4951782226562 + mean: 388.3150939941406 + median: 375.9273681640625 + min: 20.5987606048584 + percentile: [84.37767028808594, 236.8857421875, 561.3162231445312, 775.6205444335938] + percentile_00_5: 84.37767028808594 + percentile_10_0: 236.8857421875 + percentile_90_0: 561.3162231445312 + percentile_99_5: 775.6205444335938 + stdev: 126.49773406982422 + label: + - image_intensity: + - max: 2482.150634765625 + mean: 520.2283325195312 + median: 545.8671264648438 + min: 0.0 + percentile: [36.04783248901367, 205.98760986328125, 777.6032104492188, 968.1417236328125] + percentile_00_5: 36.04783248901367 + percentile_10_0: 205.98760986328125 + percentile_90_0: 777.6032104492188 + percentile_99_5: 968.1417236328125 + stdev: 215.98526000976562 + ncomponents: 1 + pixel_percentage: 0.9534487724304199 + shape: + - [34, 47, 36] + - image_intensity: + - max: 911.4951782226562 + mean: 409.1018371582031 + median: 396.5261535644531 + min: 77.24535369873047 + percentile: [139.04164123535156, 267.78387451171875, 576.7653198242188, 777.6032104492188] + percentile_00_5: 139.04164123535156 + percentile_10_0: 267.78387451171875 + percentile_90_0: 576.7653198242188 + percentile_99_5: 777.6032104492188 + stdev: 125.19595336914062 + ncomponents: 1 + pixel_percentage: 0.021589485928416252 + shape: + - [18, 16, 12] + - image_intensity: + - max: 854.8485717773438 + mean: 370.3365478515625 + median: 360.4783020019531 + min: 20.5987606048584 + percentile: [62.69747543334961, 218.86183166503906, 535.5677490234375, 745.8036499023438] + percentile_00_5: 62.69747543334961 + percentile_10_0: 218.86183166503906 + percentile_90_0: 535.5677490234375 + percentile_99_5: 745.8036499023438 + stdev: 124.85237121582031 + ncomponents: 1 + pixel_percentage: 0.02496175840497017 + shape: + - [19, 20, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_083.nii.gz + image_foreground_stats: + intensity: + - max: 1153.025390625 + mean: 409.918212890625 + median: 392.18548583984375 + min: 23.531129837036133 + percentile: [141.18678283691406, 282.3735656738281, 564.7471313476562, 800.0584106445312] + percentile_00_5: 141.18678283691406 + percentile_10_0: 282.3735656738281 + percentile_90_0: 564.7471313476562 + percentile_99_5: 800.0584106445312 + stdev: 117.95269775390625 + image_stats: + channels: 1 + cropped_shape: + - [33, 52, 37] + intensity: + - max: 1796.2095947265625 + mean: 526.3087158203125 + median: 517.6848754882812 + min: 0.0 + percentile: [31.374839782714844, 219.62387084960938, 831.4332275390625, 956.9326171875] + percentile_00_5: 31.374839782714844 + percentile_10_0: 219.62387084960938 + percentile_90_0: 831.4332275390625 + percentile_99_5: 956.9326171875 + stdev: 229.38339233398438 + shape: + - [33, 52, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_083.nii.gz + label_stats: + image_intensity: + - max: 1153.025390625 + mean: 409.918212890625 + median: 392.18548583984375 + min: 23.531129837036133 + percentile: [141.18678283691406, 282.3735656738281, 564.7471313476562, 800.0584106445312] + percentile_00_5: 141.18678283691406 + percentile_10_0: 282.3735656738281 + percentile_90_0: 564.7471313476562 + percentile_99_5: 800.0584106445312 + stdev: 117.95269775390625 + label: + - image_intensity: + - max: 1796.2095947265625 + mean: 532.8347778320312 + median: 533.3722534179688 + min: 0.0 + percentile: [31.374839782714844, 211.78016662597656, 831.4332275390625, 964.7763061523438] + percentile_00_5: 31.374839782714844 + percentile_10_0: 211.78016662597656 + percentile_90_0: 831.4332275390625 + percentile_99_5: 964.7763061523438 + stdev: 232.3461151123047 + ncomponents: 1 + pixel_percentage: 0.9469066858291626 + shape: + - [33, 52, 37] + - image_intensity: + - max: 1153.025390625 + mean: 408.3245544433594 + median: 392.18548583984375 + min: 31.374839782714844 + percentile: [143.10848999023438, 290.2172546386719, 533.3722534179688, 808.0591430664062] + percentile_00_5: 143.10848999023438 + percentile_10_0: 290.2172546386719 + percentile_90_0: 533.3722534179688 + percentile_99_5: 808.0591430664062 + stdev: 108.66050720214844 + ncomponents: 1 + pixel_percentage: 0.025987526401877403 + shape: + - [21, 16, 15] + - image_intensity: + - max: 847.1206665039062 + mean: 411.44610595703125 + median: 384.341796875 + min: 23.531129837036133 + percentile: [150.59922790527344, 282.3735656738281, 588.2782592773438, 800.0584106445312] + percentile_00_5: 150.59922790527344 + percentile_10_0: 282.3735656738281 + percentile_90_0: 588.2782592773438 + percentile_99_5: 800.0584106445312 + stdev: 126.20195770263672 + ncomponents: 1 + pixel_percentage: 0.027105776593089104 + shape: + - [15, 25, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_234.nii.gz + image_foreground_stats: + intensity: + - max: 931.4192504882812 + mean: 438.3704528808594 + median: 415.6747131347656 + min: 130.86056518554688 + percentile: [192.44200134277344, 292.5118408203125, 615.8143920898438, 831.3494262695312] + percentile_00_5: 192.44200134277344 + percentile_10_0: 292.5118408203125 + percentile_90_0: 615.8143920898438 + percentile_99_5: 831.3494262695312 + stdev: 127.88140869140625 + image_stats: + channels: 1 + cropped_shape: + - [38, 49, 36] + intensity: + - max: 2632.6064453125 + mean: 565.7575073242188 + median: 592.7213745117188 + min: 0.0 + percentile: [30.790719985961914, 200.13967895507812, 877.5355224609375, 1023.7914428710938] + percentile_00_5: 30.790719985961914 + percentile_10_0: 200.13967895507812 + percentile_90_0: 877.5355224609375 + percentile_99_5: 1023.7914428710938 + stdev: 259.0853576660156 + shape: + - [38, 49, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_234.nii.gz + label_stats: + image_intensity: + - max: 931.4192504882812 + mean: 438.3704528808594 + median: 415.6747131347656 + min: 130.86056518554688 + percentile: [192.44200134277344, 292.5118408203125, 615.8143920898438, 831.3494262695312] + percentile_00_5: 192.44200134277344 + percentile_10_0: 292.5118408203125 + percentile_90_0: 615.8143920898438 + percentile_99_5: 831.3494262695312 + stdev: 127.88140869140625 + label: + - image_intensity: + - max: 2632.6064453125 + mean: 572.1771240234375 + median: 608.11669921875 + min: 0.0 + percentile: [30.790719985961914, 192.44200134277344, 885.2332153320312, 1023.7914428710938] + percentile_00_5: 30.790719985961914 + percentile_10_0: 192.44200134277344 + percentile_90_0: 885.2332153320312 + percentile_99_5: 1023.7914428710938 + stdev: 262.34490966796875 + ncomponents: 1 + pixel_percentage: 0.952022910118103 + shape: + - [38, 49, 36] + - image_intensity: + - max: 931.4192504882812 + mean: 438.2310791015625 + median: 423.3724060058594 + min: 161.65127563476562 + percentile: [192.44200134277344, 292.5118408203125, 592.7213745117188, 812.2593383789062] + percentile_00_5: 192.44200134277344 + percentile_10_0: 292.5118408203125 + percentile_90_0: 592.7213745117188 + percentile_99_5: 812.2593383789062 + stdev: 120.1563949584961 + ncomponents: 1 + pixel_percentage: 0.02310836687684059 + shape: + - [23, 15, 14] + - image_intensity: + - max: 877.5355224609375 + mean: 438.4999084472656 + median: 407.97705078125 + min: 130.86056518554688 + percentile: [194.98223876953125, 292.5118408203125, 638.9074096679688, 836.5072021484375] + percentile_00_5: 194.98223876953125 + percentile_10_0: 292.5118408203125 + percentile_90_0: 638.9074096679688 + percentile_99_5: 836.5072021484375 + stdev: 134.66285705566406 + ncomponents: 1 + pixel_percentage: 0.024868719279766083 + shape: + - [21, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_257.nii.gz + image_foreground_stats: + intensity: + - max: 602.5745239257812 + mean: 273.3420715332031 + median: 264.39495849609375 + min: 0.0 + percentile: [79.93335723876953, 196.759033203125, 362.77447509765625, 534.9385986328125] + percentile_00_5: 79.93335723876953 + percentile_10_0: 196.759033203125 + percentile_90_0: 362.77447509765625 + percentile_99_5: 534.9385986328125 + stdev: 71.91963195800781 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 33] + intensity: + - max: 1205.1490478515625 + mean: 372.30389404296875 + median: 375.0718994140625 + min: 0.0 + percentile: [18.44615936279297, 141.42056274414062, 596.4258422851562, 694.8053588867188] + percentile_00_5: 18.44615936279297 + percentile_10_0: 141.42056274414062 + percentile_90_0: 596.4258422851562 + percentile_99_5: 694.8053588867188 + stdev: 171.08517456054688 + shape: + - [34, 51, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_257.nii.gz + label_stats: + image_intensity: + - max: 602.5745239257812 + mean: 273.3420715332031 + median: 264.39495849609375 + min: 0.0 + percentile: [79.93335723876953, 196.759033203125, 362.77447509765625, 534.9385986328125] + percentile_00_5: 79.93335723876953 + percentile_10_0: 196.759033203125 + percentile_90_0: 362.77447509765625 + percentile_99_5: 534.9385986328125 + stdev: 71.91963195800781 + label: + - image_intensity: + - max: 1205.1490478515625 + mean: 377.5160827636719 + median: 387.3693542480469 + min: 0.0 + percentile: [18.44615936279297, 135.27183532714844, 596.4258422851562, 694.8053588867188] + percentile_00_5: 18.44615936279297 + percentile_10_0: 135.27183532714844 + percentile_90_0: 596.4258422851562 + percentile_99_5: 694.8053588867188 + stdev: 173.19456481933594 + ncomponents: 1 + pixel_percentage: 0.9499667882919312 + shape: + - [34, 51, 33] + - image_intensity: + - max: 553.384765625 + mean: 280.5430908203125 + median: 270.5436706542969 + min: 18.44615936279297 + percentile: [122.97439575195312, 209.0564727783203, 362.77447509765625, 504.5950622558594] + percentile_00_5: 122.97439575195312 + percentile_10_0: 209.0564727783203 + percentile_90_0: 362.77447509765625 + percentile_99_5: 504.5950622558594 + stdev: 64.75131225585938 + ncomponents: 1 + pixel_percentage: 0.020761245861649513 + shape: + - [20, 15, 13] + - image_intensity: + - max: 602.5745239257812 + mean: 268.23468017578125 + median: 258.2462158203125 + min: 0.0 + percentile: [61.48719787597656, 190.61032104492188, 356.625732421875, 534.9385986328125] + percentile_00_5: 61.48719787597656 + percentile_10_0: 190.61032104492188 + percentile_90_0: 356.625732421875 + percentile_99_5: 534.9385986328125 + stdev: 76.1867904663086 + ncomponents: 1 + pixel_percentage: 0.029271958395838737 + shape: + - [23, 25, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_302.nii.gz + image_foreground_stats: + intensity: + - max: 834.0167236328125 + mean: 385.4877624511719 + median: 369.2593078613281 + min: 114.59771728515625 + percentile: [184.62965393066406, 273.76123046875, 522.0562744140625, 738.5186157226562] + percentile_00_5: 184.62965393066406 + percentile_10_0: 273.76123046875 + percentile_90_0: 522.0562744140625 + percentile_99_5: 738.5186157226562 + stdev: 102.15958404541016 + image_stats: + channels: 1 + cropped_shape: + - [35, 46, 39] + intensity: + - max: 3196.003173828125 + mean: 529.1419067382812 + median: 528.4227905273438 + min: 0.0 + percentile: [31.832698822021484, 222.8289031982422, 821.2836303710938, 935.88134765625] + percentile_00_5: 31.832698822021484 + percentile_10_0: 222.8289031982422 + percentile_90_0: 821.2836303710938 + percentile_99_5: 935.88134765625 + stdev: 238.73043823242188 + shape: + - [35, 46, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_302.nii.gz + label_stats: + image_intensity: + - max: 834.0167236328125 + mean: 385.4877624511719 + median: 369.2593078613281 + min: 114.59771728515625 + percentile: [184.62965393066406, 273.76123046875, 522.0562744140625, 738.5186157226562] + percentile_00_5: 184.62965393066406 + percentile_10_0: 273.76123046875 + percentile_90_0: 522.0562744140625 + percentile_99_5: 738.5186157226562 + stdev: 102.15958404541016 + label: + - image_intensity: + - max: 3196.003173828125 + mean: 538.5410766601562 + median: 553.8889770507812 + min: 0.0 + percentile: [31.832698822021484, 216.4623565673828, 827.6502075195312, 935.88134765625] + percentile_00_5: 31.832698822021484 + percentile_10_0: 216.4623565673828 + percentile_90_0: 827.6502075195312 + percentile_99_5: 935.88134765625 + stdev: 242.07383728027344 + ncomponents: 1 + pixel_percentage: 0.9385889768600464 + shape: + - [35, 46, 39] + - image_intensity: + - max: 763.9848022460938 + mean: 376.4040222167969 + median: 369.2593078613281 + min: 114.59771728515625 + percentile: [172.1512451171875, 273.76123046875, 496.5901184082031, 642.765625] + percentile_00_5: 172.1512451171875 + percentile_10_0: 273.76123046875 + percentile_90_0: 496.5901184082031 + percentile_99_5: 642.765625 + stdev: 86.19374084472656 + ncomponents: 1 + pixel_percentage: 0.03518076241016388 + shape: + - [23, 16, 18] + - image_intensity: + - max: 834.0167236328125 + mean: 397.6709899902344 + median: 369.2593078613281 + min: 152.79696655273438 + percentile: [190.99620056152344, 273.76123046875, 579.3551635742188, 756.154052734375] + percentile_00_5: 190.99620056152344 + percentile_10_0: 273.76123046875 + percentile_90_0: 579.3551635742188 + percentile_99_5: 756.154052734375 + stdev: 119.20923614501953 + ncomponents: 1 + pixel_percentage: 0.02623029053211212 + shape: + - [19, 20, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_361.nii.gz + image_foreground_stats: + intensity: + - max: 950.6585693359375 + mean: 448.9566650390625 + median: 436.2611389160156 + min: 71.62496185302734 + percentile: [156.27264404296875, 325.5679931640625, 592.5337524414062, 833.4541015625] + percentile_00_5: 156.27264404296875 + percentile_10_0: 325.5679931640625 + percentile_90_0: 592.5337524414062 + percentile_99_5: 833.4541015625 + stdev: 111.89103698730469 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 33] + intensity: + - max: 3027.782470703125 + mean: 538.6607666015625 + median: 546.9542236328125 + min: 0.0 + percentile: [19.534080505371094, 156.27264404296875, 839.9654541015625, 1015.7976684570312] + percentile_00_5: 19.534080505371094 + percentile_10_0: 156.27264404296875 + percentile_90_0: 839.9654541015625 + percentile_99_5: 1015.7976684570312 + stdev: 257.528564453125 + shape: + - [36, 50, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_361.nii.gz + label_stats: + image_intensity: + - max: 950.6585693359375 + mean: 448.9566650390625 + median: 436.2611389160156 + min: 71.62496185302734 + percentile: [156.27264404296875, 325.5679931640625, 592.5337524414062, 833.4541015625] + percentile_00_5: 156.27264404296875 + percentile_10_0: 325.5679931640625 + percentile_90_0: 592.5337524414062 + percentile_99_5: 833.4541015625 + stdev: 111.89103698730469 + label: + - image_intensity: + - max: 3027.782470703125 + mean: 543.6085205078125 + median: 559.9769897460938 + min: 0.0 + percentile: [19.534080505371094, 149.76129150390625, 846.476806640625, 1025.74267578125] + percentile_00_5: 19.534080505371094 + percentile_10_0: 149.76129150390625 + percentile_90_0: 846.476806640625 + percentile_99_5: 1025.74267578125 + stdev: 262.3359069824219 + ncomponents: 1 + pixel_percentage: 0.9477272629737854 + shape: + - [36, 50, 33] + - image_intensity: + - max: 839.9654541015625 + mean: 452.95843505859375 + median: 442.7724914550781 + min: 71.62496185302734 + percentile: [175.80673217773438, 332.0793762207031, 586.0223999023438, 768.3405151367188] + percentile_00_5: 175.80673217773438 + percentile_10_0: 332.0793762207031 + percentile_90_0: 586.0223999023438 + percentile_99_5: 768.3405151367188 + stdev: 102.94772338867188 + ncomponents: 1 + pixel_percentage: 0.029175084084272385 + shape: + - [20, 20, 15] + - image_intensity: + - max: 950.6585693359375 + mean: 443.90203857421875 + median: 423.2384033203125 + min: 84.6476821899414 + percentile: [129.28305053710938, 325.5679931640625, 604.905517578125, 861.3880615234375] + percentile_00_5: 129.28305053710938 + percentile_10_0: 325.5679931640625 + percentile_90_0: 604.905517578125 + percentile_99_5: 861.3880615234375 + stdev: 122.06863403320312 + ncomponents: 1 + pixel_percentage: 0.02309764362871647 + shape: + - [23, 21, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_261.nii.gz + image_foreground_stats: + intensity: + - max: 1071.8126220703125 + mean: 458.62286376953125 + median: 448.0528564453125 + min: 8.78534984588623 + percentile: [122.9948959350586, 316.2725830078125, 623.7598266601562, 904.8910522460938] + percentile_00_5: 122.9948959350586 + percentile_10_0: 316.2725830078125 + percentile_90_0: 623.7598266601562 + percentile_99_5: 904.8910522460938 + stdev: 127.81913757324219 + image_stats: + channels: 1 + cropped_shape: + - [36, 58, 33] + intensity: + - max: 2749.814453125 + mean: 648.9852905273438 + median: 632.545166015625 + min: 0.0 + percentile: [35.14139938354492, 254.775146484375, 1045.4566650390625, 1194.8076171875] + percentile_00_5: 35.14139938354492 + percentile_10_0: 254.775146484375 + percentile_90_0: 1045.4566650390625 + percentile_99_5: 1194.8076171875 + stdev: 298.7189025878906 + shape: + - [36, 58, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_261.nii.gz + label_stats: + image_intensity: + - max: 1071.8126220703125 + mean: 458.62286376953125 + median: 448.0528564453125 + min: 8.78534984588623 + percentile: [122.9948959350586, 316.2725830078125, 623.7598266601562, 904.8910522460938] + percentile_00_5: 122.9948959350586 + percentile_10_0: 316.2725830078125 + percentile_90_0: 623.7598266601562 + percentile_99_5: 904.8910522460938 + stdev: 127.81913757324219 + label: + - image_intensity: + - max: 2749.814453125 + mean: 660.9385986328125 + median: 667.6865844726562 + min: 0.0 + percentile: [35.14139938354492, 245.9897918701172, 1045.4566650390625, 1194.8076171875] + percentile_00_5: 35.14139938354492 + percentile_10_0: 245.9897918701172 + percentile_90_0: 1045.4566650390625 + percentile_99_5: 1194.8076171875 + stdev: 302.3109436035156 + ncomponents: 1 + pixel_percentage: 0.9409177899360657 + shape: + - [36, 58, 33] + - image_intensity: + - max: 1001.5299072265625 + mean: 459.870361328125 + median: 456.83819580078125 + min: 17.57069969177246 + percentile: [131.78024291992188, 307.48724365234375, 623.7598266601562, 817.0375366210938] + percentile_00_5: 131.78024291992188 + percentile_10_0: 307.48724365234375 + percentile_90_0: 623.7598266601562 + percentile_99_5: 817.0375366210938 + stdev: 126.04936218261719 + ncomponents: 1 + pixel_percentage: 0.03481655567884445 + shape: + - [24, 22, 14] + - image_intensity: + - max: 1071.8126220703125 + mean: 456.8329162597656 + median: 439.2674865722656 + min: 8.78534984588623 + percentile: [122.9948959350586, 316.2725830078125, 614.9744873046875, 948.8178100585938] + percentile_00_5: 122.9948959350586 + percentile_10_0: 316.2725830078125 + percentile_90_0: 614.9744873046875 + percentile_99_5: 948.8178100585938 + stdev: 130.2955780029297 + ncomponents: 1 + pixel_percentage: 0.024265645071864128 + shape: + - [21, 25, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_210.nii.gz + image_foreground_stats: + intensity: + - max: 414986.375 + mean: 206254.09375 + median: 199573.609375 + min: 38014.01953125 + percentile: [82363.7109375, 145720.40625, 275601.65625, 380140.1875] + percentile_00_5: 82363.7109375 + percentile_10_0: 145720.40625 + percentile_90_0: 275601.65625 + percentile_99_5: 380140.1875 + stdev: 53173.0078125 + image_stats: + channels: 1 + cropped_shape: + - [34, 48, 40] + intensity: + - max: 1704295.25 + mean: 279512.4375 + median: 291440.8125 + min: 0.0 + percentile: [15839.1748046875, 126713.3984375, 421322.0625, 478343.09375] + percentile_00_5: 15839.1748046875 + percentile_10_0: 126713.3984375 + percentile_90_0: 421322.0625 + percentile_99_5: 478343.09375 + stdev: 115614.6875 + shape: + - [34, 48, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_210.nii.gz + label_stats: + image_intensity: + - max: 414986.375 + mean: 206254.09375 + median: 199573.609375 + min: 38014.01953125 + percentile: [82363.7109375, 145720.40625, 275601.65625, 380140.1875] + percentile_00_5: 82363.7109375 + percentile_10_0: 145720.40625 + percentile_90_0: 275601.65625 + percentile_99_5: 380140.1875 + stdev: 53173.0078125 + label: + - image_intensity: + - max: 1704295.25 + mean: 283035.09375 + median: 297776.5 + min: 0.0 + percentile: [15839.1748046875, 123545.5625, 421322.0625, 478343.09375] + percentile_00_5: 15839.1748046875 + percentile_10_0: 123545.5625 + percentile_90_0: 421322.0625 + percentile_99_5: 478343.09375 + stdev: 116632.2265625 + ncomponents: 1 + pixel_percentage: 0.9541206955909729 + shape: + - [34, 48, 40] + - image_intensity: + - max: 383308.03125 + mean: 206254.8125 + median: 202741.4375 + min: 38014.01953125 + percentile: [79195.875, 152056.078125, 269265.96875, 335790.5] + percentile_00_5: 79195.875 + percentile_10_0: 152056.078125 + percentile_90_0: 269265.96875 + percentile_99_5: 335790.5 + stdev: 47527.3359375 + ncomponents: 1 + pixel_percentage: 0.025137867778539658 + shape: + - [22, 16, 13] + - image_intensity: + - max: 414986.375 + mean: 206253.1875 + median: 196405.765625 + min: 47517.5234375 + percentile: [95035.046875, 139384.734375, 288272.96875, 391876.875] + percentile_00_5: 95035.046875 + percentile_10_0: 139384.734375 + percentile_90_0: 288272.96875 + percentile_99_5: 391876.875 + stdev: 59299.2109375 + ncomponents: 1 + pixel_percentage: 0.020741421729326248 + shape: + - [18, 23, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_310.nii.gz + image_foreground_stats: + intensity: + - max: 1100.571044921875 + mean: 472.1031494140625 + median: 438.57342529296875 + min: 49.649818420410156 + percentile: [107.5746078491211, 281.3489685058594, 719.9224243164062, 984.721435546875] + percentile_00_5: 107.5746078491211 + percentile_10_0: 281.3489685058594 + percentile_90_0: 719.9224243164062 + percentile_99_5: 984.721435546875 + stdev: 175.29486083984375 + image_stats: + channels: 1 + cropped_shape: + - [35, 52, 38] + intensity: + - max: 4542.95849609375 + mean: 633.7997436523438 + median: 653.72265625 + min: 0.0 + percentile: [33.09988021850586, 223.4241943359375, 976.4464721679688, 1282.620361328125] + percentile_00_5: 33.09988021850586 + percentile_10_0: 223.4241943359375 + percentile_90_0: 976.4464721679688 + percentile_99_5: 1282.620361328125 + stdev: 314.14697265625 + shape: + - [35, 52, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_310.nii.gz + label_stats: + image_intensity: + - max: 1100.571044921875 + mean: 472.1031494140625 + median: 438.57342529296875 + min: 49.649818420410156 + percentile: [107.5746078491211, 281.3489685058594, 719.9224243164062, 984.721435546875] + percentile_00_5: 107.5746078491211 + percentile_10_0: 281.3489685058594 + percentile_90_0: 719.9224243164062 + percentile_99_5: 984.721435546875 + stdev: 175.29486083984375 + label: + - image_intensity: + - max: 4542.95849609375 + mean: 643.1300659179688 + median: 678.5475463867188 + min: 0.0 + percentile: [33.09988021850586, 215.1492156982422, 984.721435546875, 1341.126953125] + percentile_00_5: 33.09988021850586 + percentile_10_0: 215.1492156982422 + percentile_90_0: 984.721435546875 + percentile_99_5: 1341.126953125 + stdev: 317.82708740234375 + ncomponents: 1 + pixel_percentage: 0.9454453587532043 + shape: + - [35, 52, 38] + - image_intensity: + - max: 1059.1961669921875 + mean: 480.5111389160156 + median: 455.12335205078125 + min: 49.649818420410156 + percentile: [83.65994262695312, 291.2789306640625, 695.0974731445312, 984.721435546875] + percentile_00_5: 83.65994262695312 + percentile_10_0: 291.2789306640625 + percentile_90_0: 695.0974731445312 + percentile_99_5: 984.721435546875 + stdev: 168.72547912597656 + ncomponents: 1 + pixel_percentage: 0.02635916694998741 + shape: + - [21, 15, 16] + - image_intensity: + - max: 1100.571044921875 + mean: 464.2427673339844 + median: 422.0234680175781 + min: 82.74970245361328 + percentile: [132.39952087402344, 281.3489685058594, 753.8495483398438, 984.721435546875] + percentile_00_5: 132.39952087402344 + percentile_10_0: 281.3489685058594 + percentile_90_0: 753.8495483398438 + percentile_99_5: 984.721435546875 + stdev: 180.86798095703125 + ncomponents: 1 + pixel_percentage: 0.028195489197969437 + shape: + - [22, 26, 26] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_373.nii.gz + image_foreground_stats: + intensity: + - max: 760.7896728515625 + mean: 364.38739013671875 + median: 354.6053466796875 + min: 64.47370147705078 + percentile: [174.07899475097656, 264.3421630859375, 483.5527648925781, 670.5264892578125] + percentile_00_5: 174.07899475097656 + percentile_10_0: 264.3421630859375 + percentile_90_0: 483.5527648925781 + percentile_99_5: 670.5264892578125 + stdev: 90.96696472167969 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 35] + intensity: + - max: 1624.7373046875 + mean: 451.407470703125 + median: 451.31591796875 + min: 0.0 + percentile: [25.789480209350586, 167.63162231445312, 709.210693359375, 818.8159790039062] + percentile_00_5: 25.789480209350586 + percentile_10_0: 167.63162231445312 + percentile_90_0: 709.210693359375 + percentile_99_5: 818.8159790039062 + stdev: 201.9655303955078 + shape: + - [34, 49, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_373.nii.gz + label_stats: + image_intensity: + - max: 760.7896728515625 + mean: 364.38739013671875 + median: 354.6053466796875 + min: 64.47370147705078 + percentile: [174.07899475097656, 264.3421630859375, 483.5527648925781, 670.5264892578125] + percentile_00_5: 174.07899475097656 + percentile_10_0: 264.3421630859375 + percentile_90_0: 483.5527648925781 + percentile_99_5: 670.5264892578125 + stdev: 90.96696472167969 + label: + - image_intensity: + - max: 1624.7373046875 + mean: 457.2846374511719 + median: 470.65802001953125 + min: 0.0 + percentile: [25.789480209350586, 161.1842498779297, 715.6580810546875, 818.8159790039062] + percentile_00_5: 25.789480209350586 + percentile_10_0: 161.1842498779297 + percentile_90_0: 715.6580810546875 + percentile_99_5: 818.8159790039062 + stdev: 206.00997924804688 + ncomponents: 1 + pixel_percentage: 0.936734676361084 + shape: + - [34, 49, 35] + - image_intensity: + - max: 670.5264892578125 + mean: 364.8622131347656 + median: 361.052734375 + min: 64.47370147705078 + percentile: [170.24281311035156, 264.3421630859375, 470.65802001953125, 620.1721801757812] + percentile_00_5: 170.24281311035156 + percentile_10_0: 264.3421630859375 + percentile_90_0: 470.65802001953125 + percentile_99_5: 620.1721801757812 + stdev: 81.29158020019531 + ncomponents: 1 + pixel_percentage: 0.032275766134262085 + shape: + - [24, 15, 15] + - image_intensity: + - max: 760.7896728515625 + mean: 363.8928527832031 + median: 341.7106018066406 + min: 128.94740295410156 + percentile: [174.07899475097656, 257.8948059082031, 502.8948669433594, 702.5697021484375] + percentile_00_5: 174.07899475097656 + percentile_10_0: 257.8948059082031 + percentile_90_0: 502.8948669433594 + percentile_99_5: 702.5697021484375 + stdev: 100.0517578125 + ncomponents: 1 + pixel_percentage: 0.03098953887820244 + shape: + - [20, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_355.nii.gz + image_foreground_stats: + intensity: + - max: 1228.683837890625 + mean: 504.0153503417969 + median: 488.5128479003906 + min: 88.82051849365234 + percentile: [249.215576171875, 384.888916015625, 643.9487915039062, 1006.632568359375] + percentile_00_5: 249.215576171875 + percentile_10_0: 384.888916015625 + percentile_90_0: 643.9487915039062 + percentile_99_5: 1006.632568359375 + stdev: 117.16046142578125 + image_stats: + channels: 1 + cropped_shape: + - [33, 47, 38] + intensity: + - max: 4418.82080078125 + mean: 708.53857421875 + median: 710.5641479492188 + min: 0.0 + percentile: [51.81196975708008, 355.2820739746094, 1073.2479248046875, 1364.256591796875] + percentile_00_5: 51.81196975708008 + percentile_10_0: 355.2820739746094 + percentile_90_0: 1073.2479248046875 + percentile_99_5: 1364.256591796875 + stdev: 301.9975280761719 + shape: + - [33, 47, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_355.nii.gz + label_stats: + image_intensity: + - max: 1228.683837890625 + mean: 504.0153503417969 + median: 488.5128479003906 + min: 88.82051849365234 + percentile: [249.215576171875, 384.888916015625, 643.9487915039062, 1006.632568359375] + percentile_00_5: 249.215576171875 + percentile_10_0: 384.888916015625 + percentile_90_0: 643.9487915039062 + percentile_99_5: 1006.632568359375 + stdev: 117.16046142578125 + label: + - image_intensity: + - max: 4418.82080078125 + mean: 720.8057250976562 + median: 740.1710205078125 + min: 0.0 + percentile: [51.81196975708008, 347.88037109375, 1080.649658203125, 1398.9232177734375] + percentile_00_5: 51.81196975708008 + percentile_10_0: 347.88037109375 + percentile_90_0: 1080.649658203125 + percentile_99_5: 1398.9232177734375 + stdev: 305.2704162597656 + ncomponents: 1 + pixel_percentage: 0.943415105342865 + shape: + - [33, 47, 38] + - image_intensity: + - max: 851.1966552734375 + mean: 496.3825378417969 + median: 488.5128479003906 + min: 111.02565002441406 + percentile: [236.85472106933594, 384.888916015625, 629.1453247070312, 791.9829711914062] + percentile_00_5: 236.85472106933594 + percentile_10_0: 384.888916015625 + percentile_90_0: 629.1453247070312 + percentile_99_5: 791.9829711914062 + stdev: 98.83036041259766 + ncomponents: 1 + pixel_percentage: 0.030862940475344658 + shape: + - [20, 17, 16] + - image_intensity: + - max: 1228.683837890625 + mean: 513.173828125 + median: 488.5128479003906 + min: 88.82051849365234 + percentile: [263.3158264160156, 377.4872131347656, 673.5556030273438, 1080.649658203125] + percentile_00_5: 263.3158264160156 + percentile_10_0: 377.4872131347656 + percentile_90_0: 673.5556030273438 + percentile_99_5: 1080.649658203125 + stdev: 135.36334228515625 + ncomponents: 1 + pixel_percentage: 0.025721944868564606 + shape: + - [20, 22, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_328.nii.gz + image_foreground_stats: + intensity: + - max: 357783.03125 + mean: 163963.53125 + median: 157424.53125 + min: 21466.982421875 + percentile: [64400.9453125, 107334.90625, 225403.3125, 301324.75] + percentile_00_5: 64400.9453125 + percentile_10_0: 107334.90625 + percentile_90_0: 225403.3125 + percentile_99_5: 301324.75 + stdev: 45672.07421875 + image_stats: + channels: 1 + cropped_shape: + - [38, 54, 30] + intensity: + - max: 550985.875 + mean: 202140.015625 + median: 203936.328125 + min: 0.0 + percentile: [10733.4912109375, 64400.9453125, 318426.90625, 364938.6875] + percentile_00_5: 10733.4912109375 + percentile_10_0: 64400.9453125 + percentile_90_0: 318426.90625 + percentile_99_5: 364938.6875 + stdev: 94968.515625 + shape: + - [38, 54, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_328.nii.gz + label_stats: + image_intensity: + - max: 357783.03125 + mean: 163963.53125 + median: 157424.53125 + min: 21466.982421875 + percentile: [64400.9453125, 107334.90625, 225403.3125, 301324.75] + percentile_00_5: 64400.9453125 + percentile_10_0: 107334.90625 + percentile_90_0: 225403.3125 + percentile_99_5: 301324.75 + stdev: 45672.07421875 + label: + - image_intensity: + - max: 550985.875 + mean: 204762.53125 + median: 214669.8125 + min: 0.0 + percentile: [7155.66064453125, 60823.1171875, 322004.71875, 364938.6875] + percentile_00_5: 7155.66064453125 + percentile_10_0: 60823.1171875 + percentile_90_0: 322004.71875 + percentile_99_5: 364938.6875 + stdev: 96893.171875 + ncomponents: 1 + pixel_percentage: 0.935721218585968 + shape: + - [38, 54, 30] + - image_intensity: + - max: 318426.90625 + mean: 165921.6875 + median: 161002.359375 + min: 21466.982421875 + percentile: [60286.44140625, 114490.5703125, 225403.3125, 283184.90625] + percentile_00_5: 60286.44140625 + percentile_10_0: 114490.5703125 + percentile_90_0: 225403.3125 + percentile_99_5: 283184.90625 + stdev: 44026.76171875 + ncomponents: 1 + pixel_percentage: 0.03851526975631714 + shape: + - [27, 20, 14] + - image_intensity: + - max: 357783.03125 + mean: 161036.203125 + median: 157424.53125 + min: 46511.79296875 + percentile: [67710.4375, 103757.078125, 225403.3125, 315117.21875] + percentile_00_5: 67710.4375 + percentile_10_0: 103757.078125 + percentile_90_0: 225403.3125 + percentile_99_5: 315117.21875 + stdev: 47877.62109375 + ncomponents: 1 + pixel_percentage: 0.025763481855392456 + shape: + - [20, 23, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_228.nii.gz + image_foreground_stats: + intensity: + - max: 918.948486328125 + mean: 458.2905578613281 + median: 446.3464050292969 + min: 8.751890182495117 + percentile: [70.01512145996094, 315.06805419921875, 638.8880004882812, 848.933349609375] + percentile_00_5: 70.01512145996094 + percentile_10_0: 315.06805419921875 + percentile_90_0: 638.8880004882812 + percentile_99_5: 848.933349609375 + stdev: 132.481689453125 + image_stats: + channels: 1 + cropped_shape: + - [37, 48, 36] + intensity: + - max: 2109.20556640625 + mean: 572.3313598632812 + median: 586.3766479492188 + min: 0.0 + percentile: [26.25567054748535, 140.03024291992188, 927.7003784179688, 1058.978759765625] + percentile_00_5: 26.25567054748535 + percentile_10_0: 140.03024291992188 + percentile_90_0: 927.7003784179688 + percentile_99_5: 1058.978759765625 + stdev: 281.057861328125 + shape: + - [37, 48, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_228.nii.gz + label_stats: + image_intensity: + - max: 918.948486328125 + mean: 458.2905578613281 + median: 446.3464050292969 + min: 8.751890182495117 + percentile: [70.01512145996094, 315.06805419921875, 638.8880004882812, 848.933349609375] + percentile_00_5: 70.01512145996094 + percentile_10_0: 315.06805419921875 + percentile_90_0: 638.8880004882812 + percentile_99_5: 848.933349609375 + stdev: 132.481689453125 + label: + - image_intensity: + - max: 2109.20556640625 + mean: 579.2781372070312 + median: 612.63232421875 + min: 0.0 + percentile: [26.25567054748535, 140.03024291992188, 927.7003784179688, 1058.978759765625] + percentile_00_5: 26.25567054748535 + percentile_10_0: 140.03024291992188 + percentile_90_0: 927.7003784179688 + percentile_99_5: 1058.978759765625 + stdev: 286.1743469238281 + ncomponents: 1 + pixel_percentage: 0.9425832033157349 + shape: + - [37, 48, 36] + - image_intensity: + - max: 918.948486328125 + mean: 469.20977783203125 + median: 446.3464050292969 + min: 8.751890182495117 + percentile: [132.67864990234375, 341.32373046875, 638.8880004882812, 847.5327758789062] + percentile_00_5: 132.67864990234375 + percentile_10_0: 341.32373046875 + percentile_90_0: 638.8880004882812 + percentile_99_5: 847.5327758789062 + stdev: 119.2213134765625 + ncomponents: 1 + pixel_percentage: 0.03179742395877838 + shape: + - [26, 15, 15] + - image_intensity: + - max: 910.1965942382812 + mean: 444.7381591796875 + median: 428.8426208496094 + min: 8.751890182495117 + percentile: [61.26322937011719, 280.06048583984375, 647.639892578125, 847.3148193359375] + percentile_00_5: 61.26322937011719 + percentile_10_0: 280.06048583984375 + percentile_90_0: 647.639892578125 + percentile_99_5: 847.3148193359375 + stdev: 146.15847778320312 + ncomponents: 1 + pixel_percentage: 0.025619369000196457 + shape: + - [20, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_181.nii.gz + image_foreground_stats: + intensity: + - max: 319240.8125 + mean: 152884.375 + median: 147101.171875 + min: 28168.30859375 + percentile: [81375.109375, 112673.234375, 200307.96875, 289648.21875] + percentile_00_5: 81375.109375 + percentile_10_0: 112673.234375 + percentile_90_0: 200307.96875 + percentile_99_5: 289648.21875 + stdev: 38356.23828125 + image_stats: + channels: 1 + cropped_shape: + - [33, 49, 40] + intensity: + - max: 544587.3125 + mean: 205685.015625 + median: 209697.40625 + min: 0.0 + percentile: [9389.435546875, 81375.109375, 319240.8125, 364953.1875] + percentile_00_5: 9389.435546875 + percentile_10_0: 81375.109375 + percentile_90_0: 319240.8125 + percentile_99_5: 364953.1875 + stdev: 91072.5390625 + shape: + - [33, 49, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_181.nii.gz + label_stats: + image_intensity: + - max: 319240.8125 + mean: 152884.375 + median: 147101.171875 + min: 28168.30859375 + percentile: [81375.109375, 112673.234375, 200307.96875, 289648.21875] + percentile_00_5: 81375.109375 + percentile_10_0: 112673.234375 + percentile_90_0: 200307.96875 + percentile_99_5: 289648.21875 + stdev: 38356.23828125 + label: + - image_intensity: + - max: 544587.3125 + mean: 208881.40625 + median: 219086.84375 + min: 0.0 + percentile: [9389.435546875, 75115.484375, 319240.8125, 366188.0] + percentile_00_5: 9389.435546875 + percentile_10_0: 75115.484375 + percentile_90_0: 319240.8125 + percentile_99_5: 366188.0 + stdev: 92348.59375 + ncomponents: 1 + pixel_percentage: 0.9429189562797546 + shape: + - [33, 49, 40] + - image_intensity: + - max: 319240.8125 + mean: 154336.5625 + median: 150230.96875 + min: 28168.30859375 + percentile: [83910.2578125, 115803.046875, 200307.96875, 270353.5625] + percentile_00_5: 83910.2578125 + percentile_10_0: 115803.046875 + percentile_90_0: 200307.96875 + percentile_99_5: 270353.5625 + stdev: 34939.140625 + ncomponents: 1 + pixel_percentage: 0.03034941293299198 + shape: + - [21, 16, 16] + - image_intensity: + - max: 319240.8125 + mean: 151235.640625 + median: 143971.359375 + min: 71985.6796875 + percentile: [80248.375, 109543.421875, 203437.78125, 295329.03125] + percentile_00_5: 80248.375 + percentile_10_0: 109543.421875 + percentile_90_0: 203437.78125 + percentile_99_5: 295329.03125 + stdev: 41838.28515625 + ncomponents: 1 + pixel_percentage: 0.026731600984930992 + shape: + - [19, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_336.nii.gz + image_foreground_stats: + intensity: + - max: 781.4168701171875 + mean: 433.3476257324219 + median: 426.2273864746094 + min: 134.9720001220703 + percentile: [191.8023223876953, 312.5667419433594, 554.0955810546875, 717.4827880859375] + percentile_00_5: 191.8023223876953 + percentile_10_0: 312.5667419433594 + percentile_90_0: 554.0955810546875 + percentile_99_5: 717.4827880859375 + stdev: 95.58057403564453 + image_stats: + channels: 1 + cropped_shape: + - [34, 47, 43] + intensity: + - max: 1150.81396484375 + mean: 511.9390869140625 + median: 539.8880004882812 + min: 0.0 + percentile: [28.415159225463867, 191.8023223876953, 774.3131103515625, 923.49267578125] + percentile_00_5: 28.415159225463867 + percentile_10_0: 191.8023223876953 + percentile_90_0: 774.3131103515625 + percentile_99_5: 923.49267578125 + stdev: 214.49301147460938 + shape: + - [34, 47, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_336.nii.gz + label_stats: + image_intensity: + - max: 781.4168701171875 + mean: 433.3476257324219 + median: 426.2273864746094 + min: 134.9720001220703 + percentile: [191.8023223876953, 312.5667419433594, 554.0955810546875, 717.4827880859375] + percentile_00_5: 191.8023223876953 + percentile_10_0: 312.5667419433594 + percentile_90_0: 554.0955810546875 + percentile_99_5: 717.4827880859375 + stdev: 95.58057403564453 + label: + - image_intensity: + - max: 1150.81396484375 + mean: 515.0211181640625 + median: 546.9918212890625 + min: 0.0 + percentile: [28.415159225463867, 191.8023223876953, 774.3131103515625, 930.596435546875] + percentile_00_5: 28.415159225463867 + percentile_10_0: 191.8023223876953 + percentile_90_0: 774.3131103515625 + percentile_99_5: 930.596435546875 + stdev: 217.259033203125 + ncomponents: 1 + pixel_percentage: 0.9622638821601868 + shape: + - [34, 47, 43] + - image_intensity: + - max: 781.4168701171875 + mean: 428.400146484375 + median: 426.2273864746094 + min: 134.9720001220703 + percentile: [177.59474182128906, 298.3591613769531, 561.1994018554688, 731.6903686523438] + percentile_00_5: 177.59474182128906 + percentile_10_0: 298.3591613769531 + percentile_90_0: 561.1994018554688 + percentile_99_5: 731.6903686523438 + stdev: 103.08023834228516 + ncomponents: 1 + pixel_percentage: 0.018889890983700752 + shape: + - [20, 15, 17] + - image_intensity: + - max: 731.6903686523438 + mean: 438.3065490722656 + median: 433.3311767578125 + min: 198.90611267089844 + percentile: [248.6326446533203, 326.7743225097656, 554.0955810546875, 696.17138671875] + percentile_00_5: 248.6326446533203 + percentile_10_0: 326.7743225097656 + percentile_90_0: 554.0955810546875 + percentile_99_5: 696.17138671875 + stdev: 87.13884735107422 + ncomponents: 1 + pixel_percentage: 0.018846232444047928 + shape: + - [21, 20, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_236.nii.gz + image_foreground_stats: + intensity: + - max: 668.9650268554688 + mean: 293.0712890625 + median: 287.59246826171875 + min: 37.51205825805664 + percentile: [90.27902221679688, 187.560302734375, 406.3806457519531, 569.6838989257812] + percentile_00_5: 90.27902221679688 + percentile_10_0: 187.560302734375 + percentile_90_0: 406.3806457519531 + percentile_99_5: 569.6838989257812 + stdev: 88.64779663085938 + image_stats: + channels: 1 + cropped_shape: + - [37, 57, 35] + intensity: + - max: 925.2974853515625 + mean: 367.3116455078125 + median: 368.86859130859375 + min: 0.0 + percentile: [18.75602912902832, 106.28416442871094, 612.6969604492188, 731.4851684570312] + percentile_00_5: 18.75602912902832 + percentile_10_0: 106.28416442871094 + percentile_90_0: 612.6969604492188 + percentile_99_5: 731.4851684570312 + stdev: 184.46766662597656 + shape: + - [37, 57, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_236.nii.gz + label_stats: + image_intensity: + - max: 668.9650268554688 + mean: 293.0712890625 + median: 287.59246826171875 + min: 37.51205825805664 + percentile: [90.27902221679688, 187.560302734375, 406.3806457519531, 569.6838989257812] + percentile_00_5: 90.27902221679688 + percentile_10_0: 187.560302734375 + percentile_90_0: 406.3806457519531 + percentile_99_5: 569.6838989257812 + stdev: 88.64779663085938 + label: + - image_intensity: + - max: 925.2974853515625 + mean: 370.55413818359375 + median: 375.12060546875 + min: 0.0 + percentile: [18.75602912902832, 106.28416442871094, 612.6969604492188, 731.4851684570312] + percentile_00_5: 18.75602912902832 + percentile_10_0: 106.28416442871094 + percentile_90_0: 612.6969604492188 + percentile_99_5: 731.4851684570312 + stdev: 186.86911010742188 + ncomponents: 1 + pixel_percentage: 0.9581521153450012 + shape: + - [37, 57, 35] + - image_intensity: + - max: 612.6969604492188 + mean: 298.50897216796875 + median: 293.8444519042969 + min: 68.77210998535156 + percentile: [87.52813720703125, 193.8123016357422, 406.3806457519531, 531.6085815429688] + percentile_00_5: 87.52813720703125 + percentile_10_0: 193.8123016357422 + percentile_90_0: 406.3806457519531 + percentile_99_5: 531.6085815429688 + stdev: 82.6881103515625 + ncomponents: 1 + pixel_percentage: 0.021608075127005577 + shape: + - [19, 18, 13] + - image_intensity: + - max: 668.9650268554688 + mean: 287.26605224609375 + median: 275.08843994140625 + min: 37.51205825805664 + percentile: [93.7801513671875, 175.0562744140625, 406.3806457519531, 591.033935546875] + percentile_00_5: 93.7801513671875 + percentile_10_0: 175.0562744140625 + percentile_90_0: 406.3806457519531 + percentile_99_5: 591.033935546875 + stdev: 94.25127410888672 + ncomponents: 1 + pixel_percentage: 0.02023978903889656 + shape: + - [20, 27, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_259.nii.gz + image_foreground_stats: + intensity: + - max: 964.0927734375 + mean: 427.233154296875 + median: 413.1826171875 + min: 76.51529693603516 + percentile: [206.59130859375, 306.0611877441406, 581.5162353515625, 806.5097045898438] + percentile_00_5: 206.59130859375 + percentile_10_0: 306.0611877441406 + percentile_90_0: 581.5162353515625 + percentile_99_5: 806.5097045898438 + stdev: 112.76705169677734 + image_stats: + channels: 1 + cropped_shape: + - [33, 51, 28] + intensity: + - max: 1124.77490234375 + mean: 490.737060546875 + median: 497.34942626953125 + min: 0.0 + percentile: [15.303059577941895, 122.42447662353516, 803.41064453125, 918.18359375] + percentile_00_5: 15.303059577941895 + percentile_10_0: 122.42447662353516 + percentile_90_0: 803.41064453125 + percentile_99_5: 918.18359375 + stdev: 245.4291229248047 + shape: + - [33, 51, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_259.nii.gz + label_stats: + image_intensity: + - max: 964.0927734375 + mean: 427.233154296875 + median: 413.1826171875 + min: 76.51529693603516 + percentile: [206.59130859375, 306.0611877441406, 581.5162353515625, 806.5097045898438] + percentile_00_5: 206.59130859375 + percentile_10_0: 306.0611877441406 + percentile_90_0: 581.5162353515625 + percentile_99_5: 806.5097045898438 + stdev: 112.76705169677734 + label: + - image_intensity: + - max: 1124.77490234375 + mean: 494.9320068359375 + median: 512.6524658203125 + min: 0.0 + percentile: [15.303059577941895, 114.77294921875, 811.0621337890625, 918.18359375] + percentile_00_5: 15.303059577941895 + percentile_10_0: 114.77294921875 + percentile_90_0: 811.0621337890625 + percentile_99_5: 918.18359375 + stdev: 251.1781005859375 + ncomponents: 1 + pixel_percentage: 0.9380358457565308 + shape: + - [33, 51, 28] + - image_intensity: + - max: 948.7896728515625 + mean: 431.8481750488281 + median: 420.8341369628906 + min: 114.77294921875 + percentile: [204.1810760498047, 313.71270751953125, 566.2131958007812, 775.2152099609375] + percentile_00_5: 204.1810760498047 + percentile_10_0: 313.71270751953125 + percentile_90_0: 566.2131958007812 + percentile_99_5: 775.2152099609375 + stdev: 105.70890808105469 + ncomponents: 1 + pixel_percentage: 0.028393175452947617 + shape: + - [18, 14, 11] + - image_intensity: + - max: 964.0927734375 + mean: 423.329833984375 + median: 397.8795471191406 + min: 76.51529693603516 + percentile: [213.51593017578125, 298.40966796875, 589.1677856445312, 841.6682739257812] + percentile_00_5: 213.51593017578125 + percentile_10_0: 298.40966796875 + percentile_90_0: 589.1677856445312 + percentile_99_5: 841.6682739257812 + stdev: 118.26814270019531 + ncomponents: 1 + pixel_percentage: 0.03357100486755371 + shape: + - [21, 27, 15] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_359.nii.gz + image_foreground_stats: + intensity: + - max: 614.1275634765625 + mean: 292.4081115722656 + median: 280.46771240234375 + min: 14.506950378417969 + percentile: [106.3843002319336, 212.7686004638672, 401.35894775390625, 560.9354248046875] + percentile_00_5: 106.3843002319336 + percentile_10_0: 212.7686004638672 + percentile_90_0: 401.35894775390625 + percentile_99_5: 560.9354248046875 + stdev: 79.32801818847656 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 35] + intensity: + - max: 1702.1488037109375 + mean: 374.8037109375 + median: 386.85198974609375 + min: 0.0 + percentile: [19.342599868774414, 130.5625457763672, 580.2780151367188, 686.6622924804688] + percentile_00_5: 19.342599868774414 + percentile_10_0: 130.5625457763672 + percentile_90_0: 580.2780151367188 + percentile_99_5: 686.6622924804688 + stdev: 167.26123046875 + shape: + - [35, 49, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_359.nii.gz + label_stats: + image_intensity: + - max: 614.1275634765625 + mean: 292.4081115722656 + median: 280.46771240234375 + min: 14.506950378417969 + percentile: [106.3843002319336, 212.7686004638672, 401.35894775390625, 560.9354248046875] + percentile_00_5: 106.3843002319336 + percentile_10_0: 212.7686004638672 + percentile_90_0: 401.35894775390625 + percentile_99_5: 560.9354248046875 + stdev: 79.32801818847656 + label: + - image_intensity: + - max: 1702.1488037109375 + mean: 378.58526611328125 + median: 396.5232849121094 + min: 0.0 + percentile: [14.506950378417969, 125.72689819335938, 585.1136474609375, 691.4979248046875] + percentile_00_5: 14.506950378417969 + percentile_10_0: 125.72689819335938 + percentile_90_0: 585.1136474609375 + percentile_99_5: 691.4979248046875 + stdev: 169.2501220703125 + ncomponents: 1 + pixel_percentage: 0.9561182856559753 + shape: + - [35, 49, 35] + - image_intensity: + - max: 599.62060546875 + mean: 293.7523498535156 + median: 285.3033447265625 + min: 38.68519973754883 + percentile: [103.02352142333984, 212.7686004638672, 396.5232849121094, 531.9215087890625] + percentile_00_5: 103.02352142333984 + percentile_10_0: 212.7686004638672 + percentile_90_0: 396.5232849121094 + percentile_99_5: 531.9215087890625 + stdev: 77.08060455322266 + ncomponents: 1 + pixel_percentage: 0.02102457359433174 + shape: + - [17, 14, 15] + - image_intensity: + - max: 614.1275634765625 + mean: 291.17169189453125 + median: 275.6320495605469 + min: 14.506950378417969 + percentile: [115.35443115234375, 212.7686004638672, 405.7111511230469, 565.7710571289062] + percentile_00_5: 115.35443115234375 + percentile_10_0: 212.7686004638672 + percentile_90_0: 405.7111511230469 + percentile_99_5: 565.7710571289062 + stdev: 81.32081604003906 + ncomponents: 1 + pixel_percentage: 0.022857142612338066 + shape: + - [19, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_224.nii.gz + image_foreground_stats: + intensity: + - max: 1247.5689697265625 + mean: 496.7711486816406 + median: 472.5639953613281 + min: 9.451279640197754 + percentile: [94.5127944946289, 330.7947998046875, 699.3947143554688, 1029.2918701171875] + percentile_00_5: 94.5127944946289 + percentile_10_0: 330.7947998046875 + percentile_90_0: 699.3947143554688 + percentile_99_5: 1029.2918701171875 + stdev: 154.0909881591797 + image_stats: + channels: 1 + cropped_shape: + - [37, 48, 37] + intensity: + - max: 2882.640380859375 + mean: 674.6968994140625 + median: 680.4921264648438 + min: 0.0 + percentile: [37.805118560791016, 207.9281463623047, 1086.897216796875, 1228.6663818359375] + percentile_00_5: 37.805118560791016 + percentile_10_0: 207.9281463623047 + percentile_90_0: 1086.897216796875 + percentile_99_5: 1228.6663818359375 + stdev: 331.7510070800781 + shape: + - [37, 48, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_224.nii.gz + label_stats: + image_intensity: + - max: 1247.5689697265625 + mean: 496.7711486816406 + median: 472.5639953613281 + min: 9.451279640197754 + percentile: [94.5127944946289, 330.7947998046875, 699.3947143554688, 1029.2918701171875] + percentile_00_5: 94.5127944946289 + percentile_10_0: 330.7947998046875 + percentile_90_0: 699.3947143554688 + percentile_99_5: 1029.2918701171875 + stdev: 154.0909881591797 + label: + - image_intensity: + - max: 2882.640380859375 + mean: 685.6785278320312 + median: 718.2972412109375 + min: 0.0 + percentile: [37.805118560791016, 198.47686767578125, 1096.348388671875, 1228.6663818359375] + percentile_00_5: 37.805118560791016 + percentile_10_0: 198.47686767578125 + percentile_90_0: 1096.348388671875 + percentile_99_5: 1228.6663818359375 + stdev: 336.6178894042969 + ncomponents: 1 + pixel_percentage: 0.9418675303459167 + shape: + - [37, 48, 37] + - image_intensity: + - max: 1247.5689697265625 + mean: 510.3318786621094 + median: 491.466552734375 + min: 66.1589584350586 + percentile: [226.83071899414062, 359.14862060546875, 699.3947143554688, 954.5792236328125] + percentile_00_5: 226.83071899414062 + percentile_10_0: 359.14862060546875 + percentile_90_0: 699.3947143554688 + percentile_99_5: 954.5792236328125 + stdev: 136.75819396972656 + ncomponents: 1 + pixel_percentage: 0.030938033014535904 + shape: + - [24, 17, 15] + - image_intensity: + - max: 1171.9586181640625 + mean: 481.34356689453125 + median: 453.66143798828125 + min: 9.451279640197754 + percentile: [66.1589584350586, 302.4409484863281, 699.3947143554688, 1078.108154296875] + percentile_00_5: 66.1589584350586 + percentile_10_0: 302.4409484863281 + percentile_90_0: 699.3947143554688 + percentile_99_5: 1078.108154296875 + stdev: 170.3878631591797 + ncomponents: 1 + pixel_percentage: 0.027194423601031303 + shape: + - [20, 21, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_093.nii.gz + image_foreground_stats: + intensity: + - max: 1070.18994140625 + mean: 485.3583984375 + median: 469.23712158203125 + min: 41.16115188598633 + percentile: [214.03797912597656, 362.2181396484375, 633.8817138671875, 875.0442504882812] + percentile_00_5: 214.03797912597656 + percentile_10_0: 362.2181396484375 + percentile_90_0: 633.8817138671875 + percentile_99_5: 875.0442504882812 + stdev: 115.0201187133789 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 37] + intensity: + - max: 1720.5361328125 + mean: 626.3839721679688 + median: 609.18505859375 + min: 0.0 + percentile: [32.92892074584961, 263.4313659667969, 996.099853515625, 1136.0477294921875] + percentile_00_5: 32.92892074584961 + percentile_10_0: 263.4313659667969 + percentile_90_0: 996.099853515625 + percentile_99_5: 1136.0477294921875 + stdev: 276.8793640136719 + shape: + - [34, 53, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_093.nii.gz + label_stats: + image_intensity: + - max: 1070.18994140625 + mean: 485.3583984375 + median: 469.23712158203125 + min: 41.16115188598633 + percentile: [214.03797912597656, 362.2181396484375, 633.8817138671875, 875.0442504882812] + percentile_00_5: 214.03797912597656 + percentile_10_0: 362.2181396484375 + percentile_90_0: 633.8817138671875 + percentile_99_5: 875.0442504882812 + stdev: 115.0201187133789 + label: + - image_intensity: + - max: 1720.5361328125 + mean: 634.76953125 + median: 633.8817138671875 + min: 0.0 + percentile: [32.92892074584961, 246.96690368652344, 1004.3320922851562, 1136.0477294921875] + percentile_00_5: 32.92892074584961 + percentile_10_0: 246.96690368652344 + percentile_90_0: 1004.3320922851562 + percentile_99_5: 1136.0477294921875 + stdev: 281.3913269042969 + ncomponents: 1 + pixel_percentage: 0.9438761472702026 + shape: + - [34, 53, 37] + - image_intensity: + - max: 889.0808715820312 + mean: 475.301513671875 + median: 469.23712158203125 + min: 90.55453491210938 + percentile: [214.2437744140625, 353.98590087890625, 609.18505859375, 791.89990234375] + percentile_00_5: 214.2437744140625 + percentile_10_0: 353.98590087890625 + percentile_90_0: 609.18505859375 + percentile_99_5: 791.89990234375 + stdev: 105.52168273925781 + ncomponents: 1 + pixel_percentage: 0.026427093893289566 + shape: + - [21, 16, 14] + - image_intensity: + - max: 1070.18994140625 + mean: 494.3080139160156 + median: 477.4693603515625 + min: 41.16115188598633 + percentile: [214.03797912597656, 362.2181396484375, 650.34619140625, 916.3701782226562] + percentile_00_5: 214.03797912597656 + percentile_10_0: 362.2181396484375 + percentile_90_0: 650.34619140625 + percentile_99_5: 916.3701782226562 + stdev: 122.16254425048828 + ncomponents: 1 + pixel_percentage: 0.029696732759475708 + shape: + - [17, 28, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_193.nii.gz + image_foreground_stats: + intensity: + - max: 440456.71875 + mean: 192398.109375 + median: 184807.015625 + min: 73922.8046875 + percentile: [101643.859375, 141685.375, 249489.46875, 383367.03125] + percentile_00_5: 101643.859375 + percentile_10_0: 141685.375 + percentile_90_0: 249489.46875 + percentile_99_5: 383367.03125 + stdev: 47731.55859375 + image_stats: + channels: 1 + cropped_shape: + - [33, 50, 29] + intensity: + - max: 625263.75 + mean: 254059.078125 + median: 261809.9375 + min: 0.0 + percentile: [12320.4677734375, 89323.390625, 397335.09375, 458937.4375] + percentile_00_5: 12320.4677734375 + percentile_10_0: 89323.390625 + percentile_90_0: 397335.09375 + percentile_99_5: 458937.4375 + stdev: 114116.203125 + shape: + - [33, 50, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_193.nii.gz + label_stats: + image_intensity: + - max: 440456.71875 + mean: 192398.109375 + median: 184807.015625 + min: 73922.8046875 + percentile: [101643.859375, 141685.375, 249489.46875, 383367.03125] + percentile_00_5: 101643.859375 + percentile_10_0: 141685.375 + percentile_90_0: 249489.46875 + percentile_99_5: 383367.03125 + stdev: 47731.55859375 + label: + - image_intensity: + - max: 625263.75 + mean: 257758.0 + median: 274130.40625 + min: 0.0 + percentile: [12320.4677734375, 83163.15625, 400415.1875, 458937.4375] + percentile_00_5: 12320.4677734375 + percentile_10_0: 83163.15625 + percentile_90_0: 400415.1875 + percentile_99_5: 458937.4375 + stdev: 115867.484375 + ncomponents: 1 + pixel_percentage: 0.9434064626693726 + shape: + - [33, 50, 29] + - image_intensity: + - max: 397335.09375 + mean: 192533.53125 + median: 190967.25 + min: 73922.8046875 + percentile: [101643.859375, 141685.375, 240249.125, 336502.78125] + percentile_00_5: 101643.859375 + percentile_10_0: 141685.375 + percentile_90_0: 240249.125 + percentile_99_5: 336502.78125 + stdev: 41908.75390625 + ncomponents: 1 + pixel_percentage: 0.02823406457901001 + shape: + - [21, 16, 11] + - image_intensity: + - max: 440456.71875 + mean: 192263.3125 + median: 181726.90625 + min: 80083.0390625 + percentile: [100966.234375, 141685.375, 255649.703125, 394254.96875] + percentile_00_5: 100966.234375 + percentile_10_0: 141685.375 + percentile_90_0: 255649.703125 + percentile_99_5: 394254.96875 + stdev: 52895.328125 + ncomponents: 1 + pixel_percentage: 0.02835945598781109 + shape: + - [21, 21, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_212.nii.gz + image_foreground_stats: + intensity: + - max: 486420.21875 + mean: 212884.765625 + median: 204808.515625 + min: 57602.39453125 + percentile: [112004.65625, 150406.25, 281611.71875, 432321.875] + percentile_00_5: 112004.65625 + percentile_10_0: 150406.25 + percentile_90_0: 281611.71875 + percentile_99_5: 432321.875 + stdev: 57594.88671875 + image_stats: + channels: 1 + cropped_shape: + - [35, 56, 34] + intensity: + - max: 1561664.875 + mean: 285426.125 + median: 294412.25 + min: 0.0 + percentile: [16624.71484375, 124805.1875, 432017.96875, 521621.6875] + percentile_00_5: 16624.71484375 + percentile_10_0: 124805.1875 + percentile_90_0: 432017.96875 + percentile_99_5: 521621.6875 + stdev: 126643.0859375 + shape: + - [35, 56, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_212.nii.gz + label_stats: + image_intensity: + - max: 486420.21875 + mean: 212884.765625 + median: 204808.515625 + min: 57602.39453125 + percentile: [112004.65625, 150406.25, 281611.71875, 432321.875] + percentile_00_5: 112004.65625 + percentile_10_0: 150406.25 + percentile_90_0: 281611.71875 + percentile_99_5: 432321.875 + stdev: 57594.88671875 + label: + - image_intensity: + - max: 1561664.875 + mean: 289546.8125 + median: 304012.625 + min: 0.0 + percentile: [16000.6650390625, 121605.0546875, 435218.09375, 531222.0625] + percentile_00_5: 16000.6650390625 + percentile_10_0: 121605.0546875 + percentile_90_0: 435218.09375 + percentile_99_5: 531222.0625 + stdev: 128238.8515625 + ncomponents: 1 + pixel_percentage: 0.946248471736908 + shape: + - [35, 56, 34] + - image_intensity: + - max: 409617.03125 + mean: 209485.9375 + median: 204808.515625 + min: 105604.390625 + percentile: [121605.0546875, 156806.515625, 272011.3125, 346494.5] + percentile_00_5: 121605.0546875 + percentile_10_0: 156806.515625 + percentile_90_0: 272011.3125 + percentile_99_5: 346494.5 + stdev: 45583.29296875 + ncomponents: 1 + pixel_percentage: 0.02620048075914383 + shape: + - [22, 18, 13] + - image_intensity: + - max: 486420.21875 + mean: 216117.046875 + median: 204808.515625 + min: 57602.39453125 + percentile: [102964.28125, 147206.125, 300812.5, 448018.625] + percentile_00_5: 102964.28125 + percentile_10_0: 147206.125 + percentile_90_0: 300812.5 + percentile_99_5: 448018.625 + stdev: 66890.359375 + ncomponents: 1 + pixel_percentage: 0.027551019564270973 + shape: + - [19, 27, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_363.nii.gz + image_foreground_stats: + intensity: + - max: 740.01123046875 + mean: 351.2170715332031 + median: 337.9578857421875 + min: 110.71034240722656 + percentile: [180.63265991210938, 262.2087097167969, 448.668212890625, 614.588623046875] + percentile_00_5: 180.63265991210938 + percentile_10_0: 262.2087097167969 + percentile_90_0: 448.668212890625 + percentile_99_5: 614.588623046875 + stdev: 79.77729797363281 + image_stats: + channels: 1 + cropped_shape: + - [38, 52, 35] + intensity: + - max: 2272.475341796875 + mean: 452.0211181640625 + median: 460.3219299316406 + min: 0.0 + percentile: [23.30743980407715, 168.97894287109375, 710.8768920898438, 833.240966796875] + percentile_00_5: 23.30743980407715 + percentile_10_0: 168.97894287109375 + percentile_90_0: 710.8768920898438 + percentile_99_5: 833.240966796875 + stdev: 206.50135803222656 + shape: + - [38, 52, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_363.nii.gz + label_stats: + image_intensity: + - max: 740.01123046875 + mean: 351.2170715332031 + median: 337.9578857421875 + min: 110.71034240722656 + percentile: [180.63265991210938, 262.2087097167969, 448.668212890625, 614.588623046875] + percentile_00_5: 180.63265991210938 + percentile_10_0: 262.2087097167969 + percentile_90_0: 448.668212890625 + percentile_99_5: 614.588623046875 + stdev: 79.77729797363281 + label: + - image_intensity: + - max: 2272.475341796875 + mean: 457.4041442871094 + median: 471.97564697265625 + min: 0.0 + percentile: [23.30743980407715, 157.32522583007812, 710.8768920898438, 839.0678100585938] + percentile_00_5: 23.30743980407715 + percentile_10_0: 157.32522583007812 + percentile_90_0: 710.8768920898438 + percentile_99_5: 839.0678100585938 + stdev: 209.78204345703125 + ncomponents: 1 + pixel_percentage: 0.9493059515953064 + shape: + - [38, 52, 35] + - image_intensity: + - max: 675.915771484375 + mean: 343.7022705078125 + median: 337.9578857421875 + min: 110.71034240722656 + percentile: [180.63265991210938, 260.46063232421875, 437.0144958496094, 592.1845092773438] + percentile_00_5: 180.63265991210938 + percentile_10_0: 260.46063232421875 + percentile_90_0: 437.0144958496094 + percentile_99_5: 592.1845092773438 + stdev: 72.34539031982422 + ncomponents: 1 + pixel_percentage: 0.026576055213809013 + shape: + - [19, 19, 15] + - image_intensity: + - max: 740.01123046875 + mean: 359.4977111816406 + median: 343.78472900390625 + min: 110.71034240722656 + percentile: [182.58465576171875, 268.0355529785156, 483.6293640136719, 627.34912109375] + percentile_00_5: 182.58465576171875 + percentile_10_0: 268.0355529785156 + percentile_90_0: 483.6293640136719 + percentile_99_5: 627.34912109375 + stdev: 86.48356628417969 + ncomponents: 1 + pixel_percentage: 0.024117987602949142 + shape: + - [23, 22, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_263.nii.gz + image_foreground_stats: + intensity: + - max: 101.0 + mean: 54.24193572998047 + median: 52.0 + min: 17.0 + percentile: [32.0, 41.0, 71.0, 91.0] + percentile_00_5: 32.0 + percentile_10_0: 41.0 + percentile_90_0: 71.0 + percentile_99_5: 91.0 + stdev: 11.873961448669434 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 35] + intensity: + - max: 164.0 + mean: 72.06175994873047 + median: 76.0 + min: 3.0 + percentile: [10.0, 35.0, 104.0, 117.0] + percentile_00_5: 10.0 + percentile_10_0: 35.0 + percentile_90_0: 104.0 + percentile_99_5: 117.0 + stdev: 27.05876350402832 + shape: + - [36, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_263.nii.gz + label_stats: + image_intensity: + - max: 101.0 + mean: 54.24193572998047 + median: 52.0 + min: 17.0 + percentile: [32.0, 41.0, 71.0, 91.0] + percentile_00_5: 32.0 + percentile_10_0: 41.0 + percentile_90_0: 71.0 + percentile_99_5: 91.0 + stdev: 11.873961448669434 + label: + - image_intensity: + - max: 164.0 + mean: 73.09880828857422 + median: 79.0 + min: 3.0 + percentile: [9.0, 34.0, 104.0, 117.0] + percentile_00_5: 9.0 + percentile_10_0: 34.0 + percentile_90_0: 104.0 + percentile_99_5: 117.0 + stdev: 27.331775665283203 + ncomponents: 1 + pixel_percentage: 0.9450046420097351 + shape: + - [36, 51, 35] + - image_intensity: + - max: 101.0 + mean: 53.251365661621094 + median: 52.0 + min: 23.0 + percentile: [31.0, 40.0, 68.0, 86.77001953125] + percentile_00_5: 31.0 + percentile_10_0: 40.0 + percentile_90_0: 68.0 + percentile_99_5: 86.77001953125 + stdev: 11.149368286132812 + ncomponents: 1 + pixel_percentage: 0.025630252435803413 + shape: + - [22, 15, 14] + - image_intensity: + - max: 100.0 + mean: 55.10651779174805 + median: 53.0 + min: 17.0 + percentile: [33.0, 42.0, 73.0, 92.0] + percentile_00_5: 33.0 + percentile_10_0: 42.0 + percentile_90_0: 73.0 + percentile_99_5: 92.0 + stdev: 12.407571792602539 + ncomponents: 1 + pixel_percentage: 0.02936507947742939 + shape: + - [17, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_300.nii.gz + image_foreground_stats: + intensity: + - max: 1160.4713134765625 + mean: 507.64678955078125 + median: 492.3211669921875 + min: 26.374347686767578 + percentile: [175.9608612060547, 342.8665466308594, 703.3159790039062, 992.9100952148438] + percentile_00_5: 175.9608612060547 + percentile_10_0: 342.8665466308594 + percentile_90_0: 703.3159790039062 + percentile_99_5: 992.9100952148438 + stdev: 144.21517944335938 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 35] + intensity: + - max: 2619.85205078125 + mean: 678.2257690429688 + median: 703.3159790039062 + min: 0.0 + percentile: [43.95724868774414, 246.16058349609375, 1063.765380859375, 1248.3858642578125] + percentile_00_5: 43.95724868774414 + percentile_10_0: 246.16058349609375 + percentile_90_0: 1063.765380859375 + percentile_99_5: 1248.3858642578125 + stdev: 310.16754150390625 + shape: + - [34, 53, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_300.nii.gz + label_stats: + image_intensity: + - max: 1160.4713134765625 + mean: 507.64678955078125 + median: 492.3211669921875 + min: 26.374347686767578 + percentile: [175.9608612060547, 342.8665466308594, 703.3159790039062, 992.9100952148438] + percentile_00_5: 175.9608612060547 + percentile_10_0: 342.8665466308594 + percentile_90_0: 703.3159790039062 + percentile_99_5: 992.9100952148438 + stdev: 144.21517944335938 + label: + - image_intensity: + - max: 2619.85205078125 + mean: 687.9573974609375 + median: 729.6903076171875 + min: 0.0 + percentile: [35.16579818725586, 237.369140625, 1072.556884765625, 1248.3858642578125] + percentile_00_5: 35.16579818725586 + percentile_10_0: 237.369140625 + percentile_90_0: 1072.556884765625 + percentile_99_5: 1248.3858642578125 + stdev: 314.2469787597656 + ncomponents: 1 + pixel_percentage: 0.9460282325744629 + shape: + - [34, 53, 35] + - image_intensity: + - max: 1160.4713134765625 + mean: 528.758544921875 + median: 518.6954956054688 + min: 26.374347686767578 + percentile: [158.24609375, 360.4494323730469, 720.8988647460938, 879.1449584960938] + percentile_00_5: 158.24609375 + percentile_10_0: 360.4494323730469 + percentile_90_0: 720.8988647460938 + percentile_99_5: 879.1449584960938 + stdev: 139.26718139648438 + ncomponents: 1 + pixel_percentage: 0.029269065707921982 + shape: + - [21, 19, 15] + - image_intensity: + - max: 1134.0970458984375 + mean: 482.632568359375 + median: 457.1553649902344 + min: 140.66319274902344 + percentile: [219.78623962402344, 325.28363037109375, 659.3587036132812, 1030.489501953125] + percentile_00_5: 219.78623962402344 + percentile_10_0: 325.28363037109375 + percentile_90_0: 659.3587036132812 + percentile_99_5: 1030.489501953125 + stdev: 145.96632385253906 + ncomponents: 1 + pixel_percentage: 0.024702711030840874 + shape: + - [23, 25, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_160.nii.gz + image_foreground_stats: + intensity: + - max: 321699.5 + mean: 144058.828125 + median: 139998.859375 + min: 5957.3984375 + percentile: [59573.984375, 98297.078125, 193615.453125, 291912.53125] + percentile_00_5: 59573.984375 + percentile_10_0: 98297.078125 + percentile_90_0: 193615.453125 + percentile_99_5: 291912.53125 + stdev: 40902.98046875 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 26] + intensity: + - max: 1012757.75 + mean: 196378.5625 + median: 184679.34375 + min: 0.0 + percentile: [11914.796875, 71488.78125, 324678.21875, 415784.5] + percentile_00_5: 11914.796875 + percentile_10_0: 71488.78125 + percentile_90_0: 324678.21875 + percentile_99_5: 415784.5 + stdev: 97368.0 + shape: + - [34, 51, 26] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_160.nii.gz + label_stats: + image_intensity: + - max: 321699.5 + mean: 144058.828125 + median: 139998.859375 + min: 5957.3984375 + percentile: [59573.984375, 98297.078125, 193615.453125, 291912.53125] + percentile_00_5: 59573.984375 + percentile_10_0: 98297.078125 + percentile_90_0: 193615.453125 + percentile_99_5: 291912.53125 + stdev: 40902.98046875 + label: + - image_intensity: + - max: 1012757.75 + mean: 200303.34375 + median: 196594.15625 + min: 0.0 + percentile: [11914.796875, 68510.078125, 327656.90625, 428932.6875] + percentile_00_5: 11914.796875 + percentile_10_0: 68510.078125 + percentile_90_0: 327656.90625 + percentile_99_5: 428932.6875 + stdev: 99224.296875 + ncomponents: 1 + pixel_percentage: 0.9302191734313965 + shape: + - [34, 51, 26] + - image_intensity: + - max: 297869.9375 + mean: 141426.21875 + median: 139998.859375 + min: 5957.3984375 + percentile: [53616.5859375, 98297.078125, 184679.34375, 244253.34375] + percentile_00_5: 53616.5859375 + percentile_10_0: 98297.078125 + percentile_90_0: 184679.34375 + percentile_99_5: 244253.34375 + stdev: 35262.0859375 + ncomponents: 1 + pixel_percentage: 0.03730813413858414 + shape: + - [20, 18, 14] + - image_intensity: + - max: 321699.5 + mean: 147083.453125 + median: 137020.15625 + min: 62552.68359375 + percentile: [71488.78125, 98297.078125, 211487.640625, 300848.625] + percentile_00_5: 71488.78125 + percentile_10_0: 98297.078125 + percentile_90_0: 211487.640625 + percentile_99_5: 300848.625 + stdev: 46363.3359375 + ncomponents: 1 + pixel_percentage: 0.03247271850705147 + shape: + - [23, 21, 15] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_060.nii.gz + image_foreground_stats: + intensity: + - max: 617.9561767578125 + mean: 277.4104309082031 + median: 265.78759765625 + min: 19.934070587158203 + percentile: [93.0256576538086, 179.40663146972656, 392.0367126464844, 551.50927734375] + percentile_00_5: 93.0256576538086 + percentile_10_0: 179.40663146972656 + percentile_90_0: 392.0367126464844 + percentile_99_5: 551.50927734375 + stdev: 84.13401794433594 + image_stats: + channels: 1 + cropped_shape: + - [39, 52, 31] + intensity: + - max: 1282.4251708984375 + mean: 381.5858154296875 + median: 365.45794677734375 + min: 0.0 + percentile: [19.934070587158203, 132.893798828125, 631.2455444335938, 770.7840576171875] + percentile_00_5: 19.934070587158203 + percentile_10_0: 132.893798828125 + percentile_90_0: 631.2455444335938 + percentile_99_5: 770.7840576171875 + stdev: 187.3821563720703 + shape: + - [39, 52, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_060.nii.gz + label_stats: + image_intensity: + - max: 617.9561767578125 + mean: 277.4104309082031 + median: 265.78759765625 + min: 19.934070587158203 + percentile: [93.0256576538086, 179.40663146972656, 392.0367126464844, 551.50927734375] + percentile_00_5: 93.0256576538086 + percentile_10_0: 179.40663146972656 + percentile_90_0: 392.0367126464844 + percentile_99_5: 551.50927734375 + stdev: 84.13401794433594 + label: + - image_intensity: + - max: 1282.4251708984375 + mean: 387.5585632324219 + median: 378.7473449707031 + min: 0.0 + percentile: [19.934070587158203, 132.893798828125, 637.8902587890625, 770.7840576171875] + percentile_00_5: 19.934070587158203 + percentile_10_0: 132.893798828125 + percentile_90_0: 637.8902587890625 + percentile_99_5: 770.7840576171875 + stdev: 189.89852905273438 + ncomponents: 1 + pixel_percentage: 0.9457752704620361 + shape: + - [39, 52, 31] + - image_intensity: + - max: 591.37744140625 + mean: 290.0526428222656 + median: 285.7216796875 + min: 39.868141174316406 + percentile: [97.1785888671875, 192.69601440429688, 398.681396484375, 524.9305419921875] + percentile_00_5: 97.1785888671875 + percentile_10_0: 192.69601440429688 + percentile_90_0: 398.681396484375 + percentile_99_5: 524.9305419921875 + stdev: 79.89807891845703 + ncomponents: 1 + pixel_percentage: 0.027454348281025887 + shape: + - [22, 17, 13] + - image_intensity: + - max: 617.9561767578125 + mean: 264.44525146484375 + median: 252.4982147216797 + min: 19.934070587158203 + percentile: [78.54023742675781, 172.76194763183594, 378.7473449707031, 562.0740966796875] + percentile_00_5: 78.54023742675781 + percentile_10_0: 172.76194763183594 + percentile_90_0: 378.7473449707031 + percentile_99_5: 562.0740966796875 + stdev: 86.36613464355469 + ncomponents: 1 + pixel_percentage: 0.026770375669002533 + shape: + - [19, 25, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_003.nii.gz + image_foreground_stats: + intensity: + - max: 786.5840454101562 + mean: 357.75146484375 + median: 339.6612854003906 + min: 113.22042846679688 + percentile: [184.7280731201172, 262.1946716308594, 476.71759033203125, 655.4866943359375] + percentile_00_5: 184.7280731201172 + percentile_10_0: 262.1946716308594 + percentile_90_0: 476.71759033203125 + percentile_99_5: 655.4866943359375 + stdev: 89.90286254882812 + image_stats: + channels: 1 + cropped_shape: + - [34, 52, 35] + intensity: + - max: 2776.880126953125 + mean: 482.6452941894531 + median: 482.67657470703125 + min: 0.0 + percentile: [35.753822326660156, 238.35879516601562, 726.9943237304688, 852.1326904296875] + percentile_00_5: 35.753822326660156 + percentile_10_0: 238.35879516601562 + percentile_90_0: 726.9943237304688 + percentile_99_5: 852.1326904296875 + stdev: 196.74331665039062 + shape: + - [34, 52, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_003.nii.gz + label_stats: + image_intensity: + - max: 786.5840454101562 + mean: 357.75146484375 + median: 339.6612854003906 + min: 113.22042846679688 + percentile: [184.7280731201172, 262.1946716308594, 476.71759033203125, 655.4866943359375] + percentile_00_5: 184.7280731201172 + percentile_10_0: 262.1946716308594 + percentile_90_0: 476.71759033203125 + percentile_99_5: 655.4866943359375 + stdev: 89.90286254882812 + label: + - image_intensity: + - max: 2776.880126953125 + mean: 489.8004150390625 + median: 500.5534973144531 + min: 0.0 + percentile: [35.753822326660156, 232.3998260498047, 726.9943237304688, 852.1326904296875] + percentile_00_5: 35.753822326660156 + percentile_10_0: 232.3998260498047 + percentile_90_0: 726.9943237304688 + percentile_99_5: 852.1326904296875 + stdev: 198.79039001464844 + ncomponents: 1 + pixel_percentage: 0.9458144903182983 + shape: + - [34, 52, 35] + - image_intensity: + - max: 738.9122924804688 + mean: 361.8094482421875 + median: 345.6202697753906 + min: 131.0973358154297 + percentile: [177.24957275390625, 262.1946716308594, 476.71759033203125, 633.17041015625] + percentile_00_5: 177.24957275390625 + percentile_10_0: 262.1946716308594 + percentile_90_0: 476.71759033203125 + percentile_99_5: 633.17041015625 + stdev: 86.8495101928711 + ncomponents: 1 + pixel_percentage: 0.025048481300473213 + shape: + - [22, 17, 14] + - image_intensity: + - max: 786.5840454101562 + mean: 354.262939453125 + median: 333.70233154296875 + min: 113.22042846679688 + percentile: [196.64601135253906, 257.427490234375, 482.67657470703125, 655.4866943359375] + percentile_00_5: 196.64601135253906 + percentile_10_0: 257.427490234375 + percentile_90_0: 482.67657470703125 + percentile_99_5: 655.4866943359375 + stdev: 92.30469512939453 + ncomponents: 1 + pixel_percentage: 0.029137039557099342 + shape: + - [20, 25, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_172.nii.gz + image_foreground_stats: + intensity: + - max: 87.0 + mean: 45.88605499267578 + median: 45.0 + min: 20.0 + percentile: [25.0, 34.20001220703125, 59.0, 77.0] + percentile_00_5: 25.0 + percentile_10_0: 34.20001220703125 + percentile_90_0: 59.0 + percentile_99_5: 77.0 + stdev: 10.004460334777832 + image_stats: + channels: 1 + cropped_shape: + - [34, 56, 31] + intensity: + - max: 112.0 + mean: 59.43553161621094 + median: 60.0 + min: 2.0 + percentile: [8.0, 28.0, 88.0, 100.0] + percentile_00_5: 8.0 + percentile_10_0: 28.0 + percentile_90_0: 88.0 + percentile_99_5: 100.0 + stdev: 23.43122673034668 + shape: + - [34, 56, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_172.nii.gz + label_stats: + image_intensity: + - max: 87.0 + mean: 45.88605499267578 + median: 45.0 + min: 20.0 + percentile: [25.0, 34.20001220703125, 59.0, 77.0] + percentile_00_5: 25.0 + percentile_10_0: 34.20001220703125 + percentile_90_0: 59.0 + percentile_99_5: 77.0 + stdev: 10.004460334777832 + label: + - image_intensity: + - max: 112.0 + mean: 60.40020751953125 + median: 63.0 + min: 2.0 + percentile: [8.0, 27.0, 89.0, 100.0] + percentile_00_5: 8.0 + percentile_10_0: 27.0 + percentile_90_0: 89.0 + percentile_99_5: 100.0 + stdev: 23.811412811279297 + ncomponents: 1 + pixel_percentage: 0.9335355162620544 + shape: + - [34, 56, 31] + - image_intensity: + - max: 80.0 + mean: 46.1413459777832 + median: 45.0 + min: 21.0 + percentile: [25.0, 35.0, 59.0, 73.0] + percentile_00_5: 25.0 + percentile_10_0: 35.0 + percentile_90_0: 59.0 + percentile_99_5: 73.0 + stdev: 9.2404203414917 + ncomponents: 1 + pixel_percentage: 0.03356261923909187 + shape: + - [22, 17, 15] + - image_intensity: + - max: 87.0 + mean: 45.62564468383789 + median: 44.0 + min: 20.0 + percentile: [23.704999923706055, 34.0, 60.0, 79.0] + percentile_00_5: 23.704999923706055 + percentile_10_0: 34.0 + percentile_90_0: 60.0 + percentile_99_5: 79.0 + stdev: 10.721664428710938 + ncomponents: 1 + pixel_percentage: 0.03290187194943428 + shape: + - [16, 27, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_011.nii.gz + image_foreground_stats: + intensity: + - max: 902.5029296875 + mean: 437.85736083984375 + median: 422.44818115234375 + min: 70.40803527832031 + percentile: [174.5799102783203, 332.83795166015625, 569.6649780273438, 779.1295166015625] + percentile_00_5: 174.5799102783203 + percentile_10_0: 332.83795166015625 + percentile_90_0: 569.6649780273438 + percentile_99_5: 779.1295166015625 + stdev: 102.07337188720703 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 31] + intensity: + - max: 1728.1971435546875 + mean: 553.5700073242188 + median: 556.863525390625 + min: 0.0 + percentile: [25.602920532226562, 198.42263793945312, 857.6978149414062, 972.9110107421875] + percentile_00_5: 25.602920532226562 + percentile_10_0: 198.42263793945312 + percentile_90_0: 857.6978149414062 + percentile_99_5: 972.9110107421875 + stdev: 247.18447875976562 + shape: + - [36, 50, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_011.nii.gz + label_stats: + image_intensity: + - max: 902.5029296875 + mean: 437.85736083984375 + median: 422.44818115234375 + min: 70.40803527832031 + percentile: [174.5799102783203, 332.83795166015625, 569.6649780273438, 779.1295166015625] + percentile_00_5: 174.5799102783203 + percentile_10_0: 332.83795166015625 + percentile_90_0: 569.6649780273438 + percentile_99_5: 779.1295166015625 + stdev: 102.07337188720703 + label: + - image_intensity: + - max: 1728.1971435546875 + mean: 561.2098999023438 + median: 588.8671875 + min: 0.0 + percentile: [19.202190399169922, 185.6211700439453, 864.0985717773438, 979.3117065429688] + percentile_00_5: 19.202190399169922 + percentile_10_0: 185.6211700439453 + percentile_90_0: 864.0985717773438 + percentile_99_5: 979.3117065429688 + stdev: 251.99993896484375 + ncomponents: 1 + pixel_percentage: 0.9380645155906677 + shape: + - [36, 50, 31] + - image_intensity: + - max: 787.289794921875 + mean: 429.9703674316406 + median: 422.44818115234375 + min: 70.40803527832031 + percentile: [160.01824951171875, 326.4372253417969, 556.863525390625, 742.4846801757812] + percentile_00_5: 160.01824951171875 + percentile_10_0: 326.4372253417969 + percentile_90_0: 556.863525390625 + percentile_99_5: 742.4846801757812 + stdev: 96.38408660888672 + ncomponents: 1 + pixel_percentage: 0.03426523134112358 + shape: + - [26, 16, 14] + - image_intensity: + - max: 902.5029296875 + mean: 447.62408447265625 + median: 422.44818115234375 + min: 172.81971740722656 + percentile: [211.22409057617188, 339.23870849609375, 595.2678833007812, 812.8927001953125] + percentile_00_5: 211.22409057617188 + percentile_10_0: 339.23870849609375 + percentile_90_0: 595.2678833007812 + percentile_99_5: 812.8927001953125 + stdev: 107.91082763671875 + ncomponents: 1 + pixel_percentage: 0.027670251205563545 + shape: + - [17, 21, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_044.nii.gz + image_foreground_stats: + intensity: + - max: 289225.15625 + mean: 127170.7421875 + median: 122058.328125 + min: 34494.74609375 + percentile: [55722.28125, 87563.5859375, 175127.171875, 249171.53125] + percentile_00_5: 55722.28125 + percentile_10_0: 87563.5859375 + percentile_90_0: 175127.171875 + percentile_99_5: 249171.53125 + stdev: 36386.8125 + image_stats: + channels: 1 + cropped_shape: + - [38, 48, 33] + intensity: + - max: 358214.65625 + mean: 179025.328125 + median: 183087.484375 + min: 0.0 + percentile: [10613.767578125, 71642.9296875, 275957.96875, 307799.25] + percentile_00_5: 10613.767578125 + percentile_10_0: 71642.9296875 + percentile_90_0: 275957.96875 + percentile_99_5: 307799.25 + stdev: 78265.9140625 + shape: + - [38, 48, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_044.nii.gz + label_stats: + image_intensity: + - max: 289225.15625 + mean: 127170.7421875 + median: 122058.328125 + min: 34494.74609375 + percentile: [55722.28125, 87563.5859375, 175127.171875, 249171.53125] + percentile_00_5: 55722.28125 + percentile_10_0: 87563.5859375 + percentile_90_0: 175127.171875 + percentile_99_5: 249171.53125 + stdev: 36386.8125 + label: + - image_intensity: + - max: 358214.65625 + mean: 181956.109375 + median: 191047.8125 + min: 0.0 + percentile: [10613.767578125, 71642.9296875, 275957.96875, 307799.25] + percentile_00_5: 10613.767578125 + percentile_10_0: 71642.9296875 + percentile_90_0: 275957.96875 + percentile_99_5: 307799.25 + stdev: 78970.6953125 + ncomponents: 1 + pixel_percentage: 0.946504533290863 + shape: + - [38, 48, 33] + - image_intensity: + - max: 262690.75 + mean: 128947.5546875 + median: 124711.765625 + min: 34494.74609375 + percentile: [52830.02734375, 90217.0234375, 172473.71875, 226988.796875] + percentile_00_5: 52830.02734375 + percentile_10_0: 90217.0234375 + percentile_90_0: 172473.71875 + percentile_99_5: 226988.796875 + stdev: 32644.8984375 + ncomponents: 1 + pixel_percentage: 0.028110047802329063 + shape: + - [23, 15, 12] + - image_intensity: + - max: 289225.15625 + mean: 125203.203125 + median: 116751.4453125 + min: 42455.0703125 + percentile: [57407.21484375, 82256.6953125, 183087.484375, 258352.34375] + percentile_00_5: 57407.21484375 + percentile_10_0: 82256.6953125 + percentile_90_0: 183087.484375 + percentile_99_5: 258352.34375 + stdev: 40033.33984375 + ncomponents: 1 + pixel_percentage: 0.025385433807969093 + shape: + - [17, 22, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_144.nii.gz + image_foreground_stats: + intensity: + - max: 81.0 + mean: 42.477943420410156 + median: 41.0 + min: 22.0 + percentile: [26.0, 32.0, 55.0, 73.0] + percentile_00_5: 26.0 + percentile_10_0: 32.0 + percentile_90_0: 55.0 + percentile_99_5: 73.0 + stdev: 9.120058059692383 + image_stats: + channels: 1 + cropped_shape: + - [34, 45, 43] + intensity: + - max: 226.0 + mean: 53.56415939331055 + median: 55.0 + min: 1.0 + percentile: [7.0, 22.0, 81.0, 96.0] + percentile_00_5: 7.0 + percentile_10_0: 22.0 + percentile_90_0: 81.0 + percentile_99_5: 96.0 + stdev: 22.04056167602539 + shape: + - [34, 45, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_144.nii.gz + label_stats: + image_intensity: + - max: 81.0 + mean: 42.477943420410156 + median: 41.0 + min: 22.0 + percentile: [26.0, 32.0, 55.0, 73.0] + percentile_00_5: 26.0 + percentile_10_0: 32.0 + percentile_90_0: 55.0 + percentile_99_5: 73.0 + stdev: 9.120058059692383 + label: + - image_intensity: + - max: 226.0 + mean: 53.996795654296875 + median: 56.0 + min: 1.0 + percentile: [7.0, 22.0, 81.0, 96.0] + percentile_00_5: 7.0 + percentile_10_0: 22.0 + percentile_90_0: 81.0 + percentile_99_5: 96.0 + stdev: 22.282609939575195 + ncomponents: 1 + pixel_percentage: 0.962441086769104 + shape: + - [34, 45, 43] + - image_intensity: + - max: 74.0 + mean: 43.85329818725586 + median: 42.0 + min: 24.0 + percentile: [27.0, 34.0, 55.4000244140625, 71.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 55.4000244140625 + percentile_99_5: 71.0 + stdev: 8.607136726379395 + ncomponents: 1 + pixel_percentage: 0.018650250509381294 + shape: + - [19, 14, 13] + - image_intensity: + - max: 81.0 + mean: 41.12138366699219 + median: 39.0 + min: 22.0 + percentile: [24.21500015258789, 31.0, 54.0, 75.0] + percentile_00_5: 24.21500015258789 + percentile_10_0: 31.0 + percentile_90_0: 54.0 + percentile_99_5: 75.0 + stdev: 9.404139518737793 + ncomponents: 1 + pixel_percentage: 0.018908647820353508 + shape: + - [16, 19, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_039.nii.gz + image_foreground_stats: + intensity: + - max: 1085.3013916015625 + mean: 465.3375244140625 + median: 443.9869384765625 + min: 115.10771942138672 + percentile: [221.99346923828125, 320.6572265625, 633.0924682617188, 953.7496948242188] + percentile_00_5: 221.99346923828125 + percentile_10_0: 320.6572265625 + percentile_90_0: 633.0924682617188 + percentile_99_5: 953.7496948242188 + stdev: 130.3394012451172 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 34] + intensity: + - max: 3198.350341796875 + mean: 611.4544677734375 + median: 591.9825439453125 + min: 0.0 + percentile: [49.331878662109375, 279.5473327636719, 961.9716796875, 1159.2991943359375] + percentile_00_5: 49.331878662109375 + percentile_10_0: 279.5473327636719 + percentile_90_0: 961.9716796875 + percentile_99_5: 1159.2991943359375 + stdev: 273.3690185546875 + shape: + - [34, 53, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_039.nii.gz + label_stats: + image_intensity: + - max: 1085.3013916015625 + mean: 465.3375244140625 + median: 443.9869384765625 + min: 115.10771942138672 + percentile: [221.99346923828125, 320.6572265625, 633.0924682617188, 953.7496948242188] + percentile_00_5: 221.99346923828125 + percentile_10_0: 320.6572265625 + percentile_90_0: 633.0924682617188 + percentile_99_5: 953.7496948242188 + stdev: 130.3394012451172 + label: + - image_intensity: + - max: 3198.350341796875 + mean: 620.7322387695312 + median: 608.426513671875 + min: 0.0 + percentile: [41.109901428222656, 279.5473327636719, 970.1936645507812, 1175.7431640625] + percentile_00_5: 41.109901428222656 + percentile_10_0: 279.5473327636719 + percentile_90_0: 970.1936645507812 + percentile_99_5: 1175.7431640625 + stdev: 277.4081726074219 + ncomponents: 1 + pixel_percentage: 0.9402951002120972 + shape: + - [34, 53, 34] + - image_intensity: + - max: 929.083740234375 + mean: 447.4080505371094 + median: 435.76495361328125 + min: 115.10771942138672 + percentile: [221.99346923828125, 320.6572265625, 591.9825439453125, 763.1235961914062] + percentile_00_5: 221.99346923828125 + percentile_10_0: 320.6572265625 + percentile_90_0: 591.9825439453125 + percentile_99_5: 763.1235961914062 + stdev: 108.08606719970703 + ncomponents: 1 + pixel_percentage: 0.03326369449496269 + shape: + - [25, 19, 14] + - image_intensity: + - max: 1085.3013916015625 + mean: 487.893310546875 + median: 452.2088928222656 + min: 147.99563598632812 + percentile: [238.4374237060547, 328.87921142578125, 698.8682861328125, 985.075927734375] + percentile_00_5: 238.4374237060547 + percentile_10_0: 328.87921142578125 + percentile_90_0: 698.8682861328125 + percentile_99_5: 985.075927734375 + stdev: 150.83090209960938 + ncomponents: 1 + pixel_percentage: 0.026441209018230438 + shape: + - [19, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_290.nii.gz + image_foreground_stats: + intensity: + - max: 754.5158081054688 + mean: 306.4997253417969 + median: 304.4537658691406 + min: 33.09280014038086 + percentile: [86.04127502441406, 191.938232421875, 430.2063903808594, 570.32080078125] + percentile_00_5: 86.04127502441406 + percentile_10_0: 191.938232421875 + percentile_90_0: 430.2063903808594 + percentile_99_5: 570.32080078125 + stdev: 93.77835083007812 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 40] + intensity: + - max: 1734.0626220703125 + mean: 413.34185791015625 + median: 436.824951171875 + min: 0.0 + percentile: [19.85567855834961, 125.75263977050781, 642.0003051757812, 780.9900512695312] + percentile_00_5: 19.85567855834961 + percentile_10_0: 125.75263977050781 + percentile_90_0: 642.0003051757812 + percentile_99_5: 780.9900512695312 + stdev: 193.10513305664062 + shape: + - [35, 49, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_290.nii.gz + label_stats: + image_intensity: + - max: 754.5158081054688 + mean: 306.4997253417969 + median: 304.4537658691406 + min: 33.09280014038086 + percentile: [86.04127502441406, 191.938232421875, 430.2063903808594, 570.32080078125] + percentile_00_5: 86.04127502441406 + percentile_10_0: 191.938232421875 + percentile_90_0: 430.2063903808594 + percentile_99_5: 570.32080078125 + stdev: 93.77835083007812 + label: + - image_intensity: + - max: 1734.0626220703125 + mean: 418.5131530761719 + median: 450.06207275390625 + min: 0.0 + percentile: [19.85567855834961, 125.75263977050781, 648.6188354492188, 787.608642578125] + percentile_00_5: 19.85567855834961 + percentile_10_0: 125.75263977050781 + percentile_90_0: 648.6188354492188 + percentile_99_5: 787.608642578125 + stdev: 195.16539001464844 + ncomponents: 1 + pixel_percentage: 0.953833818435669 + shape: + - [35, 49, 40] + - image_intensity: + - max: 754.5158081054688 + mean: 318.38494873046875 + median: 317.69085693359375 + min: 46.329917907714844 + percentile: [92.65983581542969, 198.55679321289062, 444.76690673828125, 615.5260620117188] + percentile_00_5: 92.65983581542969 + percentile_10_0: 198.55679321289062 + percentile_90_0: 444.76690673828125 + percentile_99_5: 615.5260620117188 + stdev: 98.09336853027344 + ncomponents: 1 + pixel_percentage: 0.021268222481012344 + shape: + - [20, 14, 13] + - image_intensity: + - max: 608.9075317382812 + mean: 296.34716796875 + median: 291.2166442871094 + min: 33.09280014038086 + percentile: [79.42271423339844, 185.31967163085938, 410.3507080078125, 542.721923828125] + percentile_00_5: 79.42271423339844 + percentile_10_0: 185.31967163085938 + percentile_90_0: 410.3507080078125 + percentile_99_5: 542.721923828125 + stdev: 88.67585754394531 + ncomponents: 1 + pixel_percentage: 0.02489795908331871 + shape: + - [22, 22, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_390.nii.gz + image_foreground_stats: + intensity: + - max: 899.6135864257812 + mean: 404.34527587890625 + median: 388.3224182128906 + min: 32.360198974609375 + percentile: [105.20301055908203, 258.881591796875, 576.0115966796875, 776.6448364257812] + percentile_00_5: 105.20301055908203 + percentile_10_0: 258.881591796875 + percentile_90_0: 576.0115966796875 + percentile_99_5: 776.6448364257812 + stdev: 125.83457946777344 + image_stats: + channels: 1 + cropped_shape: + - [38, 51, 33] + intensity: + - max: 2582.343994140625 + mean: 516.3698120117188 + median: 524.2352294921875 + min: 0.0 + percentile: [25.888160705566406, 174.74508666992188, 815.47705078125, 990.22216796875] + percentile_00_5: 25.888160705566406 + percentile_10_0: 174.74508666992188 + percentile_90_0: 815.47705078125 + percentile_99_5: 990.22216796875 + stdev: 243.97390747070312 + shape: + - [38, 51, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_390.nii.gz + label_stats: + image_intensity: + - max: 899.6135864257812 + mean: 404.34527587890625 + median: 388.3224182128906 + min: 32.360198974609375 + percentile: [105.20301055908203, 258.881591796875, 576.0115966796875, 776.6448364257812] + percentile_00_5: 105.20301055908203 + percentile_10_0: 258.881591796875 + percentile_90_0: 576.0115966796875 + percentile_99_5: 776.6448364257812 + stdev: 125.83457946777344 + label: + - image_intensity: + - max: 2582.343994140625 + mean: 522.3712768554688 + median: 537.1793212890625 + min: 0.0 + percentile: [25.888160705566406, 168.27304077148438, 815.47705078125, 1003.1661987304688] + percentile_00_5: 25.888160705566406 + percentile_10_0: 168.27304077148438 + percentile_90_0: 815.47705078125 + percentile_99_5: 1003.1661987304688 + stdev: 247.29635620117188 + ncomponents: 1 + pixel_percentage: 0.9491509795188904 + shape: + - [38, 51, 33] + - image_intensity: + - max: 796.0609130859375 + mean: 415.96417236328125 + median: 407.738525390625 + min: 84.13652038574219 + percentile: [138.66346740722656, 271.82568359375, 582.483642578125, 754.477783203125] + percentile_00_5: 138.66346740722656 + percentile_10_0: 271.82568359375 + percentile_90_0: 582.483642578125 + percentile_99_5: 754.477783203125 + stdev: 121.57051086425781 + ncomponents: 1 + pixel_percentage: 0.029489945620298386 + shape: + - [23, 19, 14] + - image_intensity: + - max: 899.6135864257812 + mean: 388.3034362792969 + median: 368.9062805175781 + min: 32.360198974609375 + percentile: [95.947998046875, 239.46548461914062, 563.0675048828125, 784.2498168945312] + percentile_00_5: 95.947998046875 + percentile_10_0: 239.46548461914062 + percentile_90_0: 563.0675048828125 + percentile_99_5: 784.2498168945312 + stdev: 129.79661560058594 + ncomponents: 1 + pixel_percentage: 0.021359100937843323 + shape: + - [23, 21, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_127.nii.gz + image_foreground_stats: + intensity: + - max: 99.0 + mean: 53.997066497802734 + median: 52.0 + min: 26.0 + percentile: [32.0, 41.0, 70.0, 91.0] + percentile_00_5: 32.0 + percentile_10_0: 41.0 + percentile_90_0: 70.0 + percentile_99_5: 91.0 + stdev: 11.40976333618164 + image_stats: + channels: 1 + cropped_shape: + - [38, 55, 31] + intensity: + - max: 255.0 + mean: 67.50996398925781 + median: 67.0 + min: 2.0 + percentile: [7.0, 30.0, 105.0, 123.0] + percentile_00_5: 7.0 + percentile_10_0: 30.0 + percentile_90_0: 105.0 + percentile_99_5: 123.0 + stdev: 28.729984283447266 + shape: + - [38, 55, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_127.nii.gz + label_stats: + image_intensity: + - max: 99.0 + mean: 53.997066497802734 + median: 52.0 + min: 26.0 + percentile: [32.0, 41.0, 70.0, 91.0] + percentile_00_5: 32.0 + percentile_10_0: 41.0 + percentile_90_0: 70.0 + percentile_99_5: 91.0 + stdev: 11.40976333618164 + label: + - image_intensity: + - max: 255.0 + mean: 68.33990478515625 + median: 70.0 + min: 2.0 + percentile: [7.0, 29.0, 106.0, 123.0] + percentile_00_5: 7.0 + percentile_10_0: 29.0 + percentile_90_0: 106.0 + percentile_99_5: 123.0 + stdev: 29.261032104492188 + ncomponents: 1 + pixel_percentage: 0.9421361088752747 + shape: + - [38, 55, 31] + - image_intensity: + - max: 93.0 + mean: 53.11604690551758 + median: 52.0 + min: 26.0 + percentile: [31.0, 41.0, 68.0, 85.0] + percentile_00_5: 31.0 + percentile_10_0: 41.0 + percentile_90_0: 68.0 + percentile_99_5: 85.0 + stdev: 10.57291030883789 + ncomponents: 1 + pixel_percentage: 0.0323198027908802 + shape: + - [21, 20, 15] + - image_intensity: + - max: 99.0 + mean: 55.111785888671875 + median: 52.0 + min: 30.0 + percentile: [34.27000045776367, 42.0, 73.0, 95.4599609375] + percentile_00_5: 34.27000045776367 + percentile_10_0: 42.0 + percentile_90_0: 73.0 + percentile_99_5: 95.4599609375 + stdev: 12.297724723815918 + ncomponents: 1 + pixel_percentage: 0.025544065982103348 + shape: + - [21, 23, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_156.nii.gz + image_foreground_stats: + intensity: + - max: 358562.28125 + mean: 153219.28125 + median: 144095.125 + min: 6702.0986328125 + percentile: [56967.83984375, 103882.53125, 217818.203125, 304962.6875] + percentile_00_5: 56967.83984375 + percentile_10_0: 103882.53125 + percentile_90_0: 217818.203125 + percentile_99_5: 304962.6875 + stdev: 46942.984375 + image_stats: + channels: 1 + cropped_shape: + - [36, 52, 36] + intensity: + - max: 723826.625 + mean: 205868.78125 + median: 204414.015625 + min: 0.0 + percentile: [10053.1484375, 77074.1328125, 325051.78125, 365264.375] + percentile_00_5: 10053.1484375 + percentile_10_0: 77074.1328125 + percentile_90_0: 325051.78125 + percentile_99_5: 365264.375 + stdev: 94104.2109375 + shape: + - [36, 52, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_156.nii.gz + label_stats: + image_intensity: + - max: 358562.28125 + mean: 153219.28125 + median: 144095.125 + min: 6702.0986328125 + percentile: [56967.83984375, 103882.53125, 217818.203125, 304962.6875] + percentile_00_5: 56967.83984375 + percentile_10_0: 103882.53125 + percentile_90_0: 217818.203125 + percentile_99_5: 304962.6875 + stdev: 46942.984375 + label: + - image_intensity: + - max: 723826.625 + mean: 208840.015625 + median: 211116.109375 + min: 0.0 + percentile: [10053.1484375, 77074.1328125, 328402.84375, 365264.375] + percentile_00_5: 10053.1484375 + percentile_10_0: 77074.1328125 + percentile_90_0: 328402.84375 + percentile_99_5: 365264.375 + stdev: 95214.140625 + ncomponents: 1 + pixel_percentage: 0.9465811848640442 + shape: + - [36, 52, 36] + - image_intensity: + - max: 338455.96875 + mean: 154127.53125 + median: 147446.171875 + min: 6702.0986328125 + percentile: [56967.83984375, 107233.578125, 211116.109375, 276445.1875] + percentile_00_5: 56967.83984375 + percentile_10_0: 107233.578125 + percentile_90_0: 211116.109375 + percentile_99_5: 276445.1875 + stdev: 42294.609375 + ncomponents: 2 + pixel_percentage: 0.031190644949674606 + shape: + - [22, 18, 16] + - [1, 1, 4] + - image_intensity: + - max: 358562.28125 + mean: 151944.8125 + median: 140744.078125 + min: 33510.4921875 + percentile: [60318.88671875, 97180.4296875, 231222.40625, 323426.59375] + percentile_00_5: 60318.88671875 + percentile_10_0: 97180.4296875 + percentile_90_0: 231222.40625 + percentile_99_5: 323426.59375 + stdev: 52753.43359375 + ncomponents: 1 + pixel_percentage: 0.02222815714776516 + shape: + - [16, 22, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_056.nii.gz + image_foreground_stats: + intensity: + - max: 1152.19091796875 + mean: 527.4898071289062 + median: 500.95257568359375 + min: 141.9365692138672 + percentile: [214.24072265625, 350.66680908203125, 743.0796508789062, 1010.25439453125] + percentile_00_5: 214.24072265625 + percentile_10_0: 350.66680908203125 + percentile_90_0: 743.0796508789062 + percentile_99_5: 1010.25439453125 + stdev: 156.72950744628906 + image_stats: + channels: 1 + cropped_shape: + - [41, 47, 42] + intensity: + - max: 5335.14501953125 + mean: 713.3244018554688 + median: 734.73046875 + min: 0.0 + percentile: [41.74604797363281, 267.1747131347656, 1093.7464599609375, 1744.98486328125] + percentile_00_5: 41.74604797363281 + percentile_10_0: 267.1747131347656 + percentile_90_0: 1093.7464599609375 + percentile_99_5: 1744.98486328125 + stdev: 345.3978271484375 + shape: + - [41, 47, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_056.nii.gz + label_stats: + image_intensity: + - max: 1152.19091796875 + mean: 527.4898071289062 + median: 500.95257568359375 + min: 141.9365692138672 + percentile: [214.24072265625, 350.66680908203125, 743.0796508789062, 1010.25439453125] + percentile_00_5: 214.24072265625 + percentile_10_0: 350.66680908203125 + percentile_90_0: 743.0796508789062 + percentile_99_5: 1010.25439453125 + stdev: 156.72950744628906 + label: + - image_intensity: + - max: 5335.14501953125 + mean: 722.310302734375 + median: 759.778076171875 + min: 0.0 + percentile: [41.74604797363281, 258.82550048828125, 1102.095703125, 1786.7308349609375] + percentile_00_5: 41.74604797363281 + percentile_10_0: 258.82550048828125 + percentile_90_0: 1102.095703125 + percentile_99_5: 1786.7308349609375 + stdev: 349.47088623046875 + ncomponents: 1 + pixel_percentage: 0.9538760185241699 + shape: + - [41, 47, 42] + - image_intensity: + - max: 1152.19091796875 + mean: 536.1976928710938 + median: 517.6510009765625 + min: 141.9365692138672 + percentile: [208.73023986816406, 350.66680908203125, 743.0796508789062, 968.5083618164062] + percentile_00_5: 208.73023986816406 + percentile_10_0: 350.66680908203125 + percentile_90_0: 743.0796508789062 + percentile_99_5: 968.5083618164062 + stdev: 154.11289978027344 + ncomponents: 1 + pixel_percentage: 0.024279043078422546 + shape: + - [23, 16, 17] + - image_intensity: + - max: 1085.397216796875 + mean: 517.8115844726562 + median: 475.90496826171875 + min: 175.33340454101562 + percentile: [249.09866333007812, 350.66680908203125, 743.0796508789062, 1028.3306884765625] + percentile_00_5: 249.09866333007812 + percentile_10_0: 350.66680908203125 + percentile_90_0: 743.0796508789062 + percentile_99_5: 1028.3306884765625 + stdev: 159.02886962890625 + ncomponents: 1 + pixel_percentage: 0.021844960749149323 + shape: + - [18, 21, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_148.nii.gz + image_foreground_stats: + intensity: + - max: 82.0 + mean: 40.566043853759766 + median: 38.0 + min: 7.0 + percentile: [18.0, 28.0, 57.0, 76.0] + percentile_00_5: 18.0 + percentile_10_0: 28.0 + percentile_90_0: 57.0 + percentile_99_5: 76.0 + stdev: 11.138324737548828 + image_stats: + channels: 1 + cropped_shape: + - [34, 48, 32] + intensity: + - max: 144.0 + mean: 48.793983459472656 + median: 49.0 + min: 0.0 + percentile: [3.0, 14.0, 80.0, 91.0] + percentile_00_5: 3.0 + percentile_10_0: 14.0 + percentile_90_0: 80.0 + percentile_99_5: 91.0 + stdev: 23.953716278076172 + shape: + - [34, 48, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_148.nii.gz + label_stats: + image_intensity: + - max: 82.0 + mean: 40.566043853759766 + median: 38.0 + min: 7.0 + percentile: [18.0, 28.0, 57.0, 76.0] + percentile_00_5: 18.0 + percentile_10_0: 28.0 + percentile_90_0: 57.0 + percentile_99_5: 76.0 + stdev: 11.138324737548828 + label: + - image_intensity: + - max: 144.0 + mean: 49.285701751708984 + median: 51.0 + min: 0.0 + percentile: [3.0, 14.0, 80.0, 91.0] + percentile_00_5: 3.0 + percentile_10_0: 14.0 + percentile_90_0: 80.0 + percentile_99_5: 91.0 + stdev: 24.420663833618164 + ncomponents: 1 + pixel_percentage: 0.943608283996582 + shape: + - [34, 48, 32] + - image_intensity: + - max: 76.0 + mean: 40.05032730102539 + median: 38.0 + min: 7.0 + percentile: [16.0, 28.0, 54.0, 70.0] + percentile_00_5: 16.0 + percentile_10_0: 28.0 + percentile_90_0: 54.0 + percentile_99_5: 70.0 + stdev: 10.65861701965332 + ncomponents: 1 + pixel_percentage: 0.032341450452804565 + shape: + - [22, 16, 13] + - image_intensity: + - max: 82.0 + mean: 41.25955581665039 + median: 39.0 + min: 12.0 + percentile: [21.0, 29.0, 59.0, 78.0] + percentile_00_5: 21.0 + percentile_10_0: 29.0 + percentile_90_0: 59.0 + percentile_99_5: 78.0 + stdev: 11.716848373413086 + ncomponents: 1 + pixel_percentage: 0.024050245061516762 + shape: + - [17, 21, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_048.nii.gz + image_foreground_stats: + intensity: + - max: 1144.2408447265625 + mean: 492.4038391113281 + median: 468.508056640625 + min: 99.10747528076172 + percentile: [207.22471618652344, 333.36151123046875, 675.7327880859375, 1032.92529296875] + percentile_00_5: 207.22471618652344 + percentile_10_0: 333.36151123046875 + percentile_90_0: 675.7327880859375 + percentile_99_5: 1032.92529296875 + stdev: 146.8853302001953 + image_stats: + channels: 1 + cropped_shape: + - [38, 52, 29] + intensity: + - max: 2711.94091796875 + mean: 657.6072998046875 + median: 639.6937255859375 + min: 0.0 + percentile: [36.03908157348633, 216.2344970703125, 1081.1724853515625, 1279.387451171875] + percentile_00_5: 36.03908157348633 + percentile_10_0: 216.2344970703125 + percentile_90_0: 1081.1724853515625 + percentile_99_5: 1279.387451171875 + stdev: 325.3800048828125 + shape: + - [38, 52, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_048.nii.gz + label_stats: + image_intensity: + - max: 1144.2408447265625 + mean: 492.4038391113281 + median: 468.508056640625 + min: 99.10747528076172 + percentile: [207.22471618652344, 333.36151123046875, 675.7327880859375, 1032.92529296875] + percentile_00_5: 207.22471618652344 + percentile_10_0: 333.36151123046875 + percentile_90_0: 675.7327880859375 + percentile_99_5: 1032.92529296875 + stdev: 146.8853302001953 + label: + - image_intensity: + - max: 2711.94091796875 + mean: 667.6115112304688 + median: 675.7327880859375 + min: 0.0 + percentile: [36.03908157348633, 207.22471618652344, 1090.1822509765625, 1279.387451171875] + percentile_00_5: 36.03908157348633 + percentile_10_0: 207.22471618652344 + percentile_90_0: 1090.1822509765625 + percentile_99_5: 1279.387451171875 + stdev: 330.4906921386719 + ncomponents: 1 + pixel_percentage: 0.9429010152816772 + shape: + - [38, 52, 29] + - image_intensity: + - max: 982.0650024414062 + mean: 480.588623046875 + median: 468.508056640625 + min: 171.18563842773438 + percentile: [207.22471618652344, 333.36151123046875, 639.6937255859375, 848.9002685546875] + percentile_00_5: 207.22471618652344 + percentile_10_0: 333.36151123046875 + percentile_90_0: 639.6937255859375 + percentile_99_5: 848.9002685546875 + stdev: 122.53980255126953 + ncomponents: 1 + pixel_percentage: 0.034151192754507065 + shape: + - [23, 17, 13] + - image_intensity: + - max: 1144.2408447265625 + mean: 509.98724365234375 + median: 468.508056640625 + min: 99.10747528076172 + percentile: [207.22471618652344, 333.36151123046875, 762.2263793945312, 1072.1627197265625] + percentile_00_5: 207.22471618652344 + percentile_10_0: 333.36151123046875 + percentile_90_0: 762.2263793945312 + percentile_99_5: 1072.1627197265625 + stdev: 175.5562286376953 + ncomponents: 1 + pixel_percentage: 0.02294778637588024 + shape: + - [22, 23, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_135.nii.gz + image_foreground_stats: + intensity: + - max: 320596.625 + mean: 156762.46875 + median: 152516.84375 + min: 6225.17724609375 + percentile: [21788.12109375, 112053.1875, 211656.03125, 295260.46875] + percentile_00_5: 21788.12109375 + percentile_10_0: 112053.1875 + percentile_90_0: 211656.03125 + percentile_99_5: 295260.46875 + stdev: 42601.29296875 + image_stats: + channels: 1 + cropped_shape: + - [32, 49, 38] + intensity: + - max: 479338.65625 + mean: 217502.78125 + median: 224106.375 + min: 0.0 + percentile: [12450.3544921875, 87152.484375, 336159.5625, 389073.5625] + percentile_00_5: 12450.3544921875 + percentile_10_0: 87152.484375 + percentile_90_0: 336159.5625 + percentile_99_5: 389073.5625 + stdev: 94671.8984375 + shape: + - [32, 49, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_135.nii.gz + label_stats: + image_intensity: + - max: 320596.625 + mean: 156762.46875 + median: 152516.84375 + min: 6225.17724609375 + percentile: [21788.12109375, 112053.1875, 211656.03125, 295260.46875] + percentile_00_5: 21788.12109375 + percentile_10_0: 112053.1875 + percentile_90_0: 211656.03125 + percentile_99_5: 295260.46875 + stdev: 42601.29296875 + label: + - image_intensity: + - max: 479338.65625 + mean: 220306.5 + median: 230331.5625 + min: 0.0 + percentile: [12450.3544921875, 87152.484375, 339272.15625, 392186.15625] + percentile_00_5: 12450.3544921875 + percentile_10_0: 87152.484375 + percentile_90_0: 339272.15625 + percentile_99_5: 392186.15625 + stdev: 95470.15625 + ncomponents: 1 + pixel_percentage: 0.955877423286438 + shape: + - [32, 49, 38] + - image_intensity: + - max: 295695.90625 + mean: 154229.578125 + median: 152516.84375 + min: 6225.17724609375 + percentile: [18084.138671875, 105828.015625, 208543.4375, 270795.21875] + percentile_00_5: 18084.138671875 + percentile_10_0: 105828.015625 + percentile_90_0: 208543.4375 + percentile_99_5: 270795.21875 + stdev: 43262.5234375 + ncomponents: 1 + pixel_percentage: 0.022875268012285233 + shape: + - [21, 16, 14] + - image_intensity: + - max: 320596.625 + mean: 159489.4375 + median: 152516.84375 + min: 74702.125 + percentile: [87152.484375, 115165.78125, 214768.609375, 307134.84375] + percentile_00_5: 87152.484375 + percentile_10_0: 115165.78125 + percentile_90_0: 214768.609375 + percentile_99_5: 307134.84375 + stdev: 41706.12109375 + ncomponents: 1 + pixel_percentage: 0.021247314289212227 + shape: + - [18, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_035.nii.gz + image_foreground_stats: + intensity: + - max: 1070.5084228515625 + mean: 472.3668518066406 + median: 452.63104248046875 + min: 129.32315063476562 + percentile: [202.92958068847656, 344.86175537109375, 610.6926879882812, 960.979736328125] + percentile_00_5: 202.92958068847656 + percentile_10_0: 344.86175537109375 + percentile_90_0: 610.6926879882812 + percentile_99_5: 960.979736328125 + stdev: 120.3863525390625 + image_stats: + channels: 1 + cropped_shape: + - [35, 47, 37] + intensity: + - max: 2457.139892578125 + mean: 649.9960327148438 + median: 646.6157836914062 + min: 0.0 + percentile: [35.923099517822266, 273.01556396484375, 1034.585205078125, 1178.2777099609375] + percentile_00_5: 35.923099517822266 + percentile_10_0: 273.01556396484375 + percentile_90_0: 1034.585205078125 + percentile_99_5: 1178.2777099609375 + stdev: 287.1233825683594 + shape: + - [35, 47, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_035.nii.gz + label_stats: + image_intensity: + - max: 1070.5084228515625 + mean: 472.3668518066406 + median: 452.63104248046875 + min: 129.32315063476562 + percentile: [202.92958068847656, 344.86175537109375, 610.6926879882812, 960.979736328125] + percentile_00_5: 202.92958068847656 + percentile_10_0: 344.86175537109375 + percentile_90_0: 610.6926879882812 + percentile_99_5: 960.979736328125 + stdev: 120.3863525390625 + label: + - image_intensity: + - max: 2457.139892578125 + mean: 660.6695556640625 + median: 675.354248046875 + min: 0.0 + percentile: [35.923099517822266, 265.8309326171875, 1034.585205078125, 1178.2777099609375] + percentile_00_5: 35.923099517822266 + percentile_10_0: 265.8309326171875 + percentile_90_0: 1034.585205078125 + percentile_99_5: 1178.2777099609375 + stdev: 290.7109680175781 + ncomponents: 1 + pixel_percentage: 0.943317174911499 + shape: + - [35, 47, 37] + - image_intensity: + - max: 962.7390747070312 + mean: 452.0422668457031 + median: 438.2618103027344 + min: 129.32315063476562 + percentile: [181.98641967773438, 337.6771240234375, 589.1388549804688, 804.6774291992188] + percentile_00_5: 181.98641967773438 + percentile_10_0: 337.6771240234375 + percentile_90_0: 589.1388549804688 + percentile_99_5: 804.6774291992188 + stdev: 104.7016372680664 + ncomponents: 1 + pixel_percentage: 0.030674442648887634 + shape: + - [21, 15, 16] + - image_intensity: + - max: 1070.5084228515625 + mean: 496.3378601074219 + median: 474.1849060058594 + min: 165.2462615966797 + percentile: [250.16847229003906, 366.4156188964844, 660.9850463867188, 985.5856323242188] + percentile_00_5: 250.16847229003906 + percentile_10_0: 366.4156188964844 + percentile_90_0: 660.9850463867188 + percentile_99_5: 985.5856323242188 + stdev: 132.64572143554688 + ncomponents: 1 + pixel_percentage: 0.026008378714323044 + shape: + - [20, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_282.nii.gz + image_foreground_stats: + intensity: + - max: 795.6370849609375 + mean: 309.8588562011719 + median: 296.1860656738281 + min: 17.422710418701172 + percentile: [133.57411193847656, 220.68765258789062, 426.85638427734375, 603.9873046875] + percentile_00_5: 133.57411193847656 + percentile_10_0: 220.68765258789062 + percentile_90_0: 426.85638427734375 + percentile_99_5: 603.9873046875 + stdev: 85.25798034667969 + image_stats: + channels: 1 + cropped_shape: + - [37, 52, 32] + intensity: + - max: 2793.441162109375 + mean: 418.5789489746094 + median: 418.1450500488281 + min: 0.0 + percentile: [23.23027992248535, 145.1892547607422, 662.06298828125, 807.252197265625] + percentile_00_5: 23.23027992248535 + percentile_10_0: 145.1892547607422 + percentile_90_0: 662.06298828125 + percentile_99_5: 807.252197265625 + stdev: 198.16217041015625 + shape: + - [37, 52, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_282.nii.gz + label_stats: + image_intensity: + - max: 795.6370849609375 + mean: 309.8588562011719 + median: 296.1860656738281 + min: 17.422710418701172 + percentile: [133.57411193847656, 220.68765258789062, 426.85638427734375, 603.9873046875] + percentile_00_5: 133.57411193847656 + percentile_10_0: 220.68765258789062 + percentile_90_0: 426.85638427734375 + percentile_99_5: 603.9873046875 + stdev: 85.25798034667969 + label: + - image_intensity: + - max: 2793.441162109375 + mean: 423.0195007324219 + median: 429.76019287109375 + min: 0.0 + percentile: [23.23027992248535, 139.38168334960938, 667.8705444335938, 813.059814453125] + percentile_00_5: 23.23027992248535 + percentile_10_0: 139.38168334960938 + percentile_90_0: 667.8705444335938 + percentile_99_5: 813.059814453125 + stdev: 200.18174743652344 + ncomponents: 1 + pixel_percentage: 0.9607588648796082 + shape: + - [37, 52, 32] + - image_intensity: + - max: 609.7948608398438 + mean: 313.7369384765625 + median: 301.99365234375 + min: 46.4605598449707 + percentile: [133.57411193847656, 221.8491973876953, 412.33746337890625, 569.2574462890625] + percentile_00_5: 133.57411193847656 + percentile_10_0: 221.8491973876953 + percentile_90_0: 412.33746337890625 + percentile_99_5: 569.2574462890625 + stdev: 77.09680938720703 + ncomponents: 1 + pixel_percentage: 0.01840241625905037 + shape: + - [17, 16, 14] + - image_intensity: + - max: 795.6370849609375 + mean: 306.4341735839844 + median: 284.5709228515625 + min: 17.422710418701172 + percentile: [133.57411193847656, 214.88009643554688, 440.21337890625, 609.7948608398438] + percentile_00_5: 133.57411193847656 + percentile_10_0: 214.88009643554688 + percentile_90_0: 440.21337890625 + percentile_99_5: 609.7948608398438 + stdev: 91.72791290283203 + ncomponents: 1 + pixel_percentage: 0.020838746801018715 + shape: + - [24, 24, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_169.nii.gz + image_foreground_stats: + intensity: + - max: 348675.03125 + mean: 178582.8125 + median: 175880.328125 + min: 30856.19921875 + percentile: [87292.1875, 132681.65625, 228335.875, 327075.71875] + percentile_00_5: 87292.1875 + percentile_10_0: 132681.65625 + percentile_90_0: 228335.875 + percentile_99_5: 327075.71875 + stdev: 40288.5078125 + image_stats: + channels: 1 + cropped_shape: + - [36, 45, 39] + intensity: + - max: 965799.0 + mean: 231999.9375 + median: 237592.734375 + min: 0.0 + percentile: [12342.4794921875, 89482.9765625, 357931.90625, 425815.53125] + percentile_00_5: 12342.4794921875 + percentile_10_0: 89482.9765625 + percentile_90_0: 357931.90625 + percentile_99_5: 425815.53125 + stdev: 101552.2421875 + shape: + - [36, 45, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_169.nii.gz + label_stats: + image_intensity: + - max: 348675.03125 + mean: 178582.8125 + median: 175880.328125 + min: 30856.19921875 + percentile: [87292.1875, 132681.65625, 228335.875, 327075.71875] + percentile_00_5: 87292.1875 + percentile_10_0: 132681.65625 + percentile_90_0: 228335.875 + percentile_99_5: 327075.71875 + stdev: 40288.5078125 + label: + - image_intensity: + - max: 965799.0 + mean: 234531.71875 + median: 243763.96875 + min: 0.0 + percentile: [12342.4794921875, 83311.734375, 361017.53125, 428901.15625] + percentile_00_5: 12342.4794921875 + percentile_10_0: 83311.734375 + percentile_90_0: 361017.53125 + percentile_99_5: 428901.15625 + stdev: 102874.046875 + ncomponents: 1 + pixel_percentage: 0.9547483325004578 + shape: + - [36, 45, 39] + - image_intensity: + - max: 293133.875 + mean: 176158.78125 + median: 175880.328125 + min: 30856.19921875 + percentile: [80226.1171875, 132681.65625, 222164.625, 268448.9375] + percentile_00_5: 80226.1171875 + percentile_10_0: 132681.65625 + percentile_90_0: 222164.625 + percentile_99_5: 268448.9375 + stdev: 35374.33203125 + ncomponents: 1 + pixel_percentage: 0.021573282778263092 + shape: + - [21, 14, 14] + - image_intensity: + - max: 348675.03125 + mean: 180791.34375 + median: 172794.71875 + min: 64798.015625 + percentile: [89482.9765625, 132681.65625, 240678.34375, 333246.9375] + percentile_00_5: 89482.9765625 + percentile_10_0: 132681.65625 + percentile_90_0: 240678.34375 + percentile_99_5: 333246.9375 + stdev: 44178.015625 + ncomponents: 1 + pixel_percentage: 0.023678379133343697 + shape: + - [23, 20, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_114.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 49.09638214111328 + median: 47.0 + min: 15.0 + percentile: [26.0, 36.0, 64.0, 87.0] + percentile_00_5: 26.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 87.0 + stdev: 11.354162216186523 + image_stats: + channels: 1 + cropped_shape: + - [38, 50, 39] + intensity: + - max: 253.0 + mean: 61.09433364868164 + median: 60.0 + min: 2.0 + percentile: [7.0, 24.0, 98.0, 113.0] + percentile_00_5: 7.0 + percentile_10_0: 24.0 + percentile_90_0: 98.0 + percentile_99_5: 113.0 + stdev: 27.89406967163086 + shape: + - [38, 50, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_114.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 49.09638214111328 + median: 47.0 + min: 15.0 + percentile: [26.0, 36.0, 64.0, 87.0] + percentile_00_5: 26.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 87.0 + stdev: 11.354162216186523 + label: + - image_intensity: + - max: 253.0 + mean: 61.725624084472656 + median: 62.0 + min: 2.0 + percentile: [7.0, 23.0, 99.0, 114.0] + percentile_00_5: 7.0 + percentile_10_0: 23.0 + percentile_90_0: 99.0 + percentile_99_5: 114.0 + stdev: 28.359533309936523 + ncomponents: 1 + pixel_percentage: 0.9500135183334351 + shape: + - [38, 50, 39] + - image_intensity: + - max: 86.0 + mean: 48.89060592651367 + median: 48.0 + min: 15.0 + percentile: [25.0, 37.0, 62.0, 78.0] + percentile_00_5: 25.0 + percentile_10_0: 37.0 + percentile_90_0: 62.0 + percentile_99_5: 78.0 + stdev: 10.027525901794434 + ncomponents: 1 + pixel_percentage: 0.03318488597869873 + shape: + - [22, 20, 20] + - image_intensity: + - max: 96.0 + mean: 49.502811431884766 + median: 46.0 + min: 23.0 + percentile: [28.0, 36.0, 70.0, 92.0] + percentile_00_5: 28.0 + percentile_10_0: 36.0 + percentile_90_0: 70.0 + percentile_99_5: 92.0 + stdev: 13.590193748474121 + ncomponents: 1 + pixel_percentage: 0.01680161990225315 + shape: + - [17, 17, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_014.nii.gz + image_foreground_stats: + intensity: + - max: 836.0855102539062 + mean: 358.72784423828125 + median: 347.18804931640625 + min: 35.42735290527344 + percentile: [128.28244018554688, 240.90599060058594, 488.8974304199219, 736.1450805664062] + percentile_00_5: 128.28244018554688 + percentile_10_0: 240.90599060058594 + percentile_90_0: 488.8974304199219 + percentile_99_5: 736.1450805664062 + stdev: 104.594482421875 + image_stats: + channels: 1 + cropped_shape: + - [39, 50, 40] + intensity: + - max: 2302.77783203125 + mean: 508.8839416503906 + median: 531.4102783203125 + min: 0.0 + percentile: [28.341880798339844, 184.22222900390625, 793.5726318359375, 914.025634765625] + percentile_00_5: 28.341880798339844 + percentile_10_0: 184.22222900390625 + percentile_90_0: 793.5726318359375 + percentile_99_5: 914.025634765625 + stdev: 232.50302124023438 + shape: + - [39, 50, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_014.nii.gz + label_stats: + image_intensity: + - max: 836.0855102539062 + mean: 358.72784423828125 + median: 347.18804931640625 + min: 35.42735290527344 + percentile: [128.28244018554688, 240.90599060058594, 488.8974304199219, 736.1450805664062] + percentile_00_5: 128.28244018554688 + percentile_10_0: 240.90599060058594 + percentile_90_0: 488.8974304199219 + percentile_99_5: 736.1450805664062 + stdev: 104.594482421875 + label: + - image_intensity: + - max: 2302.77783203125 + mean: 516.1961059570312 + median: 545.5811767578125 + min: 0.0 + percentile: [28.341880798339844, 177.13674926757812, 793.5726318359375, 914.025634765625] + percentile_00_5: 28.341880798339844 + percentile_10_0: 177.13674926757812 + percentile_90_0: 793.5726318359375 + percentile_99_5: 914.025634765625 + stdev: 234.53343200683594 + ncomponents: 1 + pixel_percentage: 0.9535641074180603 + shape: + - [39, 50, 40] + - image_intensity: + - max: 800.6581420898438 + mean: 354.3719177246094 + median: 347.18804931640625 + min: 35.42735290527344 + percentile: [106.84888458251953, 240.90599060058594, 474.72650146484375, 658.3822021484375] + percentile_00_5: 106.84888458251953 + percentile_10_0: 240.90599060058594 + percentile_90_0: 474.72650146484375 + percentile_99_5: 658.3822021484375 + stdev: 96.74717712402344 + ncomponents: 1 + pixel_percentage: 0.02585897408425808 + shape: + - [22, 17, 16] + - image_intensity: + - max: 836.0855102539062 + mean: 364.2020263671875 + median: 347.18804931640625 + min: 85.02564239501953 + percentile: [148.7948760986328, 240.90599060058594, 517.2393188476562, 758.1453247070312] + percentile_00_5: 148.7948760986328 + percentile_10_0: 240.90599060058594 + percentile_90_0: 517.2393188476562 + percentile_99_5: 758.1453247070312 + stdev: 113.45378875732422 + ncomponents: 1 + pixel_percentage: 0.020576922222971916 + shape: + - [21, 24, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_177.nii.gz + image_foreground_stats: + intensity: + - max: 90.0 + mean: 49.70458984375 + median: 48.0 + min: 22.0 + percentile: [31.0, 39.0, 63.0, 83.080078125] + percentile_00_5: 31.0 + percentile_10_0: 39.0 + percentile_90_0: 63.0 + percentile_99_5: 83.080078125 + stdev: 9.899138450622559 + image_stats: + channels: 1 + cropped_shape: + - [33, 44, 40] + intensity: + - max: 175.0 + mean: 65.5118637084961 + median: 70.0 + min: 2.0 + percentile: [7.0, 33.0, 93.0, 105.0] + percentile_00_5: 7.0 + percentile_10_0: 33.0 + percentile_90_0: 93.0 + percentile_99_5: 105.0 + stdev: 23.864320755004883 + shape: + - [33, 44, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_177.nii.gz + label_stats: + image_intensity: + - max: 90.0 + mean: 49.70458984375 + median: 48.0 + min: 22.0 + percentile: [31.0, 39.0, 63.0, 83.080078125] + percentile_00_5: 31.0 + percentile_10_0: 39.0 + percentile_90_0: 63.0 + percentile_99_5: 83.080078125 + stdev: 9.899138450622559 + label: + - image_intensity: + - max: 175.0 + mean: 66.25056457519531 + median: 71.0 + min: 2.0 + percentile: [7.0, 32.0, 93.0, 105.0] + percentile_00_5: 7.0 + percentile_10_0: 32.0 + percentile_90_0: 93.0 + percentile_99_5: 105.0 + stdev: 24.06902313232422 + ncomponents: 1 + pixel_percentage: 0.9553546905517578 + shape: + - [33, 44, 40] + - image_intensity: + - max: 87.0 + mean: 49.25142288208008 + median: 48.0 + min: 22.0 + percentile: [30.264999389648438, 39.0, 61.0, 77.0] + percentile_00_5: 30.264999389648438 + percentile_10_0: 39.0 + percentile_90_0: 61.0 + percentile_99_5: 77.0 + stdev: 8.952879905700684 + ncomponents: 1 + pixel_percentage: 0.018147382885217667 + shape: + - [18, 13, 13] + - image_intensity: + - max: 90.0 + mean: 50.01494598388672 + median: 47.0 + min: 29.0 + percentile: [33.0, 39.0, 65.0, 86.0] + percentile_00_5: 33.0 + percentile_10_0: 39.0 + percentile_90_0: 65.0 + percentile_99_5: 86.0 + stdev: 10.486807823181152 + ncomponents: 1 + pixel_percentage: 0.026497934013605118 + shape: + - [18, 22, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_077.nii.gz + image_foreground_stats: + intensity: + - max: 722.464111328125 + mean: 345.9715576171875 + median: 329.0430603027344 + min: 0.0 + percentile: [128.7559814453125, 250.35885620117188, 464.9521484375, 632.4425048828125] + percentile_00_5: 128.7559814453125 + percentile_10_0: 250.35885620117188 + percentile_90_0: 464.9521484375 + percentile_99_5: 632.4425048828125 + stdev: 88.11822509765625 + image_stats: + channels: 1 + cropped_shape: + - [35, 47, 45] + intensity: + - max: 937.0574340820312 + mean: 442.8080749511719 + median: 464.9521484375 + min: 0.0 + percentile: [21.45932960510254, 143.06219482421875, 686.6985473632812, 779.68896484375] + percentile_00_5: 21.45932960510254 + percentile_10_0: 143.06219482421875 + percentile_90_0: 686.6985473632812 + percentile_99_5: 779.68896484375 + stdev: 199.81129455566406 + shape: + - [35, 47, 45] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_077.nii.gz + label_stats: + image_intensity: + - max: 722.464111328125 + mean: 345.9715576171875 + median: 329.0430603027344 + min: 0.0 + percentile: [128.7559814453125, 250.35885620117188, 464.9521484375, 632.4425048828125] + percentile_00_5: 128.7559814453125 + percentile_10_0: 250.35885620117188 + percentile_90_0: 464.9521484375 + percentile_99_5: 632.4425048828125 + stdev: 88.11822509765625 + label: + - image_intensity: + - max: 937.0574340820312 + mean: 447.92901611328125 + median: 479.25836181640625 + min: 0.0 + percentile: [21.45932960510254, 135.90908813476562, 686.6985473632812, 779.68896484375] + percentile_00_5: 21.45932960510254 + percentile_10_0: 135.90908813476562 + percentile_90_0: 686.6985473632812 + percentile_99_5: 779.68896484375 + stdev: 202.739013671875 + ncomponents: 1 + pixel_percentage: 0.9497737288475037 + shape: + - [35, 47, 45] + - image_intensity: + - max: 722.464111328125 + mean: 353.14154052734375 + median: 336.1961669921875 + min: 42.91865921020508 + percentile: [128.7559814453125, 257.511962890625, 472.1052551269531, 615.16748046875] + percentile_00_5: 128.7559814453125 + percentile_10_0: 257.511962890625 + percentile_90_0: 472.1052551269531 + percentile_99_5: 615.16748046875 + stdev: 87.86307525634766 + ncomponents: 1 + pixel_percentage: 0.026801755651831627 + shape: + - [23, 16, 17] + - image_intensity: + - max: 686.6985473632812 + mean: 337.7678527832031 + median: 321.88995361328125 + min: 0.0 + percentile: [128.7559814453125, 243.2057342529297, 450.64593505859375, 650.9329833984375] + percentile_00_5: 128.7559814453125 + percentile_10_0: 243.2057342529297 + percentile_90_0: 450.64593505859375 + percentile_99_5: 650.9329833984375 + stdev: 87.69307708740234 + ncomponents: 1 + pixel_percentage: 0.02342451922595501 + shape: + - [15, 21, 29] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_006.nii.gz + image_foreground_stats: + intensity: + - max: 1090.437744140625 + mean: 524.6160888671875 + median: 500.1255798339844 + min: 24.59634017944336 + percentile: [215.70989990234375, 360.746337890625, 729.69140625, 1000.2511596679688] + percentile_00_5: 215.70989990234375 + percentile_10_0: 360.746337890625 + percentile_90_0: 729.69140625 + percentile_99_5: 1000.2511596679688 + stdev: 149.73944091796875 + image_stats: + channels: 1 + cropped_shape: + - [35, 52, 34] + intensity: + - max: 3845.227783203125 + mean: 703.9960327148438 + median: 705.0950927734375 + min: 0.0 + percentile: [49.19268035888672, 286.9573059082031, 1106.8353271484375, 1279.0096435546875] + percentile_00_5: 49.19268035888672 + percentile_10_0: 286.9573059082031 + percentile_90_0: 1106.8353271484375 + percentile_99_5: 1279.0096435546875 + stdev: 320.350830078125 + shape: + - [35, 52, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_006.nii.gz + label_stats: + image_intensity: + - max: 1090.437744140625 + mean: 524.6160888671875 + median: 500.1255798339844 + min: 24.59634017944336 + percentile: [215.70989990234375, 360.746337890625, 729.69140625, 1000.2511596679688] + percentile_00_5: 215.70989990234375 + percentile_10_0: 360.746337890625 + percentile_90_0: 729.69140625 + percentile_99_5: 1000.2511596679688 + stdev: 149.73944091796875 + label: + - image_intensity: + - max: 3845.227783203125 + mean: 717.2681274414062 + median: 737.8901977539062 + min: 0.0 + percentile: [49.19268035888672, 278.7585144042969, 1115.0340576171875, 1287.20849609375] + percentile_00_5: 49.19268035888672 + percentile_10_0: 278.7585144042969 + percentile_90_0: 1115.0340576171875 + percentile_99_5: 1287.20849609375 + stdev: 325.5792541503906 + ncomponents: 1 + pixel_percentage: 0.9311085939407349 + shape: + - [35, 52, 34] + - image_intensity: + - max: 1074.0401611328125 + mean: 512.6363525390625 + median: 491.92681884765625 + min: 24.59634017944336 + percentile: [204.96949768066406, 344.3487548828125, 705.0950927734375, 962.82421875] + percentile_00_5: 204.96949768066406 + percentile_10_0: 344.3487548828125 + percentile_90_0: 705.0950927734375 + percentile_99_5: 962.82421875 + stdev: 143.35067749023438 + ncomponents: 1 + pixel_percentage: 0.03739495947957039 + shape: + - [24, 18, 14] + - image_intensity: + - max: 1090.437744140625 + mean: 538.8394775390625 + median: 508.3243713378906 + min: 106.58413696289062 + percentile: [237.76461791992188, 368.9450988769531, 762.486572265625, 1029.111083984375] + percentile_00_5: 237.76461791992188 + percentile_10_0: 368.9450988769531 + percentile_90_0: 762.486572265625 + percentile_99_5: 1029.111083984375 + stdev: 155.7958984375 + ncomponents: 1 + pixel_percentage: 0.03149644657969475 + shape: + - [21, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_106.nii.gz + image_foreground_stats: + intensity: + - max: 974.198486328125 + mean: 391.8468933105469 + median: 379.26812744140625 + min: 29.746519088745117 + percentile: [159.55288696289062, 267.7186584472656, 542.8739624023438, 721.3530883789062] + percentile_00_5: 159.55288696289062 + percentile_10_0: 267.7186584472656 + percentile_90_0: 542.8739624023438 + percentile_99_5: 721.3530883789062 + stdev: 110.99180603027344 + image_stats: + channels: 1 + cropped_shape: + - [34, 46, 38] + intensity: + - max: 3502.652587890625 + mean: 526.2657470703125 + median: 542.8739624023438 + min: 0.0 + percentile: [29.746519088745117, 215.66226196289062, 803.156005859375, 966.7618408203125] + percentile_00_5: 29.746519088745117 + percentile_10_0: 215.66226196289062 + percentile_90_0: 803.156005859375 + percentile_99_5: 966.7618408203125 + stdev: 227.53268432617188 + shape: + - [34, 46, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_106.nii.gz + label_stats: + image_intensity: + - max: 974.198486328125 + mean: 391.8468933105469 + median: 379.26812744140625 + min: 29.746519088745117 + percentile: [159.55288696289062, 267.7186584472656, 542.8739624023438, 721.3530883789062] + percentile_00_5: 159.55288696289062 + percentile_10_0: 267.7186584472656 + percentile_90_0: 542.8739624023438 + percentile_99_5: 721.3530883789062 + stdev: 110.99180603027344 + label: + - image_intensity: + - max: 3502.652587890625 + mean: 533.642822265625 + median: 557.7472534179688 + min: 0.0 + percentile: [29.746519088745117, 208.2256317138672, 803.156005859375, 966.7618408203125] + percentile_00_5: 29.746519088745117 + percentile_10_0: 208.2256317138672 + percentile_90_0: 803.156005859375 + percentile_99_5: 966.7618408203125 + stdev: 229.97879028320312 + ncomponents: 1 + pixel_percentage: 0.9479741454124451 + shape: + - [34, 46, 38] + - image_intensity: + - max: 974.198486328125 + mean: 404.0713195800781 + median: 394.1413879394531 + min: 29.746519088745117 + percentile: [160.29653930664062, 275.1553039550781, 557.7472534179688, 743.6629638671875] + percentile_00_5: 160.29653930664062 + percentile_10_0: 275.1553039550781 + percentile_90_0: 557.7472534179688 + percentile_99_5: 743.6629638671875 + stdev: 113.93299865722656 + ncomponents: 1 + pixel_percentage: 0.028806030750274658 + shape: + - [24, 16, 15] + - image_intensity: + - max: 795.7193603515625 + mean: 376.6814880371094 + median: 356.9582214355469 + min: 89.23955535888672 + percentile: [162.8249969482422, 252.8454132080078, 521.3075561523438, 691.6065673828125] + percentile_00_5: 162.8249969482422 + percentile_10_0: 252.8454132080078 + percentile_90_0: 521.3075561523438 + percentile_99_5: 691.6065673828125 + stdev: 105.27629089355469 + ncomponents: 1 + pixel_percentage: 0.023219814524054527 + shape: + - [13, 20, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_065.nii.gz + image_foreground_stats: + intensity: + - max: 85.0 + mean: 47.45315170288086 + median: 46.0 + min: 21.0 + percentile: [29.0, 36.0, 61.0, 77.755126953125] + percentile_00_5: 29.0 + percentile_10_0: 36.0 + percentile_90_0: 61.0 + percentile_99_5: 77.755126953125 + stdev: 9.922335624694824 + image_stats: + channels: 1 + cropped_shape: + - [39, 52, 37] + intensity: + - max: 205.0 + mean: 60.328739166259766 + median: 60.0 + min: 1.0 + percentile: [7.0, 27.0, 93.0, 109.0] + percentile_00_5: 7.0 + percentile_10_0: 27.0 + percentile_90_0: 93.0 + percentile_99_5: 109.0 + stdev: 25.04729461669922 + shape: + - [39, 52, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_065.nii.gz + label_stats: + image_intensity: + - max: 85.0 + mean: 47.45315170288086 + median: 46.0 + min: 21.0 + percentile: [29.0, 36.0, 61.0, 77.755126953125] + percentile_00_5: 29.0 + percentile_10_0: 36.0 + percentile_90_0: 61.0 + percentile_99_5: 77.755126953125 + stdev: 9.922335624694824 + label: + - image_intensity: + - max: 205.0 + mean: 60.9870719909668 + median: 62.0 + min: 1.0 + percentile: [7.0, 27.0, 93.0, 110.0] + percentile_00_5: 7.0 + percentile_10_0: 27.0 + percentile_90_0: 93.0 + percentile_99_5: 110.0 + stdev: 25.406709671020508 + ncomponents: 1 + pixel_percentage: 0.9513567090034485 + shape: + - [39, 52, 37] + - image_intensity: + - max: 85.0 + mean: 48.73179244995117 + median: 47.0 + min: 21.0 + percentile: [29.0, 36.0, 63.0999755859375, 80.35498046875] + percentile_00_5: 29.0 + percentile_10_0: 36.0 + percentile_90_0: 63.0999755859375 + percentile_99_5: 80.35498046875 + stdev: 10.575288772583008 + ncomponents: 1 + pixel_percentage: 0.023055600002408028 + shape: + - [24, 15, 14] + - image_intensity: + - max: 82.0 + mean: 46.30104446411133 + median: 45.0 + min: 22.0 + percentile: [28.594999313354492, 35.90000915527344, 59.0, 74.405029296875] + percentile_00_5: 28.594999313354492 + percentile_10_0: 35.90000915527344 + percentile_90_0: 59.0 + percentile_99_5: 74.405029296875 + stdev: 9.142905235290527 + ncomponents: 1 + pixel_percentage: 0.025587717071175575 + shape: + - [17, 24, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_165.nii.gz + image_foreground_stats: + intensity: + - max: 88.0 + mean: 47.27389907836914 + median: 46.0 + min: 11.0 + percentile: [26.110000610351562, 36.0, 62.0, 79.0] + percentile_00_5: 26.110000610351562 + percentile_10_0: 36.0 + percentile_90_0: 62.0 + percentile_99_5: 79.0 + stdev: 10.501092910766602 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 29] + intensity: + - max: 187.0 + mean: 60.1342887878418 + median: 59.0 + min: 1.0 + percentile: [6.0, 19.0, 97.0, 112.0] + percentile_00_5: 6.0 + percentile_10_0: 19.0 + percentile_90_0: 97.0 + percentile_99_5: 112.0 + stdev: 28.541006088256836 + shape: + - [34, 49, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_165.nii.gz + label_stats: + image_intensity: + - max: 88.0 + mean: 47.27389907836914 + median: 46.0 + min: 11.0 + percentile: [26.110000610351562, 36.0, 62.0, 79.0] + percentile_00_5: 26.110000610351562 + percentile_10_0: 36.0 + percentile_90_0: 62.0 + percentile_99_5: 79.0 + stdev: 10.501092910766602 + label: + - image_intensity: + - max: 187.0 + mean: 60.992671966552734 + median: 62.0 + min: 1.0 + percentile: [6.0, 18.0, 97.0, 112.0] + percentile_00_5: 6.0 + percentile_10_0: 18.0 + percentile_90_0: 97.0 + percentile_99_5: 112.0 + stdev: 29.151731491088867 + ncomponents: 1 + pixel_percentage: 0.9374301433563232 + shape: + - [34, 49, 29] + - image_intensity: + - max: 88.0 + mean: 48.3536262512207 + median: 47.0 + min: 21.0 + percentile: [26.0, 35.0, 63.0, 80.0] + percentile_00_5: 26.0 + percentile_10_0: 35.0 + percentile_90_0: 63.0 + percentile_99_5: 80.0 + stdev: 11.051191329956055 + ncomponents: 1 + pixel_percentage: 0.031957611441612244 + shape: + - [21, 15, 12] + - image_intensity: + - max: 85.0 + mean: 46.14672088623047 + median: 44.0 + min: 11.0 + percentile: [28.0, 36.0, 59.0, 78.0] + percentile_00_5: 28.0 + percentile_10_0: 36.0 + percentile_90_0: 59.0 + percentile_99_5: 78.0 + stdev: 9.767725944519043 + ncomponents: 1 + pixel_percentage: 0.030612245202064514 + shape: + - [16, 23, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_287.nii.gz + image_foreground_stats: + intensity: + - max: 955.75048828125 + mean: 416.1406555175781 + median: 401.4151916503906 + min: 70.08836364746094 + percentile: [191.15008544921875, 305.84014892578125, 547.963623046875, 777.4090576171875] + percentile_00_5: 191.15008544921875 + percentile_10_0: 305.84014892578125 + percentile_90_0: 547.963623046875 + percentile_99_5: 777.4090576171875 + stdev: 104.53321838378906 + image_stats: + channels: 1 + cropped_shape: + - [37, 50, 39] + intensity: + - max: 1389.0240478515625 + mean: 562.8577270507812 + median: 573.4502563476562 + min: 0.0 + percentile: [31.858348846435547, 235.7517852783203, 872.9187622070312, 1051.3255615234375] + percentile_00_5: 31.858348846435547 + percentile_10_0: 235.7517852783203 + percentile_90_0: 872.9187622070312 + percentile_99_5: 1051.3255615234375 + stdev: 244.1605682373047 + shape: + - [37, 50, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_287.nii.gz + label_stats: + image_intensity: + - max: 955.75048828125 + mean: 416.1406555175781 + median: 401.4151916503906 + min: 70.08836364746094 + percentile: [191.15008544921875, 305.84014892578125, 547.963623046875, 777.4090576171875] + percentile_00_5: 191.15008544921875 + percentile_10_0: 305.84014892578125 + percentile_90_0: 547.963623046875 + percentile_99_5: 777.4090576171875 + stdev: 104.53321838378906 + label: + - image_intensity: + - max: 1389.0240478515625 + mean: 570.7882690429688 + median: 592.5653076171875 + min: 0.0 + percentile: [31.858348846435547, 229.38011169433594, 872.9187622070312, 1057.6971435546875] + percentile_00_5: 31.858348846435547 + percentile_10_0: 229.38011169433594 + percentile_90_0: 872.9187622070312 + percentile_99_5: 1057.6971435546875 + stdev: 247.02157592773438 + ncomponents: 1 + pixel_percentage: 0.9487179517745972 + shape: + - [37, 50, 39] + - image_intensity: + - max: 955.75048828125 + mean: 417.86029052734375 + median: 407.786865234375 + min: 70.08836364746094 + percentile: [197.52175903320312, 312.2118225097656, 535.2202758789062, 727.4857177734375] + percentile_00_5: 197.52175903320312 + percentile_10_0: 312.2118225097656 + percentile_90_0: 535.2202758789062 + percentile_99_5: 727.4857177734375 + stdev: 93.207763671875 + ncomponents: 1 + pixel_percentage: 0.024476785212755203 + shape: + - [20, 16, 14] + - image_intensity: + - max: 847.4320678710938 + mean: 414.5703125 + median: 395.04351806640625 + min: 101.94671630859375 + percentile: [189.0155792236328, 293.0968017578125, 567.07861328125, 792.2213134765625] + percentile_00_5: 189.0155792236328 + percentile_10_0: 293.0968017578125 + percentile_90_0: 567.07861328125 + percentile_99_5: 792.2213134765625 + stdev: 113.87274169921875 + ncomponents: 1 + pixel_percentage: 0.026805266737937927 + shape: + - [18, 24, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_130.nii.gz + image_foreground_stats: + intensity: + - max: 93.0 + mean: 43.85144805908203 + median: 42.0 + min: 15.0 + percentile: [24.0, 33.0, 57.0, 81.0] + percentile_00_5: 24.0 + percentile_10_0: 33.0 + percentile_90_0: 57.0 + percentile_99_5: 81.0 + stdev: 10.117746353149414 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 40] + intensity: + - max: 195.0 + mean: 61.48345184326172 + median: 61.0 + min: 3.0 + percentile: [8.0, 23.0, 99.0, 116.0] + percentile_00_5: 8.0 + percentile_10_0: 23.0 + percentile_90_0: 99.0 + percentile_99_5: 116.0 + stdev: 28.658357620239258 + shape: + - [35, 49, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_130.nii.gz + label_stats: + image_intensity: + - max: 93.0 + mean: 43.85144805908203 + median: 42.0 + min: 15.0 + percentile: [24.0, 33.0, 57.0, 81.0] + percentile_00_5: 24.0 + percentile_10_0: 33.0 + percentile_90_0: 57.0 + percentile_99_5: 81.0 + stdev: 10.117746353149414 + label: + - image_intensity: + - max: 195.0 + mean: 62.37025451660156 + median: 64.0 + min: 3.0 + percentile: [8.0, 22.0, 99.0, 116.0] + percentile_00_5: 8.0 + percentile_10_0: 22.0 + percentile_90_0: 99.0 + percentile_99_5: 116.0 + stdev: 29.000646591186523 + ncomponents: 1 + pixel_percentage: 0.952113687992096 + shape: + - [35, 49, 40] + - image_intensity: + - max: 76.0 + mean: 44.128448486328125 + median: 43.0 + min: 15.0 + percentile: [21.0, 34.0, 56.0, 71.47998046875] + percentile_00_5: 21.0 + percentile_10_0: 34.0 + percentile_90_0: 56.0 + percentile_99_5: 71.47998046875 + stdev: 9.1292724609375 + ncomponents: 1 + pixel_percentage: 0.024854227900505066 + shape: + - [18, 16, 16] + - image_intensity: + - max: 93.0 + mean: 43.55253219604492 + median: 41.0 + min: 19.0 + percentile: [25.0, 33.0, 59.0, 84.10498046875] + percentile_00_5: 25.0 + percentile_10_0: 33.0 + percentile_90_0: 59.0 + percentile_99_5: 84.10498046875 + stdev: 11.078221321105957 + ncomponents: 1 + pixel_percentage: 0.023032069206237793 + shape: + - [19, 23, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_387.nii.gz + image_foreground_stats: + intensity: + - max: 1081.1651611328125 + mean: 519.1820678710938 + median: 503.3010559082031 + min: 93.20389556884766 + percentile: [195.72817993164062, 372.8155822753906, 689.7088623046875, 946.998046875] + percentile_00_5: 195.72817993164062 + percentile_10_0: 372.8155822753906 + percentile_90_0: 689.7088623046875 + percentile_99_5: 946.998046875 + stdev: 130.07347106933594 + image_stats: + channels: 1 + cropped_shape: + - [33, 51, 32] + intensity: + - max: 1556.505126953125 + mean: 681.3613891601562 + median: 661.7476806640625 + min: 0.0 + percentile: [46.60194778442383, 288.93206787109375, 1081.1651611328125, 1248.9322509765625] + percentile_00_5: 46.60194778442383 + percentile_10_0: 288.93206787109375 + percentile_90_0: 1081.1651611328125 + percentile_99_5: 1248.9322509765625 + stdev: 297.30645751953125 + shape: + - [33, 51, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_387.nii.gz + label_stats: + image_intensity: + - max: 1081.1651611328125 + mean: 519.1820678710938 + median: 503.3010559082031 + min: 93.20389556884766 + percentile: [195.72817993164062, 372.8155822753906, 689.7088623046875, 946.998046875] + percentile_00_5: 195.72817993164062 + percentile_10_0: 372.8155822753906 + percentile_90_0: 689.7088623046875 + percentile_99_5: 946.998046875 + stdev: 130.07347106933594 + label: + - image_intensity: + - max: 1556.505126953125 + mean: 691.198974609375 + median: 689.7088623046875 + min: 0.0 + percentile: [46.60194778442383, 279.6116943359375, 1090.485595703125, 1248.9322509765625] + percentile_00_5: 46.60194778442383 + percentile_10_0: 279.6116943359375 + percentile_90_0: 1090.485595703125 + percentile_99_5: 1248.9322509765625 + stdev: 301.7189025878906 + ncomponents: 1 + pixel_percentage: 0.9428104758262634 + shape: + - [33, 51, 32] + - image_intensity: + - max: 1006.6021118164062 + mean: 522.275390625 + median: 521.9418334960938 + min: 93.20389556884766 + percentile: [195.72817993164062, 391.45635986328125, 671.0680541992188, 889.7240600585938] + percentile_00_5: 195.72817993164062 + percentile_10_0: 391.45635986328125 + percentile_90_0: 671.0680541992188 + percentile_99_5: 889.7240600585938 + stdev: 117.55332946777344 + ncomponents: 1 + pixel_percentage: 0.028019161894917488 + shape: + - [21, 20, 13] + - image_intensity: + - max: 1081.1651611328125 + mean: 516.2107543945312 + median: 484.6602783203125 + min: 111.84468078613281 + percentile: [211.57284545898438, 372.8155822753906, 717.6699829101562, 981.4375] + percentile_00_5: 211.57284545898438 + percentile_10_0: 372.8155822753906 + percentile_90_0: 717.6699829101562 + percentile_99_5: 981.4375 + stdev: 140.99310302734375 + ncomponents: 1 + pixel_percentage: 0.029170380905270576 + shape: + - [19, 21, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_053.nii.gz + image_foreground_stats: + intensity: + - max: 1136.0743408203125 + mean: 515.018798828125 + median: 495.6029052734375 + min: 121.99456024169922 + percentile: [248.4876708984375, 388.857666015625, 663.3453979492188, 986.70654296875] + percentile_00_5: 248.4876708984375 + percentile_10_0: 388.857666015625 + percentile_90_0: 663.3453979492188 + percentile_99_5: 986.70654296875 + stdev: 122.52049255371094 + image_stats: + channels: 1 + cropped_shape: + - [37, 51, 35] + intensity: + - max: 3659.8369140625 + mean: 734.9005126953125 + median: 731.9673461914062 + min: 0.0 + percentile: [45.74795913696289, 312.6110534667969, 1174.1976318359375, 1357.189453125] + percentile_00_5: 45.74795913696289 + percentile_10_0: 312.6110534667969 + percentile_90_0: 1174.1976318359375 + percentile_99_5: 1357.189453125 + stdev: 331.2437744140625 + shape: + - [37, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_053.nii.gz + label_stats: + image_intensity: + - max: 1136.0743408203125 + mean: 515.018798828125 + median: 495.6029052734375 + min: 121.99456024169922 + percentile: [248.4876708984375, 388.857666015625, 663.3453979492188, 986.70654296875] + percentile_00_5: 248.4876708984375 + percentile_10_0: 388.857666015625 + percentile_90_0: 663.3453979492188 + percentile_99_5: 986.70654296875 + stdev: 122.52049255371094 + label: + - image_intensity: + - max: 3659.8369140625 + mean: 747.2755126953125 + median: 762.4660034179688 + min: 0.0 + percentile: [45.74795913696289, 304.98638916015625, 1181.822265625, 1357.189453125] + percentile_00_5: 45.74795913696289 + percentile_10_0: 304.98638916015625 + percentile_90_0: 1181.822265625 + percentile_99_5: 1357.189453125 + stdev: 334.9308166503906 + ncomponents: 1 + pixel_percentage: 0.946718156337738 + shape: + - [37, 51, 35] + - image_intensity: + - max: 1021.7044677734375 + mean: 508.1166076660156 + median: 495.6029052734375 + min: 121.99456024169922 + percentile: [236.3644561767578, 381.2330017089844, 655.7207641601562, 888.3491821289062] + percentile_00_5: 236.3644561767578 + percentile_10_0: 381.2330017089844 + percentile_90_0: 655.7207641601562 + percentile_99_5: 888.3491821289062 + stdev: 114.40094757080078 + ncomponents: 1 + pixel_percentage: 0.024982966482639313 + shape: + - [22, 15, 12] + - image_intensity: + - max: 1136.0743408203125 + mean: 521.1122436523438 + median: 495.6029052734375 + min: 198.2411651611328 + percentile: [259.2384338378906, 396.4823303222656, 670.9700927734375, 1014.0797729492188] + percentile_00_5: 259.2384338378906 + percentile_10_0: 396.4823303222656 + percentile_90_0: 670.9700927734375 + percentile_99_5: 1014.0797729492188 + stdev: 128.95877075195312 + ncomponents: 1 + pixel_percentage: 0.028298886492848396 + shape: + - [19, 25, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_299.nii.gz + image_foreground_stats: + intensity: + - max: 1213.2200927734375 + mean: 553.625244140625 + median: 527.4869995117188 + min: 105.49739074707031 + percentile: [237.369140625, 386.82379150390625, 763.9761352539062, 1081.3482666015625] + percentile_00_5: 237.369140625 + percentile_10_0: 386.82379150390625 + percentile_90_0: 763.9761352539062 + percentile_99_5: 1081.3482666015625 + stdev: 156.88540649414062 + image_stats: + channels: 1 + cropped_shape: + - [32, 54, 34] + intensity: + - max: 1538.503662109375 + mean: 708.994384765625 + median: 720.8988647460938 + min: 0.0 + percentile: [35.16579818725586, 290.1178283691406, 1107.72265625, 1274.7601318359375] + percentile_00_5: 35.16579818725586 + percentile_10_0: 290.1178283691406 + percentile_90_0: 1107.72265625 + percentile_99_5: 1274.7601318359375 + stdev: 310.3742980957031 + shape: + - [32, 54, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_299.nii.gz + label_stats: + image_intensity: + - max: 1213.2200927734375 + mean: 553.625244140625 + median: 527.4869995117188 + min: 105.49739074707031 + percentile: [237.369140625, 386.82379150390625, 763.9761352539062, 1081.3482666015625] + percentile_00_5: 237.369140625 + percentile_10_0: 386.82379150390625 + percentile_90_0: 763.9761352539062 + percentile_99_5: 1081.3482666015625 + stdev: 156.88540649414062 + label: + - image_intensity: + - max: 1538.503662109375 + mean: 717.9501342773438 + median: 747.273193359375 + min: 0.0 + percentile: [35.16579818725586, 272.5349426269531, 1116.5140380859375, 1283.5516357421875] + percentile_00_5: 35.16579818725586 + percentile_10_0: 272.5349426269531 + percentile_90_0: 1116.5140380859375 + percentile_99_5: 1283.5516357421875 + stdev: 314.634033203125 + ncomponents: 1 + pixel_percentage: 0.9454997181892395 + shape: + - [32, 54, 34] + - image_intensity: + - max: 1204.4285888671875 + mean: 556.7705688476562 + median: 536.2784423828125 + min: 105.49739074707031 + percentile: [216.0938262939453, 378.0323181152344, 764.8561401367188, 1066.0523681640625] + percentile_00_5: 216.0938262939453 + percentile_10_0: 378.0323181152344 + percentile_90_0: 764.8561401367188 + percentile_99_5: 1066.0523681640625 + stdev: 156.6803741455078 + ncomponents: 1 + pixel_percentage: 0.025820396840572357 + shape: + - [21, 19, 12] + - image_intensity: + - max: 1213.2200927734375 + mean: 550.79345703125 + median: 527.4869995117188 + min: 114.2888412475586 + percentile: [254.95204162597656, 386.82379150390625, 756.0646362304688, 1091.5455322265625] + percentile_00_5: 254.95204162597656 + percentile_10_0: 386.82379150390625 + percentile_90_0: 756.0646362304688 + percentile_99_5: 1091.5455322265625 + stdev: 157.01589965820312 + ncomponents: 1 + pixel_percentage: 0.028679875656962395 + shape: + - [21, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_295.nii.gz + image_foreground_stats: + intensity: + - max: 749.8721923828125 + mean: 358.1430358886719 + median: 349.94036865234375 + min: 42.8498420715332 + percentile: [121.40788269042969, 264.2406921386719, 471.3482666015625, 649.8892822265625] + percentile_00_5: 121.40788269042969 + percentile_10_0: 264.2406921386719 + percentile_90_0: 471.3482666015625 + percentile_99_5: 649.8892822265625 + stdev: 88.06488800048828 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 36] + intensity: + - max: 1942.526123046875 + mean: 474.3259582519531 + median: 471.3482666015625 + min: 0.0 + percentile: [28.566560745239258, 192.82427978515625, 742.7305908203125, 835.5718994140625] + percentile_00_5: 28.566560745239258 + percentile_10_0: 192.82427978515625 + percentile_90_0: 742.7305908203125 + percentile_99_5: 835.5718994140625 + stdev: 208.2882537841797 + shape: + - [35, 53, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_295.nii.gz + label_stats: + image_intensity: + - max: 749.8721923828125 + mean: 358.1430358886719 + median: 349.94036865234375 + min: 42.8498420715332 + percentile: [121.40788269042969, 264.2406921386719, 471.3482666015625, 649.8892822265625] + percentile_00_5: 121.40788269042969 + percentile_10_0: 264.2406921386719 + percentile_90_0: 471.3482666015625 + percentile_99_5: 649.8892822265625 + stdev: 88.06488800048828 + label: + - image_intensity: + - max: 1942.526123046875 + mean: 481.0005187988281 + median: 492.7731628417969 + min: 0.0 + percentile: [28.566560745239258, 185.68264770507812, 749.8721923828125, 835.5718994140625] + percentile_00_5: 28.566560745239258 + percentile_10_0: 185.68264770507812 + percentile_90_0: 749.8721923828125 + percentile_99_5: 835.5718994140625 + stdev: 211.21267700195312 + ncomponents: 1 + pixel_percentage: 0.945672333240509 + shape: + - [35, 53, 36] + - image_intensity: + - max: 699.8807373046875 + mean: 358.90582275390625 + median: 349.94036865234375 + min: 92.84132385253906 + percentile: [168.04278564453125, 271.38232421875, 464.20660400390625, 585.614501953125] + percentile_00_5: 168.04278564453125 + percentile_10_0: 271.38232421875 + percentile_90_0: 464.20660400390625 + percentile_99_5: 585.614501953125 + stdev: 78.87667846679688 + ncomponents: 1 + pixel_percentage: 0.028556454926729202 + shape: + - [22, 19, 15] + - image_intensity: + - max: 749.8721923828125 + mean: 357.29779052734375 + median: 342.7987365722656 + min: 42.8498420715332 + percentile: [82.84302520751953, 249.95741271972656, 478.4898986816406, 674.1709594726562] + percentile_00_5: 82.84302520751953 + percentile_10_0: 249.95741271972656 + percentile_90_0: 478.4898986816406 + percentile_99_5: 674.1709594726562 + stdev: 97.23033905029297 + ncomponents: 1 + pixel_percentage: 0.025771189481019974 + shape: + - [20, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_141.nii.gz + image_foreground_stats: + intensity: + - max: 81.0 + mean: 42.779293060302734 + median: 41.0 + min: 21.0 + percentile: [27.0, 34.0, 54.0, 73.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 54.0 + percentile_99_5: 73.0 + stdev: 8.43726634979248 + image_stats: + channels: 1 + cropped_shape: + - [33, 44, 42] + intensity: + - max: 158.0 + mean: 57.37786865234375 + median: 59.0 + min: 2.0 + percentile: [6.0, 28.0, 84.0, 94.0] + percentile_00_5: 6.0 + percentile_10_0: 28.0 + percentile_90_0: 84.0 + percentile_99_5: 94.0 + stdev: 22.058910369873047 + shape: + - [33, 44, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_141.nii.gz + label_stats: + image_intensity: + - max: 81.0 + mean: 42.779293060302734 + median: 41.0 + min: 21.0 + percentile: [27.0, 34.0, 54.0, 73.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 54.0 + percentile_99_5: 73.0 + stdev: 8.43726634979248 + label: + - image_intensity: + - max: 158.0 + mean: 58.05781936645508 + median: 61.0 + min: 2.0 + percentile: [5.345001220703125, 28.0, 84.0, 94.0] + percentile_00_5: 5.345001220703125 + percentile_10_0: 28.0 + percentile_90_0: 84.0 + percentile_99_5: 94.0 + stdev: 22.261064529418945 + ncomponents: 1 + pixel_percentage: 0.9554965496063232 + shape: + - [33, 44, 42] + - image_intensity: + - max: 75.0 + mean: 42.811336517333984 + median: 42.0 + min: 21.0 + percentile: [27.0, 35.0, 51.0, 66.8299560546875] + percentile_00_5: 27.0 + percentile_10_0: 35.0 + percentile_90_0: 51.0 + percentile_99_5: 66.8299560546875 + stdev: 6.803014278411865 + ncomponents: 1 + pixel_percentage: 0.020251212641596794 + shape: + - [19, 13, 14] + - image_intensity: + - max: 81.0 + mean: 42.752532958984375 + median: 40.0 + min: 25.0 + percentile: [28.0, 33.0, 56.199951171875, 75.0] + percentile_00_5: 28.0 + percentile_10_0: 33.0 + percentile_90_0: 56.199951171875 + percentile_99_5: 75.0 + stdev: 9.59079647064209 + ncomponents: 1 + pixel_percentage: 0.024252261966466904 + shape: + - [13, 20, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_041.nii.gz + image_foreground_stats: + intensity: + - max: 907.206298828125 + mean: 411.7265625 + median: 369.86102294921875 + min: 34.892547607421875 + percentile: [124.2872543334961, 272.1618957519531, 655.9799194335938, 844.3997192382812] + percentile_00_5: 124.2872543334961 + percentile_10_0: 272.1618957519531 + percentile_90_0: 655.9799194335938 + percentile_99_5: 844.3997192382812 + stdev: 148.93247985839844 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 34] + intensity: + - max: 1856.28369140625 + mean: 489.1205139160156 + median: 502.45269775390625 + min: 0.0 + percentile: [27.914039611816406, 188.41976928710938, 767.6361083984375, 865.335205078125] + percentile_00_5: 27.914039611816406 + percentile_10_0: 188.41976928710938 + percentile_90_0: 767.6361083984375 + percentile_99_5: 865.335205078125 + stdev: 218.61279296875 + shape: + - [36, 51, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_041.nii.gz + label_stats: + image_intensity: + - max: 907.206298828125 + mean: 411.7265625 + median: 369.86102294921875 + min: 34.892547607421875 + percentile: [124.2872543334961, 272.1618957519531, 655.9799194335938, 844.3997192382812] + percentile_00_5: 124.2872543334961 + percentile_10_0: 272.1618957519531 + percentile_90_0: 655.9799194335938 + percentile_99_5: 844.3997192382812 + stdev: 148.93247985839844 + label: + - image_intensity: + - max: 1856.28369140625 + mean: 494.085205078125 + median: 516.4097290039062 + min: 0.0 + percentile: [20.935529708862305, 174.46275329589844, 767.6361083984375, 865.335205078125] + percentile_00_5: 20.935529708862305 + percentile_10_0: 174.46275329589844 + percentile_90_0: 767.6361083984375 + percentile_99_5: 865.335205078125 + stdev: 221.41714477539062 + ncomponents: 1 + pixel_percentage: 0.9397187232971191 + shape: + - [36, 51, 34] + - image_intensity: + - max: 907.206298828125 + mean: 404.0584411621094 + median: 369.86102294921875 + min: 34.892547607421875 + percentile: [104.67765045166016, 265.1833801269531, 630.8566284179688, 865.335205078125] + percentile_00_5: 104.67765045166016 + percentile_10_0: 265.1833801269531 + percentile_90_0: 630.8566284179688 + percentile_99_5: 865.335205078125 + stdev: 147.12564086914062 + ncomponents: 1 + pixel_percentage: 0.028466615825891495 + shape: + - [21, 17, 13] + - image_intensity: + - max: 851.3782348632812 + mean: 418.5876159667969 + median: 369.86102294921875 + min: 90.72062683105469 + percentile: [159.98233032226562, 272.1618957519531, 676.9154663085938, 823.4641723632812] + percentile_00_5: 159.98233032226562 + percentile_10_0: 272.1618957519531 + percentile_90_0: 676.9154663085938 + percentile_99_5: 823.4641723632812 + stdev: 150.1993408203125 + ncomponents: 1 + pixel_percentage: 0.031814686954021454 + shape: + - [20, 23, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_321.nii.gz + image_foreground_stats: + intensity: + - max: 686.8026733398438 + mean: 333.61077880859375 + median: 316.05078125 + min: 91.16850280761719 + percentile: [151.94749450683594, 237.03810119628906, 455.8424987792969, 619.94580078125] + percentile_00_5: 151.94749450683594 + percentile_10_0: 237.03810119628906 + percentile_90_0: 455.8424987792969 + percentile_99_5: 619.94580078125 + stdev: 88.38630676269531 + image_stats: + channels: 1 + cropped_shape: + - [34, 46, 34] + intensity: + - max: 2048.252197265625 + mean: 420.86151123046875 + median: 425.4530029296875 + min: 0.0 + percentile: [24.311599731445312, 194.4927978515625, 638.1795043945312, 765.8153686523438] + percentile_00_5: 24.311599731445312 + percentile_10_0: 194.4927978515625 + percentile_90_0: 638.1795043945312 + percentile_99_5: 765.8153686523438 + stdev: 173.3219451904297 + shape: + - [34, 46, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_321.nii.gz + label_stats: + image_intensity: + - max: 686.8026733398438 + mean: 333.61077880859375 + median: 316.05078125 + min: 91.16850280761719 + percentile: [151.94749450683594, 237.03810119628906, 455.8424987792969, 619.94580078125] + percentile_00_5: 151.94749450683594 + percentile_10_0: 237.03810119628906 + percentile_90_0: 455.8424987792969 + percentile_99_5: 619.94580078125 + stdev: 88.38630676269531 + label: + - image_intensity: + - max: 2048.252197265625 + mean: 425.98614501953125 + median: 437.6087951660156 + min: 0.0 + percentile: [24.311599731445312, 188.41490173339844, 638.1795043945312, 765.8153686523438] + percentile_00_5: 24.311599731445312 + percentile_10_0: 188.41490173339844 + percentile_90_0: 638.1795043945312 + percentile_99_5: 765.8153686523438 + stdev: 175.70623779296875 + ncomponents: 1 + pixel_percentage: 0.9445238709449768 + shape: + - [34, 46, 34] + - image_intensity: + - max: 644.2573852539062 + mean: 338.9122314453125 + median: 334.28448486328125 + min: 91.16850280761719 + percentile: [145.86959838867188, 237.03810119628906, 449.76458740234375, 583.4783935546875] + percentile_00_5: 145.86959838867188 + percentile_10_0: 237.03810119628906 + percentile_90_0: 449.76458740234375 + percentile_99_5: 583.4783935546875 + stdev: 84.5455551147461 + ncomponents: 1 + pixel_percentage: 0.030107567086815834 + shape: + - [21, 18, 15] + - image_intensity: + - max: 686.8026733398438 + mean: 327.31903076171875 + median: 303.8949890136719 + min: 121.55799865722656 + percentile: [174.6788330078125, 237.03810119628906, 461.92041015625, 645.8377075195312] + percentile_00_5: 174.6788330078125 + percentile_10_0: 237.03810119628906 + percentile_90_0: 461.92041015625 + percentile_99_5: 645.8377075195312 + stdev: 92.34424591064453 + ncomponents: 1 + pixel_percentage: 0.02536858804523945 + shape: + - [20, 19, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_221.nii.gz + image_foreground_stats: + intensity: + - max: 75.0 + mean: 45.113563537597656 + median: 45.0 + min: 18.0 + percentile: [24.0, 33.0, 56.0, 70.0] + percentile_00_5: 24.0 + percentile_10_0: 33.0 + percentile_90_0: 56.0 + percentile_99_5: 70.0 + stdev: 9.138423919677734 + image_stats: + channels: 1 + cropped_shape: + - [32, 48, 34] + intensity: + - max: 127.0 + mean: 54.629310607910156 + median: 54.0 + min: 2.0 + percentile: [6.0, 20.0, 87.0, 106.0] + percentile_00_5: 6.0 + percentile_10_0: 20.0 + percentile_90_0: 87.0 + percentile_99_5: 106.0 + stdev: 24.795337677001953 + shape: + - [32, 48, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_221.nii.gz + label_stats: + image_intensity: + - max: 75.0 + mean: 45.113563537597656 + median: 45.0 + min: 18.0 + percentile: [24.0, 33.0, 56.0, 70.0] + percentile_00_5: 24.0 + percentile_10_0: 33.0 + percentile_90_0: 56.0 + percentile_99_5: 70.0 + stdev: 9.138423919677734 + label: + - image_intensity: + - max: 127.0 + mean: 55.097293853759766 + median: 56.0 + min: 2.0 + percentile: [6.0, 20.0, 88.0, 106.0] + percentile_00_5: 6.0 + percentile_10_0: 20.0 + percentile_90_0: 88.0 + percentile_99_5: 106.0 + stdev: 25.22431182861328 + ncomponents: 1 + pixel_percentage: 0.953125 + shape: + - [32, 48, 34] + - image_intensity: + - max: 75.0 + mean: 44.352054595947266 + median: 44.0 + min: 18.0 + percentile: [22.959999084472656, 33.0, 56.0, 70.0400390625] + percentile_00_5: 22.959999084472656 + percentile_10_0: 33.0 + percentile_90_0: 56.0 + percentile_99_5: 70.0400390625 + stdev: 9.46011734008789 + ncomponents: 1 + pixel_percentage: 0.022843902930617332 + shape: + - [14, 16, 15] + - image_intensity: + - max: 75.0 + mean: 45.83745193481445 + median: 46.0 + min: 20.0 + percentile: [26.0, 34.0, 56.0, 69.0] + percentile_00_5: 26.0 + percentile_10_0: 34.0 + percentile_90_0: 56.0 + percentile_99_5: 69.0 + stdev: 8.760598182678223 + ncomponents: 1 + pixel_percentage: 0.024031097069382668 + shape: + - [20, 21, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_096.nii.gz + image_foreground_stats: + intensity: + - max: 716.593994140625 + mean: 334.9621276855469 + median: 319.2745361328125 + min: 49.6649284362793 + percentile: [132.64083862304688, 227.0396728515625, 468.2693176269531, 617.2640991210938] + percentile_00_5: 132.64083862304688 + percentile_10_0: 227.0396728515625 + percentile_90_0: 468.2693176269531 + percentile_99_5: 617.2640991210938 + stdev: 94.32195281982422 + image_stats: + channels: 1 + cropped_shape: + - [34, 47, 39] + intensity: + - max: 1631.84765625 + mean: 450.9234619140625 + median: 461.1743469238281 + min: 0.0 + percentile: [28.379959106445312, 170.27975463867188, 695.3090209960938, 823.018798828125] + percentile_00_5: 28.379959106445312 + percentile_10_0: 170.27975463867188 + percentile_90_0: 695.3090209960938 + percentile_99_5: 823.018798828125 + stdev: 198.05252075195312 + shape: + - [34, 47, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_096.nii.gz + label_stats: + image_intensity: + - max: 716.593994140625 + mean: 334.9621276855469 + median: 319.2745361328125 + min: 49.6649284362793 + percentile: [132.64083862304688, 227.0396728515625, 468.2693176269531, 617.2640991210938] + percentile_00_5: 132.64083862304688 + percentile_10_0: 227.0396728515625 + percentile_90_0: 468.2693176269531 + percentile_99_5: 617.2640991210938 + stdev: 94.32195281982422 + label: + - image_intensity: + - max: 1631.84765625 + mean: 457.4900817871094 + median: 475.36431884765625 + min: 0.0 + percentile: [28.379959106445312, 170.27975463867188, 695.3090209960938, 830.1138305664062] + percentile_00_5: 28.379959106445312 + percentile_10_0: 170.27975463867188 + percentile_90_0: 695.3090209960938 + percentile_99_5: 830.1138305664062 + stdev: 200.34375 + ncomponents: 1 + pixel_percentage: 0.9464073777198792 + shape: + - [34, 47, 39] + - image_intensity: + - max: 702.4039916992188 + mean: 340.0940246582031 + median: 333.4645080566406 + min: 49.6649284362793 + percentile: [116.6771011352539, 227.0396728515625, 468.2693176269531, 607.0122680664062] + percentile_00_5: 116.6771011352539 + percentile_10_0: 227.0396728515625 + percentile_90_0: 468.2693176269531 + percentile_99_5: 607.0122680664062 + stdev: 93.74486541748047 + ncomponents: 1 + pixel_percentage: 0.030326370149850845 + shape: + - [21, 16, 14] + - image_intensity: + - max: 716.593994140625 + mean: 328.27294921875 + median: 312.1795654296875 + min: 63.85490798950195 + percentile: [134.8048095703125, 219.94468688964844, 468.2693176269531, 617.2640991210938] + percentile_00_5: 134.8048095703125 + percentile_10_0: 219.94468688964844 + percentile_90_0: 468.2693176269531 + percentile_99_5: 617.2640991210938 + stdev: 94.6521224975586 + ncomponents: 1 + pixel_percentage: 0.02326626144349575 + shape: + - [16, 21, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_242.nii.gz + image_foreground_stats: + intensity: + - max: 94.0 + mean: 49.222904205322266 + median: 47.0 + min: 21.0 + percentile: [26.0, 37.0, 65.0, 85.0] + percentile_00_5: 26.0 + percentile_10_0: 37.0 + percentile_90_0: 65.0 + percentile_99_5: 85.0 + stdev: 11.365469932556152 + image_stats: + channels: 1 + cropped_shape: + - [38, 52, 34] + intensity: + - max: 244.0 + mean: 64.836181640625 + median: 62.0 + min: 3.0 + percentile: [8.0, 28.0, 104.0, 117.0] + percentile_00_5: 8.0 + percentile_10_0: 28.0 + percentile_90_0: 104.0 + percentile_99_5: 117.0 + stdev: 28.81517791748047 + shape: + - [38, 52, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_242.nii.gz + label_stats: + image_intensity: + - max: 94.0 + mean: 49.222904205322266 + median: 47.0 + min: 21.0 + percentile: [26.0, 37.0, 65.0, 85.0] + percentile_00_5: 26.0 + percentile_10_0: 37.0 + percentile_90_0: 65.0 + percentile_99_5: 85.0 + stdev: 11.365469932556152 + label: + - image_intensity: + - max: 244.0 + mean: 65.92585754394531 + median: 65.0 + min: 3.0 + percentile: [7.0, 27.0, 104.0, 117.0] + percentile_00_5: 7.0 + percentile_10_0: 27.0 + percentile_90_0: 104.0 + percentile_99_5: 117.0 + stdev: 29.343610763549805 + ncomponents: 1 + pixel_percentage: 0.9347612261772156 + shape: + - [38, 52, 34] + - image_intensity: + - max: 94.0 + mean: 49.80419921875 + median: 48.0 + min: 22.0 + percentile: [27.0, 38.0, 64.0, 82.0] + percentile_00_5: 27.0 + percentile_10_0: 38.0 + percentile_90_0: 64.0 + percentile_99_5: 82.0 + stdev: 10.46994400024414 + ncomponents: 1 + pixel_percentage: 0.03686889633536339 + shape: + - [25, 17, 16] + - image_intensity: + - max: 94.0 + mean: 48.46746826171875 + median: 46.0 + min: 21.0 + percentile: [25.524999618530273, 35.0, 66.0, 86.0] + percentile_00_5: 25.524999618530273 + percentile_10_0: 35.0 + percentile_90_0: 66.0 + percentile_99_5: 86.0 + stdev: 12.392592430114746 + ncomponents: 1 + pixel_percentage: 0.028369849547743797 + shape: + - [18, 23, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_188.nii.gz + image_foreground_stats: + intensity: + - max: 413957.15625 + mean: 187291.359375 + median: 182264.71875 + min: 18535.39453125 + percentile: [83409.2734375, 135926.21875, 247138.59375, 376886.34375] + percentile_00_5: 83409.2734375 + percentile_10_0: 135926.21875 + percentile_90_0: 247138.59375 + percentile_99_5: 376886.34375 + stdev: 47374.7421875 + image_stats: + channels: 1 + cropped_shape: + - [37, 54, 36] + intensity: + - max: 518991.0625 + mean: 246449.640625 + median: 250227.828125 + min: 0.0 + percentile: [12356.9296875, 92676.96875, 389243.28125, 444849.46875] + percentile_00_5: 12356.9296875 + percentile_10_0: 92676.96875 + percentile_90_0: 389243.28125 + percentile_99_5: 444849.46875 + stdev: 110470.875 + shape: + - [37, 54, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_188.nii.gz + label_stats: + image_intensity: + - max: 413957.15625 + mean: 187291.359375 + median: 182264.71875 + min: 18535.39453125 + percentile: [83409.2734375, 135926.21875, 247138.59375, 376886.34375] + percentile_00_5: 83409.2734375 + percentile_10_0: 135926.21875 + percentile_90_0: 247138.59375 + percentile_99_5: 376886.34375 + stdev: 47374.7421875 + label: + - image_intensity: + - max: 518991.0625 + mean: 249361.21875 + median: 256406.296875 + min: 0.0 + percentile: [12356.9296875, 89587.7421875, 392332.53125, 444849.46875] + percentile_00_5: 12356.9296875 + percentile_10_0: 89587.7421875 + percentile_90_0: 392332.53125 + percentile_99_5: 444849.46875 + stdev: 111862.703125 + ncomponents: 1 + pixel_percentage: 0.9530919790267944 + shape: + - [37, 54, 36] + - image_intensity: + - max: 339815.5625 + mean: 186672.109375 + median: 182264.71875 + min: 18535.39453125 + percentile: [87193.5859375, 135926.21875, 244049.359375, 312012.46875] + percentile_00_5: 87193.5859375 + percentile_10_0: 135926.21875 + percentile_90_0: 244049.359375 + percentile_99_5: 312012.46875 + stdev: 42888.6640625 + ncomponents: 1 + pixel_percentage: 0.020103435963392258 + shape: + - [20, 15, 13] + - image_intensity: + - max: 413957.15625 + mean: 187755.796875 + median: 179175.484375 + min: 27803.091796875 + percentile: [82281.703125, 135926.21875, 251154.375, 386154.0625] + percentile_00_5: 82281.703125 + percentile_10_0: 135926.21875 + percentile_90_0: 251154.375 + percentile_99_5: 386154.0625 + stdev: 50473.3515625 + ncomponents: 1 + pixel_percentage: 0.02680458314716816 + shape: + - [19, 28, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_088.nii.gz + image_foreground_stats: + intensity: + - max: 91.0 + mean: 47.612945556640625 + median: 46.0 + min: 10.0 + percentile: [21.0, 34.0, 64.0, 80.0] + percentile_00_5: 21.0 + percentile_10_0: 34.0 + percentile_90_0: 64.0 + percentile_99_5: 80.0 + stdev: 11.623677253723145 + image_stats: + channels: 1 + cropped_shape: + - [40, 52, 35] + intensity: + - max: 247.0 + mean: 61.74434280395508 + median: 64.0 + min: 1.0 + percentile: [7.0, 24.0, 94.0, 110.0] + percentile_00_5: 7.0 + percentile_10_0: 24.0 + percentile_90_0: 94.0 + percentile_99_5: 110.0 + stdev: 26.512737274169922 + shape: + - [40, 52, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_088.nii.gz + label_stats: + image_intensity: + - max: 91.0 + mean: 47.612945556640625 + median: 46.0 + min: 10.0 + percentile: [21.0, 34.0, 64.0, 80.0] + percentile_00_5: 21.0 + percentile_10_0: 34.0 + percentile_90_0: 64.0 + percentile_99_5: 80.0 + stdev: 11.623677253723145 + label: + - image_intensity: + - max: 247.0 + mean: 62.539466857910156 + median: 67.0 + min: 1.0 + percentile: [7.0, 23.0, 95.0, 110.0] + percentile_00_5: 7.0 + percentile_10_0: 23.0 + percentile_90_0: 95.0 + percentile_99_5: 110.0 + stdev: 26.888769149780273 + ncomponents: 1 + pixel_percentage: 0.9467307925224304 + shape: + - [40, 52, 35] + - image_intensity: + - max: 87.0 + mean: 48.70710754394531 + median: 48.0 + min: 10.0 + percentile: [21.545000076293945, 35.0, 64.0, 78.0] + percentile_00_5: 21.545000076293945 + percentile_10_0: 35.0 + percentile_90_0: 64.0 + percentile_99_5: 78.0 + stdev: 11.192985534667969 + ncomponents: 1 + pixel_percentage: 0.02898351661860943 + shape: + - [24, 16, 15] + - image_intensity: + - max: 91.0 + mean: 46.30712890625 + median: 45.0 + min: 15.0 + percentile: [20.0, 33.0, 64.0, 81.0] + percentile_00_5: 20.0 + percentile_10_0: 33.0 + percentile_90_0: 64.0 + percentile_99_5: 81.0 + stdev: 11.987649917602539 + ncomponents: 1 + pixel_percentage: 0.02428571507334709 + shape: + - [16, 25, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_084.nii.gz + image_foreground_stats: + intensity: + - max: 792.2147216796875 + mean: 367.0208435058594 + median: 352.9669494628906 + min: 7.843709945678711 + percentile: [141.18678283691406, 243.15501403808594, 509.8411560058594, 721.621337890625] + percentile_00_5: 141.18678283691406 + percentile_10_0: 243.15501403808594 + percentile_90_0: 509.8411560058594 + percentile_99_5: 721.621337890625 + stdev: 109.53959655761719 + image_stats: + channels: 1 + cropped_shape: + - [34, 52, 37] + intensity: + - max: 2345.269287109375 + mean: 503.0232238769531 + median: 501.9974365234375 + min: 0.0 + percentile: [31.374839782714844, 196.09274291992188, 792.2147216796875, 933.4014892578125] + percentile_00_5: 31.374839782714844 + percentile_10_0: 196.09274291992188 + percentile_90_0: 792.2147216796875 + percentile_99_5: 933.4014892578125 + stdev: 227.40896606445312 + shape: + - [34, 52, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_084.nii.gz + label_stats: + image_intensity: + - max: 792.2147216796875 + mean: 367.0208435058594 + median: 352.9669494628906 + min: 7.843709945678711 + percentile: [141.18678283691406, 243.15501403808594, 509.8411560058594, 721.621337890625] + percentile_00_5: 141.18678283691406 + percentile_10_0: 243.15501403808594 + percentile_90_0: 509.8411560058594 + percentile_99_5: 721.621337890625 + stdev: 109.53959655761719 + label: + - image_intensity: + - max: 2345.269287109375 + mean: 509.90350341796875 + median: 517.6848754882812 + min: 0.0 + percentile: [31.374839782714844, 196.09274291992188, 792.2147216796875, 933.4014892578125] + percentile_00_5: 31.374839782714844 + percentile_10_0: 196.09274291992188 + percentile_90_0: 792.2147216796875 + percentile_99_5: 933.4014892578125 + stdev: 229.65402221679688 + ncomponents: 1 + pixel_percentage: 0.9518466591835022 + shape: + - [34, 52, 37] + - image_intensity: + - max: 776.5272827148438 + mean: 372.3900146484375 + median: 360.8106689453125 + min: 7.843709945678711 + percentile: [141.18678283691406, 265.9018249511719, 494.1537170410156, 659.303466796875] + percentile_00_5: 141.18678283691406 + percentile_10_0: 265.9018249511719 + percentile_90_0: 494.1537170410156 + percentile_99_5: 659.303466796875 + stdev: 97.00963592529297 + ncomponents: 1 + pixel_percentage: 0.021248623728752136 + shape: + - [21, 14, 13] + - image_intensity: + - max: 792.2147216796875 + mean: 362.7804870605469 + median: 337.279541015625 + min: 54.905967712402344 + percentile: [141.18678283691406, 235.31129455566406, 525.528564453125, 732.6802368164062] + percentile_00_5: 141.18678283691406 + percentile_10_0: 235.31129455566406 + percentile_90_0: 525.528564453125 + percentile_99_5: 732.6802368164062 + stdev: 118.33068084716797 + ncomponents: 1 + pixel_percentage: 0.02690473198890686 + shape: + - [15, 26, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_233.nii.gz + image_foreground_stats: + intensity: + - max: 931.4192504882812 + mean: 454.6297912597656 + median: 431.070068359375 + min: 23.093040466308594 + percentile: [198.83106994628906, 323.30255126953125, 615.8143920898438, 854.4425048828125] + percentile_00_5: 198.83106994628906 + percentile_10_0: 323.30255126953125 + percentile_90_0: 615.8143920898438 + percentile_99_5: 854.4425048828125 + stdev: 120.42060089111328 + image_stats: + channels: 1 + cropped_shape: + - [33, 51, 37] + intensity: + - max: 3079.072021484375 + mean: 582.3634033203125 + median: 592.7213745117188 + min: 0.0 + percentile: [38.488399505615234, 230.93040466308594, 900.6285400390625, 1077.6751708984375] + percentile_00_5: 38.488399505615234 + percentile_10_0: 230.93040466308594 + percentile_90_0: 900.6285400390625 + percentile_99_5: 1077.6751708984375 + stdev: 257.6723937988281 + shape: + - [33, 51, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_233.nii.gz + label_stats: + image_intensity: + - max: 931.4192504882812 + mean: 454.6297912597656 + median: 431.070068359375 + min: 23.093040466308594 + percentile: [198.83106994628906, 323.30255126953125, 615.8143920898438, 854.4425048828125] + percentile_00_5: 198.83106994628906 + percentile_10_0: 323.30255126953125 + percentile_90_0: 615.8143920898438 + percentile_99_5: 854.4425048828125 + stdev: 120.42060089111328 + label: + - image_intensity: + - max: 3079.072021484375 + mean: 589.2078857421875 + median: 615.8143920898438 + min: 0.0 + percentile: [30.790719985961914, 223.23272705078125, 900.6285400390625, 1085.3729248046875] + percentile_00_5: 30.790719985961914 + percentile_10_0: 223.23272705078125 + percentile_90_0: 900.6285400390625 + percentile_99_5: 1085.3729248046875 + stdev: 261.2558288574219 + ncomponents: 1 + pixel_percentage: 0.9491416811943054 + shape: + - [33, 51, 37] + - image_intensity: + - max: 892.930908203125 + mean: 454.3032531738281 + median: 438.76776123046875 + min: 23.093040466308594 + percentile: [177.04664611816406, 323.30255126953125, 606.5765991210938, 846.7448120117188] + percentile_00_5: 177.04664611816406 + percentile_10_0: 323.30255126953125 + percentile_90_0: 606.5765991210938 + percentile_99_5: 846.7448120117188 + stdev: 117.94983673095703 + ncomponents: 1 + pixel_percentage: 0.025581732392311096 + shape: + - [19, 17, 15] + - image_intensity: + - max: 931.4192504882812 + mean: 454.96026611328125 + median: 431.070068359375 + min: 161.65127563476562 + percentile: [223.23272705078125, 323.30255126953125, 623.5120849609375, 863.1793823242188] + percentile_00_5: 223.23272705078125 + percentile_10_0: 323.30255126953125 + percentile_90_0: 623.5120849609375 + percentile_99_5: 863.1793823242188 + stdev: 122.86973571777344 + ncomponents: 1 + pixel_percentage: 0.025276614353060722 + shape: + - [20, 22, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_184.nii.gz + image_foreground_stats: + intensity: + - max: 433042.0625 + mean: 191880.328125 + median: 186047.703125 + min: 38492.62890625 + percentile: [77049.4140625, 131516.484375, 259825.234375, 381654.34375] + percentile_00_5: 77049.4140625 + percentile_10_0: 131516.484375 + percentile_90_0: 259825.234375 + percentile_99_5: 381654.34375 + stdev: 52786.93359375 + image_stats: + channels: 1 + cropped_shape: + - [37, 51, 33] + intensity: + - max: 1238179.5 + mean: 256522.109375 + median: 263032.96875 + min: 0.0 + percentile: [12830.8759765625, 93023.8515625, 400964.875, 468326.96875] + percentile_00_5: 12830.8759765625 + percentile_10_0: 93023.8515625 + percentile_90_0: 400964.875 + percentile_99_5: 468326.96875 + stdev: 117515.9765625 + shape: + - [37, 51, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_184.nii.gz + label_stats: + image_intensity: + - max: 433042.0625 + mean: 191880.328125 + median: 186047.703125 + min: 38492.62890625 + percentile: [77049.4140625, 131516.484375, 259825.234375, 381654.34375] + percentile_00_5: 77049.4140625 + percentile_10_0: 131516.484375 + percentile_90_0: 259825.234375 + percentile_99_5: 381654.34375 + stdev: 52786.93359375 + label: + - image_intensity: + - max: 1238179.5 + mean: 260494.328125 + median: 272656.125 + min: 0.0 + percentile: [12830.8759765625, 89816.1328125, 404172.59375, 468326.96875] + percentile_00_5: 12830.8759765625 + percentile_10_0: 89816.1328125 + percentile_90_0: 404172.59375 + percentile_99_5: 468326.96875 + stdev: 119226.0390625 + ncomponents: 1 + pixel_percentage: 0.9421078562736511 + shape: + - [37, 51, 33] + - image_intensity: + - max: 368887.6875 + mean: 196782.359375 + median: 192463.140625 + min: 38492.62890625 + percentile: [76985.2578125, 141139.640625, 263032.96875, 330395.0625] + percentile_00_5: 76985.2578125 + percentile_10_0: 141139.640625 + percentile_90_0: 263032.96875 + percentile_99_5: 330395.0625 + stdev: 48196.13671875 + ncomponents: 1 + pixel_percentage: 0.03128261864185333 + shape: + - [26, 17, 12] + - image_intensity: + - max: 433042.0625 + mean: 186117.390625 + median: 176424.546875 + min: 60946.66015625 + percentile: [80192.9765625, 127025.6875, 259825.234375, 394549.4375] + percentile_00_5: 80192.9765625 + percentile_10_0: 127025.6875 + percentile_90_0: 259825.234375 + percentile_99_5: 394549.4375 + stdev: 57183.9765625 + ncomponents: 1 + pixel_percentage: 0.026609497144818306 + shape: + - [18, 23, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_333.nii.gz + image_foreground_stats: + intensity: + - max: 798.2019653320312 + mean: 413.6833190917969 + median: 411.9752197265625 + min: 92.69441986083984 + percentile: [159.64039611816406, 272.9335632324219, 551.016845703125, 689.1834106445312] + percentile_00_5: 159.64039611816406 + percentile_10_0: 272.9335632324219 + percentile_90_0: 551.016845703125 + percentile_99_5: 689.1834106445312 + stdev: 106.16770935058594 + image_stats: + channels: 1 + cropped_shape: + - [33, 46, 38] + intensity: + - max: 1931.1337890625 + mean: 531.028076171875 + median: 545.8671264648438 + min: 0.0 + percentile: [36.04783248901367, 211.13729858398438, 808.5013427734375, 1029.93798828125] + percentile_00_5: 36.04783248901367 + percentile_10_0: 211.13729858398438 + percentile_90_0: 808.5013427734375 + percentile_99_5: 1029.93798828125 + stdev: 225.89369201660156 + shape: + - [33, 46, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_333.nii.gz + label_stats: + image_intensity: + - max: 798.2019653320312 + mean: 413.6833190917969 + median: 411.9752197265625 + min: 92.69441986083984 + percentile: [159.64039611816406, 272.9335632324219, 551.016845703125, 689.1834106445312] + percentile_00_5: 159.64039611816406 + percentile_10_0: 272.9335632324219 + percentile_90_0: 551.016845703125 + percentile_99_5: 689.1834106445312 + stdev: 106.16770935058594 + label: + - image_intensity: + - max: 1931.1337890625 + mean: 536.6449584960938 + median: 561.3162231445312 + min: 0.0 + percentile: [30.89813995361328, 205.98760986328125, 813.6510620117188, 1029.93798828125] + percentile_00_5: 30.89813995361328 + percentile_10_0: 205.98760986328125 + percentile_90_0: 813.6510620117188 + percentile_99_5: 1029.93798828125 + stdev: 228.56134033203125 + ncomponents: 1 + pixel_percentage: 0.9543200731277466 + shape: + - [33, 46, 38] + - image_intensity: + - max: 777.6032104492188 + mean: 419.81207275390625 + median: 411.9752197265625 + min: 118.44287109375 + percentile: [180.00741577148438, 293.5323486328125, 556.1665649414062, 690.2904052734375] + percentile_00_5: 180.00741577148438 + percentile_10_0: 293.5323486328125 + percentile_90_0: 556.1665649414062 + percentile_99_5: 690.2904052734375 + stdev: 102.16981506347656 + ncomponents: 1 + pixel_percentage: 0.020664308220148087 + shape: + - [18, 15, 13] + - image_intensity: + - max: 798.2019653320312 + mean: 408.62060546875 + median: 411.9752197265625 + min: 92.69441986083984 + percentile: [146.3542022705078, 267.78387451171875, 545.8671264648438, 680.5838623046875] + percentile_00_5: 146.3542022705078 + percentile_10_0: 267.78387451171875 + percentile_90_0: 545.8671264648438 + percentile_99_5: 680.5838623046875 + stdev: 109.10066223144531 + ncomponents: 1 + pixel_percentage: 0.02501560188829899 + shape: + - [17, 20, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_250.nii.gz + image_foreground_stats: + intensity: + - max: 1052.158203125 + mean: 435.8700256347656 + median: 419.3917541503906 + min: 36.78874969482422 + percentile: [148.2586669921875, 294.30999755859375, 610.6932373046875, 868.2144775390625] + percentile_00_5: 148.2586669921875 + percentile_10_0: 294.30999755859375 + percentile_90_0: 610.6932373046875 + percentile_99_5: 868.2144775390625 + stdev: 127.73078155517578 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 36] + intensity: + - max: 2818.018310546875 + mean: 592.0531616210938 + median: 588.6199951171875 + min: 0.0 + percentile: [29.430999755859375, 198.65924072265625, 956.5075073242188, 1118.3779296875] + percentile_00_5: 29.430999755859375 + percentile_10_0: 198.65924072265625 + percentile_90_0: 956.5075073242188 + percentile_99_5: 1118.3779296875 + stdev: 282.99932861328125 + shape: + - [35, 51, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_250.nii.gz + label_stats: + image_intensity: + - max: 1052.158203125 + mean: 435.8700256347656 + median: 419.3917541503906 + min: 36.78874969482422 + percentile: [148.2586669921875, 294.30999755859375, 610.6932373046875, 868.2144775390625] + percentile_00_5: 148.2586669921875 + percentile_10_0: 294.30999755859375 + percentile_90_0: 610.6932373046875 + percentile_99_5: 868.2144775390625 + stdev: 127.73078155517578 + label: + - image_intensity: + - max: 2818.018310546875 + mean: 600.8624877929688 + median: 610.6932373046875 + min: 0.0 + percentile: [29.430999755859375, 191.30149841308594, 963.865234375, 1118.3779296875] + percentile_00_5: 29.430999755859375 + percentile_10_0: 191.30149841308594 + percentile_90_0: 963.865234375 + percentile_99_5: 1118.3779296875 + stdev: 286.76165771484375 + ncomponents: 1 + pixel_percentage: 0.9466075301170349 + shape: + - [35, 51, 36] + - image_intensity: + - max: 875.572265625 + mean: 442.6506042480469 + median: 434.10723876953125 + min: 73.57749938964844 + percentile: [147.15499877929688, 301.6677551269531, 603.3355102539062, 802.1420288085938] + percentile_00_5: 147.15499877929688 + percentile_10_0: 301.6677551269531 + percentile_90_0: 603.3355102539062 + percentile_99_5: 802.1420288085938 + stdev: 120.88964080810547 + ncomponents: 1 + pixel_percentage: 0.02955182082951069 + shape: + - [23, 17, 14] + - image_intensity: + - max: 1052.158203125 + mean: 427.465087890625 + median: 397.3184814453125 + min: 36.78874969482422 + percentile: [164.15139770507812, 286.9522399902344, 618.051025390625, 951.6879272460938] + percentile_00_5: 164.15139770507812 + percentile_10_0: 286.9522399902344 + percentile_90_0: 618.051025390625 + percentile_99_5: 951.6879272460938 + stdev: 135.26202392578125 + ncomponents: 1 + pixel_percentage: 0.02384064719080925 + shape: + - [17, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_350.nii.gz + image_foreground_stats: + intensity: + - max: 1033.5870361328125 + mean: 444.15380859375 + median: 437.2868347167969 + min: 71.5560302734375 + percentile: [151.06272888183594, 302.9205627441406, 596.3002319335938, 810.9683227539062] + percentile_00_5: 151.06272888183594 + percentile_10_0: 302.9205627441406 + percentile_90_0: 596.3002319335938 + percentile_99_5: 810.9683227539062 + stdev: 116.9878158569336 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 34] + intensity: + - max: 1772.9993896484375 + mean: 617.0733642578125 + median: 651.9548950195312 + min: 0.0 + percentile: [31.80267906188965, 214.6680908203125, 946.1296997070312, 1073.3404541015625] + percentile_00_5: 31.80267906188965 + percentile_10_0: 214.6680908203125 + percentile_90_0: 946.1296997070312 + percentile_99_5: 1073.3404541015625 + stdev: 272.0960388183594 + shape: + - [35, 49, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_350.nii.gz + label_stats: + image_intensity: + - max: 1033.5870361328125 + mean: 444.15380859375 + median: 437.2868347167969 + min: 71.5560302734375 + percentile: [151.06272888183594, 302.9205627441406, 596.3002319335938, 810.9683227539062] + percentile_00_5: 151.06272888183594 + percentile_10_0: 302.9205627441406 + percentile_90_0: 596.3002319335938 + percentile_99_5: 810.9683227539062 + stdev: 116.9878158569336 + label: + - image_intensity: + - max: 1772.9993896484375 + mean: 626.261474609375 + median: 675.8069458007812 + min: 0.0 + percentile: [31.80267906188965, 206.7174072265625, 946.1296997070312, 1073.3404541015625] + percentile_00_5: 31.80267906188965 + percentile_10_0: 206.7174072265625 + percentile_90_0: 946.1296997070312 + percentile_99_5: 1073.3404541015625 + stdev: 274.8995056152344 + ncomponents: 1 + pixel_percentage: 0.9495455622673035 + shape: + - [35, 49, 34] + - image_intensity: + - max: 1033.5870361328125 + mean: 459.8775329589844 + median: 453.18817138671875 + min: 111.30937957763672 + percentile: [174.91473388671875, 325.9774475097656, 604.2509155273438, 803.0176391601562] + percentile_00_5: 174.91473388671875 + percentile_10_0: 325.9774475097656 + percentile_90_0: 604.2509155273438 + percentile_99_5: 803.0176391601562 + stdev: 113.29131317138672 + ncomponents: 1 + pixel_percentage: 0.025295833125710487 + shape: + - [20, 18, 12] + - image_intensity: + - max: 922.2777099609375 + mean: 428.3443908691406 + median: 421.385498046875 + min: 71.5560302734375 + percentile: [137.7851104736328, 294.1747741699219, 580.3988647460938, 816.295654296875] + percentile_00_5: 137.7851104736328 + percentile_10_0: 294.1747741699219 + percentile_90_0: 580.3988647460938 + percentile_99_5: 816.295654296875 + stdev: 118.50525665283203 + ncomponents: 1 + pixel_percentage: 0.025158634409308434 + shape: + - [22, 22, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_378.nii.gz + image_foreground_stats: + intensity: + - max: 789.7006225585938 + mean: 333.4702453613281 + median: 318.53472900390625 + min: 46.452980041503906 + percentile: [132.72279357910156, 218.99261474609375, 457.8936462402344, 691.6183471679688] + percentile_00_5: 132.72279357910156 + percentile_10_0: 218.99261474609375 + percentile_90_0: 457.8936462402344 + percentile_99_5: 691.6183471679688 + stdev: 98.92711639404297 + image_stats: + channels: 1 + cropped_shape: + - [35, 52, 34] + intensity: + - max: 2176.65380859375 + mean: 452.5894775390625 + median: 471.1659240722656 + min: 0.0 + percentile: [26.544559478759766, 159.26736450195312, 703.4308471679688, 842.7897338867188] + percentile_00_5: 26.544559478759766 + percentile_10_0: 159.26736450195312 + percentile_90_0: 703.4308471679688 + percentile_99_5: 842.7897338867188 + stdev: 208.04774475097656 + shape: + - [35, 52, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_378.nii.gz + label_stats: + image_intensity: + - max: 789.7006225585938 + mean: 333.4702453613281 + median: 318.53472900390625 + min: 46.452980041503906 + percentile: [132.72279357910156, 218.99261474609375, 457.8936462402344, 691.6183471679688] + percentile_00_5: 132.72279357910156 + percentile_10_0: 218.99261474609375 + percentile_90_0: 457.8936462402344 + percentile_99_5: 691.6183471679688 + stdev: 98.92711639404297 + label: + - image_intensity: + - max: 2176.65380859375 + mean: 458.1441650390625 + median: 484.4382019042969 + min: 0.0 + percentile: [19.90842056274414, 159.26736450195312, 710.0669555664062, 849.4259033203125] + percentile_00_5: 19.90842056274414 + percentile_10_0: 159.26736450195312 + percentile_90_0: 710.0669555664062 + percentile_99_5: 849.4259033203125 + stdev: 210.1270294189453 + ncomponents: 1 + pixel_percentage: 0.9554460048675537 + shape: + - [35, 52, 34] + - image_intensity: + - max: 703.4308471679688 + mean: 343.701416015625 + median: 338.4431457519531 + min: 46.452980041503906 + percentile: [145.9950714111328, 238.90103149414062, 457.8936462402344, 624.4937744140625] + percentile_00_5: 145.9950714111328 + percentile_10_0: 238.90103149414062 + percentile_90_0: 457.8936462402344 + percentile_99_5: 624.4937744140625 + stdev: 89.67848205566406 + ncomponents: 1 + pixel_percentage: 0.019069166854023933 + shape: + - [19, 14, 11] + - image_intensity: + - max: 789.7006225585938 + mean: 325.814697265625 + median: 311.8985595703125 + min: 46.452980041503906 + percentile: [126.08665466308594, 212.35647583007812, 464.52978515625, 710.86328125] + percentile_00_5: 126.08665466308594 + percentile_10_0: 212.35647583007812 + percentile_90_0: 464.52978515625 + percentile_99_5: 710.86328125 + stdev: 104.66546630859375 + ncomponents: 1 + pixel_percentage: 0.025484809651970863 + shape: + - [19, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_205.nii.gz + image_foreground_stats: + intensity: + - max: 423338.3125 + mean: 206527.984375 + median: 198643.359375 + min: 74898.3125 + percentile: [104206.3515625, 153053.078125, 269308.125, 377748.03125] + percentile_00_5: 104206.3515625 + percentile_10_0: 153053.078125 + percentile_90_0: 269308.125 + percentile_99_5: 377748.03125 + stdev: 49197.97265625 + image_stats: + channels: 1 + cropped_shape: + - [32, 47, 32] + intensity: + - max: 1432837.375 + mean: 270425.34375 + median: 273541.6875 + min: 0.0 + percentile: [13025.7939453125, 97693.453125, 416825.40625, 626421.125] + percentile_00_5: 13025.7939453125 + percentile_10_0: 97693.453125 + percentile_90_0: 416825.40625 + percentile_99_5: 626421.125 + stdev: 127638.15625 + shape: + - [32, 47, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_205.nii.gz + label_stats: + image_intensity: + - max: 423338.3125 + mean: 206527.984375 + median: 198643.359375 + min: 74898.3125 + percentile: [104206.3515625, 153053.078125, 269308.125, 377748.03125] + percentile_00_5: 104206.3515625 + percentile_10_0: 153053.078125 + percentile_90_0: 269308.125 + percentile_99_5: 377748.03125 + stdev: 49197.97265625 + label: + - image_intensity: + - max: 1432837.375 + mean: 274229.03125 + median: 286567.46875 + min: 0.0 + percentile: [13025.7939453125, 94437.0078125, 420081.84375, 644776.8125] + percentile_00_5: 13025.7939453125 + percentile_10_0: 94437.0078125 + percentile_90_0: 420081.84375 + percentile_99_5: 644776.8125 + stdev: 129844.921875 + ncomponents: 1 + pixel_percentage: 0.9438164830207825 + shape: + - [32, 47, 32] + - image_intensity: + - max: 381004.46875 + mean: 205309.90625 + median: 205156.25 + min: 81411.2109375 + percentile: [99533.3515625, 153053.078125, 260515.875, 341927.09375] + percentile_00_5: 99533.3515625 + percentile_10_0: 153053.078125 + percentile_90_0: 260515.875 + percentile_99_5: 341927.09375 + stdev: 44288.03125 + ncomponents: 1 + pixel_percentage: 0.027302194386720657 + shape: + - [18, 15, 14] + - image_intensity: + - max: 423338.3125 + mean: 207679.421875 + median: 198643.359375 + min: 74898.3125 + percentile: [110540.140625, 153053.078125, 280054.5625, 394030.28125] + percentile_00_5: 110540.140625 + percentile_10_0: 153053.078125 + percentile_90_0: 280054.5625 + percentile_99_5: 394030.28125 + stdev: 53400.62109375 + ncomponents: 1 + pixel_percentage: 0.028881317004561424 + shape: + - [21, 22, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_305.nii.gz + image_foreground_stats: + intensity: + - max: 899.477294921875 + mean: 415.31427001953125 + median: 394.7346496582031 + min: 6.471059799194336 + percentile: [97.0658950805664, 297.66876220703125, 582.3953857421875, 802.4114379882812] + percentile_00_5: 97.0658950805664 + percentile_10_0: 297.66876220703125 + percentile_90_0: 582.3953857421875 + percentile_99_5: 802.4114379882812 + stdev: 122.10847473144531 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 30] + intensity: + - max: 2200.160400390625 + mean: 508.36297607421875 + median: 517.684814453125 + min: 0.0 + percentile: [25.884239196777344, 207.07391357421875, 776.5271606445312, 931.8326416015625] + percentile_00_5: 25.884239196777344 + percentile_10_0: 207.07391357421875 + percentile_90_0: 776.5271606445312 + percentile_99_5: 931.8326416015625 + stdev: 218.83680725097656 + shape: + - [34, 49, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_305.nii.gz + label_stats: + image_intensity: + - max: 899.477294921875 + mean: 415.31427001953125 + median: 394.7346496582031 + min: 6.471059799194336 + percentile: [97.0658950805664, 297.66876220703125, 582.3953857421875, 802.4114379882812] + percentile_00_5: 97.0658950805664 + percentile_10_0: 297.66876220703125 + percentile_90_0: 582.3953857421875 + percentile_99_5: 802.4114379882812 + stdev: 122.10847473144531 + label: + - image_intensity: + - max: 2200.160400390625 + mean: 514.365966796875 + median: 530.6268920898438 + min: 0.0 + percentile: [25.884239196777344, 194.1317901611328, 776.5271606445312, 931.8326416015625] + percentile_00_5: 25.884239196777344 + percentile_10_0: 194.1317901611328 + percentile_90_0: 776.5271606445312 + percentile_99_5: 931.8326416015625 + stdev: 222.31185913085938 + ncomponents: 1 + pixel_percentage: 0.9393957853317261 + shape: + - [34, 49, 30] + - image_intensity: + - max: 899.477294921875 + mean: 424.0290222167969 + median: 401.2057189941406 + min: 6.471059799194336 + percentile: [59.79259490966797, 304.1398010253906, 582.3953857421875, 820.2716064453125] + percentile_00_5: 59.79259490966797 + percentile_10_0: 304.1398010253906 + percentile_90_0: 582.3953857421875 + percentile_99_5: 820.2716064453125 + stdev: 125.39521026611328 + ncomponents: 1 + pixel_percentage: 0.032993197441101074 + shape: + - [22, 19, 12] + - image_intensity: + - max: 841.23779296875 + mean: 404.9007873535156 + median: 381.79254150390625 + min: 45.29741668701172 + percentile: [115.79962158203125, 284.72662353515625, 575.92431640625, 758.47265625] + percentile_00_5: 115.79962158203125 + percentile_10_0: 284.72662353515625 + percentile_90_0: 575.92431640625 + percentile_99_5: 758.47265625 + stdev: 117.21452331542969 + ncomponents: 1 + pixel_percentage: 0.02761104516685009 + shape: + - [23, 22, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_366.nii.gz + image_foreground_stats: + intensity: + - max: 1238.031005859375 + mean: 555.1204833984375 + median: 530.584716796875 + min: 67.37583923339844 + percentile: [244.23741149902344, 395.83306884765625, 749.5562133789062, 1069.5914306640625] + percentile_00_5: 244.23741149902344 + percentile_10_0: 395.83306884765625 + percentile_90_0: 749.5562133789062 + percentile_99_5: 1069.5914306640625 + stdev: 148.08775329589844 + image_stats: + channels: 1 + cropped_shape: + - [37, 47, 34] + intensity: + - max: 3680.4052734375 + mean: 751.3726806640625 + median: 800.0880737304688 + min: 0.0 + percentile: [33.68791961669922, 294.769287109375, 1136.96728515625, 1271.718994140625] + percentile_00_5: 33.68791961669922 + percentile_10_0: 294.769287109375 + percentile_90_0: 1136.96728515625 + percentile_99_5: 1271.718994140625 + stdev: 332.8992614746094 + shape: + - [37, 47, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_366.nii.gz + label_stats: + image_intensity: + - max: 1238.031005859375 + mean: 555.1204833984375 + median: 530.584716796875 + min: 67.37583923339844 + percentile: [244.23741149902344, 395.83306884765625, 749.5562133789062, 1069.5914306640625] + percentile_00_5: 244.23741149902344 + percentile_10_0: 395.83306884765625 + percentile_90_0: 749.5562133789062 + percentile_99_5: 1069.5914306640625 + stdev: 148.08775329589844 + label: + - image_intensity: + - max: 3680.4052734375 + mean: 765.5328369140625 + median: 842.197998046875 + min: 0.0 + percentile: [33.68791961669922, 277.9253234863281, 1145.3892822265625, 1280.1409912109375] + percentile_00_5: 33.68791961669922 + percentile_10_0: 277.9253234863281 + percentile_90_0: 1145.3892822265625 + percentile_99_5: 1280.1409912109375 + stdev: 338.0180969238281 + ncomponents: 1 + pixel_percentage: 0.9327030181884766 + shape: + - [37, 47, 34] + - image_intensity: + - max: 1128.5452880859375 + mean: 550.1975708007812 + median: 530.584716796875 + min: 67.37583923339844 + percentile: [213.9604034423828, 395.83306884765625, 732.7122802734375, 965.1165771484375] + percentile_00_5: 213.9604034423828 + percentile_10_0: 395.83306884765625 + percentile_90_0: 732.7122802734375 + percentile_99_5: 965.1165771484375 + stdev: 137.8552703857422 + ncomponents: 1 + pixel_percentage: 0.0419781468808651 + shape: + - [26, 17, 15] + - image_intensity: + - max: 1238.031005859375 + mean: 563.2825317382812 + median: 530.584716796875 + min: 244.23741149902344 + percentile: [286.3473205566406, 395.83306884765625, 786.6131591796875, 1136.96728515625] + percentile_00_5: 286.3473205566406 + percentile_10_0: 395.83306884765625 + percentile_90_0: 786.6131591796875 + percentile_99_5: 1136.96728515625 + stdev: 163.32266235351562 + ncomponents: 1 + pixel_percentage: 0.0253188107162714 + shape: + - [20, 20, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_317.nii.gz + image_foreground_stats: + intensity: + - max: 1042.7255859375 + mean: 505.29339599609375 + median: 486.6052551269531 + min: 69.5150375366211 + percentile: [207.15481567382812, 364.9539489746094, 669.0822143554688, 929.7636108398438] + percentile_00_5: 207.15481567382812 + percentile_10_0: 364.9539489746094 + percentile_90_0: 669.0822143554688 + percentile_99_5: 929.7636108398438 + stdev: 125.19490814208984 + image_stats: + channels: 1 + cropped_shape: + - [33, 51, 34] + intensity: + - max: 4535.85595703125 + mean: 660.3604736328125 + median: 660.3928833007812 + min: 0.0 + percentile: [43.4468994140625, 321.5070495605469, 1016.6574096679688, 1199.1343994140625] + percentile_00_5: 43.4468994140625 + percentile_10_0: 321.5070495605469 + percentile_90_0: 1016.6574096679688 + percentile_99_5: 1199.1343994140625 + stdev: 274.3169860839844 + shape: + - [33, 51, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_317.nii.gz + label_stats: + image_intensity: + - max: 1042.7255859375 + mean: 505.29339599609375 + median: 486.6052551269531 + min: 69.5150375366211 + percentile: [207.15481567382812, 364.9539489746094, 669.0822143554688, 929.7636108398438] + percentile_00_5: 207.15481567382812 + percentile_10_0: 364.9539489746094 + percentile_90_0: 669.0822143554688 + percentile_99_5: 929.7636108398438 + stdev: 125.19490814208984 + label: + - image_intensity: + - max: 4535.85595703125 + mean: 669.8048706054688 + median: 677.7716064453125 + min: 0.0 + percentile: [43.4468994140625, 312.8176574707031, 1016.6574096679688, 1207.82373046875] + percentile_00_5: 43.4468994140625 + percentile_10_0: 312.8176574707031 + percentile_90_0: 1016.6574096679688 + percentile_99_5: 1207.82373046875 + stdev: 278.0729064941406 + ncomponents: 1 + pixel_percentage: 0.9425920248031616 + shape: + - [33, 51, 34] + - image_intensity: + - max: 1042.7255859375 + mean: 520.1716918945312 + median: 503.9840087890625 + min: 139.0300750732422 + percentile: [278.0601501464844, 382.33270263671875, 677.7716064453125, 901.3057250976562] + percentile_00_5: 278.0601501464844 + percentile_10_0: 382.33270263671875 + percentile_90_0: 677.7716064453125 + percentile_99_5: 901.3057250976562 + stdev: 119.84407806396484 + ncomponents: 1 + pixel_percentage: 0.02893991768360138 + shape: + - [21, 21, 14] + - image_intensity: + - max: 981.89990234375 + mean: 490.1684875488281 + median: 469.22650146484375 + min: 69.5150375366211 + percentile: [176.22061157226562, 347.5751953125, 660.3928833007812, 929.7636108398438] + percentile_00_5: 176.22061157226562 + percentile_10_0: 347.5751953125 + percentile_90_0: 660.3928833007812 + percentile_99_5: 929.7636108398438 + stdev: 128.65794372558594 + ncomponents: 1 + pixel_percentage: 0.028468072414398193 + shape: + - [22, 21, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_217.nii.gz + image_foreground_stats: + intensity: + - max: 465995.09375 + mean: 246398.359375 + median: 239381.046875 + min: 63834.9453125 + percentile: [129281.7265625, 188313.09375, 309599.5, 427694.125] + percentile_00_5: 129281.7265625 + percentile_10_0: 188313.09375 + percentile_90_0: 309599.5 + percentile_99_5: 427694.125 + stdev: 51675.26171875 + image_stats: + channels: 1 + cropped_shape: + - [38, 53, 27] + intensity: + - max: 564939.25 + mean: 279381.53125 + median: 277682.03125 + min: 0.0 + percentile: [9575.2421875, 67026.6953125, 456419.875, 510679.5625] + percentile_00_5: 9575.2421875 + percentile_10_0: 67026.6953125 + percentile_90_0: 456419.875 + percentile_99_5: 510679.5625 + stdev: 136744.515625 + shape: + - [38, 53, 27] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_217.nii.gz + label_stats: + image_intensity: + - max: 465995.09375 + mean: 246398.359375 + median: 239381.046875 + min: 63834.9453125 + percentile: [129281.7265625, 188313.09375, 309599.5, 427694.125] + percentile_00_5: 129281.7265625 + percentile_10_0: 188313.09375 + percentile_90_0: 309599.5 + percentile_99_5: 427694.125 + stdev: 51675.26171875 + label: + - image_intensity: + - max: 564939.25 + mean: 281376.90625 + median: 287257.25 + min: 0.0 + percentile: [6383.49462890625, 63834.9453125, 459611.625, 513871.3125] + percentile_00_5: 6383.49462890625 + percentile_10_0: 63834.9453125 + percentile_90_0: 459611.625 + percentile_99_5: 513871.3125 + stdev: 139996.21875 + ncomponents: 1 + pixel_percentage: 0.9429548978805542 + shape: + - [38, 53, 27] + - image_intensity: + - max: 456419.875 + mean: 246647.796875 + median: 239381.046875 + min: 63834.9453125 + percentile: [121286.3984375, 188313.09375, 312791.25, 427391.0] + percentile_00_5: 121286.3984375 + percentile_10_0: 188313.09375 + percentile_90_0: 312791.25 + percentile_99_5: 427391.0 + stdev: 53500.4296875 + ncomponents: 1 + pixel_percentage: 0.03714737668633461 + shape: + - [22, 18, 13] + - image_intensity: + - max: 465995.09375 + mean: 245932.6875 + median: 242572.796875 + min: 114902.90625 + percentile: [144921.28125, 191504.84375, 303216.0, 426401.375] + percentile_00_5: 144921.28125 + percentile_10_0: 191504.84375 + percentile_90_0: 303216.0 + percentile_99_5: 426401.375 + stdev: 48079.31640625 + ncomponents: 1 + pixel_percentage: 0.01989775337278843 + shape: + - [20, 22, 12] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_374.nii.gz + image_foreground_stats: + intensity: + - max: 696.3159790039062 + mean: 326.00213623046875 + median: 315.921142578125 + min: 32.23685073852539 + percentile: [122.50003051757812, 225.657958984375, 451.31591796875, 612.5001831054688] + percentile_00_5: 122.50003051757812 + percentile_10_0: 225.657958984375 + percentile_90_0: 451.31591796875 + percentile_99_5: 612.5001831054688 + stdev: 92.67897033691406 + image_stats: + channels: 1 + cropped_shape: + - [38, 48, 39] + intensity: + - max: 2037.368896484375 + mean: 436.7266845703125 + median: 451.31591796875 + min: 0.0 + percentile: [25.789480209350586, 148.2895050048828, 683.4212036132812, 793.0264892578125] + percentile_00_5: 25.789480209350586 + percentile_10_0: 148.2895050048828 + percentile_90_0: 683.4212036132812 + percentile_99_5: 793.0264892578125 + stdev: 202.2622528076172 + shape: + - [38, 48, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_374.nii.gz + label_stats: + image_intensity: + - max: 696.3159790039062 + mean: 326.00213623046875 + median: 315.921142578125 + min: 32.23685073852539 + percentile: [122.50003051757812, 225.657958984375, 451.31591796875, 612.5001831054688] + percentile_00_5: 122.50003051757812 + percentile_10_0: 225.657958984375 + percentile_90_0: 451.31591796875 + percentile_99_5: 612.5001831054688 + stdev: 92.67897033691406 + label: + - image_intensity: + - max: 2037.368896484375 + mean: 443.1091613769531 + median: 464.21063232421875 + min: 0.0 + percentile: [19.34210968017578, 141.84214782714844, 689.8685913085938, 793.0264892578125] + percentile_00_5: 19.34210968017578 + percentile_10_0: 141.84214782714844 + percentile_90_0: 689.8685913085938 + percentile_99_5: 793.0264892578125 + stdev: 205.0015411376953 + ncomponents: 1 + pixel_percentage: 0.9454987645149231 + shape: + - [38, 48, 39] + - image_intensity: + - max: 696.3159790039062 + mean: 336.7422180175781 + median: 328.8158874511719 + min: 32.23685073852539 + percentile: [135.394775390625, 238.5526885986328, 450.0259704589844, 593.1580200195312] + percentile_00_5: 135.394775390625 + percentile_10_0: 238.5526885986328 + percentile_90_0: 450.0259704589844 + percentile_99_5: 593.1580200195312 + stdev: 84.88502502441406 + ncomponents: 1 + pixel_percentage: 0.029844241216778755 + shape: + - [26, 15, 15] + - image_intensity: + - max: 670.5264892578125 + mean: 313.0025329589844 + median: 296.5790100097656 + min: 51.57896041870117 + percentile: [109.60529327392578, 206.3158416748047, 451.31591796875, 631.84228515625] + percentile_00_5: 109.60529327392578 + percentile_10_0: 206.3158416748047 + percentile_90_0: 451.31591796875 + percentile_99_5: 631.84228515625 + stdev: 99.7790298461914 + ncomponents: 1 + pixel_percentage: 0.02465699426829815 + shape: + - [23, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_274.nii.gz + image_foreground_stats: + intensity: + - max: 646.8286743164062 + mean: 307.4990539550781 + median: 297.33251953125 + min: 26.08180046081543 + percentile: [116.42915344238281, 208.65440368652344, 417.3088073730469, 599.8814086914062] + percentile_00_5: 116.42915344238281 + percentile_10_0: 208.65440368652344 + percentile_90_0: 417.3088073730469 + percentile_99_5: 599.8814086914062 + stdev: 85.1393051147461 + image_stats: + channels: 1 + cropped_shape: + - [35, 40, 40] + intensity: + - max: 2733.372802734375 + mean: 434.62469482421875 + median: 459.0396728515625 + min: 0.0 + percentile: [20.865440368652344, 172.13987731933594, 652.0449829101562, 761.5885620117188] + percentile_00_5: 20.865440368652344 + percentile_10_0: 172.13987731933594 + percentile_90_0: 652.0449829101562 + percentile_99_5: 761.5885620117188 + stdev: 190.7883758544922 + shape: + - [35, 40, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_274.nii.gz + label_stats: + image_intensity: + - max: 646.8286743164062 + mean: 307.4990539550781 + median: 297.33251953125 + min: 26.08180046081543 + percentile: [116.42915344238281, 208.65440368652344, 417.3088073730469, 599.8814086914062] + percentile_00_5: 116.42915344238281 + percentile_10_0: 208.65440368652344 + percentile_90_0: 417.3088073730469 + percentile_99_5: 599.8814086914062 + stdev: 85.1393051147461 + label: + - image_intensity: + - max: 2733.372802734375 + mean: 440.97674560546875 + median: 474.68878173828125 + min: 0.0 + percentile: [20.865440368652344, 166.92352294921875, 652.0449829101562, 761.5885620117188] + percentile_00_5: 20.865440368652344 + percentile_10_0: 166.92352294921875 + percentile_90_0: 652.0449829101562 + percentile_99_5: 761.5885620117188 + stdev: 192.3771209716797 + ncomponents: 2 + pixel_percentage: 0.9524106979370117 + shape: + - [35, 40, 40] + - [1, 1, 1] + - image_intensity: + - max: 641.6123046875 + mean: 313.51336669921875 + median: 307.7652587890625 + min: 26.08180046081543 + percentile: [91.02548217773438, 219.08712768554688, 417.3088073730469, 602.7506713867188] + percentile_00_5: 91.02548217773438 + percentile_10_0: 219.08712768554688 + percentile_90_0: 417.3088073730469 + percentile_99_5: 602.7506713867188 + stdev: 82.62628936767578 + ncomponents: 1 + pixel_percentage: 0.026624999940395355 + shape: + - [20, 15, 17] + - image_intensity: + - max: 646.8286743164062 + mean: 299.8607177734375 + median: 281.6834411621094 + min: 125.19264221191406 + percentile: [149.86602783203125, 203.43804931640625, 417.3088073730469, 590.857177734375] + percentile_00_5: 149.86602783203125 + percentile_10_0: 203.43804931640625 + percentile_90_0: 417.3088073730469 + percentile_99_5: 590.857177734375 + stdev: 87.63478088378906 + ncomponents: 1 + pixel_percentage: 0.020964285358786583 + shape: + - [21, 15, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_309.nii.gz + image_foreground_stats: + intensity: + - max: 1125.3958740234375 + mean: 486.0055847167969 + median: 455.12335205078125 + min: 16.54994010925293 + percentile: [157.67955017089844, 330.9988098144531, 695.0974731445312, 984.721435546875] + percentile_00_5: 157.67955017089844 + percentile_10_0: 330.9988098144531 + percentile_90_0: 695.0974731445312 + percentile_99_5: 984.721435546875 + stdev: 150.90423583984375 + image_stats: + channels: 1 + cropped_shape: + - [34, 52, 38] + intensity: + - max: 4261.609375 + mean: 643.459716796875 + median: 645.4476928710938 + min: 0.0 + percentile: [41.37485122680664, 256.5240783691406, 1001.2713623046875, 1232.9705810546875] + percentile_00_5: 41.37485122680664 + percentile_10_0: 256.5240783691406 + percentile_90_0: 1001.2713623046875 + percentile_99_5: 1232.9705810546875 + stdev: 300.220458984375 + shape: + - [34, 52, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_309.nii.gz + label_stats: + image_intensity: + - max: 1125.3958740234375 + mean: 486.0055847167969 + median: 455.12335205078125 + min: 16.54994010925293 + percentile: [157.67955017089844, 330.9988098144531, 695.0974731445312, 984.721435546875] + percentile_00_5: 157.67955017089844 + percentile_10_0: 330.9988098144531 + percentile_90_0: 695.0974731445312 + percentile_99_5: 984.721435546875 + stdev: 150.90423583984375 + label: + - image_intensity: + - max: 4261.609375 + mean: 652.4059448242188 + median: 670.2725830078125 + min: 0.0 + percentile: [41.37485122680664, 248.2490997314453, 1009.5463256835938, 1266.0704345703125] + percentile_00_5: 41.37485122680664 + percentile_10_0: 248.2490997314453 + percentile_90_0: 1009.5463256835938 + percentile_99_5: 1266.0704345703125 + stdev: 304.0903015136719 + ncomponents: 1 + pixel_percentage: 0.9462372064590454 + shape: + - [34, 52, 38] + - image_intensity: + - max: 1125.3958740234375 + mean: 482.13543701171875 + median: 455.12335205078125 + min: 57.92478942871094 + percentile: [148.16334533691406, 330.9988098144531, 670.2725830078125, 977.2323608398438] + percentile_00_5: 148.16334533691406 + percentile_10_0: 330.9988098144531 + percentile_90_0: 670.2725830078125 + percentile_99_5: 977.2323608398438 + stdev: 145.78981018066406 + ncomponents: 1 + pixel_percentage: 0.026524173095822334 + shape: + - [19, 17, 16] + - image_intensity: + - max: 1059.1961669921875 + mean: 489.77423095703125 + median: 455.12335205078125 + min: 16.54994010925293 + percentile: [173.7743682861328, 330.9988098144531, 719.9224243164062, 991.79638671875] + percentile_00_5: 173.7743682861328 + percentile_10_0: 330.9988098144531 + percentile_90_0: 719.9224243164062 + percentile_99_5: 991.79638671875 + stdev: 155.63070678710938 + ncomponents: 1 + pixel_percentage: 0.027238627895712852 + shape: + - [22, 24, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_252.nii.gz + image_foreground_stats: + intensity: + - max: 107.0 + mean: 47.76335906982422 + median: 46.0 + min: 13.0 + percentile: [19.0, 32.0, 65.0, 93.0] + percentile_00_5: 19.0 + percentile_10_0: 32.0 + percentile_90_0: 65.0 + percentile_99_5: 93.0 + stdev: 13.232316017150879 + image_stats: + channels: 1 + cropped_shape: + - [37, 55, 26] + intensity: + - max: 160.0 + mean: 62.34499740600586 + median: 62.0 + min: 1.0 + percentile: [6.0, 21.0, 101.0, 118.0] + percentile_00_5: 6.0 + percentile_10_0: 21.0 + percentile_90_0: 101.0 + percentile_99_5: 118.0 + stdev: 30.172101974487305 + shape: + - [37, 55, 26] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_252.nii.gz + label_stats: + image_intensity: + - max: 107.0 + mean: 47.76335906982422 + median: 46.0 + min: 13.0 + percentile: [19.0, 32.0, 65.0, 93.0] + percentile_00_5: 19.0 + percentile_10_0: 32.0 + percentile_90_0: 65.0 + percentile_99_5: 93.0 + stdev: 13.232316017150879 + label: + - image_intensity: + - max: 160.0 + mean: 63.40163803100586 + median: 65.0 + min: 1.0 + percentile: [6.0, 21.0, 102.0, 118.0] + percentile_00_5: 6.0 + percentile_10_0: 21.0 + percentile_90_0: 102.0 + percentile_99_5: 118.0 + stdev: 30.775177001953125 + ncomponents: 1 + pixel_percentage: 0.9324324131011963 + shape: + - [37, 55, 26] + - image_intensity: + - max: 93.0 + mean: 46.99223327636719 + median: 46.0 + min: 14.0 + percentile: [19.0, 32.0, 65.0, 82.0] + percentile_00_5: 19.0 + percentile_10_0: 32.0 + percentile_90_0: 65.0 + percentile_99_5: 82.0 + stdev: 12.477899551391602 + ncomponents: 1 + pixel_percentage: 0.03893403708934784 + shape: + - [21, 19, 12] + - image_intensity: + - max: 107.0 + mean: 48.81188201904297 + median: 47.0 + min: 13.0 + percentile: [20.139999389648438, 32.0, 66.0, 99.0] + percentile_00_5: 20.139999389648438 + percentile_10_0: 32.0 + percentile_90_0: 66.0 + percentile_99_5: 99.0 + stdev: 14.126569747924805 + ncomponents: 1 + pixel_percentage: 0.02863352932035923 + shape: + - [18, 24, 12] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_352.nii.gz + image_foreground_stats: + intensity: + - max: 84.0 + mean: 41.60152053833008 + median: 39.0 + min: 15.0 + percentile: [20.0, 30.0, 57.0, 75.0] + percentile_00_5: 20.0 + percentile_10_0: 30.0 + percentile_90_0: 57.0 + percentile_99_5: 75.0 + stdev: 10.502641677856445 + image_stats: + channels: 1 + cropped_shape: + - [38, 51, 35] + intensity: + - max: 254.0 + mean: 53.059661865234375 + median: 52.0 + min: 1.0 + percentile: [6.0, 21.0, 84.0, 97.0] + percentile_00_5: 6.0 + percentile_10_0: 21.0 + percentile_90_0: 84.0 + percentile_99_5: 97.0 + stdev: 24.728330612182617 + shape: + - [38, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_352.nii.gz + label_stats: + image_intensity: + - max: 84.0 + mean: 41.60152053833008 + median: 39.0 + min: 15.0 + percentile: [20.0, 30.0, 57.0, 75.0] + percentile_00_5: 20.0 + percentile_10_0: 30.0 + percentile_90_0: 57.0 + percentile_99_5: 75.0 + stdev: 10.502641677856445 + label: + - image_intensity: + - max: 254.0 + mean: 53.716773986816406 + median: 54.0 + min: 1.0 + percentile: [6.0, 20.0, 85.0, 97.0] + percentile_00_5: 6.0 + percentile_10_0: 20.0 + percentile_90_0: 85.0 + percentile_99_5: 97.0 + stdev: 25.1450138092041 + ncomponents: 1 + pixel_percentage: 0.9457614421844482 + shape: + - [38, 51, 35] + - image_intensity: + - max: 80.0 + mean: 41.380470275878906 + median: 40.0 + min: 15.0 + percentile: [19.0, 30.0, 55.0, 70.0] + percentile_00_5: 19.0 + percentile_10_0: 30.0 + percentile_90_0: 55.0 + percentile_99_5: 70.0 + stdev: 9.717562675476074 + ncomponents: 1 + pixel_percentage: 0.028984224423766136 + shape: + - [21, 16, 14] + - image_intensity: + - max: 84.0 + mean: 41.855224609375 + median: 39.0 + min: 19.0 + percentile: [26.0, 30.0, 60.0, 78.0] + percentile_00_5: 26.0 + percentile_10_0: 30.0 + percentile_90_0: 60.0 + percentile_99_5: 78.0 + stdev: 11.331549644470215 + ncomponents: 1 + pixel_percentage: 0.02525431290268898 + shape: + - [21, 24, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_098.nii.gz + image_foreground_stats: + intensity: + - max: 738.5250854492188 + mean: 353.513916015625 + median: 337.8359375 + min: 62.85319900512695 + percentile: [117.84974670410156, 243.55615234375, 479.2556457519531, 680.0317993164062] + percentile_00_5: 117.84974670410156 + percentile_10_0: 243.55615234375 + percentile_90_0: 479.2556457519531 + percentile_99_5: 680.0317993164062 + stdev: 98.90276336669922 + image_stats: + channels: 1 + cropped_shape: + - [37, 48, 34] + intensity: + - max: 2089.868896484375 + mean: 462.06658935546875 + median: 463.5423278808594 + min: 0.0 + percentile: [15.713299751281738, 125.7063980102539, 754.2384033203125, 864.2315063476562] + percentile_00_5: 15.713299751281738 + percentile_10_0: 125.7063980102539 + percentile_90_0: 754.2384033203125 + percentile_99_5: 864.2315063476562 + stdev: 230.6584930419922 + shape: + - [37, 48, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_098.nii.gz + label_stats: + image_intensity: + - max: 738.5250854492188 + mean: 353.513916015625 + median: 337.8359375 + min: 62.85319900512695 + percentile: [117.84974670410156, 243.55615234375, 479.2556457519531, 680.0317993164062] + percentile_00_5: 117.84974670410156 + percentile_10_0: 243.55615234375 + percentile_90_0: 479.2556457519531 + percentile_99_5: 680.0317993164062 + stdev: 98.90276336669922 + label: + - image_intensity: + - max: 2089.868896484375 + mean: 467.52313232421875 + median: 479.2556457519531 + min: 0.0 + percentile: [15.713299751281738, 125.7063980102539, 754.2384033203125, 864.2315063476562] + percentile_00_5: 15.713299751281738 + percentile_10_0: 125.7063980102539 + percentile_90_0: 754.2384033203125 + percentile_99_5: 864.2315063476562 + stdev: 234.016845703125 + ncomponents: 1 + pixel_percentage: 0.9521396160125732 + shape: + - [37, 48, 34] + - image_intensity: + - max: 730.66845703125 + mean: 353.3781433105469 + median: 345.6925964355469 + min: 62.85319900512695 + percentile: [114.47138214111328, 251.4127960205078, 463.5423278808594, 631.9107666015625] + percentile_00_5: 114.47138214111328 + percentile_10_0: 251.4127960205078 + percentile_90_0: 463.5423278808594 + percentile_99_5: 631.9107666015625 + stdev: 90.6651382446289 + ncomponents: 1 + pixel_percentage: 0.025089427828788757 + shape: + - [21, 16, 15] + - image_intensity: + - max: 738.5250854492188 + mean: 353.6635437011719 + median: 329.97930908203125 + min: 86.42314910888672 + percentile: [149.27635192871094, 235.69949340820312, 510.6822509765625, 693.427978515625] + percentile_00_5: 149.27635192871094 + percentile_10_0: 235.69949340820312 + percentile_90_0: 510.6822509765625 + percentile_99_5: 693.427978515625 + stdev: 107.24877166748047 + ncomponents: 1 + pixel_percentage: 0.02277093194425106 + shape: + - [18, 20, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_231.nii.gz + image_foreground_stats: + intensity: + - max: 752.2297973632812 + mean: 348.68890380859375 + median: 337.20648193359375 + min: 0.0 + percentile: [110.2405776977539, 252.90484619140625, 460.4165344238281, 641.9892578125] + percentile_00_5: 110.2405776977539 + percentile_10_0: 252.90484619140625 + percentile_90_0: 460.4165344238281 + percentile_99_5: 641.9892578125 + stdev: 91.572998046875 + image_stats: + channels: 1 + cropped_shape: + - [33, 47, 42] + intensity: + - max: 1193.192138671875 + mean: 465.72711181640625 + median: 479.8707580566406 + min: 0.0 + percentile: [19.454219818115234, 149.14901733398438, 732.7755737304688, 830.0466918945312] + percentile_00_5: 19.454219818115234 + percentile_10_0: 149.14901733398438 + percentile_90_0: 732.7755737304688 + percentile_99_5: 830.0466918945312 + stdev: 217.02777099609375 + shape: + - [33, 47, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_231.nii.gz + label_stats: + image_intensity: + - max: 752.2297973632812 + mean: 348.68890380859375 + median: 337.20648193359375 + min: 0.0 + percentile: [110.2405776977539, 252.90484619140625, 460.4165344238281, 641.9892578125] + percentile_00_5: 110.2405776977539 + percentile_10_0: 252.90484619140625 + percentile_90_0: 460.4165344238281 + percentile_99_5: 641.9892578125 + stdev: 91.572998046875 + label: + - image_intensity: + - max: 1193.192138671875 + mean: 470.684326171875 + median: 492.8402099609375 + min: 0.0 + percentile: [19.454219818115234, 142.66427612304688, 739.2603149414062, 830.0466918945312] + percentile_00_5: 19.454219818115234 + percentile_10_0: 142.66427612304688 + percentile_90_0: 739.2603149414062 + percentile_99_5: 830.0466918945312 + stdev: 219.3994140625 + ncomponents: 1 + pixel_percentage: 0.9593656659126282 + shape: + - [33, 47, 42] + - image_intensity: + - max: 752.2297973632812 + mean: 354.6971130371094 + median: 337.20648193359375 + min: 51.8779182434082 + percentile: [142.66427612304688, 259.38958740234375, 466.9012756347656, 641.9892578125] + percentile_00_5: 142.66427612304688 + percentile_10_0: 259.38958740234375 + percentile_90_0: 466.9012756347656 + percentile_99_5: 641.9892578125 + stdev: 88.55470275878906 + ncomponents: 1 + pixel_percentage: 0.018098922446370125 + shape: + - [19, 14, 16] + - image_intensity: + - max: 700.3518676757812 + mean: 343.8634948730469 + median: 330.72174072265625 + min: 0.0 + percentile: [84.33404541015625, 239.9353790283203, 460.4165344238281, 641.9892578125] + percentile_00_5: 84.33404541015625 + percentile_10_0: 239.9353790283203 + percentile_90_0: 460.4165344238281 + percentile_99_5: 641.9892578125 + stdev: 93.64820098876953 + ncomponents: 1 + pixel_percentage: 0.022535383701324463 + shape: + - [18, 23, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_331.nii.gz + image_foreground_stats: + intensity: + - max: 676.6813354492188 + mean: 335.8732604980469 + median: 320.8403015136719 + min: 52.501136779785156 + percentile: [151.66995239257812, 245.00531005859375, 447.42608642578125, 612.5133056640625] + percentile_00_5: 151.66995239257812 + percentile_10_0: 245.00531005859375 + percentile_90_0: 447.42608642578125 + percentile_99_5: 612.5133056640625 + stdev: 83.06089782714844 + image_stats: + channels: 1 + cropped_shape: + - [35, 52, 33] + intensity: + - max: 1067.523193359375 + mean: 398.7671813964844 + median: 396.6752624511719 + min: 0.0 + percentile: [17.50037956237793, 122.50265502929688, 635.8471069335938, 711.68212890625] + percentile_00_5: 17.50037956237793 + percentile_10_0: 122.50265502929688 + percentile_90_0: 635.8471069335938 + percentile_99_5: 711.68212890625 + stdev: 184.2305908203125 + shape: + - [35, 52, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_331.nii.gz + label_stats: + image_intensity: + - max: 676.6813354492188 + mean: 335.8732604980469 + median: 320.8403015136719 + min: 52.501136779785156 + percentile: [151.66995239257812, 245.00531005859375, 447.42608642578125, 612.5133056640625] + percentile_00_5: 151.66995239257812 + percentile_10_0: 245.00531005859375 + percentile_90_0: 447.42608642578125 + percentile_99_5: 612.5133056640625 + stdev: 83.06089782714844 + label: + - image_intensity: + - max: 1067.523193359375 + mean: 402.2997741699219 + median: 408.3421936035156 + min: 0.0 + percentile: [17.50037956237793, 116.66919708251953, 635.8471069335938, 717.5155639648438] + percentile_00_5: 17.50037956237793 + percentile_10_0: 116.66919708251953 + percentile_90_0: 635.8471069335938 + percentile_99_5: 717.5155639648438 + stdev: 187.68356323242188 + ncomponents: 1 + pixel_percentage: 0.9468198418617249 + shape: + - [35, 52, 33] + - image_intensity: + - max: 665.014404296875 + mean: 335.65753173828125 + median: 320.8403015136719 + min: 52.501136779785156 + percentile: [144.6697998046875, 245.00531005859375, 443.34295654296875, 606.6798095703125] + percentile_00_5: 144.6697998046875 + percentile_10_0: 245.00531005859375 + percentile_90_0: 443.34295654296875 + percentile_99_5: 606.6798095703125 + stdev: 79.65687561035156 + ncomponents: 1 + pixel_percentage: 0.025990676134824753 + shape: + - [21, 16, 12] + - image_intensity: + - max: 676.6813354492188 + mean: 336.0794372558594 + median: 320.8403015136719 + min: 105.00227355957031 + percentile: [157.50341796875, 245.00531005859375, 455.0098571777344, 612.5133056640625] + percentile_00_5: 157.50341796875 + percentile_10_0: 245.00531005859375 + percentile_90_0: 455.0098571777344 + percentile_99_5: 612.5133056640625 + stdev: 86.18872833251953 + ncomponents: 1 + pixel_percentage: 0.027189476415514946 + shape: + - [22, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_340.nii.gz + image_foreground_stats: + intensity: + - max: 670.5330200195312 + mean: 321.3487243652344 + median: 306.7331848144531 + min: 64.19996643066406 + percentile: [135.53326416015625, 228.2665557861328, 427.9997863769531, 599.19970703125] + percentile_00_5: 135.53326416015625 + percentile_10_0: 228.2665557861328 + percentile_90_0: 427.9997863769531 + percentile_99_5: 599.19970703125 + stdev: 83.88966369628906 + image_stats: + channels: 1 + cropped_shape: + - [35, 46, 38] + intensity: + - max: 884.5328979492188 + mean: 429.0677185058594 + median: 442.2664489746094 + min: 0.0 + percentile: [21.39999008178711, 164.06658935546875, 663.399658203125, 763.2662963867188] + percentile_00_5: 21.39999008178711 + percentile_10_0: 164.06658935546875 + percentile_90_0: 663.399658203125 + percentile_99_5: 763.2662963867188 + stdev: 189.7574920654297 + shape: + - [35, 46, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_340.nii.gz + label_stats: + image_intensity: + - max: 670.5330200195312 + mean: 321.3487243652344 + median: 306.7331848144531 + min: 64.19996643066406 + percentile: [135.53326416015625, 228.2665557861328, 427.9997863769531, 599.19970703125] + percentile_00_5: 135.53326416015625 + percentile_10_0: 228.2665557861328 + percentile_90_0: 427.9997863769531 + percentile_99_5: 599.19970703125 + stdev: 83.88966369628906 + label: + - image_intensity: + - max: 884.5328979492188 + mean: 435.032470703125 + median: 456.5331115722656 + min: 0.0 + percentile: [21.39999008178711, 164.06658935546875, 663.399658203125, 763.2662963867188] + percentile_00_5: 21.39999008178711 + percentile_10_0: 164.06658935546875 + percentile_90_0: 663.399658203125 + percentile_99_5: 763.2662963867188 + stdev: 192.1822052001953 + ncomponents: 1 + pixel_percentage: 0.9475318789482117 + shape: + - [35, 46, 38] + - image_intensity: + - max: 670.5330200195312 + mean: 318.6205749511719 + median: 313.86651611328125 + min: 64.19996643066406 + percentile: [128.39993286132812, 228.2665557861328, 413.7331237792969, 563.8543701171875] + percentile_00_5: 128.39993286132812 + percentile_10_0: 228.2665557861328 + percentile_90_0: 413.7331237792969 + percentile_99_5: 563.8543701171875 + stdev: 75.55298614501953 + ncomponents: 1 + pixel_percentage: 0.026021575555205345 + shape: + - [23, 16, 15] + - image_intensity: + - max: 656.266357421875 + mean: 324.0330505371094 + median: 306.7331848144531 + min: 85.59996032714844 + percentile: [143.27293395996094, 221.1332244873047, 449.3997802734375, 606.3330688476562] + percentile_00_5: 143.27293395996094 + percentile_10_0: 221.1332244873047 + percentile_90_0: 449.3997802734375 + percentile_99_5: 606.3330688476562 + stdev: 91.27326965332031 + ncomponents: 1 + pixel_percentage: 0.026446551084518433 + shape: + - [26, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_194.nii.gz + image_foreground_stats: + intensity: + - max: 394254.96875 + mean: 184770.828125 + median: 178646.78125 + min: 30801.169921875 + percentile: [84595.4140625, 132445.03125, 243329.234375, 354213.4375] + percentile_00_5: 84595.4140625 + percentile_10_0: 132445.03125 + percentile_90_0: 243329.234375 + percentile_99_5: 354213.4375 + stdev: 47476.72265625 + image_stats: + channels: 1 + cropped_shape: + - [35, 50, 30] + intensity: + - max: 560581.3125 + mean: 244185.5625 + median: 255649.703125 + min: 0.0 + percentile: [9240.3505859375, 73922.8046875, 388094.75, 443536.84375] + percentile_00_5: 9240.3505859375 + percentile_10_0: 73922.8046875 + percentile_90_0: 388094.75 + percentile_99_5: 443536.84375 + stdev: 114075.6171875 + shape: + - [35, 50, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_194.nii.gz + label_stats: + image_intensity: + - max: 394254.96875 + mean: 184770.828125 + median: 178646.78125 + min: 30801.169921875 + percentile: [84595.4140625, 132445.03125, 243329.234375, 354213.4375] + percentile_00_5: 84595.4140625 + percentile_10_0: 132445.03125 + percentile_90_0: 243329.234375 + percentile_99_5: 354213.4375 + stdev: 47476.72265625 + label: + - image_intensity: + - max: 560581.3125 + mean: 247651.8125 + median: 264890.0625 + min: 0.0 + percentile: [9240.3505859375, 70842.6875, 388094.75, 443536.84375] + percentile_00_5: 9240.3505859375 + percentile_10_0: 70842.6875 + percentile_90_0: 388094.75 + percentile_99_5: 443536.84375 + stdev: 115857.5703125 + ncomponents: 1 + pixel_percentage: 0.9448761940002441 + shape: + - [35, 50, 30] + - image_intensity: + - max: 354213.4375 + mean: 185250.578125 + median: 181726.90625 + min: 30801.169921875 + percentile: [85627.25, 132445.03125, 243329.234375, 324028.15625] + percentile_00_5: 85627.25 + percentile_10_0: 132445.03125 + percentile_90_0: 243329.234375 + percentile_99_5: 324028.15625 + stdev: 44473.81640625 + ncomponents: 1 + pixel_percentage: 0.02592380903661251 + shape: + - [21, 15, 11] + - image_intensity: + - max: 394254.96875 + mean: 184344.90625 + median: 178646.78125 + min: 40041.51953125 + percentile: [85196.03125, 129364.9140625, 248873.21875, 363515.09375] + percentile_00_5: 85196.03125 + percentile_10_0: 129364.9140625 + percentile_90_0: 248873.21875 + percentile_99_5: 363515.09375 + stdev: 49987.9140625 + ncomponents: 1 + pixel_percentage: 0.029200000688433647 + shape: + - [21, 24, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_223.nii.gz + image_foreground_stats: + intensity: + - max: 1238.11767578125 + mean: 540.9036254882812 + median: 519.8203735351562 + min: 56.707679748535156 + percentile: [212.70103454589844, 387.5024719238281, 718.2972412109375, 1096.348388671875] + percentile_00_5: 212.70103454589844 + percentile_10_0: 387.5024719238281 + percentile_90_0: 718.2972412109375 + percentile_99_5: 1096.348388671875 + stdev: 144.41680908203125 + image_stats: + channels: 1 + cropped_shape: + - [35, 52, 37] + intensity: + - max: 3553.68115234375 + mean: 707.46337890625 + median: 708.845947265625 + min: 0.0 + percentile: [37.805118560791016, 236.28199768066406, 1134.153564453125, 1294.8253173828125] + percentile_00_5: 37.805118560791016 + percentile_10_0: 236.28199768066406 + percentile_90_0: 1134.153564453125 + percentile_99_5: 1294.8253173828125 + stdev: 333.3096618652344 + shape: + - [35, 52, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_223.nii.gz + label_stats: + image_intensity: + - max: 1238.11767578125 + mean: 540.9036254882812 + median: 519.8203735351562 + min: 56.707679748535156 + percentile: [212.70103454589844, 387.5024719238281, 718.2972412109375, 1096.348388671875] + percentile_00_5: 212.70103454589844 + percentile_10_0: 387.5024719238281 + percentile_90_0: 718.2972412109375 + percentile_99_5: 1096.348388671875 + stdev: 144.41680908203125 + label: + - image_intensity: + - max: 3553.68115234375 + mean: 716.6004028320312 + median: 737.1998291015625 + min: 0.0 + percentile: [37.805118560791016, 226.83071899414062, 1134.153564453125, 1304.276611328125] + percentile_00_5: 37.805118560791016 + percentile_10_0: 226.83071899414062 + percentile_90_0: 1134.153564453125 + percentile_99_5: 1304.276611328125 + stdev: 338.29022216796875 + ncomponents: 1 + pixel_percentage: 0.9479952454566956 + shape: + - [35, 52, 37] + - image_intensity: + - max: 1058.5433349609375 + mean: 546.2923583984375 + median: 529.2716674804688 + min: 56.707679748535156 + percentile: [224.56240844726562, 396.9537353515625, 727.74853515625, 975.75] + percentile_00_5: 224.56240844726562 + percentile_10_0: 396.9537353515625 + percentile_90_0: 727.74853515625 + percentile_99_5: 975.75 + stdev: 131.5889129638672 + ncomponents: 1 + pixel_percentage: 0.023418473079800606 + shape: + - [22, 16, 15] + - image_intensity: + - max: 1238.11767578125 + mean: 536.4889526367188 + median: 510.3691101074219 + min: 75.61023712158203 + percentile: [213.78793334960938, 378.0511779785156, 718.2972412109375, 1137.7451171875] + percentile_00_5: 213.78793334960938 + percentile_10_0: 378.0511779785156 + percentile_90_0: 718.2972412109375 + percentile_99_5: 1137.7451171875 + stdev: 153.99171447753906 + ncomponents: 1 + pixel_percentage: 0.02858627773821354 + shape: + - [20, 27, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_094.nii.gz + image_foreground_stats: + intensity: + - max: 1012.5643310546875 + mean: 467.91717529296875 + median: 452.7726745605469 + min: 65.85784149169922 + percentile: [174.0293426513672, 329.2892150878906, 627.2955322265625, 864.3841552734375] + percentile_00_5: 174.0293426513672 + percentile_10_0: 329.2892150878906 + percentile_90_0: 627.2955322265625 + percentile_99_5: 864.3841552734375 + stdev: 123.80758666992188 + image_stats: + channels: 1 + cropped_shape: + - [38, 50, 38] + intensity: + - max: 3465.768798828125 + mean: 600.8885498046875 + median: 592.7205810546875 + min: 0.0 + percentile: [32.92892074584961, 205.80575561523438, 971.4031372070312, 1111.35107421875] + percentile_00_5: 32.92892074584961 + percentile_10_0: 205.80575561523438 + percentile_90_0: 971.4031372070312 + percentile_99_5: 1111.35107421875 + stdev: 286.33056640625 + shape: + - [38, 50, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_094.nii.gz + label_stats: + image_intensity: + - max: 1012.5643310546875 + mean: 467.91717529296875 + median: 452.7726745605469 + min: 65.85784149169922 + percentile: [174.0293426513672, 329.2892150878906, 627.2955322265625, 864.3841552734375] + percentile_00_5: 174.0293426513672 + percentile_10_0: 329.2892150878906 + percentile_90_0: 627.2955322265625 + percentile_99_5: 864.3841552734375 + stdev: 123.80758666992188 + label: + - image_intensity: + - max: 3465.768798828125 + mean: 608.747314453125 + median: 617.417236328125 + min: 0.0 + percentile: [32.92892074584961, 197.57351684570312, 979.6353759765625, 1111.35107421875] + percentile_00_5: 32.92892074584961 + percentile_10_0: 197.57351684570312 + percentile_90_0: 979.6353759765625 + percentile_99_5: 1111.35107421875 + stdev: 291.2352294921875 + ncomponents: 1 + pixel_percentage: 0.9441967010498047 + shape: + - [38, 50, 38] + - image_intensity: + - max: 839.6875 + mean: 471.2864990234375 + median: 461.0048828125 + min: 65.85784149169922 + percentile: [181.10906982421875, 337.52142333984375, 617.417236328125, 783.667724609375] + percentile_00_5: 181.10906982421875 + percentile_10_0: 337.52142333984375 + percentile_90_0: 617.417236328125 + percentile_99_5: 783.667724609375 + stdev: 112.70263671875 + ncomponents: 1 + pixel_percentage: 0.03271467983722687 + shape: + - [27, 17, 16] + - image_intensity: + - max: 1012.5643310546875 + mean: 463.1431579589844 + median: 436.3081970214844 + min: 107.01898956298828 + percentile: [172.8768310546875, 321.0569763183594, 658.5784301757812, 930.2420043945312] + percentile_00_5: 172.8768310546875 + percentile_10_0: 321.0569763183594 + percentile_90_0: 658.5784301757812 + percentile_99_5: 930.2420043945312 + stdev: 137.87994384765625 + ncomponents: 1 + pixel_percentage: 0.023088643327355385 + shape: + - [19, 22, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_376.nii.gz + image_foreground_stats: + intensity: + - max: 967.9932250976562 + mean: 400.4457092285156 + median: 384.4512023925781 + min: 13.730400085449219 + percentile: [116.02188110351562, 267.7427978515625, 549.2160034179688, 796.3632202148438] + percentile_00_5: 116.02188110351562 + percentile_10_0: 267.7427978515625 + percentile_90_0: 549.2160034179688 + percentile_99_5: 796.3632202148438 + stdev: 117.59393310546875 + image_stats: + channels: 1 + cropped_shape: + - [35, 55, 37] + intensity: + - max: 1482.8831787109375 + mean: 478.0411376953125 + median: 473.69879150390625 + min: 0.0 + percentile: [20.595600128173828, 151.03439331054688, 768.9024047851562, 885.6107788085938] + percentile_00_5: 20.595600128173828 + percentile_10_0: 151.03439331054688 + percentile_90_0: 768.9024047851562 + percentile_99_5: 885.6107788085938 + stdev: 227.5447540283203 + shape: + - [35, 55, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_376.nii.gz + label_stats: + image_intensity: + - max: 967.9932250976562 + mean: 400.4457092285156 + median: 384.4512023925781 + min: 13.730400085449219 + percentile: [116.02188110351562, 267.7427978515625, 549.2160034179688, 796.3632202148438] + percentile_00_5: 116.02188110351562 + percentile_10_0: 267.7427978515625 + percentile_90_0: 549.2160034179688 + percentile_99_5: 796.3632202148438 + stdev: 117.59393310546875 + label: + - image_intensity: + - max: 1482.8831787109375 + mean: 482.1489562988281 + median: 487.42919921875 + min: 0.0 + percentile: [20.595600128173828, 144.16920471191406, 775.767578125, 885.6107788085938] + percentile_00_5: 20.595600128173828 + percentile_10_0: 144.16920471191406 + percentile_90_0: 775.767578125 + percentile_99_5: 885.6107788085938 + stdev: 231.19241333007812 + ncomponents: 1 + pixel_percentage: 0.9497227072715759 + shape: + - [35, 55, 37] + - image_intensity: + - max: 967.9932250976562 + mean: 411.26983642578125 + median: 405.04681396484375 + min: 34.32600021362305 + percentile: [126.04507446289062, 288.3384094238281, 542.350830078125, 741.4415893554688] + percentile_00_5: 126.04507446289062 + percentile_10_0: 288.3384094238281 + percentile_90_0: 542.350830078125 + percentile_99_5: 741.4415893554688 + stdev: 106.14445495605469 + ncomponents: 1 + pixel_percentage: 0.022815022617578506 + shape: + - [22, 18, 17] + - image_intensity: + - max: 933.667236328125 + mean: 391.4532775878906 + median: 370.7207946777344 + min: 13.730400085449219 + percentile: [101.4333267211914, 254.0124053955078, 556.0811767578125, 811.6381225585938] + percentile_00_5: 101.4333267211914 + percentile_10_0: 254.0124053955078 + percentile_90_0: 556.0811767578125 + percentile_99_5: 811.6381225585938 + stdev: 125.61180877685547 + ncomponents: 1 + pixel_percentage: 0.027462268248200417 + shape: + - [21, 30, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_276.nii.gz + image_foreground_stats: + intensity: + - max: 908.9783935546875 + mean: 393.3091735839844 + median: 378.7409973144531 + min: 96.40679931640625 + percentile: [165.268798828125, 275.447998046875, 530.2374267578125, 750.5958251953125] + percentile_00_5: 165.268798828125 + percentile_10_0: 275.447998046875 + percentile_90_0: 530.2374267578125 + percentile_99_5: 750.5958251953125 + stdev: 106.16319274902344 + image_stats: + channels: 1 + cropped_shape: + - [35, 50, 33] + intensity: + - max: 2740.70751953125 + mean: 552.4967041015625 + median: 557.7822265625 + min: 0.0 + percentile: [41.31719970703125, 227.24459838867188, 874.54736328125, 1019.1575927734375] + percentile_00_5: 41.31719970703125 + percentile_10_0: 227.24459838867188 + percentile_90_0: 874.54736328125 + percentile_99_5: 1019.1575927734375 + stdev: 252.1583251953125 + shape: + - [35, 50, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_276.nii.gz + label_stats: + image_intensity: + - max: 908.9783935546875 + mean: 393.3091735839844 + median: 378.7409973144531 + min: 96.40679931640625 + percentile: [165.268798828125, 275.447998046875, 530.2374267578125, 750.5958251953125] + percentile_00_5: 165.268798828125 + percentile_10_0: 275.447998046875 + percentile_90_0: 530.2374267578125 + percentile_99_5: 750.5958251953125 + stdev: 106.16319274902344 + label: + - image_intensity: + - max: 2740.70751953125 + mean: 563.2147216796875 + median: 578.4407958984375 + min: 0.0 + percentile: [38.0806770324707, 220.3583984375, 881.43359375, 1026.0438232421875] + percentile_00_5: 38.0806770324707 + percentile_10_0: 220.3583984375 + percentile_90_0: 881.43359375 + percentile_99_5: 1026.0438232421875 + stdev: 255.50927734375 + ncomponents: 1 + pixel_percentage: 0.9369177222251892 + shape: + - [35, 50, 33] + - image_intensity: + - max: 771.25439453125 + mean: 385.650634765625 + median: 378.7409973144531 + min: 96.40679931640625 + percentile: [155.28379821777344, 268.5617980957031, 509.57879638671875, 659.1813354492188] + percentile_00_5: 155.28379821777344 + percentile_10_0: 268.5617980957031 + percentile_90_0: 509.57879638671875 + percentile_99_5: 659.1813354492188 + stdev: 97.20600891113281 + ncomponents: 1 + pixel_percentage: 0.03560173138976097 + shape: + - [24, 18, 14] + - image_intensity: + - max: 908.9783935546875 + mean: 403.2309875488281 + median: 385.627197265625 + min: 123.95159912109375 + percentile: [178.5591583251953, 275.447998046875, 550.89599609375, 798.7991943359375] + percentile_00_5: 178.5591583251953 + percentile_10_0: 275.447998046875 + percentile_90_0: 550.89599609375 + percentile_99_5: 798.7991943359375 + stdev: 116.00061798095703 + ncomponents: 1 + pixel_percentage: 0.02748052030801773 + shape: + - [20, 20, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_368.nii.gz + image_foreground_stats: + intensity: + - max: 1059.968017578125 + mean: 461.6390075683594 + median: 432.1407775878906 + min: 65.22879791259766 + percentile: [179.3791961669922, 301.6831970214844, 660.4415893554688, 937.6639404296875] + percentile_00_5: 179.3791961669922 + percentile_10_0: 301.6831970214844 + percentile_90_0: 660.4415893554688 + percentile_99_5: 937.6639404296875 + stdev: 144.5629119873047 + image_stats: + channels: 1 + cropped_shape: + - [38, 55, 40] + intensity: + - max: 3351.12939453125 + mean: 587.9408569335938 + median: 603.3663940429688 + min: 0.0 + percentile: [32.61439895629883, 195.6864013671875, 937.6639404296875, 1076.275146484375] + percentile_00_5: 32.61439895629883 + percentile_10_0: 195.6864013671875 + percentile_90_0: 937.6639404296875 + percentile_99_5: 1076.275146484375 + stdev: 281.3240051269531 + shape: + - [38, 55, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_368.nii.gz + label_stats: + image_intensity: + - max: 1059.968017578125 + mean: 461.6390075683594 + median: 432.1407775878906 + min: 65.22879791259766 + percentile: [179.3791961669922, 301.6831970214844, 660.4415893554688, 937.6639404296875] + percentile_00_5: 179.3791961669922 + percentile_10_0: 301.6831970214844 + percentile_90_0: 660.4415893554688 + percentile_99_5: 937.6639404296875 + stdev: 144.5629119873047 + label: + - image_intensity: + - max: 3351.12939453125 + mean: 594.9593505859375 + median: 619.673583984375 + min: 0.0 + percentile: [32.61439895629883, 187.5327911376953, 937.6639404296875, 1076.275146484375] + percentile_00_5: 32.61439895629883 + percentile_10_0: 187.5327911376953 + percentile_90_0: 937.6639404296875 + percentile_99_5: 1076.275146484375 + stdev: 285.3841247558594 + ncomponents: 1 + pixel_percentage: 0.9473564624786377 + shape: + - [38, 55, 40] + - image_intensity: + - max: 1019.199951171875 + mean: 467.2676696777344 + median: 448.447998046875 + min: 89.6895980834961 + percentile: [195.6864013671875, 309.8367919921875, 652.2879638671875, 847.974365234375] + percentile_00_5: 195.6864013671875 + percentile_10_0: 309.8367919921875 + percentile_90_0: 652.2879638671875 + percentile_99_5: 847.974365234375 + stdev: 133.03890991210938 + ncomponents: 1 + pixel_percentage: 0.031016746535897255 + shape: + - [25, 20, 18] + - image_intensity: + - max: 1059.968017578125 + mean: 453.5664978027344 + median: 415.8335876464844 + min: 65.22879791259766 + percentile: [163.07199096679688, 293.52960205078125, 684.9024047851562, 978.4319458007812] + percentile_00_5: 163.07199096679688 + percentile_10_0: 293.52960205078125 + percentile_90_0: 684.9024047851562 + percentile_99_5: 978.4319458007812 + stdev: 159.29815673828125 + ncomponents: 1 + pixel_percentage: 0.021626794710755348 + shape: + - [23, 26, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_268.nii.gz + image_foreground_stats: + intensity: + - max: 611.9229736328125 + mean: 296.7102966308594 + median: 292.179443359375 + min: 33.07691955566406 + percentile: [110.25639343261719, 194.60263061523438, 407.94866943359375, 545.7691650390625] + percentile_00_5: 110.25639343261719 + percentile_10_0: 194.60263061523438 + percentile_90_0: 407.94866943359375 + percentile_99_5: 545.7691650390625 + stdev: 84.40548706054688 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 37] + intensity: + - max: 1797.17919921875 + mean: 384.5379333496094 + median: 396.92303466796875 + min: 0.0 + percentile: [22.051279067993164, 143.33331298828125, 589.8717041015625, 716.6665649414062] + percentile_00_5: 22.051279067993164 + percentile_10_0: 143.33331298828125 + percentile_90_0: 589.8717041015625 + percentile_99_5: 716.6665649414062 + stdev: 168.31422424316406 + shape: + - [34, 51, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_268.nii.gz + label_stats: + image_intensity: + - max: 611.9229736328125 + mean: 296.7102966308594 + median: 292.179443359375 + min: 33.07691955566406 + percentile: [110.25639343261719, 194.60263061523438, 407.94866943359375, 545.7691650390625] + percentile_00_5: 110.25639343261719 + percentile_10_0: 194.60263061523438 + percentile_90_0: 407.94866943359375 + percentile_99_5: 545.7691650390625 + stdev: 84.40548706054688 + label: + - image_intensity: + - max: 1797.17919921875 + mean: 388.9276123046875 + median: 407.94866943359375 + min: 0.0 + percentile: [22.051279067993164, 137.82049560546875, 589.8717041015625, 716.6665649414062] + percentile_00_5: 22.051279067993164 + percentile_10_0: 137.82049560546875 + percentile_90_0: 589.8717041015625 + percentile_99_5: 716.6665649414062 + stdev: 170.2490234375 + ncomponents: 1 + pixel_percentage: 0.9523987770080566 + shape: + - [34, 51, 37] + - image_intensity: + - max: 611.9229736328125 + mean: 309.2166442871094 + median: 308.7178955078125 + min: 33.07691955566406 + percentile: [116.76152801513672, 201.7692413330078, 413.46148681640625, 555.8021850585938] + percentile_00_5: 116.76152801513672 + percentile_10_0: 201.7692413330078 + percentile_90_0: 413.46148681640625 + percentile_99_5: 555.8021850585938 + stdev: 83.9128646850586 + ncomponents: 1 + pixel_percentage: 0.022397831082344055 + shape: + - [19, 17, 13] + - image_intensity: + - max: 606.41015625 + mean: 285.59613037109375 + median: 275.6409912109375 + min: 66.15383911132812 + percentile: [110.25639343261719, 190.74359130859375, 402.43585205078125, 534.302734375] + percentile_00_5: 110.25639343261719 + percentile_10_0: 190.74359130859375 + percentile_90_0: 402.43585205078125 + percentile_99_5: 534.302734375 + stdev: 83.27933502197266 + ncomponents: 1 + pixel_percentage: 0.02520340494811535 + shape: + - [20, 23, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_215.nii.gz + image_foreground_stats: + intensity: + - max: 345890.1875 + mean: 155089.703125 + median: 147789.453125 + min: 22011.193359375 + percentile: [75466.953125, 110055.96875, 204389.65625, 305012.25] + percentile_00_5: 75466.953125 + percentile_10_0: 110055.96875 + percentile_90_0: 204389.65625 + percentile_99_5: 305012.25 + stdev: 40747.1015625 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 33] + intensity: + - max: 437079.4375 + mean: 205012.046875 + median: 207534.109375 + min: 0.0 + percentile: [9433.369140625, 78611.40625, 317590.09375, 364756.9375] + percentile_00_5: 9433.369140625 + percentile_10_0: 78611.40625 + percentile_90_0: 317590.09375 + percentile_99_5: 364756.9375 + stdev: 91081.3828125 + shape: + - [35, 49, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_215.nii.gz + label_stats: + image_intensity: + - max: 345890.1875 + mean: 155089.703125 + median: 147789.453125 + min: 22011.193359375 + percentile: [75466.953125, 110055.96875, 204389.65625, 305012.25] + percentile_00_5: 75466.953125 + percentile_10_0: 110055.96875 + percentile_90_0: 204389.65625 + percentile_99_5: 305012.25 + stdev: 40747.1015625 + label: + - image_intensity: + - max: 437079.4375 + mean: 208136.0625 + median: 216967.484375 + min: 0.0 + percentile: [9433.369140625, 75466.953125, 320734.53125, 364756.9375] + percentile_00_5: 9433.369140625 + percentile_10_0: 75466.953125 + percentile_90_0: 320734.53125 + percentile_99_5: 364756.9375 + stdev: 92440.96875 + ncomponents: 1 + pixel_percentage: 0.9411078691482544 + shape: + - [35, 49, 33] + - image_intensity: + - max: 273567.6875 + mean: 153207.734375 + median: 150933.90625 + min: 22011.193359375 + percentile: [72306.7734375, 113200.4296875, 198100.75, 254700.953125] + percentile_00_5: 72306.7734375 + percentile_10_0: 113200.4296875 + percentile_90_0: 198100.75 + percentile_99_5: 254700.953125 + stdev: 34370.2109375 + ncomponents: 1 + pixel_percentage: 0.02827104926109314 + shape: + - [22, 16, 14] + - image_intensity: + - max: 345890.1875 + mean: 156827.25 + median: 147789.453125 + min: 59744.66796875 + percentile: [75466.953125, 106911.515625, 213823.03125, 315514.625] + percentile_00_5: 75466.953125 + percentile_10_0: 106911.515625 + percentile_90_0: 213823.03125 + percentile_99_5: 315514.625 + stdev: 45785.2578125 + ncomponents: 1 + pixel_percentage: 0.030621079728007317 + shape: + - [22, 24, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_264.nii.gz + image_foreground_stats: + intensity: + - max: 110.0 + mean: 51.39745330810547 + median: 50.0 + min: 21.0 + percentile: [28.0, 38.0, 66.0, 92.0] + percentile_00_5: 28.0 + percentile_10_0: 38.0 + percentile_90_0: 66.0 + percentile_99_5: 92.0 + stdev: 11.848954200744629 + image_stats: + channels: 1 + cropped_shape: + - [38, 51, 37] + intensity: + - max: 205.0 + mean: 70.98143768310547 + median: 76.0 + min: 3.0 + percentile: [9.0, 31.0, 105.0, 119.0] + percentile_00_5: 9.0 + percentile_10_0: 31.0 + percentile_90_0: 105.0 + percentile_99_5: 119.0 + stdev: 28.70201873779297 + shape: + - [38, 51, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_264.nii.gz + label_stats: + image_intensity: + - max: 110.0 + mean: 51.39745330810547 + median: 50.0 + min: 21.0 + percentile: [28.0, 38.0, 66.0, 92.0] + percentile_00_5: 28.0 + percentile_10_0: 38.0 + percentile_90_0: 66.0 + percentile_99_5: 92.0 + stdev: 11.848954200744629 + label: + - image_intensity: + - max: 205.0 + mean: 72.09014892578125 + median: 79.0 + min: 3.0 + percentile: [9.0, 31.0, 105.0, 120.0] + percentile_00_5: 9.0 + percentile_10_0: 31.0 + percentile_90_0: 105.0 + percentile_99_5: 120.0 + stdev: 28.975051879882812 + ncomponents: 1 + pixel_percentage: 0.9464201331138611 + shape: + - [38, 51, 37] + - image_intensity: + - max: 98.0 + mean: 50.49379348754883 + median: 50.0 + min: 21.0 + percentile: [28.0, 37.0, 64.0, 84.3349609375] + percentile_00_5: 28.0 + percentile_10_0: 37.0 + percentile_90_0: 64.0 + percentile_99_5: 84.3349609375 + stdev: 11.094625473022461 + ncomponents: 1 + pixel_percentage: 0.0269712433218956 + shape: + - [24, 15, 16] + - image_intensity: + - max: 110.0 + mean: 52.31341552734375 + median: 51.0 + min: 24.0 + percentile: [29.0, 38.0, 68.0, 96.0] + percentile_00_5: 29.0 + percentile_10_0: 38.0 + percentile_90_0: 68.0 + percentile_99_5: 96.0 + stdev: 12.500955581665039 + ncomponents: 1 + pixel_percentage: 0.026608651503920555 + shape: + - [18, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_219.nii.gz + image_foreground_stats: + intensity: + - max: 98.0 + mean: 49.57526397705078 + median: 46.0 + min: 21.0 + percentile: [31.0, 39.0, 65.0, 92.85498046875] + percentile_00_5: 31.0 + percentile_10_0: 39.0 + percentile_90_0: 65.0 + percentile_99_5: 92.85498046875 + stdev: 11.454773902893066 + image_stats: + channels: 1 + cropped_shape: + - [37, 45, 39] + intensity: + - max: 182.0 + mean: 66.21170043945312 + median: 67.0 + min: 1.0 + percentile: [8.0, 31.0, 101.0, 115.0] + percentile_00_5: 8.0 + percentile_10_0: 31.0 + percentile_90_0: 101.0 + percentile_99_5: 115.0 + stdev: 26.79743003845215 + shape: + - [37, 45, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_219.nii.gz + label_stats: + image_intensity: + - max: 98.0 + mean: 49.57526397705078 + median: 46.0 + min: 21.0 + percentile: [31.0, 39.0, 65.0, 92.85498046875] + percentile_00_5: 31.0 + percentile_10_0: 39.0 + percentile_90_0: 65.0 + percentile_99_5: 92.85498046875 + stdev: 11.454773902893066 + label: + - image_intensity: + - max: 182.0 + mean: 66.96979522705078 + median: 69.0 + min: 1.0 + percentile: [8.0, 30.0, 101.0, 115.0] + percentile_00_5: 8.0 + percentile_10_0: 30.0 + percentile_90_0: 101.0 + percentile_99_5: 115.0 + stdev: 27.049198150634766 + ncomponents: 1 + pixel_percentage: 0.956417977809906 + shape: + - [37, 45, 39] + - image_intensity: + - max: 84.0 + mean: 47.689857482910156 + median: 46.0 + min: 21.0 + percentile: [29.0, 38.0, 60.0, 76.3150634765625] + percentile_00_5: 29.0 + percentile_10_0: 38.0 + percentile_90_0: 60.0 + percentile_99_5: 76.3150634765625 + stdev: 8.968484878540039 + ncomponents: 1 + pixel_percentage: 0.02368522435426712 + shape: + - [20, 15, 14] + - image_intensity: + - max: 98.0 + mean: 51.81965637207031 + median: 47.0 + min: 29.0 + percentile: [32.0, 40.0, 73.0, 95.0] + percentile_00_5: 32.0 + percentile_10_0: 40.0 + percentile_90_0: 73.0 + percentile_99_5: 95.0 + stdev: 13.505158424377441 + ncomponents: 1 + pixel_percentage: 0.019896820187568665 + shape: + - [15, 20, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_319.nii.gz + image_foreground_stats: + intensity: + - max: 78.0 + mean: 42.637489318847656 + median: 41.0 + min: 19.0 + percentile: [24.0, 32.0, 55.89990234375, 70.0] + percentile_00_5: 24.0 + percentile_10_0: 32.0 + percentile_90_0: 55.89990234375 + percentile_99_5: 70.0 + stdev: 9.186833381652832 + image_stats: + channels: 1 + cropped_shape: + - [33, 48, 34] + intensity: + - max: 113.0 + mean: 50.328189849853516 + median: 51.0 + min: 1.0 + percentile: [5.0, 14.0, 81.0, 95.0] + percentile_00_5: 5.0 + percentile_10_0: 14.0 + percentile_90_0: 81.0 + percentile_99_5: 95.0 + stdev: 24.18866539001465 + shape: + - [33, 48, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_319.nii.gz + label_stats: + image_intensity: + - max: 78.0 + mean: 42.637489318847656 + median: 41.0 + min: 19.0 + percentile: [24.0, 32.0, 55.89990234375, 70.0] + percentile_00_5: 24.0 + percentile_10_0: 32.0 + percentile_90_0: 55.89990234375 + percentile_99_5: 70.0 + stdev: 9.186833381652832 + label: + - image_intensity: + - max: 113.0 + mean: 50.69034194946289 + median: 52.0 + min: 1.0 + percentile: [5.0, 13.0, 82.0, 95.0] + percentile_00_5: 5.0 + percentile_10_0: 13.0 + percentile_90_0: 82.0 + percentile_99_5: 95.0 + stdev: 24.612041473388672 + ncomponents: 1 + pixel_percentage: 0.955028235912323 + shape: + - [33, 48, 34] + - image_intensity: + - max: 73.0 + mean: 42.25724792480469 + median: 41.0 + min: 19.0 + percentile: [22.895000457763672, 32.0, 54.0, 70.0] + percentile_00_5: 22.895000457763672 + percentile_10_0: 32.0 + percentile_90_0: 54.0 + percentile_99_5: 70.0 + stdev: 8.868511199951172 + ncomponents: 1 + pixel_percentage: 0.025623885914683342 + shape: + - [18, 16, 14] + - image_intensity: + - max: 78.0 + mean: 43.141075134277344 + median: 41.0 + min: 23.0 + percentile: [26.0, 32.0, 58.0, 70.7950439453125] + percentile_00_5: 26.0 + percentile_10_0: 32.0 + percentile_90_0: 58.0 + percentile_99_5: 70.7950439453125 + stdev: 9.568936347961426 + ncomponents: 1 + pixel_percentage: 0.019347891211509705 + shape: + - [12, 21, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_207.nii.gz + image_foreground_stats: + intensity: + - max: 425752.40625 + mean: 197159.171875 + median: 188123.15625 + min: 46205.6875 + percentile: [108913.40625, 148518.28125, 257431.6875, 382847.125] + percentile_00_5: 108913.40625 + percentile_10_0: 148518.28125 + percentile_90_0: 257431.6875 + percentile_99_5: 382847.125 + stdev: 48214.890625 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 33] + intensity: + - max: 544567.0 + mean: 255721.328125 + median: 250830.875 + min: 0.0 + percentile: [13201.625, 125415.4375, 396048.75, 452155.65625] + percentile_00_5: 13201.625 + percentile_10_0: 125415.4375 + percentile_90_0: 396048.75 + percentile_99_5: 452155.65625 + stdev: 104910.265625 + shape: + - [35, 53, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_207.nii.gz + label_stats: + image_intensity: + - max: 425752.40625 + mean: 197159.171875 + median: 188123.15625 + min: 46205.6875 + percentile: [108913.40625, 148518.28125, 257431.6875, 382847.125] + percentile_00_5: 108913.40625 + percentile_10_0: 148518.28125 + percentile_90_0: 257431.6875 + percentile_99_5: 382847.125 + stdev: 48214.890625 + label: + - image_intensity: + - max: 544567.0 + mean: 259896.640625 + median: 264032.5 + min: 0.0 + percentile: [13201.625, 122115.03125, 399349.15625, 452155.65625] + percentile_00_5: 13201.625 + percentile_10_0: 122115.03125 + percentile_90_0: 399349.15625 + percentile_99_5: 452155.65625 + stdev: 106598.2265625 + ncomponents: 1 + pixel_percentage: 0.9334476590156555 + shape: + - [35, 53, 33] + - image_intensity: + - max: 392748.34375 + mean: 196079.34375 + median: 188123.15625 + min: 95711.78125 + percentile: [112213.8125, 148518.28125, 250830.875, 333572.28125] + percentile_00_5: 112213.8125 + percentile_10_0: 148518.28125 + percentile_90_0: 250830.875 + percentile_99_5: 333572.28125 + stdev: 41706.93359375 + ncomponents: 1 + pixel_percentage: 0.03245936334133148 + shape: + - [23, 17, 15] + - image_intensity: + - max: 425752.40625 + mean: 198187.265625 + median: 184822.75 + min: 46205.6875 + percentile: [103731.765625, 145217.875, 270633.3125, 391329.40625] + percentile_00_5: 103731.765625 + percentile_10_0: 145217.875 + percentile_90_0: 270633.3125 + percentile_99_5: 391329.40625 + stdev: 53662.61328125 + ncomponents: 1 + pixel_percentage: 0.03409295156598091 + shape: + - [22, 26, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_067.nii.gz + image_foreground_stats: + intensity: + - max: 887.994384765625 + mean: 422.3365478515625 + median: 403.6337890625 + min: 100.908447265625 + percentile: [195.426025390625, 309.45257568359375, 565.0873413085938, 793.4765014648438] + percentile_00_5: 195.426025390625 + percentile_10_0: 309.45257568359375 + percentile_90_0: 565.0873413085938 + percentile_99_5: 793.4765014648438 + stdev: 106.90087127685547 + image_stats: + channels: 1 + cropped_shape: + - [36, 42, 41] + intensity: + - max: 1695.261962890625 + mean: 557.185302734375 + median: 565.0873413085938 + min: 0.0 + percentile: [26.908920288085938, 168.18075561523438, 887.994384765625, 1076.3568115234375] + percentile_00_5: 26.908920288085938 + percentile_10_0: 168.18075561523438 + percentile_90_0: 887.994384765625 + percentile_99_5: 1076.3568115234375 + stdev: 263.3102111816406 + shape: + - [36, 42, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_067.nii.gz + label_stats: + image_intensity: + - max: 887.994384765625 + mean: 422.3365478515625 + median: 403.6337890625 + min: 100.908447265625 + percentile: [195.426025390625, 309.45257568359375, 565.0873413085938, 793.4765014648438] + percentile_00_5: 195.426025390625 + percentile_10_0: 309.45257568359375 + percentile_90_0: 565.0873413085938 + percentile_99_5: 793.4765014648438 + stdev: 106.90087127685547 + label: + - image_intensity: + - max: 1695.261962890625 + mean: 563.5903930664062 + median: 585.26904296875 + min: 0.0 + percentile: [26.908920288085938, 161.45352172851562, 894.7216186523438, 1076.3568115234375] + percentile_00_5: 26.908920288085938 + percentile_10_0: 161.45352172851562 + percentile_90_0: 894.7216186523438 + percentile_99_5: 1076.3568115234375 + stdev: 266.7918701171875 + ncomponents: 1 + pixel_percentage: 0.9546554684638977 + shape: + - [36, 42, 41] + - image_intensity: + - max: 867.8126831054688 + mean: 419.8172302246094 + median: 403.6337890625 + min: 100.908447265625 + percentile: [192.39878845214844, 309.45257568359375, 551.6328735351562, 735.9591064453125] + percentile_00_5: 192.39878845214844 + percentile_10_0: 309.45257568359375 + percentile_90_0: 551.6328735351562 + percentile_99_5: 735.9591064453125 + stdev: 98.96995544433594 + ncomponents: 1 + pixel_percentage: 0.024535423144698143 + shape: + - [21, 14, 16] + - image_intensity: + - max: 887.994384765625 + mean: 425.3069763183594 + median: 403.6337890625 + min: 127.81736755371094 + percentile: [204.81051635742188, 309.45257568359375, 598.7234497070312, 808.00830078125] + percentile_00_5: 204.81051635742188 + percentile_10_0: 309.45257568359375 + percentile_90_0: 598.7234497070312 + percentile_99_5: 808.00830078125 + stdev: 115.4842300415039 + ncomponents: 1 + pixel_percentage: 0.02080913633108139 + shape: + - [17, 16, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_004.nii.gz + image_foreground_stats: + intensity: + - max: 792.5430297851562 + mean: 331.641357421875 + median: 315.8254089355469 + min: 53.63072967529297 + percentile: [137.05630493164062, 220.4818878173828, 464.7996520996094, 661.4456787109375] + percentile_00_5: 137.05630493164062 + percentile_10_0: 220.4818878173828 + percentile_90_0: 464.7996520996094 + percentile_99_5: 661.4456787109375 + stdev: 100.61515045166016 + image_stats: + channels: 1 + cropped_shape: + - [36, 52, 38] + intensity: + - max: 2252.49072265625 + mean: 453.8284912109375 + median: 458.8406982421875 + min: 0.0 + percentile: [23.835880279541016, 190.68704223632812, 697.1995239257812, 804.4609375] + percentile_00_5: 23.835880279541016 + percentile_10_0: 190.68704223632812 + percentile_90_0: 697.1995239257812 + percentile_99_5: 804.4609375 + stdev: 199.3611297607422 + shape: + - [36, 52, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_004.nii.gz + label_stats: + image_intensity: + - max: 792.5430297851562 + mean: 331.641357421875 + median: 315.8254089355469 + min: 53.63072967529297 + percentile: [137.05630493164062, 220.4818878173828, 464.7996520996094, 661.4456787109375] + percentile_00_5: 137.05630493164062 + percentile_10_0: 220.4818878173828 + percentile_90_0: 464.7996520996094 + percentile_99_5: 661.4456787109375 + stdev: 100.61515045166016 + label: + - image_intensity: + - max: 2252.49072265625 + mean: 460.5286865234375 + median: 476.71759033203125 + min: 0.0 + percentile: [23.835880279541016, 184.7280731201172, 703.158447265625, 810.419921875] + percentile_00_5: 23.835880279541016 + percentile_10_0: 184.7280731201172 + percentile_90_0: 703.158447265625 + percentile_99_5: 810.419921875 + stdev: 201.26002502441406 + ncomponents: 1 + pixel_percentage: 0.9480150938034058 + shape: + - [36, 52, 38] + - image_intensity: + - max: 792.5430297851562 + mean: 340.0125732421875 + median: 327.74334716796875 + min: 95.34352111816406 + percentile: [154.9332275390625, 226.44085693359375, 464.7996520996094, 678.3987426757812] + percentile_00_5: 154.9332275390625 + percentile_10_0: 226.44085693359375 + percentile_90_0: 464.7996520996094 + percentile_99_5: 678.3987426757812 + stdev: 97.28092193603516 + ncomponents: 1 + pixel_percentage: 0.025753486901521683 + shape: + - [23, 17, 15] + - image_intensity: + - max: 738.9122924804688 + mean: 323.422607421875 + median: 309.866455078125 + min: 53.63072967529297 + percentile: [125.13837432861328, 208.56394958496094, 464.7996520996094, 647.5913696289062] + percentile_00_5: 125.13837432861328 + percentile_10_0: 208.56394958496094 + percentile_90_0: 464.7996520996094 + percentile_99_5: 647.5913696289062 + stdev: 103.12550354003906 + ncomponents: 1 + pixel_percentage: 0.026231443509459496 + shape: + - [18, 25, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_104.nii.gz + image_foreground_stats: + intensity: + - max: 1228.1378173828125 + mean: 541.670166015625 + median: 509.2278747558594 + min: 59.90916442871094 + percentile: [239.63665771484375, 369.4398498535156, 758.849365234375, 1038.425537109375] + percentile_00_5: 239.63665771484375 + percentile_10_0: 369.4398498535156 + percentile_90_0: 758.849365234375 + percentile_99_5: 1038.425537109375 + stdev: 155.75082397460938 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 39] + intensity: + - max: 4702.869140625 + mean: 725.1312866210938 + median: 748.864501953125 + min: 0.0 + percentile: [39.9394416809082, 249.6215057373047, 1128.2891845703125, 1318.0015869140625] + percentile_00_5: 39.9394416809082 + percentile_10_0: 249.6215057373047 + percentile_90_0: 1128.2891845703125 + percentile_99_5: 1318.0015869140625 + stdev: 342.1481018066406 + shape: + - [35, 53, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_104.nii.gz + label_stats: + image_intensity: + - max: 1228.1378173828125 + mean: 541.670166015625 + median: 509.2278747558594 + min: 59.90916442871094 + percentile: [239.63665771484375, 369.4398498535156, 758.849365234375, 1038.425537109375] + percentile_00_5: 239.63665771484375 + percentile_10_0: 369.4398498535156 + percentile_90_0: 758.849365234375 + percentile_99_5: 1038.425537109375 + stdev: 155.75082397460938 + label: + - image_intensity: + - max: 4702.869140625 + mean: 735.3500366210938 + median: 768.834228515625 + min: 0.0 + percentile: [39.9394416809082, 249.6215057373047, 1138.2740478515625, 1318.0015869140625] + percentile_00_5: 39.9394416809082 + percentile_10_0: 249.6215057373047 + percentile_90_0: 1138.2740478515625 + percentile_99_5: 1318.0015869140625 + stdev: 346.77874755859375 + ncomponents: 1 + pixel_percentage: 0.9472389221191406 + shape: + - [35, 53, 39] + - image_intensity: + - max: 1228.1378173828125 + mean: 550.790283203125 + median: 529.1976318359375 + min: 59.90916442871094 + percentile: [220.6654052734375, 379.4246826171875, 758.849365234375, 1037.426025390625] + percentile_00_5: 220.6654052734375 + percentile_10_0: 379.4246826171875 + percentile_90_0: 758.849365234375 + percentile_99_5: 1037.426025390625 + stdev: 152.59054565429688 + ncomponents: 1 + pixel_percentage: 0.030700117349624634 + shape: + - [24, 20, 16] + - image_intensity: + - max: 1128.2891845703125 + mean: 528.9786376953125 + median: 489.2581481933594 + min: 209.68206787109375 + percentile: [249.37188720703125, 359.4549865722656, 758.849365234375, 1038.6754150390625] + percentile_00_5: 249.37188720703125 + percentile_10_0: 359.4549865722656 + percentile_90_0: 758.849365234375 + percentile_99_5: 1038.6754150390625 + stdev: 159.17767333984375 + ncomponents: 1 + pixel_percentage: 0.022060958668589592 + shape: + - [17, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_175.nii.gz + image_foreground_stats: + intensity: + - max: 716.4442749023438 + mean: 329.8396301269531 + median: 314.1332702636719 + min: 44.0888786315918 + percentile: [132.26663208007812, 231.46661376953125, 451.9110107421875, 628.2665405273438] + percentile_00_5: 132.26663208007812 + percentile_10_0: 231.46661376953125 + percentile_90_0: 451.9110107421875 + percentile_99_5: 628.2665405273438 + stdev: 88.54077911376953 + image_stats: + channels: 1 + cropped_shape: + - [33, 47, 35] + intensity: + - max: 1719.46630859375 + mean: 399.42352294921875 + median: 407.8221130371094 + min: 0.0 + percentile: [16.533329010009766, 88.1777572631836, 655.8220825195312, 760.5331420898438] + percentile_00_5: 16.533329010009766 + percentile_10_0: 88.1777572631836 + percentile_90_0: 655.8220825195312 + percentile_99_5: 760.5331420898438 + stdev: 205.19491577148438 + shape: + - [33, 47, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_175.nii.gz + label_stats: + image_intensity: + - max: 716.4442749023438 + mean: 329.8396301269531 + median: 314.1332702636719 + min: 44.0888786315918 + percentile: [132.26663208007812, 231.46661376953125, 451.9110107421875, 628.2665405273438] + percentile_00_5: 132.26663208007812 + percentile_10_0: 231.46661376953125 + percentile_90_0: 451.9110107421875 + percentile_99_5: 628.2665405273438 + stdev: 88.54077911376953 + label: + - image_intensity: + - max: 1719.46630859375 + mean: 403.12103271484375 + median: 418.8443603515625 + min: 0.0 + percentile: [16.533329010009766, 88.1777572631836, 661.3331909179688, 760.5331420898438] + percentile_00_5: 16.533329010009766 + percentile_10_0: 88.1777572631836 + percentile_90_0: 661.3331909179688 + percentile_99_5: 760.5331420898438 + stdev: 208.9372100830078 + ncomponents: 1 + pixel_percentage: 0.9495440721511841 + shape: + - [33, 47, 35] + - image_intensity: + - max: 650.3109741210938 + mean: 330.7120666503906 + median: 319.6443786621094 + min: 71.64442443847656 + percentile: [132.26663208007812, 242.48883056640625, 440.8887939453125, 584.1776123046875] + percentile_00_5: 132.26663208007812 + percentile_10_0: 242.48883056640625 + percentile_90_0: 440.8887939453125 + percentile_99_5: 584.1776123046875 + stdev: 82.25785827636719 + ncomponents: 1 + pixel_percentage: 0.029013538733124733 + shape: + - [20, 16, 14] + - image_intensity: + - max: 716.4442749023438 + mean: 328.6590881347656 + median: 314.1332702636719 + min: 44.0888786315918 + percentile: [136.7581787109375, 225.95550537109375, 462.9332275390625, 644.7998657226562] + percentile_00_5: 136.7581787109375 + percentile_10_0: 225.95550537109375 + percentile_90_0: 462.9332275390625 + percentile_99_5: 644.7998657226562 + stdev: 96.37982177734375 + ncomponents: 1 + pixel_percentage: 0.021442387253046036 + shape: + - [16, 21, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_075.nii.gz + image_foreground_stats: + intensity: + - max: 85.0 + mean: 44.38615417480469 + median: 42.0 + min: 24.0 + percentile: [28.0, 35.0, 58.0, 73.0] + percentile_00_5: 28.0 + percentile_10_0: 35.0 + percentile_90_0: 58.0 + percentile_99_5: 73.0 + stdev: 9.137447357177734 + image_stats: + channels: 1 + cropped_shape: + - [32, 47, 41] + intensity: + - max: 127.0 + mean: 60.36217498779297 + median: 62.0 + min: 1.0 + percentile: [8.0, 29.0, 91.0, 101.0] + percentile_00_5: 8.0 + percentile_10_0: 29.0 + percentile_90_0: 91.0 + percentile_99_5: 101.0 + stdev: 24.21053123474121 + shape: + - [32, 47, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_075.nii.gz + label_stats: + image_intensity: + - max: 85.0 + mean: 44.38615417480469 + median: 42.0 + min: 24.0 + percentile: [28.0, 35.0, 58.0, 73.0] + percentile_00_5: 28.0 + percentile_10_0: 35.0 + percentile_90_0: 58.0 + percentile_99_5: 73.0 + stdev: 9.137447357177734 + label: + - image_intensity: + - max: 127.0 + mean: 61.19291687011719 + median: 64.0 + min: 1.0 + percentile: [7.0, 28.0, 92.0, 101.0] + percentile_00_5: 7.0 + percentile_10_0: 28.0 + percentile_90_0: 92.0 + percentile_99_5: 101.0 + stdev: 24.460691452026367 + ncomponents: 1 + pixel_percentage: 0.950570821762085 + shape: + - [32, 47, 41] + - image_intensity: + - max: 77.0 + mean: 43.91898727416992 + median: 42.0 + min: 24.0 + percentile: [27.104999542236328, 34.0, 56.0, 70.0] + percentile_00_5: 27.104999542236328 + percentile_10_0: 34.0 + percentile_90_0: 56.0 + percentile_99_5: 70.0 + stdev: 8.929116249084473 + ncomponents: 1 + pixel_percentage: 0.01981707289814949 + shape: + - [19, 13, 14] + - image_intensity: + - max: 85.0 + mean: 44.698795318603516 + median: 42.0 + min: 25.0 + percentile: [28.0, 35.0, 58.0, 74.875] + percentile_00_5: 28.0 + percentile_10_0: 35.0 + percentile_90_0: 58.0 + percentile_99_5: 74.875 + stdev: 9.261101722717285 + ncomponents: 1 + pixel_percentage: 0.029612090438604355 + shape: + - [16, 22, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_108.nii.gz + image_foreground_stats: + intensity: + - max: 917.2496337890625 + mean: 359.63140869140625 + median: 345.8482360839844 + min: 37.59219741821289 + percentile: [97.73971557617188, 233.07164001464844, 511.25390625, 746.6181640625] + percentile_00_5: 97.73971557617188 + percentile_10_0: 233.07164001464844 + percentile_90_0: 511.25390625 + percentile_99_5: 746.6181640625 + stdev: 113.96183776855469 + image_stats: + channels: 1 + cropped_shape: + - [36, 53, 37] + intensity: + - max: 2834.451904296875 + mean: 487.1240539550781 + median: 466.1432800292969 + min: 0.0 + percentile: [30.073759078979492, 172.9241180419922, 811.9915161132812, 939.8049926757812] + percentile_00_5: 30.073759078979492 + percentile_10_0: 172.9241180419922 + percentile_90_0: 811.9915161132812 + percentile_99_5: 939.8049926757812 + stdev: 242.3692169189453 + shape: + - [36, 53, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_108.nii.gz + label_stats: + image_intensity: + - max: 917.2496337890625 + mean: 359.63140869140625 + median: 345.8482360839844 + min: 37.59219741821289 + percentile: [97.73971557617188, 233.07164001464844, 511.25390625, 746.6181640625] + percentile_00_5: 97.73971557617188 + percentile_10_0: 233.07164001464844 + percentile_90_0: 511.25390625 + percentile_99_5: 746.6181640625 + stdev: 113.96183776855469 + label: + - image_intensity: + - max: 2834.451904296875 + mean: 494.6600036621094 + median: 481.1801452636719 + min: 0.0 + percentile: [30.073759078979492, 165.40567016601562, 811.9915161132812, 939.8049926757812] + percentile_00_5: 30.073759078979492 + percentile_10_0: 165.40567016601562 + percentile_90_0: 811.9915161132812 + percentile_99_5: 939.8049926757812 + stdev: 245.8248291015625 + ncomponents: 1 + pixel_percentage: 0.9441894888877869 + shape: + - [36, 53, 37] + - image_intensity: + - max: 834.5468139648438 + mean: 370.3315124511719 + median: 360.8851013183594 + min: 67.66595458984375 + percentile: [145.03070068359375, 248.10850524902344, 518.7723388671875, 684.1780395507812] + percentile_00_5: 145.03070068359375 + percentile_10_0: 248.10850524902344 + percentile_90_0: 518.7723388671875 + percentile_99_5: 684.1780395507812 + stdev: 106.45022583007812 + ncomponents: 1 + pixel_percentage: 0.029165958985686302 + shape: + - [23, 16, 16] + - image_intensity: + - max: 917.2496337890625 + mean: 347.918701171875 + median: 330.81134033203125 + min: 37.59219741821289 + percentile: [88.71758270263672, 218.03475952148438, 496.2170104980469, 781.917724609375] + percentile_00_5: 88.71758270263672 + percentile_10_0: 218.03475952148438 + percentile_90_0: 496.2170104980469 + percentile_99_5: 781.917724609375 + stdev: 120.56993865966797 + ncomponents: 1 + pixel_percentage: 0.026644568890333176 + shape: + - [17, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_008.nii.gz + image_foreground_stats: + intensity: + - max: 829.3151245117188 + mean: 375.6250305175781 + median: 360.8470458984375 + min: 75.9677963256836 + percentile: [183.58885192871094, 265.8872985839844, 506.4519958496094, 747.0166625976562] + percentile_00_5: 183.58885192871094 + percentile_10_0: 265.8872985839844 + percentile_90_0: 506.4519958496094 + percentile_99_5: 747.0166625976562 + stdev: 101.09828186035156 + image_stats: + channels: 1 + cropped_shape: + - [36, 48, 40] + intensity: + - max: 3108.34912109375 + mean: 537.307861328125 + median: 538.105224609375 + min: 0.0 + percentile: [31.653249740600586, 196.25015258789062, 867.2990112304688, 993.9120483398438] + percentile_00_5: 31.653249740600586 + percentile_10_0: 196.25015258789062 + percentile_90_0: 867.2990112304688 + percentile_99_5: 993.9120483398438 + stdev: 253.15142822265625 + shape: + - [36, 48, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_008.nii.gz + label_stats: + image_intensity: + - max: 829.3151245117188 + mean: 375.6250305175781 + median: 360.8470458984375 + min: 75.9677963256836 + percentile: [183.58885192871094, 265.8872985839844, 506.4519958496094, 747.0166625976562] + percentile_00_5: 183.58885192871094 + percentile_10_0: 265.8872985839844 + percentile_90_0: 506.4519958496094 + percentile_99_5: 747.0166625976562 + stdev: 101.09828186035156 + label: + - image_intensity: + - max: 3108.34912109375 + mean: 545.2800903320312 + median: 563.4278564453125 + min: 0.0 + percentile: [31.653249740600586, 189.91949462890625, 867.2990112304688, 993.9120483398438] + percentile_00_5: 31.653249740600586 + percentile_10_0: 189.91949462890625 + percentile_90_0: 867.2990112304688 + percentile_99_5: 993.9120483398438 + stdev: 255.7128448486328 + ncomponents: 1 + pixel_percentage: 0.9530092477798462 + shape: + - [36, 48, 40] + - image_intensity: + - max: 759.677978515625 + mean: 378.6462097167969 + median: 367.1777038574219 + min: 75.9677963256836 + percentile: [170.92755126953125, 272.21795654296875, 500.121337890625, 679.7852172851562] + percentile_00_5: 170.92755126953125 + percentile_10_0: 272.21795654296875 + percentile_90_0: 500.121337890625 + percentile_99_5: 679.7852172851562 + stdev: 93.59558868408203 + ncomponents: 1 + pixel_percentage: 0.02495659701526165 + shape: + - [23, 16, 16] + - image_intensity: + - max: 829.3151245117188 + mean: 372.2031555175781 + median: 354.5163879394531 + min: 120.2823486328125 + percentile: [183.58885192871094, 253.2259979248047, 512.7826538085938, 778.669921875] + percentile_00_5: 183.58885192871094 + percentile_10_0: 253.2259979248047 + percentile_90_0: 512.7826538085938 + percentile_99_5: 778.669921875 + stdev: 108.87279510498047 + ncomponents: 1 + pixel_percentage: 0.022034144029021263 + shape: + - [18, 21, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_143.nii.gz + image_foreground_stats: + intensity: + - max: 86.0 + mean: 44.77972412109375 + median: 43.0 + min: 23.0 + percentile: [27.0, 34.0, 59.0, 77.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 59.0 + percentile_99_5: 77.0 + stdev: 9.985507011413574 + image_stats: + channels: 1 + cropped_shape: + - [32, 45, 41] + intensity: + - max: 167.0 + mean: 54.73966598510742 + median: 56.0 + min: 2.0 + percentile: [7.0, 23.0, 83.0, 101.0] + percentile_00_5: 7.0 + percentile_10_0: 23.0 + percentile_90_0: 83.0 + percentile_99_5: 101.0 + stdev: 22.32425880432129 + shape: + - [32, 45, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_143.nii.gz + label_stats: + image_intensity: + - max: 86.0 + mean: 44.77972412109375 + median: 43.0 + min: 23.0 + percentile: [27.0, 34.0, 59.0, 77.0] + percentile_00_5: 27.0 + percentile_10_0: 34.0 + percentile_90_0: 59.0 + percentile_99_5: 77.0 + stdev: 9.985507011413574 + label: + - image_intensity: + - max: 167.0 + mean: 55.16115188598633 + median: 57.0 + min: 2.0 + percentile: [7.0, 23.0, 83.0, 101.0] + percentile_00_5: 7.0 + percentile_10_0: 23.0 + percentile_90_0: 83.0 + percentile_99_5: 101.0 + stdev: 22.60237693786621 + ncomponents: 1 + pixel_percentage: 0.9594004154205322 + shape: + - [32, 45, 41] + - image_intensity: + - max: 85.0 + mean: 45.92204666137695 + median: 44.0 + min: 24.0 + percentile: [30.0, 36.0, 59.0, 74.080078125] + percentile_00_5: 30.0 + percentile_10_0: 36.0 + percentile_90_0: 59.0 + percentile_99_5: 74.080078125 + stdev: 9.206567764282227 + ncomponents: 1 + pixel_percentage: 0.020206639543175697 + shape: + - [20, 13, 14] + - image_intensity: + - max: 86.0 + mean: 43.6478385925293 + median: 41.0 + min: 23.0 + percentile: [26.0, 32.0, 59.0, 77.0] + percentile_00_5: 26.0 + percentile_10_0: 32.0 + percentile_90_0: 59.0 + percentile_99_5: 77.0 + stdev: 10.580599784851074 + ncomponents: 1 + pixel_percentage: 0.020392954349517822 + shape: + - [15, 19, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_389.nii.gz + image_foreground_stats: + intensity: + - max: 899.6135864257812 + mean: 421.47540283203125 + median: 407.738525390625 + min: 12.944080352783203 + percentile: [140.63743591308594, 295.12506103515625, 576.0115966796875, 802.532958984375] + percentile_00_5: 140.63743591308594 + percentile_10_0: 295.12506103515625 + percentile_90_0: 576.0115966796875 + percentile_99_5: 802.532958984375 + stdev: 115.85077667236328 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 32] + intensity: + - max: 1029.054443359375 + mean: 512.7587890625 + median: 524.2352294921875 + min: 0.0 + percentile: [19.416120529174805, 155.32896423339844, 815.47705078125, 925.5017700195312] + percentile_00_5: 19.416120529174805 + percentile_10_0: 155.32896423339844 + percentile_90_0: 815.47705078125 + percentile_99_5: 925.5017700195312 + stdev: 238.45184326171875 + shape: + - [34, 49, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_389.nii.gz + label_stats: + image_intensity: + - max: 899.6135864257812 + mean: 421.47540283203125 + median: 407.738525390625 + min: 12.944080352783203 + percentile: [140.63743591308594, 295.12506103515625, 576.0115966796875, 802.532958984375] + percentile_00_5: 140.63743591308594 + percentile_10_0: 295.12506103515625 + percentile_90_0: 576.0115966796875 + percentile_99_5: 802.532958984375 + stdev: 115.85077667236328 + label: + - image_intensity: + - max: 1029.054443359375 + mean: 518.1000366210938 + median: 537.1793212890625 + min: 0.0 + percentile: [19.416120529174805, 148.85691833496094, 821.9490966796875, 925.5017700195312] + percentile_00_5: 19.416120529174805 + percentile_10_0: 148.85691833496094 + percentile_90_0: 821.9490966796875 + percentile_99_5: 925.5017700195312 + stdev: 242.6620330810547 + ncomponents: 1 + pixel_percentage: 0.9447216391563416 + shape: + - [34, 49, 32] + - image_intensity: + - max: 815.47705078125 + mean: 414.0160217285156 + median: 407.738525390625 + min: 12.944080352783203 + percentile: [135.912841796875, 286.0641784667969, 563.0675048828125, 739.0426635742188] + percentile_00_5: 135.912841796875 + percentile_10_0: 286.0641784667969 + percentile_90_0: 563.0675048828125 + percentile_99_5: 739.0426635742188 + stdev: 109.82890319824219 + ncomponents: 1 + pixel_percentage: 0.03306947648525238 + shape: + - [22, 19, 13] + - image_intensity: + - max: 899.6135864257812 + mean: 432.5826110839844 + median: 407.738525390625 + min: 90.60856628417969 + percentile: [180.11688232421875, 310.6579284667969, 612.90185546875, 835.4430541992188] + percentile_00_5: 180.11688232421875 + percentile_10_0: 310.6579284667969 + percentile_90_0: 612.90185546875 + percentile_99_5: 835.4430541992188 + stdev: 123.44544982910156 + ncomponents: 1 + pixel_percentage: 0.022208884358406067 + shape: + - [19, 20, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_289.nii.gz + image_foreground_stats: + intensity: + - max: 714.804443359375 + mean: 324.47137451171875 + median: 317.69085693359375 + min: 72.80416107177734 + percentile: [112.51551818847656, 218.4124755859375, 443.4435119628906, 615.5260620117188] + percentile_00_5: 112.51551818847656 + percentile_10_0: 218.4124755859375 + percentile_90_0: 443.4435119628906 + percentile_99_5: 615.5260620117188 + stdev: 88.43072509765625 + image_stats: + channels: 1 + cropped_shape: + - [35, 49, 36] + intensity: + - max: 1370.0418701171875 + mean: 410.86346435546875 + median: 430.2063903808594 + min: 0.0 + percentile: [19.85567855834961, 119.13407897949219, 648.6188354492188, 767.7529296875] + percentile_00_5: 19.85567855834961 + percentile_10_0: 119.13407897949219 + percentile_90_0: 648.6188354492188 + percentile_99_5: 767.7529296875 + stdev: 192.081787109375 + shape: + - [35, 49, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_289.nii.gz + label_stats: + image_intensity: + - max: 714.804443359375 + mean: 324.47137451171875 + median: 317.69085693359375 + min: 72.80416107177734 + percentile: [112.51551818847656, 218.4124755859375, 443.4435119628906, 615.5260620117188] + percentile_00_5: 112.51551818847656 + percentile_10_0: 218.4124755859375 + percentile_90_0: 443.4435119628906 + percentile_99_5: 615.5260620117188 + stdev: 88.43072509765625 + label: + - image_intensity: + - max: 1370.0418701171875 + mean: 414.8724670410156 + median: 443.4435119628906 + min: 0.0 + percentile: [19.85567855834961, 119.13407897949219, 648.6188354492188, 767.7529296875] + percentile_00_5: 19.85567855834961 + percentile_10_0: 119.13407897949219 + percentile_90_0: 648.6188354492188 + percentile_99_5: 767.7529296875 + stdev: 194.63360595703125 + ncomponents: 1 + pixel_percentage: 0.9556527137756348 + shape: + - [35, 49, 36] + - image_intensity: + - max: 714.804443359375 + mean: 327.4534912109375 + median: 324.3094177246094 + min: 72.80416107177734 + percentile: [105.89695739746094, 211.79391479492188, 450.06207275390625, 628.76318359375] + percentile_00_5: 105.89695739746094 + percentile_10_0: 211.79391479492188 + percentile_90_0: 450.06207275390625 + percentile_99_5: 628.76318359375 + stdev: 95.04486083984375 + ncomponents: 1 + pixel_percentage: 0.02076449617743492 + shape: + - [18, 15, 13] + - image_intensity: + - max: 668.4745483398438 + mean: 321.8456726074219 + median: 311.07232666015625 + min: 92.65983581542969 + percentile: [138.98976135253906, 231.64959716796875, 430.2063903808594, 585.4113159179688] + percentile_00_5: 138.98976135253906 + percentile_10_0: 231.64959716796875 + percentile_90_0: 430.2063903808594 + percentile_99_5: 585.4113159179688 + stdev: 82.0777816772461 + ncomponents: 1 + pixel_percentage: 0.023582765832543373 + shape: + - [20, 22, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_297.nii.gz + image_foreground_stats: + intensity: + - max: 707.5706787109375 + mean: 374.0283203125 + median: 371.18463134765625 + min: 52.197837829589844 + percentile: [167.758056640625, 272.5887145996094, 481.38006591796875, 626.8087768554688] + percentile_00_5: 167.758056640625 + percentile_10_0: 272.5887145996094 + percentile_90_0: 481.38006591796875 + percentile_99_5: 626.8087768554688 + stdev: 84.728271484375 + image_stats: + channels: 1 + cropped_shape: + - [34, 51, 30] + intensity: + - max: 1844.3236083984375 + mean: 441.2764587402344 + median: 452.3812561035156 + min: 0.0 + percentile: [23.199039459228516, 144.99400329589844, 690.1714477539062, 782.9675903320312] + percentile_00_5: 23.199039459228516 + percentile_10_0: 144.99400329589844 + percentile_90_0: 690.1714477539062 + percentile_99_5: 782.9675903320312 + stdev: 198.39730834960938 + shape: + - [34, 51, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_297.nii.gz + label_stats: + image_intensity: + - max: 707.5706787109375 + mean: 374.0283203125 + median: 371.18463134765625 + min: 52.197837829589844 + percentile: [167.758056640625, 272.5887145996094, 481.38006591796875, 626.8087768554688] + percentile_00_5: 167.758056640625 + percentile_10_0: 272.5887145996094 + percentile_90_0: 481.38006591796875 + percentile_99_5: 626.8087768554688 + stdev: 84.728271484375 + label: + - image_intensity: + - max: 1844.3236083984375 + mean: 445.0818176269531 + median: 469.7805480957031 + min: 0.0 + percentile: [17.399280548095703, 139.19424438476562, 690.1714477539062, 782.9675903320312] + percentile_00_5: 17.399280548095703 + percentile_10_0: 139.19424438476562 + percentile_90_0: 690.1714477539062 + percentile_99_5: 782.9675903320312 + stdev: 202.2677001953125 + ncomponents: 1 + pixel_percentage: 0.9464436769485474 + shape: + - [34, 51, 30] + - image_intensity: + - max: 690.1714477539062 + mean: 365.3736267089844 + median: 359.5851135253906 + min: 52.197837829589844 + percentile: [162.39328002929688, 266.7889404296875, 475.580322265625, 604.625] + percentile_00_5: 162.39328002929688 + percentile_10_0: 266.7889404296875 + percentile_90_0: 475.580322265625 + percentile_99_5: 604.625 + stdev: 84.49751281738281 + ncomponents: 1 + pixel_percentage: 0.02981545589864254 + shape: + - [22, 18, 12] + - image_intensity: + - max: 707.5706787109375 + mean: 384.89739990234375 + median: 382.7841491699219 + min: 121.79496002197266 + percentile: [185.59231567382812, 284.188232421875, 492.9795837402344, 651.427978515625] + percentile_00_5: 185.59231567382812 + percentile_10_0: 284.188232421875 + percentile_90_0: 492.9795837402344 + percentile_99_5: 651.427978515625 + stdev: 83.75987243652344 + ncomponents: 1 + pixel_percentage: 0.023740869015455246 + shape: + - [21, 25, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_020.nii.gz + image_foreground_stats: + intensity: + - max: 1148.0921630859375 + mean: 528.3491821289062 + median: 502.2903137207031 + min: 17.938940048217773 + percentile: [161.45045471191406, 349.809326171875, 753.4354858398438, 1031.0401611328125] + percentile_00_5: 161.45045471191406 + percentile_10_0: 349.809326171875 + percentile_90_0: 753.4354858398438 + percentile_99_5: 1031.0401611328125 + stdev: 159.6353759765625 + image_stats: + channels: 1 + cropped_shape: + - [36, 46, 43] + intensity: + - max: 4215.65087890625 + mean: 724.6326293945312 + median: 762.4049682617188 + min: 0.0 + percentile: [35.87788009643555, 242.17568969726562, 1130.1531982421875, 1282.6341552734375] + percentile_00_5: 35.87788009643555 + percentile_10_0: 242.17568969726562 + percentile_90_0: 1130.1531982421875 + percentile_99_5: 1282.6341552734375 + stdev: 343.59283447265625 + shape: + - [36, 46, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_020.nii.gz + label_stats: + image_intensity: + - max: 1148.0921630859375 + mean: 528.3491821289062 + median: 502.2903137207031 + min: 17.938940048217773 + percentile: [161.45045471191406, 349.809326171875, 753.4354858398438, 1031.0401611328125] + percentile_00_5: 161.45045471191406 + percentile_10_0: 349.809326171875 + percentile_90_0: 753.4354858398438 + percentile_99_5: 1031.0401611328125 + stdev: 159.6353759765625 + label: + - image_intensity: + - max: 4215.65087890625 + mean: 735.1179809570312 + median: 789.3133544921875 + min: 0.0 + percentile: [35.87788009643555, 233.2062225341797, 1139.1226806640625, 1282.6341552734375] + percentile_00_5: 35.87788009643555 + percentile_10_0: 233.2062225341797 + percentile_90_0: 1139.1226806640625 + percentile_99_5: 1282.6341552734375 + stdev: 347.6106872558594 + ncomponents: 1 + pixel_percentage: 0.9492893815040588 + shape: + - [36, 46, 43] + - image_intensity: + - max: 1139.1226806640625 + mean: 532.0576171875 + median: 511.2597961425781 + min: 107.63363647460938 + percentile: [183.4256591796875, 358.77880859375, 753.4354858398438, 998.076904296875] + percentile_00_5: 183.4256591796875 + percentile_10_0: 358.77880859375 + percentile_90_0: 753.4354858398438 + percentile_99_5: 998.076904296875 + stdev: 155.65736389160156 + ncomponents: 1 + pixel_percentage: 0.030137063935399055 + shape: + - [26, 16, 17] + - image_intensity: + - max: 1148.0921630859375 + mean: 522.9169921875 + median: 502.2903137207031 + min: 17.938940048217773 + percentile: [131.3130340576172, 340.8398742675781, 744.4660034179688, 1064.4971923828125] + percentile_00_5: 131.3130340576172 + percentile_10_0: 340.8398742675781 + percentile_90_0: 744.4660034179688 + percentile_99_5: 1064.4971923828125 + stdev: 165.13955688476562 + ncomponents: 1 + pixel_percentage: 0.020573530346155167 + shape: + - [20, 18, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_051.nii.gz + image_foreground_stats: + intensity: + - max: 942.271240234375 + mean: 437.7868347167969 + median: 416.1697998046875 + min: 39.26129913330078 + percentile: [204.1587677001953, 306.2381591796875, 604.6240234375, 840.1918334960938] + percentile_00_5: 204.1587677001953 + percentile_10_0: 306.2381591796875 + percentile_90_0: 604.6240234375 + percentile_99_5: 840.1918334960938 + stdev: 123.5770034790039 + image_stats: + channels: 1 + cropped_shape: + - [33, 54, 39] + intensity: + - max: 2599.09814453125 + mean: 544.7484130859375 + median: 565.3627319335938 + min: 0.0 + percentile: [23.556779861450195, 172.74972534179688, 855.8963623046875, 1012.9415283203125] + percentile_00_5: 23.556779861450195 + percentile_10_0: 172.74972534179688 + percentile_90_0: 855.8963623046875 + percentile_99_5: 1012.9415283203125 + stdev: 249.5762176513672 + shape: + - [33, 54, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_051.nii.gz + label_stats: + image_intensity: + - max: 942.271240234375 + mean: 437.7868347167969 + median: 416.1697998046875 + min: 39.26129913330078 + percentile: [204.1587677001953, 306.2381591796875, 604.6240234375, 840.1918334960938] + percentile_00_5: 204.1587677001953 + percentile_10_0: 306.2381591796875 + percentile_90_0: 604.6240234375 + percentile_99_5: 840.1918334960938 + stdev: 123.5770034790039 + label: + - image_intensity: + - max: 2599.09814453125 + mean: 549.7574462890625 + median: 581.0672607421875 + min: 0.0 + percentile: [23.556779861450195, 164.8974609375, 855.8963623046875, 1012.9415283203125] + percentile_00_5: 23.556779861450195 + percentile_10_0: 164.8974609375 + percentile_90_0: 855.8963623046875 + percentile_99_5: 1012.9415283203125 + stdev: 252.84231567382812 + ncomponents: 1 + pixel_percentage: 0.9552649259567261 + shape: + - [33, 54, 39] + - image_intensity: + - max: 942.271240234375 + mean: 439.08648681640625 + median: 431.8742980957031 + min: 39.26129913330078 + percentile: [204.1587677001953, 314.09039306640625, 581.0672607421875, 783.6559448242188] + percentile_00_5: 204.1587677001953 + percentile_10_0: 314.09039306640625 + percentile_90_0: 581.0672607421875 + percentile_99_5: 783.6559448242188 + stdev: 108.94110107421875 + ncomponents: 1 + pixel_percentage: 0.021885521709918976 + shape: + - [20, 17, 14] + - image_intensity: + - max: 895.1576538085938 + mean: 436.5421447753906 + median: 400.46527099609375 + min: 157.04519653320312 + percentile: [204.1587677001953, 298.3858947753906, 643.8853149414062, 848.0440673828125] + percentile_00_5: 204.1587677001953 + percentile_10_0: 298.3858947753906 + percentile_90_0: 643.8853149414062 + percentile_99_5: 848.0440673828125 + stdev: 136.1162567138672 + ncomponents: 1 + pixel_percentage: 0.02284957841038704 + shape: + - [17, 26, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_132.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 41.21039581298828 + median: 39.0 + min: 15.0 + percentile: [22.0, 31.0, 54.0, 79.0] + percentile_00_5: 22.0 + percentile_10_0: 31.0 + percentile_90_0: 54.0 + percentile_99_5: 79.0 + stdev: 10.075538635253906 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 40] + intensity: + - max: 254.0 + mean: 57.5185432434082 + median: 57.0 + min: 2.0 + percentile: [7.0, 27.0, 89.0, 104.0] + percentile_00_5: 7.0 + percentile_10_0: 27.0 + percentile_90_0: 89.0 + percentile_99_5: 104.0 + stdev: 24.079421997070312 + shape: + - [36, 50, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_132.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 41.21039581298828 + median: 39.0 + min: 15.0 + percentile: [22.0, 31.0, 54.0, 79.0] + percentile_00_5: 22.0 + percentile_10_0: 31.0 + percentile_90_0: 54.0 + percentile_99_5: 79.0 + stdev: 10.075538635253906 + label: + - image_intensity: + - max: 254.0 + mean: 58.28971862792969 + median: 59.0 + min: 2.0 + percentile: [7.0, 26.0, 89.0, 104.0] + percentile_00_5: 7.0 + percentile_10_0: 26.0 + percentile_90_0: 89.0 + percentile_99_5: 104.0 + stdev: 24.274789810180664 + ncomponents: 1 + pixel_percentage: 0.9548472166061401 + shape: + - [36, 50, 40] + - image_intensity: + - max: 96.0 + mean: 41.609413146972656 + median: 41.0 + min: 15.0 + percentile: [19.0, 31.0, 53.0, 75.14501953125] + percentile_00_5: 19.0 + percentile_10_0: 31.0 + percentile_90_0: 53.0 + percentile_99_5: 75.14501953125 + stdev: 9.353878021240234 + ncomponents: 1 + pixel_percentage: 0.021833334118127823 + shape: + - [20, 17, 14] + - image_intensity: + - max: 86.0 + mean: 40.83680725097656 + median: 38.0 + min: 21.0 + percentile: [23.0, 30.0, 56.0, 81.0] + percentile_00_5: 23.0 + percentile_10_0: 30.0 + percentile_90_0: 56.0 + percentile_99_5: 81.0 + stdev: 10.693723678588867 + ncomponents: 1 + pixel_percentage: 0.023319443687796593 + shape: + - [18, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_385.nii.gz + image_foreground_stats: + intensity: + - max: 951.03759765625 + mean: 475.3195495605469 + median: 465.1059875488281 + min: 13.883760452270508 + percentile: [173.54701232910156, 347.0940246582031, 624.7692260742188, 839.967529296875] + percentile_00_5: 173.54701232910156 + percentile_10_0: 347.0940246582031 + percentile_90_0: 624.7692260742188 + percentile_99_5: 839.967529296875 + stdev: 116.3960952758789 + image_stats: + channels: 1 + cropped_shape: + - [35, 48, 40] + intensity: + - max: 2360.2392578125 + mean: 620.36181640625 + median: 631.7111206054688 + min: 0.0 + percentile: [34.67465591430664, 236.02392578125, 957.9794921875, 1117.6427001953125] + percentile_00_5: 34.67465591430664 + percentile_10_0: 236.02392578125 + percentile_90_0: 957.9794921875 + percentile_99_5: 1117.6427001953125 + stdev: 268.26898193359375 + shape: + - [35, 48, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_385.nii.gz + label_stats: + image_intensity: + - max: 951.03759765625 + mean: 475.3195495605469 + median: 465.1059875488281 + min: 13.883760452270508 + percentile: [173.54701232910156, 347.0940246582031, 624.7692260742188, 839.967529296875] + percentile_00_5: 173.54701232910156 + percentile_10_0: 347.0940246582031 + percentile_90_0: 624.7692260742188 + percentile_99_5: 839.967529296875 + stdev: 116.3960952758789 + label: + - image_intensity: + - max: 2360.2392578125 + mean: 628.0841674804688 + median: 652.5367431640625 + min: 0.0 + percentile: [27.767520904541016, 229.08204650878906, 957.9794921875, 1124.5845947265625] + percentile_00_5: 27.767520904541016 + percentile_10_0: 229.08204650878906 + percentile_90_0: 957.9794921875 + percentile_99_5: 1124.5845947265625 + stdev: 271.8436279296875 + ncomponents: 1 + pixel_percentage: 0.9494494199752808 + shape: + - [35, 48, 40] + - image_intensity: + - max: 951.03759765625 + mean: 470.7468566894531 + median: 465.1059875488281 + min: 27.767520904541016 + percentile: [156.6088104248047, 347.0940246582031, 610.8854370117188, 805.2581176757812] + percentile_00_5: 156.6088104248047 + percentile_10_0: 347.0940246582031 + percentile_90_0: 610.8854370117188 + percentile_99_5: 805.2581176757812 + stdev: 111.28771209716797 + ncomponents: 1 + pixel_percentage: 0.03144345059990883 + shape: + - [22, 17, 19] + - image_intensity: + - max: 944.095703125 + mean: 482.8445129394531 + median: 465.1059875488281 + min: 13.883760452270508 + percentile: [229.08204650878906, 347.0940246582031, 652.5367431640625, 889.740234375] + percentile_00_5: 229.08204650878906 + percentile_10_0: 347.0940246582031 + percentile_90_0: 652.5367431640625 + percentile_99_5: 889.740234375 + stdev: 123.98004913330078 + ncomponents: 1 + pixel_percentage: 0.019107142463326454 + shape: + - [19, 18, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_260.nii.gz + image_foreground_stats: + intensity: + - max: 856.9713134765625 + mean: 378.9545593261719 + median: 367.2734375 + min: 91.818359375 + percentile: [168.33364868164062, 267.80352783203125, 512.6524658203125, 703.9407348632812] + percentile_00_5: 168.33364868164062 + percentile_10_0: 267.80352783203125 + percentile_90_0: 512.6524658203125 + percentile_99_5: 703.9407348632812 + stdev: 100.29517364501953 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 29] + intensity: + - max: 1010.001953125 + mean: 473.0717468261719 + median: 482.04638671875 + min: 0.0 + percentile: [15.303059577941895, 114.77294921875, 772.8045043945312, 887.5774536132812] + percentile_00_5: 15.303059577941895 + percentile_10_0: 114.77294921875 + percentile_90_0: 772.8045043945312 + percentile_99_5: 887.5774536132812 + stdev: 241.12274169921875 + shape: + - [35, 53, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_260.nii.gz + label_stats: + image_intensity: + - max: 856.9713134765625 + mean: 378.9545593261719 + median: 367.2734375 + min: 91.818359375 + percentile: [168.33364868164062, 267.80352783203125, 512.6524658203125, 703.9407348632812] + percentile_00_5: 168.33364868164062 + percentile_10_0: 267.80352783203125 + percentile_90_0: 512.6524658203125 + percentile_99_5: 703.9407348632812 + stdev: 100.29517364501953 + label: + - image_intensity: + - max: 1010.001953125 + mean: 478.8211364746094 + median: 505.0009765625 + min: 0.0 + percentile: [15.303059577941895, 114.77294921875, 780.4560546875, 887.5774536132812] + percentile_00_5: 15.303059577941895 + percentile_10_0: 114.77294921875 + percentile_90_0: 780.4560546875 + percentile_99_5: 887.5774536132812 + stdev: 245.973876953125 + ncomponents: 1 + pixel_percentage: 0.9424296021461487 + shape: + - [35, 53, 29] + - image_intensity: + - max: 757.50146484375 + mean: 392.5639953613281 + median: 382.57647705078125 + min: 145.37905883789062 + percentile: [175.9851837158203, 283.1065979003906, 512.6524658203125, 665.68310546875] + percentile_00_5: 175.9851837158203 + percentile_10_0: 283.1065979003906 + percentile_90_0: 512.6524658203125 + percentile_99_5: 665.68310546875 + stdev: 93.32048797607422 + ncomponents: 1 + pixel_percentage: 0.02563435211777687 + shape: + - [20, 14, 11] + - image_intensity: + - max: 856.9713134765625 + mean: 368.03057861328125 + median: 351.9703674316406 + min: 91.818359375 + percentile: [160.68212890625, 252.50048828125, 512.6524658203125, 719.2437744140625] + percentile_00_5: 160.68212890625 + percentile_10_0: 252.50048828125 + percentile_90_0: 512.6524658203125 + percentile_99_5: 719.2437744140625 + stdev: 104.28356170654297 + ncomponents: 1 + pixel_percentage: 0.031936053186655045 + shape: + - [23, 26, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_360.nii.gz + image_foreground_stats: + intensity: + - max: 585.1136474609375 + mean: 273.99542236328125 + median: 261.1250915527344 + min: 19.342599868774414 + percentile: [82.20604705810547, 183.75469970703125, 386.85198974609375, 527.0858764648438] + percentile_00_5: 82.20604705810547 + percentile_10_0: 183.75469970703125 + percentile_90_0: 386.85198974609375 + percentile_99_5: 527.0858764648438 + stdev: 81.04881286621094 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 37] + intensity: + - max: 2272.75537109375 + mean: 360.275146484375 + median: 372.3450622558594 + min: 0.0 + percentile: [19.342599868774414, 130.5625457763672, 556.0997314453125, 652.812744140625] + percentile_00_5: 19.342599868774414 + percentile_10_0: 130.5625457763672 + percentile_90_0: 556.0997314453125 + percentile_99_5: 652.812744140625 + stdev: 164.23728942871094 + shape: + - [34, 49, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_360.nii.gz + label_stats: + image_intensity: + - max: 585.1136474609375 + mean: 273.99542236328125 + median: 261.1250915527344 + min: 19.342599868774414 + percentile: [82.20604705810547, 183.75469970703125, 386.85198974609375, 527.0858764648438] + percentile_00_5: 82.20604705810547 + percentile_10_0: 183.75469970703125 + percentile_90_0: 386.85198974609375 + percentile_99_5: 527.0858764648438 + stdev: 81.04881286621094 + label: + - image_intensity: + - max: 2272.75537109375 + mean: 364.58245849609375 + median: 382.016357421875 + min: 0.0 + percentile: [19.342599868774414, 125.72689819335938, 556.0997314453125, 652.812744140625] + percentile_00_5: 19.342599868774414 + percentile_10_0: 125.72689819335938 + percentile_90_0: 556.0997314453125 + percentile_99_5: 652.812744140625 + stdev: 166.13961791992188 + ncomponents: 1 + pixel_percentage: 0.952451229095459 + shape: + - [34, 49, 37] + - image_intensity: + - max: 585.1136474609375 + mean: 288.3284606933594 + median: 285.3033447265625 + min: 33.84954833984375 + percentile: [74.88004302978516, 193.42599487304688, 391.6876525878906, 539.24755859375] + percentile_00_5: 74.88004302978516 + percentile_10_0: 193.42599487304688 + percentile_90_0: 391.6876525878906 + percentile_99_5: 539.24755859375 + stdev: 80.30692291259766 + ncomponents: 1 + pixel_percentage: 0.021057071164250374 + shape: + - [19, 14, 14] + - image_intensity: + - max: 556.0997314453125 + mean: 262.60272216796875 + median: 246.61814880371094 + min: 19.342599868774414 + percentile: [87.8154067993164, 178.91905212402344, 372.3450622558594, 517.41455078125] + percentile_00_5: 87.8154067993164 + percentile_10_0: 178.91905212402344 + percentile_90_0: 372.3450622558594 + percentile_99_5: 517.41455078125 + stdev: 79.81839752197266 + ncomponents: 1 + pixel_percentage: 0.02649167738854885 + shape: + - [18, 24, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_203.nii.gz + image_foreground_stats: + intensity: + - max: 396839.8125 + mean: 174491.359375 + median: 169641.4375 + min: 12117.24609375 + percentile: [79155.9140625, 127231.0859375, 227198.359375, 354429.4375] + percentile_00_5: 79155.9140625 + percentile_10_0: 127231.0859375 + percentile_90_0: 227198.359375 + percentile_99_5: 354429.4375 + stdev: 44738.27734375 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 38] + intensity: + - max: 963321.0625 + mean: 226930.25 + median: 227198.359375 + min: 0.0 + percentile: [12117.24609375, 66644.8515625, 375634.625, 442279.46875] + percentile_00_5: 12117.24609375 + percentile_10_0: 66644.8515625 + percentile_90_0: 375634.625 + percentile_99_5: 442279.46875 + stdev: 110085.3515625 + shape: + - [34, 49, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_203.nii.gz + label_stats: + image_intensity: + - max: 396839.8125 + mean: 174491.359375 + median: 169641.4375 + min: 12117.24609375 + percentile: [79155.9140625, 127231.0859375, 227198.359375, 354429.4375] + percentile_00_5: 79155.9140625 + percentile_10_0: 127231.0859375 + percentile_90_0: 227198.359375 + percentile_99_5: 354429.4375 + stdev: 44738.27734375 + label: + - image_intensity: + - max: 963321.0625 + mean: 229381.359375 + median: 233256.984375 + min: 0.0 + percentile: [12117.24609375, 63615.54296875, 375634.625, 442279.46875] + percentile_00_5: 12117.24609375 + percentile_10_0: 63615.54296875 + percentile_90_0: 375634.625 + percentile_99_5: 442279.46875 + stdev: 111611.5859375 + ncomponents: 1 + pixel_percentage: 0.9553452730178833 + shape: + - [34, 49, 38] + - image_intensity: + - max: 315048.40625 + mean: 175886.671875 + median: 172670.75 + min: 12117.24609375 + percentile: [75732.7890625, 130260.3984375, 230227.671875, 288920.59375] + percentile_00_5: 75732.7890625 + percentile_10_0: 130260.3984375 + percentile_90_0: 230227.671875 + percentile_99_5: 288920.59375 + stdev: 40527.80859375 + ncomponents: 1 + pixel_percentage: 0.02410437911748886 + shape: + - [22, 16, 13] + - image_intensity: + - max: 396839.8125 + mean: 172854.703125 + median: 163582.828125 + min: 33322.42578125 + percentile: [87850.03125, 127231.0859375, 224169.046875, 374119.96875] + percentile_00_5: 87850.03125 + percentile_10_0: 127231.0859375 + percentile_90_0: 224169.046875 + percentile_99_5: 374119.96875 + stdev: 49169.6015625 + ncomponents: 1 + pixel_percentage: 0.020550325512886047 + shape: + - [20, 20, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_303.nii.gz + image_foreground_stats: + intensity: + - max: 862.768798828125 + mean: 387.2750549316406 + median: 365.58001708984375 + min: 73.11600494384766 + percentile: [186.18991088867188, 277.8408203125, 526.4352416992188, 757.0059204101562] + percentile_00_5: 186.18991088867188 + percentile_10_0: 277.8408203125 + percentile_90_0: 526.4352416992188 + percentile_99_5: 757.0059204101562 + stdev: 104.5514144897461 + image_stats: + channels: 1 + cropped_shape: + - [35, 48, 38] + intensity: + - max: 2559.06005859375 + mean: 544.05224609375 + median: 562.9932250976562 + min: 0.0 + percentile: [29.246400833129883, 226.65960693359375, 826.2108154296875, 950.508056640625] + percentile_00_5: 29.246400833129883 + percentile_10_0: 226.65960693359375 + percentile_90_0: 826.2108154296875 + percentile_99_5: 950.508056640625 + stdev: 232.74099731445312 + shape: + - [35, 48, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_303.nii.gz + label_stats: + image_intensity: + - max: 862.768798828125 + mean: 387.2750549316406 + median: 365.58001708984375 + min: 73.11600494384766 + percentile: [186.18991088867188, 277.8408203125, 526.4352416992188, 757.0059204101562] + percentile_00_5: 186.18991088867188 + percentile_10_0: 277.8408203125 + percentile_90_0: 526.4352416992188 + percentile_99_5: 757.0059204101562 + stdev: 104.5514144897461 + label: + - image_intensity: + - max: 2559.06005859375 + mean: 552.5816650390625 + median: 584.9280395507812 + min: 0.0 + percentile: [29.246400833129883, 219.34800720214844, 833.5223999023438, 950.508056640625] + percentile_00_5: 29.246400833129883 + percentile_10_0: 219.34800720214844 + percentile_90_0: 833.5223999023438 + percentile_99_5: 950.508056640625 + stdev: 234.75674438476562 + ncomponents: 1 + pixel_percentage: 0.9484022259712219 + shape: + - [35, 48, 38] + - image_intensity: + - max: 745.783203125 + mean: 386.12567138671875 + median: 365.58001708984375 + min: 73.11600494384766 + percentile: [166.59481811523438, 277.8408203125, 511.81201171875, 681.550537109375] + percentile_00_5: 166.59481811523438 + percentile_10_0: 277.8408203125 + percentile_90_0: 511.81201171875 + percentile_99_5: 681.550537109375 + stdev: 94.35441589355469 + ncomponents: 1 + pixel_percentage: 0.027537593618035316 + shape: + - [21, 16, 14] + - image_intensity: + - max: 862.768798828125 + mean: 388.59063720703125 + median: 358.2684020996094 + min: 160.85520935058594 + percentile: [209.66014099121094, 277.8408203125, 555.681640625, 799.34033203125] + percentile_00_5: 209.66014099121094 + percentile_10_0: 277.8408203125 + percentile_90_0: 555.681640625 + percentile_99_5: 799.34033203125 + stdev: 115.10491180419922 + ncomponents: 1 + pixel_percentage: 0.024060150608420372 + shape: + - [23, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_372.nii.gz + image_foreground_stats: + intensity: + - max: 912.9461669921875 + mean: 408.4577941894531 + median: 400.41497802734375 + min: 24.024898529052734 + percentile: [128.13279724121094, 272.2821960449219, 560.5809936523438, 725.4725952148438] + percentile_00_5: 128.13279724121094 + percentile_10_0: 272.2821960449219 + percentile_90_0: 560.5809936523438 + percentile_99_5: 725.4725952148438 + stdev: 113.02735137939453 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 34] + intensity: + - max: 1689.751220703125 + mean: 544.408203125 + median: 576.5975952148438 + min: 0.0 + percentile: [24.024898529052734, 176.18260192871094, 840.8714599609375, 944.9793701171875] + percentile_00_5: 24.024898529052734 + percentile_10_0: 176.18260192871094 + percentile_90_0: 840.8714599609375 + percentile_99_5: 944.9793701171875 + stdev: 246.838134765625 + shape: + - [36, 50, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_372.nii.gz + label_stats: + image_intensity: + - max: 912.9461669921875 + mean: 408.4577941894531 + median: 400.41497802734375 + min: 24.024898529052734 + percentile: [128.13279724121094, 272.2821960449219, 560.5809936523438, 725.4725952148438] + percentile_00_5: 128.13279724121094 + percentile_10_0: 272.2821960449219 + percentile_90_0: 560.5809936523438 + percentile_99_5: 725.4725952148438 + stdev: 113.02735137939453 + label: + - image_intensity: + - max: 1689.751220703125 + mean: 552.6123046875 + median: 600.6224975585938 + min: 0.0 + percentile: [24.024898529052734, 168.17430114746094, 848.8797607421875, 952.9876708984375] + percentile_00_5: 24.024898529052734 + percentile_10_0: 168.17430114746094 + percentile_90_0: 848.8797607421875 + percentile_99_5: 952.9876708984375 + stdev: 250.304443359375 + ncomponents: 1 + pixel_percentage: 0.9430882334709167 + shape: + - [36, 50, 34] + - image_intensity: + - max: 912.9461669921875 + mean: 417.93170166015625 + median: 408.42327880859375 + min: 72.07469940185547 + percentile: [136.14109802246094, 288.2987976074219, 560.5809936523438, 722.7490844726562] + percentile_00_5: 136.14109802246094 + percentile_10_0: 288.2987976074219 + percentile_90_0: 560.5809936523438 + percentile_99_5: 722.7490844726562 + stdev: 108.55440521240234 + ncomponents: 1 + pixel_percentage: 0.028611110523343086 + shape: + - [21, 16, 12] + - image_intensity: + - max: 912.9461669921875 + mean: 398.8799133300781 + median: 384.39837646484375 + min: 24.024898529052734 + percentile: [112.11619567871094, 264.2738952636719, 552.5726928710938, 723.5096435546875] + percentile_00_5: 112.11619567871094 + percentile_10_0: 264.2738952636719 + percentile_90_0: 552.5726928710938 + percentile_99_5: 723.5096435546875 + stdev: 116.5963134765625 + ncomponents: 1 + pixel_percentage: 0.028300654143095016 + shape: + - [22, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_311.nii.gz + image_foreground_stats: + intensity: + - max: 688.9992065429688 + mean: 315.7151184082031 + median: 305.71002197265625 + min: 67.94719696044922 + percentile: [135.89439392089844, 218.39422607421875, 426.94708251953125, 611.4200439453125] + percentile_00_5: 135.89439392089844 + percentile_10_0: 218.39422607421875 + percentile_90_0: 426.94708251953125 + percentile_99_5: 611.4200439453125 + stdev: 86.40185546875 + image_stats: + channels: 1 + cropped_shape: + - [37, 49, 37] + intensity: + - max: 2256.28662109375 + mean: 432.28594970703125 + median: 436.6837463378906 + min: 0.0 + percentile: [29.105270385742188, 194.1049346923828, 664.7098999023438, 786.0516967773438] + percentile_00_5: 29.105270385742188 + percentile_10_0: 194.1049346923828 + percentile_90_0: 664.7098999023438 + percentile_99_5: 786.0516967773438 + stdev: 179.66094970703125 + shape: + - [37, 49, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_311.nii.gz + label_stats: + image_intensity: + - max: 688.9992065429688 + mean: 315.7151184082031 + median: 305.71002197265625 + min: 67.94719696044922 + percentile: [135.89439392089844, 218.39422607421875, 426.94708251953125, 611.4200439453125] + percentile_00_5: 135.89439392089844 + percentile_10_0: 218.39422607421875 + percentile_90_0: 426.94708251953125 + percentile_99_5: 611.4200439453125 + stdev: 86.40185546875 + label: + - image_intensity: + - max: 2256.28662109375 + mean: 438.127197265625 + median: 451.23638916015625 + min: 0.0 + percentile: [29.105270385742188, 194.1049346923828, 664.7098999023438, 786.0516967773438] + percentile_00_5: 29.105270385742188 + percentile_10_0: 194.1049346923828 + percentile_90_0: 664.7098999023438 + percentile_99_5: 786.0516967773438 + stdev: 181.12527465820312 + ncomponents: 1 + pixel_percentage: 0.9522815942764282 + shape: + - [37, 49, 37] + - image_intensity: + - max: 664.7098999023438 + mean: 317.62615966796875 + median: 305.71002197265625 + min: 72.76317596435547 + percentile: [126.1577377319336, 223.210205078125, 422.131103515625, 617.1031494140625] + percentile_00_5: 126.1577377319336 + percentile_10_0: 223.210205078125 + percentile_90_0: 422.131103515625 + percentile_99_5: 617.1031494140625 + stdev: 83.84825134277344 + ncomponents: 1 + pixel_percentage: 0.023330004885792732 + shape: + - [24, 17, 13] + - image_intensity: + - max: 688.9992065429688 + mean: 313.88702392578125 + median: 300.78936767578125 + min: 67.94719696044922 + percentile: [141.5531768798828, 218.39422607421875, 436.6837463378906, 599.97900390625] + percentile_00_5: 141.5531768798828 + percentile_10_0: 218.39422607421875 + percentile_90_0: 436.6837463378906 + percentile_99_5: 599.97900390625 + stdev: 88.73741912841797 + ncomponents: 1 + pixel_percentage: 0.024388425052165985 + shape: + - [22, 22, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_244.nii.gz + image_foreground_stats: + intensity: + - max: 928.0859985351562 + mean: 366.7692565917969 + median: 348.8550109863281 + min: 26.32868003845215 + percentile: [98.73255157470703, 243.540283203125, 526.5736083984375, 756.9495239257812] + percentile_00_5: 98.73255157470703 + percentile_10_0: 243.540283203125 + percentile_90_0: 526.5736083984375 + percentile_99_5: 756.9495239257812 + stdev: 119.13725280761719 + image_stats: + channels: 1 + cropped_shape: + - [38, 53, 30] + intensity: + - max: 2270.8486328125 + mean: 474.25836181640625 + median: 487.08056640625 + min: 0.0 + percentile: [19.746509552001953, 125.06123352050781, 770.1138916015625, 901.7572631835938] + percentile_00_5: 19.746509552001953 + percentile_10_0: 125.06123352050781 + percentile_90_0: 770.1138916015625 + percentile_99_5: 901.7572631835938 + stdev: 243.93109130859375 + shape: + - [38, 53, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_244.nii.gz + label_stats: + image_intensity: + - max: 928.0859985351562 + mean: 366.7692565917969 + median: 348.8550109863281 + min: 26.32868003845215 + percentile: [98.73255157470703, 243.540283203125, 526.5736083984375, 756.9495239257812] + percentile_00_5: 98.73255157470703 + percentile_10_0: 243.540283203125 + percentile_90_0: 526.5736083984375 + percentile_99_5: 756.9495239257812 + stdev: 119.13725280761719 + label: + - image_intensity: + - max: 2270.8486328125 + mean: 480.2854309082031 + median: 506.82708740234375 + min: 0.0 + percentile: [19.746509552001953, 118.47905731201172, 776.696044921875, 901.7572631835938] + percentile_00_5: 19.746509552001953 + percentile_10_0: 118.47905731201172 + percentile_90_0: 776.696044921875 + percentile_99_5: 901.7572631835938 + stdev: 247.7069854736328 + ncomponents: 1 + pixel_percentage: 0.9469050168991089 + shape: + - [38, 53, 30] + - image_intensity: + - max: 796.4425659179688 + mean: 366.6893005371094 + median: 348.8550109863281 + min: 26.32868003845215 + percentile: [85.56820678710938, 243.540283203125, 519.991455078125, 750.6309204101562] + percentile_00_5: 85.56820678710938 + percentile_10_0: 243.540283203125 + percentile_90_0: 519.991455078125 + percentile_99_5: 750.6309204101562 + stdev: 117.12779235839844 + ncomponents: 1 + pixel_percentage: 0.028086725622415543 + shape: + - [23, 17, 13] + - image_intensity: + - max: 928.0859985351562 + mean: 366.85906982421875 + median: 342.2728271484375 + min: 32.910850524902344 + percentile: [135.2635955810547, 236.95811462402344, 533.15576171875, 759.9111938476562] + percentile_00_5: 135.2635955810547 + percentile_10_0: 236.95811462402344 + percentile_90_0: 533.15576171875 + percentile_99_5: 759.9111938476562 + stdev: 121.35433959960938 + ncomponents: 1 + pixel_percentage: 0.025008276104927063 + shape: + - [24, 25, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_327.nii.gz + image_foreground_stats: + intensity: + - max: 354205.1875 + mean: 174695.921875 + median: 171735.859375 + min: 25044.8125 + percentile: [82290.09375, 125224.0625, 228981.140625, 304115.5625] + percentile_00_5: 82290.09375 + percentile_10_0: 125224.0625 + percentile_90_0: 228981.140625 + percentile_99_5: 304115.5625 + stdev: 41257.609375 + image_stats: + channels: 1 + cropped_shape: + - [36, 54, 27] + intensity: + - max: 536674.5625 + mean: 209496.578125 + median: 207514.15625 + min: 0.0 + percentile: [7155.66064453125, 71556.609375, 329160.375, 372094.34375] + percentile_00_5: 7155.66064453125 + percentile_10_0: 71556.609375 + percentile_90_0: 329160.375 + percentile_99_5: 372094.34375 + stdev: 95244.6875 + shape: + - [36, 54, 27] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_327.nii.gz + label_stats: + image_intensity: + - max: 354205.1875 + mean: 174695.921875 + median: 171735.859375 + min: 25044.8125 + percentile: [82290.09375, 125224.0625, 228981.140625, 304115.5625] + percentile_00_5: 82290.09375 + percentile_10_0: 125224.0625 + percentile_90_0: 228981.140625 + percentile_99_5: 304115.5625 + stdev: 41257.609375 + label: + - image_intensity: + - max: 536674.5625 + mean: 212092.125 + median: 218247.65625 + min: 0.0 + percentile: [7155.66064453125, 67978.7734375, 332738.21875, 372094.34375] + percentile_00_5: 7155.66064453125 + percentile_10_0: 67978.7734375 + percentile_90_0: 332738.21875 + percentile_99_5: 372094.34375 + stdev: 97591.578125 + ncomponents: 1 + pixel_percentage: 0.9305936694145203 + shape: + - [36, 54, 27] + - image_intensity: + - max: 347049.53125 + mean: 177213.765625 + median: 171735.859375 + min: 25044.8125 + percentile: [78712.265625, 128801.890625, 232558.96875, 293382.09375] + percentile_00_5: 78712.265625 + percentile_10_0: 128801.890625 + percentile_90_0: 232558.96875 + percentile_99_5: 293382.09375 + stdev: 41064.06640625 + ncomponents: 1 + pixel_percentage: 0.03985672816634178 + shape: + - [24, 19, 11] + - image_intensity: + - max: 354205.1875 + mean: 171299.859375 + median: 164580.1875 + min: 57245.28515625 + percentile: [85867.9296875, 125224.0625, 225403.3125, 305010.03125] + percentile_00_5: 85867.9296875 + percentile_10_0: 125224.0625 + percentile_90_0: 225403.3125 + percentile_99_5: 305010.03125 + stdev: 41274.6484375 + ncomponents: 1 + pixel_percentage: 0.0295496117323637 + shape: + - [21, 22, 14] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_190.nii.gz + image_foreground_stats: + intensity: + - max: 413560.90625 + mean: 190916.28125 + median: 185613.953125 + min: 48845.7734375 + percentile: [91178.78125, 136768.171875, 250741.640625, 354945.96875] + percentile_00_5: 91178.78125 + percentile_10_0: 136768.171875 + percentile_90_0: 250741.640625 + percentile_99_5: 354945.96875 + stdev: 46336.0 + image_stats: + channels: 1 + cropped_shape: + - [37, 52, 30] + intensity: + - max: 1165785.875 + mean: 259422.734375 + median: 263767.1875 + min: 0.0 + percentile: [13025.5400390625, 100947.9375, 403791.75, 465663.0625] + percentile_00_5: 13025.5400390625 + percentile_10_0: 100947.9375 + percentile_90_0: 403791.75 + percentile_99_5: 465663.0625 + stdev: 116509.9921875 + shape: + - [37, 52, 30] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_190.nii.gz + label_stats: + image_intensity: + - max: 413560.90625 + mean: 190916.28125 + median: 185613.953125 + min: 48845.7734375 + percentile: [91178.78125, 136768.171875, 250741.640625, 354945.96875] + percentile_00_5: 91178.78125 + percentile_10_0: 136768.171875 + percentile_90_0: 250741.640625 + percentile_99_5: 354945.96875 + stdev: 46336.0 + label: + - image_intensity: + - max: 1165785.875 + mean: 263588.9375 + median: 273536.34375 + min: 0.0 + percentile: [13025.5400390625, 94435.1640625, 403791.75, 468919.4375] + percentile_00_5: 13025.5400390625 + percentile_10_0: 94435.1640625 + percentile_90_0: 403791.75 + percentile_99_5: 468919.4375 + stdev: 118181.109375 + ncomponents: 1 + pixel_percentage: 0.942671537399292 + shape: + - [37, 52, 30] + - image_intensity: + - max: 341920.4375 + mean: 188068.46875 + median: 185613.953125 + min: 48845.7734375 + percentile: [85708.0546875, 136768.171875, 244228.875, 296331.03125] + percentile_00_5: 85708.0546875 + percentile_10_0: 136768.171875 + percentile_90_0: 244228.875 + percentile_99_5: 296331.03125 + stdev: 41565.2421875 + ncomponents: 1 + pixel_percentage: 0.028846153989434242 + shape: + - [21, 17, 13] + - image_intensity: + - max: 413560.90625 + mean: 193800.46875 + median: 185613.953125 + min: 78153.2421875 + percentile: [104904.4453125, 140024.5625, 260510.796875, 364715.125] + percentile_00_5: 104904.4453125 + percentile_10_0: 140024.5625 + percentile_90_0: 260510.796875 + percentile_99_5: 364715.125 + stdev: 50549.03515625 + ncomponents: 1 + pixel_percentage: 0.028482329100370407 + shape: + - [19, 25, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_227.nii.gz + image_foreground_stats: + intensity: + - max: 945.2041625976562 + mean: 461.8701477050781 + median: 446.3464050292969 + min: 35.00756072998047 + percentile: [207.20098876953125, 332.57183837890625, 612.63232421875, 813.92578125] + percentile_00_5: 207.20098876953125 + percentile_10_0: 332.57183837890625 + percentile_90_0: 612.63232421875 + percentile_99_5: 813.92578125 + stdev: 110.96717834472656 + image_stats: + channels: 1 + cropped_shape: + - [36, 47, 36] + intensity: + - max: 1907.912109375 + mean: 573.5119018554688 + median: 586.3766479492188 + min: 0.0 + percentile: [22.36101531982422, 157.53402709960938, 918.948486328125, 1032.7230224609375] + percentile_00_5: 22.36101531982422 + percentile_10_0: 157.53402709960938 + percentile_90_0: 918.948486328125 + percentile_99_5: 1032.7230224609375 + stdev: 271.0556640625 + shape: + - [36, 47, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_227.nii.gz + label_stats: + image_intensity: + - max: 945.2041625976562 + mean: 461.8701477050781 + median: 446.3464050292969 + min: 35.00756072998047 + percentile: [207.20098876953125, 332.57183837890625, 612.63232421875, 813.92578125] + percentile_00_5: 207.20098876953125 + percentile_10_0: 332.57183837890625 + percentile_90_0: 612.63232421875 + percentile_99_5: 813.92578125 + stdev: 110.96717834472656 + label: + - image_intensity: + - max: 1907.912109375 + mean: 580.3922119140625 + median: 612.63232421875 + min: 0.0 + percentile: [17.503780364990234, 148.78213500976562, 918.948486328125, 1041.4749755859375] + percentile_00_5: 17.503780364990234 + percentile_10_0: 148.78213500976562 + percentile_90_0: 918.948486328125 + percentile_99_5: 1041.4749755859375 + stdev: 276.4502868652344 + ncomponents: 1 + pixel_percentage: 0.9419490694999695 + shape: + - [36, 47, 36] + - image_intensity: + - max: 840.1814575195312 + mean: 453.2408752441406 + median: 446.3464050292969 + min: 35.00756072998047 + percentile: [201.29347229003906, 332.57183837890625, 603.8804321289062, 762.3770141601562] + percentile_00_5: 201.29347229003906 + percentile_10_0: 332.57183837890625 + percentile_90_0: 603.8804321289062 + percentile_99_5: 762.3770141601562 + stdev: 105.2293930053711 + ncomponents: 1 + pixel_percentage: 0.03248949348926544 + shape: + - [24, 16, 15] + - image_intensity: + - max: 945.2041625976562 + mean: 472.8381652832031 + median: 463.8501892089844 + min: 52.5113410949707 + percentile: [216.87184143066406, 341.32373046875, 621.3842163085938, 866.4371337890625] + percentile_00_5: 216.87184143066406 + percentile_10_0: 341.32373046875 + percentile_90_0: 621.3842163085938 + percentile_99_5: 866.4371337890625 + stdev: 116.94219970703125 + ncomponents: 1 + pixel_percentage: 0.025561464950442314 + shape: + - [20, 21, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_090.nii.gz + image_foreground_stats: + intensity: + - max: 797.0291748046875 + mean: 370.7160949707031 + median: 356.2478942871094 + min: 30.19049835205078 + percentile: [144.91439819335938, 247.5620880126953, 519.2765502929688, 700.4195556640625] + percentile_00_5: 144.91439819335938 + percentile_10_0: 247.5620880126953 + percentile_90_0: 519.2765502929688 + percentile_99_5: 700.4195556640625 + stdev: 106.4747543334961 + image_stats: + channels: 1 + cropped_shape: + - [37, 50, 40] + intensity: + - max: 2294.47802734375 + mean: 514.8211059570312 + median: 543.428955078125 + min: 0.0 + percentile: [30.19049835205078, 205.29539489746094, 784.9529418945312, 899.6768798828125] + percentile_00_5: 30.19049835205078 + percentile_10_0: 205.29539489746094 + percentile_90_0: 784.9529418945312 + percentile_99_5: 899.6768798828125 + stdev: 223.40023803710938 + shape: + - [37, 50, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_090.nii.gz + label_stats: + image_intensity: + - max: 797.0291748046875 + mean: 370.7160949707031 + median: 356.2478942871094 + min: 30.19049835205078 + percentile: [144.91439819335938, 247.5620880126953, 519.2765502929688, 700.4195556640625] + percentile_00_5: 144.91439819335938 + percentile_10_0: 247.5620880126953 + percentile_90_0: 519.2765502929688 + percentile_99_5: 700.4195556640625 + stdev: 106.4747543334961 + label: + - image_intensity: + - max: 2294.47802734375 + mean: 523.057861328125 + median: 561.5432739257812 + min: 0.0 + percentile: [30.19049835205078, 205.29539489746094, 790.9910888671875, 905.7149658203125] + percentile_00_5: 30.19049835205078 + percentile_10_0: 205.29539489746094 + percentile_90_0: 790.9910888671875 + percentile_99_5: 905.7149658203125 + stdev: 225.5160675048828 + ncomponents: 1 + pixel_percentage: 0.9459324479103088 + shape: + - [37, 50, 40] + - image_intensity: + - max: 797.0291748046875 + mean: 384.75457763671875 + median: 374.3621826171875 + min: 30.19049835205078 + percentile: [164.32687377929688, 265.6763916015625, 531.352783203125, 694.3814697265625] + percentile_00_5: 164.32687377929688 + percentile_10_0: 265.6763916015625 + percentile_90_0: 531.352783203125 + percentile_99_5: 694.3814697265625 + stdev: 103.74689483642578 + ncomponents: 1 + pixel_percentage: 0.027621621266007423 + shape: + - [24, 17, 16] + - image_intensity: + - max: 772.8767700195312 + mean: 356.05352783203125 + median: 338.1335754394531 + min: 84.53339385986328 + percentile: [136.2195281982422, 235.4858856201172, 501.16229248046875, 701.7477416992188] + percentile_00_5: 136.2195281982422 + percentile_10_0: 235.4858856201172 + percentile_90_0: 501.16229248046875 + percentile_99_5: 701.7477416992188 + stdev: 107.30791473388672 + ncomponents: 1 + pixel_percentage: 0.026445945724844933 + shape: + - [19, 21, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_356.nii.gz + image_foreground_stats: + intensity: + - max: 1125.0599365234375 + mean: 494.73101806640625 + median: 481.11114501953125 + min: 22.205129623413086 + percentile: [255.1739501953125, 355.2820739746094, 651.3504638671875, 873.4017944335938] + percentile_00_5: 255.1739501953125 + percentile_10_0: 355.2820739746094 + percentile_90_0: 651.3504638671875 + percentile_99_5: 873.4017944335938 + stdev: 118.4688720703125 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 37] + intensity: + - max: 3789.675537109375 + mean: 688.1344604492188 + median: 695.7607421875 + min: 0.0 + percentile: [44.41025924682617, 310.871826171875, 1073.2479248046875, 1236.0855712890625] + percentile_00_5: 44.41025924682617 + percentile_10_0: 310.871826171875 + percentile_90_0: 1073.2479248046875 + percentile_99_5: 1236.0855712890625 + stdev: 299.58343505859375 + shape: + - [36, 51, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_356.nii.gz + label_stats: + image_intensity: + - max: 1125.0599365234375 + mean: 494.73101806640625 + median: 481.11114501953125 + min: 22.205129623413086 + percentile: [255.1739501953125, 355.2820739746094, 651.3504638671875, 873.4017944335938] + percentile_00_5: 255.1739501953125 + percentile_10_0: 355.2820739746094 + percentile_90_0: 651.3504638671875 + percentile_99_5: 873.4017944335938 + stdev: 118.4688720703125 + label: + - image_intensity: + - max: 3789.675537109375 + mean: 698.627685546875 + median: 717.9658813476562 + min: 0.0 + percentile: [37.008548736572266, 303.4701232910156, 1080.649658203125, 1243.4873046875] + percentile_00_5: 37.008548736572266 + percentile_10_0: 303.4701232910156 + percentile_90_0: 1080.649658203125 + percentile_99_5: 1243.4873046875 + stdev: 302.8509216308594 + ncomponents: 1 + pixel_percentage: 0.94853675365448 + shape: + - [36, 51, 37] + - image_intensity: + - max: 1021.4359741210938 + mean: 511.34173583984375 + median: 495.9145812988281 + min: 22.205129623413086 + percentile: [251.65814208984375, 377.4872131347656, 673.5556030273438, 858.598388671875] + percentile_00_5: 251.65814208984375 + percentile_10_0: 377.4872131347656 + percentile_90_0: 673.5556030273438 + percentile_99_5: 858.598388671875 + stdev: 116.10697174072266 + ncomponents: 1 + pixel_percentage: 0.027424482628703117 + shape: + - [23, 17, 16] + - image_intensity: + - max: 1125.0599365234375 + mean: 475.78082275390625 + median: 458.9060363769531 + min: 214.64959716796875 + percentile: [259.0598449707031, 340.4786682128906, 629.1453247070312, 873.4017944335938] + percentile_00_5: 259.0598449707031 + percentile_10_0: 340.4786682128906 + percentile_90_0: 629.1453247070312 + percentile_99_5: 873.4017944335938 + stdev: 118.29232025146484 + ncomponents: 1 + pixel_percentage: 0.02403874509036541 + shape: + - [22, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_235.nii.gz + image_foreground_stats: + intensity: + - max: 681.4690551757812 + mean: 314.4822998046875 + median: 293.8444519042969 + min: 25.008039474487305 + percentile: [107.50330352783203, 206.3163299560547, 456.396728515625, 625.2009887695312] + percentile_00_5: 107.50330352783203 + percentile_10_0: 206.3163299560547 + percentile_90_0: 456.396728515625 + percentile_99_5: 625.2009887695312 + stdev: 101.93476104736328 + image_stats: + channels: 1 + cropped_shape: + - [37, 58, 35] + intensity: + - max: 1012.8256225585938 + mean: 389.039794921875 + median: 387.6246032714844 + min: 0.0 + percentile: [18.75602912902832, 131.29220581054688, 631.4530029296875, 743.9891967773438] + percentile_00_5: 18.75602912902832 + percentile_10_0: 131.29220581054688 + percentile_90_0: 631.4530029296875 + percentile_99_5: 743.9891967773438 + stdev: 183.6175079345703 + shape: + - [37, 58, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_235.nii.gz + label_stats: + image_intensity: + - max: 681.4690551757812 + mean: 314.4822998046875 + median: 293.8444519042969 + min: 25.008039474487305 + percentile: [107.50330352783203, 206.3163299560547, 456.396728515625, 625.2009887695312] + percentile_00_5: 107.50330352783203 + percentile_10_0: 206.3163299560547 + percentile_90_0: 456.396728515625 + percentile_99_5: 625.2009887695312 + stdev: 101.93476104736328 + label: + - image_intensity: + - max: 1012.8256225585938 + mean: 392.18475341796875 + median: 393.8766174316406 + min: 0.0 + percentile: [18.75602912902832, 125.04019927978516, 631.4530029296875, 750.2412109375] + percentile_00_5: 18.75602912902832 + percentile_10_0: 125.04019927978516 + percentile_90_0: 631.4530029296875 + percentile_99_5: 750.2412109375 + stdev: 185.62026977539062 + ncomponents: 1 + pixel_percentage: 0.959526002407074 + shape: + - [37, 58, 35] + - image_intensity: + - max: 662.7130737304688 + mean: 307.95904541015625 + median: 293.8444519042969 + min: 56.268089294433594 + percentile: [108.72245025634766, 200.06431579589844, 431.388671875, 593.94091796875] + percentile_00_5: 108.72245025634766 + percentile_10_0: 200.06431579589844 + percentile_90_0: 431.388671875 + percentile_99_5: 593.94091796875 + stdev: 93.91361999511719 + ncomponents: 1 + pixel_percentage: 0.019691118970513344 + shape: + - [20, 18, 13] + - image_intensity: + - max: 681.4690551757812 + mean: 320.662841796875 + median: 300.0964660644531 + min: 25.008039474487305 + percentile: [115.03697204589844, 206.3163299560547, 481.4047546386719, 637.7050170898438] + percentile_00_5: 115.03697204589844 + percentile_10_0: 206.3163299560547 + percentile_90_0: 481.4047546386719 + percentile_99_5: 637.7050170898438 + stdev: 108.63050079345703 + ncomponents: 1 + pixel_percentage: 0.020782852545380592 + shape: + - [16, 27, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_335.nii.gz + image_foreground_stats: + intensity: + - max: 767.2092895507812 + mean: 386.28961181640625 + median: 383.6046447753906 + min: 99.45305633544922 + percentile: [146.72877502441406, 269.9440002441406, 497.2652893066406, 646.4448852539062] + percentile_00_5: 146.72877502441406 + percentile_10_0: 269.9440002441406 + percentile_90_0: 497.2652893066406 + percentile_99_5: 646.4448852539062 + stdev: 91.85408020019531 + image_stats: + channels: 1 + cropped_shape: + - [32, 47, 41] + intensity: + - max: 1044.257080078125 + mean: 503.4942321777344 + median: 525.680419921875 + min: 0.0 + percentile: [35.51894760131836, 206.00990295410156, 753.001708984375, 880.8699340820312] + percentile_00_5: 35.51894760131836 + percentile_10_0: 206.00990295410156 + percentile_90_0: 753.001708984375 + percentile_99_5: 880.8699340820312 + stdev: 204.63333129882812 + shape: + - [32, 47, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_335.nii.gz + label_stats: + image_intensity: + - max: 767.2092895507812 + mean: 386.28961181640625 + median: 383.6046447753906 + min: 99.45305633544922 + percentile: [146.72877502441406, 269.9440002441406, 497.2652893066406, 646.4448852539062] + percentile_00_5: 146.72877502441406 + percentile_10_0: 269.9440002441406 + percentile_90_0: 497.2652893066406 + percentile_99_5: 646.4448852539062 + stdev: 91.85408020019531 + label: + - image_intensity: + - max: 1044.257080078125 + mean: 508.51287841796875 + median: 539.8880004882812 + min: 0.0 + percentile: [35.51894760131836, 206.00990295410156, 753.001708984375, 880.8699340820312] + percentile_00_5: 35.51894760131836 + percentile_10_0: 206.00990295410156 + percentile_90_0: 753.001708984375 + percentile_99_5: 880.8699340820312 + stdev: 206.623291015625 + ncomponents: 1 + pixel_percentage: 0.9589387774467468 + shape: + - [32, 47, 41] + - image_intensity: + - max: 767.2092895507812 + mean: 375.7640380859375 + median: 369.3970642089844 + min: 99.45305633544922 + percentile: [127.86821746826172, 255.73643493652344, 502.94781494140625, 665.5545043945312] + percentile_00_5: 127.86821746826172 + percentile_10_0: 255.73643493652344 + percentile_90_0: 502.94781494140625 + percentile_99_5: 665.5545043945312 + stdev: 98.71459197998047 + ncomponents: 1 + pixel_percentage: 0.02048196643590927 + shape: + - [19, 17, 15] + - image_intensity: + - max: 745.89794921875 + mean: 396.7654113769531 + median: 397.8122253417969 + min: 120.7644271850586 + percentile: [187.1138153076172, 291.25537109375, 497.2652893066406, 644.0298461914062] + percentile_00_5: 187.1138153076172 + percentile_10_0: 291.25537109375 + percentile_90_0: 497.2652893066406 + percentile_99_5: 644.0298461914062 + stdev: 83.16218566894531 + ncomponents: 1 + pixel_percentage: 0.020579269155859947 + shape: + - [18, 18, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_248.nii.gz + image_foreground_stats: + intensity: + - max: 869.9393310546875 + mean: 366.7991638183594 + median: 349.40185546875 + min: 49.91455078125 + percentile: [142.61300659179688, 242.44210815429688, 520.5374755859375, 754.529296875] + percentile_00_5: 142.61300659179688 + percentile_10_0: 242.44210815429688 + percentile_90_0: 520.5374755859375 + percentile_99_5: 754.529296875 + stdev: 113.25048828125 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 38] + intensity: + - max: 1789.793212890625 + mean: 489.76898193359375 + median: 499.1455078125 + min: 0.0 + percentile: [28.522600173950195, 164.00494384765625, 784.3715209960938, 877.0699462890625] + percentile_00_5: 28.522600173950195 + percentile_10_0: 164.00494384765625 + percentile_90_0: 784.3715209960938 + percentile_99_5: 877.0699462890625 + stdev: 231.8172607421875 + shape: + - [36, 50, 38] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_248.nii.gz + label_stats: + image_intensity: + - max: 869.9393310546875 + mean: 366.7991638183594 + median: 349.40185546875 + min: 49.91455078125 + percentile: [142.61300659179688, 242.44210815429688, 520.5374755859375, 754.529296875] + percentile_00_5: 142.61300659179688 + percentile_10_0: 242.44210815429688 + percentile_90_0: 520.5374755859375 + percentile_99_5: 754.529296875 + stdev: 113.25048828125 + label: + - image_intensity: + - max: 1789.793212890625 + mean: 496.2769470214844 + median: 520.5374755859375 + min: 0.0 + percentile: [28.522600173950195, 156.87429809570312, 784.3715209960938, 884.2006225585938] + percentile_00_5: 28.522600173950195 + percentile_10_0: 156.87429809570312 + percentile_90_0: 784.3715209960938 + percentile_99_5: 884.2006225585938 + stdev: 234.65269470214844 + ncomponents: 1 + pixel_percentage: 0.9497368335723877 + shape: + - [36, 50, 38] + - image_intensity: + - max: 869.9393310546875 + mean: 374.1645202636719 + median: 356.5325012207031 + min: 49.91455078125 + percentile: [121.22105407714844, 256.7033996582031, 520.5374755859375, 741.5875854492188] + percentile_00_5: 121.22105407714844 + percentile_10_0: 256.7033996582031 + percentile_90_0: 520.5374755859375 + percentile_99_5: 741.5875854492188 + stdev: 110.07736206054688 + ncomponents: 1 + pixel_percentage: 0.02758771926164627 + shape: + - [22, 17, 14] + - image_intensity: + - max: 827.1553955078125 + mean: 357.8381652832031 + median: 335.14056396484375 + min: 114.09040069580078 + percentile: [164.00494384765625, 235.3114471435547, 520.5374755859375, 768.3275146484375] + percentile_00_5: 164.00494384765625 + percentile_10_0: 235.3114471435547 + percentile_90_0: 520.5374755859375 + percentile_99_5: 768.3275146484375 + stdev: 116.36811065673828 + ncomponents: 1 + pixel_percentage: 0.022675437852740288 + shape: + - [21, 21, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_155.nii.gz + image_foreground_stats: + intensity: + - max: 385370.65625 + mean: 158287.359375 + median: 150797.21875 + min: 23457.345703125 + percentile: [60318.88671875, 110584.625, 217818.203125, 331753.875] + percentile_00_5: 60318.88671875 + percentile_10_0: 110584.625 + percentile_90_0: 217818.203125 + percentile_99_5: 331753.875 + stdev: 46728.1953125 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 37] + intensity: + - max: 730528.75 + mean: 208862.1875 + median: 207765.0625 + min: 0.0 + percentile: [13404.197265625, 77074.1328125, 331753.875, 371966.46875] + percentile_00_5: 13404.197265625 + percentile_10_0: 77074.1328125 + percentile_90_0: 331753.875 + percentile_99_5: 371966.46875 + stdev: 95119.7421875 + shape: + - [34, 53, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_155.nii.gz + label_stats: + image_intensity: + - max: 385370.65625 + mean: 158287.359375 + median: 150797.21875 + min: 23457.345703125 + percentile: [60318.88671875, 110584.625, 217818.203125, 331753.875] + percentile_00_5: 60318.88671875 + percentile_10_0: 110584.625 + percentile_90_0: 217818.203125 + percentile_99_5: 331753.875 + stdev: 46728.1953125 + label: + - image_intensity: + - max: 730528.75 + mean: 211710.6875 + median: 214467.15625 + min: 0.0 + percentile: [10053.1484375, 73723.0859375, 331753.875, 371966.46875] + percentile_00_5: 10053.1484375 + percentile_10_0: 73723.0859375 + percentile_90_0: 331753.875 + percentile_99_5: 371966.46875 + stdev: 96344.171875 + ncomponents: 1 + pixel_percentage: 0.9466808438301086 + shape: + - [34, 53, 37] + - image_intensity: + - max: 335104.9375 + mean: 153124.59375 + median: 147446.171875 + min: 26808.39453125 + percentile: [60318.88671875, 107233.578125, 204414.015625, 287436.34375] + percentile_00_5: 60318.88671875 + percentile_10_0: 107233.578125 + percentile_90_0: 204414.015625 + percentile_99_5: 287436.34375 + stdev: 40107.91015625 + ncomponents: 1 + pixel_percentage: 0.030686624348163605 + shape: + - [22, 18, 16] + - image_intensity: + - max: 385370.65625 + mean: 165287.34375 + median: 150797.21875 + min: 23457.345703125 + percentile: [58777.40625, 113935.6796875, 244626.59375, 355211.21875] + percentile_00_5: 58777.40625 + percentile_10_0: 113935.6796875 + percentile_90_0: 244626.59375 + percentile_99_5: 355211.21875 + stdev: 53645.55078125 + ncomponents: 1 + pixel_percentage: 0.02263251133263111 + shape: + - [17, 23, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_036.nii.gz + image_foreground_stats: + intensity: + - max: 1221.3853759765625 + mean: 457.4119567871094 + median: 438.2618103027344 + min: 93.40005493164062 + percentile: [212.23367309570312, 330.4925231933594, 603.508056640625, 905.2620849609375] + percentile_00_5: 212.23367309570312 + percentile_10_0: 330.4925231933594 + percentile_90_0: 603.508056640625 + percentile_99_5: 905.2620849609375 + stdev: 117.14227294921875 + image_stats: + channels: 1 + cropped_shape: + - [36, 47, 39] + intensity: + - max: 3484.540771484375 + mean: 659.357666015625 + median: 675.354248046875 + min: 0.0 + percentile: [43.10771942138672, 287.3847961425781, 1020.2160034179688, 1149.5391845703125] + percentile_00_5: 43.10771942138672 + percentile_10_0: 287.3847961425781 + percentile_90_0: 1020.2160034179688 + percentile_99_5: 1149.5391845703125 + stdev: 285.1313781738281 + shape: + - [36, 47, 39] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_036.nii.gz + label_stats: + image_intensity: + - max: 1221.3853759765625 + mean: 457.4119567871094 + median: 438.2618103027344 + min: 93.40005493164062 + percentile: [212.23367309570312, 330.4925231933594, 603.508056640625, 905.2620849609375] + percentile_00_5: 212.23367309570312 + percentile_10_0: 330.4925231933594 + percentile_90_0: 603.508056640625 + percentile_99_5: 905.2620849609375 + stdev: 117.14227294921875 + label: + - image_intensity: + - max: 3484.540771484375 + mean: 670.6995849609375 + median: 696.9081420898438 + min: 0.0 + percentile: [43.10771942138672, 280.2001647949219, 1027.400634765625, 1149.5391845703125] + percentile_00_5: 43.10771942138672 + percentile_10_0: 280.2001647949219 + percentile_90_0: 1027.400634765625 + percentile_99_5: 1149.5391845703125 + stdev: 287.5346374511719 + ncomponents: 1 + pixel_percentage: 0.9468236565589905 + shape: + - [36, 47, 39] + - image_intensity: + - max: 1221.3853759765625 + mean: 456.16705322265625 + median: 445.4464416503906 + min: 114.95391845703125 + percentile: [208.35397338867188, 337.6771240234375, 581.9542236328125, 790.3081665039062] + percentile_00_5: 208.35397338867188 + percentile_10_0: 337.6771240234375 + percentile_90_0: 581.9542236328125 + percentile_99_5: 790.3081665039062 + stdev: 104.7464828491211 + ncomponents: 1 + pixel_percentage: 0.02802024595439434 + shape: + - [24, 16, 14] + - image_intensity: + - max: 1013.0314331054688 + mean: 458.798583984375 + median: 438.2618103027344 + min: 93.40005493164062 + percentile: [222.7232208251953, 323.3078918457031, 625.0619506835938, 924.6961669921875] + percentile_00_5: 222.7232208251953 + percentile_10_0: 323.3078918457031 + percentile_90_0: 625.0619506835938 + percentile_99_5: 924.6961669921875 + stdev: 129.5465545654297 + ncomponents: 1 + pixel_percentage: 0.025156088173389435 + shape: + - [21, 22, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_136.nii.gz + image_foreground_stats: + intensity: + - max: 314371.4375 + mean: 157714.078125 + median: 152516.84375 + min: 24900.708984375 + percentile: [65551.1171875, 108940.6015625, 211656.03125, 273720.875] + percentile_00_5: 65551.1171875 + percentile_10_0: 108940.6015625 + percentile_90_0: 211656.03125 + percentile_99_5: 273720.875 + stdev: 40445.0625 + image_stats: + channels: 1 + cropped_shape: + - [34, 49, 41] + intensity: + - max: 638080.6875 + mean: 212730.34375 + median: 220993.796875 + min: 0.0 + percentile: [9337.765625, 74702.125, 333046.96875, 379735.8125] + percentile_00_5: 9337.765625 + percentile_10_0: 74702.125 + percentile_90_0: 333046.96875 + percentile_99_5: 379735.8125 + stdev: 96317.7109375 + shape: + - [34, 49, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_136.nii.gz + label_stats: + image_intensity: + - max: 314371.4375 + mean: 157714.078125 + median: 152516.84375 + min: 24900.708984375 + percentile: [65551.1171875, 108940.6015625, 211656.03125, 273720.875] + percentile_00_5: 65551.1171875 + percentile_10_0: 108940.6015625 + percentile_90_0: 211656.03125 + percentile_99_5: 273720.875 + stdev: 40445.0625 + label: + - image_intensity: + - max: 638080.6875 + mean: 215093.375 + median: 227218.96875 + min: 0.0 + percentile: [9337.765625, 74702.125, 333046.96875, 382848.40625] + percentile_00_5: 9337.765625 + percentile_10_0: 74702.125 + percentile_90_0: 333046.96875 + percentile_99_5: 382848.40625 + stdev: 97312.46875 + ncomponents: 1 + pixel_percentage: 0.9588176608085632 + shape: + - [34, 49, 41] + - image_intensity: + - max: 270795.21875 + mean: 161647.828125 + median: 158742.015625 + min: 24900.708984375 + percentile: [59823.953125, 118278.3671875, 211656.03125, 264570.03125] + percentile_00_5: 59823.953125 + percentile_10_0: 118278.3671875 + percentile_90_0: 211656.03125 + percentile_99_5: 264570.03125 + stdev: 37100.3203125 + ncomponents: 1 + pixel_percentage: 0.021154804155230522 + shape: + - [20, 15, 15] + - image_intensity: + - max: 314371.4375 + mean: 153558.921875 + median: 146291.671875 + min: 46688.828125 + percentile: [74702.125, 105828.015625, 211656.03125, 292583.34375] + percentile_00_5: 74702.125 + percentile_10_0: 105828.015625 + percentile_90_0: 211656.03125 + percentile_99_5: 292583.34375 + stdev: 43314.6640625 + ncomponents: 1 + pixel_percentage: 0.02002752386033535 + shape: + - [17, 22, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_381.nii.gz + image_foreground_stats: + intensity: + - max: 914.63720703125 + mean: 430.5062561035156 + median: 406.5054016113281 + min: 128.72671508789062 + percentile: [223.57797241210938, 311.6541442871094, 575.8826904296875, 833.3361206054688] + percentile_00_5: 223.57797241210938 + percentile_10_0: 311.6541442871094 + percentile_90_0: 575.8826904296875 + percentile_99_5: 833.3361206054688 + stdev: 111.25676727294922 + image_stats: + channels: 1 + cropped_shape: + - [33, 49, 37] + intensity: + - max: 2818.4375 + mean: 563.1250610351562 + median: 582.6577758789062 + min: 0.0 + percentile: [27.100360870361328, 203.25270080566406, 880.76171875, 1009.4884643554688] + percentile_00_5: 27.100360870361328 + percentile_10_0: 203.25270080566406 + percentile_90_0: 880.76171875 + percentile_99_5: 1009.4884643554688 + stdev: 254.63150024414062 + shape: + - [33, 49, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_381.nii.gz + label_stats: + image_intensity: + - max: 914.63720703125 + mean: 430.5062561035156 + median: 406.5054016113281 + min: 128.72671508789062 + percentile: [223.57797241210938, 311.6541442871094, 575.8826904296875, 833.3361206054688] + percentile_00_5: 223.57797241210938 + percentile_10_0: 311.6541442871094 + percentile_90_0: 575.8826904296875 + percentile_99_5: 833.3361206054688 + stdev: 111.25676727294922 + label: + - image_intensity: + - max: 2818.4375 + mean: 570.5004272460938 + median: 602.9830322265625 + min: 0.0 + percentile: [27.100360870361328, 189.70252990722656, 887.5368041992188, 1016.2635498046875] + percentile_00_5: 27.100360870361328 + percentile_10_0: 189.70252990722656 + percentile_90_0: 887.5368041992188 + percentile_99_5: 1016.2635498046875 + stdev: 258.3062744140625 + ncomponents: 1 + pixel_percentage: 0.9473165273666382 + shape: + - [33, 49, 37] + - image_intensity: + - max: 806.2357177734375 + mean: 431.6650695800781 + median: 420.05560302734375 + min: 128.72671508789062 + percentile: [201.52505493164062, 318.4292297363281, 562.3324584960938, 733.4374389648438] + percentile_00_5: 201.52505493164062 + percentile_10_0: 318.4292297363281 + percentile_90_0: 562.3324584960938 + percentile_99_5: 733.4374389648438 + stdev: 99.98130798339844 + ncomponents: 1 + pixel_percentage: 0.02590716816484928 + shape: + - [18, 17, 15] + - image_intensity: + - max: 914.63720703125 + mean: 429.38507080078125 + median: 399.7303161621094 + min: 203.25270080566406 + percentile: [230.3530731201172, 311.6541442871094, 596.2079467773438, 867.2115478515625] + percentile_00_5: 230.3530731201172 + percentile_10_0: 311.6541442871094 + percentile_90_0: 596.2079467773438 + percentile_99_5: 867.2115478515625 + stdev: 121.16106414794922 + ncomponents: 1 + pixel_percentage: 0.026776311919093132 + shape: + - [15, 23, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_393.nii.gz + image_foreground_stats: + intensity: + - max: 996.3963012695312 + mean: 452.021728515625 + median: 428.203369140625 + min: 41.17340087890625 + percentile: [222.33636474609375, 321.15252685546875, 634.0703735351562, 889.345458984375] + percentile_00_5: 222.33636474609375 + percentile_10_0: 321.15252685546875 + percentile_90_0: 634.0703735351562 + percentile_99_5: 889.345458984375 + stdev: 127.25235748291016 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 31] + intensity: + - max: 1630.4666748046875 + mean: 588.1304321289062 + median: 584.6622924804688 + min: 0.0 + percentile: [32.938720703125, 247.0404052734375, 922.2841796875, 1070.5084228515625] + percentile_00_5: 32.938720703125 + percentile_10_0: 247.0404052734375 + percentile_90_0: 922.2841796875 + percentile_99_5: 1070.5084228515625 + stdev: 260.0743713378906 + shape: + - [36, 51, 31] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_393.nii.gz + label_stats: + image_intensity: + - max: 996.3963012695312 + mean: 452.021728515625 + median: 428.203369140625 + min: 41.17340087890625 + percentile: [222.33636474609375, 321.15252685546875, 634.0703735351562, 889.345458984375] + percentile_00_5: 222.33636474609375 + percentile_10_0: 321.15252685546875 + percentile_90_0: 634.0703735351562 + percentile_99_5: 889.345458984375 + stdev: 127.25235748291016 + label: + - image_intensity: + - max: 1630.4666748046875 + mean: 597.5445556640625 + median: 609.3663330078125 + min: 0.0 + percentile: [32.938720703125, 238.80572509765625, 922.2841796875, 1078.7431640625] + percentile_00_5: 32.938720703125 + percentile_10_0: 238.80572509765625 + percentile_90_0: 922.2841796875 + percentile_99_5: 1078.7431640625 + stdev: 264.2480163574219 + ncomponents: 1 + pixel_percentage: 0.9353081583976746 + shape: + - [36, 51, 31] + - image_intensity: + - max: 988.16162109375 + mean: 453.63189697265625 + median: 436.43804931640625 + min: 107.05084228515625 + percentile: [247.0404052734375, 329.38720703125, 609.3663330078125, 845.57861328125] + percentile_00_5: 247.0404052734375 + percentile_10_0: 329.38720703125 + percentile_90_0: 609.3663330078125 + percentile_99_5: 845.57861328125 + stdev: 115.3425521850586 + ncomponents: 1 + pixel_percentage: 0.03275001794099808 + shape: + - [22, 18, 14] + - image_intensity: + - max: 996.3963012695312 + mean: 450.3708801269531 + median: 419.96868896484375 + min: 41.17340087890625 + percentile: [205.86700439453125, 312.9178466796875, 658.7744140625, 889.345458984375] + percentile_00_5: 205.86700439453125 + percentile_10_0: 312.9178466796875 + percentile_90_0: 658.7744140625 + percentile_99_5: 889.345458984375 + stdev: 138.384033203125 + ncomponents: 1 + pixel_percentage: 0.03194180876016617 + shape: + - [21, 23, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_124.nii.gz + image_foreground_stats: + intensity: + - max: 106.0 + mean: 54.36085510253906 + median: 52.0 + min: 23.0 + percentile: [28.0, 39.0, 74.0, 95.0] + percentile_00_5: 28.0 + percentile_10_0: 39.0 + percentile_90_0: 74.0 + percentile_99_5: 95.0 + stdev: 13.79419231414795 + image_stats: + channels: 1 + cropped_shape: + - [35, 55, 41] + intensity: + - max: 249.0 + mean: 71.20986938476562 + median: 71.0 + min: 4.0 + percentile: [12.0, 30.0, 112.0, 128.0] + percentile_00_5: 12.0 + percentile_10_0: 30.0 + percentile_90_0: 112.0 + percentile_99_5: 128.0 + stdev: 30.756574630737305 + shape: + - [35, 55, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_124.nii.gz + label_stats: + image_intensity: + - max: 106.0 + mean: 54.36085510253906 + median: 52.0 + min: 23.0 + percentile: [28.0, 39.0, 74.0, 95.0] + percentile_00_5: 28.0 + percentile_10_0: 39.0 + percentile_90_0: 74.0 + percentile_99_5: 95.0 + stdev: 13.79419231414795 + label: + - image_intensity: + - max: 249.0 + mean: 71.90727996826172 + median: 72.0 + min: 4.0 + percentile: [11.0, 30.0, 112.0, 129.0] + percentile_00_5: 11.0 + percentile_10_0: 30.0 + percentile_90_0: 112.0 + percentile_99_5: 129.0 + stdev: 31.064594268798828 + ncomponents: 1 + pixel_percentage: 0.9602534174919128 + shape: + - [35, 55, 41] + - image_intensity: + - max: 102.0 + mean: 53.62702178955078 + median: 51.0 + min: 23.0 + percentile: [27.024999618530273, 39.5, 72.0, 92.9749755859375] + percentile_00_5: 27.024999618530273 + percentile_10_0: 39.5 + percentile_90_0: 72.0 + percentile_99_5: 92.9749755859375 + stdev: 13.005401611328125 + ncomponents: 1 + pixel_percentage: 0.020348431542515755 + shape: + - [18, 17, 13] + - image_intensity: + - max: 106.0 + mean: 55.13063049316406 + median: 52.0 + min: 23.0 + percentile: [29.0, 39.0, 76.0, 96.3499755859375] + percentile_00_5: 29.0 + percentile_10_0: 39.0 + percentile_90_0: 76.0 + percentile_99_5: 96.3499755859375 + stdev: 14.53606128692627 + ncomponents: 1 + pixel_percentage: 0.0193981621414423 + shape: + - [16, 26, 22] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_024.nii.gz + image_foreground_stats: + intensity: + - max: 1143.8037109375 + mean: 492.1591796875 + median: 475.8223571777344 + min: 36.60171890258789 + percentile: [137.25643920898438, 320.2650451660156, 686.2822265625, 960.7951049804688] + percentile_00_5: 137.25643920898438 + percentile_10_0: 320.2650451660156 + percentile_90_0: 686.2822265625 + percentile_99_5: 960.7951049804688 + stdev: 146.7787322998047 + image_stats: + channels: 1 + cropped_shape: + - [38, 52, 33] + intensity: + - max: 3696.773681640625 + mean: 710.314453125 + median: 722.8839721679688 + min: 0.0 + percentile: [45.75214767456055, 292.8137512207031, 1107.2020263671875, 1262.75927734375] + percentile_00_5: 45.75214767456055 + percentile_10_0: 292.8137512207031 + percentile_90_0: 1107.2020263671875 + percentile_99_5: 1262.75927734375 + stdev: 316.856201171875 + shape: + - [38, 52, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_024.nii.gz + label_stats: + image_intensity: + - max: 1143.8037109375 + mean: 492.1591796875 + median: 475.8223571777344 + min: 36.60171890258789 + percentile: [137.25643920898438, 320.2650451660156, 686.2822265625, 960.7951049804688] + percentile_00_5: 137.25643920898438 + percentile_10_0: 320.2650451660156 + percentile_90_0: 686.2822265625 + percentile_99_5: 960.7951049804688 + stdev: 146.7787322998047 + label: + - image_intensity: + - max: 3696.773681640625 + mean: 724.68505859375 + median: 759.4856567382812 + min: 0.0 + percentile: [45.75214767456055, 292.8137512207031, 1107.2020263671875, 1271.9097900390625] + percentile_00_5: 45.75214767456055 + percentile_10_0: 292.8137512207031 + percentile_90_0: 1107.2020263671875 + percentile_99_5: 1271.9097900390625 + stdev: 319.7666015625 + ncomponents: 1 + pixel_percentage: 0.9381977915763855 + shape: + - [38, 52, 33] + - image_intensity: + - max: 979.0960083007812 + mean: 504.18365478515625 + median: 494.1231994628906 + min: 73.20343780517578 + percentile: [146.86439514160156, 338.5658874511719, 686.2822265625, 869.2908325195312] + percentile_00_5: 146.86439514160156 + percentile_10_0: 338.5658874511719 + percentile_90_0: 686.2822265625 + percentile_99_5: 869.2908325195312 + stdev: 135.29666137695312 + ncomponents: 1 + pixel_percentage: 0.030839774757623672 + shape: + - [27, 17, 12] + - image_intensity: + - max: 1143.8037109375 + mean: 480.1822509765625 + median: 457.521484375 + min: 36.60171890258789 + percentile: [128.92955017089844, 311.1146240234375, 686.2822265625, 988.2463989257812] + percentile_00_5: 128.92955017089844 + percentile_10_0: 311.1146240234375 + percentile_90_0: 686.2822265625 + percentile_99_5: 988.2463989257812 + stdev: 156.46888732910156 + ncomponents: 1 + pixel_percentage: 0.03096245788037777 + shape: + - [21, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_171.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 47.87969207763672 + median: 46.0 + min: 17.0 + percentile: [29.0, 37.0, 62.0, 86.0] + percentile_00_5: 29.0 + percentile_10_0: 37.0 + percentile_90_0: 62.0 + percentile_99_5: 86.0 + stdev: 10.623573303222656 + image_stats: + channels: 1 + cropped_shape: + - [35, 56, 28] + intensity: + - max: 125.0 + mean: 60.75200271606445 + median: 62.0 + min: 2.0 + percentile: [7.0, 29.0, 90.0, 101.0] + percentile_00_5: 7.0 + percentile_10_0: 29.0 + percentile_90_0: 90.0 + percentile_99_5: 101.0 + stdev: 23.746702194213867 + shape: + - [35, 56, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_171.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 47.87969207763672 + median: 46.0 + min: 17.0 + percentile: [29.0, 37.0, 62.0, 86.0] + percentile_00_5: 29.0 + percentile_10_0: 37.0 + percentile_90_0: 62.0 + percentile_99_5: 86.0 + stdev: 10.623573303222656 + label: + - image_intensity: + - max: 125.0 + mean: 61.67558288574219 + median: 65.0 + min: 2.0 + percentile: [7.0, 28.0, 90.0, 101.0] + percentile_00_5: 7.0 + percentile_10_0: 28.0 + percentile_90_0: 90.0 + percentile_99_5: 101.0 + stdev: 24.156293869018555 + ncomponents: 1 + pixel_percentage: 0.9330539107322693 + shape: + - [35, 56, 28] + - image_intensity: + - max: 86.0 + mean: 47.37641906738281 + median: 46.0 + min: 23.0 + percentile: [29.0, 36.0, 61.0, 75.760009765625] + percentile_00_5: 29.0 + percentile_10_0: 36.0 + percentile_90_0: 61.0 + percentile_99_5: 75.760009765625 + stdev: 9.60980224609375 + ncomponents: 1 + pixel_percentage: 0.03369168937206268 + shape: + - [20, 18, 13] + - image_intensity: + - max: 96.0 + mean: 48.38958740234375 + median: 46.0 + min: 17.0 + percentile: [29.0, 37.0, 64.5999755859375, 88.0] + percentile_00_5: 29.0 + percentile_10_0: 37.0 + percentile_90_0: 64.5999755859375 + percentile_99_5: 88.0 + stdev: 11.53800106048584 + ncomponents: 1 + pixel_percentage: 0.03325437381863594 + shape: + - [18, 27, 13] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_163.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 50.788753509521484 + median: 49.0 + min: 23.0 + percentile: [29.0, 39.0, 65.0, 85.0] + percentile_00_5: 29.0 + percentile_10_0: 39.0 + percentile_90_0: 65.0 + percentile_99_5: 85.0 + stdev: 10.445619583129883 + image_stats: + channels: 1 + cropped_shape: + - [36, 47, 44] + intensity: + - max: 152.0 + mean: 64.65730285644531 + median: 66.0 + min: 0.0 + percentile: [5.0, 26.0, 98.0, 110.0] + percentile_00_5: 5.0 + percentile_10_0: 26.0 + percentile_90_0: 98.0 + percentile_99_5: 110.0 + stdev: 27.059946060180664 + shape: + - [36, 47, 44] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_163.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 50.788753509521484 + median: 49.0 + min: 23.0 + percentile: [29.0, 39.0, 65.0, 85.0] + percentile_00_5: 29.0 + percentile_10_0: 39.0 + percentile_90_0: 65.0 + percentile_99_5: 85.0 + stdev: 10.445619583129883 + label: + - image_intensity: + - max: 152.0 + mean: 65.34207916259766 + median: 68.0 + min: 0.0 + percentile: [5.0, 25.0, 98.0, 110.0] + percentile_00_5: 5.0 + percentile_10_0: 25.0 + percentile_90_0: 98.0 + percentile_99_5: 110.0 + stdev: 27.44162368774414 + ncomponents: 1 + pixel_percentage: 0.9529470205307007 + shape: + - [36, 47, 44] + - image_intensity: + - max: 84.0 + mean: 50.73422622680664 + median: 50.0 + min: 23.0 + percentile: [28.84000015258789, 40.0, 64.0, 80.0] + percentile_00_5: 28.84000015258789 + percentile_10_0: 40.0 + percentile_90_0: 64.0 + percentile_99_5: 80.0 + stdev: 9.627020835876465 + ncomponents: 1 + pixel_percentage: 0.021075112745165825 + shape: + - [23, 12, 17] + - image_intensity: + - max: 96.0 + mean: 50.83298873901367 + median: 49.0 + min: 23.0 + percentile: [30.0, 39.0, 66.0, 89.0] + percentile_00_5: 30.0 + percentile_10_0: 39.0 + percentile_90_0: 66.0 + percentile_99_5: 89.0 + stdev: 11.065122604370117 + ncomponents: 1 + pixel_percentage: 0.025977862998843193 + shape: + - [18, 25, 30] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_126.nii.gz + image_foreground_stats: + intensity: + - max: 97.0 + mean: 52.81113052368164 + median: 51.0 + min: 24.0 + percentile: [32.720001220703125, 41.0, 69.0, 84.0] + percentile_00_5: 32.720001220703125 + percentile_10_0: 41.0 + percentile_90_0: 69.0 + percentile_99_5: 84.0 + stdev: 10.671712875366211 + image_stats: + channels: 1 + cropped_shape: + - [39, 44, 43] + intensity: + - max: 255.0 + mean: 68.09004211425781 + median: 70.0 + min: 1.0 + percentile: [7.0, 26.0, 105.0, 123.0] + percentile_00_5: 7.0 + percentile_10_0: 26.0 + percentile_90_0: 105.0 + percentile_99_5: 123.0 + stdev: 30.001197814941406 + shape: + - [39, 44, 43] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_126.nii.gz + label_stats: + image_intensity: + - max: 97.0 + mean: 52.81113052368164 + median: 51.0 + min: 24.0 + percentile: [32.720001220703125, 41.0, 69.0, 84.0] + percentile_00_5: 32.720001220703125 + percentile_10_0: 41.0 + percentile_90_0: 69.0 + percentile_99_5: 84.0 + stdev: 10.671712875366211 + label: + - image_intensity: + - max: 255.0 + mean: 68.77024841308594 + median: 72.0 + min: 1.0 + percentile: [7.0, 25.0, 105.0, 123.0] + percentile_00_5: 7.0 + percentile_10_0: 25.0 + percentile_90_0: 105.0 + percentile_99_5: 123.0 + stdev: 30.400938034057617 + ncomponents: 1 + pixel_percentage: 0.9573779106140137 + shape: + - [39, 44, 43] + - image_intensity: + - max: 97.0 + mean: 53.15757751464844 + median: 52.0 + min: 24.0 + percentile: [30.244998931884766, 41.90000915527344, 68.0, 83.0] + percentile_00_5: 30.244998931884766 + percentile_10_0: 41.90000915527344 + percentile_90_0: 68.0 + percentile_99_5: 83.0 + stdev: 10.314480781555176 + ncomponents: 1 + pixel_percentage: 0.022361360490322113 + shape: + - [18, 13, 16] + - image_intensity: + - max: 90.0 + mean: 52.42876052856445 + median: 49.0 + min: 31.0 + percentile: [35.0, 41.0, 70.0, 85.0] + percentile_00_5: 35.0 + percentile_10_0: 41.0 + percentile_90_0: 70.0 + percentile_99_5: 85.0 + stdev: 11.0399751663208 + ncomponents: 1 + pixel_percentage: 0.020260747522115707 + shape: + - [18, 20, 25] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_026.nii.gz + image_foreground_stats: + intensity: + - max: 755.1204223632812 + mean: 380.21014404296875 + median: 368.3514099121094 + min: 110.50542449951172 + percentile: [159.6189422607422, 270.1243591308594, 515.6919555664062, 675.3109130859375] + percentile_00_5: 159.6189422607422 + percentile_10_0: 270.1243591308594 + percentile_90_0: 515.6919555664062 + percentile_99_5: 675.3109130859375 + stdev: 99.12187957763672 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 36] + intensity: + - max: 2670.5478515625 + mean: 500.95751953125 + median: 509.55279541015625 + min: 0.0 + percentile: [30.695951461791992, 208.7324676513672, 773.5379638671875, 871.7650146484375] + percentile_00_5: 30.695951461791992 + percentile_10_0: 208.7324676513672 + percentile_90_0: 773.5379638671875 + percentile_99_5: 871.7650146484375 + stdev: 217.1165008544922 + shape: + - [36, 50, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_026.nii.gz + label_stats: + image_intensity: + - max: 755.1204223632812 + mean: 380.21014404296875 + median: 368.3514099121094 + min: 110.50542449951172 + percentile: [159.6189422607422, 270.1243591308594, 515.6919555664062, 675.3109130859375] + percentile_00_5: 159.6189422607422 + percentile_10_0: 270.1243591308594 + percentile_90_0: 515.6919555664062 + percentile_99_5: 675.3109130859375 + stdev: 99.12187957763672 + label: + - image_intensity: + - max: 2670.5478515625 + mean: 508.118896484375 + median: 527.9703369140625 + min: 0.0 + percentile: [24.556760787963867, 202.59327697753906, 773.5379638671875, 877.9041748046875] + percentile_00_5: 24.556760787963867 + percentile_10_0: 202.59327697753906 + percentile_90_0: 773.5379638671875 + percentile_99_5: 877.9041748046875 + stdev: 220.083251953125 + ncomponents: 1 + pixel_percentage: 0.9440123438835144 + shape: + - [36, 50, 36] + - image_intensity: + - max: 755.1204223632812 + mean: 393.0762023925781 + median: 380.6297912597656 + min: 135.0621795654297 + percentile: [171.89732360839844, 288.54193115234375, 515.6919555664062, 663.0325317382812] + percentile_00_5: 171.89732360839844 + percentile_10_0: 288.54193115234375 + percentile_90_0: 515.6919555664062 + percentile_99_5: 663.0325317382812 + stdev: 92.89981842041016 + ncomponents: 1 + pixel_percentage: 0.028750000521540642 + shape: + - [24, 17, 16] + - image_intensity: + - max: 718.2852783203125 + mean: 366.6296691894531 + median: 349.933837890625 + min: 110.50542449951172 + percentile: [140.0963134765625, 257.8459777832031, 515.6919555664062, 682.5555419921875] + percentile_00_5: 140.0963134765625 + percentile_10_0: 257.8459777832031 + percentile_90_0: 515.6919555664062 + percentile_99_5: 682.5555419921875 + stdev: 103.57171630859375 + ncomponents: 1 + pixel_percentage: 0.027237653732299805 + shape: + - [22, 22, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_138.nii.gz + image_foreground_stats: + intensity: + - max: 289448.59375 + mean: 145922.015625 + median: 140509.03125 + min: 25291.625 + percentile: [70254.515625, 103976.6875, 196712.640625, 269777.34375] + percentile_00_5: 70254.515625 + percentile_10_0: 103976.6875 + percentile_90_0: 196712.640625 + percentile_99_5: 269777.34375 + stdev: 36701.4296875 + image_stats: + channels: 1 + cropped_shape: + - [32, 46, 42] + intensity: + - max: 907688.375 + mean: 200259.25 + median: 213573.734375 + min: 0.0 + percentile: [11240.72265625, 75874.875, 303499.5, 362513.3125] + percentile_00_5: 11240.72265625 + percentile_10_0: 75874.875 + percentile_90_0: 303499.5 + percentile_99_5: 362513.3125 + stdev: 87593.9453125 + shape: + - [32, 46, 42] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_138.nii.gz + label_stats: + image_intensity: + - max: 289448.59375 + mean: 145922.015625 + median: 140509.03125 + min: 25291.625 + percentile: [70254.515625, 103976.6875, 196712.640625, 269777.34375] + percentile_00_5: 70254.515625 + percentile_10_0: 103976.6875 + percentile_90_0: 196712.640625 + percentile_99_5: 269777.34375 + stdev: 36701.4296875 + label: + - image_intensity: + - max: 907688.375 + mean: 202581.5625 + median: 219194.09375 + min: 0.0 + percentile: [11240.72265625, 73064.6953125, 303499.5, 362513.3125] + percentile_00_5: 11240.72265625 + percentile_10_0: 73064.6953125 + percentile_90_0: 303499.5 + percentile_99_5: 362513.3125 + stdev: 88382.53125 + ncomponents: 1 + pixel_percentage: 0.9590126872062683 + shape: + - [32, 46, 42] + - image_intensity: + - max: 264156.96875 + mean: 150137.078125 + median: 146129.390625 + min: 44962.890625 + percentile: [78263.53125, 115217.40625, 191092.28125, 247295.90625] + percentile_00_5: 78263.53125 + percentile_10_0: 115217.40625 + percentile_90_0: 191092.28125 + percentile_99_5: 247295.90625 + stdev: 31270.25 + ncomponents: 1 + pixel_percentage: 0.018940864130854607 + shape: + - [18, 12, 14] + - image_intensity: + - max: 289448.59375 + mean: 142300.71875 + median: 132078.484375 + min: 25291.625 + percentile: [67444.3359375, 101166.5, 202333.0, 275397.71875] + percentile_00_5: 67444.3359375 + percentile_10_0: 101166.5 + percentile_90_0: 202333.0 + percentile_99_5: 275397.71875 + stdev: 40444.78125 + ncomponents: 1 + pixel_percentage: 0.02204645425081253 + shape: + - [17, 22, 24] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_038.nii.gz + image_foreground_stats: + intensity: + - max: 652.7219848632812 + mean: 285.780517578125 + median: 272.85919189453125 + min: 21.400720596313477 + percentile: [101.6534194946289, 192.6064910888672, 401.2635192871094, 577.8194580078125] + percentile_00_5: 101.6534194946289 + percentile_10_0: 192.6064910888672 + percentile_90_0: 401.2635192871094 + percentile_99_5: 577.8194580078125 + stdev: 84.97096252441406 + image_stats: + channels: 1 + cropped_shape: + - [37, 51, 35] + intensity: + - max: 1449.8988037109375 + mean: 361.0468444824219 + median: 358.4620666503906 + min: 0.0 + percentile: [26.750900268554688, 165.8555908203125, 561.7689208984375, 658.0721435546875] + percentile_00_5: 26.750900268554688 + percentile_10_0: 165.8555908203125 + percentile_90_0: 561.7689208984375 + percentile_99_5: 658.0721435546875 + stdev: 152.53350830078125 + shape: + - [37, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_038.nii.gz + label_stats: + image_intensity: + - max: 652.7219848632812 + mean: 285.780517578125 + median: 272.85919189453125 + min: 21.400720596313477 + percentile: [101.6534194946289, 192.6064910888672, 401.2635192871094, 577.8194580078125] + percentile_00_5: 101.6534194946289 + percentile_10_0: 192.6064910888672 + percentile_90_0: 401.2635192871094 + percentile_99_5: 577.8194580078125 + stdev: 84.97096252441406 + label: + - image_intensity: + - max: 1449.8988037109375 + mean: 365.33251953125 + median: 363.812255859375 + min: 0.0 + percentile: [21.400720596313477, 160.50540161132812, 567.1190795898438, 658.0721435546875] + percentile_00_5: 21.400720596313477 + percentile_10_0: 160.50540161132812 + percentile_90_0: 567.1190795898438 + percentile_99_5: 658.0721435546875 + stdev: 154.3995361328125 + ncomponents: 1 + pixel_percentage: 0.9461276531219482 + shape: + - [37, 51, 35] + - image_intensity: + - max: 652.7219848632812 + mean: 290.1882629394531 + median: 278.2093811035156 + min: 26.750900268554688 + percentile: [101.6534194946289, 197.9566650390625, 395.913330078125, 583.1696166992188] + percentile_00_5: 101.6534194946289 + percentile_10_0: 197.9566650390625 + percentile_90_0: 395.913330078125 + percentile_99_5: 583.1696166992188 + stdev: 82.83067321777344 + ncomponents: 1 + pixel_percentage: 0.027814369648694992 + shape: + - [21, 17, 14] + - image_intensity: + - max: 609.9205322265625 + mean: 281.0756530761719 + median: 262.1588134765625 + min: 21.400720596313477 + percentile: [107.00360107421875, 187.2563018798828, 406.6136779785156, 561.7689208984375] + percentile_00_5: 107.00360107421875 + percentile_10_0: 187.2563018798828 + percentile_90_0: 406.6136779785156 + percentile_99_5: 561.7689208984375 + stdev: 86.95137786865234 + ncomponents: 1 + pixel_percentage: 0.02605799026787281 + shape: + - [22, 22, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_145.nii.gz + image_foreground_stats: + intensity: + - max: 353007.03125 + mean: 149080.0625 + median: 146166.96875 + min: 22062.939453125 + percentile: [52399.48046875, 107556.828125, 193050.71875, 294126.28125] + percentile_00_5: 52399.48046875 + percentile_10_0: 107556.828125 + percentile_90_0: 193050.71875 + percentile_99_5: 294126.28125 + stdev: 37852.00390625 + image_stats: + channels: 1 + cropped_shape: + - [36, 53, 33] + intensity: + - max: 890791.1875 + mean: 198518.34375 + median: 184777.125 + min: 0.0 + percentile: [11031.4697265625, 66188.8203125, 336459.8125, 391617.1875] + percentile_00_5: 11031.4697265625 + percentile_10_0: 66188.8203125 + percentile_90_0: 336459.8125 + percentile_99_5: 391617.1875 + stdev: 99916.203125 + shape: + - [36, 53, 33] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_145.nii.gz + label_stats: + image_intensity: + - max: 353007.03125 + mean: 149080.0625 + median: 146166.96875 + min: 22062.939453125 + percentile: [52399.48046875, 107556.828125, 193050.71875, 294126.28125] + percentile_00_5: 52399.48046875 + percentile_10_0: 107556.828125 + percentile_90_0: 193050.71875 + percentile_99_5: 294126.28125 + stdev: 37852.00390625 + label: + - image_intensity: + - max: 890791.1875 + mean: 201459.96875 + median: 193050.71875 + min: 0.0 + percentile: [8273.6025390625, 63430.94921875, 339217.6875, 391617.1875] + percentile_00_5: 8273.6025390625 + percentile_10_0: 63430.94921875 + percentile_90_0: 339217.6875 + percentile_99_5: 391617.1875 + stdev: 101675.59375 + ncomponents: 1 + pixel_percentage: 0.9438409209251404 + shape: + - [36, 53, 33] + - image_intensity: + - max: 284060.34375 + mean: 144899.734375 + median: 143409.109375 + min: 22062.939453125 + percentile: [35852.27734375, 104798.9609375, 187534.984375, 237176.59375] + percentile_00_5: 35852.27734375 + percentile_10_0: 104798.9609375 + percentile_90_0: 187534.984375 + percentile_99_5: 237176.59375 + stdev: 33714.41015625 + ncomponents: 1 + pixel_percentage: 0.03293945640325546 + shape: + - [23, 18, 16] + - image_intensity: + - max: 353007.03125 + mean: 155010.265625 + median: 148924.84375 + min: 55157.34765625 + percentile: [75303.5703125, 113072.5625, 204082.1875, 317154.75] + percentile_00_5: 75303.5703125 + percentile_10_0: 113072.5625 + percentile_90_0: 204082.1875 + percentile_99_5: 317154.75 + stdev: 42342.453125 + ncomponents: 1 + pixel_percentage: 0.02321961708366871 + shape: + - [19, 25, 14] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_045.nii.gz + image_foreground_stats: + intensity: + - max: 795.865234375 + mean: 394.4459228515625 + median: 383.8879089355469 + min: 23.407800674438477 + percentile: [188.83071899414062, 294.93829345703125, 510.2900390625, 705.347412109375] + percentile_00_5: 188.83071899414062 + percentile_10_0: 294.93829345703125 + percentile_90_0: 510.2900390625 + percentile_99_5: 705.347412109375 + stdev: 89.73593139648438 + image_stats: + channels: 1 + cropped_shape: + - [36, 48, 37] + intensity: + - max: 1048.66943359375 + mean: 515.2599487304688 + median: 547.7425537109375 + min: 0.0 + percentile: [28.089359283447266, 238.7595672607422, 767.7758178710938, 866.088623046875] + percentile_00_5: 28.089359283447266 + percentile_10_0: 238.7595672607422 + percentile_90_0: 767.7758178710938 + percentile_99_5: 866.088623046875 + stdev: 205.0619354248047 + shape: + - [36, 48, 37] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_045.nii.gz + label_stats: + image_intensity: + - max: 795.865234375 + mean: 394.4459228515625 + median: 383.8879089355469 + min: 23.407800674438477 + percentile: [188.83071899414062, 294.93829345703125, 510.2900390625, 705.347412109375] + percentile_00_5: 188.83071899414062 + percentile_10_0: 294.93829345703125 + percentile_90_0: 510.2900390625 + percentile_99_5: 705.347412109375 + stdev: 89.73593139648438 + label: + - image_intensity: + - max: 1048.66943359375 + mean: 520.933837890625 + median: 557.1056518554688 + min: 0.0 + percentile: [28.089359283447266, 234.0780029296875, 772.4573974609375, 866.088623046875] + percentile_00_5: 28.089359283447266 + percentile_10_0: 234.0780029296875 + percentile_90_0: 772.4573974609375 + percentile_99_5: 866.088623046875 + stdev: 207.194091796875 + ncomponents: 1 + pixel_percentage: 0.955142617225647 + shape: + - [36, 48, 37] + - image_intensity: + - max: 716.2786865234375 + mean: 380.82574462890625 + median: 369.8432312011719 + min: 23.407800674438477 + percentile: [155.54483032226562, 285.5751647949219, 491.5638122558594, 648.63037109375] + percentile_00_5: 155.54483032226562 + percentile_10_0: 285.5751647949219 + percentile_90_0: 491.5638122558594 + percentile_99_5: 648.63037109375 + stdev: 85.42385864257812 + ncomponents: 1 + pixel_percentage: 0.01948823779821396 + shape: + - [20, 15, 13] + - image_intensity: + - max: 795.865234375 + mean: 404.90875244140625 + median: 393.25103759765625 + min: 32.77091979980469 + percentile: [220.0333251953125, 304.3013916015625, 529.0162963867188, 715.7872314453125] + percentile_00_5: 220.0333251953125 + percentile_10_0: 304.3013916015625 + percentile_90_0: 529.0162963867188 + percentile_99_5: 715.7872314453125 + stdev: 91.54656219482422 + ncomponents: 1 + pixel_percentage: 0.02536911889910698 + shape: + - [25, 23, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_034.nii.gz + image_foreground_stats: + intensity: + - max: 96.0 + mean: 46.86933135986328 + median: 45.0 + min: 11.0 + percentile: [22.0, 33.0, 62.0, 84.130126953125] + percentile_00_5: 22.0 + percentile_10_0: 33.0 + percentile_90_0: 62.0 + percentile_99_5: 84.130126953125 + stdev: 11.737112998962402 + image_stats: + channels: 1 + cropped_shape: + - [36, 49, 40] + intensity: + - max: 255.0 + mean: 65.21073150634766 + median: 65.0 + min: 2.0 + percentile: [8.0, 27.0, 103.0, 122.0] + percentile_00_5: 8.0 + percentile_10_0: 27.0 + percentile_90_0: 103.0 + percentile_99_5: 122.0 + stdev: 29.669336318969727 + shape: + - [36, 49, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_034.nii.gz + label_stats: + image_intensity: + - max: 96.0 + mean: 46.86933135986328 + median: 45.0 + min: 11.0 + percentile: [22.0, 33.0, 62.0, 84.130126953125] + percentile_00_5: 22.0 + percentile_10_0: 33.0 + percentile_90_0: 62.0 + percentile_99_5: 84.130126953125 + stdev: 11.737112998962402 + label: + - image_intensity: + - max: 255.0 + mean: 66.13209533691406 + median: 67.0 + min: 2.0 + percentile: [8.0, 26.0, 103.0, 124.0] + percentile_00_5: 8.0 + percentile_10_0: 26.0 + percentile_90_0: 103.0 + percentile_99_5: 124.0 + stdev: 29.99701499938965 + ncomponents: 1 + pixel_percentage: 0.952168345451355 + shape: + - [36, 49, 40] + - image_intensity: + - max: 88.0 + mean: 48.61038589477539 + median: 48.0 + min: 19.0 + percentile: [26.0, 36.0, 62.0, 78.0] + percentile_00_5: 26.0 + percentile_10_0: 36.0 + percentile_90_0: 62.0 + percentile_99_5: 78.0 + stdev: 10.322800636291504 + ncomponents: 1 + pixel_percentage: 0.025935374200344086 + shape: + - [21, 17, 15] + - image_intensity: + - max: 96.0 + mean: 44.8071174621582 + median: 42.0 + min: 11.0 + percentile: [21.0, 31.0, 63.0, 87.0] + percentile_00_5: 21.0 + percentile_10_0: 31.0 + percentile_90_0: 63.0 + percentile_99_5: 87.0 + stdev: 12.917876243591309 + ncomponents: 1 + pixel_percentage: 0.021896257996559143 + shape: + - [16, 21, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_383.nii.gz + image_foreground_stats: + intensity: + - max: 843.4417724609375 + mean: 409.1273193359375 + median: 387.7111511230469 + min: 47.613651275634766 + percentile: [197.2565460205078, 299.2857971191406, 550.9579467773438, 754.3704223632812] + percentile_00_5: 197.2565460205078 + percentile_10_0: 299.2857971191406 + percentile_90_0: 550.9579467773438 + percentile_99_5: 754.3704223632812 + stdev: 103.62618255615234 + image_stats: + channels: 1 + cropped_shape: + - [33, 55, 29] + intensity: + - max: 1074.7081298828125 + mean: 518.3602294921875 + median: 510.146240234375 + min: 0.0 + percentile: [27.207799911499023, 231.26629638671875, 823.0359497070312, 925.065185546875] + percentile_00_5: 27.207799911499023 + percentile_10_0: 231.26629638671875 + percentile_90_0: 823.0359497070312 + percentile_99_5: 925.065185546875 + stdev: 224.49342346191406 + shape: + - [33, 55, 29] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_383.nii.gz + label_stats: + image_intensity: + - max: 843.4417724609375 + mean: 409.1273193359375 + median: 387.7111511230469 + min: 47.613651275634766 + percentile: [197.2565460205078, 299.2857971191406, 550.9579467773438, 754.3704223632812] + percentile_00_5: 197.2565460205078 + percentile_10_0: 299.2857971191406 + percentile_90_0: 550.9579467773438 + percentile_99_5: 754.3704223632812 + stdev: 103.62618255615234 + label: + - image_intensity: + - max: 1074.7081298828125 + mean: 525.9508666992188 + median: 530.5521240234375 + min: 0.0 + percentile: [27.207799911499023, 224.46435546875, 829.837890625, 925.065185546875] + percentile_00_5: 27.207799911499023 + percentile_10_0: 224.46435546875 + percentile_90_0: 829.837890625 + percentile_99_5: 925.065185546875 + stdev: 228.6186065673828 + ncomponents: 1 + pixel_percentage: 0.9350242018699646 + shape: + - [33, 55, 29] + - image_intensity: + - max: 755.0164184570312 + mean: 403.38201904296875 + median: 394.5130920410156 + min: 47.613651275634766 + percentile: [196.4403076171875, 299.2857971191406, 530.5521240234375, 686.9969482421875] + percentile_00_5: 196.4403076171875 + percentile_10_0: 299.2857971191406 + percentile_90_0: 530.5521240234375 + percentile_99_5: 686.9969482421875 + stdev: 93.18011474609375 + ncomponents: 1 + pixel_percentage: 0.03376080468297005 + shape: + - [21, 18, 14] + - image_intensity: + - max: 843.4417724609375 + mean: 415.3412170410156 + median: 387.7111511230469 + min: 170.0487518310547 + percentile: [210.86044311523438, 299.2857971191406, 578.165771484375, 787.5980224609375] + percentile_00_5: 210.86044311523438 + percentile_10_0: 299.2857971191406 + percentile_90_0: 578.165771484375 + percentile_99_5: 787.5980224609375 + stdev: 113.52355194091797 + ncomponents: 1 + pixel_percentage: 0.031214971095323563 + shape: + - [19, 24, 16] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_049.nii.gz + image_foreground_stats: + intensity: + - max: 1230.8634033203125 + mean: 574.8159790039062 + median: 557.7349853515625 + min: 163.4740447998047 + percentile: [278.86749267578125, 413.4931640625, 759.6735229492188, 1067.389404296875] + percentile_00_5: 278.86749267578125 + percentile_10_0: 413.4931640625 + percentile_90_0: 759.6735229492188 + percentile_99_5: 1067.389404296875 + stdev: 143.02377319335938 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 36] + intensity: + - max: 3000.2294921875 + mean: 765.1668701171875 + median: 750.057373046875 + min: 0.0 + percentile: [67.3128433227539, 365.4125671386719, 1182.7828369140625, 1432.8018798828125] + percentile_00_5: 67.3128433227539 + percentile_10_0: 365.4125671386719 + percentile_90_0: 1182.7828369140625 + percentile_99_5: 1432.8018798828125 + stdev: 315.8070068359375 + shape: + - [35, 51, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_049.nii.gz + label_stats: + image_intensity: + - max: 1230.8634033203125 + mean: 574.8159790039062 + median: 557.7349853515625 + min: 163.4740447998047 + percentile: [278.86749267578125, 413.4931640625, 759.6735229492188, 1067.389404296875] + percentile_00_5: 278.86749267578125 + percentile_10_0: 413.4931640625 + percentile_90_0: 759.6735229492188 + percentile_99_5: 1067.389404296875 + stdev: 143.02377319335938 + label: + - image_intensity: + - max: 3000.2294921875 + mean: 776.89013671875 + median: 778.90576171875 + min: 0.0 + percentile: [67.3128433227539, 365.4125671386719, 1192.39892578125, 1432.8018798828125] + percentile_00_5: 67.3128433227539 + percentile_10_0: 365.4125671386719 + percentile_90_0: 1192.39892578125 + percentile_99_5: 1432.8018798828125 + stdev: 319.7618713378906 + ncomponents: 1 + pixel_percentage: 0.9419856667518616 + shape: + - [35, 51, 36] + - image_intensity: + - max: 1086.62158203125 + mean: 572.2548828125 + median: 567.35107421875 + min: 163.4740447998047 + percentile: [284.0121154785156, 413.4931640625, 730.8251342773438, 942.3798217773438] + percentile_00_5: 284.0121154785156 + percentile_10_0: 413.4931640625 + percentile_90_0: 730.8251342773438 + percentile_99_5: 942.3798217773438 + stdev: 127.6119155883789 + ncomponents: 1 + pixel_percentage: 0.029691876843571663 + shape: + - [22, 16, 14] + - image_intensity: + - max: 1230.8634033203125 + mean: 577.5008544921875 + median: 548.1188354492188 + min: 211.5546417236328 + percentile: [278.86749267578125, 403.8770446777344, 788.5218505859375, 1131.96240234375] + percentile_00_5: 278.86749267578125 + percentile_10_0: 403.8770446777344 + percentile_90_0: 788.5218505859375 + percentile_99_5: 1131.96240234375 + stdev: 157.52581787109375 + ncomponents: 1 + pixel_percentage: 0.028322439640760422 + shape: + - [17, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_149.nii.gz + image_foreground_stats: + intensity: + - max: 91.0 + mean: 48.696468353271484 + median: 47.0 + min: 16.0 + percentile: [26.0, 38.0, 63.0, 83.0] + percentile_00_5: 26.0 + percentile_10_0: 38.0 + percentile_90_0: 63.0 + percentile_99_5: 83.0 + stdev: 10.166768074035645 + image_stats: + channels: 1 + cropped_shape: + - [33, 49, 32] + intensity: + - max: 253.0 + mean: 64.84362030029297 + median: 66.0 + min: 2.0 + percentile: [7.0, 29.0, 99.0, 116.0] + percentile_00_5: 7.0 + percentile_10_0: 29.0 + percentile_90_0: 99.0 + percentile_99_5: 116.0 + stdev: 27.183324813842773 + shape: + - [33, 49, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_149.nii.gz + label_stats: + image_intensity: + - max: 91.0 + mean: 48.696468353271484 + median: 47.0 + min: 16.0 + percentile: [26.0, 38.0, 63.0, 83.0] + percentile_00_5: 26.0 + percentile_10_0: 38.0 + percentile_90_0: 63.0 + percentile_99_5: 83.0 + stdev: 10.166768074035645 + label: + - image_intensity: + - max: 253.0 + mean: 65.8878402709961 + median: 69.0 + min: 2.0 + percentile: [7.0, 28.0, 99.0, 117.0] + percentile_00_5: 7.0 + percentile_10_0: 28.0 + percentile_90_0: 99.0 + percentile_99_5: 117.0 + stdev: 27.60585594177246 + ncomponents: 1 + pixel_percentage: 0.9392586350440979 + shape: + - [33, 49, 32] + - image_intensity: + - max: 86.0 + mean: 48.8358039855957 + median: 47.0 + min: 16.0 + percentile: [23.0, 39.0, 62.0, 79.905029296875] + percentile_00_5: 23.0 + percentile_10_0: 39.0 + percentile_90_0: 62.0 + percentile_99_5: 79.905029296875 + stdev: 9.509784698486328 + ncomponents: 1 + pixel_percentage: 0.03130797669291496 + shape: + - [18, 18, 12] + - image_intensity: + - max: 91.0 + mean: 48.54825973510742 + median: 46.0 + min: 19.0 + percentile: [28.0, 38.0, 64.0, 88.0] + percentile_00_5: 28.0 + percentile_10_0: 38.0 + percentile_90_0: 64.0 + percentile_99_5: 88.0 + stdev: 10.819937705993652 + ncomponents: 1 + pixel_percentage: 0.029433364048600197 + shape: + - [18, 20, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_057.nii.gz + image_foreground_stats: + intensity: + - max: 712.4601440429688 + mean: 325.7237243652344 + median: 311.3271179199219 + min: 77.83177947998047 + percentile: [137.70237731933594, 233.49534606933594, 437.0553894042969, 593.5564575195312] + percentile_00_5: 137.70237731933594 + percentile_10_0: 233.49534606933594 + percentile_90_0: 437.0553894042969 + percentile_99_5: 593.5564575195312 + stdev: 83.03717041015625 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 34] + intensity: + - max: 1299.1920166015625 + mean: 397.263916015625 + median: 401.1330261230469 + min: 0.0 + percentile: [17.961179733276367, 101.78002166748047, 646.6024780273438, 736.4083862304688] + percentile_00_5: 17.961179733276367 + percentile_10_0: 101.78002166748047 + percentile_90_0: 646.6024780273438 + percentile_99_5: 736.4083862304688 + stdev: 196.61618041992188 + shape: + - [35, 51, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_057.nii.gz + label_stats: + image_intensity: + - max: 712.4601440429688 + mean: 325.7237243652344 + median: 311.3271179199219 + min: 77.83177947998047 + percentile: [137.70237731933594, 233.49534606933594, 437.0553894042969, 593.5564575195312] + percentile_00_5: 137.70237731933594 + percentile_10_0: 233.49534606933594 + percentile_90_0: 437.0553894042969 + percentile_99_5: 593.5564575195312 + stdev: 83.03717041015625 + label: + - image_intensity: + - max: 1299.1920166015625 + mean: 400.6891784667969 + median: 413.1071472167969 + min: 0.0 + percentile: [17.961179733276367, 95.79296112060547, 652.5895385742188, 742.3954467773438] + percentile_00_5: 17.961179733276367 + percentile_10_0: 95.79296112060547 + percentile_90_0: 652.5895385742188 + percentile_99_5: 742.3954467773438 + stdev: 199.8046875 + ncomponents: 1 + pixel_percentage: 0.954308807849884 + shape: + - [35, 51, 34] + - image_intensity: + - max: 598.7059936523438 + mean: 329.1590881347656 + median: 317.3141784667969 + min: 77.83177947998047 + percentile: [137.70237731933594, 227.50828552246094, 443.0424499511719, 551.1390991210938] + percentile_00_5: 137.70237731933594 + percentile_10_0: 227.50828552246094 + percentile_90_0: 443.0424499511719 + percentile_99_5: 551.1390991210938 + stdev: 83.14595794677734 + ncomponents: 1 + pixel_percentage: 0.022903278470039368 + shape: + - [20, 14, 13] + - image_intensity: + - max: 712.4601440429688 + mean: 322.27093505859375 + median: 311.3271179199219 + min: 83.81884002685547 + percentile: [137.16354370117188, 233.49534606933594, 431.0683288574219, 634.6283569335938] + percentile_00_5: 137.16354370117188 + percentile_10_0: 233.49534606933594 + percentile_90_0: 431.0683288574219 + percentile_99_5: 634.6283569335938 + stdev: 82.78416442871094 + ncomponents: 1 + pixel_percentage: 0.02278793789446354 + shape: + - [19, 25, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_157.nii.gz + image_foreground_stats: + intensity: + - max: 808.1236572265625 + mean: 392.1883239746094 + median: 376.0019836425781 + min: 72.95561218261719 + percentile: [190.80697631835938, 286.2104797363281, 521.9132080078125, 740.780029296875] + percentile_00_5: 190.80697631835938 + percentile_10_0: 286.2104797363281 + percentile_90_0: 521.9132080078125 + percentile_99_5: 740.780029296875 + stdev: 98.14913940429688 + image_stats: + channels: 1 + cropped_shape: + - [36, 51, 35] + intensity: + - max: 1290.7530517578125 + mean: 498.3443908691406 + median: 510.68927001953125 + min: 0.0 + percentile: [22.447879791259766, 179.58303833007812, 785.67578125, 881.0792846679688] + percentile_00_5: 22.447879791259766 + percentile_10_0: 179.58303833007812 + percentile_90_0: 785.67578125 + percentile_99_5: 881.0792846679688 + stdev: 222.6847686767578 + shape: + - [36, 51, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_157.nii.gz + label_stats: + image_intensity: + - max: 808.1236572265625 + mean: 392.1883239746094 + median: 376.0019836425781 + min: 72.95561218261719 + percentile: [190.80697631835938, 286.2104797363281, 521.9132080078125, 740.780029296875] + percentile_00_5: 190.80697631835938 + percentile_10_0: 286.2104797363281 + percentile_90_0: 521.9132080078125 + percentile_99_5: 740.780029296875 + stdev: 98.14913940429688 + label: + - image_intensity: + - max: 1290.7530517578125 + mean: 504.1865539550781 + median: 527.525146484375 + min: 0.0 + percentile: [22.447879791259766, 162.74713134765625, 785.67578125, 886.6912231445312] + percentile_00_5: 22.447879791259766 + percentile_10_0: 162.74713134765625 + percentile_90_0: 785.67578125 + percentile_99_5: 886.6912231445312 + stdev: 226.12625122070312 + ncomponents: 1 + pixel_percentage: 0.9478369355201721 + shape: + - [36, 51, 35] + - image_intensity: + - max: 735.1680908203125 + mean: 386.6623840332031 + median: 381.61395263671875 + min: 72.95561218261719 + percentile: [152.72976684570312, 291.82244873046875, 499.46533203125, 634.152587890625] + percentile_00_5: 152.72976684570312 + percentile_10_0: 291.82244873046875 + percentile_90_0: 499.46533203125 + percentile_99_5: 634.152587890625 + stdev: 83.67259216308594 + ncomponents: 1 + pixel_percentage: 0.02247120998799801 + shape: + - [20, 16, 12] + - image_intensity: + - max: 808.1236572265625 + mean: 396.370361328125 + median: 370.3900146484375 + min: 173.9710693359375 + percentile: [207.64288330078125, 286.2104797363281, 555.5850219726562, 752.0039672851562] + percentile_00_5: 207.64288330078125 + percentile_10_0: 286.2104797363281 + percentile_90_0: 555.5850219726562 + percentile_99_5: 752.0039672851562 + stdev: 107.63224792480469 + ncomponents: 1 + pixel_percentage: 0.029691876843571663 + shape: + - [22, 24, 23] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_102.nii.gz + image_foreground_stats: + intensity: + - max: 826.1170043945312 + mean: 357.4031982421875 + median: 347.8387451171875 + min: 21.73992156982422 + percentile: [123.19288635253906, 239.13912963867188, 500.0181884765625, 688.4308471679688] + percentile_00_5: 123.19288635253906 + percentile_10_0: 239.13912963867188 + percentile_90_0: 500.0181884765625 + percentile_99_5: 688.4308471679688 + stdev: 105.01091003417969 + image_stats: + channels: 1 + cropped_shape: + - [36, 55, 32] + intensity: + - max: 2318.9248046875 + mean: 469.2342834472656 + median: 463.78497314453125 + min: 0.0 + percentile: [28.986560821533203, 173.91937255859375, 746.4039306640625, 862.3501586914062] + percentile_00_5: 28.986560821533203 + percentile_10_0: 173.91937255859375 + percentile_90_0: 746.4039306640625 + percentile_99_5: 862.3501586914062 + stdev: 218.90335083007812 + shape: + - [36, 55, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_102.nii.gz + label_stats: + image_intensity: + - max: 826.1170043945312 + mean: 357.4031982421875 + median: 347.8387451171875 + min: 21.73992156982422 + percentile: [123.19288635253906, 239.13912963867188, 500.0181884765625, 688.4308471679688] + percentile_00_5: 123.19288635253906 + percentile_10_0: 239.13912963867188 + percentile_90_0: 500.0181884765625 + percentile_99_5: 688.4308471679688 + stdev: 105.01091003417969 + label: + - image_intensity: + - max: 2318.9248046875 + mean: 476.6795959472656 + median: 485.52490234375 + min: 0.0 + percentile: [21.73992156982422, 166.6727294921875, 753.6505737304688, 862.3501586914062] + percentile_00_5: 21.73992156982422 + percentile_10_0: 166.6727294921875 + percentile_90_0: 753.6505737304688 + percentile_99_5: 862.3501586914062 + stdev: 222.45614624023438 + ncomponents: 1 + pixel_percentage: 0.9375789165496826 + shape: + - [36, 55, 32] + - image_intensity: + - max: 731.91064453125 + mean: 363.1076354980469 + median: 355.0853576660156 + min: 21.73992156982422 + percentile: [123.19288635253906, 246.38577270507812, 500.0181884765625, 644.9509887695312] + percentile_00_5: 123.19288635253906 + percentile_10_0: 246.38577270507812 + percentile_90_0: 500.0181884765625 + percentile_99_5: 644.9509887695312 + stdev: 100.49949645996094 + ncomponents: 1 + pixel_percentage: 0.036126893013715744 + shape: + - [25, 21, 13] + - image_intensity: + - max: 826.1170043945312 + mean: 349.5655517578125 + median: 333.345458984375 + min: 72.46640014648438 + percentile: [130.4395294189453, 231.89248657226562, 485.52490234375, 736.802490234375] + percentile_00_5: 130.4395294189453 + percentile_10_0: 231.89248657226562 + percentile_90_0: 485.52490234375 + percentile_99_5: 736.802490234375 + stdev: 110.43097686767578 + ncomponents: 1 + pixel_percentage: 0.026294192299246788 + shape: + - [19, 22, 18] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_161.nii.gz + image_foreground_stats: + intensity: + - max: 89.0 + mean: 45.35458755493164 + median: 43.0 + min: 18.0 + percentile: [26.579999923706055, 35.0, 58.0, 81.419921875] + percentile_00_5: 26.579999923706055 + percentile_10_0: 35.0 + percentile_90_0: 58.0 + percentile_99_5: 81.419921875 + stdev: 9.975900650024414 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 36] + intensity: + - max: 249.0 + mean: 58.208526611328125 + median: 58.0 + min: 1.0 + percentile: [6.0, 23.0, 92.0, 110.0] + percentile_00_5: 6.0 + percentile_10_0: 23.0 + percentile_90_0: 92.0 + percentile_99_5: 110.0 + stdev: 26.11874008178711 + shape: + - [35, 51, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_161.nii.gz + label_stats: + image_intensity: + - max: 89.0 + mean: 45.35458755493164 + median: 43.0 + min: 18.0 + percentile: [26.579999923706055, 35.0, 58.0, 81.419921875] + percentile_00_5: 26.579999923706055 + percentile_10_0: 35.0 + percentile_90_0: 58.0 + percentile_99_5: 81.419921875 + stdev: 9.975900650024414 + label: + - image_intensity: + - max: 249.0 + mean: 58.99768829345703 + median: 60.0 + min: 1.0 + percentile: [5.0, 22.0, 92.0, 111.0] + percentile_00_5: 5.0 + percentile_10_0: 22.0 + percentile_90_0: 92.0 + percentile_99_5: 111.0 + stdev: 26.59313201904297 + ncomponents: 1 + pixel_percentage: 0.9421568512916565 + shape: + - [35, 51, 36] + - image_intensity: + - max: 83.0 + mean: 45.267608642578125 + median: 44.0 + min: 18.0 + percentile: [24.869998931884766, 35.0, 57.0, 76.0] + percentile_00_5: 24.869998931884766 + percentile_10_0: 35.0 + percentile_90_0: 57.0 + percentile_99_5: 76.0 + stdev: 8.759698867797852 + ncomponents: 1 + pixel_percentage: 0.02762215957045555 + shape: + - [22, 15, 14] + - image_intensity: + - max: 89.0 + mean: 45.43408966064453 + median: 42.0 + min: 21.0 + percentile: [27.704999923706055, 35.0, 61.0, 84.0] + percentile_00_5: 27.704999923706055 + percentile_10_0: 35.0 + percentile_90_0: 61.0 + percentile_99_5: 84.0 + stdev: 10.96960163116455 + ncomponents: 1 + pixel_percentage: 0.03022097796201706 + shape: + - [17, 26, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_173.nii.gz + image_foreground_stats: + intensity: + - max: 99.0 + mean: 48.30896759033203 + median: 46.0 + min: 21.0 + percentile: [29.0, 36.0, 64.0, 83.0] + percentile_00_5: 29.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 83.0 + stdev: 10.936361312866211 + image_stats: + channels: 1 + cropped_shape: + - [35, 53, 32] + intensity: + - max: 252.0 + mean: 60.54133987426758 + median: 60.0 + min: 2.0 + percentile: [7.0, 32.0, 91.0, 111.0] + percentile_00_5: 7.0 + percentile_10_0: 32.0 + percentile_90_0: 91.0 + percentile_99_5: 111.0 + stdev: 23.756322860717773 + shape: + - [35, 53, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_173.nii.gz + label_stats: + image_intensity: + - max: 99.0 + mean: 48.30896759033203 + median: 46.0 + min: 21.0 + percentile: [29.0, 36.0, 64.0, 83.0] + percentile_00_5: 29.0 + percentile_10_0: 36.0 + percentile_90_0: 64.0 + percentile_99_5: 83.0 + stdev: 10.936361312866211 + label: + - image_intensity: + - max: 252.0 + mean: 61.3210563659668 + median: 62.0 + min: 2.0 + percentile: [7.0, 32.0, 92.0, 111.0] + percentile_00_5: 7.0 + percentile_10_0: 32.0 + percentile_90_0: 92.0 + percentile_99_5: 111.0 + stdev: 24.136423110961914 + ncomponents: 1 + pixel_percentage: 0.9400774836540222 + shape: + - [35, 53, 32] + - image_intensity: + - max: 88.0 + mean: 48.49252700805664 + median: 47.0 + min: 26.0 + percentile: [30.0, 37.0, 62.0, 79.0] + percentile_00_5: 30.0 + percentile_10_0: 37.0 + percentile_90_0: 62.0 + percentile_99_5: 79.0 + stdev: 9.827911376953125 + ncomponents: 1 + pixel_percentage: 0.02592654898762703 + shape: + - [18, 16, 14] + - image_intensity: + - max: 99.0 + mean: 48.16897964477539 + median: 46.0 + min: 21.0 + percentile: [28.0, 36.0, 65.0, 85.0] + percentile_00_5: 28.0 + percentile_10_0: 36.0 + percentile_90_0: 65.0 + percentile_99_5: 85.0 + stdev: 11.70946979522705 + ncomponents: 1 + pixel_percentage: 0.03399595618247986 + shape: + - [17, 26, 20] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_370.nii.gz + image_foreground_stats: + intensity: + - max: 879.9661254882812 + mean: 387.33709716796875 + median: 364.31719970703125 + min: 67.25856018066406 + percentile: [168.14639282226562, 263.4293518066406, 543.67333984375, 790.3729248046875] + percentile_00_5: 168.14639282226562 + percentile_10_0: 263.4293518066406 + percentile_90_0: 543.67333984375 + percentile_99_5: 790.3729248046875 + stdev: 117.5162124633789 + image_stats: + channels: 1 + cropped_shape: + - [35, 50, 36] + intensity: + - max: 3968.2548828125 + mean: 523.1017456054688 + median: 543.67333984375 + min: 0.0 + percentile: [28.024398803710938, 207.38055419921875, 801.497802734375, 919.2003173828125] + percentile_00_5: 28.024398803710938 + percentile_10_0: 207.38055419921875 + percentile_90_0: 801.497802734375 + percentile_99_5: 919.2003173828125 + stdev: 233.7449493408203 + shape: + - [35, 50, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_370.nii.gz + label_stats: + image_intensity: + - max: 879.9661254882812 + mean: 387.33709716796875 + median: 364.31719970703125 + min: 67.25856018066406 + percentile: [168.14639282226562, 263.4293518066406, 543.67333984375, 790.3729248046875] + percentile_00_5: 168.14639282226562 + percentile_10_0: 263.4293518066406 + percentile_90_0: 543.67333984375 + percentile_99_5: 790.3729248046875 + stdev: 117.5162124633789 + label: + - image_intensity: + - max: 3968.2548828125 + mean: 530.8418579101562 + median: 560.4879760742188 + min: 0.0 + percentile: [28.024398803710938, 201.7756805419922, 807.1027221679688, 924.80517578125] + percentile_00_5: 28.024398803710938 + percentile_10_0: 201.7756805419922 + percentile_90_0: 807.1027221679688 + percentile_99_5: 924.80517578125 + stdev: 236.33352661132812 + ncomponents: 1 + pixel_percentage: 0.9460635185241699 + shape: + - [35, 50, 36] + - image_intensity: + - max: 879.9661254882812 + mean: 400.6208190917969 + median: 381.1318359375 + min: 128.9122314453125 + percentile: [184.84893798828125, 274.63909912109375, 549.2781982421875, 796.005126953125] + percentile_00_5: 184.84893798828125 + percentile_10_0: 274.63909912109375 + percentile_90_0: 549.2781982421875 + percentile_99_5: 796.005126953125 + stdev: 114.73052978515625 + ncomponents: 1 + pixel_percentage: 0.0253492072224617 + shape: + - [22, 16, 14] + - image_intensity: + - max: 857.546630859375 + mean: 375.55804443359375 + median: 347.5025634765625 + min: 67.25856018066406 + percentile: [162.54151916503906, 252.21958923339844, 538.0684814453125, 779.0783081054688] + percentile_00_5: 162.54151916503906 + percentile_10_0: 252.21958923339844 + percentile_90_0: 538.0684814453125 + percentile_99_5: 779.0783081054688 + stdev: 118.69512939453125 + ncomponents: 1 + pixel_percentage: 0.028587302193045616 + shape: + - [23, 24, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_301.nii.gz + image_foreground_stats: + intensity: + - max: 897.68212890625 + mean: 426.68878173828125 + median: 407.45855712890625 + min: 76.39848327636719 + percentile: [210.0958251953125, 318.3269958496094, 560.2554931640625, 808.5505981445312] + percentile_00_5: 210.0958251953125 + percentile_10_0: 318.3269958496094 + percentile_90_0: 560.2554931640625 + percentile_99_5: 808.5505981445312 + stdev: 101.80986022949219 + image_stats: + channels: 1 + cropped_shape: + - [31, 50, 36] + intensity: + - max: 3495.23046875 + mean: 545.8502807617188 + median: 541.1558837890625 + min: 0.0 + percentile: [38.199241638183594, 248.29505920410156, 840.38330078125, 974.0806274414062] + percentile_00_5: 38.199241638183594 + percentile_10_0: 248.29505920410156 + percentile_90_0: 840.38330078125 + percentile_99_5: 974.0806274414062 + stdev: 231.167724609375 + shape: + - [31, 50, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_301.nii.gz + label_stats: + image_intensity: + - max: 897.68212890625 + mean: 426.68878173828125 + median: 407.45855712890625 + min: 76.39848327636719 + percentile: [210.0958251953125, 318.3269958496094, 560.2554931640625, 808.5505981445312] + percentile_00_5: 210.0958251953125 + percentile_10_0: 318.3269958496094 + percentile_90_0: 560.2554931640625 + percentile_99_5: 808.5505981445312 + stdev: 101.80986022949219 + label: + - image_intensity: + - max: 3495.23046875 + mean: 553.7275390625 + median: 560.2554931640625 + min: 0.0 + percentile: [31.832698822021484, 235.56198120117188, 846.7498168945312, 974.0806274414062] + percentile_00_5: 31.832698822021484 + percentile_10_0: 235.56198120117188 + percentile_90_0: 846.7498168945312 + percentile_99_5: 974.0806274414062 + stdev: 235.12808227539062 + ncomponents: 1 + pixel_percentage: 0.9379928112030029 + shape: + - [31, 50, 36] + - image_intensity: + - max: 814.9171142578125 + mean: 418.4114074707031 + median: 407.45855712890625 + min: 76.39848327636719 + percentile: [184.62965393066406, 318.3269958496094, 528.4227905273438, 706.6859130859375] + percentile_00_5: 184.62965393066406 + percentile_10_0: 318.3269958496094 + percentile_90_0: 528.4227905273438 + percentile_99_5: 706.6859130859375 + stdev: 86.74916076660156 + ncomponents: 1 + pixel_percentage: 0.028584228828549385 + shape: + - [20, 13, 16] + - image_intensity: + - max: 897.68212890625 + mean: 433.76788330078125 + median: 407.45855712890625 + min: 152.79696655273438 + percentile: [218.49964904785156, 318.3269958496094, 585.7216796875, 825.6132202148438] + percentile_00_5: 218.49964904785156 + percentile_10_0: 318.3269958496094 + percentile_90_0: 585.7216796875 + percentile_99_5: 825.6132202148438 + stdev: 112.6287612915039 + ncomponents: 1 + pixel_percentage: 0.033422939479351044 + shape: + - [18, 25, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_180.nii.gz + image_foreground_stats: + intensity: + - max: 373286.0 + mean: 172842.375 + median: 165904.890625 + min: 38711.140625 + percentile: [88482.609375, 127193.75, 221206.53125, 344570.625] + percentile_00_5: 88482.609375 + percentile_10_0: 127193.75 + percentile_90_0: 221206.53125 + percentile_99_5: 344570.625 + stdev: 42850.83203125 + image_stats: + channels: 1 + cropped_shape: + - [37, 45, 36] + intensity: + - max: 873765.75 + mean: 235864.515625 + median: 246092.25 + min: 0.0 + percentile: [8295.244140625, 71892.1171875, 373286.0, 423057.46875] + percentile_00_5: 8295.244140625 + percentile_10_0: 71892.1171875 + percentile_90_0: 373286.0 + percentile_99_5: 423057.46875 + stdev: 109090.796875 + shape: + - [37, 45, 36] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_180.nii.gz + label_stats: + image_intensity: + - max: 373286.0 + mean: 172842.375 + median: 165904.890625 + min: 38711.140625 + percentile: [88482.609375, 127193.75, 221206.53125, 344570.625] + percentile_00_5: 88482.609375 + percentile_10_0: 127193.75 + percentile_90_0: 221206.53125 + percentile_99_5: 344570.625 + stdev: 42850.83203125 + label: + - image_intensity: + - max: 873765.75 + mean: 238811.875 + median: 254387.5 + min: 0.0 + percentile: [8295.244140625, 69127.0390625, 373286.0, 423057.46875] + percentile_00_5: 8295.244140625 + percentile_10_0: 69127.0390625 + percentile_90_0: 373286.0 + percentile_99_5: 423057.46875 + stdev: 110349.71875 + ncomponents: 1 + pixel_percentage: 0.9553219676017761 + shape: + - [37, 45, 36] + - image_intensity: + - max: 331809.78125 + mean: 172462.3125 + median: 168669.96875 + min: 38711.140625 + percentile: [88427.3046875, 127193.75, 218441.4375, 295863.71875] + percentile_00_5: 88427.3046875 + percentile_10_0: 127193.75 + percentile_90_0: 218441.4375 + percentile_99_5: 295863.71875 + stdev: 37609.1171875 + ncomponents: 1 + pixel_percentage: 0.02330663986504078 + shape: + - [21, 15, 13] + - image_intensity: + - max: 373286.0 + mean: 173256.84375 + median: 163139.8125 + min: 66361.953125 + percentile: [89588.640625, 127193.75, 229501.765625, 357248.40625] + percentile_00_5: 89588.640625 + percentile_10_0: 127193.75 + percentile_90_0: 229501.765625 + percentile_99_5: 357248.40625 + stdev: 47914.5390625 + ncomponents: 1 + pixel_percentage: 0.021371372044086456 + shape: + - [19, 20, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_337.nii.gz + image_foreground_stats: + intensity: + - max: 773.855712890625 + mean: 344.5802917480469 + median: 329.7298278808594 + min: 20.18754005432129 + percentile: [100.93769836425781, 248.9796600341797, 471.0426025390625, 677.8975219726562] + percentile_00_5: 100.93769836425781 + percentile_10_0: 248.9796600341797 + percentile_90_0: 471.0426025390625 + percentile_99_5: 677.8975219726562 + stdev: 95.7658462524414 + image_stats: + channels: 1 + cropped_shape: + - [33, 44, 41] + intensity: + - max: 1729.399169921875 + mean: 440.8028564453125 + median: 450.85504150390625 + min: 0.0 + percentile: [20.18754005432129, 121.12523651123047, 706.5639038085938, 834.4182739257812] + percentile_00_5: 20.18754005432129 + percentile_10_0: 121.12523651123047 + percentile_90_0: 706.5639038085938 + percentile_99_5: 834.4182739257812 + stdev: 212.9915313720703 + shape: + - [33, 44, 41] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_337.nii.gz + label_stats: + image_intensity: + - max: 773.855712890625 + mean: 344.5802917480469 + median: 329.7298278808594 + min: 20.18754005432129 + percentile: [100.93769836425781, 248.9796600341797, 471.0426025390625, 677.8975219726562] + percentile_00_5: 100.93769836425781 + percentile_10_0: 248.9796600341797 + percentile_90_0: 471.0426025390625 + percentile_99_5: 677.8975219726562 + stdev: 95.7658462524414 + label: + - image_intensity: + - max: 1729.399169921875 + mean: 446.3646545410156 + median: 471.0426025390625 + min: 0.0 + percentile: [20.18754005432129, 114.39605712890625, 706.5639038085938, 834.4182739257812] + percentile_00_5: 20.18754005432129 + percentile_10_0: 114.39605712890625 + percentile_90_0: 706.5639038085938 + percentile_99_5: 834.4182739257812 + stdev: 216.5441436767578 + ncomponents: 1 + pixel_percentage: 0.9453571438789368 + shape: + - [33, 44, 41] + - image_intensity: + - max: 767.1265258789062 + mean: 339.791015625 + median: 329.7298278808594 + min: 26.916719436645508 + percentile: [94.2085189819336, 242.25047302246094, 464.31341552734375, 625.813720703125] + percentile_00_5: 94.2085189819336 + percentile_10_0: 242.25047302246094 + percentile_90_0: 464.31341552734375 + percentile_99_5: 625.813720703125 + stdev: 94.46194458007812 + ncomponents: 1 + pixel_percentage: 0.026053214445710182 + shape: + - [16, 13, 18] + - image_intensity: + - max: 773.855712890625 + mean: 348.9447326660156 + median: 329.7298278808594 + min: 20.18754005432129 + percentile: [158.16937255859375, 248.9796600341797, 471.0426025390625, 699.767333984375] + percentile_00_5: 158.16937255859375 + percentile_10_0: 248.9796600341797 + percentile_90_0: 471.0426025390625 + percentile_99_5: 699.767333984375 + stdev: 96.73252868652344 + ncomponents: 1 + pixel_percentage: 0.02858966588973999 + shape: + - [18, 20, 28] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_229.nii.gz + image_foreground_stats: + intensity: + - max: 756.3416137695312 + mean: 337.4050598144531 + median: 324.1463928222656 + min: 91.84148406982422 + percentile: [177.63223266601562, 248.51223754882812, 432.1951904296875, 680.7074584960938] + percentile_00_5: 177.63223266601562 + percentile_10_0: 248.51223754882812 + percentile_90_0: 432.1951904296875 + percentile_99_5: 680.7074584960938 + stdev: 80.90718078613281 + image_stats: + channels: 1 + cropped_shape: + - [33, 50, 35] + intensity: + - max: 1944.87841796875 + mean: 463.89837646484375 + median: 470.0122985839844 + min: 0.0 + percentile: [27.01219940185547, 199.89028930664062, 718.5245361328125, 821.1708984375] + percentile_00_5: 27.01219940185547 + percentile_10_0: 199.89028930664062 + percentile_90_0: 718.5245361328125 + percentile_99_5: 821.1708984375 + stdev: 199.32162475585938 + shape: + - [33, 50, 35] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_229.nii.gz + label_stats: + image_intensity: + - max: 756.3416137695312 + mean: 337.4050598144531 + median: 324.1463928222656 + min: 91.84148406982422 + percentile: [177.63223266601562, 248.51223754882812, 432.1951904296875, 680.7074584960938] + percentile_00_5: 177.63223266601562 + percentile_10_0: 248.51223754882812 + percentile_90_0: 432.1951904296875 + percentile_99_5: 680.7074584960938 + stdev: 80.90718078613281 + label: + - image_intensity: + - max: 1944.87841796875 + mean: 471.26226806640625 + median: 486.2196044921875 + min: 0.0 + percentile: [27.01219940185547, 194.4878387451172, 723.9269409179688, 821.1708984375] + percentile_00_5: 27.01219940185547 + percentile_10_0: 194.4878387451172 + percentile_90_0: 723.9269409179688 + percentile_99_5: 821.1708984375 + stdev: 201.68089294433594 + ncomponents: 1 + pixel_percentage: 0.9449869990348816 + shape: + - [33, 50, 35] + - image_intensity: + - max: 637.4879150390625 + mean: 328.7818603515625 + median: 324.1463928222656 + min: 91.84148406982422 + percentile: [162.0731964111328, 248.51223754882812, 421.39031982421875, 549.5089721679688] + percentile_00_5: 162.0731964111328 + percentile_10_0: 248.51223754882812 + percentile_90_0: 421.39031982421875 + percentile_99_5: 549.5089721679688 + stdev: 69.76150512695312 + ncomponents: 1 + pixel_percentage: 0.02524675242602825 + shape: + - [18, 16, 14] + - image_intensity: + - max: 756.3416137695312 + mean: 344.7190246582031 + median: 329.5488586425781 + min: 156.67076110839844 + percentile: [186.8704071044922, 253.91468811035156, 444.080322265625, 702.3171997070312] + percentile_00_5: 186.8704071044922 + percentile_10_0: 253.91468811035156 + percentile_90_0: 444.080322265625 + percentile_99_5: 702.3171997070312 + stdev: 88.62132263183594 + ncomponents: 1 + pixel_percentage: 0.029766233637928963 + shape: + - [18, 23, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_329.nii.gz + image_foreground_stats: + intensity: + - max: 810.587158203125 + mean: 384.2828674316406 + median: 351.65179443359375 + min: 17.880599975585938 + percentile: [107.28359985351562, 250.32839965820312, 572.17919921875, 756.9453735351562] + percentile_00_5: 107.28359985351562 + percentile_10_0: 250.32839965820312 + percentile_90_0: 572.17919921875 + percentile_99_5: 756.9453735351562 + stdev: 129.23568725585938 + image_stats: + channels: 1 + cropped_shape: + - [34, 53, 32] + intensity: + - max: 3290.0302734375 + mean: 481.5130310058594 + median: 476.81597900390625 + min: 0.0 + percentile: [35.761199951171875, 202.64678955078125, 750.9851684570312, 947.6717529296875] + percentile_00_5: 35.761199951171875 + percentile_10_0: 202.64678955078125 + percentile_90_0: 750.9851684570312 + percentile_99_5: 947.6717529296875 + stdev: 223.33169555664062 + shape: + - [34, 53, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_329.nii.gz + label_stats: + image_intensity: + - max: 810.587158203125 + mean: 384.2828674316406 + median: 351.65179443359375 + min: 17.880599975585938 + percentile: [107.28359985351562, 250.32839965820312, 572.17919921875, 756.9453735351562] + percentile_00_5: 107.28359985351562 + percentile_10_0: 250.32839965820312 + percentile_90_0: 572.17919921875 + percentile_99_5: 756.9453735351562 + stdev: 129.23568725585938 + label: + - image_intensity: + - max: 3290.0302734375 + mean: 488.13140869140625 + median: 494.69659423828125 + min: 0.0 + percentile: [29.80099868774414, 196.6865997314453, 756.9453735351562, 965.5523681640625] + percentile_00_5: 29.80099868774414 + percentile_10_0: 196.6865997314453 + percentile_90_0: 756.9453735351562 + percentile_99_5: 965.5523681640625 + stdev: 226.82139587402344 + ncomponents: 1 + pixel_percentage: 0.9362687468528748 + shape: + - [34, 53, 32] + - image_intensity: + - max: 804.626953125 + mean: 367.978515625 + median: 345.69158935546875 + min: 29.80099868774414 + percentile: [105.37632751464844, 250.32839965820312, 524.49755859375, 745.0249633789062] + percentile_00_5: 105.37632751464844 + percentile_10_0: 250.32839965820312 + percentile_90_0: 524.49755859375 + percentile_99_5: 745.0249633789062 + stdev: 111.99757385253906 + ncomponents: 1 + pixel_percentage: 0.033591147512197495 + shape: + - [21, 16, 14] + - image_intensity: + - max: 810.587158203125 + mean: 402.4540710449219 + median: 357.61199951171875 + min: 17.880599975585938 + percentile: [143.0447998046875, 256.2886047363281, 649.6618041992188, 762.9055786132812] + percentile_00_5: 143.0447998046875 + percentile_10_0: 256.2886047363281 + percentile_90_0: 649.6618041992188 + percentile_99_5: 762.9055786132812 + stdev: 143.9095001220703 + ncomponents: 1 + pixel_percentage: 0.030140122398734093 + shape: + - [16, 25, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_354.nii.gz + image_foreground_stats: + intensity: + - max: 730.186767578125 + mean: 341.19573974609375 + median: 336.5208435058594 + min: 19.048351287841797 + percentile: [126.98899841308594, 234.92965698242188, 457.160400390625, 628.5955810546875] + percentile_00_5: 126.98899841308594 + percentile_10_0: 234.92965698242188 + percentile_90_0: 457.160400390625 + percentile_99_5: 628.5955810546875 + stdev: 90.39067840576172 + image_stats: + channels: 1 + cropped_shape: + - [36, 50, 32] + intensity: + - max: 1892.1361083984375 + mean: 437.1247253417969 + median: 450.8109436035156 + min: 0.0 + percentile: [19.048351287841797, 126.98899841308594, 685.7406005859375, 793.6812744140625] + percentile_00_5: 19.048351287841797 + percentile_10_0: 126.98899841308594 + percentile_90_0: 685.7406005859375 + percentile_99_5: 793.6812744140625 + stdev: 204.61395263671875 + shape: + - [36, 50, 32] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_354.nii.gz + label_stats: + image_intensity: + - max: 730.186767578125 + mean: 341.19573974609375 + median: 336.5208435058594 + min: 19.048351287841797 + percentile: [126.98899841308594, 234.92965698242188, 457.160400390625, 628.5955810546875] + percentile_00_5: 126.98899841308594 + percentile_10_0: 234.92965698242188 + percentile_90_0: 457.160400390625 + percentile_99_5: 628.5955810546875 + stdev: 90.39067840576172 + label: + - image_intensity: + - max: 1892.1361083984375 + mean: 442.232666015625 + median: 469.85931396484375 + min: 0.0 + percentile: [19.048351287841797, 120.6395492553711, 685.7406005859375, 800.0307006835938] + percentile_00_5: 19.048351287841797 + percentile_10_0: 120.6395492553711 + percentile_90_0: 685.7406005859375 + percentile_99_5: 800.0307006835938 + stdev: 207.71377563476562 + ncomponents: 1 + pixel_percentage: 0.9494444727897644 + shape: + - [36, 50, 32] + - image_intensity: + - max: 660.3428344726562 + mean: 348.03619384765625 + median: 342.87030029296875 + min: 19.048351287841797 + percentile: [114.29010009765625, 247.62855529785156, 463.5098571777344, 605.4834594726562] + percentile_00_5: 114.29010009765625 + percentile_10_0: 247.62855529785156 + percentile_90_0: 463.5098571777344 + percentile_99_5: 605.4834594726562 + stdev: 86.94621276855469 + ncomponents: 1 + pixel_percentage: 0.026545139029622078 + shape: + - [21, 16, 12] + - image_intensity: + - max: 730.186767578125 + mean: 333.6330871582031 + median: 323.82196044921875 + min: 44.44615173339844 + percentile: [139.11643981933594, 228.5802001953125, 457.160400390625, 643.579345703125] + percentile_00_5: 139.11643981933594 + percentile_10_0: 228.5802001953125 + percentile_90_0: 457.160400390625 + percentile_99_5: 643.579345703125 + stdev: 93.47119140625 + ncomponents: 1 + pixel_percentage: 0.024010416120290756 + shape: + - [21, 23, 19] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_325.nii.gz + image_foreground_stats: + intensity: + - max: 960.3888549804688 + mean: 449.4330749511719 + median: 440.834228515625 + min: 7.872039794921875 + percentile: [165.31283569335938, 322.7536315917969, 598.2750244140625, 810.820068359375] + percentile_00_5: 165.31283569335938 + percentile_10_0: 322.7536315917969 + percentile_90_0: 598.2750244140625 + percentile_99_5: 810.820068359375 + stdev: 113.93912506103516 + image_stats: + channels: 1 + cropped_shape: + - [35, 51, 40] + intensity: + - max: 4479.1904296875 + mean: 587.176513671875 + median: 582.5309448242188 + min: 0.0 + percentile: [31.4881591796875, 196.80099487304688, 936.772705078125, 1117.82958984375] + percentile_00_5: 31.4881591796875 + percentile_10_0: 196.80099487304688 + percentile_90_0: 936.772705078125 + percentile_99_5: 1117.82958984375 + stdev: 282.170654296875 + shape: + - [35, 51, 40] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_325.nii.gz + label_stats: + image_intensity: + - max: 960.3888549804688 + mean: 449.4330749511719 + median: 440.834228515625 + min: 7.872039794921875 + percentile: [165.31283569335938, 322.7536315917969, 598.2750244140625, 810.820068359375] + percentile_00_5: 165.31283569335938 + percentile_10_0: 322.7536315917969 + percentile_90_0: 598.2750244140625 + percentile_99_5: 810.820068359375 + stdev: 113.93912506103516 + label: + - image_intensity: + - max: 4479.1904296875 + mean: 594.9926147460938 + median: 606.1470947265625 + min: 0.0 + percentile: [31.4881591796875, 188.928955078125, 944.644775390625, 1125.70166015625] + percentile_00_5: 31.4881591796875 + percentile_10_0: 188.928955078125 + percentile_90_0: 944.644775390625 + percentile_99_5: 1125.70166015625 + stdev: 286.8168640136719 + ncomponents: 1 + pixel_percentage: 0.9463025331497192 + shape: + - [35, 51, 40] + - image_intensity: + - max: 865.9243774414062 + mean: 455.1971740722656 + median: 440.834228515625 + min: 7.872039794921875 + percentile: [177.0028076171875, 330.62567138671875, 606.1470947265625, 810.820068359375] + percentile_00_5: 177.0028076171875 + percentile_10_0: 330.62567138671875 + percentile_90_0: 606.1470947265625 + percentile_99_5: 810.820068359375 + stdev: 115.61988067626953 + ncomponents: 1 + pixel_percentage: 0.026582632213830948 + shape: + - [21, 16, 15] + - image_intensity: + - max: 960.3888549804688 + mean: 443.7821350097656 + median: 432.9621887207031 + min: 47.23223876953125 + percentile: [157.4407958984375, 322.7536315917969, 582.5309448242188, 813.3781127929688] + percentile_00_5: 157.4407958984375 + percentile_10_0: 322.7536315917969 + percentile_90_0: 582.5309448242188 + percentile_99_5: 813.3781127929688 + stdev: 111.97929382324219 + ncomponents: 1 + pixel_percentage: 0.02711484581232071 + shape: + - [21, 25, 21] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_225.nii.gz + image_foreground_stats: + intensity: + - max: 970.541015625 + mean: 442.2082824707031 + median: 425.1130065917969 + min: 112.29399871826172 + percentile: [208.54598999023438, 312.8190002441406, 601.5750122070312, 866.2680053710938] + percentile_00_5: 208.54598999023438 + percentile_10_0: 312.8190002441406 + percentile_90_0: 601.5750122070312 + percentile_99_5: 866.2680053710938 + stdev: 120.2042465209961 + image_stats: + channels: 1 + cropped_shape: + - [33, 53, 26] + intensity: + - max: 1860.8719482421875 + mean: 559.1055297851562 + median: 569.490966796875 + min: 0.0 + percentile: [24.062999725341797, 144.37799072265625, 906.3729858398438, 1058.77197265625] + percentile_00_5: 24.062999725341797 + percentile_10_0: 144.37799072265625 + percentile_90_0: 906.3729858398438 + percentile_99_5: 1058.77197265625 + stdev: 276.254638671875 + shape: + - [33, 53, 26] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_225.nii.gz + label_stats: + image_intensity: + - max: 970.541015625 + mean: 442.2082824707031 + median: 425.1130065917969 + min: 112.29399871826172 + percentile: [208.54598999023438, 312.8190002441406, 601.5750122070312, 866.2680053710938] + percentile_00_5: 208.54598999023438 + percentile_10_0: 312.8190002441406 + percentile_90_0: 601.5750122070312 + percentile_99_5: 866.2680053710938 + stdev: 120.2042465209961 + label: + - image_intensity: + - max: 1860.8719482421875 + mean: 565.8341064453125 + median: 593.5540161132812 + min: 0.0 + percentile: [24.062999725341797, 136.35699462890625, 906.3729858398438, 1058.77197265625] + percentile_00_5: 24.062999725341797 + percentile_10_0: 136.35699462890625 + percentile_90_0: 906.3729858398438 + percentile_99_5: 1058.77197265625 + stdev: 281.15093994140625 + ncomponents: 1 + pixel_percentage: 0.9455732703208923 + shape: + - [33, 53, 26] + - image_intensity: + - max: 874.2890014648438 + mean: 435.1266784667969 + median: 425.1130065917969 + min: 112.29399871826172 + percentile: [205.25738525390625, 311.2148132324219, 577.511962890625, 803.9456176757812] + percentile_00_5: 205.25738525390625 + percentile_10_0: 311.2148132324219 + percentile_90_0: 577.511962890625 + percentile_99_5: 803.9456176757812 + stdev: 110.34451293945312 + ncomponents: 1 + pixel_percentage: 0.024607468396425247 + shape: + - [19, 14, 10] + - image_intensity: + - max: 970.541015625 + mean: 448.0521240234375 + median: 425.1130065917969 + min: 168.4409942626953 + percentile: [208.54598999023438, 312.8190002441406, 617.6170043945312, 898.3519897460938] + percentile_00_5: 208.54598999023438 + percentile_10_0: 312.8190002441406 + percentile_90_0: 617.6170043945312 + percentile_99_5: 898.3519897460938 + stdev: 127.47306060791016 + ncomponents: 1 + pixel_percentage: 0.02981923706829548 + shape: + - [20, 28, 15] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_092.nii.gz + image_foreground_stats: + intensity: + - max: 620.0889892578125 + mean: 298.8930358886719 + median: 290.1333923339844 + min: 34.133338928222656 + percentile: [136.53335571289062, 210.48892211914062, 403.91119384765625, 540.4445190429688] + percentile_00_5: 136.53335571289062 + percentile_10_0: 210.48892211914062 + percentile_90_0: 403.91119384765625 + percentile_99_5: 540.4445190429688 + stdev: 76.28549194335938 + image_stats: + channels: 1 + cropped_shape: + - [38, 49, 28] + intensity: + - max: 2178.844970703125 + mean: 395.8317565917969 + median: 409.6000671386719 + min: 0.0 + percentile: [17.066669464111328, 130.84446716308594, 614.400146484375, 705.42236328125] + percentile_00_5: 17.066669464111328 + percentile_10_0: 130.84446716308594 + percentile_90_0: 614.400146484375 + percentile_99_5: 705.42236328125 + stdev: 180.3633575439453 + shape: + - [38, 49, 28] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_092.nii.gz + label_stats: + image_intensity: + - max: 620.0889892578125 + mean: 298.8930358886719 + median: 290.1333923339844 + min: 34.133338928222656 + percentile: [136.53335571289062, 210.48892211914062, 403.91119384765625, 540.4445190429688] + percentile_00_5: 136.53335571289062 + percentile_10_0: 210.48892211914062 + percentile_90_0: 403.91119384765625 + percentile_99_5: 540.4445190429688 + stdev: 76.28549194335938 + label: + - image_intensity: + - max: 2178.844970703125 + mean: 402.0484924316406 + median: 426.666748046875 + min: 0.0 + percentile: [17.066669464111328, 125.15557861328125, 614.400146484375, 705.42236328125] + percentile_00_5: 17.066669464111328 + percentile_10_0: 125.15557861328125 + percentile_90_0: 614.400146484375 + percentile_99_5: 705.42236328125 + stdev: 183.31028747558594 + ncomponents: 1 + pixel_percentage: 0.9397345185279846 + shape: + - [38, 49, 28] + - image_intensity: + - max: 620.0889892578125 + mean: 312.35369873046875 + median: 301.51116943359375 + min: 34.133338928222656 + percentile: [138.26846313476562, 221.86671447753906, 415.2889709472656, 549.3480224609375] + percentile_00_5: 138.26846313476562 + percentile_10_0: 221.86671447753906 + percentile_90_0: 415.2889709472656 + percentile_99_5: 549.3480224609375 + stdev: 77.9832763671875 + ncomponents: 1 + pixel_percentage: 0.02854073978960514 + shape: + - [24, 14, 10] + - image_intensity: + - max: 620.0889892578125 + mean: 286.7833557128906 + median: 278.755615234375 + min: 73.95556640625 + percentile: [138.04090881347656, 204.80003356933594, 386.8445129394531, 512.0001220703125] + percentile_00_5: 138.04090881347656 + percentile_10_0: 204.80003356933594 + percentile_90_0: 386.8445129394531 + percentile_99_5: 512.0001220703125 + stdev: 72.62367248535156 + ncomponents: 1 + pixel_percentage: 0.0317247211933136 + shape: + - [22, 22, 17] + labels: [0, 1, 2] +- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_358.nii.gz + image_foreground_stats: + intensity: + - max: 1139.9168701171875 + mean: 490.15472412109375 + median: 469.9656982421875 + min: 49.99635314941406 + percentile: [169.9875946044922, 345.9748229980469, 659.9518432617188, 999.9270629882812] + percentile_00_5: 169.9875946044922 + percentile_10_0: 345.9748229980469 + percentile_90_0: 659.9518432617188 + percentile_99_5: 999.9270629882812 + stdev: 136.52745056152344 + image_stats: + channels: 1 + cropped_shape: + - [35, 50, 34] + intensity: + - max: 1359.9007568359375 + mean: 666.5247802734375 + median: 679.9503784179688 + min: 0.0 + percentile: [29.99781036376953, 249.9817657470703, 1049.92333984375, 1189.9132080078125] + percentile_00_5: 29.99781036376953 + percentile_10_0: 249.9817657470703 + percentile_90_0: 1049.92333984375 + percentile_99_5: 1189.9132080078125 + stdev: 301.83233642578125 + shape: + - [35, 50, 34] + spacing: + - [1.0, 1.0, 1.0] + label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_358.nii.gz + label_stats: + image_intensity: + - max: 1139.9168701171875 + mean: 490.15472412109375 + median: 469.9656982421875 + min: 49.99635314941406 + percentile: [169.9875946044922, 345.9748229980469, 659.9518432617188, 999.9270629882812] + percentile_00_5: 169.9875946044922 + percentile_10_0: 345.9748229980469 + percentile_90_0: 659.9518432617188 + percentile_99_5: 999.9270629882812 + stdev: 136.52745056152344 + label: + - image_intensity: + - max: 1359.9007568359375 + mean: 675.5188598632812 + median: 699.9489135742188 + min: 0.0 + percentile: [29.99781036376953, 239.98248291015625, 1059.922607421875, 1199.9124755859375] + percentile_00_5: 29.99781036376953 + percentile_10_0: 239.98248291015625 + percentile_90_0: 1059.922607421875 + percentile_99_5: 1199.9124755859375 + stdev: 305.1734924316406 + ncomponents: 1 + pixel_percentage: 0.9514790177345276 + shape: + - [35, 50, 34] + - image_intensity: + - max: 1029.9248046875 + mean: 484.5466003417969 + median: 469.9656982421875 + min: 49.99635314941406 + percentile: [121.79109954833984, 349.9744567871094, 659.9518432617188, 894.0350952148438] + percentile_00_5: 121.79109954833984 + percentile_10_0: 349.9744567871094 + percentile_90_0: 659.9518432617188 + percentile_99_5: 894.0350952148438 + stdev: 127.90323638916016 + ncomponents: 1 + pixel_percentage: 0.025529412552714348 + shape: + - [23, 19, 13] + - image_intensity: + - max: 1139.9168701171875 + mean: 496.3819580078125 + median: 469.9656982421875 + min: 109.99197387695312 + percentile: [238.33261108398438, 339.9751892089844, 679.9503784179688, 1023.2261352539062] + percentile_00_5: 238.33261108398438 + percentile_10_0: 339.9751892089844 + percentile_90_0: 679.9503784179688 + percentile_99_5: 1023.2261352539062 + stdev: 145.25244140625 + ncomponents: 1 + pixel_percentage: 0.022991595789790154 + shape: + - [23, 19, 19] + labels: [0, 1, 2] +stats_summary: + image_foreground_stats: + intensity: {max: 486420.21875, mean: 22356.19451308617, median: 21565.137033081053, + min: 0.0, percentile_00_5: 10025.874836195433, percentile_10_0: 15999.318258843055, + percentile_90_0: 29675.986145841158, percentile_99_5: 42594.37918219933, stdev: 5741.80349216828} + image_stats: + channels: + max: 1 + mean: 1.0 + median: 1.0 + min: 1 + percentile: [1, 1, 1, 1] + percentile_00_5: 1 + percentile_10_0: 1 + percentile_90_0: 1 + percentile_99_5: 1 + stdev: 0.0 + cropped_shape: + max: [43, 59, 47] + mean: [35.37692307692308, 49.98076923076923, 35.65384615384615] + median: [35.0, 50.0, 36.0] + min: [31, 40, 24] + percentile: + - [31, 40, 26] + - [33, 46, 30] + - [38, 54, 41] + - [41, 58, 45] + percentile_00_5: [31, 40, 26] + percentile_10_0: [33, 46, 30] + percentile_90_0: [38, 54, 41] + percentile_99_5: [41, 58, 45] + stdev: [1.979764494989571, 3.2539348051207666, 4.210264998898141] + intensity: {max: 1704295.25, mean: 29411.816703869747, median: 29634.744104356032, + min: 0.0, percentile_00_5: 1499.0803447980147, percentile_10_0: 10888.021187620896, + percentile_90_0: 46410.96342914288, percentile_99_5: 54237.95997103178, stdev: 13406.155988869301} + shape: + max: [43, 59, 47] + mean: [35.37692307692308, 49.98076923076923, 35.65384615384615] + median: [35.0, 50.0, 36.0] + min: [31, 40, 24] + percentile: + - [31, 40, 26] + - [33, 46, 30] + - [38, 54, 41] + - [41, 58, 45] + percentile_00_5: [31, 40, 26] + percentile_10_0: [33, 46, 30] + percentile_90_0: [38, 54, 41] + percentile_99_5: [41, 58, 45] + stdev: [1.979764494989571, 3.2539348051207666, 4.210264998898141] + spacing: + max: [1.0, 1.0, 1.0] + mean: [1.0, 1.0, 1.0] + median: [1.0, 1.0, 1.0] + min: [1.0, 1.0, 1.0] + percentile: + - [1.0, 1.0, 1.0] + - [1.0, 1.0, 1.0] + - [1.0, 1.0, 1.0] + - [1.0, 1.0, 1.0] + percentile_00_5: [1.0, 1.0, 1.0] + percentile_10_0: [1.0, 1.0, 1.0] + percentile_90_0: [1.0, 1.0, 1.0] + percentile_99_5: [1.0, 1.0, 1.0] + stdev: [0.0, 0.0, 0.0] + label_stats: + image_intensity: {max: 486420.21875, mean: 22356.19451308617, median: 21565.137033081053, + min: 0.0, percentile_00_5: 10025.874836195433, percentile_10_0: 15999.318258843055, + percentile_90_0: 29675.986145841158, percentile_99_5: 42594.37918219933, stdev: 5741.80349216828} + label: + - image_intensity: {max: 1704295.25, mean: 29816.451873926017, median: 30754.60859774076, + min: 0.0, percentile_00_5: 1433.9177829008836, percentile_10_0: 10459.940969936664, + percentile_90_0: 46656.694515991214, percentile_99_5: 54488.350277709964, + stdev: 13605.04892151906} + ncomponents: + max: 2 + mean: 1.0038461538461538 + median: 1.0 + min: 1 + percentile: [1, 1, 1, 1] + percentile_00_5: 1 + percentile_10_0: 1 + percentile_90_0: 1 + percentile_99_5: 1 + stdev: 0.061897988228581086 + pixel_percentage: + max: 0.962441086769104 + mean: 0.9471651265254387 + median: 0.9466995000839233 + min: 0.9252430200576782 + percentile: [0.9292748713493347, 0.938031542301178, 0.9556751847267151, 0.961978679895401] + percentile_00_5: 0.9292748713493347 + percentile_10_0: 0.938031542301178 + percentile_90_0: 0.9556751847267151 + percentile_99_5: 0.961978679895401 + stdev: 0.006967395986478662 + shape: + max: [43, 59, 47] + mean: [35.24521072796935, 49.793103448275865, 35.52107279693487] + median: [35.0, 50.0, 36.0] + min: [1, 1, 1] + percentile: + - [31, 40, 24] + - [33, 46, 30] + - [38, 54, 41] + - [41, 58, 45] + percentile_00_5: [31, 40, 24] + percentile_10_0: [33, 46, 30] + percentile_90_0: [38, 54, 41] + percentile_99_5: [41, 58, 45] + stdev: [2.900856336382301, 4.438954860512355, 4.716131158267367] + - image_intensity: {max: 456419.875, mean: 22348.98208304185, median: 21880.02027529203, + min: 5.0, percentile_00_5: 9691.928853269725, percentile_10_0: 16245.252325556829, + percentile_90_0: 29206.79972698505, percentile_99_5: 37625.35115063007, stdev: 5215.37838471486} + ncomponents: + max: 2 + mean: 1.0038461538461538 + median: 1.0 + min: 1 + percentile: [1, 1, 1, 1] + percentile_00_5: 1 + percentile_10_0: 1 + percentile_90_0: 1 + percentile_99_5: 1 + stdev: 0.061897988228581086 + pixel_percentage: + max: 0.04358745366334915 + mean: 0.027484820288820908 + median: 0.027486125007271767 + min: 0.018098922446370125 + percentile: [0.018215760765597225, 0.02076417114585638, 0.03336264044046402, + 0.04135232836008069] + percentile_00_5: 0.018215760765597225 + percentile_10_0: 0.02076417114585638 + percentile_90_0: 0.03336264044046402 + percentile_99_5: 0.04135232836008069 + stdev: 0.004866392328134567 + shape: + max: [27, 22, 20] + mean: [21.36015325670498, 16.375478927203066, 14.187739463601533] + median: [21.0, 16.0, 14.0] + min: [1, 1, 4] + percentile: + - [14, 11, 10] + - [18, 14, 12] + - [24, 19, 16] + - [27, 21, 19] + percentile_00_5: [14, 11, 10] + percentile_10_0: [18, 14, 12] + percentile_90_0: [24, 19, 16] + percentile_99_5: [27, 21, 19] + stdev: [2.5716890657390703, 2.141724754464362, 1.8833824286994465] + - image_intensity: {max: 486420.21875, mean: 22372.431986515337, median: 21250.799574690598, + min: 0.0, percentile_00_5: 10856.103725404006, percentile_10_0: 15858.199093451867, + percentile_90_0: 30547.069226661097, percentile_99_5: 44219.680789771446, + stdev: 6216.864071468207} + ncomponents: + max: 1 + mean: 1.0 + median: 1.0 + min: 1 + percentile: [1, 1, 1, 1] + percentile_00_5: 1 + percentile_10_0: 1 + percentile_90_0: 1 + percentile_99_5: 1 + stdev: 0.0 + pixel_percentage: + max: 0.037368293851614 + mean: 0.02535005337200486 + median: 0.025343699380755424 + min: 0.015177329070866108 + percentile: [0.015730357482098042, 0.020579034462571144, 0.03014677781611681, + 0.035079965647309995] + percentile_00_5: 0.015730357482098042 + percentile_10_0: 0.020579034462571144 + percentile_90_0: 0.03014677781611681 + percentile_99_5: 0.035079965647309995 + stdev: 0.003764517806114743 + shape: + max: [26, 30, 31] + mean: [19.24230769230769, 22.638461538461538, 20.046153846153846] + median: [19.0, 23.0, 20.0] + min: [12, 15, 11] + percentile: + - [13, 15, 12] + - [16, 20, 16] + - [22, 26, 23] + - [26, 28, 29] + percentile_00_5: [13, 15, 12] + percentile_10_0: [16, 20, 16] + percentile_90_0: [22, 26, 23] + percentile_99_5: [26, 28, 29] + stdev: [2.531140374936389, 2.57802502271632, 3.1582895528130868] + labels: [0, 1, 2] diff --git a/monai/auto3dseg/__init__.py b/monai/auto3dseg/__init__.py index 1e97f89407..d0d6db06a5 100644 --- a/monai/auto3dseg/__init__.py +++ b/monai/auto3dseg/__init__.py @@ -8,3 +8,24 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + +from .analyzer import ( + FgImageStats, + FgImageStatsSumm, + FilenameStats, + ImageStats, + ImageStatsSumm, + LabelStats, + LabelStatsSumm, +) +from .data_analyzer import DataAnalyzer +from .operations import Operations, SampleOperations, SummaryOperations +from .seg_summarizer import SegSummarizer +from .utils import ( + concat_multikeys_to_dict, + concat_val_to_np, + datafold_read, + get_foreground_image, + get_foreground_label, + get_label_ccp, +) diff --git a/monai/auto3dseg/__main__.py b/monai/auto3dseg/__main__.py index 301c5d7236..1f528b108b 100644 --- a/monai/auto3dseg/__main__.py +++ b/monai/auto3dseg/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.apps.auto3dseg.data_analyzer import DataAnalyzer +from monai.auto3dseg.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 55efdfeb3a..7e73be4e5c 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -32,6 +32,17 @@ from monai.utils.enums import ImageStatsKeys, LabelStatsKeys, StrEnum from monai.utils.misc import ImageMetaKey, label_union +__all__ = [ + "Analyzer", + "ImageStats", + "FgImageStats", + "LabelStats", + "ImageStatsSumm", + "FgImageStatsSumm", + "LabelStatsSumm", + "FilenameStats", +] + class Analyzer(MapTransform, ABC): """ diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index d64dd8c66c..d9db9d38e1 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -90,7 +90,7 @@ class DataAnalyzer: .. code-block:: bash - python -m monai.apps.auto3dseg \ + python -m monai.auto3dseg \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 3ae3941b29..a301d87f63 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -15,6 +15,8 @@ from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std +__all__ = ["Operations", "SampleOperations", "SummaryOperations"] + class Operations(UserDict): """ diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 5fb9e8a04e..0b38a2bcba 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -24,6 +24,8 @@ from monai.transforms import Compose from monai.utils.enums import DataStatsKeys +__all__ = ["SegSummarizer"] + class SegSummarizer(Compose): """ From 9c2bfc0d1a315cd2dd8d72987f4db4f3c3f1dd29 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Wed, 24 Aug 2022 23:55:10 +0800 Subject: [PATCH 131/150] fix hint Signed-off-by: Mingxin Zheng --- monai/auto3dseg/data_analyzer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index d9db9d38e1..e361bf8d7a 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -11,7 +11,7 @@ import warnings from os import path -from typing import Dict, List, Union +from typing import Dict, List, Optional, Union import numpy as np import torch @@ -107,7 +107,7 @@ def __init__( device: Union[str, torch.device] = "cuda", worker: int = 2, image_key: str = "image", - label_key: str = "label", + label_key: Optional[str] = "label", ): if path.isfile(output_path): warnings.warn(f"File {output_path} already exists and will be overwritten.") From d80e660d28c791267af4e9db254a916578e18f0f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Thu, 25 Aug 2022 11:31:57 +0800 Subject: [PATCH 132/150] fix flake Signed-off-by: Mingxin Zheng --- monai/apps/auto3dseg/data_analyzer.py | 728 ------------------ monai/apps/auto3dseg/data_utils.py | 118 --- monai/auto3dseg/analyzer.py | 18 +- monai/auto3dseg/data_analyzer.py | 14 +- monai/auto3dseg/operations.py | 2 + monai/auto3dseg/seg_summarizer.py | 3 + .../utils_pytorch_numpy_unification.py | 63 +- 7 files changed, 66 insertions(+), 880 deletions(-) delete mode 100644 monai/apps/auto3dseg/data_analyzer.py delete mode 100644 monai/apps/auto3dseg/data_utils.py diff --git a/monai/apps/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py deleted file mode 100644 index 7718d20b1c..0000000000 --- a/monai/apps/auto3dseg/data_analyzer.py +++ /dev/null @@ -1,728 +0,0 @@ -# Copyright (c) MONAI Consortium -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -""" -Step 1 of the AutoML pipeline. The dataset is analysized with this script. -""" - -import copy -import time -import warnings -from functools import partial -from os import path -from typing import Any, Dict, List, Tuple, Union - -import numpy as np -import torch - -from monai import data, transforms -from monai.apps.auto3dseg.data_utils import datafold_read, recursive_getkey, recursive_getvalue, recursive_setvalue -from monai.apps.utils import get_logger -from monai.bundle.config_parser import ConfigParser -from monai.data.meta_tensor import MetaTensor -from monai.data.utils import no_collation -from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std -from monai.utils import min_version, optional_import -from monai.utils.misc import label_union - -yaml, _ = optional_import("yaml") -tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") -measure_np, has_measure = optional_import("skimage.measure", "0.14.2", min_version) -cp, has_cp = optional_import("cupy") -cucim, has_cucim = optional_import("cucim") - -logger = get_logger(module_name=__name__) - -__all__ = ["DataAnalyzer"] - - -class DataAnalyzer: - """ - The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. - The module expects file paths to the image data and utilizes the LoadImaged transform to read the files. - which supports nii, nii.gz, png, jpg, bmp, npz, npy, and dcm formats. Currently, only segmentation - problem is supported, so the user needs to provide paths to the image and label files. Also, label - data format is preferred to be (1,H,W,D), with the label index in the first dimension. If it is in - onehot format, it will be converted to the preferred format. - - Args: - datalist: a Python dictionary storing group, fold, and other information of the medical - image dataset, or a string to the JSON file storing the dictionary. - dataroot: user's local directory containing the datasets. - output_path: path to save the analysis result. - average: whether to average the statistical value across different image modalities. - do_ccp: apply the connected component algorithm to process the labels/images - device: a string specifying hardware (CUDA/CPU) utilized for the operations. - worker: number of workers to use for parallel processing. - image_key: a string that user specify for the image. The DataAnalyzer will look it up in the - datalist to locate the image files of the dataset. - label_key: a string that user specify for the label. The DataAnalyzer will look it up in the - datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer - will skip looking for labels and all label-related operations. - - For example: - - .. code-block:: python - - from monai.apps.auto3dseg.data_analyzer import DataAnalyzer - - datalist = { - "testing": [{"image": "image_003.nii.gz"}], - "training": [ - {"fold": 0, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, - {"fold": 0, "image": "image_002.nii.gz", "label": "label_002.nii.gz"}, - {"fold": 1, "image": "image_001.nii.gz", "label": "label_001.nii.gz"}, - {"fold": 1, "image": "image_004.nii.gz", "label": "label_004.nii.gz"}, - ], - } - - dataroot = '/datasets' # the directory where you have the image files (nii.gz) - DataAnalyzer(datalist, dataroot) - - Notes: - The module can also be called from the command line interface (CLI). - - For example: - - .. code-block:: bash - - python -m monai.apps.auto3dseg \ - DataAnalyzer \ - get_all_case_stats \ - --datalist="my_datalist.json" \ - --dataroot="my_dataroot_dir" - - """ - - def __init__( - self, - datalist: Union[str, Dict], - dataroot: str = "", - output_path: str = "./data_stats.yaml", - average: bool = True, - do_ccp: bool = True, - device: Union[str, torch.device] = "cuda", - worker: int = 2, - image_key: str = "image", - label_key: str = "label", - ): - """ - The initializer will load the data and register the functions for data statistics gathering. - """ - if path.isfile(output_path): - warnings.warn(f"File {output_path} already exists and will be overwritten.") - logger.debug(f"{output_path} will be overwritten by a new datastat.") - self.output_path = output_path - self.IMAGE_ONLY = True if label_key is None else False - - if self.IMAGE_ONLY: - keys = [image_key] - else: - keys = [image_key, label_key] - - transform_list = [ - transforms.LoadImaged(keys=keys), - transforms.EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - transforms.Orientationd(keys=keys, axcodes="RAS"), - transforms.EnsureTyped(keys=keys, data_type="tensor"), - ] - - if not self.IMAGE_ONLY: - transform_list += [ - transforms.Lambdad( - keys="label", func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x - ), - transforms.SqueezeDimd(keys=["label"], dim=0), - ] - - files, _ = datafold_read(datalist=datalist, basedir=dataroot, fold=-1) - ds = data.Dataset(data=files, transform=transforms.Compose(transform_list)) - - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=worker, collate_fn=no_collation) - # Whether to average all the modalities in the summary - # If SUMMARY_AVERAGE is set to false, - # the stats for each modality are calculated separately - self.SUMMARY_AVERAGE = average - self.DO_CONNECTED_COMP = do_ccp - self.device = device - self.data: Dict[str, Any] = {} - self.results: Dict[str, Any] = {} - # gather all summary function for combining case stats - self.gather_summary: Dict[str, Dict] = {} - self._register_functions() - self._register_operations() - - def _register_functions(self): - """ - Register all the statistic functions for calculating stats for individual cases and overall. If one installs - monai in the editable source code manner, then a new statistics calculation can be customized in the DataAnalyzer - class. - - For example: - - .. code-block:: python - - class DataAnalyzer: - # other functions defined in the class - # below are for new functions - - def my_fun(x_list: List[torch.tensor]): - # notice the data may be a list of data from different modalities. - # So my_fun(x) should return a list of stats. - y_list = [] - for x in x_list: - y_list.append(x.sum()) - return y_list - - def _get_my_stats(self): # in the DataAnalyzer class. case_stats will be written to the yaml file - processed_data = self.data['image'] - case_stats = {'my_stats': my_fun(processed_data)}. - return case_stats - - def _get_my_stats_sumumary(self): The _get_my_stats will process the entire datasets - case_stats_summary = { - "my_stats_summary": {"sum": self._get_my_stats} - } - self.gather_summary.update(case_stats_summary) - - def _register_functions(self): - # add - self.functions = ... - self.function_summary = ... - self.function_summary.append(self._get_my_stats_sumumary) - - """ - self.functions = [self._get_case_image_stats] - self.functions_summary = [self._get_case_image_stats_summary] - if not self.IMAGE_ONLY: - self.functions += [self._get_case_foreground_image_stats, self._get_label_stats] - self.functions_summary += [self._get_case_foreground_image_stats_summary, self._get_label_stats_summary] - - def _register_operations(self): - """ - Register data operations (max/mean/median/...) for the stats gathering processes. - """ - # define basic operations for stats - self.operations = { - "max": max, - "mean": mean, - "median": median, - "min": min, - "percentile": partial(percentile, q=np.array([0.5, 10, 90, 99.5])), - "stdev": std, - } - # allow mapping the output of self.operations to new keys (save computation time) - # the output from torch.quantile is mapped to four keys. - self.operations_mappingkey = { - "percentile": ["percentile_00_5", "percentile_10_0", "percentile_90_0", "percentile_99_5"] - } - # define summary functions for output from self.operations. For example, - # how to combine max intensity from each case (image) - # operation summary definition must accept dim input like torch.mean - self.operations_summary = { - "max": max, - "mean": mean, - "median": mean, - "min": min, - "percentile_00_5": mean, - "percentile_99_5": mean, - "percentile_10_0": mean, - "percentile_90_0": mean, - "stdev": mean, - } - - def _get_case_image_stats(self) -> Dict: - """ - Generate image statistics for cases in datalist ({'image','label'}). - Statistics values are stored under the key "image_stats". - - Returns: - a dictionary of the images stats in format of {"image_stats": {"shape":[], - "channel":[], "cropped_shape":[], "spacing":[], "intensity":[]}} - """ - # retrieve transformed data from self.data - start = time.time() - ndas = self.data["image"] - ndas = [ndas[i] for i in range(ndas.shape[0])] - if "nda_croppeds" not in self.data: - self.data["nda_croppeds"] = [self._get_foreground_image(nda) for nda in ndas] - nda_croppeds = self.data["nda_croppeds"] - # perform calculation - case_stats = { - "image_stats": { - "shape": [list(nda.shape) for nda in ndas], - "channels": len(ndas), - "cropped_shape": [list(nda_cropped.shape) for nda_cropped in nda_croppeds], - "spacing": np.tile(np.diag(self.data["image_meta_dict"]["affine"])[:3], [len(ndas), 1]).tolist(), - "intensity": [self._stats_opt(nda_cropped) for nda_cropped in nda_croppeds], - } - } - logger.debug(f"Get image stats spent {time.time()-start}") - return case_stats - - def _get_case_image_stats_summary(self): - """ - Update self.gather_summary by case-by-case. - """ - # this dictionary describes how to gather values in the summary - case_stats_summary = { - "image_stats": { - "shape": partial(self._stats_opt_summary, average=self.SUMMARY_AVERAGE), - "channels": self._stats_opt_summary, - "cropped_shape": partial(self._stats_opt_summary, average=self.SUMMARY_AVERAGE), - "spacing": partial(self._stats_opt_summary, average=self.SUMMARY_AVERAGE), - "intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE), - } - } - self.gather_summary.update(case_stats_summary) - - def _get_case_foreground_image_stats(self) -> Dict: - """ - Generate intensity statistics based on foreground images for cases in the datalist - ({'image','label'}). The foreground is defined by points where labels are positive numbers. - The statistics will be values with the key name "intensity" under parent the key - "image_foreground_stats". - - Returns: - a dictionary with following structure - - image_foreground_stats - - intensity - - max - - mean - - median - - etc - """ - # retrieve transformed data from self.data - start = time.time() - ndas = self.data["image"] - ndas = [ndas[i] for i in range(ndas.shape[0])] - ndas_l = self.data["label"] - if "nda_foreground" not in self.data: - self.data["nda_foreground"] = [self._get_foreground_label(nda, ndas_l) for nda in ndas] - nda_foreground = self.data["nda_foreground"] - - case_stats = {"image_foreground_stats": {"intensity": [self._stats_opt(nda) for nda in nda_foreground]}} - logger.debug(f"Get foreground image data stats spent {time.time() - start}") - return case_stats - - def _get_case_foreground_image_stats_summary(self): - """ - Update gather_summary from foreground cases one by one. - """ - case_stats_summary = { - "image_foreground_stats": {"intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE)} - } - self.gather_summary.update(case_stats_summary) - - def _get_label_stats(self) -> Dict: - """ - Generate label statisics for all the cases in the datalist based on ({"images", "labels"}). - Each label has its own statistics (the connected components info, shape, and - corresponding image region intensity). The statistics are saved in the values with key name - "label_stats" in the return variable. - - Returns: - a dictionary in format of {"label_stats":{"labels":[], "pixel_percentage":[] - "image_intensity":[], "label_0":{}, "label_1":{}}} - """ - # retrieve transformed data from self.data - start = time.time() - ndas = self.data["image"] - ndas = [ndas[i] for i in range(ndas.shape[0])] - ndas_l = self.data["label"] - unique_label = torch.unique(ndas_l).data.cpu().numpy().astype(np.int8).tolist() - case_stats = { - "label_stats": { - "labels": unique_label, - "pixel_percentage": None, - "image_intensity": [self._stats_opt(nda[ndas_l > 0]) for nda in ndas], - } - } - start = time.time() - pixel_percentage = {} - for index in unique_label: - label_dict: Dict[str, Any] = {} - mask_index = ndas_l == index - s = time.time() - label_dict["image_intensity"] = [self._stats_opt(nda[mask_index]) for nda in ndas] - logger.debug(f" label {index} stats takes {time.time() - s}") - pixel_percentage[index] = torch.sum(mask_index).data.cpu().numpy() - if self.DO_CONNECTED_COMP: - shape_list, ncomponents = self._get_label_ccp(mask_index) - label_dict["shape"] = shape_list - label_dict["ncomponents"] = ncomponents - case_stats["label_stats"].update({f"label_{index}": label_dict}) - # update pixel_percentage - total_percent = np.sum(list(pixel_percentage.values())) - for key, value in pixel_percentage.items(): - pixel_percentage[key] = float(value / total_percent) - case_stats["label_stats"].update({"pixel_percentage": pixel_percentage}) - logger.debug(f"Get label stats spent {time.time()-start}") - return case_stats - - def _get_label_stats_summary(self): - """ - Get the label statistics for each unique label and update them into gather_summary. - """ - case_stats_summary = { - "label_stats": { - "labels": label_union, - "pixel_percentage": self._pixelpercent_summary, - "image_intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE), - } - } - key_chain = ["label_stats", "labels"] - opt = label_union - unique_label = opt( - list(filter(None, [recursive_getvalue(case, key_chain) for case in self.results["stats_by_cases"]])) - ) - for index in unique_label: - label_dict_summary = {"image_intensity": partial(self._intensity_summary, average=self.SUMMARY_AVERAGE)} - if self.DO_CONNECTED_COMP: - label_dict_summary["shape"] = partial(self._stats_opt_summary, is_label=True) - label_dict_summary["ncomponents"] = partial(self._stats_opt_summary, is_label=True) - case_stats_summary["label_stats"].update({f"label_{index}": label_dict_summary}) - self.gather_summary.update(case_stats_summary) - - @staticmethod - def _pixelpercent_summary(xs): - """ - Define the summary function for the pixel percentage over the whole dataset. - - Args - xs: list of dictionaries dict = {'label1': percent, 'label2': percent}. The - dict may miss some labels. Length of xs is number of data samples. - - Returns: - a dictionary showing the percentage of labels, with numeric keys (0, 1, ...) - """ - percent_summary = {} - for x in xs: - for key, value in x.items(): - percent_summary[key] = percent_summary.get(key, 0) + value - total_percent = np.sum(list(percent_summary.values())) - for key, value in percent_summary.items(): - percent_summary[key] = float(value / total_percent) - return percent_summary - - def _intensity_summary(self, xs: List, average: bool = False) -> Dict: - """ - Define the summary function for stats over the whole dataset. - Combine overall intensity statistics for all cases in datalist. The intensity features are - min, max, mean, std, percentile defined in self._stats_opt(). - Values may be averaged over all the cases if the `average` is set to be True. - - Args: - xs: list of the list of intensity stats [[{max:, min:, },{max:, min:, }]]. Length of xs is number of data samples. - average: if average is true, operation will be applied along axis 0 and average out the values. - - Returns: - a dictionary of the intensity stats. Keys include 'max', 'mean', and others defined in self.operations. - - """ - result = {} - for op_key in xs[0][0]: - value = [] - for x in xs: - value.append([stats[op_key] for stats in x]) - dim = (0,) if not average else None - value = self.operations_summary[op_key](value, dim=dim) - result[op_key] = np.array(value).tolist() - - return result - - def _stats_opt_summary(self, datastat_list, average: bool = False, is_label: bool = False) -> Dict: - """ - Combine other stats calculation methods (like shape/min/max/std). Does not guarantee - correct output for custimized stats structure. Check the following input structures. - - Args: - data: [case_stats, case_stats, ...]. - For images, - case_stats are list [stats_modality1, stats_modality2, ...], - stats_modality1 can be single value, or it can be a 1d list. - For labels, - case_stats are list [stat1, stat2, ...]. stat1 can be 1d list, 2d list, and single value. - average: the operation is performed after mixing all modalities. - is_label: If the data is from label stats. - - Returns - a dictonary with following property of data in keys like "max", "mean" and others defined in operations_summary - """ - axis: Union[Tuple[int, int], int, None] = None - - if isinstance(datastat_list[0], list) or isinstance(datastat_list[0], np.ndarray): - if not is_label: - # size = [num of cases, number of modalities, stats] - datastat_list = np.concatenate([[np.array(datastat) for datastat in datastat_list]]) - else: - # size = [num of cases, stats] - datastat_list = np.concatenate([np.array(datastat) for datastat in datastat_list]) - axis = 0 - if average and len(datastat_list.shape) > 2: - axis = (0, 1) - # Calculate statistics from the data using numpy. Only used for summary - result = {} - for name, ops in self.operations.items(): - # get results - _result = ops(np.array(datastat_list), dim=axis).tolist() # post process with key mapping - mappingkeys = self.operations_mappingkey.get(name) - if mappingkeys is not None: - result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) - else: - result[name] = _result - return result - - def _stats_opt(self, raw_data): - """ - Calculate statistics calculation operations (ops) on the images/labels - - Args: - raw_data: ndarray image or label. - - Returns: - a dictionary to list out the statistics based on give operations (ops). For example, keys can include 'max', 'min', - 'median', 'percentile_00_5', percentile_90_0', 'stdev'. - - """ - result = {} - for name, ops in self.operations.items(): - if len(raw_data) == 0: - raw_data = torch.tensor([0.0], device=self.device) - if not torch.is_tensor(raw_data): - raw_data = torch.from_numpy(raw_data).to(self.device) - # compute the results - _result = ops(raw_data).data.cpu().numpy().tolist() - # post process the data - mappingkeys = self.operations_mappingkey.get(name) - if mappingkeys is not None: - result.update({mappingkeys[i]: _result[i] for i in range(len(_result))}) - else: - result[name] = _result - return result - - @staticmethod - def _get_foreground_image(image: MetaTensor) -> MetaTensor: - """ - Get a foreground image by removing all-zero rectangles on the edges of the image - Note for the developer: update select_fn if the foreground is defined differently. - - Args: - image: ndarray image to segment. - - Returns: - ndarray of foreground image by removing all-zero edges. - - Notes: - the size of the ouput is smaller than the input. - """ - crop_foreground = transforms.CropForeground(select_fn=lambda x: x > 0) - image_foreground = MetaTensor(crop_foreground(image)) - return image_foreground - - @staticmethod - def _get_foreground_label(image: MetaTensor, label: MetaTensor) -> MetaTensor: - """ - Get foreground image pixel values and mask out the non-labeled area. - - Args - image: ndarray image to segment. - label: ndarray the image input and annotated with class IDs. - - Returns: - 1D array of foreground image with label > 0 - """ - label_foreground = MetaTensor(image[label > 0]) - return label_foreground - - @staticmethod - def _get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[Any], int]: - """ - Find all connected components and their bounding shape. Backend can be cuPy/cuCIM or Numpy - depending on the hardware. - - Args: - mask_index: a binary mask - use_gpu: a switch to use GPU/CUDA or not. If GPU is unavailable, CPU will be used - regardless of this setting - - """ - shape_list = [] - if mask_index.device.type == "cuda" and has_cp and has_cucim and use_gpu: - mask_cupy = transforms.ToCupy()(mask_index.short()) - labeled = cucim.skimage.measure.label(mask_cupy) - vals = cp.unique(labeled[cp.nonzero(labeled)]) - - for ncomp in vals: - comp_idx = cp.argwhere(labeled == ncomp) - comp_idx_min = cp.min(comp_idx, axis=0).tolist() - comp_idx_max = cp.max(comp_idx, axis=0).tolist() - bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] - shape_list.append(bbox_shape) - ncomponents = len(vals) - - elif has_measure: - labeled, ncomponents = measure_np.label(mask_index.data.cpu().numpy(), background=-1, return_num=True) - for ncomp in range(1, ncomponents + 1): - comp_idx = np.argwhere(labeled == ncomp) - comp_idx_min = np.min(comp_idx, axis=0).tolist() - comp_idx_max = np.max(comp_idx, axis=0).tolist() - bbox_shape = [comp_idx_max[i] - comp_idx_min[i] + 1 for i in range(len(comp_idx_max))] - shape_list.append(bbox_shape) - else: - raise RuntimeError("Cannot find one of the following required dependencies: {cuPy+cuCIM} or {scikit-image}") - - return shape_list, ncomponents - - def get_case_stats(self, batch_data) -> Dict: - """ - Get stats for each case {'image', 'label'} in the datalist. The data case is stored in self.data - - Args: - batch_data: from monai dataloader batch data, with keys "images", "labels", "image_meta_dict", - "label_meta_dict" - - Returns: - a dictionary to summarize all the statistics in format of {"image_stats":{"shape",[], "channels":[] - "cropped_shape":[], "spacing":[], "intensity":[]}, "image_foreground_stats":{"intensity":[]}, - "label_stats":{"labels":[], "pixel_percentage":[], "image_intensity":[], "label_0":[], "label_1": - [], "label_N":[]}} - - Raises: - ValueError: if data loader is unable to find "label" or "label_meta_dict" - - Notes: - nan/inf: since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output - dictionary will include .nan/.inf in the statistics. - - - """ - self.data = {} - self.data["image"] = batch_data["image"].to(self.device) - self.data["image_meta_dict"] = batch_data["image_meta_dict"] - if not self.IMAGE_ONLY: - if "label" not in batch_data: - raise ValueError("label not found. Please set image_only to True if there is no label files") - if "label_meta_dict" not in batch_data: - raise ValueError("label_meta_dict not found. Please set image_only to True if there is no label files") - self.data["label"] = batch_data["label"].to(self.device) - self.data["label_meta_dict"] = batch_data["label_meta_dict"] - case_stats = {} - for func in self.functions: - case_stats.update(func()) - return case_stats - - def _get_case_summary(self): - """ - Function to combine case stats. The stats for each case is stored in self.results['stats_by_cases']. - Each case stats is a dictionary. The function first get all the leaf-keys of self.gather_summary. - self.gather_summary is a dictionary of the same structure with the final summary yaml - output (self.results['stats_summary']), because it is updated by case_stats_summary. - The operations is retrived by recursive_getvalue and the combined value is calculated. - - summarize the results from each case using functions _intensity_summary, _stats_opt_summary. - """ - # initialize gather_summary - [func() for func in self.functions_summary] - # read - key_chains = recursive_getkey(self.gather_summary) - self.results["stats_summary"] = copy.deepcopy(self.gather_summary) - for key_chain in key_chains: - opt = recursive_getvalue(self.gather_summary, key_chain) - value = opt( - list(filter(None, [recursive_getvalue(case, key_chain) for case in self.results["stats_by_cases"]])) - ) - recursive_setvalue(key_chain, value, self.results["stats_summary"]) - - def _check_data_uniformity(self, keys: List[str]): - """ - Check data uniformity since DataAnalyzer provides no support to multi-modal images with different - affine matrices/spacings due to monai transforms. - - Args: - keys: a list of string-type keys under image_stats dictionary. - - Returns: - False if one of the selected key values is not constant across the dataset images. - - """ - - for key in keys: - prev_val = None - for stats in self.results["stats_by_cases"]: - image_stats = stats["image_stats"] - if prev_val is None: - prev_val = image_stats[key] - elif prev_val != image_stats[key]: - return False - - return True - - def get_all_case_stats(self) -> Dict: - """ - Get all case stats. Caller of the DataAnalyser class. The function iterates datalist and - call get_case_stats to generate stats. Then get_case_summary is called to combine results. - - Returns: - A data statistics dictionary containing - "stats_summary" (summary statistics of the entire datasets). Within stats_summary - there are "image_stats" (summarizing info of shape, channel, spacing, and etc - using operations_summary), "image_foreground_stats" (info of the intensity for the - non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, - image_intensity, and each invidiual label) - "stats_by_cases" (List type value. Each element of the list is statistics of - a image-label info. Within each each element, there are: "image" (value is the - path to an image), "label" (value is the path to the corresponding label), "image_stats" - (summarizing info of shape, channel, spacing, and etc using operations), - "image_foreground_stats" (similar to the previous one but one foreground image), and - "label_stats" (stats of the individual labels ) - - Raises: - ValueError: if the user sent image_only to False but there is no label found - - Notes: - Since the backend of the statistics computation are torch/numpy, nan/inf value - may be generated and carried over in the computation. In such cases, the output - dictionary will include .nan/.inf in the statistics. - - """ - start = time.time() - self.results["stats_summary"] = {} - self.results["stats_by_cases"] = [] - s = start - if not has_tqdm: - warnings.warn("tqdm is not installed. not displaying the caching progress.") - - for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: - images_file = batch_data[0]["image_meta_dict"]["filename_or_obj"] - if self.IMAGE_ONLY: - case_stat = {"image": images_file} - else: - if "label_meta_dict" not in batch_data[0]: - raise ValueError( - "label_meta_dict not found. Please set image_only to True if there is no label files" - ) - - label_file = batch_data[0]["label_meta_dict"]["filename_or_obj"] - case_stat = {"image": images_file, "label": label_file} - - logger.debug(f"Load data spent {time.time() - s}") - case_stat.update(self.get_case_stats(batch_data[0])) - self.results["stats_by_cases"].append(case_stat) - logger.debug(f"Process data spent {time.time() - s}") - s = time.time() - self._get_case_summary() - if not self._check_data_uniformity(["spacing"]): - logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") - ConfigParser.export_config_file(self.results, self.output_path, fmt="yaml", default_flow_style=None) - logger.debug(f"total time {time.time() - start}") - return self.results diff --git a/monai/apps/auto3dseg/data_utils.py b/monai/apps/auto3dseg/data_utils.py deleted file mode 100644 index d805d08d26..0000000000 --- a/monai/apps/auto3dseg/data_utils.py +++ /dev/null @@ -1,118 +0,0 @@ -# Copyright (c) MONAI Consortium -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import os -from copy import deepcopy -from typing import Any, Dict, List, Tuple, Union - -from monai.bundle.config_parser import ConfigParser - -__all__ = ["recursive_getvalue", "recursive_setvalue", "recursive_getkey", "datafold_read"] - - -def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: str = "training") -> Tuple[List, List]: - """ - Read a list of data dictionary `datalist` - - Args: - datalist: the name of a JSON file listing the data, or a dictionary - basedir: directory of image files - fold: which fold to use (0..1 if in training set) - key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges) - - Returns: - A tuple of two arrays (training, validation) - """ - - if isinstance(datalist, str): - json_data = ConfigParser.load_config_file(datalist) - else: - json_data = datalist - - dict_data = deepcopy(json_data[key]) - - for d in dict_data: - for k, _ in d.items(): - if isinstance(d[k], list): - d[k] = [os.path.join(basedir, iv) for iv in d[k]] - elif isinstance(d[k], str): - d[k] = os.path.join(basedir, d[k]) if len(d[k]) > 0 else d[k] - - tr = [] - val = [] - for d in dict_data: - if "fold" in d and d["fold"] == fold: - val.append(d) - else: - tr.append(d) - - return tr, val - - -def recursive_getvalue(dicts: Dict, keys: Union[str, List]) -> Any: - """ - Recursively get value through the chain of provided key. - - Args: - dicts: a provided dictionary - keys: name of the key or a list showing the key chain to access the value - - Examples: - dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'] - recursive_getvalue(dicts, keys) = 1 - """ - if keys[0] in dicts.keys(): - return dicts.get(keys[0]) if len(keys) == 1 else recursive_getvalue(dicts[keys[0]], keys[1:]) - else: - return None - - -def recursive_setvalue(keys: Union[str, List], value: Any, dicts: Dict) -> None: - """ - Recursively set value of key chain. - dicts: user-provided dictionary - - Args: - keys: name of the key or a list showing the key chain to access the value - value: key value - dicts: user-provided dictionary - - Examples: - dicts = {'a':{'b':{'c':1}}}, keys = ['a','b','c'], value = 2 - recursive_setvalue(keys, value, dicts) will set dicts = {'a':{'b':{'c':2}}} - """ - if len(keys) == 1: - dicts[keys[0]] = value - else: - recursive_setvalue(keys[1:], value, dicts[keys[0]]) - - -def recursive_getkey(dicts: Dict) -> List: - """ - Return all key chains in the dict. - - Args: - dicts: user-provided dictionary - - Returns: - list of key chains - - Examples: - dicts = {'a':{'b':{'c':1},'d':2}}, - recursive_getkey(dicts) will return [['a','b','c'], ['a','d']] - """ - keys = [] - for key, value in dicts.items(): - if type(value) is dict: - keys.extend([[key] + _ for _ in recursive_getkey(value)]) - else: - keys.append([key]) - return keys diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 7e73be4e5c..aae99a2580 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -9,6 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +import time from abc import ABC, abstractmethod from copy import deepcopy from typing import Any, Dict, List, Optional, Type, Union @@ -16,6 +17,7 @@ import numpy as np import torch +from monai.apps.utils import get_logger from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations from monai.auto3dseg.utils import ( concat_multikeys_to_dict, @@ -32,6 +34,8 @@ from monai.utils.enums import ImageStatsKeys, LabelStatsKeys, StrEnum from monai.utils.misc import ImageMetaKey, label_union +logger = get_logger(module_name=__name__) + __all__ = [ "Analyzer", "ImageStats", @@ -128,7 +132,7 @@ def unwrap_ops(func: Type[Operations]): a dict with a set of keys. """ - ret = dict.fromkeys([key for key in func.data]) + ret = dict.fromkeys(list(func.data)) if hasattr(func, "data_addon"): for key in func.data_addon: ret.update({key: None}) @@ -215,8 +219,7 @@ def __call__(self, data): """ d = dict(data) - # from time import time - # start = time.time() + start = time.time() ndas = data[self.image_key] ndas = [ndas[i] for i in range(ndas.shape[0])] if "nda_croppeds" not in d: @@ -235,7 +238,7 @@ def __call__(self, data): self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds ] - # logger.debug(f"Get image stats spent {time.time()-start}") + logger.debug(f"Get image stats spent {time.time()-start}") d[self.stats_name] = report return d @@ -409,11 +412,12 @@ def __call__(self, data): unique_label = unique_label.astype(np.int8).tolist() - # start = time.time() + start = time.time() label_substats = [] # each element is one label pixel_sum = 0 pixel_arr = [] for index in unique_label: + start_label = time.time() label_dict: Dict[str, Any] = {} mask_index = ndas_label == index @@ -429,7 +433,7 @@ def __call__(self, data): label_dict[str(LabelStatsKeys.LABEL_NCOMP)] = ncomponents label_substats.append(label_dict) - # logger.debug(f" label {index} stats takes {time.time() - s}") + logger.debug(f" label {index} stats takes {time.time() - start_label}") for i, _ in enumerate(unique_label): label_substats[i].update({str(LabelStatsKeys.PIXEL_PCT): float(pixel_arr[i] / pixel_sum)}) @@ -442,7 +446,7 @@ def __call__(self, data): report[str(LabelStatsKeys.LABEL)] = label_substats d[self.stats_name] = report - # logger.debug(f"Get label stats spent {time.time()-start}") + logger.debug(f"Get label stats spent {time.time()-start}") return d diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index e361bf8d7a..dda38f0beb 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -122,7 +122,8 @@ def __init__( self.image_key = image_key self.label_key = label_key - def _check_data_uniformity(self, keys: List[str], result: Dict): + @staticmethod + def _check_data_uniformity(keys: List[str], result: Dict): """ Check data uniformity since DataAnalyzer provides no support to multi-modal images with different affine matrices/spacings due to monai transforms. @@ -137,9 +138,8 @@ def _check_data_uniformity(self, keys: List[str], result: Dict): constant_props = [result[DataStatsKeys.SUMMARY][DataStatsKeys.IMAGE_STATS][key] for key in keys] for prop in constant_props: - if "stdev" in prop: - if np.any(prop["stdev"]): - return False + if "stdev" in prop and np.any(prop["stdev"]): + return False return True @@ -147,9 +147,7 @@ def get_all_case_stats(self): files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) ds = data.Dataset(data=files) - self.dataset = data.DataLoader( - ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation - ) + dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) summarizer = SegSummarizer(self.image_key, self.label_key, do_ccp=self.do_ccp) keys = list(filter(None, [self.image_key, self.label_key])) @@ -173,7 +171,7 @@ def get_all_case_stats(self): if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") - for batch_data in tqdm(self.dataset) if has_tqdm else self.dataset: + for batch_data in tqdm(dataset) if has_tqdm else dataset: d = tranform(batch_data[0]) stats_by_cases = { str(DataStatsKeys.BY_CASE_IMAGE_PATH): d[str(DataStatsKeys.BY_CASE_IMAGE_PATH)], diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index a301d87f63..471b4ca0e5 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -53,6 +53,7 @@ class SampleOperations(Operations): Example: .. code-block:: python + # use the existing operations import numpy as np op = SampleOperations() @@ -110,6 +111,7 @@ class SummaryOperations(Operations): Examples: .. code-block:: python + import numpy as np data = { "min": np.random.rand(4), diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 0b38a2bcba..8fd999c2b9 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -46,6 +46,7 @@ class SegSummarizer(Compose): Examples: .. code-block:: python + # imports summarizer = SegSummarizer("image", "label") @@ -99,7 +100,9 @@ def add_analyzer(self, case_analyzer: Type[Analyzer], summary_analzyer: Type[Ana summary_analyzer: analyzer that works on list of stats dict (output from case_analyzers) Examples: + .. code-block:: python + from monai.auto3dseg.analyzer import Analyzer from monai.auto3dseg.utils import concat_val_to_np from monai.auto3dseg.analyzer_engine import SegSummarizer diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 9ae20e26ff..aebf9b71fd 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -9,15 +9,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Optional, Sequence, Tuple, Union +from typing import List, Optional, Sequence, Tuple, Union import numpy as np import torch from monai.config.type_definitions import NdarrayOrTensor, NdarrayTensor +from monai.data.meta_tensor import MetaTensor from monai.utils.misc import is_module_ver_at_least from monai.utils.type_conversion import convert_data_type, convert_to_dst_type +NumberArray = Union[List, np.ndarray, torch.Tensor, MetaTensor] + __all__ = [ "allclose", "moveaxis", @@ -407,73 +410,95 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore -def max(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: +def max(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: """`torch.max` with equivalent implementation for numpy Args: x: array/tensor. + + Returns: + the maximum of x. + """ if dim is None: - return np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) # type: ignore + return np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) else: - return np.max(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, dim, **kwargs) # type: ignore + return np.max(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, dim, **kwargs) -def mean(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: +def mean(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: """`torch.mean` with equivalent implementation for numpy Args: x: array/tensor. + + Returns: + the mean of x """ if dim is None: - return np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) # type: ignore + return np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) else: - return np.mean(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, dim, **kwargs) # type: ignore + return np.mean(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, dim, **kwargs) -def median(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: +def median(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: """`torch.median` with equivalent implementation for numpy Args: x: array/tensor. + + Returns + the median of x. """ if dim is None: - return np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) # type: ignore + return np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) else: - return np.median(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, dim, **kwargs) # type: ignore + if isinstance(x, (np.ndarray, list)): + return np.median(x, axis=dim, **kwargs) + else: + return torch.median(x, dim, **kwargs) -def min(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: +def min(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: """`torch.min` with equivalent implementation for numpy Args: x: array/tensor. + + Returns: + the minimum of x. """ if dim is None: - return np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) # type: ignore + return np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) else: - return np.min(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, dim, **kwargs) # type: ignore + return np.min(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, dim, **kwargs) -def std(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NdarrayTensor: +def std(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NumberArray: """`torch.std` with equivalent implementation for numpy Args: x: array/tensor. + + Returns: + the standard deviation of x. """ if dim is None: - return np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) # type: ignore + return np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) else: - return np.std(x, axis=dim) if isinstance(x, (np.ndarray, list)) else torch.std(x, dim, unbias) # type: ignore + return np.std(x, axis=dim) if isinstance(x, (np.ndarray, list)) else torch.std(x, dim, unbias) -def sum(x: NdarrayOrTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: +def sum(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: """`torch.sum` with equivalent implementation for numpy Args: x: array/tensor. + + Returns: + the sum of x. """ if dim is None: - return np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) # type: ignore + return np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) else: - return np.sum(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, dim, **kwargs) # type: ignore + return np.sum(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, dim, **kwargs) From 13a9af1ccfe57784ac80548fdce44d42fcd909a4 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Thu, 25 Aug 2022 16:03:59 +0800 Subject: [PATCH 133/150] fix type hints Signed-off-by: Mingxin Zheng --- docs/source/conf.py | 1 + monai/auto3dseg/analyzer.py | 159 ++++++++++-------- monai/auto3dseg/operations.py | 10 +- monai/auto3dseg/seg_summarizer.py | 5 +- monai/auto3dseg/utils.py | 8 +- .../utils_pytorch_numpy_unification.py | 79 ++++++--- monai/utils/enums.py | 2 +- 7 files changed, 163 insertions(+), 101 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index a4db053d78..ecc1b3ff59 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -49,6 +49,7 @@ "utils", "inferers", "optimizers", + "auto3dseg", ] diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index aae99a2580..ca66e03ddb 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -12,13 +12,19 @@ import time from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict, List, Optional, Type, Union +from typing import Any, Dict, List, Optional, TypeVar import numpy as np import torch from monai.apps.utils import get_logger -from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations +from monai.auto3dseg.operations import ( + Operations, + OperationType, + SampleOperations, + SummaryOperations +) + from monai.auto3dseg.utils import ( concat_multikeys_to_dict, concat_val_to_np, @@ -67,7 +73,7 @@ def __init__(self, stats_name: str, report_format: dict) -> None: self.stats_name = stats_name self.ops = ConfigParser({}) - def update_ops(self, key: Union[str, Type[StrEnum]], op: Type[Operations]): + def update_ops(self, key: str, op: OperationType): """ Register an statistical operation to the Analyzer and update the report_format @@ -84,7 +90,7 @@ def update_ops(self, key: Union[str, Type[StrEnum]], op: Type[Operations]): self.report_format = parser.config - def update_ops_nested_label(self, nested_key: Union[str, Type[StrEnum]], op: Type[Operations]): + def update_ops_nested_label(self, nested_key: str, op: OperationType): """ Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys @@ -96,7 +102,8 @@ def update_ops_nested_label(self, nested_key: Union[str, Type[StrEnum]], op: Typ keys = nested_key.split(ID_SEP_KEY) if len(keys) != 3: raise ValueError("Nested_key input format is wrong. Please ensure it is like key1#0#key2") - + root: str + child_key: str (root, _, child_key) = keys if root not in self.ops: self.ops[root] = [{}] @@ -120,7 +127,7 @@ def get_report_format(self): return self.report_format @staticmethod - def unwrap_ops(func: Type[Operations]): + def unwrap_ops(func: OperationType): """ Unwrap a function value and generates the same set keys in a dict when the function is actually called in runtime @@ -159,6 +166,7 @@ def __call__(self, data: Any): """Analyze the dict format dataset, return the summary report""" raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") +AnalyzerType = TypeVar('AnalyzerType', bound=Analyzer) class ImageStats(Analyzer): """ @@ -235,7 +243,7 @@ def __call__(self, data): np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1] ).tolist() report[str(ImageStatsKeys.INTENSITY)] = [ - self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds + self.ops[str(ImageStatsKeys.INTENSITY)].evaluate(nda_c) for nda_c in nda_croppeds ] logger.debug(f"Get image stats spent {time.time()-start}") @@ -274,7 +282,7 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "image_fore report_format = {str(ImageStatsKeys.INTENSITY): None} super().__init__(stats_name, report_format) - self.update_ops(ImageStatsKeys.INTENSITY, SampleOperations()) + self.update_ops(str(ImageStatsKeys.INTENSITY), SampleOperations()) def __call__(self, data) -> dict: """ @@ -301,7 +309,7 @@ def __call__(self, data) -> dict: report = deepcopy(self.get_report_format()) report[str(ImageStatsKeys.INTENSITY)] = [ - self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds + self.ops[str(ImageStatsKeys.INTENSITY)].evaluate(nda_f) for nda_f in nda_foregrounds ] d[self.stats_name] = report @@ -340,8 +348,8 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stat report_format = { str(LabelStatsKeys.LABEL_UID): None, - str(LabelStatsKeys.IMAGE_INT): None, - str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INT): None}], + str(LabelStatsKeys.IMAGE_INTST): None, + str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INTST): None}], } if self.do_ccp: @@ -350,9 +358,9 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stat ) super().__init__(stats_name, report_format) - self.update_ops(LabelStatsKeys.IMAGE_INT, SampleOperations()) + self.update_ops(str(LabelStatsKeys.IMAGE_INTST), SampleOperations()) - id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INT]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INTST]) self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data): @@ -367,23 +375,23 @@ def __call__(self, data): Examples: output dict contains { LabelStatsKeys.LABEL_UID:[0,1,3], - LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.IMAGE_INTST: {...}, LabelStatsKeys.LABEL:[ { LabelStatsKeys.PIXEL_PCT: 0.8, - LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.IMAGE_INTST: {...}, LabelStatsKeys.LABEL_SHAPE: [...], LabelStatsKeys.LABEL_NCOMP: 1 } { LabelStatsKeys.PIXEL_PCT: 0.1, - LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.IMAGE_INTST: {...}, LabelStatsKeys.LABEL_SHAPE: [...], LabelStatsKeys.LABEL_NCOMP: 1 } { LabelStatsKeys.PIXEL_PCT: 0.1, - LabelStatsKeys.IMAGE_INT: {...}, + LabelStatsKeys.IMAGE_INTST: {...}, LabelStatsKeys.LABEL_SHAPE: [...], LabelStatsKeys.LABEL_NCOMP: 1 } @@ -421,8 +429,8 @@ def __call__(self, data): label_dict: Dict[str, Any] = {} mask_index = ndas_label == index - label_dict[str(LabelStatsKeys.IMAGE_INT)] = [ - self.ops[LabelStatsKeys.IMAGE_INT].evaluate(nda[mask_index]) for nda in ndas + label_dict[str(LabelStatsKeys.IMAGE_INTST)] = [ + self.ops[str(LabelStatsKeys.IMAGE_INTST)].evaluate(nda[mask_index]) for nda in ndas ] pixel_count = sum(mask_index) pixel_arr.append(pixel_count) @@ -440,8 +448,8 @@ def __call__(self, data): report = deepcopy(self.get_report_format()) report[str(LabelStatsKeys.LABEL_UID)] = unique_label - report[str(LabelStatsKeys.IMAGE_INT)] = [ - self.ops[LabelStatsKeys.IMAGE_INT].evaluate(nda_f) for nda_f in nda_foregrounds + report[str(LabelStatsKeys.IMAGE_INTST)] = [ + self.ops[str(LabelStatsKeys.IMAGE_INTST)].evaluate(nda_f) for nda_f in nda_foregrounds ] report[str(LabelStatsKeys.LABEL)] = label_substats @@ -462,7 +470,7 @@ class ImageStatsSumm(Analyzer): """ - def __init__(self, stats_name: Optional[str] = "image_stats", average: Optional[bool] = True): + def __init__(self, stats_name: str = "image_stats", average: Optional[bool] = True): self.summary_average = average report_format = { str(ImageStatsKeys.SHAPE): None, @@ -473,11 +481,11 @@ def __init__(self, stats_name: Optional[str] = "image_stats", average: Optional[ } super().__init__(stats_name, report_format) - self.update_ops(ImageStatsKeys.SHAPE, SampleOperations()) - self.update_ops(ImageStatsKeys.CHANNELS, SampleOperations()) - self.update_ops(ImageStatsKeys.CROPPED_SHAPE, SampleOperations()) - self.update_ops(ImageStatsKeys.SPACING, SampleOperations()) - self.update_ops(ImageStatsKeys.INTENSITY, SummaryOperations()) + self.update_ops(str(ImageStatsKeys.SHAPE), SampleOperations()) + self.update_ops(str(ImageStatsKeys.CHANNELS), SampleOperations()) + self.update_ops(str(ImageStatsKeys.CROPPED_SHAPE), SampleOperations()) + self.update_ops(str(ImageStatsKeys.SPACING), SampleOperations()) + self.update_ops(str(ImageStatsKeys.INTENSITY), SummaryOperations()) def __call__(self, data: List[Dict]): """ @@ -513,14 +521,14 @@ def __call__(self, data: List[Dict]): report = deepcopy(self.get_report_format()) for k in [ImageStatsKeys.SHAPE, ImageStatsKeys.CHANNELS, ImageStatsKeys.CROPPED_SHAPE, ImageStatsKeys.SPACING]: - v_np = concat_val_to_np(data, [self.stats_name, k]) - report[str(k)] = self.ops[k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + k_str = str(k) + v_np = concat_val_to_np(data, [self.stats_name, k_str]) + report[k_str] = self.ops[k_str].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) - op_keys = report[str(ImageStatsKeys.INTENSITY)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.stats_name, ImageStatsKeys.INTENSITY], op_keys) - report[str(ImageStatsKeys.INTENSITY)] = self.ops[ImageStatsKeys.INTENSITY].evaluate( - intst_dict, dim=None if self.summary_average else 0 - ) + intst_str = str(ImageStatsKeys.INTENSITY) + op_keys = report[intst_str].keys() # template, max/min/... + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) + report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) return report @@ -537,12 +545,12 @@ class FgImageStatsSumm(Analyzer): """ - def __init__(self, stats_name: Optional[str] = "image_foreground_stats", average: Optional[bool] = True): + def __init__(self, stats_name: str = "image_foreground_stats", average: Optional[bool] = True): self.summary_average = average report_format = {str(ImageStatsKeys.INTENSITY): None} super().__init__(stats_name, report_format) - self.update_ops(ImageStatsKeys.INTENSITY, SummaryOperations()) + self.update_ops(str(ImageStatsKeys.INTENSITY), SummaryOperations()) def __call__(self, data: List[Dict]): if not isinstance(data, list): @@ -555,27 +563,26 @@ def __call__(self, data: List[Dict]): return KeyError(f"{self.stats_name} is not in input data") report = deepcopy(self.get_report_format()) - op_keys = report[str(ImageStatsKeys.INTENSITY)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.stats_name, ImageStatsKeys.INTENSITY], op_keys) + intst_str: str = str(ImageStatsKeys.INTENSITY) + op_keys = report[intst_str].keys() # template, max/min/... + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) - report[str(ImageStatsKeys.INTENSITY)] = self.ops[ImageStatsKeys.INTENSITY].evaluate( - intst_dict, dim=None if self.summary_average else 0 - ) + report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) return report class LabelStatsSumm(Analyzer): def __init__( - self, stats_name: Optional[str] = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True + self, stats_name: str = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True ): self.summary_average = average self.do_ccp = do_ccp report_format = { str(LabelStatsKeys.LABEL_UID): None, - str(LabelStatsKeys.IMAGE_INT): None, - str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INT): None}], + str(LabelStatsKeys.IMAGE_INTST): None, + str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INTST): None}], } if self.do_ccp: report_format[str(LabelStatsKeys.LABEL)][0].update( @@ -583,13 +590,13 @@ def __init__( ) super().__init__(stats_name, report_format) - self.update_ops(LabelStatsKeys.IMAGE_INT, SummaryOperations()) + self.update_ops(str(LabelStatsKeys.IMAGE_INTST), SummaryOperations()) # label-0-'pixel percentage' id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.PIXEL_PCT]) self.update_ops_nested_label(id_seq, SampleOperations()) # label-0-'image intensity' - id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INT]) + id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INTST]) self.update_ops_nested_label(id_seq, SummaryOperations()) # label-0-shape id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.LABEL_SHAPE]) @@ -615,40 +622,50 @@ def __call__(self, data: List[Dict]): report[str(LabelStatsKeys.LABEL_UID)] = unique_label # image intensity - op_keys = report[str(LabelStatsKeys.IMAGE_INT)].keys() # template, max/min/... - intst_dict = concat_multikeys_to_dict(data, [self.stats_name, LabelStatsKeys.IMAGE_INT], op_keys) - report[str(LabelStatsKeys.IMAGE_INT)] = self.ops[LabelStatsKeys.IMAGE_INT].evaluate( - intst_dict, dim=None if self.summary_average else 0 - ) + intst_str: str = str(LabelStatsKeys.IMAGE_INTST) + op_keys = report[intst_str].keys() # template, max/min/... + intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) + report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) detailed_label_list = [] # iterate through each label + label_str = str(LabelStatsKeys.LABEL) for label_id in unique_label: stats = {} - # todo(check ccp) - for k in [LabelStatsKeys.PIXEL_PCT, LabelStatsKeys.LABEL_NCOMP]: - # allow_missing value can be missing because label dist is not even - v_np = concat_val_to_np(data, [self.stats_name, LabelStatsKeys.LABEL, label_id, k], allow_missing=True) - stats[str(k)] = self.ops[LabelStatsKeys.LABEL][0][k].evaluate( - v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 - ) - # label shape is a 3-element value, but the number of labels in each image - # can vary from 0 to N. So the value in a list format is "ragged" - v_np = concat_val_to_np( - data, - [self.stats_name, LabelStatsKeys.LABEL, label_id, LabelStatsKeys.LABEL_SHAPE], - ragged=True, - allow_missing=True, + + pct_str = str(LabelStatsKeys.PIXEL_PCT) + pct_fixed_keys = [self.stats_name, label_str, label_id, pct_str] + pct_np = concat_val_to_np(data, pct_fixed_keys, allow_missing=True) + stats[pct_str] = self.ops[label_str][0][pct_str].evaluate( + pct_np, + dim=(0, 1) if pct_np.ndim > 2 and self.summary_average else 0 ) - stats[str(LabelStatsKeys.LABEL_SHAPE)] = self.ops[LabelStatsKeys.LABEL][0][k].evaluate( - v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0 + + ncomp_str = str(LabelStatsKeys.LABEL_NCOMP) + ncomp_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, ncomp_str] + ncomp_np = concat_val_to_np(data, ncomp_fixed_keys, allow_missing=True) + stats[ncomp_str] = self.ops[label_str][0][ncomp_str].evaluate( + ncomp_np, + dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 + ) + + shape_str = str(LabelStatsKeys.LABEL_SHAPE) + shape_fixed_keys = [self.stats_name, label_str, label_id, LabelStatsKeys.LABEL_SHAPE] + shape_np = concat_val_to_np(data, shape_fixed_keys, ragged=True, allow_missing=True) + stats[shape_str] = self.ops[label_str][0][shape_str].evaluate( + shape_np, + dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0 ) + # label shape is a 3-element value, but the number of labels in each image + # can vary from 0 to N. So the value in a list format is "ragged" - intst_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, LabelStatsKeys.IMAGE_INT] - op_keys = report[str(LabelStatsKeys.LABEL)][0][LabelStatsKeys.IMAGE_INT].keys() + intst_str = str(LabelStatsKeys.IMAGE_INTST) + intst_fixed_keys = [self.stats_name, label_str, label_id, intst_str] + op_keys = report[label_str][0][intst_str].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) - stats[str(LabelStatsKeys.IMAGE_INT)] = self.ops[LabelStatsKeys.LABEL][0][LabelStatsKeys.IMAGE_INT].evaluate( - intst_dict, dim=None if self.summary_average else 0 + stats[intst_str] = self.ops[label_str][0][intst_str].evaluate( + intst_dict, + dim=None if self.summary_average else 0 ) detailed_label_list.append(stats) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 471b4ca0e5..75f9012b03 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -11,11 +11,12 @@ from collections import UserDict from functools import partial -from typing import Any +from typing import Any, TypeVar +from monai.config.type_definitions import NdarrayTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std -__all__ = ["Operations", "SampleOperations", "SummaryOperations"] +__all__ = ["Operations", "OperationType", "SampleOperations", "SummaryOperations"] class Operations(UserDict): @@ -39,6 +40,9 @@ def evaluate(self, data: Any, **kwargs) -> dict: return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} +OperationType = TypeVar('OperationType', bound=Operations) + + class SampleOperations(Operations): """ Apply statistical operation to a sample (image/ndarray/tensor) @@ -97,6 +101,7 @@ def evaluate(self, data: Any, **kwargs) -> dict: ret.update({k: ret[cache][idx]}) for k, v in ret.items(): + v: NdarrayTensor ret[k] = v.tolist() return ret @@ -148,3 +153,4 @@ def evaluate(self, data: Any, **kwargs) -> dict: data: input data """ return {k: v(data[k], **kwargs).tolist() for k, v in self.data.items() if (callable(v) and k in data)} + diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 8fd999c2b9..4fc72ddcea 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -21,6 +21,7 @@ LabelStats, LabelStatsSumm, ) +from monai.auto3dseg.operations import OperationType from monai.transforms import Compose from monai.utils.enums import DataStatsKeys @@ -76,7 +77,7 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.image_key = image_key self.label_key = label_key - self.summary_analyzers = [] + self.summary_analyzers: List[OperationType] = [] super().__init__() self.add_analyzer(FilenameStats(image_key, DataStatsKeys.BY_CASE_IMAGE_PATH), None) @@ -168,7 +169,7 @@ def summarize(self, data: List[Dict]): if not isinstance(data, list): raise ValueError(f"{self.__class__} summarize function needs input to be a list of dict") - report = {} + report: Dict[str, Dict] = {} if len(data) == 0: return report diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 0df82eabb2..b130ead5a5 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -12,7 +12,7 @@ import os from copy import deepcopy from numbers import Number -from typing import Any, Dict, List, Optional, Tuple, Union +from typing import Any, Dict, List, Optional, Sequence, Tuple, Union import numpy as np import torch @@ -115,7 +115,7 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An def concat_val_to_np( data_list: List[Dict], - fixed_keys: List[Union[str, int]], + fixed_keys: Sequence[Union[str, int]], ragged: Optional[bool] = False, allow_missing: Optional[bool] = False, **kwargs, @@ -134,7 +134,7 @@ def concat_val_to_np( """ - np_list = [] + np_list: List[Optional[np.ndarray]] = [] for data in data_list: parser = ConfigParser(data) for i, key in enumerate(fixed_keys): @@ -193,7 +193,7 @@ def concat_multikeys_to_dict( ret_dict = {} for key in keys: - addon = [0, key] if zero_insert else [key] + addon: List[Union[str, int]] = [0, key] if zero_insert else [key] val = concat_val_to_np(data_list, fixed_keys + addon, **kwargs) ret_dict.update({key: val}) diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index aebf9b71fd..1a8a624f44 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -19,8 +19,6 @@ from monai.utils.misc import is_module_ver_at_least from monai.utils.type_conversion import convert_data_type, convert_to_dst_type -NumberArray = Union[List, np.ndarray, torch.Tensor, MetaTensor] - __all__ = [ "allclose", "moveaxis", @@ -410,7 +408,7 @@ def linalg_inv(x: NdarrayTensor) -> NdarrayTensor: return torch.linalg.inv(x) if isinstance(x, torch.Tensor) else np.linalg.inv(x) # type: ignore -def max(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: +def max(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.max` with equivalent implementation for numpy Args: @@ -420,13 +418,20 @@ def max(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> Nu the maximum of x. """ + + ret: NdarrayTensor if dim is None: - return np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) + ret = np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) else: - return np.max(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, dim, **kwargs) + if isinstance(x, (np.ndarray, list)): + ret = np.max(x, axis=dim, **kwargs) + else: + ret = torch.max(x, int(dim), **kwargs) + + return ret -def mean(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: +def mean(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.mean` with equivalent implementation for numpy Args: @@ -435,13 +440,20 @@ def mean(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> N Returns: the mean of x """ + + ret: NdarrayTensor if dim is None: - return np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) + ret = np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) else: - return np.mean(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, dim, **kwargs) + if isinstance(x, (np.ndarray, list)): + ret = np.mean(x, axis=dim, **kwargs) + else: + ret = torch.mean(x, int(dim), **kwargs) + + return ret -def median(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: +def median(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.median` with equivalent implementation for numpy Args: @@ -450,16 +462,20 @@ def median(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> Returns the median of x. """ + + ret: NdarrayTensor if dim is None: - return np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) + ret = np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) else: if isinstance(x, (np.ndarray, list)): - return np.median(x, axis=dim, **kwargs) + ret = np.median(x, axis=dim, **kwargs) else: - return torch.median(x, dim, **kwargs) + ret = torch.median(x, int(dim), **kwargs) + + return ret -def min(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: +def min(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.min` with equivalent implementation for numpy Args: @@ -468,13 +484,20 @@ def min(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> Nu Returns: the minimum of x. """ + + ret: NdarrayTensor if dim is None: - return np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) + ret = np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) else: - return np.min(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, dim, **kwargs) + if isinstance(x, (np.ndarray, list)): + ret = np.min(x, axis=dim, **kwargs) + else: + ret = torch.min(x, int(dim), **kwargs) + + return ret -def std(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, unbias: Optional[bool] = False) -> NumberArray: +def std(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, unbias: bool = False) -> NdarrayTensor: """`torch.std` with equivalent implementation for numpy Args: @@ -483,13 +506,20 @@ def std(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, unbias: Optiona Returns: the standard deviation of x. """ + + ret: NdarrayTensor if dim is None: - return np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) + ret = np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) else: - return np.std(x, axis=dim) if isinstance(x, (np.ndarray, list)) else torch.std(x, dim, unbias) + if isinstance(x, (np.ndarray, list)): + ret = np.std(x, axis=dim) + else: + ret = torch.std(x, int(dim), unbias) + return ret -def sum(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NumberArray: + +def sum(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> NdarrayTensor: """`torch.sum` with equivalent implementation for numpy Args: @@ -498,7 +528,14 @@ def sum(x: NumberArray, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> Nu Returns: the sum of x. """ + + ret: NdarrayTensor if dim is None: - return np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) + ret = np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) else: - return np.sum(x, axis=dim, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, dim, **kwargs) + if isinstance(x, (np.ndarray, list)): + ret = np.sum(x, axis=dim, **kwargs) + else: + ret = torch.sum(x, int(dim), **kwargs) + + return ret diff --git a/monai/utils/enums.py b/monai/utils/enums.py index 0be239ff51..ab8e2d8810 100644 --- a/monai/utils/enums.py +++ b/monai/utils/enums.py @@ -564,7 +564,7 @@ class LabelStatsKeys(StrEnum): LABEL_UID = "labels" PIXEL_PCT = "pixel_percentage" - IMAGE_INT = "image_intensity" + IMAGE_INTST = "image_intensity" LABEL = "label" LABEL_SHAPE = "shape" LABEL_NCOMP = "ncomponents" From db3536dd3aad4a03a4860f04910149d6ec63d52e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 08:04:46 +0000 Subject: [PATCH 134/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/auto3dseg/analyzer.py | 16 ++++++++-------- monai/auto3dseg/operations.py | 1 - .../utils_pytorch_numpy_unification.py | 3 +-- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index ca66e03ddb..e3177b5491 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -19,9 +19,9 @@ from monai.apps.utils import get_logger from monai.auto3dseg.operations import ( - Operations, + Operations, OperationType, - SampleOperations, + SampleOperations, SummaryOperations ) @@ -37,7 +37,7 @@ from monai.data.meta_tensor import MetaTensor from monai.transforms.transform import MapTransform from monai.transforms.utils_pytorch_numpy_unification import sum, unique -from monai.utils.enums import ImageStatsKeys, LabelStatsKeys, StrEnum +from monai.utils.enums import ImageStatsKeys, LabelStatsKeys from monai.utils.misc import ImageMetaKey, label_union logger = get_logger(module_name=__name__) @@ -632,12 +632,12 @@ def __call__(self, data: List[Dict]): label_str = str(LabelStatsKeys.LABEL) for label_id in unique_label: stats = {} - + pct_str = str(LabelStatsKeys.PIXEL_PCT) pct_fixed_keys = [self.stats_name, label_str, label_id, pct_str] pct_np = concat_val_to_np(data, pct_fixed_keys, allow_missing=True) stats[pct_str] = self.ops[label_str][0][pct_str].evaluate( - pct_np, + pct_np, dim=(0, 1) if pct_np.ndim > 2 and self.summary_average else 0 ) @@ -645,7 +645,7 @@ def __call__(self, data: List[Dict]): ncomp_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, ncomp_str] ncomp_np = concat_val_to_np(data, ncomp_fixed_keys, allow_missing=True) stats[ncomp_str] = self.ops[label_str][0][ncomp_str].evaluate( - ncomp_np, + ncomp_np, dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 ) @@ -653,7 +653,7 @@ def __call__(self, data: List[Dict]): shape_fixed_keys = [self.stats_name, label_str, label_id, LabelStatsKeys.LABEL_SHAPE] shape_np = concat_val_to_np(data, shape_fixed_keys, ragged=True, allow_missing=True) stats[shape_str] = self.ops[label_str][0][shape_str].evaluate( - shape_np, + shape_np, dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0 ) # label shape is a 3-element value, but the number of labels in each image @@ -664,7 +664,7 @@ def __call__(self, data: List[Dict]): op_keys = report[label_str][0][intst_str].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) stats[intst_str] = self.ops[label_str][0][intst_str].evaluate( - intst_dict, + intst_dict, dim=None if self.summary_average else 0 ) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 75f9012b03..179a8d8208 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -153,4 +153,3 @@ def evaluate(self, data: Any, **kwargs) -> dict: data: input data """ return {k: v(data[k], **kwargs).tolist() for k, v in self.data.items() if (callable(v) and k in data)} - diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 1a8a624f44..5c7a5ac4a0 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -9,13 +9,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import List, Optional, Sequence, Tuple, Union +from typing import Optional, Sequence, Tuple, Union import numpy as np import torch from monai.config.type_definitions import NdarrayOrTensor, NdarrayTensor -from monai.data.meta_tensor import MetaTensor from monai.utils.misc import is_module_ver_at_least from monai.utils.type_conversion import convert_data_type, convert_to_dst_type From e689ce4b0fb5a7824b4282204ffb0df1a33e72fc Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Thu, 25 Aug 2022 16:06:56 +0800 Subject: [PATCH 135/150] autofix Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 28 +++++++++------------------- monai/auto3dseg/operations.py | 2 +- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index e3177b5491..c594b2c13f 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -18,13 +18,7 @@ import torch from monai.apps.utils import get_logger -from monai.auto3dseg.operations import ( - Operations, - OperationType, - SampleOperations, - SummaryOperations -) - +from monai.auto3dseg.operations import Operations, OperationType, SampleOperations, SummaryOperations from monai.auto3dseg.utils import ( concat_multikeys_to_dict, concat_val_to_np, @@ -166,7 +160,9 @@ def __call__(self, data: Any): """Analyze the dict format dataset, return the summary report""" raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") -AnalyzerType = TypeVar('AnalyzerType', bound=Analyzer) + +AnalyzerType = TypeVar("AnalyzerType", bound=Analyzer) + class ImageStats(Analyzer): """ @@ -573,9 +569,7 @@ def __call__(self, data: List[Dict]): class LabelStatsSumm(Analyzer): - def __init__( - self, stats_name: str = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True - ): + def __init__(self, stats_name: str = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True): self.summary_average = average self.do_ccp = do_ccp @@ -637,24 +631,21 @@ def __call__(self, data: List[Dict]): pct_fixed_keys = [self.stats_name, label_str, label_id, pct_str] pct_np = concat_val_to_np(data, pct_fixed_keys, allow_missing=True) stats[pct_str] = self.ops[label_str][0][pct_str].evaluate( - pct_np, - dim=(0, 1) if pct_np.ndim > 2 and self.summary_average else 0 + pct_np, dim=(0, 1) if pct_np.ndim > 2 and self.summary_average else 0 ) ncomp_str = str(LabelStatsKeys.LABEL_NCOMP) ncomp_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, ncomp_str] ncomp_np = concat_val_to_np(data, ncomp_fixed_keys, allow_missing=True) stats[ncomp_str] = self.ops[label_str][0][ncomp_str].evaluate( - ncomp_np, - dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 + ncomp_np, dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 ) shape_str = str(LabelStatsKeys.LABEL_SHAPE) shape_fixed_keys = [self.stats_name, label_str, label_id, LabelStatsKeys.LABEL_SHAPE] shape_np = concat_val_to_np(data, shape_fixed_keys, ragged=True, allow_missing=True) stats[shape_str] = self.ops[label_str][0][shape_str].evaluate( - shape_np, - dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0 + shape_np, dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0 ) # label shape is a 3-element value, but the number of labels in each image # can vary from 0 to N. So the value in a list format is "ragged" @@ -664,8 +655,7 @@ def __call__(self, data: List[Dict]): op_keys = report[label_str][0][intst_str].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) stats[intst_str] = self.ops[label_str][0][intst_str].evaluate( - intst_dict, - dim=None if self.summary_average else 0 + intst_dict, dim=None if self.summary_average else 0 ) detailed_label_list.append(stats) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 179a8d8208..d51fbb95e4 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -40,7 +40,7 @@ def evaluate(self, data: Any, **kwargs) -> dict: return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} -OperationType = TypeVar('OperationType', bound=Operations) +OperationType = TypeVar("OperationType", bound=Operations) class SampleOperations(Operations): From a4f3337e13e467c0b57e4c28e2df0c77879ab569 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Thu, 25 Aug 2022 18:23:13 +0800 Subject: [PATCH 136/150] fix mypy Signed-off-by: Mingxin Zheng --- data_stats.yaml | 24118 ---------------- monai/auto3dseg/analyzer.py | 17 +- monai/auto3dseg/operations.py | 8 +- monai/auto3dseg/seg_summarizer.py | 7 +- monai/auto3dseg/utils.py | 15 +- .../utils_pytorch_numpy_unification.py | 24 +- 6 files changed, 30 insertions(+), 24159 deletions(-) delete mode 100644 data_stats.yaml diff --git a/data_stats.yaml b/data_stats.yaml deleted file mode 100644 index 36227b783b..0000000000 --- a/data_stats.yaml +++ /dev/null @@ -1,24118 +0,0 @@ -stats_by_cases: -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_367.nii.gz - image_foreground_stats: - intensity: - - max: 1076.275146484375 - mean: 481.9836120605469 - median: 464.75518798828125 - min: 57.075199127197266 - percentile: [220.14718627929688, 350.60479736328125, 644.1343994140625, 921.3567504882812] - percentile_00_5: 220.14718627929688 - percentile_10_0: 350.60479736328125 - percentile_90_0: 644.1343994140625 - percentile_99_5: 921.3567504882812 - stdev: 123.6221694946289 - image_stats: - channels: 1 - cropped_shape: - - [36, 57, 37] - intensity: - - max: 1932.4031982421875 - mean: 596.255126953125 - median: 587.0592041015625 - min: 0.0 - percentile: [32.61439895629883, 228.30079650878906, 953.97119140625, 1084.4287109375] - percentile_00_5: 32.61439895629883 - percentile_10_0: 228.30079650878906 - percentile_90_0: 953.97119140625 - percentile_99_5: 1084.4287109375 - stdev: 273.3035583496094 - shape: - - [36, 57, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_367.nii.gz - label_stats: - image_intensity: - - max: 1076.275146484375 - mean: 481.9836120605469 - median: 464.75518798828125 - min: 57.075199127197266 - percentile: [220.14718627929688, 350.60479736328125, 644.1343994140625, 921.3567504882812] - percentile_00_5: 220.14718627929688 - percentile_10_0: 350.60479736328125 - percentile_90_0: 644.1343994140625 - percentile_99_5: 921.3567504882812 - stdev: 123.6221694946289 - label: - - image_intensity: - - max: 1932.4031982421875 - mean: 602.864013671875 - median: 611.5199584960938 - min: 0.0 - percentile: [24.460800170898438, 211.99359130859375, 962.124755859375, 1084.4287109375] - percentile_00_5: 24.460800170898438 - percentile_10_0: 211.99359130859375 - percentile_90_0: 962.124755859375 - percentile_99_5: 1084.4287109375 - stdev: 278.0864562988281 - ncomponents: 1 - pixel_percentage: 0.9453269243240356 - shape: - - [36, 57, 37] - - image_intensity: - - max: 880.5887451171875 - mean: 484.6379089355469 - median: 472.9087829589844 - min: 97.84320068359375 - percentile: [228.30079650878906, 351.4201965332031, 635.9807739257812, 831.6671752929688] - percentile_00_5: 228.30079650878906 - percentile_10_0: 351.4201965332031 - percentile_90_0: 635.9807739257812 - percentile_99_5: 831.6671752929688 - stdev: 111.9344482421875 - ncomponents: 1 - pixel_percentage: 0.029134398326277733 - shape: - - [24, 20, 16] - - image_intensity: - - max: 1076.275146484375 - mean: 478.9556579589844 - median: 448.447998046875 - min: 57.075199127197266 - percentile: [203.83999633789062, 342.4512023925781, 652.2879638671875, 962.124755859375] - percentile_00_5: 203.83999633789062 - percentile_10_0: 342.4512023925781 - percentile_90_0: 652.2879638671875 - percentile_99_5: 962.124755859375 - stdev: 135.6686553955078 - ncomponents: 1 - pixel_percentage: 0.025538695976138115 - shape: - - [21, 27, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_304.nii.gz - image_foreground_stats: - intensity: - - max: 775.0296020507812 - mean: 358.2229309082031 - median: 343.64520263671875 - min: 7.311600208282471 - percentile: [124.29720306396484, 241.28280639648438, 497.1888122558594, 684.7306518554688] - percentile_00_5: 124.29720306396484 - percentile_10_0: 241.28280639648438 - percentile_90_0: 497.1888122558594 - percentile_99_5: 684.7306518554688 - stdev: 103.74859619140625 - image_stats: - channels: 1 - cropped_shape: - - [36, 48, 38] - intensity: - - max: 1835.211669921875 - mean: 527.3478393554688 - median: 555.681640625 - min: 0.0 - percentile: [29.246400833129883, 204.7248077392578, 796.9644165039062, 935.8848266601562] - percentile_00_5: 29.246400833129883 - percentile_10_0: 204.7248077392578 - percentile_90_0: 796.9644165039062 - percentile_99_5: 935.8848266601562 - stdev: 229.5199432373047 - shape: - - [36, 48, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_304.nii.gz - label_stats: - image_intensity: - - max: 775.0296020507812 - mean: 358.2229309082031 - median: 343.64520263671875 - min: 7.311600208282471 - percentile: [124.29720306396484, 241.28280639648438, 497.1888122558594, 684.7306518554688] - percentile_00_5: 124.29720306396484 - percentile_10_0: 241.28280639648438 - percentile_90_0: 497.1888122558594 - percentile_99_5: 684.7306518554688 - stdev: 103.74859619140625 - label: - - image_intensity: - - max: 1835.211669921875 - mean: 536.9735717773438 - median: 577.6163940429688 - min: 0.0 - percentile: [29.246400833129883, 197.4132080078125, 804.2760009765625, 935.8848266601562] - percentile_00_5: 29.246400833129883 - percentile_10_0: 197.4132080078125 - percentile_90_0: 804.2760009765625 - percentile_99_5: 935.8848266601562 - stdev: 230.964111328125 - ncomponents: 1 - pixel_percentage: 0.9461501240730286 - shape: - - [36, 48, 38] - - image_intensity: - - max: 753.0948486328125 - mean: 375.4376525878906 - median: 365.58001708984375 - min: 7.311600208282471 - percentile: [110.22237396240234, 263.2176208496094, 511.81201171875, 650.732421875] - percentile_00_5: 110.22237396240234 - percentile_10_0: 263.2176208496094 - percentile_90_0: 511.81201171875 - percentile_99_5: 650.732421875 - stdev: 100.17163848876953 - ncomponents: 1 - pixel_percentage: 0.030701754614710808 - shape: - - [23, 18, 15] - - image_intensity: - - max: 775.0296020507812 - mean: 335.39080810546875 - median: 314.3988037109375 - min: 65.80440521240234 - percentile: [131.6088104248047, 226.65960693359375, 482.56561279296875, 697.5634155273438] - percentile_00_5: 131.6088104248047 - percentile_10_0: 226.65960693359375 - percentile_90_0: 482.56561279296875 - percentile_99_5: 697.5634155273438 - stdev: 104.00409698486328 - ncomponents: 1 - pixel_percentage: 0.023148147389292717 - shape: - - [20, 20, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_204.nii.gz - image_foreground_stats: - intensity: - - max: 372605.3125 - mean: 165115.921875 - median: 160553.515625 - min: 15146.5576171875 - percentile: [60586.23046875, 115113.8359375, 224169.046875, 320016.15625] - percentile_00_5: 60586.23046875 - percentile_10_0: 115113.8359375 - percentile_90_0: 224169.046875 - percentile_99_5: 320016.15625 - stdev: 44515.078125 - image_stats: - channels: 1 - cropped_shape: - - [36, 48, 39] - intensity: - - max: 581627.8125 - mean: 218917.875 - median: 218110.4375 - min: 0.0 - percentile: [12117.24609375, 63615.54296875, 366546.6875, 424103.625] - percentile_00_5: 12117.24609375 - percentile_10_0: 63615.54296875 - percentile_90_0: 366546.6875 - percentile_99_5: 424103.625 - stdev: 110472.5546875 - shape: - - [36, 48, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_204.nii.gz - label_stats: - image_intensity: - - max: 372605.3125 - mean: 165115.921875 - median: 160553.515625 - min: 15146.5576171875 - percentile: [60586.23046875, 115113.8359375, 224169.046875, 320016.15625] - percentile_00_5: 60586.23046875 - percentile_10_0: 115113.8359375 - percentile_90_0: 224169.046875 - percentile_99_5: 320016.15625 - stdev: 44515.078125 - label: - - image_intensity: - - max: 581627.8125 - mean: 221313.65625 - median: 227198.359375 - min: 0.0 - percentile: [12117.24609375, 60586.23046875, 369576.0, 424103.625] - percentile_00_5: 12117.24609375 - percentile_10_0: 60586.23046875 - percentile_90_0: 369576.0 - percentile_99_5: 424103.625 - stdev: 111914.0625 - ncomponents: 1 - pixel_percentage: 0.9573688507080078 - shape: - - [36, 48, 39] - - image_intensity: - - max: 305960.46875 - mean: 167676.65625 - median: 163582.828125 - min: 15146.5576171875 - percentile: [45439.671875, 118143.1484375, 227198.359375, 275667.34375] - percentile_00_5: 45439.671875 - percentile_10_0: 118143.1484375 - percentile_90_0: 227198.359375 - percentile_99_5: 275667.34375 - stdev: 42764.04296875 - ncomponents: 1 - pixel_percentage: 0.024364909157156944 - shape: - - [21, 16, 14] - - image_intensity: - - max: 372605.3125 - mean: 161700.265625 - median: 154494.890625 - min: 54527.609375 - percentile: [63615.54296875, 115113.8359375, 221139.734375, 341403.25] - percentile_00_5: 63615.54296875 - percentile_10_0: 115113.8359375 - percentile_90_0: 221139.734375 - percentile_99_5: 341403.25 - stdev: 46529.92578125 - ncomponents: 1 - pixel_percentage: 0.018266262486577034 - shape: - - [17, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_279.nii.gz - image_foreground_stats: - intensity: - - max: 608.6841430664062 - mean: 321.3305969238281 - median: 315.21142578125 - min: 59.78147888183594 - percentile: [129.916015625, 233.6912384033203, 423.905029296875, 571.1575317382812] - percentile_00_5: 129.916015625 - percentile_10_0: 233.6912384033203 - percentile_90_0: 423.905029296875 - percentile_99_5: 571.1575317382812 - stdev: 78.96026611328125 - image_stats: - channels: 1 - cropped_shape: - - [34, 50, 32] - intensity: - - max: 1374.9739990234375 - mean: 393.75341796875 - median: 407.60101318359375 - min: 0.0 - percentile: [16.304039001464844, 114.12828063964844, 614.1188354492188, 739.116455078125] - percentile_00_5: 16.304039001464844 - percentile_10_0: 114.12828063964844 - percentile_90_0: 614.1188354492188 - percentile_99_5: 739.116455078125 - stdev: 181.21543884277344 - shape: - - [34, 50, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_279.nii.gz - label_stats: - image_intensity: - - max: 608.6841430664062 - mean: 321.3305969238281 - median: 315.21142578125 - min: 59.78147888183594 - percentile: [129.916015625, 233.6912384033203, 423.905029296875, 571.1575317382812] - percentile_00_5: 129.916015625 - percentile_10_0: 233.6912384033203 - percentile_90_0: 423.905029296875 - percentile_99_5: 571.1575317382812 - stdev: 78.96026611328125 - label: - - image_intensity: - - max: 1374.9739990234375 - mean: 397.0698547363281 - median: 418.4703674316406 - min: 0.0 - percentile: [16.304039001464844, 108.693603515625, 614.1188354492188, 744.5511474609375] - percentile_00_5: 16.304039001464844 - percentile_10_0: 108.693603515625 - percentile_90_0: 614.1188354492188 - percentile_99_5: 744.5511474609375 - stdev: 183.86439514160156 - ncomponents: 1 - pixel_percentage: 0.9562132358551025 - shape: - - [34, 50, 32] - - image_intensity: - - max: 576.0760498046875 - mean: 323.8052062988281 - median: 320.6461181640625 - min: 59.78147888183594 - percentile: [110.32400512695312, 228.25656127929688, 423.905029296875, 547.27197265625] - percentile_00_5: 110.32400512695312 - percentile_10_0: 228.25656127929688 - percentile_90_0: 423.905029296875 - percentile_99_5: 547.27197265625 - stdev: 79.53681182861328 - ncomponents: 1 - pixel_percentage: 0.023180147632956505 - shape: - - [18, 15, 11] - - image_intensity: - - max: 608.6841430664062 - mean: 318.5469055175781 - median: 304.3420715332031 - min: 92.38955688476562 - percentile: [163.0404052734375, 233.6912384033203, 423.905029296875, 583.6847534179688] - percentile_00_5: 163.0404052734375 - percentile_10_0: 233.6912384033203 - percentile_90_0: 423.905029296875 - percentile_99_5: 583.6847534179688 - stdev: 78.21311950683594 - ncomponents: 1 - pixel_percentage: 0.020606618374586105 - shape: - - [16, 21, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_308.nii.gz - image_foreground_stats: - intensity: - - max: 93.0 - mean: 48.50218963623047 - median: 47.0 - min: 21.0 - percentile: [26.0, 36.0, 64.0, 82.735107421875] - percentile_00_5: 26.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 82.735107421875 - stdev: 11.26266860961914 - image_stats: - channels: 1 - cropped_shape: - - [38, 48, 40] - intensity: - - max: 255.0 - mean: 63.103755950927734 - median: 65.0 - min: 2.0 - percentile: [6.0, 24.0, 97.0, 107.0] - percentile_00_5: 6.0 - percentile_10_0: 24.0 - percentile_90_0: 97.0 - percentile_99_5: 107.0 - stdev: 28.243206024169922 - shape: - - [38, 48, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_308.nii.gz - label_stats: - image_intensity: - - max: 93.0 - mean: 48.50218963623047 - median: 47.0 - min: 21.0 - percentile: [26.0, 36.0, 64.0, 82.735107421875] - percentile_00_5: 26.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 82.735107421875 - stdev: 11.26266860961914 - label: - - image_intensity: - - max: 255.0 - mean: 63.87358856201172 - median: 68.0 - min: 2.0 - percentile: [6.0, 23.0, 97.0, 108.0] - percentile_00_5: 6.0 - percentile_10_0: 23.0 - percentile_90_0: 97.0 - percentile_99_5: 108.0 - stdev: 28.656818389892578 - ncomponents: 1 - pixel_percentage: 0.949917733669281 - shape: - - [38, 48, 40] - - image_intensity: - - max: 93.0 - mean: 49.473392486572266 - median: 49.0 - min: 21.0 - percentile: [25.049999237060547, 37.0, 64.0, 80.0] - percentile_00_5: 25.049999237060547 - percentile_10_0: 37.0 - percentile_90_0: 64.0 - percentile_99_5: 80.0 - stdev: 10.876535415649414 - ncomponents: 1 - pixel_percentage: 0.027563048526644707 - shape: - - [24, 16, 16] - - image_intensity: - - max: 91.0 - mean: 47.31344985961914 - median: 45.0 - min: 23.0 - percentile: [26.0, 35.0, 64.0, 84.7900390625] - percentile_00_5: 26.0 - percentile_10_0: 35.0 - percentile_90_0: 64.0 - percentile_99_5: 84.7900390625 - stdev: 11.607906341552734 - ncomponents: 1 - pixel_percentage: 0.0225191880017519 - shape: - - [19, 21, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_375.nii.gz - image_foreground_stats: - intensity: - - max: 981.7236328125 - mean: 419.49102783203125 - median: 398.1816101074219 - min: 20.595600128173828 - percentile: [151.75523376464844, 295.20361328125, 569.8115844726562, 802.5076904296875] - percentile_00_5: 151.75523376464844 - percentile_10_0: 295.20361328125 - percentile_90_0: 569.8115844726562 - percentile_99_5: 802.5076904296875 - stdev: 114.06122589111328 - image_stats: - channels: 1 - cropped_shape: - - [32, 54, 34] - intensity: - - max: 1675.1087646484375 - mean: 501.00372314453125 - median: 487.42919921875 - min: 0.0 - percentile: [20.595600128173828, 178.49520874023438, 803.2283935546875, 899.3411865234375] - percentile_00_5: 20.595600128173828 - percentile_10_0: 178.49520874023438 - percentile_90_0: 803.2283935546875 - percentile_99_5: 899.3411865234375 - stdev: 228.4934844970703 - shape: - - [32, 54, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_375.nii.gz - label_stats: - image_intensity: - - max: 981.7236328125 - mean: 419.49102783203125 - median: 398.1816101074219 - min: 20.595600128173828 - percentile: [151.75523376464844, 295.20361328125, 569.8115844726562, 802.5076904296875] - percentile_00_5: 151.75523376464844 - percentile_10_0: 295.20361328125 - percentile_90_0: 569.8115844726562 - percentile_99_5: 802.5076904296875 - stdev: 114.06122589111328 - label: - - image_intensity: - - max: 1675.1087646484375 - mean: 505.73333740234375 - median: 501.15960693359375 - min: 0.0 - percentile: [20.595600128173828, 171.6300048828125, 803.2283935546875, 899.3411865234375] - percentile_00_5: 20.595600128173828 - percentile_10_0: 171.6300048828125 - percentile_90_0: 803.2283935546875 - percentile_99_5: 899.3411865234375 - stdev: 232.5421142578125 - ncomponents: 1 - pixel_percentage: 0.9451593160629272 - shape: - - [32, 54, 34] - - image_intensity: - - max: 878.74560546875 - mean: 414.59130859375 - median: 405.04681396484375 - min: 20.595600128173828 - percentile: [119.62611389160156, 288.3384094238281, 549.2160034179688, 769.9315185546875] - percentile_00_5: 119.62611389160156 - percentile_10_0: 288.3384094238281 - percentile_90_0: 549.2160034179688 - percentile_99_5: 769.9315185546875 - stdev: 107.9845962524414 - ncomponents: 1 - pixel_percentage: 0.028696894645690918 - shape: - - [19, 18, 15] - - image_intensity: - - max: 981.7236328125 - mean: 424.86920166015625 - median: 398.1816101074219 - min: 89.24760437011719 - percentile: [212.82119750976562, 302.06878662109375, 593.83984375, 826.0548706054688] - percentile_00_5: 212.82119750976562 - percentile_10_0: 302.06878662109375 - percentile_90_0: 593.83984375 - percentile_99_5: 826.0548706054688 - stdev: 120.14885711669922 - ncomponents: 1 - pixel_percentage: 0.026143791154026985 - shape: - - [17, 26, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_216.nii.gz - image_foreground_stats: - intensity: - - max: 327023.46875 - mean: 152649.546875 - median: 144644.984375 - min: 50311.30078125 - percentile: [72322.4921875, 106911.515625, 204389.65625, 298723.34375] - percentile_00_5: 72322.4921875 - percentile_10_0: 106911.515625 - percentile_90_0: 204389.65625 - percentile_99_5: 298723.34375 - stdev: 41539.86328125 - image_stats: - channels: 1 - cropped_shape: - - [32, 49, 36] - intensity: - - max: 537702.0 - mean: 201198.734375 - median: 204389.65625 - min: 0.0 - percentile: [9433.369140625, 78611.40625, 311301.1875, 349034.65625] - percentile_00_5: 9433.369140625 - percentile_10_0: 78611.40625 - percentile_90_0: 311301.1875 - percentile_99_5: 349034.65625 - stdev: 88123.3671875 - shape: - - [32, 49, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_216.nii.gz - label_stats: - image_intensity: - - max: 327023.46875 - mean: 152649.546875 - median: 144644.984375 - min: 50311.30078125 - percentile: [72322.4921875, 106911.515625, 204389.65625, 298723.34375] - percentile_00_5: 72322.4921875 - percentile_10_0: 106911.515625 - percentile_90_0: 204389.65625 - percentile_99_5: 298723.34375 - stdev: 41539.86328125 - label: - - image_intensity: - - max: 537702.0 - mean: 204351.328125 - median: 213823.03125 - min: 0.0 - percentile: [9433.369140625, 72322.4921875, 311301.1875, 349034.65625] - percentile_00_5: 9433.369140625 - percentile_10_0: 72322.4921875 - percentile_90_0: 311301.1875 - percentile_99_5: 349034.65625 - stdev: 89414.53125 - ncomponents: 1 - pixel_percentage: 0.9390235543251038 - shape: - - [32, 49, 36] - - image_intensity: - - max: 295578.90625 - mean: 151590.53125 - median: 147789.453125 - min: 50311.30078125 - percentile: [72322.4921875, 106911.515625, 201245.203125, 260989.875] - percentile_00_5: 72322.4921875 - percentile_10_0: 106911.515625 - percentile_90_0: 201245.203125 - percentile_99_5: 260989.875 - stdev: 36454.01171875 - ncomponents: 1 - pixel_percentage: 0.033340420573949814 - shape: - - [21, 16, 15] - - image_intensity: - - max: 327023.46875 - mean: 153927.1875 - median: 144644.984375 - min: 50311.30078125 - percentile: [77966.7890625, 103767.0546875, 210678.578125, 315090.09375] - percentile_00_5: 77966.7890625 - percentile_10_0: 103767.0546875 - percentile_90_0: 210678.578125 - percentile_99_5: 315090.09375 - stdev: 46916.05859375 - ncomponents: 1 - pixel_percentage: 0.027636054903268814 - shape: - - [19, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_316.nii.gz - image_foreground_stats: - intensity: - - max: 556.8160400390625 - mean: 254.1913299560547 - median: 246.28399658203125 - min: 26.770000457763672 - percentile: [107.08000183105469, 182.0360107421875, 331.947998046875, 471.1520080566406] - percentile_00_5: 107.08000183105469 - percentile_10_0: 182.0360107421875 - percentile_90_0: 331.947998046875 - percentile_99_5: 471.1520080566406 - stdev: 62.83604431152344 - image_stats: - channels: 1 - cropped_shape: - - [37, 51, 33] - intensity: - - max: 1493.7659912109375 - mean: 351.4002990722656 - median: 337.302001953125 - min: 0.0 - percentile: [21.416000366210938, 123.14199829101562, 583.5859985351562, 685.31201171875] - percentile_00_5: 21.416000366210938 - percentile_10_0: 123.14199829101562 - percentile_90_0: 583.5859985351562 - percentile_99_5: 685.31201171875 - stdev: 170.51121520996094 - shape: - - [37, 51, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_316.nii.gz - label_stats: - image_intensity: - - max: 556.8160400390625 - mean: 254.1913299560547 - median: 246.28399658203125 - min: 26.770000457763672 - percentile: [107.08000183105469, 182.0360107421875, 331.947998046875, 471.1520080566406] - percentile_00_5: 107.08000183105469 - percentile_10_0: 182.0360107421875 - percentile_90_0: 331.947998046875 - percentile_99_5: 471.1520080566406 - stdev: 62.83604431152344 - label: - - image_intensity: - - max: 1493.7659912109375 - mean: 356.4845275878906 - median: 348.010009765625 - min: 0.0 - percentile: [21.416000366210938, 117.78800201416016, 583.5859985351562, 685.31201171875] - percentile_00_5: 21.416000366210938 - percentile_10_0: 117.78800201416016 - percentile_90_0: 583.5859985351562 - percentile_99_5: 685.31201171875 - stdev: 172.82394409179688 - ncomponents: 1 - pixel_percentage: 0.9502978920936584 - shape: - - [37, 51, 33] - - image_intensity: - - max: 492.5679931640625 - mean: 258.5575256347656 - median: 251.63800048828125 - min: 32.124000549316406 - percentile: [112.43400573730469, 187.38999938964844, 331.947998046875, 451.4222106933594] - percentile_00_5: 112.43400573730469 - percentile_10_0: 187.38999938964844 - percentile_90_0: 331.947998046875 - percentile_99_5: 451.4222106933594 - stdev: 59.11429214477539 - ncomponents: 1 - pixel_percentage: 0.02537296712398529 - shape: - - [22, 17, 13] - - image_intensity: - - max: 556.8160400390625 - mean: 249.6377716064453 - median: 240.9300079345703 - min: 26.770000457763672 - percentile: [101.72599792480469, 171.3280029296875, 331.947998046875, 475.75701904296875] - percentile_00_5: 101.72599792480469 - percentile_10_0: 171.3280029296875 - percentile_90_0: 331.947998046875 - percentile_99_5: 475.75701904296875 - stdev: 66.1898193359375 - ncomponents: 1 - pixel_percentage: 0.02432914264500141 - shape: - - [18, 25, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_089.nii.gz - image_foreground_stats: - intensity: - - max: 784.9529418945312 - mean: 376.9897155761719 - median: 362.2859802246094 - min: 120.76199340820312 - percentile: [181.1429901123047, 271.7144775390625, 501.16229248046875, 700.4195556640625] - percentile_00_5: 181.1429901123047 - percentile_10_0: 271.7144775390625 - percentile_90_0: 501.16229248046875 - percentile_99_5: 700.4195556640625 - stdev: 95.98075866699219 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 38] - intensity: - - max: 2016.725341796875 - mean: 536.9136962890625 - median: 561.5432739257812 - min: 0.0 - percentile: [36.228599548339844, 241.52398681640625, 809.1053466796875, 954.019775390625] - percentile_00_5: 36.228599548339844 - percentile_10_0: 241.52398681640625 - percentile_90_0: 809.1053466796875 - percentile_99_5: 954.019775390625 - stdev: 223.04946899414062 - shape: - - [34, 51, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_089.nii.gz - label_stats: - image_intensity: - - max: 784.9529418945312 - mean: 376.9897155761719 - median: 362.2859802246094 - min: 120.76199340820312 - percentile: [181.1429901123047, 271.7144775390625, 501.16229248046875, 700.4195556640625] - percentile_00_5: 181.1429901123047 - percentile_10_0: 271.7144775390625 - percentile_90_0: 501.16229248046875 - percentile_99_5: 700.4195556640625 - stdev: 95.98075866699219 - label: - - image_intensity: - - max: 2016.725341796875 - mean: 546.3899536132812 - median: 579.6575927734375 - min: 0.0 - percentile: [30.341413497924805, 235.4858856201172, 815.1434936523438, 954.019775390625] - percentile_00_5: 30.341413497924805 - percentile_10_0: 235.4858856201172 - percentile_90_0: 815.1434936523438 - percentile_99_5: 954.019775390625 - stdev: 224.82859802246094 - ncomponents: 1 - pixel_percentage: 0.9440599679946899 - shape: - - [34, 51, 38] - - image_intensity: - - max: 730.6100463867188 - mean: 380.2952575683594 - median: 368.3240966796875 - min: 120.76199340820312 - percentile: [181.1429901123047, 271.7144775390625, 501.16229248046875, 652.11474609375] - percentile_00_5: 181.1429901123047 - percentile_10_0: 271.7144775390625 - percentile_90_0: 501.16229248046875 - percentile_99_5: 652.11474609375 - stdev: 92.89605712890625 - ncomponents: 1 - pixel_percentage: 0.026179201900959015 - shape: - - [24, 17, 14] - - image_intensity: - - max: 784.9529418945312 - mean: 374.0820007324219 - median: 356.2478942871094 - min: 138.8762969970703 - percentile: [185.9734649658203, 271.7144775390625, 507.20037841796875, 718.5338745117188] - percentile_00_5: 185.9734649658203 - percentile_10_0: 271.7144775390625 - percentile_90_0: 507.20037841796875 - percentile_99_5: 718.5338745117188 - stdev: 98.52285766601562 - ncomponents: 1 - pixel_percentage: 0.029760820791125298 - shape: - - [21, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_189.nii.gz - image_foreground_stats: - intensity: - - max: 407048.125 - mean: 201265.359375 - median: 195383.09375 - min: 48845.7734375 - percentile: [95314.390625, 149793.703125, 260510.796875, 357323.0625] - percentile_00_5: 95314.390625 - percentile_10_0: 149793.703125 - percentile_90_0: 260510.796875 - percentile_99_5: 357323.0625 - stdev: 46420.56640625 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 30] - intensity: - - max: 1126709.25 - mean: 266940.28125 - median: 267023.5625 - min: 0.0 - percentile: [13025.5400390625, 117229.859375, 410304.5, 475432.21875] - percentile_00_5: 13025.5400390625 - percentile_10_0: 117229.859375 - percentile_90_0: 410304.5 - percentile_99_5: 475432.21875 - stdev: 114874.328125 - shape: - - [35, 53, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_189.nii.gz - label_stats: - image_intensity: - - max: 407048.125 - mean: 201265.359375 - median: 195383.09375 - min: 48845.7734375 - percentile: [95314.390625, 149793.703125, 260510.796875, 357323.0625] - percentile_00_5: 95314.390625 - percentile_10_0: 149793.703125 - percentile_90_0: 260510.796875 - percentile_99_5: 357323.0625 - stdev: 46420.56640625 - label: - - image_intensity: - - max: 1126709.25 - mean: 271287.53125 - median: 276792.71875 - min: 0.0 - percentile: [13025.5400390625, 110717.09375, 413560.90625, 478688.59375] - percentile_00_5: 13025.5400390625 - percentile_10_0: 110717.09375 - percentile_90_0: 413560.90625 - percentile_99_5: 478688.59375 - stdev: 116715.7578125 - ncomponents: 1 - pixel_percentage: 0.937915563583374 - shape: - - [35, 53, 30] - - image_intensity: - - max: 335407.65625 - mean: 197281.0 - median: 195383.09375 - min: 48845.7734375 - percentile: [94109.5234375, 146537.328125, 253998.03125, 309356.5625] - percentile_00_5: 94109.5234375 - percentile_10_0: 146537.328125 - percentile_90_0: 253998.03125 - percentile_99_5: 309356.5625 - stdev: 42110.90625 - ncomponents: 1 - pixel_percentage: 0.03200359269976616 - shape: - - [21, 17, 13] - - image_intensity: - - max: 407048.125 - mean: 205504.34375 - median: 195383.09375 - min: 58614.9296875 - percentile: [105392.8984375, 149793.703125, 273536.34375, 377740.65625] - percentile_00_5: 105392.8984375 - percentile_10_0: 149793.703125 - percentile_90_0: 273536.34375 - percentile_99_5: 377740.65625 - stdev: 50258.70703125 - ncomponents: 1 - pixel_percentage: 0.03008086234331131 - shape: - - [21, 24, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_243.nii.gz - image_foreground_stats: - intensity: - - max: 914.921630859375 - mean: 419.0277099609375 - median: 408.09454345703125 - min: 13.164340019226074 - percentile: [131.64340209960938, 309.36199951171875, 546.3201293945312, 771.5955200195312] - percentile_00_5: 131.64340209960938 - percentile_10_0: 309.36199951171875 - percentile_90_0: 546.3201293945312 - percentile_99_5: 771.5955200195312 - stdev: 103.33892822265625 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 24] - intensity: - - max: 2277.430908203125 - mean: 499.8215026855469 - median: 506.82708740234375 - min: 0.0 - percentile: [19.746509552001953, 111.89688873291016, 803.0247192382812, 921.5037841796875] - percentile_00_5: 19.746509552001953 - percentile_10_0: 111.89688873291016 - percentile_90_0: 803.0247192382812 - percentile_99_5: 921.5037841796875 - stdev: 251.4006805419922 - shape: - - [34, 53, 24] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_243.nii.gz - label_stats: - image_intensity: - - max: 914.921630859375 - mean: 419.0277099609375 - median: 408.09454345703125 - min: 13.164340019226074 - percentile: [131.64340209960938, 309.36199951171875, 546.3201293945312, 771.5955200195312] - percentile_00_5: 131.64340209960938 - percentile_10_0: 309.36199951171875 - percentile_90_0: 546.3201293945312 - percentile_99_5: 771.5955200195312 - stdev: 103.33892822265625 - label: - - image_intensity: - - max: 2277.430908203125 - mean: 505.7488708496094 - median: 533.15576171875 - min: 0.0 - percentile: [19.746509552001953, 105.3147201538086, 809.60693359375, 921.5037841796875] - percentile_00_5: 19.746509552001953 - percentile_10_0: 105.3147201538086 - percentile_90_0: 809.60693359375 - percentile_99_5: 921.5037841796875 - stdev: 257.9566345214844 - ncomponents: 1 - pixel_percentage: 0.9316500425338745 - shape: - - [34, 53, 24] - - image_intensity: - - max: 750.3673706054688 - mean: 421.5970153808594 - median: 414.67669677734375 - min: 13.164340019226074 - percentile: [125.06123352050781, 309.36199951171875, 546.3201293945312, 684.545654296875] - percentile_00_5: 125.06123352050781 - percentile_10_0: 309.36199951171875 - percentile_90_0: 546.3201293945312 - percentile_99_5: 684.545654296875 - stdev: 96.92529296875 - ncomponents: 1 - pixel_percentage: 0.0328570120036602 - shape: - - [21, 16, 10] - - image_intensity: - - max: 914.921630859375 - mean: 416.649169921875 - median: 401.5123596191406 - min: 92.15038299560547 - percentile: [153.62783813476562, 309.36199951171875, 546.3201293945312, 824.9430541992188] - percentile_00_5: 153.62783813476562 - percentile_10_0: 309.36199951171875 - percentile_90_0: 546.3201293945312 - percentile_99_5: 824.9430541992188 - stdev: 108.88616943359375 - ncomponents: 1 - pixel_percentage: 0.035492971539497375 - shape: - - [22, 28, 13] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_343.nii.gz - image_foreground_stats: - intensity: - - max: 756.9825439453125 - mean: 347.78546142578125 - median: 326.1794738769531 - min: 18.462989807128906 - percentile: [147.70391845703125, 252.3275146484375, 467.72906494140625, 689.284912109375] - percentile_00_5: 147.70391845703125 - percentile_10_0: 252.3275146484375 - percentile_90_0: 467.72906494140625 - percentile_99_5: 689.284912109375 - stdev: 94.21290588378906 - image_stats: - channels: 1 - cropped_shape: - - [32, 45, 38] - intensity: - - max: 1009.31005859375 - mean: 479.31915283203125 - median: 492.34637451171875 - min: 0.0 - percentile: [24.617319107055664, 166.16690063476562, 750.8282470703125, 855.4518432617188] - percentile_00_5: 24.617319107055664 - percentile_10_0: 166.16690063476562 - percentile_90_0: 750.8282470703125 - percentile_99_5: 855.4518432617188 - stdev: 217.9313201904297 - shape: - - [32, 45, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_343.nii.gz - label_stats: - image_intensity: - - max: 756.9825439453125 - mean: 347.78546142578125 - median: 326.1794738769531 - min: 18.462989807128906 - percentile: [147.70391845703125, 252.3275146484375, 467.72906494140625, 689.284912109375] - percentile_00_5: 147.70391845703125 - percentile_10_0: 252.3275146484375 - percentile_90_0: 467.72906494140625 - percentile_99_5: 689.284912109375 - stdev: 94.21290588378906 - label: - - image_intensity: - - max: 1009.31005859375 - mean: 485.92840576171875 - median: 510.8093566894531 - min: 0.0 - percentile: [24.617319107055664, 160.0125732421875, 750.8282470703125, 861.6061401367188] - percentile_00_5: 24.617319107055664 - percentile_10_0: 160.0125732421875 - percentile_90_0: 750.8282470703125 - percentile_99_5: 861.6061401367188 - stdev: 220.2759552001953 - ncomponents: 1 - pixel_percentage: 0.9521564245223999 - shape: - - [32, 45, 38] - - image_intensity: - - max: 689.284912109375 - mean: 347.5610046386719 - median: 332.33380126953125 - min: 18.462989807128906 - percentile: [100.50020599365234, 252.3275146484375, 461.5747375488281, 638.0196533203125] - percentile_00_5: 100.50020599365234 - percentile_10_0: 252.3275146484375 - percentile_90_0: 461.5747375488281 - percentile_99_5: 638.0196533203125 - stdev: 89.56442260742188 - ncomponents: 1 - pixel_percentage: 0.019499268382787704 - shape: - - [18, 14, 13] - - image_intensity: - - max: 756.9825439453125 - mean: 347.93988037109375 - median: 326.1794738769531 - min: 123.08659362792969 - percentile: [184.62989807128906, 258.4818420410156, 473.8833923339844, 696.9778442382812] - percentile_00_5: 184.62989807128906 - percentile_10_0: 258.4818420410156 - percentile_90_0: 473.8833923339844 - percentile_99_5: 696.9778442382812 - stdev: 97.28160858154297 - ncomponents: 1 - pixel_percentage: 0.028344297781586647 - shape: - - [20, 20, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_220.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 47.252899169921875 - median: 45.0 - min: 20.0 - percentile: [29.0, 37.0, 60.0, 80.35498046875] - percentile_00_5: 29.0 - percentile_10_0: 37.0 - percentile_90_0: 60.0 - percentile_99_5: 80.35498046875 - stdev: 9.435927391052246 - image_stats: - channels: 1 - cropped_shape: - - [39, 45, 40] - intensity: - - max: 199.0 - mean: 63.99891662597656 - median: 66.0 - min: 1.0 - percentile: [6.0, 27.0, 98.0, 110.0] - percentile_00_5: 6.0 - percentile_10_0: 27.0 - percentile_90_0: 98.0 - percentile_99_5: 110.0 - stdev: 27.288511276245117 - shape: - - [39, 45, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_220.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 47.252899169921875 - median: 45.0 - min: 20.0 - percentile: [29.0, 37.0, 60.0, 80.35498046875] - percentile_00_5: 29.0 - percentile_10_0: 37.0 - percentile_90_0: 60.0 - percentile_99_5: 80.35498046875 - stdev: 9.435927391052246 - label: - - image_intensity: - - max: 199.0 - mean: 64.72830200195312 - median: 68.0 - min: 1.0 - percentile: [6.0, 26.0, 99.0, 110.0] - percentile_00_5: 6.0 - percentile_10_0: 26.0 - percentile_90_0: 99.0 - percentile_99_5: 110.0 - stdev: 27.576671600341797 - ncomponents: 1 - pixel_percentage: 0.9582620859146118 - shape: - - [39, 45, 40] - - image_intensity: - - max: 82.0 - mean: 47.16810989379883 - median: 46.0 - min: 20.0 - percentile: [28.244998931884766, 38.0, 60.0, 73.7550048828125] - percentile_00_5: 28.244998931884766 - percentile_10_0: 38.0 - percentile_90_0: 60.0 - percentile_99_5: 73.7550048828125 - stdev: 8.68209457397461 - ncomponents: 1 - pixel_percentage: 0.026353277266025543 - shape: - - [23, 16, 17] - - image_intensity: - - max: 96.0 - mean: 47.39814758300781 - median: 45.0 - min: 20.0 - percentile: [31.0, 37.0, 62.0, 88.6298828125] - percentile_00_5: 31.0 - percentile_10_0: 37.0 - percentile_90_0: 62.0 - percentile_99_5: 88.6298828125 - stdev: 10.601834297180176 - ncomponents: 1 - pixel_percentage: 0.015384615398943424 - shape: - - [17, 19, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_097.nii.gz - image_foreground_stats: - intensity: - - max: 824.9482421875 - mean: 377.7955627441406 - median: 361.4058837890625 - min: 117.84974670410156 - percentile: [172.84629821777344, 274.9827575683594, 518.5388793945312, 703.0128784179688] - percentile_00_5: 172.84629821777344 - percentile_10_0: 274.9827575683594 - percentile_90_0: 518.5388793945312 - percentile_99_5: 703.0128784179688 - stdev: 98.58232879638672 - image_stats: - channels: 1 - cropped_shape: - - [37, 48, 34] - intensity: - - max: 2011.3023681640625 - mean: 476.25152587890625 - median: 479.2556457519531 - min: 0.0 - percentile: [23.569950103759766, 141.41969299316406, 769.95166015625, 887.8014526367188] - percentile_00_5: 23.569950103759766 - percentile_10_0: 141.41969299316406 - percentile_90_0: 769.95166015625 - percentile_99_5: 887.8014526367188 - stdev: 229.5313720703125 - shape: - - [37, 48, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_097.nii.gz - label_stats: - image_intensity: - - max: 824.9482421875 - mean: 377.7955627441406 - median: 361.4058837890625 - min: 117.84974670410156 - percentile: [172.84629821777344, 274.9827575683594, 518.5388793945312, 703.0128784179688] - percentile_00_5: 172.84629821777344 - percentile_10_0: 274.9827575683594 - percentile_90_0: 518.5388793945312 - percentile_99_5: 703.0128784179688 - stdev: 98.58232879638672 - label: - - image_intensity: - - max: 2011.3023681640625 - mean: 480.9547119140625 - median: 494.96893310546875 - min: 0.0 - percentile: [23.569950103759766, 133.56304931640625, 769.95166015625, 895.6580810546875] - percentile_00_5: 23.569950103759766 - percentile_10_0: 133.56304931640625 - percentile_90_0: 769.95166015625 - percentile_99_5: 895.6580810546875 - stdev: 232.92044067382812 - ncomponents: 1 - pixel_percentage: 0.9544084668159485 - shape: - - [37, 48, 34] - - image_intensity: - - max: 824.9482421875 - mean: 372.3146667480469 - median: 361.4058837890625 - min: 117.84974670410156 - percentile: [180.70294189453125, 274.9827575683594, 487.1123046875, 673.3538208007812] - percentile_00_5: 180.70294189453125 - percentile_10_0: 274.9827575683594 - percentile_90_0: 487.1123046875 - percentile_99_5: 673.3538208007812 - stdev: 87.86534881591797 - ncomponents: 1 - pixel_percentage: 0.022423159331083298 - shape: - - [19, 15, 14] - - image_intensity: - - max: 754.2384033203125 - mean: 383.10015869140625 - median: 353.54925537109375 - min: 117.84974670410156 - percentile: [172.76773071289062, 274.9827575683594, 549.9655151367188, 722.811767578125] - percentile_00_5: 172.76773071289062 - percentile_10_0: 274.9827575683594 - percentile_90_0: 549.9655151367188 - percentile_99_5: 722.811767578125 - stdev: 107.6807632446289 - ncomponents: 1 - pixel_percentage: 0.02316838875412941 - shape: - - [18, 22, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_320.nii.gz - image_foreground_stats: - intensity: - - max: 72.0 - mean: 41.76091384887695 - median: 41.0 - min: 15.0 - percentile: [23.0, 31.0, 54.0, 68.0] - percentile_00_5: 23.0 - percentile_10_0: 31.0 - percentile_90_0: 54.0 - percentile_99_5: 68.0 - stdev: 8.930665969848633 - image_stats: - channels: 1 - cropped_shape: - - [33, 47, 34] - intensity: - - max: 121.0 - mean: 51.29743576049805 - median: 52.0 - min: 1.0 - percentile: [5.665008544921875, 16.0, 83.0, 96.0] - percentile_00_5: 5.665008544921875 - percentile_10_0: 16.0 - percentile_90_0: 83.0 - percentile_99_5: 96.0 - stdev: 24.259214401245117 - shape: - - [33, 47, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_320.nii.gz - label_stats: - image_intensity: - - max: 72.0 - mean: 41.76091384887695 - median: 41.0 - min: 15.0 - percentile: [23.0, 31.0, 54.0, 68.0] - percentile_00_5: 23.0 - percentile_10_0: 31.0 - percentile_90_0: 54.0 - percentile_99_5: 68.0 - stdev: 8.930665969848633 - label: - - image_intensity: - - max: 121.0 - mean: 51.76228332519531 - median: 54.0 - min: 1.0 - percentile: [5.0, 15.0, 83.0, 96.0] - percentile_00_5: 5.0 - percentile_10_0: 15.0 - percentile_90_0: 83.0 - percentile_99_5: 96.0 - stdev: 24.671016693115234 - ncomponents: 1 - pixel_percentage: 0.9535214304924011 - shape: - - [33, 47, 34] - - image_intensity: - - max: 70.0 - mean: 41.20208740234375 - median: 40.0 - min: 19.0 - percentile: [23.264999389648438, 32.0, 52.0, 67.7349853515625] - percentile_00_5: 23.264999389648438 - percentile_10_0: 32.0 - percentile_90_0: 52.0 - percentile_99_5: 67.7349853515625 - stdev: 8.365009307861328 - ncomponents: 1 - pixel_percentage: 0.01998710446059704 - shape: - - [18, 13, 11] - - image_intensity: - - max: 72.0 - mean: 42.182533264160156 - median: 41.0 - min: 15.0 - percentile: [21.940000534057617, 31.0, 55.0, 68.02001953125] - percentile_00_5: 21.940000534057617 - percentile_10_0: 31.0 - percentile_90_0: 55.0 - percentile_99_5: 68.02001953125 - stdev: 9.312612533569336 - ncomponents: 1 - pixel_percentage: 0.026491448283195496 - shape: - - [16, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_197.nii.gz - image_foreground_stats: - intensity: - - max: 100.0 - mean: 48.65205764770508 - median: 47.0 - min: 18.0 - percentile: [27.0, 36.0, 63.0, 84.0] - percentile_00_5: 27.0 - percentile_10_0: 36.0 - percentile_90_0: 63.0 - percentile_99_5: 84.0 - stdev: 10.97022819519043 - image_stats: - channels: 1 - cropped_shape: - - [38, 51, 31] - intensity: - - max: 145.0 - mean: 62.399696350097656 - median: 62.0 - min: 1.0 - percentile: [6.0, 21.0, 100.0, 111.0] - percentile_00_5: 6.0 - percentile_10_0: 21.0 - percentile_90_0: 100.0 - percentile_99_5: 111.0 - stdev: 28.665061950683594 - shape: - - [38, 51, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_197.nii.gz - label_stats: - image_intensity: - - max: 100.0 - mean: 48.65205764770508 - median: 47.0 - min: 18.0 - percentile: [27.0, 36.0, 63.0, 84.0] - percentile_00_5: 27.0 - percentile_10_0: 36.0 - percentile_90_0: 63.0 - percentile_99_5: 84.0 - stdev: 10.97022819519043 - label: - - image_intensity: - - max: 145.0 - mean: 63.218482971191406 - median: 65.0 - min: 1.0 - percentile: [6.0, 20.0, 100.0, 111.0] - percentile_00_5: 6.0 - percentile_10_0: 20.0 - percentile_90_0: 100.0 - percentile_99_5: 111.0 - stdev: 29.180978775024414 - ncomponents: 1 - pixel_percentage: 0.9437897205352783 - shape: - - [38, 51, 31] - - image_intensity: - - max: 95.0 - mean: 48.67937469482422 - median: 47.0 - min: 22.0 - percentile: [27.0, 36.0, 63.0, 81.0849609375] - percentile_00_5: 27.0 - percentile_10_0: 36.0 - percentile_90_0: 63.0 - percentile_99_5: 81.0849609375 - stdev: 10.763160705566406 - ncomponents: 1 - pixel_percentage: 0.029694730415940285 - shape: - - [23, 16, 11] - - image_intensity: - - max: 100.0 - mean: 48.6214714050293 - median: 47.0 - min: 18.0 - percentile: [27.0, 36.0, 63.0, 87.0400390625] - percentile_00_5: 27.0 - percentile_10_0: 36.0 - percentile_90_0: 63.0 - percentile_99_5: 87.0400390625 - stdev: 11.197501182556152 - ncomponents: 1 - pixel_percentage: 0.026515530422329903 - shape: - - [22, 19, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_351.nii.gz - image_foreground_stats: - intensity: - - max: 83.0 - mean: 44.23603820800781 - median: 43.0 - min: 20.0 - percentile: [25.0, 33.0, 58.0, 77.0] - percentile_00_5: 25.0 - percentile_10_0: 33.0 - percentile_90_0: 58.0 - percentile_99_5: 77.0 - stdev: 9.867890357971191 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 35] - intensity: - - max: 228.0 - mean: 54.463050842285156 - median: 54.0 - min: 1.0 - percentile: [6.0, 23.0, 85.0, 95.0] - percentile_00_5: 6.0 - percentile_10_0: 23.0 - percentile_90_0: 85.0 - percentile_99_5: 95.0 - stdev: 23.402904510498047 - shape: - - [35, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_351.nii.gz - label_stats: - image_intensity: - - max: 83.0 - mean: 44.23603820800781 - median: 43.0 - min: 20.0 - percentile: [25.0, 33.0, 58.0, 77.0] - percentile_00_5: 25.0 - percentile_10_0: 33.0 - percentile_90_0: 58.0 - percentile_99_5: 77.0 - stdev: 9.867890357971191 - label: - - image_intensity: - - max: 228.0 - mean: 55.111297607421875 - median: 56.0 - min: 1.0 - percentile: [6.0, 21.0, 85.0, 95.0] - percentile_00_5: 6.0 - percentile_10_0: 21.0 - percentile_90_0: 85.0 - percentile_99_5: 95.0 - stdev: 23.857709884643555 - ncomponents: 1 - pixel_percentage: 0.9403921365737915 - shape: - - [35, 51, 35] - - image_intensity: - - max: 72.0 - mean: 43.16300964355469 - median: 43.0 - min: 20.0 - percentile: [24.0, 32.0, 54.0, 67.89501953125] - percentile_00_5: 24.0 - percentile_10_0: 32.0 - percentile_90_0: 54.0 - percentile_99_5: 67.89501953125 - stdev: 8.438666343688965 - ncomponents: 1 - pixel_percentage: 0.0291636660695076 - shape: - - [19, 16, 15] - - image_intensity: - - max: 83.0 - mean: 45.26393127441406 - median: 42.0 - min: 25.0 - percentile: [27.0, 34.0, 62.0, 78.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 62.0 - percentile_99_5: 78.0 - stdev: 10.967198371887207 - ncomponents: 1 - pixel_percentage: 0.030444176867604256 - shape: - - [18, 26, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_251.nii.gz - image_foreground_stats: - intensity: - - max: 110.0 - mean: 51.39105224609375 - median: 50.0 - min: 12.0 - percentile: [22.0, 36.0, 69.0, 96.130126953125] - percentile_00_5: 22.0 - percentile_10_0: 36.0 - percentile_90_0: 69.0 - percentile_99_5: 96.130126953125 - stdev: 13.44233226776123 - image_stats: - channels: 1 - cropped_shape: - - [36, 58, 28] - intensity: - - max: 188.0 - mean: 66.17532348632812 - median: 66.0 - min: 2.0 - percentile: [7.0, 26.0, 106.0, 120.0] - percentile_00_5: 7.0 - percentile_10_0: 26.0 - percentile_90_0: 106.0 - percentile_99_5: 120.0 - stdev: 29.98658561706543 - shape: - - [36, 58, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_251.nii.gz - label_stats: - image_intensity: - - max: 110.0 - mean: 51.39105224609375 - median: 50.0 - min: 12.0 - percentile: [22.0, 36.0, 69.0, 96.130126953125] - percentile_00_5: 22.0 - percentile_10_0: 36.0 - percentile_90_0: 69.0 - percentile_99_5: 96.130126953125 - stdev: 13.44233226776123 - label: - - image_intensity: - - max: 188.0 - mean: 67.13824462890625 - median: 69.0 - min: 2.0 - percentile: [7.0, 25.0, 106.0, 121.0] - percentile_00_5: 7.0 - percentile_10_0: 25.0 - percentile_90_0: 106.0 - percentile_99_5: 121.0 - stdev: 30.509489059448242 - ncomponents: 1 - pixel_percentage: 0.9388512372970581 - shape: - - [36, 58, 28] - - image_intensity: - - max: 107.0 - mean: 49.77127456665039 - median: 49.0 - min: 12.0 - percentile: [21.099998474121094, 35.0, 66.0, 84.0] - percentile_00_5: 21.099998474121094 - percentile_10_0: 35.0 - percentile_90_0: 66.0 - percentile_99_5: 84.0 - stdev: 12.365617752075195 - ncomponents: 1 - pixel_percentage: 0.037989191710948944 - shape: - - [19, 22, 14] - - image_intensity: - - max: 110.0 - mean: 54.048004150390625 - median: 52.0 - min: 21.0 - percentile: [25.0, 38.0, 74.0, 98.2349853515625] - percentile_00_5: 25.0 - percentile_10_0: 38.0 - percentile_90_0: 74.0 - percentile_99_5: 98.2349853515625 - stdev: 14.659954071044922 - ncomponents: 1 - pixel_percentage: 0.02315955050289631 - shape: - - [17, 25, 11] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_185.nii.gz - image_foreground_stats: - intensity: - - max: 346674.8125 - mean: 156078.453125 - median: 147713.609375 - min: 54262.140625 - percentile: [78378.6484375, 111538.8515625, 211019.4375, 319543.71875] - percentile_00_5: 78378.6484375 - percentile_10_0: 111538.8515625 - percentile_90_0: 211019.4375 - percentile_99_5: 319543.71875 - stdev: 42209.59765625 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 33] - intensity: - - max: 943558.375 - mean: 200821.484375 - median: 192932.0625 - min: 0.0 - percentile: [12058.25390625, 87422.34375, 316529.15625, 376820.4375] - percentile_00_5: 12058.25390625 - percentile_10_0: 87422.34375 - percentile_90_0: 316529.15625 - percentile_99_5: 376820.4375 - stdev: 89863.71875 - shape: - - [35, 49, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_185.nii.gz - label_stats: - image_intensity: - - max: 346674.8125 - mean: 156078.453125 - median: 147713.609375 - min: 54262.140625 - percentile: [78378.6484375, 111538.8515625, 211019.4375, 319543.71875] - percentile_00_5: 78378.6484375 - percentile_10_0: 111538.8515625 - percentile_90_0: 211019.4375 - percentile_99_5: 319543.71875 - stdev: 42209.59765625 - label: - - image_intensity: - - max: 943558.375 - mean: 203425.8125 - median: 198961.1875 - min: 0.0 - percentile: [12058.25390625, 81393.2109375, 319543.71875, 376820.4375] - percentile_00_5: 12058.25390625 - percentile_10_0: 81393.2109375 - percentile_90_0: 319543.71875 - percentile_99_5: 376820.4375 - stdev: 91205.9296875 - ncomponents: 1 - pixel_percentage: 0.9449951648712158 - shape: - - [35, 49, 33] - - image_intensity: - - max: 322558.28125 - mean: 151587.84375 - median: 147713.609375 - min: 54262.140625 - percentile: [75364.0859375, 111538.8515625, 198961.1875, 261664.265625] - percentile_00_5: 75364.0859375 - percentile_10_0: 111538.8515625 - percentile_90_0: 198961.1875 - percentile_99_5: 261664.265625 - stdev: 35058.625 - ncomponents: 1 - pixel_percentage: 0.032529376447200775 - shape: - - [22, 17, 15] - - image_intensity: - - max: 346674.8125 - mean: 162577.875 - median: 150728.171875 - min: 75364.0859375 - percentile: [84407.78125, 114553.4140625, 232121.390625, 328587.40625] - percentile_00_5: 84407.78125 - percentile_10_0: 114553.4140625 - percentile_90_0: 232121.390625 - percentile_99_5: 328587.40625 - stdev: 50099.22265625 - ncomponents: 1 - pixel_percentage: 0.022475482895970345 - shape: - - [19, 23, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_332.nii.gz - image_foreground_stats: - intensity: - - max: 735.0159301757812 - mean: 323.45281982421875 - median: 315.0068359375 - min: 75.83497619628906 - percentile: [134.16957092285156, 227.5049285888672, 431.676025390625, 597.1719360351562] - percentile_00_5: 134.16957092285156 - percentile_10_0: 227.5049285888672 - percentile_90_0: 431.676025390625 - percentile_99_5: 597.1719360351562 - stdev: 84.13334655761719 - image_stats: - channels: 1 - cropped_shape: - - [35, 52, 33] - intensity: - - max: 1131.691162109375 - mean: 398.6791687011719 - median: 408.3421936035156 - min: 0.0 - percentile: [17.50037956237793, 122.50265502929688, 630.013671875, 705.8486328125] - percentile_00_5: 17.50037956237793 - percentile_10_0: 122.50265502929688 - percentile_90_0: 630.013671875 - percentile_99_5: 705.8486328125 - stdev: 185.0409698486328 - shape: - - [35, 52, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_332.nii.gz - label_stats: - image_intensity: - - max: 735.0159301757812 - mean: 323.45281982421875 - median: 315.0068359375 - min: 75.83497619628906 - percentile: [134.16957092285156, 227.5049285888672, 431.676025390625, 597.1719360351562] - percentile_00_5: 134.16957092285156 - percentile_10_0: 227.5049285888672 - percentile_90_0: 431.676025390625 - percentile_99_5: 597.1719360351562 - stdev: 84.13334655761719 - label: - - image_intensity: - - max: 1131.691162109375 - mean: 403.0907287597656 - median: 420.00909423828125 - min: 0.0 - percentile: [17.50037956237793, 110.83573913574219, 630.013671875, 705.8486328125] - percentile_00_5: 17.50037956237793 - percentile_10_0: 110.83573913574219 - percentile_90_0: 630.013671875 - percentile_99_5: 705.8486328125 - stdev: 188.36582946777344 - ncomponents: 1 - pixel_percentage: 0.9446054100990295 - shape: - - [35, 52, 33] - - image_intensity: - - max: 735.0159301757812 - mean: 325.86492919921875 - median: 315.0068359375 - min: 75.83497619628906 - percentile: [134.16957092285156, 239.17185974121094, 425.8425598144531, 612.3965454101562] - percentile_00_5: 134.16957092285156 - percentile_10_0: 239.17185974121094 - percentile_90_0: 425.8425598144531 - percentile_99_5: 612.3965454101562 - stdev: 79.28632354736328 - ncomponents: 1 - pixel_percentage: 0.030019979923963547 - shape: - - [24, 17, 13] - - image_intensity: - - max: 647.5140380859375 - mean: 320.5991516113281 - median: 303.33990478515625 - min: 81.66844177246094 - percentile: [134.16957092285156, 221.67147827148438, 443.34295654296875, 589.179443359375] - percentile_00_5: 134.16957092285156 - percentile_10_0: 221.67147827148438 - percentile_90_0: 443.34295654296875 - percentile_99_5: 589.179443359375 - stdev: 89.44551849365234 - ncomponents: 1 - pixel_percentage: 0.025374624878168106 - shape: - - [22, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_232.nii.gz - image_foreground_stats: - intensity: - - max: 771.6840209960938 - mean: 343.7138671875 - median: 330.72174072265625 - min: 38.90843963623047 - percentile: [138.18980407714844, 239.9353790283203, 466.9012756347656, 627.0091552734375] - percentile_00_5: 138.18980407714844 - percentile_10_0: 239.9353790283203 - percentile_90_0: 466.9012756347656 - percentile_99_5: 627.0091552734375 - stdev: 92.4798355102539 - image_stats: - channels: 1 - cropped_shape: - - [36, 44, 43] - intensity: - - max: 1368.2801513671875 - mean: 459.8207092285156 - median: 486.35546875 - min: 0.0 - percentile: [19.454219818115234, 129.69479370117188, 726.2908325195312, 810.5924682617188] - percentile_00_5: 19.454219818115234 - percentile_10_0: 129.69479370117188 - percentile_90_0: 726.2908325195312 - percentile_99_5: 810.5924682617188 - stdev: 220.6343231201172 - shape: - - [36, 44, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_232.nii.gz - label_stats: - image_intensity: - - max: 771.6840209960938 - mean: 343.7138671875 - median: 330.72174072265625 - min: 38.90843963623047 - percentile: [138.18980407714844, 239.9353790283203, 466.9012756347656, 627.0091552734375] - percentile_00_5: 138.18980407714844 - percentile_10_0: 239.9353790283203 - percentile_90_0: 466.9012756347656 - percentile_99_5: 627.0091552734375 - stdev: 92.4798355102539 - label: - - image_intensity: - - max: 1368.2801513671875 - mean: 464.915283203125 - median: 505.8096923828125 - min: 0.0 - percentile: [19.454219818115234, 123.21005249023438, 726.2908325195312, 810.5924682617188] - percentile_00_5: 19.454219818115234 - percentile_10_0: 123.21005249023438 - percentile_90_0: 726.2908325195312 - percentile_99_5: 810.5924682617188 - stdev: 223.21006774902344 - ncomponents: 1 - pixel_percentage: 0.9579662680625916 - shape: - - [36, 44, 43] - - image_intensity: - - max: 771.6840209960938 - mean: 349.5762939453125 - median: 337.20648193359375 - min: 64.84739685058594 - percentile: [139.84341430664062, 246.42010498046875, 473.3860168457031, 622.5350341796875] - percentile_00_5: 139.84341430664062 - percentile_10_0: 246.42010498046875 - percentile_90_0: 473.3860168457031 - percentile_99_5: 622.5350341796875 - stdev: 88.98282623291016 - ncomponents: 1 - pixel_percentage: 0.022228095680475235 - shape: - - [21, 14, 17] - - image_intensity: - - max: 719.8060913085938 - mean: 337.1343688964844 - median: 324.23699951171875 - min: 38.90843963623047 - percentile: [140.97824096679688, 233.4506378173828, 466.9012756347656, 629.019775390625] - percentile_00_5: 140.97824096679688 - percentile_10_0: 233.4506378173828 - percentile_90_0: 466.9012756347656 - percentile_99_5: 629.019775390625 - stdev: 95.82720947265625 - ncomponents: 1 - pixel_percentage: 0.01980561390519142 - shape: - - [19, 19, 26] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_298.nii.gz - image_foreground_stats: - intensity: - - max: 777.1678466796875 - mean: 333.4384765625 - median: 318.9867858886719 - min: 75.39688110351562 - percentile: [127.59471893310547, 220.390869140625, 469.7805480957031, 653.748779296875] - percentile_00_5: 127.59471893310547 - percentile_10_0: 220.390869140625 - percentile_90_0: 469.7805480957031 - percentile_99_5: 653.748779296875 - stdev: 98.78781127929688 - image_stats: - channels: 1 - cropped_shape: - - [37, 50, 33] - intensity: - - max: 2679.489013671875 - mean: 408.6648254394531 - median: 417.58270263671875 - min: 0.0 - percentile: [17.399280548095703, 121.79496002197266, 655.3728637695312, 788.767333984375] - percentile_00_5: 17.399280548095703 - percentile_10_0: 121.79496002197266 - percentile_90_0: 655.3728637695312 - percentile_99_5: 788.767333984375 - stdev: 204.18528747558594 - shape: - - [37, 50, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_298.nii.gz - label_stats: - image_intensity: - - max: 777.1678466796875 - mean: 333.4384765625 - median: 318.9867858886719 - min: 75.39688110351562 - percentile: [127.59471893310547, 220.390869140625, 469.7805480957031, 653.748779296875] - percentile_00_5: 127.59471893310547 - percentile_10_0: 220.390869140625 - percentile_90_0: 469.7805480957031 - percentile_99_5: 653.748779296875 - stdev: 98.78781127929688 - label: - - image_intensity: - - max: 2679.489013671875 - mean: 412.35809326171875 - median: 429.1822204589844 - min: 0.0 - percentile: [17.399280548095703, 115.99519348144531, 655.3728637695312, 794.5670776367188] - percentile_00_5: 17.399280548095703 - percentile_10_0: 115.99519348144531 - percentile_90_0: 655.3728637695312 - percentile_99_5: 794.5670776367188 - stdev: 207.28700256347656 - ncomponents: 1 - pixel_percentage: 0.9532023072242737 - shape: - - [37, 50, 33] - - image_intensity: - - max: 777.1678466796875 - mean: 334.13775634765625 - median: 318.9867858886719 - min: 92.79615783691406 - percentile: [127.50772094726562, 220.390869140625, 469.7805480957031, 661.172607421875] - percentile_00_5: 127.50772094726562 - percentile_10_0: 220.390869140625 - percentile_90_0: 469.7805480957031 - percentile_99_5: 661.172607421875 - stdev: 98.68000793457031 - ncomponents: 1 - pixel_percentage: 0.029451269656419754 - shape: - - [24, 18, 14] - - image_intensity: - - max: 690.1714477539062 - mean: 332.251220703125 - median: 318.9867858886719 - min: 75.39688110351562 - percentile: [129.27664184570312, 226.1906280517578, 469.7805480957031, 643.7733154296875] - percentile_00_5: 129.27664184570312 - percentile_10_0: 226.1906280517578 - percentile_90_0: 469.7805480957031 - percentile_99_5: 643.7733154296875 - stdev: 98.95924377441406 - ncomponents: 1 - pixel_percentage: 0.017346438020467758 - shape: - - [21, 23, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_152.nii.gz - image_foreground_stats: - intensity: - - max: 92.0 - mean: 45.35102844238281 - median: 43.0 - min: 5.0 - percentile: [21.0, 32.0, 62.0, 81.0] - percentile_00_5: 21.0 - percentile_10_0: 32.0 - percentile_90_0: 62.0 - percentile_99_5: 81.0 - stdev: 11.96658992767334 - image_stats: - channels: 1 - cropped_shape: - - [36, 53, 37] - intensity: - - max: 255.0 - mean: 65.83080291748047 - median: 66.0 - min: 1.0 - percentile: [8.0, 29.0, 103.0, 117.0] - percentile_00_5: 8.0 - percentile_10_0: 29.0 - percentile_90_0: 103.0 - percentile_99_5: 117.0 - stdev: 29.092395782470703 - shape: - - [36, 53, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_152.nii.gz - label_stats: - image_intensity: - - max: 92.0 - mean: 45.35102844238281 - median: 43.0 - min: 5.0 - percentile: [21.0, 32.0, 62.0, 81.0] - percentile_00_5: 21.0 - percentile_10_0: 32.0 - percentile_90_0: 62.0 - percentile_99_5: 81.0 - stdev: 11.96658992767334 - label: - - image_intensity: - - max: 255.0 - mean: 67.05892944335938 - median: 69.0 - min: 1.0 - percentile: [7.0, 28.0, 103.0, 118.0] - percentile_00_5: 7.0 - percentile_10_0: 28.0 - percentile_90_0: 103.0 - percentile_99_5: 118.0 - stdev: 29.357707977294922 - ncomponents: 1 - pixel_percentage: 0.9434245824813843 - shape: - - [36, 53, 37] - - image_intensity: - - max: 92.0 - mean: 44.925506591796875 - median: 43.0 - min: 5.0 - percentile: [21.0, 32.0, 61.0, 80.0] - percentile_00_5: 21.0 - percentile_10_0: 32.0 - percentile_90_0: 61.0 - percentile_99_5: 80.0 - stdev: 11.415231704711914 - ncomponents: 1 - pixel_percentage: 0.03004419431090355 - shape: - - [22, 18, 16] - - image_intensity: - - max: 91.0 - mean: 45.832889556884766 - median: 44.0 - min: 9.0 - percentile: [21.360000610351562, 32.0, 64.0, 82.0] - percentile_00_5: 21.360000610351562 - percentile_10_0: 32.0 - percentile_90_0: 64.0 - percentile_99_5: 82.0 - stdev: 12.544351577758789 - ncomponents: 1 - pixel_percentage: 0.026531247422099113 - shape: - - [17, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_052.nii.gz - image_foreground_stats: - intensity: - - max: 950.1234741210938 - mean: 413.4596862792969 - median: 392.6130065917969 - min: 15.704520225524902 - percentile: [179.03152465820312, 274.8291015625, 581.0672607421875, 800.9305419921875] - percentile_00_5: 179.03152465820312 - percentile_10_0: 274.8291015625 - percentile_90_0: 581.0672607421875 - percentile_99_5: 800.9305419921875 - stdev: 123.13238525390625 - image_stats: - channels: 1 - cropped_shape: - - [34, 52, 40] - intensity: - - max: 3305.801513671875 - mean: 540.4805297851562 - median: 565.3627319335938 - min: 0.0 - percentile: [23.556779861450195, 180.60198974609375, 848.0440673828125, 973.6802368164062] - percentile_00_5: 23.556779861450195 - percentile_10_0: 180.60198974609375 - percentile_90_0: 848.0440673828125 - percentile_99_5: 973.6802368164062 - stdev: 251.4863739013672 - shape: - - [34, 52, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_052.nii.gz - label_stats: - image_intensity: - - max: 950.1234741210938 - mean: 413.4596862792969 - median: 392.6130065917969 - min: 15.704520225524902 - percentile: [179.03152465820312, 274.8291015625, 581.0672607421875, 800.9305419921875] - percentile_00_5: 179.03152465820312 - percentile_10_0: 274.8291015625 - percentile_90_0: 581.0672607421875 - percentile_99_5: 800.9305419921875 - stdev: 123.13238525390625 - label: - - image_intensity: - - max: 3305.801513671875 - mean: 546.8184204101562 - median: 581.0672607421875 - min: 0.0 - percentile: [23.556779861450195, 172.74972534179688, 855.8963623046875, 981.5325317382812] - percentile_00_5: 23.556779861450195 - percentile_10_0: 172.74972534179688 - percentile_90_0: 855.8963623046875 - percentile_99_5: 981.5325317382812 - stdev: 254.5572509765625 - ncomponents: 1 - pixel_percentage: 0.9524745345115662 - shape: - - [34, 52, 40] - - image_intensity: - - max: 816.6350708007812 - mean: 424.75750732421875 - median: 408.3175354003906 - min: 15.704520225524902 - percentile: [174.5557403564453, 290.53363037109375, 581.0672607421875, 759.8634033203125] - percentile_00_5: 174.5557403564453 - percentile_10_0: 290.53363037109375 - percentile_90_0: 581.0672607421875 - percentile_99_5: 759.8634033203125 - stdev: 116.4361343383789 - ncomponents: 1 - pixel_percentage: 0.026117080822587013 - shape: - - [22, 18, 16] - - image_intensity: - - max: 950.1234741210938 - mean: 399.67694091796875 - median: 376.9084777832031 - min: 94.22711944580078 - percentile: [180.60198974609375, 259.12457275390625, 581.0672607421875, 812.198974609375] - percentile_00_5: 180.60198974609375 - percentile_10_0: 259.12457275390625 - percentile_90_0: 581.0672607421875 - percentile_99_5: 812.198974609375 - stdev: 129.5104522705078 - ncomponents: 1 - pixel_percentage: 0.02140837162733078 - shape: - - [18, 23, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_386.nii.gz - image_foreground_stats: - intensity: - - max: 909.3862915039062 - mean: 430.47882080078125 - median: 409.5709228515625 - min: 104.12820434570312 - percentile: [194.37265014648438, 305.4427185058594, 590.059814453125, 826.083740234375] - percentile_00_5: 194.37265014648438 - percentile_10_0: 305.4427185058594 - percentile_90_0: 590.059814453125 - percentile_99_5: 826.083740234375 - stdev: 114.90670776367188 - image_stats: - channels: 1 - cropped_shape: - - [37, 45, 40] - intensity: - - max: 2957.240966796875 - mean: 586.9544677734375 - median: 610.8854370117188 - min: 0.0 - percentile: [27.767520904541016, 180.4888916015625, 923.2700805664062, 1062.107666015625] - percentile_00_5: 27.767520904541016 - percentile_10_0: 180.4888916015625 - percentile_90_0: 923.2700805664062 - percentile_99_5: 1062.107666015625 - stdev: 274.523193359375 - shape: - - [37, 45, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_386.nii.gz - label_stats: - image_intensity: - - max: 909.3862915039062 - mean: 430.47882080078125 - median: 409.5709228515625 - min: 104.12820434570312 - percentile: [194.37265014648438, 305.4427185058594, 590.059814453125, 826.083740234375] - percentile_00_5: 194.37265014648438 - percentile_10_0: 305.4427185058594 - percentile_90_0: 590.059814453125 - percentile_99_5: 826.083740234375 - stdev: 114.90670776367188 - label: - - image_intensity: - - max: 2957.240966796875 - mean: 594.8729858398438 - median: 638.6529541015625 - min: 0.0 - percentile: [27.767520904541016, 173.54701232910156, 930.2119750976562, 1062.107666015625] - percentile_00_5: 27.767520904541016 - percentile_10_0: 173.54701232910156 - percentile_90_0: 930.2119750976562 - percentile_99_5: 1062.107666015625 - stdev: 277.8612060546875 - ncomponents: 1 - pixel_percentage: 0.9518318176269531 - shape: - - [37, 45, 40] - - image_intensity: - - max: 888.5606689453125 - mean: 436.0273132324219 - median: 416.5128173828125 - min: 104.12820434570312 - percentile: [192.91485595703125, 319.32647705078125, 583.117919921875, 756.6649169921875] - percentile_00_5: 192.91485595703125 - percentile_10_0: 319.32647705078125 - percentile_90_0: 583.117919921875 - percentile_99_5: 756.6649169921875 - stdev: 103.90769958496094 - ncomponents: 1 - pixel_percentage: 0.02941441349685192 - shape: - - [22, 16, 18] - - image_intensity: - - max: 909.3862915039062 - mean: 421.7761535644531 - median: 388.74530029296875 - min: 180.4888916015625 - percentile: [194.37265014648438, 284.6170959472656, 610.8854370117188, 853.8512573242188] - percentile_00_5: 194.37265014648438 - percentile_10_0: 284.6170959472656 - percentile_90_0: 610.8854370117188 - percentile_99_5: 853.8512573242188 - stdev: 129.82447814941406 - ncomponents: 1 - pixel_percentage: 0.01875375397503376 - shape: - - [17, 18, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_286.nii.gz - image_foreground_stats: - intensity: - - max: 76.0 - mean: 38.50819778442383 - median: 37.0 - min: 11.0 - percentile: [19.0, 28.0, 51.0, 67.0] - percentile_00_5: 19.0 - percentile_10_0: 28.0 - percentile_90_0: 51.0 - percentile_99_5: 67.0 - stdev: 9.296651840209961 - image_stats: - channels: 1 - cropped_shape: - - [37, 45, 46] - intensity: - - max: 163.0 - mean: 53.14793014526367 - median: 55.0 - min: 1.0 - percentile: [6.0, 19.0, 83.0, 93.0] - percentile_00_5: 6.0 - percentile_10_0: 19.0 - percentile_90_0: 83.0 - percentile_99_5: 93.0 - stdev: 23.763294219970703 - shape: - - [37, 45, 46] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_286.nii.gz - label_stats: - image_intensity: - - max: 76.0 - mean: 38.50819778442383 - median: 37.0 - min: 11.0 - percentile: [19.0, 28.0, 51.0, 67.0] - percentile_00_5: 19.0 - percentile_10_0: 28.0 - percentile_90_0: 51.0 - percentile_99_5: 67.0 - stdev: 9.296651840209961 - label: - - image_intensity: - - max: 163.0 - mean: 53.78043746948242 - median: 57.0 - min: 1.0 - percentile: [6.0, 19.0, 83.0, 93.0] - percentile_00_5: 6.0 - percentile_10_0: 19.0 - percentile_90_0: 83.0 - percentile_99_5: 93.0 - stdev: 23.993701934814453 - ncomponents: 1 - pixel_percentage: 0.9585846662521362 - shape: - - [37, 45, 46] - - image_intensity: - - max: 76.0 - mean: 40.06209945678711 - median: 39.0 - min: 11.0 - percentile: [19.80500030517578, 31.0, 51.0, 67.0] - percentile_00_5: 19.80500030517578 - percentile_10_0: 31.0 - percentile_90_0: 51.0 - percentile_99_5: 67.0 - stdev: 8.490899085998535 - ncomponents: 1 - pixel_percentage: 0.020394306629896164 - shape: - - [20, 14, 16] - - image_intensity: - - max: 74.0 - mean: 37.0006217956543 - median: 35.0 - min: 15.0 - percentile: [19.0, 27.0, 51.0, 67.9549560546875] - percentile_00_5: 19.0 - percentile_10_0: 27.0 - percentile_90_0: 51.0 - percentile_99_5: 67.9549560546875 - stdev: 9.783526420593262 - ncomponents: 1 - pixel_percentage: 0.021021021530032158 - shape: - - [17, 20, 26] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_040.nii.gz - image_foreground_stats: - intensity: - - max: 986.6376342773438 - mean: 430.5716247558594 - median: 419.32098388671875 - min: 90.44178009033203 - percentile: [189.1055450439453, 295.99127197265625, 583.7605590820312, 871.5299072265625] - percentile_00_5: 189.1055450439453 - percentile_10_0: 295.99127197265625 - percentile_90_0: 583.7605590820312 - percentile_99_5: 871.5299072265625 - stdev: 120.52799224853516 - image_stats: - channels: 1 - cropped_shape: - - [36, 52, 37] - intensity: - - max: 3329.90185546875 - mean: 607.1381225585938 - median: 608.426513671875 - min: 0.0 - percentile: [49.331878662109375, 254.88137817382812, 945.5277099609375, 1192.1871337890625] - percentile_00_5: 49.331878662109375 - percentile_10_0: 254.88137817382812 - percentile_90_0: 945.5277099609375 - percentile_99_5: 1192.1871337890625 - stdev: 275.4247741699219 - shape: - - [36, 52, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_040.nii.gz - label_stats: - image_intensity: - - max: 986.6376342773438 - mean: 430.5716247558594 - median: 419.32098388671875 - min: 90.44178009033203 - percentile: [189.1055450439453, 295.99127197265625, 583.7605590820312, 871.5299072265625] - percentile_00_5: 189.1055450439453 - percentile_10_0: 295.99127197265625 - percentile_90_0: 583.7605590820312 - percentile_99_5: 871.5299072265625 - stdev: 120.52799224853516 - label: - - image_intensity: - - max: 3329.90185546875 - mean: 616.379638671875 - median: 633.0924682617188 - min: 0.0 - percentile: [49.331878662109375, 254.88137817382812, 945.5277099609375, 1208.631103515625] - percentile_00_5: 49.331878662109375 - percentile_10_0: 254.88137817382812 - percentile_90_0: 945.5277099609375 - percentile_99_5: 1208.631103515625 - stdev: 278.1219177246094 - ncomponents: 1 - pixel_percentage: 0.9502627849578857 - shape: - - [36, 52, 37] - - image_intensity: - - max: 781.088134765625 - mean: 429.6911926269531 - median: 419.32098388671875 - min: 123.32970428466797 - percentile: [189.1055450439453, 304.2132568359375, 575.5386352539062, 723.5342407226562] - percentile_00_5: 189.1055450439453 - percentile_10_0: 304.2132568359375 - percentile_90_0: 575.5386352539062 - percentile_99_5: 723.5342407226562 - stdev: 103.72377014160156 - ncomponents: 1 - pixel_percentage: 0.027517901733517647 - shape: - - [23, 19, 15] - - image_intensity: - - max: 986.6376342773438 - mean: 431.6619567871094 - median: 411.0989990234375 - min: 90.44178009033203 - percentile: [180.88356018066406, 279.5473327636719, 610.0704956054688, 906.9671020507812] - percentile_00_5: 180.88356018066406 - percentile_10_0: 279.5473327636719 - percentile_90_0: 610.0704956054688 - percentile_99_5: 906.9671020507812 - stdev: 138.53466796875 - ncomponents: 1 - pixel_percentage: 0.022219333797693253 - shape: - - [19, 24, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_294.nii.gz - image_foreground_stats: - intensity: - - max: 1034.036865234375 - mean: 338.003662109375 - median: 323.13653564453125 - min: 47.001678466796875 - percentile: [146.8802490234375, 235.00839233398438, 458.266357421875, 650.7684326171875] - percentile_00_5: 146.8802490234375 - percentile_10_0: 235.00839233398438 - percentile_90_0: 458.266357421875 - percentile_99_5: 650.7684326171875 - stdev: 91.43244171142578 - image_stats: - channels: 1 - cropped_shape: - - [35, 44, 44] - intensity: - - max: 2044.572998046875 - mean: 463.3653259277344 - median: 481.7672119140625 - min: 0.0 - percentile: [23.500839233398438, 170.38108825683594, 728.5260009765625, 846.0302124023438] - percentile_00_5: 23.500839233398438 - percentile_10_0: 170.38108825683594 - percentile_90_0: 728.5260009765625 - percentile_99_5: 846.0302124023438 - stdev: 212.98977661132812 - shape: - - [35, 44, 44] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_294.nii.gz - label_stats: - image_intensity: - - max: 1034.036865234375 - mean: 338.003662109375 - median: 323.13653564453125 - min: 47.001678466796875 - percentile: [146.8802490234375, 235.00839233398438, 458.266357421875, 650.7684326171875] - percentile_00_5: 146.8802490234375 - percentile_10_0: 235.00839233398438 - percentile_90_0: 458.266357421875 - percentile_99_5: 650.7684326171875 - stdev: 91.43244171142578 - label: - - image_intensity: - - max: 2044.572998046875 - mean: 469.6769104003906 - median: 499.392822265625 - min: 0.0 - percentile: [23.500839233398438, 164.50587463378906, 728.5260009765625, 846.0302124023438] - percentile_00_5: 23.500839233398438 - percentile_10_0: 164.50587463378906 - percentile_90_0: 728.5260009765625 - percentile_99_5: 846.0302124023438 - stdev: 215.39883422851562 - ncomponents: 1 - pixel_percentage: 0.9520661234855652 - shape: - - [35, 44, 44] - - image_intensity: - - max: 1034.036865234375 - mean: 345.9845886230469 - median: 340.7621765136719 - min: 47.001678466796875 - percentile: [129.25460815429688, 246.75881958007812, 458.266357421875, 622.772216796875] - percentile_00_5: 129.25460815429688 - percentile_10_0: 246.75881958007812 - percentile_90_0: 458.266357421875 - percentile_99_5: 622.772216796875 - stdev: 86.27320861816406 - ncomponents: 1 - pixel_percentage: 0.025767413899302483 - shape: - - [22, 15, 18] - - image_intensity: - - max: 781.4028930664062 - mean: 328.7261962890625 - median: 311.3861083984375 - min: 135.12982177734375 - percentile: [155.72244262695312, 223.25796508789062, 452.3911437988281, 666.806884765625] - percentile_00_5: 155.72244262695312 - percentile_10_0: 223.25796508789062 - percentile_90_0: 452.3911437988281 - percentile_99_5: 666.806884765625 - stdev: 96.25769805908203 - ncomponents: 1 - pixel_percentage: 0.02216647006571293 - shape: - - [21, 17, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_023.nii.gz - image_foreground_stats: - intensity: - - max: 1152.9541015625 - mean: 552.4085083007812 - median: 530.7249145507812 - min: 118.9555892944336 - percentile: [247.0615997314453, 393.4684753417969, 734.7777099609375, 1008.0574340820312] - percentile_00_5: 247.0615997314453 - percentile_10_0: 393.4684753417969 - percentile_90_0: 734.7777099609375 - percentile_99_5: 1008.0574340820312 - stdev: 141.21958923339844 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 35] - intensity: - - max: 2772.580322265625 - mean: 737.96044921875 - median: 732.0343627929688 - min: 0.0 - percentile: [54.90258026123047, 356.86676025390625, 1134.6533203125, 1271.9097900390625] - percentile_00_5: 54.90258026123047 - percentile_10_0: 356.86676025390625 - percentile_90_0: 1134.6533203125 - percentile_99_5: 1271.9097900390625 - stdev: 303.10107421875 - shape: - - [35, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_023.nii.gz - label_stats: - image_intensity: - - max: 1152.9541015625 - mean: 552.4085083007812 - median: 530.7249145507812 - min: 118.9555892944336 - percentile: [247.0615997314453, 393.4684753417969, 734.7777099609375, 1008.0574340820312] - percentile_00_5: 247.0615997314453 - percentile_10_0: 393.4684753417969 - percentile_90_0: 734.7777099609375 - percentile_99_5: 1008.0574340820312 - stdev: 141.21958923339844 - label: - - image_intensity: - - max: 2772.580322265625 - mean: 749.1994018554688 - median: 759.4856567382812 - min: 0.0 - percentile: [45.75214767456055, 347.7163391113281, 1143.8037109375, 1271.9097900390625] - percentile_00_5: 45.75214767456055 - percentile_10_0: 347.7163391113281 - percentile_90_0: 1143.8037109375 - percentile_99_5: 1271.9097900390625 - stdev: 306.61895751953125 - ncomponents: 1 - pixel_percentage: 0.9428891539573669 - shape: - - [35, 51, 35] - - image_intensity: - - max: 1152.9541015625 - mean: 551.5122680664062 - median: 539.8753662109375 - min: 118.9555892944336 - percentile: [269.66314697265625, 393.4684753417969, 722.8839721679688, 990.67138671875] - percentile_00_5: 269.66314697265625 - percentile_10_0: 393.4684753417969 - percentile_90_0: 722.8839721679688 - percentile_99_5: 990.67138671875 - stdev: 134.81661987304688 - ncomponents: 1 - pixel_percentage: 0.02797919139266014 - shape: - - [23, 17, 14] - - image_intensity: - - max: 1134.6533203125 - mean: 553.2691650390625 - median: 530.7249145507812 - min: 164.70773315429688 - percentile: [247.0615997314453, 393.4684753417969, 759.4856567382812, 1015.6976928710938] - percentile_00_5: 247.0615997314453 - percentile_10_0: 393.4684753417969 - percentile_90_0: 759.4856567382812 - percentile_99_5: 1015.6976928710938 - stdev: 147.1019744873047 - ncomponents: 1 - pixel_percentage: 0.029131652787327766 - shape: - - [21, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_394.nii.gz - image_foreground_stats: - intensity: - - max: 988.16162109375 - mean: 414.5062561035156 - median: 395.2646484375 - min: 16.4693603515625 - percentile: [156.45892333984375, 271.74444580078125, 576.4276123046875, 847.6372680664062] - percentile_00_5: 156.45892333984375 - percentile_10_0: 271.74444580078125 - percentile_90_0: 576.4276123046875 - percentile_99_5: 847.6372680664062 - stdev: 125.80195617675781 - image_stats: - channels: 1 - cropped_shape: - - [36, 52, 32] - intensity: - - max: 1836.333740234375 - mean: 564.4026489257812 - median: 559.958251953125 - min: 0.0 - percentile: [32.938720703125, 205.86700439453125, 914.0494995117188, 1045.804443359375] - percentile_00_5: 32.938720703125 - percentile_10_0: 205.86700439453125 - percentile_90_0: 914.0494995117188 - percentile_99_5: 1045.804443359375 - stdev: 270.1158447265625 - shape: - - [36, 52, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_394.nii.gz - label_stats: - image_intensity: - - max: 988.16162109375 - mean: 414.5062561035156 - median: 395.2646484375 - min: 16.4693603515625 - percentile: [156.45892333984375, 271.74444580078125, 576.4276123046875, 847.6372680664062] - percentile_00_5: 156.45892333984375 - percentile_10_0: 271.74444580078125 - percentile_90_0: 576.4276123046875 - percentile_99_5: 847.6372680664062 - stdev: 125.80195617675781 - label: - - image_intensity: - - max: 1836.333740234375 - mean: 574.5952758789062 - median: 584.6622924804688 - min: 0.0 - percentile: [32.938720703125, 197.63232421875, 922.2841796875, 1045.804443359375] - percentile_00_5: 32.938720703125 - percentile_10_0: 197.63232421875 - percentile_90_0: 922.2841796875 - percentile_99_5: 1045.804443359375 - stdev: 274.2553405761719 - ncomponents: 1 - pixel_percentage: 0.9363314509391785 - shape: - - [36, 52, 32] - - image_intensity: - - max: 889.345458984375 - mean: 415.80364990234375 - median: 403.49932861328125 - min: 16.4693603515625 - percentile: [172.92828369140625, 279.9791259765625, 568.1929321289062, 749.3558959960938] - percentile_00_5: 172.92828369140625 - percentile_10_0: 279.9791259765625 - percentile_90_0: 568.1929321289062 - percentile_99_5: 749.3558959960938 - stdev: 113.1595458984375 - ncomponents: 1 - pixel_percentage: 0.033169738948345184 - shape: - - [24, 17, 14] - - image_intensity: - - max: 988.16162109375 - mean: 413.0951843261719 - median: 387.02996826171875 - min: 49.4080810546875 - percentile: [141.06007385253906, 263.509765625, 601.1316528320312, 872.8760986328125] - percentile_00_5: 141.06007385253906 - percentile_10_0: 263.509765625 - percentile_90_0: 601.1316528320312 - percentile_99_5: 872.8760986328125 - stdev: 138.23146057128906 - ncomponents: 1 - pixel_percentage: 0.030498798936605453 - shape: - - [24, 25, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_123.nii.gz - image_foreground_stats: - intensity: - - max: 108.0 - mean: 55.92598342895508 - median: 54.0 - min: 22.0 - percentile: [30.0, 41.0, 76.0, 98.0] - percentile_00_5: 30.0 - percentile_10_0: 41.0 - percentile_90_0: 76.0 - percentile_99_5: 98.0 - stdev: 13.69267749786377 - image_stats: - channels: 1 - cropped_shape: - - [32, 53, 38] - intensity: - - max: 234.0 - mean: 71.28019714355469 - median: 70.0 - min: 4.0 - percentile: [11.0, 32.0, 111.0, 130.0] - percentile_00_5: 11.0 - percentile_10_0: 32.0 - percentile_90_0: 111.0 - percentile_99_5: 130.0 - stdev: 30.06114959716797 - shape: - - [32, 53, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_123.nii.gz - label_stats: - image_intensity: - - max: 108.0 - mean: 55.92598342895508 - median: 54.0 - min: 22.0 - percentile: [30.0, 41.0, 76.0, 98.0] - percentile_00_5: 30.0 - percentile_10_0: 41.0 - percentile_90_0: 76.0 - percentile_99_5: 98.0 - stdev: 13.69267749786377 - label: - - image_intensity: - - max: 234.0 - mean: 72.09004974365234 - median: 72.0 - min: 4.0 - percentile: [11.0, 31.0, 112.0, 130.0] - percentile_00_5: 11.0 - percentile_10_0: 31.0 - percentile_90_0: 112.0 - percentile_99_5: 130.0 - stdev: 30.468955993652344 - ncomponents: 1 - pixel_percentage: 0.9498975872993469 - shape: - - [32, 53, 38] - - image_intensity: - - max: 98.0 - mean: 54.029205322265625 - median: 53.0 - min: 25.0 - percentile: [30.0, 40.0, 70.0, 92.0] - percentile_00_5: 30.0 - percentile_10_0: 40.0 - percentile_90_0: 70.0 - percentile_99_5: 92.0 - stdev: 11.895095825195312 - ncomponents: 1 - pixel_percentage: 0.02656405232846737 - shape: - - [19, 18, 14] - - image_intensity: - - max: 108.0 - mean: 58.06657791137695 - median: 55.0 - min: 22.0 - percentile: [32.58000183105469, 42.0, 81.0, 102.0] - percentile_00_5: 32.58000183105469 - percentile_10_0: 42.0 - percentile_90_0: 81.0 - percentile_99_5: 102.0 - stdev: 15.190643310546875 - ncomponents: 1 - pixel_percentage: 0.02353835664689541 - shape: - - [16, 24, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_176.nii.gz - image_foreground_stats: - intensity: - - max: 666.8442993164062 - mean: 314.9391784667969 - median: 303.1110534667969 - min: 11.02221965789795 - percentile: [82.6666488647461, 214.93328857421875, 435.377685546875, 606.2221069335938] - percentile_00_5: 82.6666488647461 - percentile_10_0: 214.93328857421875 - percentile_90_0: 435.377685546875 - percentile_99_5: 606.2221069335938 - stdev: 89.95835876464844 - image_stats: - channels: 1 - cropped_shape: - - [35, 50, 36] - intensity: - - max: 1322.6663818359375 - mean: 386.8445129394531 - median: 391.2887878417969 - min: 0.0 - percentile: [16.533329010009766, 93.6888656616211, 639.2887573242188, 732.9776000976562] - percentile_00_5: 16.533329010009766 - percentile_10_0: 93.6888656616211 - percentile_90_0: 639.2887573242188 - percentile_99_5: 732.9776000976562 - stdev: 198.47616577148438 - shape: - - [35, 50, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_176.nii.gz - label_stats: - image_intensity: - - max: 666.8442993164062 - mean: 314.9391784667969 - median: 303.1110534667969 - min: 11.02221965789795 - percentile: [82.6666488647461, 214.93328857421875, 435.377685546875, 606.2221069335938] - percentile_00_5: 82.6666488647461 - percentile_10_0: 214.93328857421875 - percentile_90_0: 435.377685546875 - percentile_99_5: 606.2221069335938 - stdev: 89.95835876464844 - label: - - image_intensity: - - max: 1322.6663818359375 - mean: 390.3392028808594 - median: 402.3110046386719 - min: 0.0 - percentile: [16.533329010009766, 93.6888656616211, 639.2887573242188, 738.4887084960938] - percentile_00_5: 16.533329010009766 - percentile_10_0: 93.6888656616211 - percentile_90_0: 639.2887573242188 - percentile_99_5: 738.4887084960938 - stdev: 201.61978149414062 - ncomponents: 1 - pixel_percentage: 0.9536507725715637 - shape: - - [35, 50, 36] - - image_intensity: - - max: 650.3109741210938 - mean: 320.0105285644531 - median: 314.1332702636719 - min: 11.02221965789795 - percentile: [82.6666488647461, 225.95550537109375, 429.8665771484375, 578.66650390625] - percentile_00_5: 82.6666488647461 - percentile_10_0: 225.95550537109375 - percentile_90_0: 429.8665771484375 - percentile_99_5: 578.66650390625 - stdev: 84.17182159423828 - ncomponents: 1 - pixel_percentage: 0.028428571298718452 - shape: - - [22, 18, 14] - - image_intensity: - - max: 666.8442993164062 - mean: 306.8941345214844 - median: 292.08880615234375 - min: 49.5999870300293 - percentile: [86.19375610351562, 202.80885314941406, 440.8887939453125, 641.272705078125] - percentile_00_5: 86.19375610351562 - percentile_10_0: 202.80885314941406 - percentile_90_0: 440.8887939453125 - percentile_99_5: 641.272705078125 - stdev: 97.9051513671875 - ncomponents: 1 - pixel_percentage: 0.017920635640621185 - shape: - - [15, 21, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_015.nii.gz - image_foreground_stats: - intensity: - - max: 771.322265625 - mean: 336.4197998046875 - median: 325.8171691894531 - min: 46.545310974121094 - percentile: [140.23435974121094, 246.02520751953125, 438.85577392578125, 631.6863403320312] - percentile_00_5: 140.23435974121094 - percentile_10_0: 246.02520751953125 - percentile_90_0: 438.85577392578125 - percentile_99_5: 631.6863403320312 - stdev: 83.5125961303711 - image_stats: - channels: 1 - cropped_shape: - - [42, 51, 28] - intensity: - - max: 1682.280517578125 - mean: 439.5932312011719 - median: 445.505126953125 - min: 0.0 - percentile: [19.94799041748047, 126.33727264404297, 711.4783325195312, 837.8156127929688] - percentile_00_5: 19.94799041748047 - percentile_10_0: 126.33727264404297 - percentile_90_0: 711.4783325195312 - percentile_99_5: 837.8156127929688 - stdev: 215.39454650878906 - shape: - - [42, 51, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_015.nii.gz - label_stats: - image_intensity: - - max: 771.322265625 - mean: 336.4197998046875 - median: 325.8171691894531 - min: 46.545310974121094 - percentile: [140.23435974121094, 246.02520751953125, 438.85577392578125, 631.6863403320312] - percentile_00_5: 140.23435974121094 - percentile_10_0: 246.02520751953125 - percentile_90_0: 438.85577392578125 - percentile_99_5: 631.6863403320312 - stdev: 83.5125961303711 - label: - - image_intensity: - - max: 1682.280517578125 - mean: 444.6817932128906 - median: 465.453125 - min: 0.0 - percentile: [19.94799041748047, 119.68794250488281, 718.127685546875, 837.8156127929688] - percentile_00_5: 19.94799041748047 - percentile_10_0: 119.68794250488281 - percentile_90_0: 718.127685546875 - percentile_99_5: 837.8156127929688 - stdev: 218.60498046875 - ncomponents: 1 - pixel_percentage: 0.9529978632926941 - shape: - - [42, 51, 28] - - image_intensity: - - max: 691.5303344726562 - mean: 332.7789611816406 - median: 325.8171691894531 - min: 106.3892822265625 - percentile: [149.94239807128906, 239.37588500976562, 432.2064514160156, 558.543701171875] - percentile_00_5: 149.94239807128906 - percentile_10_0: 239.37588500976562 - percentile_90_0: 432.2064514160156 - percentile_99_5: 558.543701171875 - stdev: 77.00646209716797 - ncomponents: 1 - pixel_percentage: 0.025193409994244576 - shape: - - [17, 17, 13] - - image_intensity: - - max: 771.322265625 - mean: 340.62567138671875 - median: 325.8171691894531 - min: 46.545310974121094 - percentile: [126.33727264404297, 246.02520751953125, 458.80377197265625, 681.3233642578125] - percentile_00_5: 126.33727264404297 - percentile_10_0: 246.02520751953125 - percentile_90_0: 458.80377197265625 - percentile_99_5: 681.3233642578125 - stdev: 90.26513671875 - ncomponents: 1 - pixel_percentage: 0.021808722987771034 - shape: - - [26, 20, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_068.nii.gz - image_foreground_stats: - intensity: - - max: 928.3577270507812 - mean: 409.1097412109375 - median: 390.1793518066406 - min: 47.09061050415039 - percentile: [141.27183532714844, 275.8164367675781, 565.0873413085938, 813.9948120117188] - percentile_00_5: 141.27183532714844 - percentile_10_0: 275.8164367675781 - percentile_90_0: 565.0873413085938 - percentile_99_5: 813.9948120117188 - stdev: 118.60790252685547 - image_stats: - channels: 1 - cropped_shape: - - [36, 40, 43] - intensity: - - max: 2253.6220703125 - mean: 551.4539184570312 - median: 578.5418090820312 - min: 0.0 - percentile: [26.908920288085938, 154.72628784179688, 881.2671508789062, 1015.811767578125] - percentile_00_5: 26.908920288085938 - percentile_10_0: 154.72628784179688 - percentile_90_0: 881.2671508789062 - percentile_99_5: 1015.811767578125 - stdev: 267.2597961425781 - shape: - - [36, 40, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_068.nii.gz - label_stats: - image_intensity: - - max: 928.3577270507812 - mean: 409.1097412109375 - median: 390.1793518066406 - min: 47.09061050415039 - percentile: [141.27183532714844, 275.8164367675781, 565.0873413085938, 813.9948120117188] - percentile_00_5: 141.27183532714844 - percentile_10_0: 275.8164367675781 - percentile_90_0: 565.0873413085938 - percentile_99_5: 813.9948120117188 - stdev: 118.60790252685547 - label: - - image_intensity: - - max: 2253.6220703125 - mean: 558.7015991210938 - median: 598.7234497070312 - min: 0.0 - percentile: [26.908920288085938, 147.99905395507812, 881.2671508789062, 1015.811767578125] - percentile_00_5: 26.908920288085938 - percentile_10_0: 147.99905395507812 - percentile_90_0: 881.2671508789062 - percentile_99_5: 1015.811767578125 - stdev: 270.6735534667969 - ncomponents: 1 - pixel_percentage: 0.9515503644943237 - shape: - - [36, 40, 43] - - image_intensity: - - max: 854.3582153320312 - mean: 416.7738342285156 - median: 403.6337890625 - min: 53.817840576171875 - percentile: [172.48617553710938, 295.99810791015625, 551.6328735351562, 753.4497680664062] - percentile_00_5: 172.48617553710938 - percentile_10_0: 295.99810791015625 - percentile_90_0: 551.6328735351562 - percentile_99_5: 753.4497680664062 - stdev: 104.87812042236328 - ncomponents: 1 - pixel_percentage: 0.027987726032733917 - shape: - - [21, 13, 18] - - image_intensity: - - max: 928.3577270507812 - mean: 398.6268615722656 - median: 369.9976501464844 - min: 47.09061050415039 - percentile: [130.037353515625, 269.0892028808594, 581.2328491210938, 849.9188232421875] - percentile_00_5: 130.037353515625 - percentile_10_0: 269.0892028808594 - percentile_90_0: 581.2328491210938 - percentile_99_5: 849.9188232421875 - stdev: 134.44171142578125 - ncomponents: 1 - pixel_percentage: 0.02046188712120056 - shape: - - [18, 16, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_019.nii.gz - image_foreground_stats: - intensity: - - max: 1228.8173828125 - mean: 571.5551147460938 - median: 556.1071166992188 - min: 89.6947021484375 - percentile: [222.21861267089844, 412.5956115722656, 753.4354858398438, 1078.35546875] - percentile_00_5: 222.21861267089844 - percentile_10_0: 412.5956115722656 - percentile_90_0: 753.4354858398438 - percentile_99_5: 1078.35546875 - stdev: 142.1681671142578 - image_stats: - channels: 1 - cropped_shape: - - [36, 47, 41] - intensity: - - max: 3264.88720703125 - mean: 747.8118286132812 - median: 771.3744506835938 - min: 0.0 - percentile: [35.87788009643555, 269.0841064453125, 1166.0311279296875, 1327.4815673828125] - percentile_00_5: 35.87788009643555 - percentile_10_0: 269.0841064453125 - percentile_90_0: 1166.0311279296875 - percentile_99_5: 1327.4815673828125 - stdev: 333.8447570800781 - shape: - - [36, 47, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_019.nii.gz - label_stats: - image_intensity: - - max: 1228.8173828125 - mean: 571.5551147460938 - median: 556.1071166992188 - min: 89.6947021484375 - percentile: [222.21861267089844, 412.5956115722656, 753.4354858398438, 1078.35546875] - percentile_00_5: 222.21861267089844 - percentile_10_0: 412.5956115722656 - percentile_90_0: 753.4354858398438 - percentile_99_5: 1078.35546875 - stdev: 142.1681671142578 - label: - - image_intensity: - - max: 3264.88720703125 - mean: 756.77197265625 - median: 798.2828369140625 - min: 0.0 - percentile: [35.87788009643555, 260.1146240234375, 1175.0006103515625, 1327.4815673828125] - percentile_00_5: 35.87788009643555 - percentile_10_0: 260.1146240234375 - percentile_90_0: 1175.0006103515625 - percentile_99_5: 1327.4815673828125 - stdev: 338.276611328125 - ncomponents: 1 - pixel_percentage: 0.9516231417655945 - shape: - - [36, 47, 41] - - image_intensity: - - max: 1130.1531982421875 - mean: 557.7794189453125 - median: 547.1376953125 - min: 116.60311126708984 - percentile: [224.23675537109375, 394.65667724609375, 744.4660034179688, 973.7710571289062] - percentile_00_5: 224.23675537109375 - percentile_10_0: 394.65667724609375 - percentile_90_0: 744.4660034179688 - percentile_99_5: 973.7710571289062 - stdev: 135.6869354248047 - ncomponents: 1 - pixel_percentage: 0.027215590700507164 - shape: - - [23, 15, 15] - - image_intensity: - - max: 1228.8173828125 - mean: 589.2721557617188 - median: 574.0460815429688 - min: 89.6947021484375 - percentile: [215.3121337890625, 430.5345458984375, 765.0951538085938, 1127.1488037109375] - percentile_00_5: 215.3121337890625 - percentile_10_0: 430.5345458984375 - percentile_90_0: 765.0951538085938 - percentile_99_5: 1127.1488037109375 - stdev: 148.22247314453125 - ncomponents: 1 - pixel_percentage: 0.02116127498447895 - shape: - - [19, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_164.nii.gz - image_foreground_stats: - intensity: - - max: 89.0 - mean: 46.3367805480957 - median: 45.0 - min: 5.0 - percentile: [21.0, 34.0, 60.0, 77.0] - percentile_00_5: 21.0 - percentile_10_0: 34.0 - percentile_90_0: 60.0 - percentile_99_5: 77.0 - stdev: 10.357429504394531 - image_stats: - channels: 1 - cropped_shape: - - [41, 48, 47] - intensity: - - max: 187.0 - mean: 62.757232666015625 - median: 66.0 - min: 2.0 - percentile: [6.0, 23.0, 96.0, 105.0] - percentile_00_5: 6.0 - percentile_10_0: 23.0 - percentile_90_0: 96.0 - percentile_99_5: 105.0 - stdev: 27.59726905822754 - shape: - - [41, 48, 47] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_164.nii.gz - label_stats: - image_intensity: - - max: 89.0 - mean: 46.3367805480957 - median: 45.0 - min: 5.0 - percentile: [21.0, 34.0, 60.0, 77.0] - percentile_00_5: 21.0 - percentile_10_0: 34.0 - percentile_90_0: 60.0 - percentile_99_5: 77.0 - stdev: 10.357429504394531 - label: - - image_intensity: - - max: 187.0 - mean: 63.474063873291016 - median: 68.0 - min: 2.0 - percentile: [6.0, 22.0, 96.0, 105.0] - percentile_00_5: 6.0 - percentile_10_0: 22.0 - percentile_90_0: 96.0 - percentile_99_5: 105.0 - stdev: 27.890670776367188 - ncomponents: 1 - pixel_percentage: 0.9581711888313293 - shape: - - [41, 48, 47] - - image_intensity: - - max: 83.0 - mean: 47.371761322021484 - median: 46.0 - min: 5.0 - percentile: [17.494998931884766, 36.0, 61.0, 75.5050048828125] - percentile_00_5: 17.494998931884766 - percentile_10_0: 36.0 - percentile_90_0: 61.0 - percentile_99_5: 75.5050048828125 - stdev: 10.19108772277832 - ncomponents: 1 - pixel_percentage: 0.018379172310233116 - shape: - - [23, 11, 18] - - image_intensity: - - max: 89.0 - mean: 45.52558898925781 - median: 44.0 - min: 19.0 - percentile: [26.0, 34.0, 59.0, 78.159912109375] - percentile_00_5: 26.0 - percentile_10_0: 34.0 - percentile_90_0: 59.0 - percentile_99_5: 78.159912109375 - stdev: 10.414304733276367 - ncomponents: 1 - pixel_percentage: 0.023449663072824478 - shape: - - [21, 25, 31] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_064.nii.gz - image_foreground_stats: - intensity: - - max: 764.8714599609375 - mean: 340.3051452636719 - median: 320.517578125 - min: 36.42245101928711 - percentile: [125.98526000976562, 233.1036834716797, 473.4918518066406, 682.5936889648438] - percentile_00_5: 125.98526000976562 - percentile_10_0: 233.1036834716797 - percentile_90_0: 473.4918518066406 - percentile_99_5: 682.5936889648438 - stdev: 100.44424438476562 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 35] - intensity: - - max: 1216.5098876953125 - mean: 445.3707580566406 - median: 451.6383972167969 - min: 0.0 - percentile: [21.853469848632812, 145.68980407714844, 713.8800048828125, 801.2938842773438] - percentile_00_5: 21.853469848632812 - percentile_10_0: 145.68980407714844 - percentile_90_0: 713.8800048828125 - percentile_99_5: 801.2938842773438 - stdev: 211.80593872070312 - shape: - - [35, 53, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_064.nii.gz - label_stats: - image_intensity: - - max: 764.8714599609375 - mean: 340.3051452636719 - median: 320.517578125 - min: 36.42245101928711 - percentile: [125.98526000976562, 233.1036834716797, 473.4918518066406, 682.5936889648438] - percentile_00_5: 125.98526000976562 - percentile_10_0: 233.1036834716797 - percentile_90_0: 473.4918518066406 - percentile_99_5: 682.5936889648438 - stdev: 100.44424438476562 - label: - - image_intensity: - - max: 1216.5098876953125 - mean: 451.6474609375 - median: 473.4918518066406 - min: 0.0 - percentile: [21.853469848632812, 138.4053192138672, 721.16455078125, 801.2938842773438] - percentile_00_5: 21.853469848632812 - percentile_10_0: 138.4053192138672 - percentile_90_0: 721.16455078125 - percentile_99_5: 801.2938842773438 - stdev: 215.03543090820312 - ncomponents: 1 - pixel_percentage: 0.9436272382736206 - shape: - - [35, 53, 35] - - image_intensity: - - max: 764.8714599609375 - mean: 334.32745361328125 - median: 320.517578125 - min: 36.42245101928711 - percentile: [96.26454162597656, 240.38816833496094, 458.9228820800781, 648.3196411132812] - percentile_00_5: 96.26454162597656 - percentile_10_0: 240.38816833496094 - percentile_90_0: 458.9228820800781 - percentile_99_5: 648.3196411132812 - stdev: 92.85419464111328 - ncomponents: 1 - pixel_percentage: 0.031482480466365814 - shape: - - [22, 18, 15] - - image_intensity: - - max: 757.5869750976562 - mean: 347.8659362792969 - median: 320.517578125 - min: 116.55184173583984 - percentile: [160.2587890625, 233.1036834716797, 495.3453369140625, 713.3340454101562] - percentile_00_5: 160.2587890625 - percentile_10_0: 233.1036834716797 - percentile_90_0: 495.3453369140625 - percentile_99_5: 713.3340454101562 - stdev: 108.82281494140625 - ncomponents: 1 - pixel_percentage: 0.02489025890827179 - shape: - - [19, 22, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_107.nii.gz - image_foreground_stats: - intensity: - - max: 969.8787231445312 - mean: 402.8367614746094 - median: 390.9588623046875 - min: 105.2581558227539 - percentile: [195.47943115234375, 285.7007141113281, 537.5684204101562, 799.0214233398438] - percentile_00_5: 195.47943115234375 - percentile_10_0: 285.7007141113281 - percentile_90_0: 537.5684204101562 - percentile_99_5: 799.0214233398438 - stdev: 103.18428039550781 - image_stats: - channels: 1 - cropped_shape: - - [35, 55, 34] - intensity: - - max: 2533.714111328125 - mean: 529.7173461914062 - median: 503.7354736328125 - min: 0.0 - percentile: [37.59219741821289, 218.03475952148438, 872.1390380859375, 1022.5078125] - percentile_00_5: 37.59219741821289 - percentile_10_0: 218.03475952148438 - percentile_90_0: 872.1390380859375 - percentile_99_5: 1022.5078125 - stdev: 245.522216796875 - shape: - - [35, 55, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_107.nii.gz - label_stats: - image_intensity: - - max: 969.8787231445312 - mean: 402.8367614746094 - median: 390.9588623046875 - min: 105.2581558227539 - percentile: [195.47943115234375, 285.7007141113281, 537.5684204101562, 799.0214233398438] - percentile_00_5: 195.47943115234375 - percentile_10_0: 285.7007141113281 - percentile_90_0: 537.5684204101562 - percentile_99_5: 799.0214233398438 - stdev: 103.18428039550781 - label: - - image_intensity: - - max: 2533.714111328125 - mean: 537.85791015625 - median: 518.7723388671875 - min: 0.0 - percentile: [37.59219741821289, 210.5163116455078, 872.1390380859375, 1022.5078125] - percentile_00_5: 37.59219741821289 - percentile_10_0: 210.5163116455078 - percentile_90_0: 872.1390380859375 - percentile_99_5: 1022.5078125 - stdev: 249.73280334472656 - ncomponents: 1 - pixel_percentage: 0.9397097229957581 - shape: - - [35, 55, 34] - - image_intensity: - - max: 706.7333374023438 - mean: 401.215576171875 - median: 390.9588623046875 - min: 172.9241180419922 - percentile: [202.9978790283203, 293.2191467285156, 526.290771484375, 646.5858154296875] - percentile_00_5: 202.9978790283203 - percentile_10_0: 293.2191467285156 - percentile_90_0: 526.290771484375 - percentile_99_5: 646.5858154296875 - stdev: 90.23644256591797 - ncomponents: 1 - pixel_percentage: 0.02919786050915718 - shape: - - [22, 17, 14] - - image_intensity: - - max: 969.8787231445312 - mean: 404.3590393066406 - median: 383.4404296875 - min: 105.2581558227539 - percentile: [174.20225524902344, 285.7007141113281, 548.8461303710938, 857.1021118164062] - percentile_00_5: 174.20225524902344 - percentile_10_0: 285.7007141113281 - percentile_90_0: 548.8461303710938 - percentile_99_5: 857.1021118164062 - stdev: 113.99118041992188 - ncomponents: 1 - pixel_percentage: 0.031092436984181404 - shape: - - [19, 27, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_007.nii.gz - image_foreground_stats: - intensity: - - max: 949.5974731445312 - mean: 410.4916076660156 - median: 392.50030517578125 - min: 25.322599411010742 - percentile: [208.91143798828125, 303.8711853027344, 525.4439086914062, 812.1593017578125] - percentile_00_5: 208.91143798828125 - percentile_10_0: 303.8711853027344 - percentile_90_0: 525.4439086914062 - percentile_99_5: 812.1593017578125 - stdev: 99.98128509521484 - image_stats: - channels: 1 - cropped_shape: - - [34, 47, 40] - intensity: - - max: 2728.510009765625 - mean: 564.9981689453125 - median: 563.4278564453125 - min: 0.0 - percentile: [31.653249740600586, 234.23403930664062, 898.9522705078125, 1050.8878173828125] - percentile_00_5: 31.653249740600586 - percentile_10_0: 234.23403930664062 - percentile_90_0: 898.9522705078125 - percentile_99_5: 1050.8878173828125 - stdev: 256.2774353027344 - shape: - - [34, 47, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_007.nii.gz - label_stats: - image_intensity: - - max: 949.5974731445312 - mean: 410.4916076660156 - median: 392.50030517578125 - min: 25.322599411010742 - percentile: [208.91143798828125, 303.8711853027344, 525.4439086914062, 812.1593017578125] - percentile_00_5: 208.91143798828125 - percentile_10_0: 303.8711853027344 - percentile_90_0: 525.4439086914062 - percentile_99_5: 812.1593017578125 - stdev: 99.98128509521484 - label: - - image_intensity: - - max: 2728.510009765625 - mean: 573.6029052734375 - median: 582.4197998046875 - min: 0.0 - percentile: [31.653249740600586, 221.57273864746094, 905.282958984375, 1057.218505859375] - percentile_00_5: 31.653249740600586 - percentile_10_0: 221.57273864746094 - percentile_90_0: 905.282958984375 - percentile_99_5: 1057.218505859375 - stdev: 259.568115234375 - ncomponents: 1 - pixel_percentage: 0.9472465515136719 - shape: - - [34, 47, 40] - - image_intensity: - - max: 829.3151245117188 - mean: 403.7112731933594 - median: 386.1696472167969 - min: 25.322599411010742 - percentile: [202.58079528808594, 303.8711853027344, 519.11328125, 714.06591796875] - percentile_00_5: 202.58079528808594 - percentile_10_0: 303.8711853027344 - percentile_90_0: 519.11328125 - percentile_99_5: 714.06591796875 - stdev: 90.17729187011719 - ncomponents: 1 - pixel_percentage: 0.028817271813750267 - shape: - - [22, 16, 19] - - image_intensity: - - max: 949.5974731445312 - mean: 418.65460205078125 - median: 405.1615905761719 - min: 177.25819396972656 - percentile: [219.3253631591797, 303.8711853027344, 544.4359130859375, 854.6377563476562] - percentile_00_5: 219.3253631591797 - percentile_10_0: 303.8711853027344 - percentile_90_0: 544.4359130859375 - percentile_99_5: 854.6377563476562 - stdev: 110.08525085449219 - ncomponents: 1 - pixel_percentage: 0.02393617108464241 - shape: - - [21, 21, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_296.nii.gz - image_foreground_stats: - intensity: - - max: 807.00537109375 - mean: 349.041748046875 - median: 328.51544189453125 - min: 35.70820236206055 - percentile: [114.26624298095703, 228.53248596191406, 492.7731628417969, 707.0223999023438] - percentile_00_5: 114.26624298095703 - percentile_10_0: 228.53248596191406 - percentile_90_0: 492.7731628417969 - percentile_99_5: 707.0223999023438 - stdev: 108.85616302490234 - image_stats: - channels: 1 - cropped_shape: - - [35, 54, 35] - intensity: - - max: 1771.126708984375 - mean: 451.5725402832031 - median: 457.0649719238281 - min: 0.0 - percentile: [21.4249210357666, 171.3993682861328, 714.1640014648438, 807.00537109375] - percentile_00_5: 21.4249210357666 - percentile_10_0: 171.3993682861328 - percentile_90_0: 714.1640014648438 - percentile_99_5: 807.00537109375 - stdev: 204.8345489501953 - shape: - - [35, 54, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_296.nii.gz - label_stats: - image_intensity: - - max: 807.00537109375 - mean: 349.041748046875 - median: 328.51544189453125 - min: 35.70820236206055 - percentile: [114.26624298095703, 228.53248596191406, 492.7731628417969, 707.0223999023438] - percentile_00_5: 114.26624298095703 - percentile_10_0: 228.53248596191406 - percentile_90_0: 492.7731628417969 - percentile_99_5: 707.0223999023438 - stdev: 108.85616302490234 - label: - - image_intensity: - - max: 1771.126708984375 - mean: 458.0277099609375 - median: 471.3482666015625 - min: 0.0 - percentile: [21.4249210357666, 164.25772094726562, 714.1640014648438, 807.00537109375] - percentile_00_5: 21.4249210357666 - percentile_10_0: 164.25772094726562 - percentile_90_0: 714.1640014648438 - percentile_99_5: 807.00537109375 - stdev: 207.7238006591797 - ncomponents: 1 - pixel_percentage: 0.9407709836959839 - shape: - - [35, 54, 35] - - image_intensity: - - max: 807.00537109375 - mean: 357.265869140625 - median: 335.6570739746094 - min: 78.55804443359375 - percentile: [135.691162109375, 242.81576538085938, 514.1981201171875, 717.8411865234375] - percentile_00_5: 135.691162109375 - percentile_10_0: 242.81576538085938 - percentile_90_0: 514.1981201171875 - percentile_99_5: 717.8411865234375 - stdev: 110.63986206054688 - ncomponents: 1 - pixel_percentage: 0.03171579912304878 - shape: - - [21, 18, 15] - - image_intensity: - - max: 771.297119140625 - mean: 339.56146240234375 - median: 321.3738098144531 - min: 35.70820236206055 - percentile: [100.66142272949219, 228.53248596191406, 478.4898986816406, 671.3141479492188] - percentile_00_5: 100.66142272949219 - percentile_10_0: 228.53248596191406 - percentile_90_0: 478.4898986816406 - percentile_99_5: 671.3141479492188 - stdev: 105.97406005859375 - ncomponents: 1 - pixel_percentage: 0.027513228356838226 - shape: - - [21, 27, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_288.nii.gz - image_foreground_stats: - intensity: - - max: 892.0337524414062 - mean: 397.5159606933594 - median: 382.3001708984375 - min: 25.486679077148438 - percentile: [154.32183837890625, 267.6101379394531, 547.963623046875, 732.7420043945312] - percentile_00_5: 154.32183837890625 - percentile_10_0: 267.6101379394531 - percentile_90_0: 547.963623046875 - percentile_99_5: 732.7420043945312 - stdev: 111.45790100097656 - image_stats: - channels: 1 - cropped_shape: - - [38, 50, 42] - intensity: - - max: 3549.02001953125 - mean: 539.287841796875 - median: 560.7069091796875 - min: 0.0 - percentile: [31.858348846435547, 203.8934326171875, 841.0604248046875, 962.1221313476562] - percentile_00_5: 31.858348846435547 - percentile_10_0: 203.8934326171875 - percentile_90_0: 841.0604248046875 - percentile_99_5: 962.1221313476562 - stdev: 244.7753143310547 - shape: - - [38, 50, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_288.nii.gz - label_stats: - image_intensity: - - max: 892.0337524414062 - mean: 397.5159606933594 - median: 382.3001708984375 - min: 25.486679077148438 - percentile: [154.32183837890625, 267.6101379394531, 547.963623046875, 732.7420043945312] - percentile_00_5: 154.32183837890625 - percentile_10_0: 267.6101379394531 - percentile_90_0: 547.963623046875 - percentile_99_5: 732.7420043945312 - stdev: 111.45790100097656 - label: - - image_intensity: - - max: 3549.02001953125 - mean: 546.464599609375 - median: 579.8219604492188 - min: 0.0 - percentile: [31.858348846435547, 197.52175903320312, 841.0604248046875, 962.1221313476562] - percentile_00_5: 31.858348846435547 - percentile_10_0: 197.52175903320312 - percentile_90_0: 841.0604248046875 - percentile_99_5: 962.1221313476562 - stdev: 247.4876708984375 - ncomponents: 1 - pixel_percentage: 0.9518170356750488 - shape: - - [38, 50, 42] - - image_intensity: - - max: 764.600341796875 - mean: 399.9238586425781 - median: 388.6718444824219 - min: 127.43339538574219 - percentile: [167.22447204589844, 273.9818115234375, 541.5919189453125, 699.3226318359375] - percentile_00_5: 167.22447204589844 - percentile_10_0: 273.9818115234375 - percentile_90_0: 541.5919189453125 - percentile_99_5: 699.3226318359375 - stdev: 104.55581665039062 - ncomponents: 1 - pixel_percentage: 0.023182956501841545 - shape: - - [24, 14, 15] - - image_intensity: - - max: 892.0337524414062 - mean: 395.2830810546875 - median: 382.3001708984375 - min: 25.486679077148438 - percentile: [152.92007446289062, 261.23846435546875, 554.3352661132812, 745.4853515625] - percentile_00_5: 152.92007446289062 - percentile_10_0: 261.23846435546875 - percentile_90_0: 554.3352661132812 - percentile_99_5: 745.4853515625 - stdev: 117.45246124267578 - ncomponents: 1 - pixel_percentage: 0.02500000037252903 - shape: - - [19, 25, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_042.nii.gz - image_foreground_stats: - intensity: - - max: 851.3782348632812 - mean: 356.6930847167969 - median: 327.9899597167969 - min: 13.957019805908203 - percentile: [86.95222473144531, 223.31231689453125, 544.3237915039062, 746.7005615234375] - percentile_00_5: 86.95222473144531 - percentile_10_0: 223.31231689453125 - percentile_90_0: 544.3237915039062 - percentile_99_5: 746.7005615234375 - stdev: 127.29399871826172 - image_stats: - channels: 1 - cropped_shape: - - [37, 52, 34] - intensity: - - max: 1479.444091796875 - mean: 462.8306884765625 - median: 467.5601501464844 - min: 0.0 - percentile: [20.935529708862305, 153.5272216796875, 746.7005615234375, 837.4212036132812] - percentile_00_5: 20.935529708862305 - percentile_10_0: 153.5272216796875 - percentile_90_0: 746.7005615234375 - percentile_99_5: 837.4212036132812 - stdev: 223.15386962890625 - shape: - - [37, 52, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_042.nii.gz - label_stats: - image_intensity: - - max: 851.3782348632812 - mean: 356.6930847167969 - median: 327.9899597167969 - min: 13.957019805908203 - percentile: [86.95222473144531, 223.31231689453125, 544.3237915039062, 746.7005615234375] - percentile_00_5: 86.95222473144531 - percentile_10_0: 223.31231689453125 - percentile_90_0: 544.3237915039062 - percentile_99_5: 746.7005615234375 - stdev: 127.29399871826172 - label: - - image_intensity: - - max: 1479.444091796875 - mean: 469.4624328613281 - median: 488.4956970214844 - min: 0.0 - percentile: [20.935529708862305, 146.5487060546875, 746.7005615234375, 837.4212036132812] - percentile_00_5: 20.935529708862305 - percentile_10_0: 146.5487060546875 - percentile_90_0: 746.7005615234375 - percentile_99_5: 837.4212036132812 - stdev: 226.1610565185547 - ncomponents: 1 - pixel_percentage: 0.9411917328834534 - shape: - - [37, 52, 34] - - image_intensity: - - max: 851.3782348632812 - mean: 354.81488037109375 - median: 334.9684753417969 - min: 27.914039611816406 - percentile: [114.0986328125, 237.2693328857422, 516.4097290039062, 746.7005615234375] - percentile_00_5: 114.0986328125 - percentile_10_0: 237.2693328857422 - percentile_90_0: 516.4097290039062 - percentile_99_5: 746.7005615234375 - stdev: 113.72482299804688 - ncomponents: 1 - pixel_percentage: 0.028601564466953278 - shape: - - [24, 17, 14] - - image_intensity: - - max: 802.5286254882812 - mean: 358.47149658203125 - median: 321.0114440917969 - min: 13.957019805908203 - percentile: [68.91278076171875, 216.33380126953125, 579.21630859375, 746.7005615234375] - percentile_00_5: 68.91278076171875 - percentile_10_0: 216.33380126953125 - percentile_90_0: 579.21630859375 - percentile_99_5: 746.7005615234375 - stdev: 138.90249633789062 - ncomponents: 1 - pixel_percentage: 0.030206676572561264 - shape: - - [20, 24, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_142.nii.gz - image_foreground_stats: - intensity: - - max: 75.0 - mean: 38.61253356933594 - median: 37.0 - min: 20.0 - percentile: [23.0, 29.0, 50.0, 67.0] - percentile_00_5: 23.0 - percentile_10_0: 29.0 - percentile_90_0: 50.0 - percentile_99_5: 67.0 - stdev: 8.484759330749512 - image_stats: - channels: 1 - cropped_shape: - - [38, 43, 41] - intensity: - - max: 127.0 - mean: 54.025150299072266 - median: 56.0 - min: 1.0 - percentile: [5.0, 24.0, 81.0, 91.0] - percentile_00_5: 5.0 - percentile_10_0: 24.0 - percentile_90_0: 81.0 - percentile_99_5: 91.0 - stdev: 22.143171310424805 - shape: - - [38, 43, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_142.nii.gz - label_stats: - image_intensity: - - max: 75.0 - mean: 38.61253356933594 - median: 37.0 - min: 20.0 - percentile: [23.0, 29.0, 50.0, 67.0] - percentile_00_5: 23.0 - percentile_10_0: 29.0 - percentile_90_0: 50.0 - percentile_99_5: 67.0 - stdev: 8.484759330749512 - label: - - image_intensity: - - max: 127.0 - mean: 54.67164993286133 - median: 58.0 - min: 1.0 - percentile: [5.0, 23.0, 81.0, 91.0] - percentile_00_5: 5.0 - percentile_10_0: 23.0 - percentile_90_0: 81.0 - percentile_99_5: 91.0 - stdev: 22.304372787475586 - ncomponents: 1 - pixel_percentage: 0.9597426652908325 - shape: - - [38, 43, 41] - - image_intensity: - - max: 67.0 - mean: 39.854007720947266 - median: 39.0 - min: 22.0 - percentile: [24.604999542236328, 32.0, 49.0, 64.39501953125] - percentile_00_5: 24.604999542236328 - percentile_10_0: 32.0 - percentile_90_0: 49.0 - percentile_99_5: 64.39501953125 - stdev: 7.334498882293701 - ncomponents: 1 - pixel_percentage: 0.019733110442757607 - shape: - - [20, 12, 16] - - image_intensity: - - max: 75.0 - mean: 37.418907165527344 - median: 35.0 - min: 20.0 - percentile: [22.0, 28.0, 51.0, 69.0] - percentile_00_5: 22.0 - percentile_10_0: 28.0 - percentile_90_0: 51.0 - percentile_99_5: 69.0 - stdev: 9.30480670928955 - ncomponents: 1 - pixel_percentage: 0.020524226129055023 - shape: - - [17, 18, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_133.nii.gz - image_foreground_stats: - intensity: - - max: 84.0 - mean: 43.596946716308594 - median: 42.0 - min: 20.0 - percentile: [27.0, 33.0, 56.0, 75.0] - percentile_00_5: 27.0 - percentile_10_0: 33.0 - percentile_90_0: 56.0 - percentile_99_5: 75.0 - stdev: 9.128755569458008 - image_stats: - channels: 1 - cropped_shape: - - [39, 41, 42] - intensity: - - max: 197.0 - mean: 59.93269729614258 - median: 62.0 - min: 2.0 - percentile: [8.0, 26.0, 92.0, 102.0] - percentile_00_5: 8.0 - percentile_10_0: 26.0 - percentile_90_0: 92.0 - percentile_99_5: 102.0 - stdev: 25.196924209594727 - shape: - - [39, 41, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_133.nii.gz - label_stats: - image_intensity: - - max: 84.0 - mean: 43.596946716308594 - median: 42.0 - min: 20.0 - percentile: [27.0, 33.0, 56.0, 75.0] - percentile_00_5: 27.0 - percentile_10_0: 33.0 - percentile_90_0: 56.0 - percentile_99_5: 75.0 - stdev: 9.128755569458008 - label: - - image_intensity: - - max: 197.0 - mean: 60.80625534057617 - median: 64.0 - min: 2.0 - percentile: [8.0, 25.0, 92.0, 102.0] - percentile_00_5: 8.0 - percentile_10_0: 25.0 - percentile_90_0: 92.0 - percentile_99_5: 102.0 - stdev: 25.482267379760742 - ncomponents: 1 - pixel_percentage: 0.9492391347885132 - shape: - - [39, 41, 42] - - image_intensity: - - max: 71.0 - mean: 43.45655822753906 - median: 42.0 - min: 20.0 - percentile: [26.489999771118164, 33.0, 56.0, 66.510009765625] - percentile_00_5: 26.489999771118164 - percentile_10_0: 33.0 - percentile_90_0: 56.0 - percentile_99_5: 66.510009765625 - stdev: 8.651559829711914 - ncomponents: 1 - pixel_percentage: 0.028276601806282997 - shape: - - [21, 14, 19] - - image_intensity: - - max: 84.0 - mean: 43.77350997924805 - median: 42.0 - min: 24.0 - percentile: [27.545000076293945, 33.0, 57.0, 79.0] - percentile_00_5: 27.545000076293945 - percentile_10_0: 33.0 - percentile_90_0: 57.0 - percentile_99_5: 79.0 - stdev: 9.692713737487793 - ncomponents: 1 - pixel_percentage: 0.022484291344881058 - shape: - - [19, 17, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_033.nii.gz - image_foreground_stats: - intensity: - - max: 109.0 - mean: 51.78702926635742 - median: 50.0 - min: 19.0 - percentile: [27.0, 40.0, 67.0, 96.0] - percentile_00_5: 27.0 - percentile_10_0: 40.0 - percentile_90_0: 67.0 - percentile_99_5: 96.0 - stdev: 11.581384658813477 - image_stats: - channels: 1 - cropped_shape: - - [33, 48, 38] - intensity: - - max: 253.0 - mean: 68.4669418334961 - median: 68.0 - min: 1.0 - percentile: [9.0, 32.0, 106.0, 123.0] - percentile_00_5: 9.0 - percentile_10_0: 32.0 - percentile_90_0: 106.0 - percentile_99_5: 123.0 - stdev: 28.341306686401367 - shape: - - [33, 48, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_033.nii.gz - label_stats: - image_intensity: - - max: 109.0 - mean: 51.78702926635742 - median: 50.0 - min: 19.0 - percentile: [27.0, 40.0, 67.0, 96.0] - percentile_00_5: 27.0 - percentile_10_0: 40.0 - percentile_90_0: 67.0 - percentile_99_5: 96.0 - stdev: 11.581384658813477 - label: - - image_intensity: - - max: 253.0 - mean: 69.47268676757812 - median: 70.0 - min: 1.0 - percentile: [9.0, 31.0, 107.0, 123.0] - percentile_00_5: 9.0 - percentile_10_0: 31.0 - percentile_90_0: 107.0 - percentile_99_5: 123.0 - stdev: 28.73651123046875 - ncomponents: 1 - pixel_percentage: 0.9431319832801819 - shape: - - [33, 48, 38] - - image_intensity: - - max: 90.0 - mean: 50.17034912109375 - median: 49.0 - min: 19.0 - percentile: [27.270000457763672, 39.0, 63.0, 82.0] - percentile_00_5: 27.270000457763672 - percentile_10_0: 39.0 - percentile_90_0: 63.0 - percentile_99_5: 82.0 - stdev: 9.91424560546875 - ncomponents: 1 - pixel_percentage: 0.030818048864603043 - shape: - - [23, 18, 15] - - image_intensity: - - max: 109.0 - mean: 53.699615478515625 - median: 51.0 - min: 21.0 - percentile: [26.0, 41.0, 71.0, 102.1650390625] - percentile_00_5: 26.0 - percentile_10_0: 41.0 - percentile_90_0: 71.0 - percentile_99_5: 102.1650390625 - stdev: 13.029731750488281 - ncomponents: 1 - pixel_percentage: 0.02604997344315052 - shape: - - [17, 21, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_150.nii.gz - image_foreground_stats: - intensity: - - max: 90.0 - mean: 44.409324645996094 - median: 43.0 - min: 19.0 - percentile: [26.0, 34.0, 58.0, 77.0] - percentile_00_5: 26.0 - percentile_10_0: 34.0 - percentile_90_0: 58.0 - percentile_99_5: 77.0 - stdev: 9.746139526367188 - image_stats: - channels: 1 - cropped_shape: - - [37, 49, 34] - intensity: - - max: 249.0 - mean: 61.88175582885742 - median: 64.0 - min: 1.0 - percentile: [7.0, 24.0, 96.0, 110.0] - percentile_00_5: 7.0 - percentile_10_0: 24.0 - percentile_90_0: 96.0 - percentile_99_5: 110.0 - stdev: 27.496156692504883 - shape: - - [37, 49, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_150.nii.gz - label_stats: - image_intensity: - - max: 90.0 - mean: 44.409324645996094 - median: 43.0 - min: 19.0 - percentile: [26.0, 34.0, 58.0, 77.0] - percentile_00_5: 26.0 - percentile_10_0: 34.0 - percentile_90_0: 58.0 - percentile_99_5: 77.0 - stdev: 9.746139526367188 - label: - - image_intensity: - - max: 249.0 - mean: 62.8032112121582 - median: 67.0 - min: 1.0 - percentile: [7.0, 24.0, 96.0, 110.0] - percentile_00_5: 7.0 - percentile_10_0: 24.0 - percentile_90_0: 96.0 - percentile_99_5: 110.0 - stdev: 27.819988250732422 - ncomponents: 1 - pixel_percentage: 0.9499042630195618 - shape: - - [37, 49, 34] - - image_intensity: - - max: 80.0 - mean: 45.20498275756836 - median: 44.0 - min: 24.0 - percentile: [28.0, 35.0, 57.0, 73.0] - percentile_00_5: 28.0 - percentile_10_0: 35.0 - percentile_90_0: 57.0 - percentile_99_5: 73.0 - stdev: 8.745254516601562 - ncomponents: 1 - pixel_percentage: 0.026037441566586494 - shape: - - [19, 16, 12] - - image_intensity: - - max: 90.0 - mean: 43.548213958740234 - median: 41.0 - min: 19.0 - percentile: [25.0, 33.0, 58.0, 79.5899658203125] - percentile_00_5: 25.0 - percentile_10_0: 33.0 - percentile_90_0: 58.0 - percentile_99_5: 79.5899658203125 - stdev: 10.657902717590332 - ncomponents: 1 - pixel_percentage: 0.024058271199464798 - shape: - - [18, 21, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_050.nii.gz - image_foreground_stats: - intensity: - - max: 1221.247314453125 - mean: 535.8847045898438 - median: 519.2705078125 - min: 67.3128433227539 - percentile: [211.5546417236328, 355.79644775390625, 740.4412841796875, 1028.9249267578125] - percentile_00_5: 211.5546417236328 - percentile_10_0: 355.79644775390625 - percentile_90_0: 740.4412841796875 - percentile_99_5: 1028.9249267578125 - stdev: 152.28477478027344 - image_stats: - channels: 1 - cropped_shape: - - [38, 49, 38] - intensity: - - max: 4375.3349609375 - mean: 721.3748168945312 - median: 711.5928955078125 - min: 0.0 - percentile: [48.08060073852539, 288.4836120605469, 1153.9344482421875, 1384.7213134765625] - percentile_00_5: 48.08060073852539 - percentile_10_0: 288.4836120605469 - percentile_90_0: 1153.9344482421875 - percentile_99_5: 1384.7213134765625 - stdev: 334.9332580566406 - shape: - - [38, 49, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_050.nii.gz - label_stats: - image_intensity: - - max: 1221.247314453125 - mean: 535.8847045898438 - median: 519.2705078125 - min: 67.3128433227539 - percentile: [211.5546417236328, 355.79644775390625, 740.4412841796875, 1028.9249267578125] - percentile_00_5: 211.5546417236328 - percentile_10_0: 355.79644775390625 - percentile_90_0: 740.4412841796875 - percentile_99_5: 1028.9249267578125 - stdev: 152.28477478027344 - label: - - image_intensity: - - max: 4375.3349609375 - mean: 731.9928588867188 - median: 730.8251342773438 - min: 0.0 - percentile: [48.08060073852539, 288.4836120605469, 1153.9344482421875, 1384.7213134765625] - percentile_00_5: 48.08060073852539 - percentile_10_0: 288.4836120605469 - percentile_90_0: 1153.9344482421875 - percentile_99_5: 1384.7213134765625 - stdev: 339.3995666503906 - ncomponents: 1 - pixel_percentage: 0.9458561539649963 - shape: - - [38, 49, 38] - - image_intensity: - - max: 1105.8538818359375 - mean: 537.65185546875 - median: 528.8865966796875 - min: 67.3128433227539 - percentile: [201.9385223388672, 355.79644775390625, 730.8251342773438, 942.3798217773438] - percentile_00_5: 201.9385223388672 - percentile_10_0: 355.79644775390625 - percentile_90_0: 730.8251342773438 - percentile_99_5: 942.3798217773438 - stdev: 144.1819305419922 - ncomponents: 1 - pixel_percentage: 0.02859121561050415 - shape: - - [25, 15, 14] - - image_intensity: - - max: 1221.247314453125 - mean: 533.9074096679688 - median: 500.03826904296875 - min: 173.0901641845703 - percentile: [240.40301513671875, 355.79644775390625, 752.9415283203125, 1086.28466796875] - percentile_00_5: 240.40301513671875 - percentile_10_0: 355.79644775390625 - percentile_90_0: 752.9415283203125 - percentile_99_5: 1086.28466796875 - stdev: 160.84506225585938 - ncomponents: 1 - pixel_percentage: 0.025552602484822273 - shape: - - [21, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_105.nii.gz - image_foreground_stats: - intensity: - - max: 870.085693359375 - mean: 407.8662109375 - median: 394.1413879394531 - min: 89.23955535888672 - percentile: [171.04248046875, 282.5919189453125, 557.7472534179688, 728.7897338867188] - percentile_00_5: 171.04248046875 - percentile_10_0: 282.5919189453125 - percentile_90_0: 557.7472534179688 - percentile_99_5: 728.7897338867188 - stdev: 107.11434936523438 - image_stats: - channels: 1 - cropped_shape: - - [33, 47, 37] - intensity: - - max: 1695.5516357421875 - mean: 532.9242553710938 - median: 542.8739624023438 - min: 0.0 - percentile: [37.18314743041992, 252.8454132080078, 795.7193603515625, 951.8886108398438] - percentile_00_5: 37.18314743041992 - percentile_10_0: 252.8454132080078 - percentile_90_0: 795.7193603515625 - percentile_99_5: 951.8886108398438 - stdev: 213.3580322265625 - shape: - - [33, 47, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_105.nii.gz - label_stats: - image_intensity: - - max: 870.085693359375 - mean: 407.8662109375 - median: 394.1413879394531 - min: 89.23955535888672 - percentile: [171.04248046875, 282.5919189453125, 557.7472534179688, 728.7897338867188] - percentile_00_5: 171.04248046875 - percentile_10_0: 282.5919189453125 - percentile_90_0: 557.7472534179688 - percentile_99_5: 728.7897338867188 - stdev: 107.11434936523438 - label: - - image_intensity: - - max: 1695.5516357421875 - mean: 540.2118530273438 - median: 557.7472534179688 - min: 0.0 - percentile: [37.18314743041992, 245.40878295898438, 803.156005859375, 951.8886108398438] - percentile_00_5: 37.18314743041992 - percentile_10_0: 245.40878295898438 - percentile_90_0: 803.156005859375 - percentile_99_5: 951.8886108398438 - stdev: 215.7342987060547 - ncomponents: 1 - pixel_percentage: 0.9449352622032166 - shape: - - [33, 47, 37] - - image_intensity: - - max: 870.085693359375 - mean: 412.4894104003906 - median: 401.5780029296875 - min: 89.23955535888672 - percentile: [143.601318359375, 282.5919189453125, 557.7472534179688, 736.226318359375] - percentile_00_5: 143.601318359375 - percentile_10_0: 282.5919189453125 - percentile_90_0: 557.7472534179688 - percentile_99_5: 736.226318359375 - stdev: 107.95480346679688 - ncomponents: 1 - pixel_percentage: 0.03192360699176788 - shape: - - [22, 17, 16] - - image_intensity: - - max: 773.4094848632812 - mean: 401.4884033203125 - median: 386.7047424316406 - min: 156.16921997070312 - percentile: [200.78900146484375, 282.5919189453125, 557.7472534179688, 709.1941528320312] - percentile_00_5: 200.78900146484375 - percentile_10_0: 282.5919189453125 - percentile_90_0: 557.7472534179688 - percentile_99_5: 709.1941528320312 - stdev: 105.61235046386719 - ncomponents: 1 - pixel_percentage: 0.023141128942370415 - shape: - - [15, 18, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_178.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 52.73397445678711 - median: 51.0 - min: 30.0 - percentile: [33.0, 40.0, 68.0, 84.43505859375] - percentile_00_5: 33.0 - percentile_10_0: 40.0 - percentile_90_0: 68.0 - percentile_99_5: 84.43505859375 - stdev: 10.81682300567627 - image_stats: - channels: 1 - cropped_shape: - - [35, 44, 41] - intensity: - - max: 255.0 - mean: 68.1161880493164 - median: 73.0 - min: 1.0 - percentile: [6.0, 33.0, 96.0, 112.0] - percentile_00_5: 6.0 - percentile_10_0: 33.0 - percentile_90_0: 96.0 - percentile_99_5: 112.0 - stdev: 25.415904998779297 - shape: - - [35, 44, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_178.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 52.73397445678711 - median: 51.0 - min: 30.0 - percentile: [33.0, 40.0, 68.0, 84.43505859375] - percentile_00_5: 33.0 - percentile_10_0: 40.0 - percentile_90_0: 68.0 - percentile_99_5: 84.43505859375 - stdev: 10.81682300567627 - label: - - image_intensity: - - max: 255.0 - mean: 68.80706787109375 - median: 75.0 - min: 1.0 - percentile: [6.0, 32.0, 96.0, 112.0] - percentile_00_5: 6.0 - percentile_10_0: 32.0 - percentile_90_0: 96.0 - percentile_99_5: 112.0 - stdev: 25.663625717163086 - ncomponents: 1 - pixel_percentage: 0.9570161700248718 - shape: - - [35, 44, 41] - - image_intensity: - - max: 84.0 - mean: 55.15277862548828 - median: 54.0 - min: 32.0 - percentile: [34.11499786376953, 44.0, 69.0, 79.0] - percentile_00_5: 34.11499786376953 - percentile_10_0: 44.0 - percentile_90_0: 69.0 - percentile_99_5: 79.0 - stdev: 9.584864616394043 - ncomponents: 1 - pixel_percentage: 0.01938549242913723 - shape: - - [21, 13, 14] - - image_intensity: - - max: 96.0 - mean: 50.74698257446289 - median: 48.0 - min: 30.0 - percentile: [32.0, 39.0, 66.0, 88.0] - percentile_00_5: 32.0 - percentile_10_0: 39.0 - percentile_90_0: 66.0 - percentile_99_5: 88.0 - stdev: 11.353254318237305 - ncomponents: 1 - pixel_percentage: 0.023598352447152138 - shape: - - [14, 20, 26] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_166.nii.gz - image_foreground_stats: - intensity: - - max: 78.0 - mean: 42.06772232055664 - median: 41.0 - min: 9.0 - percentile: [18.0, 30.0, 57.0, 72.0] - percentile_00_5: 18.0 - percentile_10_0: 30.0 - percentile_90_0: 57.0 - percentile_99_5: 72.0 - stdev: 10.452546119689941 - image_stats: - channels: 1 - cropped_shape: - - [36, 49, 31] - intensity: - - max: 218.0 - mean: 55.80059814453125 - median: 55.0 - min: 2.0 - percentile: [6.0, 16.0, 91.0, 105.0] - percentile_00_5: 6.0 - percentile_10_0: 16.0 - percentile_90_0: 91.0 - percentile_99_5: 105.0 - stdev: 27.738901138305664 - shape: - - [36, 49, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_166.nii.gz - label_stats: - image_intensity: - - max: 78.0 - mean: 42.06772232055664 - median: 41.0 - min: 9.0 - percentile: [18.0, 30.0, 57.0, 72.0] - percentile_00_5: 18.0 - percentile_10_0: 30.0 - percentile_90_0: 57.0 - percentile_99_5: 72.0 - stdev: 10.452546119689941 - label: - - image_intensity: - - max: 218.0 - mean: 56.60531997680664 - median: 57.0 - min: 2.0 - percentile: [6.0, 16.0, 92.0, 105.0] - percentile_00_5: 6.0 - percentile_10_0: 16.0 - percentile_90_0: 92.0 - percentile_99_5: 105.0 - stdev: 28.221158981323242 - ncomponents: 1 - pixel_percentage: 0.9446455836296082 - shape: - - [36, 49, 31] - - image_intensity: - - max: 77.0 - mean: 42.94293975830078 - median: 42.0 - min: 17.0 - percentile: [22.0, 30.0, 57.0, 72.0] - percentile_00_5: 22.0 - percentile_10_0: 30.0 - percentile_90_0: 57.0 - percentile_99_5: 72.0 - stdev: 10.471667289733887 - ncomponents: 1 - pixel_percentage: 0.025638211518526077 - shape: - - [19, 13, 13] - - image_intensity: - - max: 78.0 - mean: 41.31261444091797 - median: 40.0 - min: 9.0 - percentile: [17.0, 30.0, 56.0, 71.8800048828125] - percentile_00_5: 17.0 - percentile_10_0: 30.0 - percentile_90_0: 56.0 - percentile_99_5: 71.8800048828125 - stdev: 10.376873016357422 - ncomponents: 1 - pixel_percentage: 0.029716188088059425 - shape: - - [20, 24, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_017.nii.gz - image_foreground_stats: - intensity: - - max: 920.2604370117188 - mean: 399.8487243652344 - median: 383.4418640136719 - min: 76.68836975097656 - percentile: [153.37673950195312, 278.8668212890625, 550.761962890625, 780.8270263671875] - percentile_00_5: 153.37673950195312 - percentile_10_0: 278.8668212890625 - percentile_90_0: 550.761962890625 - percentile_99_5: 780.8270263671875 - stdev: 112.03753662109375 - image_stats: - channels: 1 - cropped_shape: - - [35, 48, 32] - intensity: - - max: 1045.75048828125 - mean: 505.2635192871094 - median: 501.96026611328125 - min: 0.0 - percentile: [27.886680603027344, 167.32008361816406, 808.7137451171875, 920.2604370117188] - percentile_00_5: 27.886680603027344 - percentile_10_0: 167.32008361816406 - percentile_90_0: 808.7137451171875 - percentile_99_5: 920.2604370117188 - stdev: 234.48104858398438 - shape: - - [35, 48, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_017.nii.gz - label_stats: - image_intensity: - - max: 920.2604370117188 - mean: 399.8487243652344 - median: 383.4418640136719 - min: 76.68836975097656 - percentile: [153.37673950195312, 278.8668212890625, 550.761962890625, 780.8270263671875] - percentile_00_5: 153.37673950195312 - percentile_10_0: 278.8668212890625 - percentile_90_0: 550.761962890625 - percentile_99_5: 780.8270263671875 - stdev: 112.03753662109375 - label: - - image_intensity: - - max: 1045.75048828125 - mean: 512.5550537109375 - median: 522.875244140625 - min: 0.0 - percentile: [27.886680603027344, 160.34841918945312, 808.7137451171875, 920.2604370117188] - percentile_00_5: 27.886680603027344 - percentile_10_0: 160.34841918945312 - percentile_90_0: 808.7137451171875 - percentile_99_5: 920.2604370117188 - stdev: 238.9442901611328 - ncomponents: 1 - pixel_percentage: 0.9353050589561462 - shape: - - [35, 48, 32] - - image_intensity: - - max: 794.7703857421875 - mean: 393.3262939453125 - median: 383.4418640136719 - min: 76.68836975097656 - percentile: [165.01943969726562, 278.8668212890625, 529.846923828125, 685.52490234375] - percentile_00_5: 165.01943969726562 - percentile_10_0: 278.8668212890625 - percentile_90_0: 529.846923828125 - percentile_99_5: 685.52490234375 - stdev: 98.92593383789062 - ncomponents: 1 - pixel_percentage: 0.0397135429084301 - shape: - - [23, 17, 15] - - image_intensity: - - max: 920.2604370117188 - mean: 410.2176513671875 - median: 383.4418640136719 - min: 104.5750503540039 - percentile: [144.38328552246094, 278.8668212890625, 599.5636596679688, 824.6791381835938] - percentile_00_5: 144.38328552246094 - percentile_10_0: 278.8668212890625 - percentile_90_0: 599.5636596679688 - percentile_99_5: 824.6791381835938 - stdev: 129.51663208007812 - ncomponents: 1 - pixel_percentage: 0.02498139813542366 - shape: - - [17, 21, 14] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_109.nii.gz - image_foreground_stats: - intensity: - - max: 102.0 - mean: 53.21404266357422 - median: 51.0 - min: 19.0 - percentile: [30.09000015258789, 40.0, 69.0, 89.0] - percentile_00_5: 30.09000015258789 - percentile_10_0: 40.0 - percentile_90_0: 69.0 - percentile_99_5: 89.0 - stdev: 11.526534080505371 - image_stats: - channels: 1 - cropped_shape: - - [36, 49, 36] - intensity: - - max: 122.0 - mean: 65.65961456298828 - median: 69.0 - min: 1.0 - percentile: [7.0, 29.0, 98.0, 112.0] - percentile_00_5: 7.0 - percentile_10_0: 29.0 - percentile_90_0: 98.0 - percentile_99_5: 112.0 - stdev: 25.907041549682617 - shape: - - [36, 49, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_109.nii.gz - label_stats: - image_intensity: - - max: 102.0 - mean: 53.21404266357422 - median: 51.0 - min: 19.0 - percentile: [30.09000015258789, 40.0, 69.0, 89.0] - percentile_00_5: 30.09000015258789 - percentile_10_0: 40.0 - percentile_90_0: 69.0 - percentile_99_5: 89.0 - stdev: 11.526534080505371 - label: - - image_intensity: - - max: 122.0 - mean: 66.32415771484375 - median: 71.0 - min: 1.0 - percentile: [7.0, 28.0, 98.0, 112.0] - percentile_00_5: 7.0 - percentile_10_0: 28.0 - percentile_90_0: 98.0 - percentile_99_5: 112.0 - stdev: 26.29080581665039 - ncomponents: 1 - pixel_percentage: 0.949310302734375 - shape: - - [36, 49, 36] - - image_intensity: - - max: 102.0 - mean: 53.38325881958008 - median: 52.0 - min: 26.0 - percentile: [30.940000534057617, 40.0, 67.0, 89.0] - percentile_00_5: 30.940000534057617 - percentile_10_0: 40.0 - percentile_90_0: 67.0 - percentile_99_5: 89.0 - stdev: 11.177430152893066 - ncomponents: 1 - pixel_percentage: 0.025022046640515327 - shape: - - [24, 14, 12] - - image_intensity: - - max: 93.0 - mean: 53.04907989501953 - median: 51.0 - min: 19.0 - percentile: [30.145000457763672, 40.0, 70.0, 90.0] - percentile_00_5: 30.145000457763672 - percentile_10_0: 40.0 - percentile_90_0: 70.0 - percentile_99_5: 90.0 - stdev: 11.854642868041992 - ncomponents: 1 - pixel_percentage: 0.025667674839496613 - shape: - - [16, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_074.nii.gz - image_foreground_stats: - intensity: - - max: 742.7111206054688 - mean: 366.6538391113281 - median: 355.75238037109375 - min: 87.37777709960938 - percentile: [180.9656219482422, 262.1333312988281, 486.8190612792969, 642.8828125] - percentile_00_5: 180.9656219482422 - percentile_10_0: 262.1333312988281 - percentile_90_0: 486.8190612792969 - percentile_99_5: 642.8828125 - stdev: 89.24051666259766 - image_stats: - channels: 1 - cropped_shape: - - [37, 47, 42] - intensity: - - max: 1560.3175048828125 - mean: 509.3006896972656 - median: 549.2317504882812 - min: 0.0 - percentile: [24.96508026123047, 224.68572998046875, 742.7111206054688, 842.5714721679688] - percentile_00_5: 24.96508026123047 - percentile_10_0: 224.68572998046875 - percentile_90_0: 742.7111206054688 - percentile_99_5: 842.5714721679688 - stdev: 205.00839233398438 - shape: - - [37, 47, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_074.nii.gz - label_stats: - image_intensity: - - max: 742.7111206054688 - mean: 366.6538391113281 - median: 355.75238037109375 - min: 87.37777709960938 - percentile: [180.9656219482422, 262.1333312988281, 486.8190612792969, 642.8828125] - percentile_00_5: 180.9656219482422 - percentile_10_0: 262.1333312988281 - percentile_90_0: 486.8190612792969 - percentile_99_5: 642.8828125 - stdev: 89.24051666259766 - label: - - image_intensity: - - max: 1560.3175048828125 - mean: 515.4107055664062 - median: 561.7142944335938 - min: 0.0 - percentile: [24.96508026123047, 212.20318603515625, 748.952392578125, 842.5714721679688] - percentile_00_5: 24.96508026123047 - percentile_10_0: 212.20318603515625 - percentile_90_0: 748.952392578125 - percentile_99_5: 842.5714721679688 - stdev: 206.3459014892578 - ncomponents: 1 - pixel_percentage: 0.9589254856109619 - shape: - - [37, 47, 42] - - image_intensity: - - max: 742.7111206054688 - mean: 381.6593322753906 - median: 368.23492431640625 - min: 143.54920959472656 - percentile: [194.63400268554688, 280.8571472167969, 505.5428771972656, 649.0921020507812] - percentile_00_5: 194.63400268554688 - percentile_10_0: 280.8571472167969 - percentile_90_0: 505.5428771972656 - percentile_99_5: 649.0921020507812 - stdev: 87.2670669555664 - ncomponents: 1 - pixel_percentage: 0.019688380882143974 - shape: - - [19, 15, 15] - - image_intensity: - - max: 711.5047607421875 - mean: 352.83953857421875 - median: 337.0285949707031 - min: 87.37777709960938 - percentile: [156.03175354003906, 255.89207458496094, 474.3365173339844, 631.5857543945312] - percentile_00_5: 156.03175354003906 - percentile_10_0: 255.89207458496094 - percentile_90_0: 474.3365173339844 - percentile_99_5: 631.5857543945312 - stdev: 88.80553436279297 - ncomponents: 1 - pixel_percentage: 0.021386127918958664 - shape: - - [20, 18, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_174.nii.gz - image_foreground_stats: - intensity: - - max: 100.0 - mean: 47.161895751953125 - median: 46.0 - min: 11.0 - percentile: [25.729999542236328, 34.0, 63.0, 81.0] - percentile_00_5: 25.729999542236328 - percentile_10_0: 34.0 - percentile_90_0: 63.0 - percentile_99_5: 81.0 - stdev: 11.338601112365723 - image_stats: - channels: 1 - cropped_shape: - - [37, 55, 34] - intensity: - - max: 255.0 - mean: 59.3338508605957 - median: 59.0 - min: 1.0 - percentile: [6.0, 30.0, 89.0, 102.0] - percentile_00_5: 6.0 - percentile_10_0: 30.0 - percentile_90_0: 89.0 - percentile_99_5: 102.0 - stdev: 23.294349670410156 - shape: - - [37, 55, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_174.nii.gz - label_stats: - image_intensity: - - max: 100.0 - mean: 47.161895751953125 - median: 46.0 - min: 11.0 - percentile: [25.729999542236328, 34.0, 63.0, 81.0] - percentile_00_5: 25.729999542236328 - percentile_10_0: 34.0 - percentile_90_0: 63.0 - percentile_99_5: 81.0 - stdev: 11.338601112365723 - label: - - image_intensity: - - max: 255.0 - mean: 60.07020950317383 - median: 61.0 - min: 1.0 - percentile: [6.0, 30.0, 89.0, 102.0] - percentile_00_5: 6.0 - percentile_10_0: 30.0 - percentile_90_0: 89.0 - percentile_99_5: 102.0 - stdev: 23.625642776489258 - ncomponents: 1 - pixel_percentage: 0.9429541826248169 - shape: - - [37, 55, 34] - - image_intensity: - - max: 88.0 - mean: 47.45484924316406 - median: 46.0 - min: 26.0 - percentile: [29.0, 36.30000305175781, 60.0, 77.0] - percentile_00_5: 29.0 - percentile_10_0: 36.30000305175781 - percentile_90_0: 60.0 - percentile_99_5: 77.0 - stdev: 9.509099960327148 - ncomponents: 1 - pixel_percentage: 0.025928601622581482 - shape: - - [21, 17, 13] - - image_intensity: - - max: 100.0 - mean: 46.917789459228516 - median: 45.0 - min: 11.0 - percentile: [24.0, 33.0, 66.0, 82.0] - percentile_00_5: 24.0 - percentile_10_0: 33.0 - percentile_90_0: 66.0 - percentile_99_5: 82.0 - stdev: 12.657561302185059 - ncomponents: 1 - pixel_percentage: 0.031117213889956474 - shape: - - [19, 27, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_314.nii.gz - image_foreground_stats: - intensity: - - max: 521.9302368164062 - mean: 242.8621368408203 - median: 235.872314453125 - min: 20.07423973083496 - percentile: [75.27839660644531, 170.63104248046875, 326.2063903808594, 461.70751953125] - percentile_00_5: 75.27839660644531 - percentile_10_0: 170.63104248046875 - percentile_90_0: 326.2063903808594 - percentile_99_5: 461.70751953125 - stdev: 66.6104507446289 - image_stats: - channels: 1 - cropped_shape: - - [37, 53, 33] - intensity: - - max: 893.3036499023438 - mean: 295.9065856933594 - median: 296.09503173828125 - min: 0.0 - percentile: [15.055679321289062, 80.29695892333984, 471.74462890625, 536.9859008789062] - percentile_00_5: 15.055679321289062 - percentile_10_0: 80.29695892333984 - percentile_90_0: 471.74462890625 - percentile_99_5: 536.9859008789062 - stdev: 142.02987670898438 - shape: - - [37, 53, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_314.nii.gz - label_stats: - image_intensity: - - max: 521.9302368164062 - mean: 242.8621368408203 - median: 235.872314453125 - min: 20.07423973083496 - percentile: [75.27839660644531, 170.63104248046875, 326.2063903808594, 461.70751953125] - percentile_00_5: 75.27839660644531 - percentile_10_0: 170.63104248046875 - percentile_90_0: 326.2063903808594 - percentile_99_5: 461.70751953125 - stdev: 66.6104507446289 - label: - - image_intensity: - - max: 893.3036499023438 - mean: 298.4338684082031 - median: 306.13214111328125 - min: 0.0 - percentile: [10.03711986541748, 80.29695892333984, 476.76318359375, 542.0044555664062] - percentile_00_5: 10.03711986541748 - percentile_10_0: 80.29695892333984 - percentile_90_0: 476.76318359375 - percentile_99_5: 542.0044555664062 - stdev: 144.1587677001953 - ncomponents: 1 - pixel_percentage: 0.9545222520828247 - shape: - - [37, 53, 33] - - image_intensity: - - max: 516.9116821289062 - mean: 244.52247619628906 - median: 235.872314453125 - min: 20.07423973083496 - percentile: [62.63162612915039, 165.6124725341797, 336.2435302734375, 464.3172607421875] - percentile_00_5: 62.63162612915039 - percentile_10_0: 165.6124725341797 - percentile_90_0: 336.2435302734375 - percentile_99_5: 464.3172607421875 - stdev: 69.5777587890625 - ncomponents: 1 - pixel_percentage: 0.026223478838801384 - shape: - - [21, 17, 14] - - image_intensity: - - max: 521.9302368164062 - mean: 240.6008758544922 - median: 230.853759765625 - min: 50.18560028076172 - percentile: [105.38975524902344, 170.63104248046875, 321.1878356933594, 446.6518249511719] - percentile_00_5: 105.38975524902344 - percentile_10_0: 170.63104248046875 - percentile_90_0: 321.1878356933594 - percentile_99_5: 446.6518249511719 - stdev: 62.271202087402344 - ncomponents: 1 - pixel_percentage: 0.01925424486398697 - shape: - - [20, 22, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_269.nii.gz - image_foreground_stats: - intensity: - - max: 1266.0704345703125 - mean: 561.149169921875 - median: 537.3967895507812 - min: 36.43368148803711 - percentile: [182.1684112548828, 409.87890625, 746.8904418945312, 1102.118896484375] - percentile_00_5: 182.1684112548828 - percentile_10_0: 409.87890625 - percentile_90_0: 746.8904418945312 - percentile_99_5: 1102.118896484375 - stdev: 148.75927734375 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 37] - intensity: - - max: 2987.561767578125 - mean: 761.5499877929688 - median: 737.7820434570312 - min: 0.0 - percentile: [54.65052032470703, 364.3368225097656, 1211.419921875, 1366.2630615234375] - percentile_00_5: 54.65052032470703 - percentile_10_0: 364.3368225097656 - percentile_90_0: 1211.419921875 - percentile_99_5: 1366.2630615234375 - stdev: 321.4253234863281 - shape: - - [35, 49, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_269.nii.gz - label_stats: - image_intensity: - - max: 1266.0704345703125 - mean: 561.149169921875 - median: 537.3967895507812 - min: 36.43368148803711 - percentile: [182.1684112548828, 409.87890625, 746.8904418945312, 1102.118896484375] - percentile_00_5: 182.1684112548828 - percentile_10_0: 409.87890625 - percentile_90_0: 746.8904418945312 - percentile_99_5: 1102.118896484375 - stdev: 148.75927734375 - label: - - image_intensity: - - max: 2987.561767578125 - mean: 773.033203125 - median: 765.1072998046875 - min: 0.0 - percentile: [54.65052032470703, 364.3368225097656, 1211.419921875, 1366.2630615234375] - percentile_00_5: 54.65052032470703 - percentile_10_0: 364.3368225097656 - percentile_90_0: 1211.419921875 - percentile_99_5: 1366.2630615234375 - stdev: 324.858642578125 - ncomponents: 1 - pixel_percentage: 0.9458041191101074 - shape: - - [35, 49, 37] - - image_intensity: - - max: 1211.419921875 - mean: 550.5128784179688 - median: 537.3967895507812 - min: 36.43368148803711 - percentile: [133.1651153564453, 409.87890625, 719.565185546875, 1029.25146484375] - percentile_00_5: 133.1651153564453 - percentile_10_0: 409.87890625 - percentile_90_0: 719.565185546875 - percentile_99_5: 1029.25146484375 - stdev: 132.73135375976562 - ncomponents: 1 - pixel_percentage: 0.02718461863696575 - shape: - - [21, 17, 15] - - image_intensity: - - max: 1266.0704345703125 - mean: 571.8536376953125 - median: 546.5052490234375 - min: 72.86736297607422 - percentile: [223.7483367919922, 400.7705078125, 792.4325561523438, 1111.227294921875] - percentile_00_5: 223.7483367919922 - percentile_10_0: 400.7705078125 - percentile_90_0: 792.4325561523438 - percentile_99_5: 1111.227294921875 - stdev: 162.6085662841797 - ncomponents: 1 - pixel_percentage: 0.027011267840862274 - shape: - - [22, 23, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_277.nii.gz - image_foreground_stats: - intensity: - - max: 958.1455688476562 - mean: 430.1173095703125 - median: 409.5299377441406 - min: 139.0856475830078 - percentile: [200.9014892578125, 301.35223388671875, 571.7965087890625, 884.6241455078125] - percentile_00_5: 200.9014892578125 - percentile_10_0: 301.35223388671875 - percentile_90_0: 571.7965087890625 - percentile_99_5: 884.6241455078125 - stdev: 115.2838134765625 - image_stats: - channels: 1 - cropped_shape: - - [33, 59, 29] - intensity: - - max: 1900.837158203125 - mean: 567.2924194335938 - median: 556.3425903320312 - min: 0.0 - percentile: [30.907920837402344, 208.6284637451172, 919.5106201171875, 1058.5963134765625] - percentile_00_5: 30.907920837402344 - percentile_10_0: 208.6284637451172 - percentile_90_0: 919.5106201171875 - percentile_99_5: 1058.5963134765625 - stdev: 265.82025146484375 - shape: - - [33, 59, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_277.nii.gz - label_stats: - image_intensity: - - max: 958.1455688476562 - mean: 430.1173095703125 - median: 409.5299377441406 - min: 139.0856475830078 - percentile: [200.9014892578125, 301.35223388671875, 571.7965087890625, 884.6241455078125] - percentile_00_5: 200.9014892578125 - percentile_10_0: 301.35223388671875 - percentile_90_0: 571.7965087890625 - percentile_99_5: 884.6241455078125 - stdev: 115.2838134765625 - label: - - image_intensity: - - max: 1900.837158203125 - mean: 575.8182983398438 - median: 587.25048828125 - min: 0.0 - percentile: [30.907920837402344, 193.17449951171875, 927.2376098632812, 1066.3232421875] - percentile_00_5: 30.907920837402344 - percentile_10_0: 193.17449951171875 - percentile_90_0: 927.2376098632812 - percentile_99_5: 1066.3232421875 - stdev: 270.15533447265625 - ncomponents: 1 - pixel_percentage: 0.9414837956428528 - shape: - - [33, 59, 29] - - image_intensity: - - max: 888.6027221679688 - mean: 425.53094482421875 - median: 417.2569274902344 - min: 139.0856475830078 - percentile: [204.53317260742188, 309.0792236328125, 564.069580078125, 738.1586303710938] - percentile_00_5: 204.53317260742188 - percentile_10_0: 309.0792236328125 - percentile_90_0: 564.069580078125 - percentile_99_5: 738.1586303710938 - stdev: 103.8145751953125 - ncomponents: 1 - pixel_percentage: 0.03001965954899788 - shape: - - [20, 21, 12] - - image_intensity: - - max: 958.1455688476562 - mean: 434.94879150390625 - median: 409.5299377441406 - min: 139.0856475830078 - percentile: [200.9014892578125, 301.35223388671875, 587.25048828125, 911.78369140625] - percentile_00_5: 200.9014892578125 - percentile_10_0: 301.35223388671875 - percentile_90_0: 587.25048828125 - percentile_99_5: 911.78369140625 - stdev: 126.063720703125 - ncomponents: 1 - pixel_percentage: 0.02849653735756874 - shape: - - [19, 27, 15] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_318.nii.gz - image_foreground_stats: - intensity: - - max: 1146.9981689453125 - mean: 489.7340087890625 - median: 469.22650146484375 - min: 43.4468994140625 - percentile: [199.85572814941406, 338.88580322265625, 669.0822143554688, 947.1423950195312] - percentile_00_5: 199.85572814941406 - percentile_10_0: 338.88580322265625 - percentile_90_0: 669.0822143554688 - percentile_99_5: 947.1423950195312 - stdev: 139.6933135986328 - image_stats: - channels: 1 - cropped_shape: - - [37, 51, 33] - intensity: - - max: 3840.705810546875 - mean: 653.2035522460938 - median: 643.0140991210938 - min: 0.0 - percentile: [43.4468994140625, 269.3707580566406, 1025.3468017578125, 1233.8919677734375] - percentile_00_5: 43.4468994140625 - percentile_10_0: 269.3707580566406 - percentile_90_0: 1025.3468017578125 - percentile_99_5: 1233.8919677734375 - stdev: 294.1993103027344 - shape: - - [37, 51, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_318.nii.gz - label_stats: - image_intensity: - - max: 1146.9981689453125 - mean: 489.7340087890625 - median: 469.22650146484375 - min: 43.4468994140625 - percentile: [199.85572814941406, 338.88580322265625, 669.0822143554688, 947.1423950195312] - percentile_00_5: 199.85572814941406 - percentile_10_0: 338.88580322265625 - percentile_90_0: 669.0822143554688 - percentile_99_5: 947.1423950195312 - stdev: 139.6933135986328 - label: - - image_intensity: - - max: 3840.705810546875 - mean: 662.9857788085938 - median: 669.0822143554688 - min: 0.0 - percentile: [43.4468994140625, 260.681396484375, 1034.0361328125, 1242.581298828125] - percentile_00_5: 43.4468994140625 - percentile_10_0: 260.681396484375 - percentile_90_0: 1034.0361328125 - percentile_99_5: 1242.581298828125 - stdev: 298.1109619140625 - ncomponents: 1 - pixel_percentage: 0.9435371160507202 - shape: - - [37, 51, 33] - - image_intensity: - - max: 1060.1043701171875 - mean: 513.7568969726562 - median: 495.2946472167969 - min: 43.4468994140625 - percentile: [225.9238739013672, 356.2645568847656, 695.150390625, 970.7772216796875] - percentile_00_5: 225.9238739013672 - percentile_10_0: 356.2645568847656 - percentile_90_0: 695.150390625 - percentile_99_5: 970.7772216796875 - stdev: 138.53636169433594 - ncomponents: 1 - pixel_percentage: 0.032583385705947876 - shape: - - [22, 21, 15] - - image_intensity: - - max: 1146.9981689453125 - mean: 456.95501708984375 - median: 434.468994140625 - min: 139.0300750732422 - percentile: [186.21340942382812, 312.8176574707031, 634.32470703125, 903.6954956054688] - percentile_00_5: 186.21340942382812 - percentile_10_0: 312.8176574707031 - percentile_90_0: 634.32470703125 - percentile_99_5: 903.6954956054688 - stdev: 134.50479125976562 - ncomponents: 1 - pixel_percentage: 0.02387949451804161 - shape: - - [25, 19, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_265.nii.gz - image_foreground_stats: - intensity: - - max: 895.892822265625 - mean: 424.09954833984375 - median: 413.000244140625 - min: 19.06155014038086 - percentile: [101.6615982055664, 298.6309509277344, 571.8464965820312, 781.5235595703125] - percentile_00_5: 101.6615982055664 - percentile_10_0: 298.6309509277344 - percentile_90_0: 571.8464965820312 - percentile_99_5: 781.5235595703125 - stdev: 113.05168914794922 - image_stats: - channels: 1 - cropped_shape: - - [31, 54, 34] - intensity: - - max: 2007.8165283203125 - mean: 509.0809020996094 - median: 533.723388671875 - min: 0.0 - percentile: [19.06155014038086, 114.36930084228516, 826.00048828125, 972.1390380859375] - percentile_00_5: 19.06155014038086 - percentile_10_0: 114.36930084228516 - percentile_90_0: 826.00048828125 - percentile_99_5: 972.1390380859375 - stdev: 253.69354248046875 - shape: - - [31, 54, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_265.nii.gz - label_stats: - image_intensity: - - max: 895.892822265625 - mean: 424.09954833984375 - median: 413.000244140625 - min: 19.06155014038086 - percentile: [101.6615982055664, 298.6309509277344, 571.8464965820312, 781.5235595703125] - percentile_00_5: 101.6615982055664 - percentile_10_0: 298.6309509277344 - percentile_90_0: 571.8464965820312 - percentile_99_5: 781.5235595703125 - stdev: 113.05168914794922 - label: - - image_intensity: - - max: 2007.8165283203125 - mean: 513.9912109375 - median: 546.4310913085938 - min: 0.0 - percentile: [19.06155014038086, 114.36930084228516, 832.3543090820312, 978.2943115234375] - percentile_00_5: 19.06155014038086 - percentile_10_0: 114.36930084228516 - percentile_90_0: 832.3543090820312 - percentile_99_5: 978.2943115234375 - stdev: 258.6490173339844 - ncomponents: 1 - pixel_percentage: 0.9453756213188171 - shape: - - [31, 54, 34] - - image_intensity: - - max: 845.06201171875 - mean: 418.8693542480469 - median: 406.6463928222656 - min: 50.8307991027832 - percentile: [103.37713623046875, 285.9232482910156, 565.4926147460938, 730.6927490234375] - percentile_00_5: 103.37713623046875 - percentile_10_0: 285.9232482910156 - percentile_90_0: 565.4926147460938 - percentile_99_5: 730.6927490234375 - stdev: 111.59127044677734 - ncomponents: 1 - pixel_percentage: 0.025563988834619522 - shape: - - [19, 18, 12] - - image_intensity: - - max: 895.892822265625 - mean: 428.7004699707031 - median: 419.3540954589844 - min: 19.06155014038086 - percentile: [101.6615982055664, 304.98480224609375, 571.8464965820312, 806.93896484375] - percentile_00_5: 101.6615982055664 - percentile_10_0: 304.98480224609375 - percentile_90_0: 571.8464965820312 - percentile_99_5: 806.93896484375 - stdev: 114.12297821044922 - ncomponents: 1 - pixel_percentage: 0.029060369357466698 - shape: - - [20, 26, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_330.nii.gz - image_foreground_stats: - intensity: - - max: 834.427978515625 - mean: 342.95977783203125 - median: 321.8507995605469 - min: 11.92039966583252 - percentile: [65.56219482421875, 208.60699462890625, 506.6169738769531, 774.9453125] - percentile_00_5: 65.56219482421875 - percentile_10_0: 208.60699462890625 - percentile_90_0: 506.6169738769531 - percentile_99_5: 774.9453125 - stdev: 126.40260314941406 - image_stats: - channels: 1 - cropped_shape: - - [35, 55, 33] - intensity: - - max: 3099.303955078125 - mean: 469.9204406738281 - median: 476.81597900390625 - min: 0.0 - percentile: [29.80099868774414, 172.84579467773438, 733.1045532226562, 1140.656494140625] - percentile_00_5: 29.80099868774414 - percentile_10_0: 172.84579467773438 - percentile_90_0: 733.1045532226562 - percentile_99_5: 1140.656494140625 - stdev: 230.31602478027344 - shape: - - [35, 55, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_330.nii.gz - label_stats: - image_intensity: - - max: 834.427978515625 - mean: 342.95977783203125 - median: 321.8507995605469 - min: 11.92039966583252 - percentile: [65.56219482421875, 208.60699462890625, 506.6169738769531, 774.9453125] - percentile_00_5: 65.56219482421875 - percentile_10_0: 208.60699462890625 - percentile_90_0: 506.6169738769531 - percentile_99_5: 774.9453125 - stdev: 126.40260314941406 - label: - - image_intensity: - - max: 3099.303955078125 - mean: 478.44525146484375 - median: 500.65679931640625 - min: 0.0 - percentile: [29.80099868774414, 166.88558959960938, 733.1045532226562, 1168.19921875] - percentile_00_5: 29.80099868774414 - percentile_10_0: 166.88558959960938 - percentile_90_0: 733.1045532226562 - percentile_99_5: 1168.19921875 - stdev: 233.19390869140625 - ncomponents: 1 - pixel_percentage: 0.937079906463623 - shape: - - [35, 55, 33] - - image_intensity: - - max: 834.427978515625 - mean: 342.9998779296875 - median: 327.8110046386719 - min: 11.92039966583252 - percentile: [60.52582550048828, 214.56719970703125, 482.77618408203125, 792.7066040039062] - percentile_00_5: 60.52582550048828 - percentile_10_0: 214.56719970703125 - percentile_90_0: 482.77618408203125 - percentile_99_5: 792.7066040039062 - stdev: 121.12010192871094 - ncomponents: 1 - pixel_percentage: 0.035135772079229355 - shape: - - [25, 19, 16] - - image_intensity: - - max: 762.9055786132812 - mean: 342.9090576171875 - median: 315.8905944824219 - min: 11.92039966583252 - percentile: [70.4495620727539, 196.6865997314453, 542.378173828125, 733.1045532226562] - percentile_00_5: 70.4495620727539 - percentile_10_0: 196.6865997314453 - percentile_90_0: 542.378173828125 - percentile_99_5: 733.1045532226562 - stdev: 132.78219604492188 - ncomponents: 1 - pixel_percentage: 0.027784336358308792 - shape: - - [19, 25, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_087.nii.gz - image_foreground_stats: - intensity: - - max: 103.0 - mean: 49.31804656982422 - median: 48.0 - min: 15.0 - percentile: [25.0, 37.0, 64.0, 92.469970703125] - percentile_00_5: 25.0 - percentile_10_0: 37.0 - percentile_90_0: 64.0 - percentile_99_5: 92.469970703125 - stdev: 11.17258071899414 - image_stats: - channels: 1 - cropped_shape: - - [35, 55, 32] - intensity: - - max: 180.0 - mean: 64.32040405273438 - median: 66.0 - min: 2.0 - percentile: [8.0, 31.0, 96.0, 108.0] - percentile_00_5: 8.0 - percentile_10_0: 31.0 - percentile_90_0: 96.0 - percentile_99_5: 108.0 - stdev: 24.828886032104492 - shape: - - [35, 55, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_087.nii.gz - label_stats: - image_intensity: - - max: 103.0 - mean: 49.31804656982422 - median: 48.0 - min: 15.0 - percentile: [25.0, 37.0, 64.0, 92.469970703125] - percentile_00_5: 25.0 - percentile_10_0: 37.0 - percentile_90_0: 64.0 - percentile_99_5: 92.469970703125 - stdev: 11.17258071899414 - label: - - image_intensity: - - max: 180.0 - mean: 65.28103637695312 - median: 68.0 - min: 2.0 - percentile: [8.0, 30.0, 97.0, 108.0] - percentile_00_5: 8.0 - percentile_10_0: 30.0 - percentile_90_0: 97.0 - percentile_99_5: 108.0 - stdev: 25.15194320678711 - ncomponents: 1 - pixel_percentage: 0.9398214221000671 - shape: - - [35, 55, 32] - - image_intensity: - - max: 88.0 - mean: 49.41904067993164 - median: 48.0 - min: 24.0 - percentile: [30.65999984741211, 38.0, 63.0, 78.0] - percentile_00_5: 30.65999984741211 - percentile_10_0: 38.0 - percentile_90_0: 63.0 - percentile_99_5: 78.0 - stdev: 9.808950424194336 - ncomponents: 1 - pixel_percentage: 0.03137987107038498 - shape: - - [19, 18, 14] - - image_intensity: - - max: 103.0 - mean: 49.208003997802734 - median: 47.0 - min: 15.0 - percentile: [22.0, 36.0, 64.0, 95.27001953125] - percentile_00_5: 22.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 95.27001953125 - stdev: 12.489143371582031 - ncomponents: 1 - pixel_percentage: 0.028798701241612434 - shape: - - [17, 26, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_230.nii.gz - image_foreground_stats: - intensity: - - max: 723.9269409179688 - mean: 332.20819091796875 - median: 318.74395751953125 - min: 5.402440071105957 - percentile: [134.08856201171875, 232.30491638183594, 443.0000915527344, 653.6952514648438] - percentile_00_5: 134.08856201171875 - percentile_10_0: 232.30491638183594 - percentile_90_0: 443.0000915527344 - percentile_99_5: 653.6952514648438 - stdev: 88.19351959228516 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 37] - intensity: - - max: 1458.6588134765625 - mean: 454.0013122558594 - median: 464.6098327636719 - min: 0.0 - percentile: [27.01219940185547, 183.68296813964844, 707.7196655273438, 799.5611572265625] - percentile_00_5: 27.01219940185547 - percentile_10_0: 183.68296813964844 - percentile_90_0: 707.7196655273438 - percentile_99_5: 799.5611572265625 - stdev: 198.5008544921875 - shape: - - [34, 49, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_230.nii.gz - label_stats: - image_intensity: - - max: 723.9269409179688 - mean: 332.20819091796875 - median: 318.74395751953125 - min: 5.402440071105957 - percentile: [134.08856201171875, 232.30491638183594, 443.0000915527344, 653.6952514648438] - percentile_00_5: 134.08856201171875 - percentile_10_0: 232.30491638183594 - percentile_90_0: 443.0000915527344 - percentile_99_5: 653.6952514648438 - stdev: 88.19351959228516 - label: - - image_intensity: - - max: 1458.6588134765625 - mean: 460.5931701660156 - median: 480.8171691894531 - min: 0.0 - percentile: [27.01219940185547, 178.280517578125, 707.7196655273438, 799.5611572265625] - percentile_00_5: 27.01219940185547 - percentile_10_0: 178.280517578125 - percentile_90_0: 707.7196655273438 - percentile_99_5: 799.5611572265625 - stdev: 200.66871643066406 - ncomponents: 1 - pixel_percentage: 0.9486551284790039 - shape: - - [34, 49, 37] - - image_intensity: - - max: 723.9269409179688 - mean: 334.3610534667969 - median: 329.5488586425781 - min: 5.402440071105957 - percentile: [118.85368347167969, 243.10980224609375, 432.1951904296875, 580.491943359375] - percentile_00_5: 118.85368347167969 - percentile_10_0: 243.10980224609375 - percentile_90_0: 432.1951904296875 - percentile_99_5: 580.491943359375 - stdev: 79.44342803955078 - ncomponents: 1 - pixel_percentage: 0.025242529809474945 - shape: - - [19, 16, 14] - - image_intensity: - - max: 718.5245361328125 - mean: 330.1263427734375 - median: 313.3415222167969 - min: 54.02439880371094 - percentile: [151.26832580566406, 226.90248107910156, 459.2073974609375, 669.686279296875] - percentile_00_5: 151.26832580566406 - percentile_10_0: 226.90248107910156 - percentile_90_0: 459.2073974609375 - percentile_99_5: 669.686279296875 - stdev: 95.85301971435547 - ncomponents: 1 - pixel_percentage: 0.026102332398295403 - shape: - - [20, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_199.nii.gz - image_foreground_stats: - intensity: - - max: 415736.8125 - mean: 189918.921875 - median: 179598.3125 - min: 46562.5234375 - percentile: [86473.2578125, 133035.78125, 259419.78125, 356901.9375] - percentile_00_5: 86473.2578125 - percentile_10_0: 133035.78125 - percentile_90_0: 259419.78125 - percentile_99_5: 356901.9375 - stdev: 50569.71875 - image_stats: - channels: 1 - cropped_shape: - - [37, 52, 26] - intensity: - - max: 548772.625 - mean: 239031.328125 - median: 236138.515625 - min: 0.0 - percentile: [9977.68359375, 79821.46875, 395781.4375, 462299.34375] - percentile_00_5: 9977.68359375 - percentile_10_0: 79821.46875 - percentile_90_0: 395781.4375 - percentile_99_5: 462299.34375 - stdev: 114870.359375 - shape: - - [37, 52, 26] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_199.nii.gz - label_stats: - image_intensity: - - max: 415736.8125 - mean: 189918.921875 - median: 179598.3125 - min: 46562.5234375 - percentile: [86473.2578125, 133035.78125, 259419.78125, 356901.9375] - percentile_00_5: 86473.2578125 - percentile_10_0: 133035.78125 - percentile_90_0: 259419.78125 - percentile_99_5: 356901.9375 - stdev: 50569.71875 - label: - - image_intensity: - - max: 548772.625 - mean: 241691.125 - median: 242790.296875 - min: 0.0 - percentile: [9977.68359375, 76495.578125, 395781.4375, 462299.34375] - percentile_00_5: 9977.68359375 - percentile_10_0: 76495.578125 - percentile_90_0: 395781.4375 - percentile_99_5: 462299.34375 - stdev: 116763.1015625 - ncomponents: 1 - pixel_percentage: 0.9486246705055237 - shape: - - [37, 52, 26] - - image_intensity: - - max: 355870.71875 - mean: 187783.8125 - median: 182924.203125 - min: 46562.5234375 - percentile: [73635.3046875, 129709.890625, 249442.09375, 326652.625] - percentile_00_5: 73635.3046875 - percentile_10_0: 129709.890625 - percentile_90_0: 249442.09375 - percentile_99_5: 326652.625 - stdev: 47912.109375 - ncomponents: 1 - pixel_percentage: 0.02314888872206211 - shape: - - [17, 13, 13] - - image_intensity: - - max: 415736.8125 - mean: 191669.984375 - median: 179598.3125 - min: 86473.2578125 - percentile: [103285.65625, 136361.671875, 269397.46875, 375459.875] - percentile_00_5: 103285.65625 - percentile_10_0: 136361.671875 - percentile_90_0: 269397.46875 - percentile_99_5: 375459.875 - stdev: 52584.57421875 - ncomponents: 1 - pixel_percentage: 0.028226451948285103 - shape: - - [20, 27, 12] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_099.nii.gz - image_foreground_stats: - intensity: - - max: 919.1619262695312 - mean: 447.0655822753906 - median: 432.54681396484375 - min: 23.172149658203125 - percentile: [154.4810028076172, 301.2379455566406, 610.199951171875, 787.8530883789062] - percentile_00_5: 154.4810028076172 - percentile_10_0: 301.2379455566406 - percentile_90_0: 610.199951171875 - percentile_99_5: 787.8530883789062 - stdev: 122.59172058105469 - image_stats: - channels: 1 - cropped_shape: - - [33, 52, 27] - intensity: - - max: 1197.227783203125 - mean: 555.216552734375 - median: 563.8556518554688 - min: 0.0 - percentile: [30.89620018005371, 208.54934692382812, 872.817626953125, 1027.2987060546875] - percentile_00_5: 30.89620018005371 - percentile_10_0: 208.54934692382812 - percentile_90_0: 872.817626953125 - percentile_99_5: 1027.2987060546875 - stdev: 247.91482543945312 - shape: - - [33, 52, 27] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_099.nii.gz - label_stats: - image_intensity: - - max: 919.1619262695312 - mean: 447.0655822753906 - median: 432.54681396484375 - min: 23.172149658203125 - percentile: [154.4810028076172, 301.2379455566406, 610.199951171875, 787.8530883789062] - percentile_00_5: 154.4810028076172 - percentile_10_0: 301.2379455566406 - percentile_90_0: 610.199951171875 - percentile_99_5: 787.8530883789062 - stdev: 122.59172058105469 - label: - - image_intensity: - - max: 1197.227783203125 - mean: 561.4763793945312 - median: 587.02783203125 - min: 0.0 - percentile: [30.89620018005371, 200.82530212402344, 872.817626953125, 1027.2987060546875] - percentile_00_5: 30.89620018005371 - percentile_10_0: 200.82530212402344 - percentile_90_0: 872.817626953125 - percentile_99_5: 1027.2987060546875 - stdev: 251.85935974121094 - ncomponents: 1 - pixel_percentage: 0.945286214351654 - shape: - - [33, 52, 27] - - image_intensity: - - max: 857.3695678710938 - mean: 434.4222717285156 - median: 424.82275390625 - min: 23.172149658203125 - percentile: [139.03289794921875, 285.78985595703125, 594.7518310546875, 764.6809692382812] - percentile_00_5: 139.03289794921875 - percentile_10_0: 285.78985595703125 - percentile_90_0: 594.7518310546875 - percentile_99_5: 764.6809692382812 - stdev: 121.58951568603516 - ncomponents: 1 - pixel_percentage: 0.027022359892725945 - shape: - - [16, 16, 11] - - image_intensity: - - max: 919.1619262695312 - mean: 459.4033508300781 - median: 447.9949035644531 - min: 146.7569580078125 - percentile: [211.71621704101562, 310.5068054199219, 625.6480712890625, 803.3012084960938] - percentile_00_5: 211.71621704101562 - percentile_10_0: 310.5068054199219 - percentile_90_0: 625.6480712890625 - percentile_99_5: 803.3012084960938 - stdev: 122.30831146240234 - ncomponents: 1 - pixel_percentage: 0.027691444382071495 - shape: - - [13, 25, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_353.nii.gz - image_foreground_stats: - intensity: - - max: 761.9340209960938 - mean: 371.3425598144531 - median: 355.5692138671875 - min: 57.145050048828125 - percentile: [157.27587890625, 266.6769104003906, 501.6065673828125, 685.7406005859375] - percentile_00_5: 157.27587890625 - percentile_10_0: 266.6769104003906 - percentile_90_0: 501.6065673828125 - percentile_99_5: 685.7406005859375 - stdev: 97.31470489501953 - image_stats: - channels: 1 - cropped_shape: - - [32, 51, 31] - intensity: - - max: 2419.140380859375 - mean: 464.3216247558594 - median: 469.85931396484375 - min: 0.0 - percentile: [25.39780044555664, 171.43515014648438, 717.4878540039062, 819.0790405273438] - percentile_00_5: 25.39780044555664 - percentile_10_0: 171.43515014648438 - percentile_90_0: 717.4878540039062 - percentile_99_5: 819.0790405273438 - stdev: 205.36114501953125 - shape: - - [32, 51, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_353.nii.gz - label_stats: - image_intensity: - - max: 761.9340209960938 - mean: 371.3425598144531 - median: 355.5692138671875 - min: 57.145050048828125 - percentile: [157.27587890625, 266.6769104003906, 501.6065673828125, 685.7406005859375] - percentile_00_5: 157.27587890625 - percentile_10_0: 266.6769104003906 - percentile_90_0: 501.6065673828125 - percentile_99_5: 685.7406005859375 - stdev: 97.31470489501953 - label: - - image_intensity: - - max: 2419.140380859375 - mean: 469.6763916015625 - median: 488.90765380859375 - min: 0.0 - percentile: [19.048351287841797, 158.7362518310547, 717.4878540039062, 819.0790405273438] - percentile_00_5: 19.048351287841797 - percentile_10_0: 158.7362518310547 - percentile_90_0: 717.4878540039062 - percentile_99_5: 819.0790405273438 - stdev: 208.63858032226562 - ncomponents: 1 - pixel_percentage: 0.9455447793006897 - shape: - - [32, 51, 31] - - image_intensity: - - max: 749.235107421875 - mean: 362.96417236328125 - median: 355.5692138671875 - min: 63.49449920654297 - percentile: [152.83126831054688, 266.6769104003906, 476.2087707519531, 634.5009155273438] - percentile_00_5: 152.83126831054688 - percentile_10_0: 266.6769104003906 - percentile_90_0: 476.2087707519531 - percentile_99_5: 634.5009155273438 - stdev: 87.85298156738281 - ncomponents: 1 - pixel_percentage: 0.02796884812414646 - shape: - - [20, 17, 12] - - image_intensity: - - max: 761.9340209960938 - mean: 380.1899108886719 - median: 361.9186706542969 - min: 57.145050048828125 - percentile: [158.7362518310547, 266.6769104003906, 539.7032470703125, 698.4395141601562] - percentile_00_5: 158.7362518310547 - percentile_10_0: 266.6769104003906 - percentile_90_0: 539.7032470703125 - percentile_99_5: 698.4395141601562 - stdev: 105.67789459228516 - ncomponents: 1 - pixel_percentage: 0.02648640051484108 - shape: - - [20, 24, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_253.nii.gz - image_foreground_stats: - intensity: - - max: 1118.748046875 - mean: 536.9090576171875 - median: 519.7333374023438 - min: 96.89944458007812 - percentile: [238.8130645751953, 378.7887268066406, 713.5322265625, 968.994384765625] - percentile_00_5: 238.8130645751953 - percentile_10_0: 378.7887268066406 - percentile_90_0: 713.5322265625 - percentile_99_5: 968.994384765625 - stdev: 136.1533966064453 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 31] - intensity: - - max: 3523.615966796875 - mean: 694.6358642578125 - median: 669.487060546875 - min: 0.0 - percentile: [52.85424041748047, 325.9344787597656, 1092.3209228515625, 1277.310791015625] - percentile_00_5: 52.85424041748047 - percentile_10_0: 325.9344787597656 - percentile_90_0: 1092.3209228515625 - percentile_99_5: 1277.310791015625 - stdev: 299.05560302734375 - shape: - - [34, 51, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_253.nii.gz - label_stats: - image_intensity: - - max: 1118.748046875 - mean: 536.9090576171875 - median: 519.7333374023438 - min: 96.89944458007812 - percentile: [238.8130645751953, 378.7887268066406, 713.5322265625, 968.994384765625] - percentile_00_5: 238.8130645751953 - percentile_10_0: 378.7887268066406 - percentile_90_0: 713.5322265625 - percentile_99_5: 968.994384765625 - stdev: 136.1533966064453 - label: - - image_intensity: - - max: 3523.615966796875 - mean: 706.71240234375 - median: 695.9141845703125 - min: 0.0 - percentile: [49.77102279663086, 308.31640625, 1101.1300048828125, 1286.119873046875] - percentile_00_5: 49.77102279663086 - percentile_10_0: 308.31640625 - percentile_90_0: 1101.1300048828125 - percentile_99_5: 1286.119873046875 - stdev: 304.6504211425781 - ncomponents: 1 - pixel_percentage: 0.9288797378540039 - shape: - - [34, 51, 31] - - image_intensity: - - max: 995.4215087890625 - mean: 529.69287109375 - median: 510.92431640625 - min: 96.89944458007812 - percentile: [223.92579650878906, 369.97967529296875, 713.5322265625, 924.94921875] - percentile_00_5: 223.92579650878906 - percentile_10_0: 369.97967529296875 - percentile_90_0: 713.5322265625 - percentile_99_5: 924.94921875 - stdev: 135.2327880859375 - ncomponents: 1 - pixel_percentage: 0.04358745366334915 - shape: - - [24, 19, 15] - - image_intensity: - - max: 1118.748046875 - mean: 548.3330078125 - median: 528.5424194335938 - min: 176.18080139160156 - percentile: [255.462158203125, 396.40679931640625, 722.34130859375, 1009.5598754882812] - percentile_00_5: 255.462158203125 - percentile_10_0: 396.40679931640625 - percentile_90_0: 722.34130859375 - percentile_99_5: 1009.5598754882812 - stdev: 136.82225036621094 - ncomponents: 1 - pixel_percentage: 0.02753283455967903 - shape: - - [18, 20, 14] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_222.nii.gz - image_foreground_stats: - intensity: - - max: 85.0 - mean: 42.53278732299805 - median: 42.0 - min: 11.0 - percentile: [14.0, 26.0, 60.0, 75.0] - percentile_00_5: 14.0 - percentile_10_0: 26.0 - percentile_90_0: 60.0 - percentile_99_5: 75.0 - stdev: 12.974384307861328 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 36] - intensity: - - max: 136.0 - mean: 55.98877716064453 - median: 55.0 - min: 3.0 - percentile: [8.0, 20.0, 90.0, 114.0] - percentile_00_5: 8.0 - percentile_10_0: 20.0 - percentile_90_0: 90.0 - percentile_99_5: 114.0 - stdev: 26.314069747924805 - shape: - - [34, 49, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_222.nii.gz - label_stats: - image_intensity: - - max: 85.0 - mean: 42.53278732299805 - median: 42.0 - min: 11.0 - percentile: [14.0, 26.0, 60.0, 75.0] - percentile_00_5: 14.0 - percentile_10_0: 26.0 - percentile_90_0: 60.0 - percentile_99_5: 75.0 - stdev: 12.974384307861328 - label: - - image_intensity: - - max: 136.0 - mean: 56.61915969848633 - median: 57.0 - min: 3.0 - percentile: [8.0, 20.0, 91.0, 114.0] - percentile_00_5: 8.0 - percentile_10_0: 20.0 - percentile_90_0: 91.0 - percentile_99_5: 114.0 - stdev: 26.610210418701172 - ncomponents: 1 - pixel_percentage: 0.9552487730979919 - shape: - - [34, 49, 36] - - image_intensity: - - max: 76.0 - mean: 39.69189453125 - median: 39.0 - min: 11.0 - percentile: [14.0, 24.0, 57.0, 69.0] - percentile_00_5: 14.0 - percentile_10_0: 24.0 - percentile_90_0: 57.0 - percentile_99_5: 69.0 - stdev: 12.116634368896484 - ncomponents: 1 - pixel_percentage: 0.02819461189210415 - shape: - - [21, 16, 13] - - image_intensity: - - max: 85.0 - mean: 47.3705940246582 - median: 47.0 - min: 12.0 - percentile: [14.0, 31.0, 65.0, 80.0] - percentile_00_5: 14.0 - percentile_10_0: 31.0 - percentile_90_0: 65.0 - percentile_99_5: 80.0 - stdev: 12.955172538757324 - ncomponents: 1 - pixel_percentage: 0.016556622460484505 - shape: - - [13, 17, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_095.nii.gz - image_foreground_stats: - intensity: - - max: 823.018798828125 - mean: 352.78875732421875 - median: 340.55950927734375 - min: 35.47494888305664 - percentile: [134.8048095703125, 241.22964477539062, 482.45928955078125, 653.3072509765625] - percentile_00_5: 134.8048095703125 - percentile_10_0: 241.22964477539062 - percentile_90_0: 482.45928955078125 - percentile_99_5: 653.3072509765625 - stdev: 97.66397857666016 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 39] - intensity: - - max: 1972.4071044921875 - mean: 474.8093566894531 - median: 482.45928955078125 - min: 0.0 - percentile: [35.47494888305664, 205.75469970703125, 723.68896484375, 872.6837158203125] - percentile_00_5: 35.47494888305664 - percentile_10_0: 205.75469970703125 - percentile_90_0: 723.68896484375 - percentile_99_5: 872.6837158203125 - stdev: 199.72964477539062 - shape: - - [34, 49, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_095.nii.gz - label_stats: - image_intensity: - - max: 823.018798828125 - mean: 352.78875732421875 - median: 340.55950927734375 - min: 35.47494888305664 - percentile: [134.8048095703125, 241.22964477539062, 482.45928955078125, 653.3072509765625] - percentile_00_5: 134.8048095703125 - percentile_10_0: 241.22964477539062 - percentile_90_0: 482.45928955078125 - percentile_99_5: 653.3072509765625 - stdev: 97.66397857666016 - label: - - image_intensity: - - max: 1972.4071044921875 - mean: 482.3572998046875 - median: 503.7442626953125 - min: 0.0 - percentile: [35.47494888305664, 198.6597137451172, 723.68896484375, 872.6837158203125] - percentile_00_5: 35.47494888305664 - percentile_10_0: 198.6597137451172 - percentile_90_0: 723.68896484375 - percentile_99_5: 872.6837158203125 - stdev: 201.96922302246094 - ncomponents: 1 - pixel_percentage: 0.941745936870575 - shape: - - [34, 49, 39] - - image_intensity: - - max: 652.7390747070312 - mean: 344.1150817871094 - median: 340.55950927734375 - min: 70.94989776611328 - percentile: [127.7098159790039, 234.13465881347656, 468.2693176269531, 567.5991821289062] - percentile_00_5: 127.7098159790039 - percentile_10_0: 234.13465881347656 - percentile_90_0: 468.2693176269531 - percentile_99_5: 567.5991821289062 - stdev: 89.3750991821289 - ncomponents: 1 - pixel_percentage: 0.033721182495355606 - shape: - - [20, 18, 15] - - image_intensity: - - max: 823.018798828125 - mean: 364.7109375 - median: 354.7494812011719 - min: 35.47494888305664 - percentile: [148.99478149414062, 241.22964477539062, 510.8392639160156, 703.1497192382812] - percentile_00_5: 148.99478149414062 - percentile_10_0: 241.22964477539062 - percentile_90_0: 510.8392639160156 - percentile_99_5: 703.1497192382812 - stdev: 106.88170623779297 - ncomponents: 1 - pixel_percentage: 0.02453288994729519 - shape: - - [17, 20, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_322.nii.gz - image_foreground_stats: - intensity: - - max: 771.893310546875 - mean: 339.6101379394531 - median: 322.1286926269531 - min: 72.93479919433594 - percentile: [139.7917022705078, 218.8043975830078, 480.1540832519531, 668.5689697265625] - percentile_00_5: 139.7917022705078 - percentile_10_0: 218.8043975830078 - percentile_90_0: 480.1540832519531 - percentile_99_5: 668.5689697265625 - stdev: 104.36428833007812 - image_stats: - channels: 1 - cropped_shape: - - [38, 47, 37] - intensity: - - max: 2467.62744140625 - mean: 415.7384033203125 - median: 425.4530029296875 - min: 0.0 - percentile: [24.311599731445312, 164.10330200195312, 638.1795043945312, 796.2048950195312] - percentile_00_5: 24.311599731445312 - percentile_10_0: 164.10330200195312 - percentile_90_0: 638.1795043945312 - percentile_99_5: 796.2048950195312 - stdev: 185.8555450439453 - shape: - - [38, 47, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_322.nii.gz - label_stats: - image_intensity: - - max: 771.893310546875 - mean: 339.6101379394531 - median: 322.1286926269531 - min: 72.93479919433594 - percentile: [139.7917022705078, 218.8043975830078, 480.1540832519531, 668.5689697265625] - percentile_00_5: 139.7917022705078 - percentile_10_0: 218.8043975830078 - percentile_90_0: 480.1540832519531 - percentile_99_5: 668.5689697265625 - stdev: 104.36428833007812 - label: - - image_intensity: - - max: 2467.62744140625 - mean: 419.9317932128906 - median: 431.5308837890625 - min: 0.0 - percentile: [24.311599731445312, 158.025390625, 644.2573852539062, 796.2048950195312] - percentile_00_5: 24.311599731445312 - percentile_10_0: 158.025390625 - percentile_90_0: 644.2573852539062 - percentile_99_5: 796.2048950195312 - stdev: 188.43621826171875 - ncomponents: 1 - pixel_percentage: 0.947792112827301 - shape: - - [38, 47, 37] - - image_intensity: - - max: 771.893310546875 - mean: 361.20355224609375 - median: 346.4403076171875 - min: 72.93479919433594 - percentile: [145.20101928710938, 243.11599731445312, 487.447265625, 681.3932495117188] - percentile_00_5: 145.20101928710938 - percentile_10_0: 243.11599731445312 - percentile_90_0: 487.447265625 - percentile_99_5: 681.3932495117188 - stdev: 100.3365249633789 - ncomponents: 1 - pixel_percentage: 0.029947640374302864 - shape: - - [24, 19, 15] - - image_intensity: - - max: 698.95849609375 - mean: 310.5596008300781 - median: 285.6612854003906 - min: 103.32429504394531 - percentile: [129.76316833496094, 194.4927978515625, 467.998291015625, 623.8965454101562] - percentile_00_5: 129.76316833496094 - percentile_10_0: 194.4927978515625 - percentile_90_0: 467.998291015625 - percentile_99_5: 623.8965454101562 - stdev: 102.61524200439453 - ncomponents: 1 - pixel_percentage: 0.02226022258400917 - shape: - - [21, 19, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_195.nii.gz - image_foreground_stats: - intensity: - - max: 391272.0 - mean: 184049.796875 - median: 176072.40625 - min: 48909.0 - percentile: [82493.1796875, 130424.0, 251066.203125, 344645.28125] - percentile_00_5: 82493.1796875 - percentile_10_0: 130424.0 - percentile_90_0: 251066.203125 - percentile_99_5: 344645.28125 - stdev: 48297.94921875 - image_stats: - channels: 1 - cropped_shape: - - [33, 53, 28] - intensity: - - max: 736895.625 - mean: 239347.421875 - median: 231502.609375 - min: 0.0 - percentile: [19563.6015625, 104339.203125, 378229.625, 446702.21875] - percentile_00_5: 19563.6015625 - percentile_10_0: 104339.203125 - percentile_90_0: 378229.625 - percentile_99_5: 446702.21875 - stdev: 104526.4921875 - shape: - - [33, 53, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_195.nii.gz - label_stats: - image_intensity: - - max: 391272.0 - mean: 184049.796875 - median: 176072.40625 - min: 48909.0 - percentile: [82493.1796875, 130424.0, 251066.203125, 344645.28125] - percentile_00_5: 82493.1796875 - percentile_10_0: 130424.0 - percentile_90_0: 251066.203125 - percentile_99_5: 344645.28125 - stdev: 48297.94921875 - label: - - image_intensity: - - max: 736895.625 - mean: 243815.328125 - median: 244545.0 - min: 0.0 - percentile: [16303.0, 101078.6015625, 381490.21875, 446702.21875] - percentile_00_5: 16303.0 - percentile_10_0: 101078.6015625 - percentile_90_0: 381490.21875 - percentile_99_5: 446702.21875 - stdev: 106550.734375 - ncomponents: 1 - pixel_percentage: 0.9252430200576782 - shape: - - [33, 53, 28] - - image_intensity: - - max: 345623.625 - mean: 188874.390625 - median: 182593.609375 - min: 48909.0 - percentile: [75482.890625, 136945.203125, 251066.203125, 315789.0625] - percentile_00_5: 75482.890625 - percentile_10_0: 136945.203125 - percentile_90_0: 251066.203125 - percentile_99_5: 315789.0625 - stdev: 45424.4296875 - ncomponents: 1 - pixel_percentage: 0.03738871216773987 - shape: - - [20, 19, 12] - - image_intensity: - - max: 391272.0 - mean: 179222.546875 - median: 169551.203125 - min: 65212.0 - percentile: [85248.390625, 127163.40625, 244545.0, 358666.0] - percentile_00_5: 85248.390625 - percentile_10_0: 127163.40625 - percentile_90_0: 244545.0 - percentile_99_5: 358666.0 - stdev: 50552.54296875 - ncomponents: 1 - pixel_percentage: 0.037368293851614 - shape: - - [21, 25, 15] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_341.nii.gz - image_foreground_stats: - intensity: - - max: 841.9711303710938 - mean: 419.8479919433594 - median: 406.2657775878906 - min: 64.76700592041016 - percentile: [192.38743591308594, 312.0592346191406, 553.4635009765625, 777.5864868164062] - percentile_00_5: 192.38743591308594 - percentile_10_0: 312.0592346191406 - percentile_90_0: 553.4635009765625 - percentile_99_5: 777.5864868164062 - stdev: 100.92493438720703 - image_stats: - channels: 1 - cropped_shape: - - [34, 48, 35] - intensity: - - max: 2066.65625 - mean: 557.1394653320312 - median: 571.1272583007812 - min: 0.0 - percentile: [35.32746124267578, 241.40431213378906, 841.9711303710938, 1006.8325805664062] - percentile_00_5: 35.32746124267578 - percentile_10_0: 241.40431213378906 - percentile_90_0: 841.9711303710938 - percentile_99_5: 1006.8325805664062 - stdev: 235.8335418701172 - shape: - - [34, 48, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_341.nii.gz - label_stats: - image_intensity: - - max: 841.9711303710938 - mean: 419.8479919433594 - median: 406.2657775878906 - min: 64.76700592041016 - percentile: [192.38743591308594, 312.0592346191406, 553.4635009765625, 777.5864868164062] - percentile_00_5: 192.38743591308594 - percentile_10_0: 312.0592346191406 - percentile_90_0: 553.4635009765625 - percentile_99_5: 777.5864868164062 - stdev: 100.92493438720703 - label: - - image_intensity: - - max: 2066.65625 - mean: 563.655029296875 - median: 588.791015625 - min: 0.0 - percentile: [35.32746124267578, 235.51638793945312, 847.8590087890625, 1012.7205200195312] - percentile_00_5: 35.32746124267578 - percentile_10_0: 235.51638793945312 - percentile_90_0: 847.8590087890625 - percentile_99_5: 1012.7205200195312 - stdev: 238.4042205810547 - ncomponents: 1 - pixel_percentage: 0.9546918869018555 - shape: - - [34, 48, 35] - - image_intensity: - - max: 712.4370727539062 - mean: 405.37664794921875 - median: 394.4899597167969 - min: 64.76700592041016 - percentile: [143.07620239257812, 306.17132568359375, 524.0239868164062, 661.5065307617188] - percentile_00_5: 143.07620239257812 - percentile_10_0: 306.17132568359375 - percentile_90_0: 524.0239868164062 - percentile_99_5: 661.5065307617188 - stdev: 87.95243835449219 - ncomponents: 1 - pixel_percentage: 0.02330182120203972 - shape: - - [19, 17, 12] - - image_intensity: - - max: 841.9711303710938 - mean: 435.17132568359375 - median: 412.1536865234375 - min: 82.43074035644531 - percentile: [200.18893432617188, 317.9471435546875, 588.791015625, 799.10693359375] - percentile_00_5: 200.18893432617188 - percentile_10_0: 317.9471435546875 - percentile_90_0: 588.791015625 - percentile_99_5: 799.10693359375 - stdev: 111.01235961914062 - ncomponents: 1 - pixel_percentage: 0.022006303071975708 - shape: - - [18, 22, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_070.nii.gz - image_foreground_stats: - intensity: - - max: 111.0 - mean: 58.20927429199219 - median: 58.0 - min: 12.0 - percentile: [25.0, 41.0, 75.0, 95.755126953125] - percentile_00_5: 25.0 - percentile_10_0: 41.0 - percentile_90_0: 75.0 - percentile_99_5: 95.755126953125 - stdev: 13.540565490722656 - image_stats: - channels: 1 - cropped_shape: - - [37, 50, 38] - intensity: - - max: 255.0 - mean: 74.82958984375 - median: 76.0 - min: 3.0 - percentile: [11.0, 31.0, 115.0, 145.0] - percentile_00_5: 11.0 - percentile_10_0: 31.0 - percentile_90_0: 115.0 - percentile_99_5: 145.0 - stdev: 32.01144790649414 - shape: - - [37, 50, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_070.nii.gz - label_stats: - image_intensity: - - max: 111.0 - mean: 58.20927429199219 - median: 58.0 - min: 12.0 - percentile: [25.0, 41.0, 75.0, 95.755126953125] - percentile_00_5: 25.0 - percentile_10_0: 41.0 - percentile_90_0: 75.0 - percentile_99_5: 95.755126953125 - stdev: 13.540565490722656 - label: - - image_intensity: - - max: 255.0 - mean: 75.68733215332031 - median: 78.0 - min: 3.0 - percentile: [11.0, 30.0, 116.0, 146.0] - percentile_00_5: 11.0 - percentile_10_0: 30.0 - percentile_90_0: 116.0 - percentile_99_5: 146.0 - stdev: 32.45248031616211 - ncomponents: 1 - pixel_percentage: 0.9509246349334717 - shape: - - [37, 50, 38] - - image_intensity: - - max: 105.0 - mean: 58.88337707519531 - median: 59.0 - min: 17.0 - percentile: [27.0, 41.0, 76.0, 94.0] - percentile_00_5: 27.0 - percentile_10_0: 41.0 - percentile_90_0: 76.0 - percentile_99_5: 94.0 - stdev: 13.366148948669434 - ncomponents: 1 - pixel_percentage: 0.026955902576446533 - shape: - - [23, 17, 14] - - image_intensity: - - max: 111.0 - mean: 57.387779235839844 - median: 57.0 - min: 12.0 - percentile: [24.0, 40.0, 74.0, 96.0] - percentile_00_5: 24.0 - percentile_10_0: 40.0 - percentile_90_0: 74.0 - percentile_99_5: 96.0 - stdev: 13.705378532409668 - ncomponents: 1 - pixel_percentage: 0.022119488567113876 - shape: - - [19, 21, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_170.nii.gz - image_foreground_stats: - intensity: - - max: 354846.28125 - mean: 174948.203125 - median: 169709.09375 - min: 27770.578125 - percentile: [89482.9765625, 129596.03125, 228335.875, 301326.3125] - percentile_00_5: 89482.9765625 - percentile_10_0: 129596.03125 - percentile_90_0: 228335.875 - percentile_99_5: 301326.3125 - stdev: 39547.90625 - image_stats: - channels: 1 - cropped_shape: - - [34, 48, 40] - intensity: - - max: 1144765.0 - mean: 232726.078125 - median: 237592.734375 - min: 0.0 - percentile: [12342.4794921875, 95654.21875, 357931.90625, 410387.4375] - percentile_00_5: 12342.4794921875 - percentile_10_0: 95654.21875 - percentile_90_0: 357931.90625 - percentile_99_5: 410387.4375 - stdev: 100169.7421875 - shape: - - [34, 48, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_170.nii.gz - label_stats: - image_intensity: - - max: 354846.28125 - mean: 174948.203125 - median: 169709.09375 - min: 27770.578125 - percentile: [89482.9765625, 129596.03125, 228335.875, 301326.3125] - percentile_00_5: 89482.9765625 - percentile_10_0: 129596.03125 - percentile_90_0: 228335.875 - percentile_99_5: 301326.3125 - stdev: 39547.90625 - label: - - image_intensity: - - max: 1144765.0 - mean: 235383.078125 - median: 243763.96875 - min: 0.0 - percentile: [12342.4794921875, 92568.59375, 357931.90625, 413473.0625] - percentile_00_5: 12342.4794921875 - percentile_10_0: 92568.59375 - percentile_90_0: 357931.90625 - percentile_99_5: 413473.0625 - stdev: 101305.984375 - ncomponents: 1 - pixel_percentage: 0.9560355544090271 - shape: - - [34, 48, 40] - - image_intensity: - - max: 305476.375 - mean: 181703.234375 - median: 178965.953125 - min: 61712.3984375 - percentile: [95654.21875, 135767.28125, 234507.109375, 277705.78125] - percentile_00_5: 95654.21875 - percentile_10_0: 135767.28125 - percentile_90_0: 234507.109375 - percentile_99_5: 277705.78125 - stdev: 37449.59765625 - ncomponents: 1 - pixel_percentage: 0.02008272148668766 - shape: - - [21, 13, 15] - - image_intensity: - - max: 354846.28125 - mean: 169267.734375 - median: 163537.859375 - min: 27770.578125 - percentile: [86397.359375, 123424.796875, 222164.625, 318466.71875] - percentile_00_5: 86397.359375 - percentile_10_0: 123424.796875 - percentile_90_0: 222164.625 - percentile_99_5: 318466.71875 - stdev: 40364.1015625 - ncomponents: 1 - pixel_percentage: 0.023881740868091583 - shape: - - [17, 22, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_101.nii.gz - image_foreground_stats: - intensity: - - max: 884.090087890625 - mean: 375.64373779296875 - median: 355.0853576660156 - min: 57.973121643066406 - percentile: [188.4126434326172, 268.1257019042969, 500.0181884765625, 731.91064453125] - percentile_00_5: 188.4126434326172 - percentile_10_0: 268.1257019042969 - percentile_90_0: 500.0181884765625 - percentile_99_5: 731.91064453125 - stdev: 98.09960174560547 - image_stats: - channels: 1 - cropped_shape: - - [36, 52, 32] - intensity: - - max: 2260.95166015625 - mean: 494.76104736328125 - median: 492.77154541015625 - min: 0.0 - percentile: [28.986560821533203, 195.65928649902344, 782.6371459960938, 905.8300170898438] - percentile_00_5: 28.986560821533203 - percentile_10_0: 195.65928649902344 - percentile_90_0: 782.6371459960938 - percentile_99_5: 905.8300170898438 - stdev: 222.32177734375 - shape: - - [36, 52, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_101.nii.gz - label_stats: - image_intensity: - - max: 884.090087890625 - mean: 375.64373779296875 - median: 355.0853576660156 - min: 57.973121643066406 - percentile: [188.4126434326172, 268.1257019042969, 500.0181884765625, 731.91064453125] - percentile_00_5: 188.4126434326172 - percentile_10_0: 268.1257019042969 - percentile_90_0: 500.0181884765625 - percentile_99_5: 731.91064453125 - stdev: 98.09960174560547 - label: - - image_intensity: - - max: 2260.95166015625 - mean: 502.3637390136719 - median: 514.511474609375 - min: 0.0 - percentile: [28.986560821533203, 188.4126434326172, 789.8837890625, 905.8300170898438] - percentile_00_5: 28.986560821533203 - percentile_10_0: 188.4126434326172 - percentile_90_0: 789.8837890625 - percentile_99_5: 905.8300170898438 - stdev: 225.84072875976562 - ncomponents: 1 - pixel_percentage: 0.9400039911270142 - shape: - - [36, 52, 32] - - image_intensity: - - max: 688.4308471679688 - mean: 369.95098876953125 - median: 355.0853576660156 - min: 57.973121643066406 - percentile: [188.4126434326172, 268.1257019042969, 492.77154541015625, 652.1976318359375] - percentile_00_5: 188.4126434326172 - percentile_10_0: 268.1257019042969 - percentile_90_0: 492.77154541015625 - percentile_99_5: 652.1976318359375 - stdev: 90.42042541503906 - ncomponents: 1 - pixel_percentage: 0.03151709586381912 - shape: - - [25, 19, 13] - - image_intensity: - - max: 884.090087890625 - mean: 381.94378662109375 - median: 362.3320007324219 - min: 115.94624328613281 - percentile: [195.65928649902344, 275.372314453125, 514.511474609375, 764.3391723632812] - percentile_00_5: 195.65928649902344 - percentile_10_0: 275.372314453125 - percentile_90_0: 514.511474609375 - percentile_99_5: 764.3391723632812 - stdev: 105.5940170288086 - ncomponents: 1 - pixel_percentage: 0.028478899970650673 - shape: - - [18, 22, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_001.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 51.38365173339844 - median: 49.0 - min: 21.0 - percentile: [32.0, 40.0, 67.0, 91.0] - percentile_00_5: 32.0 - percentile_10_0: 40.0 - percentile_90_0: 67.0 - percentile_99_5: 91.0 - stdev: 10.986161231994629 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 35] - intensity: - - max: 139.0 - mean: 63.521793365478516 - median: 63.0 - min: 2.0 - percentile: [7.0, 32.0, 96.0, 109.0] - percentile_00_5: 7.0 - percentile_10_0: 32.0 - percentile_90_0: 96.0 - percentile_99_5: 109.0 - stdev: 24.972482681274414 - shape: - - [35, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_001.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 51.38365173339844 - median: 49.0 - min: 21.0 - percentile: [32.0, 40.0, 67.0, 91.0] - percentile_00_5: 32.0 - percentile_10_0: 40.0 - percentile_90_0: 67.0 - percentile_99_5: 91.0 - stdev: 10.986161231994629 - label: - - image_intensity: - - max: 139.0 - mean: 64.1229248046875 - median: 65.0 - min: 2.0 - percentile: [7.0, 32.0, 97.0, 109.0] - percentile_00_5: 7.0 - percentile_10_0: 32.0 - percentile_90_0: 97.0 - percentile_99_5: 109.0 - stdev: 25.315486907958984 - ncomponents: 1 - pixel_percentage: 0.9528131484985352 - shape: - - [35, 51, 35] - - image_intensity: - - max: 86.0 - mean: 49.9108772277832 - median: 49.0 - min: 26.0 - percentile: [32.0, 40.0, 61.0, 79.385009765625] - percentile_00_5: 32.0 - percentile_10_0: 40.0 - percentile_90_0: 61.0 - percentile_99_5: 79.385009765625 - stdev: 8.771498680114746 - ncomponents: 1 - pixel_percentage: 0.021192476153373718 - shape: - - [19, 14, 12] - - image_intensity: - - max: 96.0 - mean: 52.58435821533203 - median: 50.0 - min: 21.0 - percentile: [33.0, 40.0, 71.0, 92.885009765625] - percentile_00_5: 33.0 - percentile_10_0: 40.0 - percentile_90_0: 71.0 - percentile_99_5: 92.885009765625 - stdev: 12.375747680664062 - ncomponents: 1 - pixel_percentage: 0.025994397699832916 - shape: - - [15, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_162.nii.gz - image_foreground_stats: - intensity: - - max: 82.0 - mean: 40.384796142578125 - median: 39.0 - min: 9.0 - percentile: [20.0, 30.0, 53.0, 76.0] - percentile_00_5: 20.0 - percentile_10_0: 30.0 - percentile_90_0: 53.0 - percentile_99_5: 76.0 - stdev: 9.902531623840332 - image_stats: - channels: 1 - cropped_shape: - - [38, 51, 37] - intensity: - - max: 255.0 - mean: 55.23063659667969 - median: 56.0 - min: 1.0 - percentile: [6.0, 20.0, 88.0, 101.0] - percentile_00_5: 6.0 - percentile_10_0: 20.0 - percentile_90_0: 88.0 - percentile_99_5: 101.0 - stdev: 25.886722564697266 - shape: - - [38, 51, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_162.nii.gz - label_stats: - image_intensity: - - max: 82.0 - mean: 40.384796142578125 - median: 39.0 - min: 9.0 - percentile: [20.0, 30.0, 53.0, 76.0] - percentile_00_5: 20.0 - percentile_10_0: 30.0 - percentile_90_0: 53.0 - percentile_99_5: 76.0 - stdev: 9.902531623840332 - label: - - image_intensity: - - max: 255.0 - mean: 55.97416687011719 - median: 58.0 - min: 1.0 - percentile: [6.0, 20.0, 88.0, 101.0] - percentile_00_5: 6.0 - percentile_10_0: 20.0 - percentile_90_0: 88.0 - percentile_99_5: 101.0 - stdev: 26.214157104492188 - ncomponents: 1 - pixel_percentage: 0.952305257320404 - shape: - - [38, 51, 37] - - image_intensity: - - max: 77.0 - mean: 41.52111053466797 - median: 41.0 - min: 17.0 - percentile: [23.994998931884766, 32.0, 53.0, 70.0] - percentile_00_5: 23.994998931884766 - percentile_10_0: 32.0 - percentile_90_0: 53.0 - percentile_99_5: 70.0 - stdev: 8.557167053222656 - ncomponents: 1 - pixel_percentage: 0.02510250173509121 - shape: - - [20, 17, 13] - - image_intensity: - - max: 82.0 - mean: 39.122222900390625 - median: 37.0 - min: 9.0 - percentile: [20.0, 28.0, 54.0, 78.0] - percentile_00_5: 20.0 - percentile_10_0: 28.0 - percentile_90_0: 54.0 - percentile_99_5: 78.0 - stdev: 11.073654174804688 - ncomponents: 1 - pixel_percentage: 0.022592252120375633 - shape: - - [18, 23, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_380.nii.gz - image_foreground_stats: - intensity: - - max: 1117.8118896484375 - mean: 424.15020751953125 - median: 407.202880859375 - min: 79.84370422363281 - percentile: [177.01348876953125, 287.43731689453125, 574.8746337890625, 834.2886962890625] - percentile_00_5: 177.01348876953125 - percentile_10_0: 287.43731689453125 - percentile_90_0: 574.8746337890625 - percentile_99_5: 834.2886962890625 - stdev: 120.41974639892578 - image_stats: - channels: 1 - cropped_shape: - - [35, 46, 42] - intensity: - - max: 2882.357666015625 - mean: 583.3995971679688 - median: 614.7965087890625 - min: 0.0 - percentile: [31.937480926513672, 207.5936279296875, 910.2182006835938, 1045.9525146484375] - percentile_00_5: 31.937480926513672 - percentile_10_0: 207.5936279296875 - percentile_90_0: 910.2182006835938 - percentile_99_5: 1045.9525146484375 - stdev: 265.29473876953125 - shape: - - [35, 46, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_380.nii.gz - label_stats: - image_intensity: - - max: 1117.8118896484375 - mean: 424.15020751953125 - median: 407.202880859375 - min: 79.84370422363281 - percentile: [177.01348876953125, 287.43731689453125, 574.8746337890625, 834.2886962890625] - percentile_00_5: 177.01348876953125 - percentile_10_0: 287.43731689453125 - percentile_90_0: 574.8746337890625 - percentile_99_5: 834.2886962890625 - stdev: 120.41974639892578 - label: - - image_intensity: - - max: 2882.357666015625 - mean: 591.9221801757812 - median: 638.7496337890625 - min: 0.0 - percentile: [31.937480926513672, 199.6092529296875, 910.2182006835938, 1053.9368896484375] - percentile_00_5: 31.937480926513672 - percentile_10_0: 199.6092529296875 - percentile_90_0: 910.2182006835938 - percentile_99_5: 1053.9368896484375 - stdev: 268.2200927734375 - ncomponents: 1 - pixel_percentage: 0.9492014050483704 - shape: - - [35, 46, 42] - - image_intensity: - - max: 902.2338256835938 - mean: 438.2311706542969 - median: 423.171630859375 - min: 103.79681396484375 - percentile: [188.79042053222656, 303.40606689453125, 590.8433837890625, 801.2713012695312] - percentile_00_5: 188.79042053222656 - percentile_10_0: 303.40606689453125 - percentile_90_0: 590.8433837890625 - percentile_99_5: 801.2713012695312 - stdev: 119.11589813232422 - ncomponents: 1 - pixel_percentage: 0.0255841463804245 - shape: - - [24, 16, 15] - - image_intensity: - - max: 1117.8118896484375 - mean: 409.8628234863281 - median: 391.234130859375 - min: 79.84370422363281 - percentile: [167.67176818847656, 279.4529724121094, 558.9059448242188, 846.0235595703125] - percentile_00_5: 167.67176818847656 - percentile_10_0: 279.4529724121094 - percentile_90_0: 558.9059448242188 - percentile_99_5: 846.0235595703125 - stdev: 120.05208587646484 - ncomponents: 1 - pixel_percentage: 0.025214433670043945 - shape: - - [21, 20, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_037.nii.gz - image_foreground_stats: - intensity: - - max: 663.42236328125 - mean: 319.8084716796875 - median: 304.96026611328125 - min: 58.85198211669922 - percentile: [133.593994140625, 230.0577392578125, 433.3645935058594, 594.0306396484375] - percentile_00_5: 133.593994140625 - percentile_10_0: 230.0577392578125 - percentile_90_0: 433.3645935058594 - percentile_99_5: 594.0306396484375 - stdev: 85.11212158203125 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 32] - intensity: - - max: 1476.6497802734375 - mean: 380.85552978515625 - median: 379.86279296875 - min: 0.0 - percentile: [21.400720596313477, 187.2563018798828, 577.8194580078125, 668.7725219726562] - percentile_00_5: 21.400720596313477 - percentile_10_0: 187.2563018798828 - percentile_90_0: 577.8194580078125 - percentile_99_5: 668.7725219726562 - stdev: 151.89596557617188 - shape: - - [34, 51, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_037.nii.gz - label_stats: - image_intensity: - - max: 663.42236328125 - mean: 319.8084716796875 - median: 304.96026611328125 - min: 58.85198211669922 - percentile: [133.593994140625, 230.0577392578125, 433.3645935058594, 594.0306396484375] - percentile_00_5: 133.593994140625 - percentile_10_0: 230.0577392578125 - percentile_90_0: 433.3645935058594 - percentile_99_5: 594.0306396484375 - stdev: 85.11212158203125 - label: - - image_intensity: - - max: 1476.6497802734375 - mean: 384.5854187011719 - median: 385.2129821777344 - min: 0.0 - percentile: [21.400720596313477, 181.9061279296875, 577.8194580078125, 668.7725219726562] - percentile_00_5: 21.400720596313477 - percentile_10_0: 181.9061279296875 - percentile_90_0: 577.8194580078125 - percentile_99_5: 668.7725219726562 - stdev: 154.26551818847656 - ncomponents: 1 - pixel_percentage: 0.9424200057983398 - shape: - - [34, 51, 32] - - image_intensity: - - max: 663.42236328125 - mean: 329.8294677734375 - median: 315.6606140136719 - min: 96.3032455444336 - percentile: [187.2563018798828, 246.10829162597656, 438.71478271484375, 599.2201538085938] - percentile_00_5: 187.2563018798828 - percentile_10_0: 246.10829162597656 - percentile_90_0: 438.71478271484375 - percentile_99_5: 599.2201538085938 - stdev: 81.60671997070312 - ncomponents: 1 - pixel_percentage: 0.02843858115375042 - shape: - - [22, 19, 14] - - image_intensity: - - max: 631.3212280273438 - mean: 310.02923583984375 - median: 299.6100769042969 - min: 58.85198211669922 - percentile: [118.1319808959961, 219.35739135742188, 433.3645935058594, 588.092041015625] - percentile_00_5: 118.1319808959961 - percentile_10_0: 219.35739135742188 - percentile_90_0: 433.3645935058594 - percentile_99_5: 588.092041015625 - stdev: 87.29698181152344 - ncomponents: 1 - pixel_percentage: 0.029141435399651527 - shape: - - [23, 21, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_280.nii.gz - image_foreground_stats: - intensity: - - max: 722.8124389648438 - mean: 334.44183349609375 - median: 326.080810546875 - min: 5.434679985046387 - percentile: [114.12828063964844, 217.38720703125, 467.3824768066406, 608.6841430664062] - percentile_00_5: 114.12828063964844 - percentile_10_0: 217.38720703125 - percentile_90_0: 467.3824768066406 - percentile_99_5: 608.6841430664062 - stdev: 98.31048583984375 - image_stats: - channels: 1 - cropped_shape: - - [37, 47, 32] - intensity: - - max: 1929.3114013671875 - mean: 395.4591064453125 - median: 418.4703674316406 - min: 0.0 - percentile: [16.304039001464844, 119.56295776367188, 619.5535278320312, 760.855224609375] - percentile_00_5: 16.304039001464844 - percentile_10_0: 119.56295776367188 - percentile_90_0: 619.5535278320312 - percentile_99_5: 760.855224609375 - stdev: 185.5244140625 - shape: - - [37, 47, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_280.nii.gz - label_stats: - image_intensity: - - max: 722.8124389648438 - mean: 334.44183349609375 - median: 326.080810546875 - min: 5.434679985046387 - percentile: [114.12828063964844, 217.38720703125, 467.3824768066406, 608.6841430664062] - percentile_00_5: 114.12828063964844 - percentile_10_0: 217.38720703125 - percentile_90_0: 467.3824768066406 - percentile_99_5: 608.6841430664062 - stdev: 98.31048583984375 - label: - - image_intensity: - - max: 1929.3114013671875 - mean: 398.46539306640625 - median: 429.3397216796875 - min: 0.0 - percentile: [16.304039001464844, 114.12828063964844, 619.5535278320312, 760.855224609375] - percentile_00_5: 16.304039001464844 - percentile_10_0: 114.12828063964844 - percentile_90_0: 619.5535278320312 - percentile_99_5: 760.855224609375 - stdev: 188.27230834960938 - ncomponents: 1 - pixel_percentage: 0.9530441164970398 - shape: - - [37, 47, 32] - - image_intensity: - - max: 722.8124389648438 - mean: 349.1791687011719 - median: 342.38482666015625 - min: 5.434679985046387 - percentile: [130.43231201171875, 233.6912384033203, 483.6865234375, 615.04296875] - percentile_00_5: 130.43231201171875 - percentile_10_0: 233.6912384033203 - percentile_90_0: 483.6865234375 - percentile_99_5: 615.04296875 - stdev: 96.939697265625 - ncomponents: 1 - pixel_percentage: 0.02456512302160263 - shape: - - [20, 16, 12] - - image_intensity: - - max: 695.6390380859375 - mean: 318.2733459472656 - median: 304.3420715332031 - min: 76.08551788330078 - percentile: [104.48171997070312, 203.80050659179688, 451.07843017578125, 581.5107421875] - percentile_00_5: 104.48171997070312 - percentile_10_0: 203.80050659179688 - percentile_90_0: 451.07843017578125 - percentile_99_5: 581.5107421875 - stdev: 97.25684356689453 - ncomponents: 1 - pixel_percentage: 0.022390741854906082 - shape: - - [16, 21, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_154.nii.gz - image_foreground_stats: - intensity: - - max: 82.0 - mean: 42.10561752319336 - median: 40.0 - min: 20.0 - percentile: [25.0, 32.0, 55.0, 72.719970703125] - percentile_00_5: 25.0 - percentile_10_0: 32.0 - percentile_90_0: 55.0 - percentile_99_5: 72.719970703125 - stdev: 9.343899726867676 - image_stats: - channels: 1 - cropped_shape: - - [35, 46, 42] - intensity: - - max: 218.0 - mean: 58.45921325683594 - median: 61.0 - min: 2.0 - percentile: [7.0, 22.0, 90.0, 100.0] - percentile_00_5: 7.0 - percentile_10_0: 22.0 - percentile_90_0: 90.0 - percentile_99_5: 100.0 - stdev: 25.572208404541016 - shape: - - [35, 46, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_154.nii.gz - label_stats: - image_intensity: - - max: 82.0 - mean: 42.10561752319336 - median: 40.0 - min: 20.0 - percentile: [25.0, 32.0, 55.0, 72.719970703125] - percentile_00_5: 25.0 - percentile_10_0: 32.0 - percentile_90_0: 55.0 - percentile_99_5: 72.719970703125 - stdev: 9.343899726867676 - label: - - image_intensity: - - max: 218.0 - mean: 59.28676223754883 - median: 63.0 - min: 2.0 - percentile: [6.0, 21.0, 91.0, 100.0] - percentile_00_5: 6.0 - percentile_10_0: 21.0 - percentile_90_0: 91.0 - percentile_99_5: 100.0 - stdev: 25.85329818725586 - ncomponents: 1 - pixel_percentage: 0.9518337845802307 - shape: - - [35, 46, 42] - - image_intensity: - - max: 81.0 - mean: 43.32270050048828 - median: 42.0 - min: 20.0 - percentile: [27.0, 34.0, 55.0, 72.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 55.0 - percentile_99_5: 72.0 - stdev: 8.740777015686035 - ncomponents: 1 - pixel_percentage: 0.023646850138902664 - shape: - - [21, 13, 16] - - image_intensity: - - max: 82.0 - mean: 40.931846618652344 - median: 38.0 - min: 24.0 - percentile: [25.0, 31.0, 55.0, 73.0] - percentile_00_5: 25.0 - percentile_10_0: 31.0 - percentile_90_0: 55.0 - percentile_99_5: 73.0 - stdev: 9.747886657714844 - ncomponents: 1 - pixel_percentage: 0.02451937273144722 - shape: - - [19, 23, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_058.nii.gz - image_foreground_stats: - intensity: - - max: 688.5119018554688 - mean: 310.172607421875 - median: 299.3529968261719 - min: 29.935300827026367 - percentile: [101.78002166748047, 209.54710388183594, 419.0942077636719, 582.9607543945312] - percentile_00_5: 101.78002166748047 - percentile_10_0: 209.54710388183594 - percentile_90_0: 419.0942077636719 - percentile_99_5: 582.9607543945312 - stdev: 84.84986877441406 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 36] - intensity: - - max: 1179.4508056640625 - mean: 403.25250244140625 - median: 413.1071472167969 - min: 0.0 - percentile: [17.961179733276367, 125.72826385498047, 640.6154174804688, 724.4342651367188] - percentile_00_5: 17.961179733276367 - percentile_10_0: 125.72826385498047 - percentile_90_0: 640.6154174804688 - percentile_99_5: 724.4342651367188 - stdev: 188.4087677001953 - shape: - - [34, 53, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_058.nii.gz - label_stats: - image_intensity: - - max: 688.5119018554688 - mean: 310.172607421875 - median: 299.3529968261719 - min: 29.935300827026367 - percentile: [101.78002166748047, 209.54710388183594, 419.0942077636719, 582.9607543945312] - percentile_00_5: 101.78002166748047 - percentile_10_0: 209.54710388183594 - percentile_90_0: 419.0942077636719 - percentile_99_5: 582.9607543945312 - stdev: 84.84986877441406 - label: - - image_intensity: - - max: 1179.4508056640625 - mean: 407.9664001464844 - median: 425.0812683105469 - min: 0.0 - percentile: [17.961179733276367, 119.74120330810547, 640.6154174804688, 724.4342651367188] - percentile_00_5: 17.961179733276367 - percentile_10_0: 119.74120330810547 - percentile_90_0: 640.6154174804688 - percentile_99_5: 724.4342651367188 - stdev: 190.97122192382812 - ncomponents: 1 - pixel_percentage: 0.951797366142273 - shape: - - [34, 53, 36] - - image_intensity: - - max: 544.8224487304688 - mean: 317.807861328125 - median: 311.3271179199219 - min: 53.883541107177734 - percentile: [107.76708221435547, 227.50828552246094, 425.0812683105469, 510.9055480957031] - percentile_00_5: 107.76708221435547 - percentile_10_0: 227.50828552246094 - percentile_90_0: 425.0812683105469 - percentile_99_5: 510.9055480957031 - stdev: 77.63871765136719 - ncomponents: 1 - pixel_percentage: 0.02056357078254223 - shape: - - [22, 15, 13] - - image_intensity: - - max: 688.5119018554688 - mean: 304.4919128417969 - median: 293.3659362792969 - min: 29.935300827026367 - percentile: [101.78002166748047, 203.56004333496094, 419.0942077636719, 605.1724853515625] - percentile_00_5: 101.78002166748047 - percentile_10_0: 203.56004333496094 - percentile_90_0: 419.0942077636719 - percentile_99_5: 605.1724853515625 - stdev: 89.41828155517578 - ncomponents: 1 - pixel_percentage: 0.02763904258608818 - shape: - - [21, 27, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_158.nii.gz - image_foreground_stats: - intensity: - - max: 796.8997192382812 - mean: 371.3193054199219 - median: 359.16607666015625 - min: 61.73167037963867 - percentile: [168.35910034179688, 258.1506042480469, 505.0773010253906, 695.5759887695312] - percentile_00_5: 168.35910034179688 - percentile_10_0: 258.1506042480469 - percentile_90_0: 505.0773010253906 - percentile_99_5: 695.5759887695312 - stdev: 99.31587982177734 - image_stats: - channels: 1 - cropped_shape: - - [38, 52, 36] - intensity: - - max: 3137.09130859375 - mean: 487.7275085449219 - median: 499.46533203125 - min: 0.0 - percentile: [22.447879791259766, 151.523193359375, 768.8399047851562, 897.9151611328125] - percentile_00_5: 22.447879791259766 - percentile_10_0: 151.523193359375 - percentile_90_0: 768.8399047851562 - percentile_99_5: 897.9151611328125 - stdev: 230.8609161376953 - shape: - - [38, 52, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_158.nii.gz - label_stats: - image_intensity: - - max: 796.8997192382812 - mean: 371.3193054199219 - median: 359.16607666015625 - min: 61.73167037963867 - percentile: [168.35910034179688, 258.1506042480469, 505.0773010253906, 695.5759887695312] - percentile_00_5: 168.35910034179688 - percentile_10_0: 258.1506042480469 - percentile_90_0: 505.0773010253906 - percentile_99_5: 695.5759887695312 - stdev: 99.31587982177734 - label: - - image_intensity: - - max: 3137.09130859375 - mean: 493.59222412109375 - median: 516.3012084960938 - min: 0.0 - percentile: [22.447879791259766, 145.91122436523438, 774.4518432617188, 897.9151611328125] - percentile_00_5: 22.447879791259766 - percentile_10_0: 145.91122436523438 - percentile_90_0: 774.4518432617188 - percentile_99_5: 897.9151611328125 - stdev: 234.02536010742188 - ncomponents: 1 - pixel_percentage: 0.9520355463027954 - shape: - - [38, 52, 36] - - image_intensity: - - max: 796.8997192382812 - mean: 386.9444274902344 - median: 376.0019836425781 - min: 117.85137176513672 - percentile: [173.9710693359375, 280.5985107421875, 510.68927001953125, 679.04833984375] - percentile_00_5: 173.9710693359375 - percentile_10_0: 280.5985107421875 - percentile_90_0: 510.68927001953125 - percentile_99_5: 679.04833984375 - stdev: 92.32966613769531 - ncomponents: 1 - pixel_percentage: 0.026343904435634613 - shape: - - [25, 16, 13] - - image_intensity: - - max: 746.3920288085938 - mean: 352.2806701660156 - median: 331.1062316894531 - min: 61.73167037963867 - percentile: [151.523193359375, 241.31471252441406, 505.0773010253906, 703.2643432617188] - percentile_00_5: 151.523193359375 - percentile_10_0: 241.31471252441406 - percentile_90_0: 505.0773010253906 - percentile_99_5: 703.2643432617188 - stdev: 104.09162902832031 - ncomponents: 1 - pixel_percentage: 0.021620558574795723 - shape: - - [23, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_292.nii.gz - image_foreground_stats: - intensity: - - max: 605.1464233398438 - mean: 291.65008544921875 - median: 283.4920349121094 - min: 27.25885009765625 - percentile: [100.25804138183594, 190.81195068359375, 403.43096923828125, 537.599609375] - percentile_00_5: 100.25804138183594 - percentile_10_0: 190.81195068359375 - percentile_90_0: 403.43096923828125 - percentile_99_5: 537.599609375 - stdev: 83.40442657470703 - image_stats: - channels: 1 - cropped_shape: - - [38, 52, 33] - intensity: - - max: 1924.4747314453125 - mean: 386.9342041015625 - median: 381.6239013671875 - min: 0.0 - percentile: [27.25885009765625, 163.5531005859375, 610.5982055664062, 725.0853881835938] - percentile_00_5: 27.25885009765625 - percentile_10_0: 163.5531005859375 - percentile_90_0: 610.5982055664062 - percentile_99_5: 725.0853881835938 - stdev: 171.26904296875 - shape: - - [38, 52, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_292.nii.gz - label_stats: - image_intensity: - - max: 605.1464233398438 - mean: 291.65008544921875 - median: 283.4920349121094 - min: 27.25885009765625 - percentile: [100.25804138183594, 190.81195068359375, 403.43096923828125, 537.599609375] - percentile_00_5: 100.25804138183594 - percentile_10_0: 190.81195068359375 - percentile_90_0: 403.43096923828125 - percentile_99_5: 537.599609375 - stdev: 83.40442657470703 - label: - - image_intensity: - - max: 1924.4747314453125 - mean: 392.3043518066406 - median: 392.5274353027344 - min: 0.0 - percentile: [27.25885009765625, 163.5531005859375, 616.0499877929688, 725.0853881835938] - percentile_00_5: 27.25885009765625 - percentile_10_0: 163.5531005859375 - percentile_90_0: 616.0499877929688 - percentile_99_5: 725.0853881835938 - stdev: 173.36001586914062 - ncomponents: 1 - pixel_percentage: 0.9466476440429688 - shape: - - [38, 52, 33] - - image_intensity: - - max: 605.1464233398438 - mean: 292.00201416015625 - median: 283.4920349121094 - min: 81.77655029296875 - percentile: [114.48716735839844, 196.2637176513672, 397.97918701171875, 531.2747192382812] - percentile_00_5: 114.48716735839844 - percentile_10_0: 196.2637176513672 - percentile_90_0: 397.97918701171875 - percentile_99_5: 531.2747192382812 - stdev: 80.0480728149414 - ncomponents: 1 - pixel_percentage: 0.02930621989071369 - shape: - - [25, 18, 14] - - image_intensity: - - max: 599.6947021484375 - mean: 291.2211608886719 - median: 283.4920349121094 - min: 27.25885009765625 - percentile: [86.32877349853516, 185.36016845703125, 408.88275146484375, 546.0767211914062] - percentile_00_5: 86.32877349853516 - percentile_10_0: 185.36016845703125 - percentile_90_0: 408.88275146484375 - percentile_99_5: 546.0767211914062 - stdev: 87.3188247680664 - ncomponents: 1 - pixel_percentage: 0.02404612861573696 - shape: - - [18, 24, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_025.nii.gz - image_foreground_stats: - intensity: - - max: 822.6514892578125 - mean: 395.1009826660156 - median: 380.6297912597656 - min: 85.94866180419922 - percentile: [196.45408630371094, 300.8203125, 509.55279541015625, 689.8914794921875] - percentile_00_5: 196.45408630371094 - percentile_10_0: 300.8203125 - percentile_90_0: 509.55279541015625 - percentile_99_5: 689.8914794921875 - stdev: 87.15746307373047 - image_stats: - channels: 1 - cropped_shape: - - [35, 48, 35] - intensity: - - max: 2510.9287109375 - mean: 513.5413208007812 - median: 515.6919555664062 - min: 0.0 - percentile: [24.556760787963867, 227.15003967285156, 785.8163452148438, 896.32177734375] - percentile_00_5: 24.556760787963867 - percentile_10_0: 227.15003967285156 - percentile_90_0: 785.8163452148438 - percentile_99_5: 896.32177734375 - stdev: 219.72698974609375 - shape: - - [35, 48, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_025.nii.gz - label_stats: - image_intensity: - - max: 822.6514892578125 - mean: 395.1009826660156 - median: 380.6297912597656 - min: 85.94866180419922 - percentile: [196.45408630371094, 300.8203125, 509.55279541015625, 689.8914794921875] - percentile_00_5: 196.45408630371094 - percentile_10_0: 300.8203125 - percentile_90_0: 509.55279541015625 - percentile_99_5: 689.8914794921875 - stdev: 87.15746307373047 - label: - - image_intensity: - - max: 2510.9287109375 - mean: 520.6425170898438 - median: 540.2487182617188 - min: 0.0 - percentile: [24.556760787963867, 221.01084899902344, 791.9555053710938, 896.32177734375] - percentile_00_5: 24.556760787963867 - percentile_10_0: 221.01084899902344 - percentile_90_0: 791.9555053710938 - percentile_99_5: 896.32177734375 - stdev: 223.2211456298828 - ncomponents: 1 - pixel_percentage: 0.9434353709220886 - shape: - - [35, 48, 35] - - image_intensity: - - max: 742.842041015625 - mean: 402.57672119140625 - median: 392.9081726074219 - min: 165.7581329345703 - percentile: [211.64857482910156, 306.9595031738281, 515.6919555664062, 656.8933715820312] - percentile_00_5: 211.64857482910156 - percentile_10_0: 306.9595031738281 - percentile_90_0: 515.6919555664062 - percentile_99_5: 656.8933715820312 - stdev: 81.44914245605469 - ncomponents: 1 - pixel_percentage: 0.03224489837884903 - shape: - - [24, 18, 15] - - image_intensity: - - max: 822.6514892578125 - mean: 385.1891174316406 - median: 368.3514099121094 - min: 85.94866180419922 - percentile: [190.3148956298828, 288.54193115234375, 503.4136047363281, 728.7830810546875] - percentile_00_5: 190.3148956298828 - percentile_10_0: 288.54193115234375 - percentile_90_0: 503.4136047363281 - percentile_99_5: 728.7830810546875 - stdev: 93.27474975585938 - ncomponents: 1 - pixel_percentage: 0.02431972697377205 - shape: - - [22, 20, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_125.nii.gz - image_foreground_stats: - intensity: - - max: 98.0 - mean: 51.966617584228516 - median: 50.0 - min: 24.0 - percentile: [34.0, 41.0, 66.0, 86.0] - percentile_00_5: 34.0 - percentile_10_0: 41.0 - percentile_90_0: 66.0 - percentile_99_5: 86.0 - stdev: 10.361655235290527 - image_stats: - channels: 1 - cropped_shape: - - [43, 42, 39] - intensity: - - max: 254.0 - mean: 68.65299224853516 - median: 69.0 - min: 2.0 - percentile: [7.0, 28.0, 107.0, 132.0] - percentile_00_5: 7.0 - percentile_10_0: 28.0 - percentile_90_0: 107.0 - percentile_99_5: 132.0 - stdev: 29.863319396972656 - shape: - - [43, 42, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_125.nii.gz - label_stats: - image_intensity: - - max: 98.0 - mean: 51.966617584228516 - median: 50.0 - min: 24.0 - percentile: [34.0, 41.0, 66.0, 86.0] - percentile_00_5: 34.0 - percentile_10_0: 41.0 - percentile_90_0: 66.0 - percentile_99_5: 86.0 - stdev: 10.361655235290527 - label: - - image_intensity: - - max: 254.0 - mean: 69.3248062133789 - median: 70.0 - min: 2.0 - percentile: [7.0, 27.0, 108.0, 132.0] - percentile_00_5: 7.0 - percentile_10_0: 27.0 - percentile_90_0: 108.0 - percentile_99_5: 132.0 - stdev: 30.19502067565918 - ncomponents: 1 - pixel_percentage: 0.9612970948219299 - shape: - - [43, 42, 39] - - image_intensity: - - max: 98.0 - mean: 51.78635787963867 - median: 50.0 - min: 27.0 - percentile: [33.279998779296875, 41.0, 65.0, 87.43994140625] - percentile_00_5: 33.279998779296875 - percentile_10_0: 41.0 - percentile_90_0: 65.0 - percentile_99_5: 87.43994140625 - stdev: 10.17601203918457 - ncomponents: 1 - pixel_percentage: 0.023525569587945938 - shape: - - [18, 14, 16] - - image_intensity: - - max: 93.0 - mean: 52.24602508544922 - median: 49.0 - min: 24.0 - percentile: [35.0, 42.0, 69.0, 85.0] - percentile_00_5: 35.0 - percentile_10_0: 42.0 - percentile_90_0: 69.0 - percentile_99_5: 85.0 - stdev: 10.636977195739746 - ncomponents: 1 - pixel_percentage: 0.015177329070866108 - shape: - - [17, 15, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_046.nii.gz - image_foreground_stats: - intensity: - - max: 912.9042358398438 - mean: 366.8056945800781 - median: 351.11700439453125 - min: 28.089359283447266 - percentile: [154.49148559570312, 252.8042449951172, 505.6084899902344, 692.8709106445312] - percentile_00_5: 154.49148559570312 - percentile_10_0: 252.8042449951172 - percentile_90_0: 505.6084899902344 - percentile_99_5: 692.8709106445312 - stdev: 101.17153930664062 - image_stats: - channels: 1 - cropped_shape: - - [36, 49, 38] - intensity: - - max: 3164.734619140625 - mean: 494.99981689453125 - median: 529.0162963867188 - min: 0.0 - percentile: [28.089359283447266, 201.3070831298828, 744.3680419921875, 837.999267578125] - percentile_00_5: 28.089359283447266 - percentile_10_0: 201.3070831298828 - percentile_90_0: 744.3680419921875 - percentile_99_5: 837.999267578125 - stdev: 211.18258666992188 - shape: - - [36, 49, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_046.nii.gz - label_stats: - image_intensity: - - max: 912.9042358398438 - mean: 366.8056945800781 - median: 351.11700439453125 - min: 28.089359283447266 - percentile: [154.49148559570312, 252.8042449951172, 505.6084899902344, 692.8709106445312] - percentile_00_5: 154.49148559570312 - percentile_10_0: 252.8042449951172 - percentile_90_0: 505.6084899902344 - percentile_99_5: 692.8709106445312 - stdev: 101.17153930664062 - label: - - image_intensity: - - max: 3164.734619140625 - mean: 501.6207275390625 - median: 543.0609741210938 - min: 0.0 - percentile: [28.089359283447266, 196.62551879882812, 749.0496215820312, 837.999267578125] - percentile_00_5: 28.089359283447266 - percentile_10_0: 196.62551879882812 - percentile_90_0: 749.0496215820312 - percentile_99_5: 837.999267578125 - stdev: 213.2609100341797 - ncomponents: 1 - pixel_percentage: 0.9508891105651855 - shape: - - [36, 49, 38] - - image_intensity: - - max: 912.9042358398438 - mean: 369.1894226074219 - median: 355.7985534667969 - min: 28.089359283447266 - percentile: [150.04400634765625, 252.8042449951172, 510.2900390625, 716.2786865234375] - percentile_00_5: 150.04400634765625 - percentile_10_0: 252.8042449951172 - percentile_90_0: 510.2900390625 - percentile_99_5: 716.2786865234375 - stdev: 104.2449951171875 - ncomponents: 1 - pixel_percentage: 0.02403329685330391 - shape: - - [22, 17, 14] - - image_intensity: - - max: 697.5524291992188 - mean: 364.5211181640625 - median: 351.11700439453125 - min: 79.58651733398438 - percentile: [156.36410522460938, 252.8042449951172, 496.245361328125, 674.1446533203125] - percentile_00_5: 156.36410522460938 - percentile_10_0: 252.8042449951172 - percentile_90_0: 496.245361328125 - percentile_99_5: 674.1446533203125 - stdev: 98.08143615722656 - ncomponents: 1 - pixel_percentage: 0.0250775758177042 - shape: - - [23, 23, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_146.nii.gz - image_foreground_stats: - intensity: - - max: 308881.15625 - mean: 135703.203125 - median: 132377.640625 - min: 2757.867431640625 - percentile: [37520.78515625, 93767.4921875, 182019.25, 250965.9375] - percentile_00_5: 37520.78515625 - percentile_10_0: 93767.4921875 - percentile_90_0: 182019.25 - percentile_99_5: 250965.9375 - stdev: 36209.54296875 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 32] - intensity: - - max: 954222.125 - mean: 186644.140625 - median: 176503.515625 - min: 0.0 - percentile: [8273.6025390625, 52399.48046875, 322670.5, 372312.09375] - percentile_00_5: 8273.6025390625 - percentile_10_0: 52399.48046875 - percentile_90_0: 322670.5 - percentile_99_5: 372312.09375 - stdev: 99301.734375 - shape: - - [36, 51, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_146.nii.gz - label_stats: - image_intensity: - - max: 308881.15625 - mean: 135703.203125 - median: 132377.640625 - min: 2757.867431640625 - percentile: [37520.78515625, 93767.4921875, 182019.25, 250965.9375] - percentile_00_5: 37520.78515625 - percentile_10_0: 93767.4921875 - percentile_90_0: 182019.25 - percentile_99_5: 250965.9375 - stdev: 36209.54296875 - label: - - image_intensity: - - max: 954222.125 - mean: 189892.640625 - median: 184777.125 - min: 0.0 - percentile: [8273.6025390625, 52399.48046875, 325428.34375, 372312.09375] - percentile_00_5: 8273.6025390625 - percentile_10_0: 52399.48046875 - percentile_90_0: 325428.34375 - percentile_99_5: 372312.09375 - stdev: 101143.5234375 - ncomponents: 1 - pixel_percentage: 0.9400531053543091 - shape: - - [36, 51, 32] - - image_intensity: - - max: 275786.75 - mean: 135434.953125 - median: 135135.5 - min: 2757.867431640625 - percentile: [33094.41015625, 91009.625, 182019.25, 231660.859375] - percentile_00_5: 33094.41015625 - percentile_10_0: 91009.625 - percentile_90_0: 182019.25 - percentile_99_5: 231660.859375 - stdev: 35204.32421875 - ncomponents: 1 - pixel_percentage: 0.03433074802160263 - shape: - - [23, 18, 15] - - image_intensity: - - max: 308881.15625 - mean: 136062.71875 - median: 132377.640625 - min: 16547.205078125 - percentile: [46883.74609375, 93767.4921875, 184777.125, 261997.40625] - percentile_00_5: 46883.74609375 - percentile_10_0: 93767.4921875 - percentile_90_0: 184777.125 - percentile_99_5: 261997.40625 - stdev: 37511.515625 - ncomponents: 1 - pixel_percentage: 0.025616148486733437 - shape: - - [19, 23, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_226.nii.gz - image_foreground_stats: - intensity: - - max: 962.52001953125 - mean: 430.33642578125 - median: 417.09197998046875 - min: 72.18899536132812 - percentile: [168.4409942626953, 296.7770080566406, 593.5540161132812, 798.4889526367188] - percentile_00_5: 168.4409942626953 - percentile_10_0: 296.7770080566406 - percentile_90_0: 593.5540161132812 - percentile_99_5: 798.4889526367188 - stdev: 119.77847290039062 - image_stats: - channels: 1 - cropped_shape: - - [32, 51, 28] - intensity: - - max: 2045.35498046875 - mean: 561.3385009765625 - median: 585.5330200195312 - min: 0.0 - percentile: [24.062999725341797, 160.4199981689453, 890.3309936523438, 1026.68798828125] - percentile_00_5: 24.062999725341797 - percentile_10_0: 160.4199981689453 - percentile_90_0: 890.3309936523438 - percentile_99_5: 1026.68798828125 - stdev: 270.8314208984375 - shape: - - [32, 51, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_226.nii.gz - label_stats: - image_intensity: - - max: 962.52001953125 - mean: 430.33642578125 - median: 417.09197998046875 - min: 72.18899536132812 - percentile: [168.4409942626953, 296.7770080566406, 593.5540161132812, 798.4889526367188] - percentile_00_5: 168.4409942626953 - percentile_10_0: 296.7770080566406 - percentile_90_0: 593.5540161132812 - percentile_99_5: 798.4889526367188 - stdev: 119.77847290039062 - label: - - image_intensity: - - max: 2045.35498046875 - mean: 569.068115234375 - median: 609.5960083007812 - min: 0.0 - percentile: [24.062999725341797, 152.3990020751953, 898.3519897460938, 1026.68798828125] - percentile_00_5: 24.062999725341797 - percentile_10_0: 152.3990020751953 - percentile_90_0: 898.3519897460938 - percentile_99_5: 1026.68798828125 - stdev: 275.24298095703125 - ncomponents: 1 - pixel_percentage: 0.9442839622497559 - shape: - - [32, 51, 28] - - image_intensity: - - max: 962.52001953125 - mean: 441.64892578125 - median: 425.1130065917969 - min: 104.27299499511719 - percentile: [192.50399780273438, 304.7980041503906, 601.5750122070312, 804.469482421875] - percentile_00_5: 192.50399780273438 - percentile_10_0: 304.7980041503906 - percentile_90_0: 601.5750122070312 - percentile_99_5: 804.469482421875 - stdev: 116.0084457397461 - ncomponents: 1 - pixel_percentage: 0.02984943985939026 - shape: - - [22, 17, 11] - - image_intensity: - - max: 898.3519897460938 - mean: 417.2820129394531 - median: 401.04998779296875 - min: 72.18899536132812 - percentile: [152.3990020751953, 280.7349853515625, 585.5330200195312, 795.6024780273438] - percentile_00_5: 152.3990020751953 - percentile_10_0: 280.7349853515625 - percentile_90_0: 585.5330200195312 - percentile_99_5: 795.6024780273438 - stdev: 122.69710540771484 - ncomponents: 1 - pixel_percentage: 0.025866596028208733 - shape: - - [21, 22, 14] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_091.nii.gz - image_foreground_stats: - intensity: - - max: 620.0889892578125 - mean: 311.21441650390625 - median: 301.51116943359375 - min: 73.95556640625 - percentile: [147.9111328125, 221.86671447753906, 420.97784423828125, 563.2001342773438] - percentile_00_5: 147.9111328125 - percentile_10_0: 221.86671447753906 - percentile_90_0: 420.97784423828125 - percentile_99_5: 563.2001342773438 - stdev: 78.77804565429688 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 29] - intensity: - - max: 853.33349609375 - mean: 408.6790466308594 - median: 420.97784423828125 - min: 0.0 - percentile: [22.75555992126465, 153.60003662109375, 625.7778930664062, 722.489013671875] - percentile_00_5: 22.75555992126465 - percentile_10_0: 153.60003662109375 - percentile_90_0: 625.7778930664062 - percentile_99_5: 722.489013671875 - stdev: 177.88653564453125 - shape: - - [36, 51, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_091.nii.gz - label_stats: - image_intensity: - - max: 620.0889892578125 - mean: 311.21441650390625 - median: 301.51116943359375 - min: 73.95556640625 - percentile: [147.9111328125, 221.86671447753906, 420.97784423828125, 563.2001342773438] - percentile_00_5: 147.9111328125 - percentile_10_0: 221.86671447753906 - percentile_90_0: 420.97784423828125 - percentile_99_5: 563.2001342773438 - stdev: 78.77804565429688 - label: - - image_intensity: - - max: 853.33349609375 - mean: 414.6241149902344 - median: 438.0445251464844 - min: 0.0 - percentile: [17.066669464111328, 142.2222442626953, 631.466796875, 728.1779174804688] - percentile_00_5: 17.066669464111328 - percentile_10_0: 142.2222442626953 - percentile_90_0: 631.466796875 - percentile_99_5: 728.1779174804688 - stdev: 180.50057983398438 - ncomponents: 1 - pixel_percentage: 0.9425099492073059 - shape: - - [36, 51, 29] - - image_intensity: - - max: 603.0223388671875 - mean: 319.94580078125 - median: 307.2000732421875 - min: 119.46669006347656 - percentile: [170.6667022705078, 238.93338012695312, 415.2889709472656, 557.51123046875] - percentile_00_5: 170.6667022705078 - percentile_10_0: 238.93338012695312 - percentile_90_0: 415.2889709472656 - percentile_99_5: 557.51123046875 - stdev: 73.9090347290039 - ncomponents: 1 - pixel_percentage: 0.02608744613826275 - shape: - - [22, 15, 10] - - image_intensity: - - max: 620.0889892578125 - mean: 303.9609375 - median: 290.1333923339844 - min: 73.95556640625 - percentile: [142.2222442626953, 216.17782592773438, 420.97784423828125, 574.577880859375] - percentile_00_5: 142.2222442626953 - percentile_10_0: 216.17782592773438 - percentile_90_0: 420.97784423828125 - percentile_99_5: 574.577880859375 - stdev: 81.90016174316406 - ncomponents: 1 - pixel_percentage: 0.031402599066495895 - shape: - - [19, 23, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_326.nii.gz - image_foreground_stats: - intensity: - - max: 968.2608642578125 - mean: 439.8835754394531 - median: 417.2181091308594 - min: 31.4881591796875 - percentile: [157.4407958984375, 299.13751220703125, 629.76318359375, 842.3082275390625] - percentile_00_5: 157.4407958984375 - percentile_10_0: 299.13751220703125 - percentile_90_0: 629.76318359375 - percentile_99_5: 842.3082275390625 - stdev: 131.4296875 - image_stats: - channels: 1 - cropped_shape: - - [36, 49, 41] - intensity: - - max: 4573.6552734375 - mean: 585.5774536132812 - median: 606.1470947265625 - min: 0.0 - percentile: [31.4881591796875, 212.54507446289062, 921.0286865234375, 1078.469482421875] - percentile_00_5: 31.4881591796875 - percentile_10_0: 212.54507446289062 - percentile_90_0: 921.0286865234375 - percentile_99_5: 1078.469482421875 - stdev: 275.0150146484375 - shape: - - [36, 49, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_326.nii.gz - label_stats: - image_intensity: - - max: 968.2608642578125 - mean: 439.8835754394531 - median: 417.2181091308594 - min: 31.4881591796875 - percentile: [157.4407958984375, 299.13751220703125, 629.76318359375, 842.3082275390625] - percentile_00_5: 157.4407958984375 - percentile_10_0: 299.13751220703125 - percentile_90_0: 629.76318359375 - percentile_99_5: 842.3082275390625 - stdev: 131.4296875 - label: - - image_intensity: - - max: 4573.6552734375 - mean: 594.0686645507812 - median: 621.89111328125 - min: 0.0 - percentile: [31.4881591796875, 204.67303466796875, 921.0286865234375, 1086.341552734375] - percentile_00_5: 31.4881591796875 - percentile_10_0: 204.67303466796875 - percentile_90_0: 921.0286865234375 - percentile_99_5: 1086.341552734375 - stdev: 278.79254150390625 - ncomponents: 1 - pixel_percentage: 0.9449283480644226 - shape: - - [36, 49, 41] - - image_intensity: - - max: 921.0286865234375 - mean: 450.01885986328125 - median: 425.09014892578125 - min: 31.4881591796875 - percentile: [149.56875610351562, 307.0095520019531, 637.63525390625, 837.0346069335938] - percentile_00_5: 149.56875610351562 - percentile_10_0: 307.0095520019531 - percentile_90_0: 637.63525390625 - percentile_99_5: 837.0346069335938 - stdev: 131.8859100341797 - ncomponents: 1 - pixel_percentage: 0.029519937932491302 - shape: - - [24, 19, 15] - - image_intensity: - - max: 968.2608642578125 - mean: 428.17425537109375 - median: 409.3460693359375 - min: 86.59243774414062 - percentile: [167.1627655029297, 291.2654724121094, 608.5081176757812, 846.4806518554688] - percentile_00_5: 167.1627655029297 - percentile_10_0: 291.2654724121094 - percentile_90_0: 608.5081176757812 - percentile_99_5: 846.4806518554688 - stdev: 129.91993713378906 - ncomponents: 1 - pixel_percentage: 0.025551684200763702 - shape: - - [26, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_245.nii.gz - image_foreground_stats: - intensity: - - max: 1222.011474609375 - mean: 500.84820556640625 - median: 474.73828125 - min: 43.95724868774414 - percentile: [102.15663146972656, 334.0750732421875, 712.107421875, 1107.72265625] - percentile_00_5: 102.15663146972656 - percentile_10_0: 334.0750732421875 - percentile_90_0: 712.107421875 - percentile_99_5: 1107.72265625 - stdev: 170.43917846679688 - image_stats: - channels: 1 - cropped_shape: - - [35, 48, 42] - intensity: - - max: 2936.34423828125 - mean: 657.06396484375 - median: 659.3587036132812 - min: 0.0 - percentile: [35.16579818725586, 272.5349426269531, 1019.8081665039062, 1169.2628173828125] - percentile_00_5: 35.16579818725586 - percentile_10_0: 272.5349426269531 - percentile_90_0: 1019.8081665039062 - percentile_99_5: 1169.2628173828125 - stdev: 288.3003845214844 - shape: - - [35, 48, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_245.nii.gz - label_stats: - image_intensity: - - max: 1222.011474609375 - mean: 500.84820556640625 - median: 474.73828125 - min: 43.95724868774414 - percentile: [102.15663146972656, 334.0750732421875, 712.107421875, 1107.72265625] - percentile_00_5: 102.15663146972656 - percentile_10_0: 334.0750732421875 - percentile_90_0: 712.107421875 - percentile_99_5: 1107.72265625 - stdev: 170.43917846679688 - label: - - image_intensity: - - max: 2936.34423828125 - mean: 664.7893676757812 - median: 676.9415893554688 - min: 0.0 - percentile: [35.16579818725586, 272.5349426269531, 1019.8081665039062, 1169.2628173828125] - percentile_00_5: 35.16579818725586 - percentile_10_0: 272.5349426269531 - percentile_90_0: 1019.8081665039062 - percentile_99_5: 1169.2628173828125 - stdev: 290.7308654785156 - ncomponents: 1 - pixel_percentage: 0.9528769850730896 - shape: - - [35, 48, 42] - - image_intensity: - - max: 1195.6370849609375 - mean: 481.5179138183594 - median: 465.94683837890625 - min: 43.95724868774414 - percentile: [79.123046875, 307.70074462890625, 676.9415893554688, 1107.72265625] - percentile_00_5: 79.123046875 - percentile_10_0: 307.70074462890625 - percentile_90_0: 676.9415893554688 - percentile_99_5: 1107.72265625 - stdev: 176.57275390625 - ncomponents: 1 - pixel_percentage: 0.02310090698301792 - shape: - - [24, 14, 17] - - image_intensity: - - max: 1222.011474609375 - mean: 519.437255859375 - median: 483.52972412109375 - min: 114.2888412475586 - percentile: [241.50111389160156, 360.4494323730469, 738.4817504882812, 1094.7994384765625] - percentile_00_5: 241.50111389160156 - percentile_10_0: 360.4494323730469 - percentile_90_0: 738.4817504882812 - percentile_99_5: 1094.7994384765625 - stdev: 162.16607666015625 - ncomponents: 1 - pixel_percentage: 0.02402210794389248 - shape: - - [17, 22, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_345.nii.gz - image_foreground_stats: - intensity: - - max: 817.9187622070312 - mean: 383.730224609375 - median: 372.970947265625 - min: 39.260101318359375 - percentile: [150.49705505371094, 268.27734375, 516.9246826171875, 700.1384887695312] - percentile_00_5: 150.49705505371094 - percentile_10_0: 268.27734375 - percentile_90_0: 516.9246826171875 - percentile_99_5: 700.1384887695312 - stdev: 101.55867767333984 - image_stats: - channels: 1 - cropped_shape: - - [32, 49, 30] - intensity: - - max: 1779.791259765625 - mean: 520.00732421875 - median: 530.0113525390625 - min: 0.0 - percentile: [32.71675109863281, 229.0172576904297, 791.745361328125, 942.242431640625] - percentile_00_5: 32.71675109863281 - percentile_10_0: 229.0172576904297 - percentile_90_0: 791.745361328125 - percentile_99_5: 942.242431640625 - stdev: 220.99542236328125 - shape: - - [32, 49, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_345.nii.gz - label_stats: - image_intensity: - - max: 817.9187622070312 - mean: 383.730224609375 - median: 372.970947265625 - min: 39.260101318359375 - percentile: [150.49705505371094, 268.27734375, 516.9246826171875, 700.1384887695312] - percentile_00_5: 150.49705505371094 - percentile_10_0: 268.27734375 - percentile_90_0: 516.9246826171875 - percentile_99_5: 700.1384887695312 - stdev: 101.55867767333984 - label: - - image_intensity: - - max: 1779.791259765625 - mean: 529.2244262695312 - median: 556.1847534179688 - min: 0.0 - percentile: [32.71675109863281, 215.93055725097656, 798.2886962890625, 942.242431640625] - percentile_00_5: 32.71675109863281 - percentile_10_0: 215.93055725097656 - percentile_90_0: 798.2886962890625 - percentile_99_5: 942.242431640625 - stdev: 223.83828735351562 - ncomponents: 1 - pixel_percentage: 0.9366496801376343 - shape: - - [32, 49, 30] - - image_intensity: - - max: 759.0286254882812 - mean: 380.4695739746094 - median: 366.4276123046875 - min: 39.260101318359375 - percentile: [133.61521911621094, 261.7340087890625, 523.468017578125, 697.3899536132812] - percentile_00_5: 133.61521911621094 - percentile_10_0: 261.7340087890625 - percentile_90_0: 523.468017578125 - percentile_99_5: 697.3899536132812 - stdev: 104.3608169555664 - ncomponents: 1 - pixel_percentage: 0.035820577293634415 - shape: - - [19, 17, 13] - - image_intensity: - - max: 817.9187622070312 - mean: 387.9726867675781 - median: 372.970947265625 - min: 91.60690307617188 - percentile: [186.2891845703125, 287.90740966796875, 510.3813171386719, 723.629638671875] - percentile_00_5: 186.2891845703125 - percentile_10_0: 287.90740966796875 - percentile_90_0: 510.3813171386719 - percentile_99_5: 723.629638671875 - stdev: 97.62962341308594 - ncomponents: 1 - pixel_percentage: 0.0275297611951828 - shape: - - [20, 22, 14] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_238.nii.gz - image_foreground_stats: - intensity: - - max: 866.5263671875 - mean: 430.0534973144531 - median: 415.65087890625 - min: 21.134790420532227 - percentile: [183.16818237304688, 288.8421325683594, 591.7741088867188, 782.4808959960938] - percentile_00_5: 183.16818237304688 - percentile_10_0: 288.8421325683594 - percentile_90_0: 591.7741088867188 - percentile_99_5: 782.4808959960938 - stdev: 118.1028823852539 - image_stats: - channels: 1 - cropped_shape: - - [37, 56, 36] - intensity: - - max: 2345.961669921875 - mean: 559.8272094726562 - median: 556.5494384765625 - min: 0.0 - percentile: [28.179719924926758, 183.16818237304688, 915.8408813476562, 1042.649658203125] - percentile_00_5: 28.179719924926758 - percentile_10_0: 183.16818237304688 - percentile_90_0: 915.8408813476562 - percentile_99_5: 1042.649658203125 - stdev: 271.83837890625 - shape: - - [37, 56, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_238.nii.gz - label_stats: - image_intensity: - - max: 866.5263671875 - mean: 430.0534973144531 - median: 415.65087890625 - min: 21.134790420532227 - percentile: [183.16818237304688, 288.8421325683594, 591.7741088867188, 782.4808959960938] - percentile_00_5: 183.16818237304688 - percentile_10_0: 288.8421325683594 - percentile_90_0: 591.7741088867188 - percentile_99_5: 782.4808959960938 - stdev: 118.1028823852539 - label: - - image_intensity: - - max: 2345.961669921875 - mean: 567.1553955078125 - median: 577.6842651367188 - min: 0.0 - percentile: [21.134790420532227, 176.1232452392578, 915.8408813476562, 1049.694580078125] - percentile_00_5: 21.134790420532227 - percentile_10_0: 176.1232452392578 - percentile_90_0: 915.8408813476562 - percentile_99_5: 1049.694580078125 - stdev: 276.1821594238281 - ncomponents: 1 - pixel_percentage: 0.9465492367744446 - shape: - - [37, 56, 36] - - image_intensity: - - max: 859.4814453125 - mean: 431.87994384765625 - median: 422.69580078125 - min: 21.134790420532227 - percentile: [183.16818237304688, 302.9319763183594, 577.6842651367188, 753.669921875] - percentile_00_5: 183.16818237304688 - percentile_10_0: 302.9319763183594 - percentile_90_0: 577.6842651367188 - percentile_99_5: 753.669921875 - stdev: 109.42985534667969 - ncomponents: 1 - pixel_percentage: 0.03086121752858162 - shape: - - [26, 20, 16] - - image_intensity: - - max: 866.5263671875 - mean: 427.5582580566406 - median: 408.6059265136719 - min: 119.76380920410156 - percentile: [190.21310424804688, 281.7972106933594, 605.8639526367188, 800.162841796875] - percentile_00_5: 190.21310424804688 - percentile_10_0: 281.7972106933594 - percentile_90_0: 605.8639526367188 - percentile_99_5: 800.162841796875 - stdev: 128.970947265625 - ncomponents: 1 - pixel_percentage: 0.022589553147554398 - shape: - - [15, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_338.nii.gz - image_foreground_stats: - intensity: - - max: 699.834716796875 - mean: 320.0660400390625 - median: 309.5422668457031 - min: 33.64590072631836 - percentile: [108.4070816040039, 222.0629425048828, 444.1258850097656, 625.0744018554688] - percentile_00_5: 108.4070816040039 - percentile_10_0: 222.0629425048828 - percentile_90_0: 444.1258850097656 - percentile_99_5: 625.0744018554688 - stdev: 90.90975189208984 - image_stats: - channels: 1 - cropped_shape: - - [37, 43, 43] - intensity: - - max: 1951.462158203125 - mean: 432.2680358886719 - median: 450.85504150390625 - min: 0.0 - percentile: [20.18754005432129, 121.12523651123047, 679.6471557617188, 841.1474609375] - percentile_00_5: 20.18754005432129 - percentile_10_0: 121.12523651123047 - percentile_90_0: 679.6471557617188 - percentile_99_5: 841.1474609375 - stdev: 213.0406494140625 - shape: - - [37, 43, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_338.nii.gz - label_stats: - image_intensity: - - max: 699.834716796875 - mean: 320.0660400390625 - median: 309.5422668457031 - min: 33.64590072631836 - percentile: [108.4070816040039, 222.0629425048828, 444.1258850097656, 625.0744018554688] - percentile_00_5: 108.4070816040039 - percentile_10_0: 222.0629425048828 - percentile_90_0: 444.1258850097656 - percentile_99_5: 625.0744018554688 - stdev: 90.90975189208984 - label: - - image_intensity: - - max: 1951.462158203125 - mean: 438.54229736328125 - median: 471.0426025390625 - min: 0.0 - percentile: [20.18754005432129, 114.39605712890625, 679.6471557617188, 841.5154418945312] - percentile_00_5: 20.18754005432129 - percentile_10_0: 114.39605712890625 - percentile_90_0: 679.6471557617188 - percentile_99_5: 841.5154418945312 - stdev: 216.145263671875 - ncomponents: 1 - pixel_percentage: 0.9470422267913818 - shape: - - [37, 43, 43] - - image_intensity: - - max: 679.6471557617188 - mean: 330.44061279296875 - median: 316.2714538574219 - min: 67.29180145263672 - percentile: [107.66687774658203, 235.52130126953125, 450.85504150390625, 612.1532592773438] - percentile_00_5: 107.66687774658203 - percentile_10_0: 235.52130126953125 - percentile_90_0: 450.85504150390625 - percentile_99_5: 612.1532592773438 - stdev: 87.88365936279297 - ncomponents: 1 - pixel_percentage: 0.029336528852581978 - shape: - - [23, 15, 19] - - image_intensity: - - max: 699.834716796875 - mean: 307.1812438964844 - median: 289.354736328125 - min: 33.64590072631836 - percentile: [127.85441589355469, 215.33375549316406, 430.6675109863281, 632.5429077148438] - percentile_00_5: 127.85441589355469 - percentile_10_0: 215.33375549316406 - percentile_90_0: 430.6675109863281 - percentile_99_5: 632.5429077148438 - stdev: 92.93462371826172 - ncomponents: 1 - pixel_percentage: 0.023621242493391037 - shape: - - [24, 18, 27] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_349.nii.gz - image_foreground_stats: - intensity: - - max: 962.0310668945312 - mean: 469.5776062011719 - median: 461.13885498046875 - min: 71.5560302734375 - percentile: [190.81607055664062, 333.9281311035156, 620.1522216796875, 898.8624267578125] - percentile_00_5: 190.81607055664062 - percentile_10_0: 333.9281311035156 - percentile_90_0: 620.1522216796875 - percentile_99_5: 898.8624267578125 - stdev: 119.70670318603516 - image_stats: - channels: 1 - cropped_shape: - - [34, 50, 34] - intensity: - - max: 2226.1875 - mean: 643.1356811523438 - median: 667.8562622070312 - min: 0.0 - percentile: [31.80267906188965, 254.4214324951172, 985.883056640625, 1136.94580078125] - percentile_00_5: 31.80267906188965 - percentile_10_0: 254.4214324951172 - percentile_90_0: 985.883056640625 - percentile_99_5: 1136.94580078125 - stdev: 276.0068664550781 - shape: - - [34, 50, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_349.nii.gz - label_stats: - image_intensity: - - max: 962.0310668945312 - mean: 469.5776062011719 - median: 461.13885498046875 - min: 71.5560302734375 - percentile: [190.81607055664062, 333.9281311035156, 620.1522216796875, 898.8624267578125] - percentile_00_5: 190.81607055664062 - percentile_10_0: 333.9281311035156 - percentile_90_0: 620.1522216796875 - percentile_99_5: 898.8624267578125 - stdev: 119.70670318603516 - label: - - image_intensity: - - max: 2226.1875 - mean: 651.2777099609375 - median: 691.708251953125 - min: 0.0 - percentile: [31.80267906188965, 246.47076416015625, 985.883056640625, 1136.94580078125] - percentile_00_5: 31.80267906188965 - percentile_10_0: 246.47076416015625 - percentile_90_0: 985.883056640625 - percentile_99_5: 1136.94580078125 - stdev: 278.5711975097656 - ncomponents: 1 - pixel_percentage: 0.9551903009414673 - shape: - - [34, 50, 34] - - image_intensity: - - max: 922.2777099609375 - mean: 468.6322021484375 - median: 461.13885498046875 - min: 71.5560302734375 - percentile: [167.60011291503906, 341.8788146972656, 604.2509155273438, 881.2529296875] - percentile_00_5: 167.60011291503906 - percentile_10_0: 341.8788146972656 - percentile_90_0: 604.2509155273438 - percentile_99_5: 881.2529296875 - stdev: 112.98323059082031 - ncomponents: 1 - pixel_percentage: 0.02105536311864853 - shape: - - [19, 17, 13] - - image_intensity: - - max: 962.0310668945312 - mean: 470.4156188964844 - median: 453.18817138671875 - min: 151.06272888183594 - percentile: [221.5056610107422, 327.56756591796875, 636.0535888671875, 915.4402465820312] - percentile_00_5: 221.5056610107422 - percentile_10_0: 327.56756591796875 - percentile_90_0: 636.0535888671875 - percentile_99_5: 915.4402465820312 - stdev: 125.35918426513672 - ncomponents: 1 - pixel_percentage: 0.02375432476401329 - shape: - - [22, 23, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_249.nii.gz - image_foreground_stats: - intensity: - - max: 1088.947021484375 - mean: 467.9893798828125 - median: 456.18048095703125 - min: 36.78874969482422 - percentile: [137.8842315673828, 331.0987548828125, 618.051025390625, 905.0032348632812] - percentile_00_5: 137.8842315673828 - percentile_10_0: 331.0987548828125 - percentile_90_0: 618.051025390625 - percentile_99_5: 905.0032348632812 - stdev: 124.7997817993164 - image_stats: - channels: 1 - cropped_shape: - - [32, 52, 34] - intensity: - - max: 1942.446044921875 - mean: 608.9041748046875 - median: 588.6199951171875 - min: 0.0 - percentile: [36.78874969482422, 235.447998046875, 993.2962646484375, 1155.166748046875] - percentile_00_5: 36.78874969482422 - percentile_10_0: 235.447998046875 - percentile_90_0: 993.2962646484375 - percentile_99_5: 1155.166748046875 - stdev: 278.94866943359375 - shape: - - [32, 52, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_249.nii.gz - label_stats: - image_intensity: - - max: 1088.947021484375 - mean: 467.9893798828125 - median: 456.18048095703125 - min: 36.78874969482422 - percentile: [137.8842315673828, 331.0987548828125, 618.051025390625, 905.0032348632812] - percentile_00_5: 137.8842315673828 - percentile_10_0: 331.0987548828125 - percentile_90_0: 618.051025390625 - percentile_99_5: 905.0032348632812 - stdev: 124.7997817993164 - label: - - image_intensity: - - max: 1942.446044921875 - mean: 617.7703857421875 - median: 610.6932373046875 - min: 0.0 - percentile: [36.78874969482422, 228.09024047851562, 1000.6539916992188, 1162.5245361328125] - percentile_00_5: 36.78874969482422 - percentile_10_0: 228.09024047851562 - percentile_90_0: 1000.6539916992188 - percentile_99_5: 1162.5245361328125 - stdev: 283.5494689941406 - ncomponents: 1 - pixel_percentage: 0.9408053159713745 - shape: - - [32, 52, 34] - - image_intensity: - - max: 897.6455078125 - mean: 462.24322509765625 - median: 456.18048095703125 - min: 36.78874969482422 - percentile: [101.75768280029297, 331.0987548828125, 603.3355102539062, 795.2620849609375] - percentile_00_5: 101.75768280029297 - percentile_10_0: 331.0987548828125 - percentile_90_0: 603.3355102539062 - percentile_99_5: 795.2620849609375 - stdev: 116.77919006347656 - ncomponents: 1 - pixel_percentage: 0.031532805413007736 - shape: - - [23, 18, 14] - - image_intensity: - - max: 1088.947021484375 - mean: 474.53961181640625 - median: 456.18048095703125 - min: 36.78874969482422 - percentile: [197.3348388671875, 338.45648193359375, 632.7664794921875, 956.5075073242188] - percentile_00_5: 197.3348388671875 - percentile_10_0: 338.45648193359375 - percentile_90_0: 632.7664794921875 - percentile_99_5: 956.5075073242188 - stdev: 133.0533447265625 - ncomponents: 1 - pixel_percentage: 0.02766190655529499 - shape: - - [16, 24, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_334.nii.gz - image_foreground_stats: - intensity: - - max: 911.4951782226562 - mean: 388.3150939941406 - median: 375.9273681640625 - min: 20.5987606048584 - percentile: [84.37767028808594, 236.8857421875, 561.3162231445312, 775.6205444335938] - percentile_00_5: 84.37767028808594 - percentile_10_0: 236.8857421875 - percentile_90_0: 561.3162231445312 - percentile_99_5: 775.6205444335938 - stdev: 126.49773406982422 - image_stats: - channels: 1 - cropped_shape: - - [34, 47, 36] - intensity: - - max: 2482.150634765625 - mean: 514.087646484375 - median: 535.5677490234375 - min: 0.0 - percentile: [36.04783248901367, 211.13729858398438, 772.4535522460938, 968.1417236328125] - percentile_00_5: 36.04783248901367 - percentile_10_0: 211.13729858398438 - percentile_90_0: 772.4535522460938 - percentile_99_5: 968.1417236328125 - stdev: 214.4650421142578 - shape: - - [34, 47, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_334.nii.gz - label_stats: - image_intensity: - - max: 911.4951782226562 - mean: 388.3150939941406 - median: 375.9273681640625 - min: 20.5987606048584 - percentile: [84.37767028808594, 236.8857421875, 561.3162231445312, 775.6205444335938] - percentile_00_5: 84.37767028808594 - percentile_10_0: 236.8857421875 - percentile_90_0: 561.3162231445312 - percentile_99_5: 775.6205444335938 - stdev: 126.49773406982422 - label: - - image_intensity: - - max: 2482.150634765625 - mean: 520.2283325195312 - median: 545.8671264648438 - min: 0.0 - percentile: [36.04783248901367, 205.98760986328125, 777.6032104492188, 968.1417236328125] - percentile_00_5: 36.04783248901367 - percentile_10_0: 205.98760986328125 - percentile_90_0: 777.6032104492188 - percentile_99_5: 968.1417236328125 - stdev: 215.98526000976562 - ncomponents: 1 - pixel_percentage: 0.9534487724304199 - shape: - - [34, 47, 36] - - image_intensity: - - max: 911.4951782226562 - mean: 409.1018371582031 - median: 396.5261535644531 - min: 77.24535369873047 - percentile: [139.04164123535156, 267.78387451171875, 576.7653198242188, 777.6032104492188] - percentile_00_5: 139.04164123535156 - percentile_10_0: 267.78387451171875 - percentile_90_0: 576.7653198242188 - percentile_99_5: 777.6032104492188 - stdev: 125.19595336914062 - ncomponents: 1 - pixel_percentage: 0.021589485928416252 - shape: - - [18, 16, 12] - - image_intensity: - - max: 854.8485717773438 - mean: 370.3365478515625 - median: 360.4783020019531 - min: 20.5987606048584 - percentile: [62.69747543334961, 218.86183166503906, 535.5677490234375, 745.8036499023438] - percentile_00_5: 62.69747543334961 - percentile_10_0: 218.86183166503906 - percentile_90_0: 535.5677490234375 - percentile_99_5: 745.8036499023438 - stdev: 124.85237121582031 - ncomponents: 1 - pixel_percentage: 0.02496175840497017 - shape: - - [19, 20, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_083.nii.gz - image_foreground_stats: - intensity: - - max: 1153.025390625 - mean: 409.918212890625 - median: 392.18548583984375 - min: 23.531129837036133 - percentile: [141.18678283691406, 282.3735656738281, 564.7471313476562, 800.0584106445312] - percentile_00_5: 141.18678283691406 - percentile_10_0: 282.3735656738281 - percentile_90_0: 564.7471313476562 - percentile_99_5: 800.0584106445312 - stdev: 117.95269775390625 - image_stats: - channels: 1 - cropped_shape: - - [33, 52, 37] - intensity: - - max: 1796.2095947265625 - mean: 526.3087158203125 - median: 517.6848754882812 - min: 0.0 - percentile: [31.374839782714844, 219.62387084960938, 831.4332275390625, 956.9326171875] - percentile_00_5: 31.374839782714844 - percentile_10_0: 219.62387084960938 - percentile_90_0: 831.4332275390625 - percentile_99_5: 956.9326171875 - stdev: 229.38339233398438 - shape: - - [33, 52, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_083.nii.gz - label_stats: - image_intensity: - - max: 1153.025390625 - mean: 409.918212890625 - median: 392.18548583984375 - min: 23.531129837036133 - percentile: [141.18678283691406, 282.3735656738281, 564.7471313476562, 800.0584106445312] - percentile_00_5: 141.18678283691406 - percentile_10_0: 282.3735656738281 - percentile_90_0: 564.7471313476562 - percentile_99_5: 800.0584106445312 - stdev: 117.95269775390625 - label: - - image_intensity: - - max: 1796.2095947265625 - mean: 532.8347778320312 - median: 533.3722534179688 - min: 0.0 - percentile: [31.374839782714844, 211.78016662597656, 831.4332275390625, 964.7763061523438] - percentile_00_5: 31.374839782714844 - percentile_10_0: 211.78016662597656 - percentile_90_0: 831.4332275390625 - percentile_99_5: 964.7763061523438 - stdev: 232.3461151123047 - ncomponents: 1 - pixel_percentage: 0.9469066858291626 - shape: - - [33, 52, 37] - - image_intensity: - - max: 1153.025390625 - mean: 408.3245544433594 - median: 392.18548583984375 - min: 31.374839782714844 - percentile: [143.10848999023438, 290.2172546386719, 533.3722534179688, 808.0591430664062] - percentile_00_5: 143.10848999023438 - percentile_10_0: 290.2172546386719 - percentile_90_0: 533.3722534179688 - percentile_99_5: 808.0591430664062 - stdev: 108.66050720214844 - ncomponents: 1 - pixel_percentage: 0.025987526401877403 - shape: - - [21, 16, 15] - - image_intensity: - - max: 847.1206665039062 - mean: 411.44610595703125 - median: 384.341796875 - min: 23.531129837036133 - percentile: [150.59922790527344, 282.3735656738281, 588.2782592773438, 800.0584106445312] - percentile_00_5: 150.59922790527344 - percentile_10_0: 282.3735656738281 - percentile_90_0: 588.2782592773438 - percentile_99_5: 800.0584106445312 - stdev: 126.20195770263672 - ncomponents: 1 - pixel_percentage: 0.027105776593089104 - shape: - - [15, 25, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_234.nii.gz - image_foreground_stats: - intensity: - - max: 931.4192504882812 - mean: 438.3704528808594 - median: 415.6747131347656 - min: 130.86056518554688 - percentile: [192.44200134277344, 292.5118408203125, 615.8143920898438, 831.3494262695312] - percentile_00_5: 192.44200134277344 - percentile_10_0: 292.5118408203125 - percentile_90_0: 615.8143920898438 - percentile_99_5: 831.3494262695312 - stdev: 127.88140869140625 - image_stats: - channels: 1 - cropped_shape: - - [38, 49, 36] - intensity: - - max: 2632.6064453125 - mean: 565.7575073242188 - median: 592.7213745117188 - min: 0.0 - percentile: [30.790719985961914, 200.13967895507812, 877.5355224609375, 1023.7914428710938] - percentile_00_5: 30.790719985961914 - percentile_10_0: 200.13967895507812 - percentile_90_0: 877.5355224609375 - percentile_99_5: 1023.7914428710938 - stdev: 259.0853576660156 - shape: - - [38, 49, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_234.nii.gz - label_stats: - image_intensity: - - max: 931.4192504882812 - mean: 438.3704528808594 - median: 415.6747131347656 - min: 130.86056518554688 - percentile: [192.44200134277344, 292.5118408203125, 615.8143920898438, 831.3494262695312] - percentile_00_5: 192.44200134277344 - percentile_10_0: 292.5118408203125 - percentile_90_0: 615.8143920898438 - percentile_99_5: 831.3494262695312 - stdev: 127.88140869140625 - label: - - image_intensity: - - max: 2632.6064453125 - mean: 572.1771240234375 - median: 608.11669921875 - min: 0.0 - percentile: [30.790719985961914, 192.44200134277344, 885.2332153320312, 1023.7914428710938] - percentile_00_5: 30.790719985961914 - percentile_10_0: 192.44200134277344 - percentile_90_0: 885.2332153320312 - percentile_99_5: 1023.7914428710938 - stdev: 262.34490966796875 - ncomponents: 1 - pixel_percentage: 0.952022910118103 - shape: - - [38, 49, 36] - - image_intensity: - - max: 931.4192504882812 - mean: 438.2310791015625 - median: 423.3724060058594 - min: 161.65127563476562 - percentile: [192.44200134277344, 292.5118408203125, 592.7213745117188, 812.2593383789062] - percentile_00_5: 192.44200134277344 - percentile_10_0: 292.5118408203125 - percentile_90_0: 592.7213745117188 - percentile_99_5: 812.2593383789062 - stdev: 120.1563949584961 - ncomponents: 1 - pixel_percentage: 0.02310836687684059 - shape: - - [23, 15, 14] - - image_intensity: - - max: 877.5355224609375 - mean: 438.4999084472656 - median: 407.97705078125 - min: 130.86056518554688 - percentile: [194.98223876953125, 292.5118408203125, 638.9074096679688, 836.5072021484375] - percentile_00_5: 194.98223876953125 - percentile_10_0: 292.5118408203125 - percentile_90_0: 638.9074096679688 - percentile_99_5: 836.5072021484375 - stdev: 134.66285705566406 - ncomponents: 1 - pixel_percentage: 0.024868719279766083 - shape: - - [21, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_257.nii.gz - image_foreground_stats: - intensity: - - max: 602.5745239257812 - mean: 273.3420715332031 - median: 264.39495849609375 - min: 0.0 - percentile: [79.93335723876953, 196.759033203125, 362.77447509765625, 534.9385986328125] - percentile_00_5: 79.93335723876953 - percentile_10_0: 196.759033203125 - percentile_90_0: 362.77447509765625 - percentile_99_5: 534.9385986328125 - stdev: 71.91963195800781 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 33] - intensity: - - max: 1205.1490478515625 - mean: 372.30389404296875 - median: 375.0718994140625 - min: 0.0 - percentile: [18.44615936279297, 141.42056274414062, 596.4258422851562, 694.8053588867188] - percentile_00_5: 18.44615936279297 - percentile_10_0: 141.42056274414062 - percentile_90_0: 596.4258422851562 - percentile_99_5: 694.8053588867188 - stdev: 171.08517456054688 - shape: - - [34, 51, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_257.nii.gz - label_stats: - image_intensity: - - max: 602.5745239257812 - mean: 273.3420715332031 - median: 264.39495849609375 - min: 0.0 - percentile: [79.93335723876953, 196.759033203125, 362.77447509765625, 534.9385986328125] - percentile_00_5: 79.93335723876953 - percentile_10_0: 196.759033203125 - percentile_90_0: 362.77447509765625 - percentile_99_5: 534.9385986328125 - stdev: 71.91963195800781 - label: - - image_intensity: - - max: 1205.1490478515625 - mean: 377.5160827636719 - median: 387.3693542480469 - min: 0.0 - percentile: [18.44615936279297, 135.27183532714844, 596.4258422851562, 694.8053588867188] - percentile_00_5: 18.44615936279297 - percentile_10_0: 135.27183532714844 - percentile_90_0: 596.4258422851562 - percentile_99_5: 694.8053588867188 - stdev: 173.19456481933594 - ncomponents: 1 - pixel_percentage: 0.9499667882919312 - shape: - - [34, 51, 33] - - image_intensity: - - max: 553.384765625 - mean: 280.5430908203125 - median: 270.5436706542969 - min: 18.44615936279297 - percentile: [122.97439575195312, 209.0564727783203, 362.77447509765625, 504.5950622558594] - percentile_00_5: 122.97439575195312 - percentile_10_0: 209.0564727783203 - percentile_90_0: 362.77447509765625 - percentile_99_5: 504.5950622558594 - stdev: 64.75131225585938 - ncomponents: 1 - pixel_percentage: 0.020761245861649513 - shape: - - [20, 15, 13] - - image_intensity: - - max: 602.5745239257812 - mean: 268.23468017578125 - median: 258.2462158203125 - min: 0.0 - percentile: [61.48719787597656, 190.61032104492188, 356.625732421875, 534.9385986328125] - percentile_00_5: 61.48719787597656 - percentile_10_0: 190.61032104492188 - percentile_90_0: 356.625732421875 - percentile_99_5: 534.9385986328125 - stdev: 76.1867904663086 - ncomponents: 1 - pixel_percentage: 0.029271958395838737 - shape: - - [23, 25, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_302.nii.gz - image_foreground_stats: - intensity: - - max: 834.0167236328125 - mean: 385.4877624511719 - median: 369.2593078613281 - min: 114.59771728515625 - percentile: [184.62965393066406, 273.76123046875, 522.0562744140625, 738.5186157226562] - percentile_00_5: 184.62965393066406 - percentile_10_0: 273.76123046875 - percentile_90_0: 522.0562744140625 - percentile_99_5: 738.5186157226562 - stdev: 102.15958404541016 - image_stats: - channels: 1 - cropped_shape: - - [35, 46, 39] - intensity: - - max: 3196.003173828125 - mean: 529.1419067382812 - median: 528.4227905273438 - min: 0.0 - percentile: [31.832698822021484, 222.8289031982422, 821.2836303710938, 935.88134765625] - percentile_00_5: 31.832698822021484 - percentile_10_0: 222.8289031982422 - percentile_90_0: 821.2836303710938 - percentile_99_5: 935.88134765625 - stdev: 238.73043823242188 - shape: - - [35, 46, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_302.nii.gz - label_stats: - image_intensity: - - max: 834.0167236328125 - mean: 385.4877624511719 - median: 369.2593078613281 - min: 114.59771728515625 - percentile: [184.62965393066406, 273.76123046875, 522.0562744140625, 738.5186157226562] - percentile_00_5: 184.62965393066406 - percentile_10_0: 273.76123046875 - percentile_90_0: 522.0562744140625 - percentile_99_5: 738.5186157226562 - stdev: 102.15958404541016 - label: - - image_intensity: - - max: 3196.003173828125 - mean: 538.5410766601562 - median: 553.8889770507812 - min: 0.0 - percentile: [31.832698822021484, 216.4623565673828, 827.6502075195312, 935.88134765625] - percentile_00_5: 31.832698822021484 - percentile_10_0: 216.4623565673828 - percentile_90_0: 827.6502075195312 - percentile_99_5: 935.88134765625 - stdev: 242.07383728027344 - ncomponents: 1 - pixel_percentage: 0.9385889768600464 - shape: - - [35, 46, 39] - - image_intensity: - - max: 763.9848022460938 - mean: 376.4040222167969 - median: 369.2593078613281 - min: 114.59771728515625 - percentile: [172.1512451171875, 273.76123046875, 496.5901184082031, 642.765625] - percentile_00_5: 172.1512451171875 - percentile_10_0: 273.76123046875 - percentile_90_0: 496.5901184082031 - percentile_99_5: 642.765625 - stdev: 86.19374084472656 - ncomponents: 1 - pixel_percentage: 0.03518076241016388 - shape: - - [23, 16, 18] - - image_intensity: - - max: 834.0167236328125 - mean: 397.6709899902344 - median: 369.2593078613281 - min: 152.79696655273438 - percentile: [190.99620056152344, 273.76123046875, 579.3551635742188, 756.154052734375] - percentile_00_5: 190.99620056152344 - percentile_10_0: 273.76123046875 - percentile_90_0: 579.3551635742188 - percentile_99_5: 756.154052734375 - stdev: 119.20923614501953 - ncomponents: 1 - pixel_percentage: 0.02623029053211212 - shape: - - [19, 20, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_361.nii.gz - image_foreground_stats: - intensity: - - max: 950.6585693359375 - mean: 448.9566650390625 - median: 436.2611389160156 - min: 71.62496185302734 - percentile: [156.27264404296875, 325.5679931640625, 592.5337524414062, 833.4541015625] - percentile_00_5: 156.27264404296875 - percentile_10_0: 325.5679931640625 - percentile_90_0: 592.5337524414062 - percentile_99_5: 833.4541015625 - stdev: 111.89103698730469 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 33] - intensity: - - max: 3027.782470703125 - mean: 538.6607666015625 - median: 546.9542236328125 - min: 0.0 - percentile: [19.534080505371094, 156.27264404296875, 839.9654541015625, 1015.7976684570312] - percentile_00_5: 19.534080505371094 - percentile_10_0: 156.27264404296875 - percentile_90_0: 839.9654541015625 - percentile_99_5: 1015.7976684570312 - stdev: 257.528564453125 - shape: - - [36, 50, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_361.nii.gz - label_stats: - image_intensity: - - max: 950.6585693359375 - mean: 448.9566650390625 - median: 436.2611389160156 - min: 71.62496185302734 - percentile: [156.27264404296875, 325.5679931640625, 592.5337524414062, 833.4541015625] - percentile_00_5: 156.27264404296875 - percentile_10_0: 325.5679931640625 - percentile_90_0: 592.5337524414062 - percentile_99_5: 833.4541015625 - stdev: 111.89103698730469 - label: - - image_intensity: - - max: 3027.782470703125 - mean: 543.6085205078125 - median: 559.9769897460938 - min: 0.0 - percentile: [19.534080505371094, 149.76129150390625, 846.476806640625, 1025.74267578125] - percentile_00_5: 19.534080505371094 - percentile_10_0: 149.76129150390625 - percentile_90_0: 846.476806640625 - percentile_99_5: 1025.74267578125 - stdev: 262.3359069824219 - ncomponents: 1 - pixel_percentage: 0.9477272629737854 - shape: - - [36, 50, 33] - - image_intensity: - - max: 839.9654541015625 - mean: 452.95843505859375 - median: 442.7724914550781 - min: 71.62496185302734 - percentile: [175.80673217773438, 332.0793762207031, 586.0223999023438, 768.3405151367188] - percentile_00_5: 175.80673217773438 - percentile_10_0: 332.0793762207031 - percentile_90_0: 586.0223999023438 - percentile_99_5: 768.3405151367188 - stdev: 102.94772338867188 - ncomponents: 1 - pixel_percentage: 0.029175084084272385 - shape: - - [20, 20, 15] - - image_intensity: - - max: 950.6585693359375 - mean: 443.90203857421875 - median: 423.2384033203125 - min: 84.6476821899414 - percentile: [129.28305053710938, 325.5679931640625, 604.905517578125, 861.3880615234375] - percentile_00_5: 129.28305053710938 - percentile_10_0: 325.5679931640625 - percentile_90_0: 604.905517578125 - percentile_99_5: 861.3880615234375 - stdev: 122.06863403320312 - ncomponents: 1 - pixel_percentage: 0.02309764362871647 - shape: - - [23, 21, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_261.nii.gz - image_foreground_stats: - intensity: - - max: 1071.8126220703125 - mean: 458.62286376953125 - median: 448.0528564453125 - min: 8.78534984588623 - percentile: [122.9948959350586, 316.2725830078125, 623.7598266601562, 904.8910522460938] - percentile_00_5: 122.9948959350586 - percentile_10_0: 316.2725830078125 - percentile_90_0: 623.7598266601562 - percentile_99_5: 904.8910522460938 - stdev: 127.81913757324219 - image_stats: - channels: 1 - cropped_shape: - - [36, 58, 33] - intensity: - - max: 2749.814453125 - mean: 648.9852905273438 - median: 632.545166015625 - min: 0.0 - percentile: [35.14139938354492, 254.775146484375, 1045.4566650390625, 1194.8076171875] - percentile_00_5: 35.14139938354492 - percentile_10_0: 254.775146484375 - percentile_90_0: 1045.4566650390625 - percentile_99_5: 1194.8076171875 - stdev: 298.7189025878906 - shape: - - [36, 58, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_261.nii.gz - label_stats: - image_intensity: - - max: 1071.8126220703125 - mean: 458.62286376953125 - median: 448.0528564453125 - min: 8.78534984588623 - percentile: [122.9948959350586, 316.2725830078125, 623.7598266601562, 904.8910522460938] - percentile_00_5: 122.9948959350586 - percentile_10_0: 316.2725830078125 - percentile_90_0: 623.7598266601562 - percentile_99_5: 904.8910522460938 - stdev: 127.81913757324219 - label: - - image_intensity: - - max: 2749.814453125 - mean: 660.9385986328125 - median: 667.6865844726562 - min: 0.0 - percentile: [35.14139938354492, 245.9897918701172, 1045.4566650390625, 1194.8076171875] - percentile_00_5: 35.14139938354492 - percentile_10_0: 245.9897918701172 - percentile_90_0: 1045.4566650390625 - percentile_99_5: 1194.8076171875 - stdev: 302.3109436035156 - ncomponents: 1 - pixel_percentage: 0.9409177899360657 - shape: - - [36, 58, 33] - - image_intensity: - - max: 1001.5299072265625 - mean: 459.870361328125 - median: 456.83819580078125 - min: 17.57069969177246 - percentile: [131.78024291992188, 307.48724365234375, 623.7598266601562, 817.0375366210938] - percentile_00_5: 131.78024291992188 - percentile_10_0: 307.48724365234375 - percentile_90_0: 623.7598266601562 - percentile_99_5: 817.0375366210938 - stdev: 126.04936218261719 - ncomponents: 1 - pixel_percentage: 0.03481655567884445 - shape: - - [24, 22, 14] - - image_intensity: - - max: 1071.8126220703125 - mean: 456.8329162597656 - median: 439.2674865722656 - min: 8.78534984588623 - percentile: [122.9948959350586, 316.2725830078125, 614.9744873046875, 948.8178100585938] - percentile_00_5: 122.9948959350586 - percentile_10_0: 316.2725830078125 - percentile_90_0: 614.9744873046875 - percentile_99_5: 948.8178100585938 - stdev: 130.2955780029297 - ncomponents: 1 - pixel_percentage: 0.024265645071864128 - shape: - - [21, 25, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_210.nii.gz - image_foreground_stats: - intensity: - - max: 414986.375 - mean: 206254.09375 - median: 199573.609375 - min: 38014.01953125 - percentile: [82363.7109375, 145720.40625, 275601.65625, 380140.1875] - percentile_00_5: 82363.7109375 - percentile_10_0: 145720.40625 - percentile_90_0: 275601.65625 - percentile_99_5: 380140.1875 - stdev: 53173.0078125 - image_stats: - channels: 1 - cropped_shape: - - [34, 48, 40] - intensity: - - max: 1704295.25 - mean: 279512.4375 - median: 291440.8125 - min: 0.0 - percentile: [15839.1748046875, 126713.3984375, 421322.0625, 478343.09375] - percentile_00_5: 15839.1748046875 - percentile_10_0: 126713.3984375 - percentile_90_0: 421322.0625 - percentile_99_5: 478343.09375 - stdev: 115614.6875 - shape: - - [34, 48, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_210.nii.gz - label_stats: - image_intensity: - - max: 414986.375 - mean: 206254.09375 - median: 199573.609375 - min: 38014.01953125 - percentile: [82363.7109375, 145720.40625, 275601.65625, 380140.1875] - percentile_00_5: 82363.7109375 - percentile_10_0: 145720.40625 - percentile_90_0: 275601.65625 - percentile_99_5: 380140.1875 - stdev: 53173.0078125 - label: - - image_intensity: - - max: 1704295.25 - mean: 283035.09375 - median: 297776.5 - min: 0.0 - percentile: [15839.1748046875, 123545.5625, 421322.0625, 478343.09375] - percentile_00_5: 15839.1748046875 - percentile_10_0: 123545.5625 - percentile_90_0: 421322.0625 - percentile_99_5: 478343.09375 - stdev: 116632.2265625 - ncomponents: 1 - pixel_percentage: 0.9541206955909729 - shape: - - [34, 48, 40] - - image_intensity: - - max: 383308.03125 - mean: 206254.8125 - median: 202741.4375 - min: 38014.01953125 - percentile: [79195.875, 152056.078125, 269265.96875, 335790.5] - percentile_00_5: 79195.875 - percentile_10_0: 152056.078125 - percentile_90_0: 269265.96875 - percentile_99_5: 335790.5 - stdev: 47527.3359375 - ncomponents: 1 - pixel_percentage: 0.025137867778539658 - shape: - - [22, 16, 13] - - image_intensity: - - max: 414986.375 - mean: 206253.1875 - median: 196405.765625 - min: 47517.5234375 - percentile: [95035.046875, 139384.734375, 288272.96875, 391876.875] - percentile_00_5: 95035.046875 - percentile_10_0: 139384.734375 - percentile_90_0: 288272.96875 - percentile_99_5: 391876.875 - stdev: 59299.2109375 - ncomponents: 1 - pixel_percentage: 0.020741421729326248 - shape: - - [18, 23, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_310.nii.gz - image_foreground_stats: - intensity: - - max: 1100.571044921875 - mean: 472.1031494140625 - median: 438.57342529296875 - min: 49.649818420410156 - percentile: [107.5746078491211, 281.3489685058594, 719.9224243164062, 984.721435546875] - percentile_00_5: 107.5746078491211 - percentile_10_0: 281.3489685058594 - percentile_90_0: 719.9224243164062 - percentile_99_5: 984.721435546875 - stdev: 175.29486083984375 - image_stats: - channels: 1 - cropped_shape: - - [35, 52, 38] - intensity: - - max: 4542.95849609375 - mean: 633.7997436523438 - median: 653.72265625 - min: 0.0 - percentile: [33.09988021850586, 223.4241943359375, 976.4464721679688, 1282.620361328125] - percentile_00_5: 33.09988021850586 - percentile_10_0: 223.4241943359375 - percentile_90_0: 976.4464721679688 - percentile_99_5: 1282.620361328125 - stdev: 314.14697265625 - shape: - - [35, 52, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_310.nii.gz - label_stats: - image_intensity: - - max: 1100.571044921875 - mean: 472.1031494140625 - median: 438.57342529296875 - min: 49.649818420410156 - percentile: [107.5746078491211, 281.3489685058594, 719.9224243164062, 984.721435546875] - percentile_00_5: 107.5746078491211 - percentile_10_0: 281.3489685058594 - percentile_90_0: 719.9224243164062 - percentile_99_5: 984.721435546875 - stdev: 175.29486083984375 - label: - - image_intensity: - - max: 4542.95849609375 - mean: 643.1300659179688 - median: 678.5475463867188 - min: 0.0 - percentile: [33.09988021850586, 215.1492156982422, 984.721435546875, 1341.126953125] - percentile_00_5: 33.09988021850586 - percentile_10_0: 215.1492156982422 - percentile_90_0: 984.721435546875 - percentile_99_5: 1341.126953125 - stdev: 317.82708740234375 - ncomponents: 1 - pixel_percentage: 0.9454453587532043 - shape: - - [35, 52, 38] - - image_intensity: - - max: 1059.1961669921875 - mean: 480.5111389160156 - median: 455.12335205078125 - min: 49.649818420410156 - percentile: [83.65994262695312, 291.2789306640625, 695.0974731445312, 984.721435546875] - percentile_00_5: 83.65994262695312 - percentile_10_0: 291.2789306640625 - percentile_90_0: 695.0974731445312 - percentile_99_5: 984.721435546875 - stdev: 168.72547912597656 - ncomponents: 1 - pixel_percentage: 0.02635916694998741 - shape: - - [21, 15, 16] - - image_intensity: - - max: 1100.571044921875 - mean: 464.2427673339844 - median: 422.0234680175781 - min: 82.74970245361328 - percentile: [132.39952087402344, 281.3489685058594, 753.8495483398438, 984.721435546875] - percentile_00_5: 132.39952087402344 - percentile_10_0: 281.3489685058594 - percentile_90_0: 753.8495483398438 - percentile_99_5: 984.721435546875 - stdev: 180.86798095703125 - ncomponents: 1 - pixel_percentage: 0.028195489197969437 - shape: - - [22, 26, 26] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_373.nii.gz - image_foreground_stats: - intensity: - - max: 760.7896728515625 - mean: 364.38739013671875 - median: 354.6053466796875 - min: 64.47370147705078 - percentile: [174.07899475097656, 264.3421630859375, 483.5527648925781, 670.5264892578125] - percentile_00_5: 174.07899475097656 - percentile_10_0: 264.3421630859375 - percentile_90_0: 483.5527648925781 - percentile_99_5: 670.5264892578125 - stdev: 90.96696472167969 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 35] - intensity: - - max: 1624.7373046875 - mean: 451.407470703125 - median: 451.31591796875 - min: 0.0 - percentile: [25.789480209350586, 167.63162231445312, 709.210693359375, 818.8159790039062] - percentile_00_5: 25.789480209350586 - percentile_10_0: 167.63162231445312 - percentile_90_0: 709.210693359375 - percentile_99_5: 818.8159790039062 - stdev: 201.9655303955078 - shape: - - [34, 49, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_373.nii.gz - label_stats: - image_intensity: - - max: 760.7896728515625 - mean: 364.38739013671875 - median: 354.6053466796875 - min: 64.47370147705078 - percentile: [174.07899475097656, 264.3421630859375, 483.5527648925781, 670.5264892578125] - percentile_00_5: 174.07899475097656 - percentile_10_0: 264.3421630859375 - percentile_90_0: 483.5527648925781 - percentile_99_5: 670.5264892578125 - stdev: 90.96696472167969 - label: - - image_intensity: - - max: 1624.7373046875 - mean: 457.2846374511719 - median: 470.65802001953125 - min: 0.0 - percentile: [25.789480209350586, 161.1842498779297, 715.6580810546875, 818.8159790039062] - percentile_00_5: 25.789480209350586 - percentile_10_0: 161.1842498779297 - percentile_90_0: 715.6580810546875 - percentile_99_5: 818.8159790039062 - stdev: 206.00997924804688 - ncomponents: 1 - pixel_percentage: 0.936734676361084 - shape: - - [34, 49, 35] - - image_intensity: - - max: 670.5264892578125 - mean: 364.8622131347656 - median: 361.052734375 - min: 64.47370147705078 - percentile: [170.24281311035156, 264.3421630859375, 470.65802001953125, 620.1721801757812] - percentile_00_5: 170.24281311035156 - percentile_10_0: 264.3421630859375 - percentile_90_0: 470.65802001953125 - percentile_99_5: 620.1721801757812 - stdev: 81.29158020019531 - ncomponents: 1 - pixel_percentage: 0.032275766134262085 - shape: - - [24, 15, 15] - - image_intensity: - - max: 760.7896728515625 - mean: 363.8928527832031 - median: 341.7106018066406 - min: 128.94740295410156 - percentile: [174.07899475097656, 257.8948059082031, 502.8948669433594, 702.5697021484375] - percentile_00_5: 174.07899475097656 - percentile_10_0: 257.8948059082031 - percentile_90_0: 502.8948669433594 - percentile_99_5: 702.5697021484375 - stdev: 100.0517578125 - ncomponents: 1 - pixel_percentage: 0.03098953887820244 - shape: - - [20, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_355.nii.gz - image_foreground_stats: - intensity: - - max: 1228.683837890625 - mean: 504.0153503417969 - median: 488.5128479003906 - min: 88.82051849365234 - percentile: [249.215576171875, 384.888916015625, 643.9487915039062, 1006.632568359375] - percentile_00_5: 249.215576171875 - percentile_10_0: 384.888916015625 - percentile_90_0: 643.9487915039062 - percentile_99_5: 1006.632568359375 - stdev: 117.16046142578125 - image_stats: - channels: 1 - cropped_shape: - - [33, 47, 38] - intensity: - - max: 4418.82080078125 - mean: 708.53857421875 - median: 710.5641479492188 - min: 0.0 - percentile: [51.81196975708008, 355.2820739746094, 1073.2479248046875, 1364.256591796875] - percentile_00_5: 51.81196975708008 - percentile_10_0: 355.2820739746094 - percentile_90_0: 1073.2479248046875 - percentile_99_5: 1364.256591796875 - stdev: 301.9975280761719 - shape: - - [33, 47, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_355.nii.gz - label_stats: - image_intensity: - - max: 1228.683837890625 - mean: 504.0153503417969 - median: 488.5128479003906 - min: 88.82051849365234 - percentile: [249.215576171875, 384.888916015625, 643.9487915039062, 1006.632568359375] - percentile_00_5: 249.215576171875 - percentile_10_0: 384.888916015625 - percentile_90_0: 643.9487915039062 - percentile_99_5: 1006.632568359375 - stdev: 117.16046142578125 - label: - - image_intensity: - - max: 4418.82080078125 - mean: 720.8057250976562 - median: 740.1710205078125 - min: 0.0 - percentile: [51.81196975708008, 347.88037109375, 1080.649658203125, 1398.9232177734375] - percentile_00_5: 51.81196975708008 - percentile_10_0: 347.88037109375 - percentile_90_0: 1080.649658203125 - percentile_99_5: 1398.9232177734375 - stdev: 305.2704162597656 - ncomponents: 1 - pixel_percentage: 0.943415105342865 - shape: - - [33, 47, 38] - - image_intensity: - - max: 851.1966552734375 - mean: 496.3825378417969 - median: 488.5128479003906 - min: 111.02565002441406 - percentile: [236.85472106933594, 384.888916015625, 629.1453247070312, 791.9829711914062] - percentile_00_5: 236.85472106933594 - percentile_10_0: 384.888916015625 - percentile_90_0: 629.1453247070312 - percentile_99_5: 791.9829711914062 - stdev: 98.83036041259766 - ncomponents: 1 - pixel_percentage: 0.030862940475344658 - shape: - - [20, 17, 16] - - image_intensity: - - max: 1228.683837890625 - mean: 513.173828125 - median: 488.5128479003906 - min: 88.82051849365234 - percentile: [263.3158264160156, 377.4872131347656, 673.5556030273438, 1080.649658203125] - percentile_00_5: 263.3158264160156 - percentile_10_0: 377.4872131347656 - percentile_90_0: 673.5556030273438 - percentile_99_5: 1080.649658203125 - stdev: 135.36334228515625 - ncomponents: 1 - pixel_percentage: 0.025721944868564606 - shape: - - [20, 22, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_328.nii.gz - image_foreground_stats: - intensity: - - max: 357783.03125 - mean: 163963.53125 - median: 157424.53125 - min: 21466.982421875 - percentile: [64400.9453125, 107334.90625, 225403.3125, 301324.75] - percentile_00_5: 64400.9453125 - percentile_10_0: 107334.90625 - percentile_90_0: 225403.3125 - percentile_99_5: 301324.75 - stdev: 45672.07421875 - image_stats: - channels: 1 - cropped_shape: - - [38, 54, 30] - intensity: - - max: 550985.875 - mean: 202140.015625 - median: 203936.328125 - min: 0.0 - percentile: [10733.4912109375, 64400.9453125, 318426.90625, 364938.6875] - percentile_00_5: 10733.4912109375 - percentile_10_0: 64400.9453125 - percentile_90_0: 318426.90625 - percentile_99_5: 364938.6875 - stdev: 94968.515625 - shape: - - [38, 54, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_328.nii.gz - label_stats: - image_intensity: - - max: 357783.03125 - mean: 163963.53125 - median: 157424.53125 - min: 21466.982421875 - percentile: [64400.9453125, 107334.90625, 225403.3125, 301324.75] - percentile_00_5: 64400.9453125 - percentile_10_0: 107334.90625 - percentile_90_0: 225403.3125 - percentile_99_5: 301324.75 - stdev: 45672.07421875 - label: - - image_intensity: - - max: 550985.875 - mean: 204762.53125 - median: 214669.8125 - min: 0.0 - percentile: [7155.66064453125, 60823.1171875, 322004.71875, 364938.6875] - percentile_00_5: 7155.66064453125 - percentile_10_0: 60823.1171875 - percentile_90_0: 322004.71875 - percentile_99_5: 364938.6875 - stdev: 96893.171875 - ncomponents: 1 - pixel_percentage: 0.935721218585968 - shape: - - [38, 54, 30] - - image_intensity: - - max: 318426.90625 - mean: 165921.6875 - median: 161002.359375 - min: 21466.982421875 - percentile: [60286.44140625, 114490.5703125, 225403.3125, 283184.90625] - percentile_00_5: 60286.44140625 - percentile_10_0: 114490.5703125 - percentile_90_0: 225403.3125 - percentile_99_5: 283184.90625 - stdev: 44026.76171875 - ncomponents: 1 - pixel_percentage: 0.03851526975631714 - shape: - - [27, 20, 14] - - image_intensity: - - max: 357783.03125 - mean: 161036.203125 - median: 157424.53125 - min: 46511.79296875 - percentile: [67710.4375, 103757.078125, 225403.3125, 315117.21875] - percentile_00_5: 67710.4375 - percentile_10_0: 103757.078125 - percentile_90_0: 225403.3125 - percentile_99_5: 315117.21875 - stdev: 47877.62109375 - ncomponents: 1 - pixel_percentage: 0.025763481855392456 - shape: - - [20, 23, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_228.nii.gz - image_foreground_stats: - intensity: - - max: 918.948486328125 - mean: 458.2905578613281 - median: 446.3464050292969 - min: 8.751890182495117 - percentile: [70.01512145996094, 315.06805419921875, 638.8880004882812, 848.933349609375] - percentile_00_5: 70.01512145996094 - percentile_10_0: 315.06805419921875 - percentile_90_0: 638.8880004882812 - percentile_99_5: 848.933349609375 - stdev: 132.481689453125 - image_stats: - channels: 1 - cropped_shape: - - [37, 48, 36] - intensity: - - max: 2109.20556640625 - mean: 572.3313598632812 - median: 586.3766479492188 - min: 0.0 - percentile: [26.25567054748535, 140.03024291992188, 927.7003784179688, 1058.978759765625] - percentile_00_5: 26.25567054748535 - percentile_10_0: 140.03024291992188 - percentile_90_0: 927.7003784179688 - percentile_99_5: 1058.978759765625 - stdev: 281.057861328125 - shape: - - [37, 48, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_228.nii.gz - label_stats: - image_intensity: - - max: 918.948486328125 - mean: 458.2905578613281 - median: 446.3464050292969 - min: 8.751890182495117 - percentile: [70.01512145996094, 315.06805419921875, 638.8880004882812, 848.933349609375] - percentile_00_5: 70.01512145996094 - percentile_10_0: 315.06805419921875 - percentile_90_0: 638.8880004882812 - percentile_99_5: 848.933349609375 - stdev: 132.481689453125 - label: - - image_intensity: - - max: 2109.20556640625 - mean: 579.2781372070312 - median: 612.63232421875 - min: 0.0 - percentile: [26.25567054748535, 140.03024291992188, 927.7003784179688, 1058.978759765625] - percentile_00_5: 26.25567054748535 - percentile_10_0: 140.03024291992188 - percentile_90_0: 927.7003784179688 - percentile_99_5: 1058.978759765625 - stdev: 286.1743469238281 - ncomponents: 1 - pixel_percentage: 0.9425832033157349 - shape: - - [37, 48, 36] - - image_intensity: - - max: 918.948486328125 - mean: 469.20977783203125 - median: 446.3464050292969 - min: 8.751890182495117 - percentile: [132.67864990234375, 341.32373046875, 638.8880004882812, 847.5327758789062] - percentile_00_5: 132.67864990234375 - percentile_10_0: 341.32373046875 - percentile_90_0: 638.8880004882812 - percentile_99_5: 847.5327758789062 - stdev: 119.2213134765625 - ncomponents: 1 - pixel_percentage: 0.03179742395877838 - shape: - - [26, 15, 15] - - image_intensity: - - max: 910.1965942382812 - mean: 444.7381591796875 - median: 428.8426208496094 - min: 8.751890182495117 - percentile: [61.26322937011719, 280.06048583984375, 647.639892578125, 847.3148193359375] - percentile_00_5: 61.26322937011719 - percentile_10_0: 280.06048583984375 - percentile_90_0: 647.639892578125 - percentile_99_5: 847.3148193359375 - stdev: 146.15847778320312 - ncomponents: 1 - pixel_percentage: 0.025619369000196457 - shape: - - [20, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_181.nii.gz - image_foreground_stats: - intensity: - - max: 319240.8125 - mean: 152884.375 - median: 147101.171875 - min: 28168.30859375 - percentile: [81375.109375, 112673.234375, 200307.96875, 289648.21875] - percentile_00_5: 81375.109375 - percentile_10_0: 112673.234375 - percentile_90_0: 200307.96875 - percentile_99_5: 289648.21875 - stdev: 38356.23828125 - image_stats: - channels: 1 - cropped_shape: - - [33, 49, 40] - intensity: - - max: 544587.3125 - mean: 205685.015625 - median: 209697.40625 - min: 0.0 - percentile: [9389.435546875, 81375.109375, 319240.8125, 364953.1875] - percentile_00_5: 9389.435546875 - percentile_10_0: 81375.109375 - percentile_90_0: 319240.8125 - percentile_99_5: 364953.1875 - stdev: 91072.5390625 - shape: - - [33, 49, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_181.nii.gz - label_stats: - image_intensity: - - max: 319240.8125 - mean: 152884.375 - median: 147101.171875 - min: 28168.30859375 - percentile: [81375.109375, 112673.234375, 200307.96875, 289648.21875] - percentile_00_5: 81375.109375 - percentile_10_0: 112673.234375 - percentile_90_0: 200307.96875 - percentile_99_5: 289648.21875 - stdev: 38356.23828125 - label: - - image_intensity: - - max: 544587.3125 - mean: 208881.40625 - median: 219086.84375 - min: 0.0 - percentile: [9389.435546875, 75115.484375, 319240.8125, 366188.0] - percentile_00_5: 9389.435546875 - percentile_10_0: 75115.484375 - percentile_90_0: 319240.8125 - percentile_99_5: 366188.0 - stdev: 92348.59375 - ncomponents: 1 - pixel_percentage: 0.9429189562797546 - shape: - - [33, 49, 40] - - image_intensity: - - max: 319240.8125 - mean: 154336.5625 - median: 150230.96875 - min: 28168.30859375 - percentile: [83910.2578125, 115803.046875, 200307.96875, 270353.5625] - percentile_00_5: 83910.2578125 - percentile_10_0: 115803.046875 - percentile_90_0: 200307.96875 - percentile_99_5: 270353.5625 - stdev: 34939.140625 - ncomponents: 1 - pixel_percentage: 0.03034941293299198 - shape: - - [21, 16, 16] - - image_intensity: - - max: 319240.8125 - mean: 151235.640625 - median: 143971.359375 - min: 71985.6796875 - percentile: [80248.375, 109543.421875, 203437.78125, 295329.03125] - percentile_00_5: 80248.375 - percentile_10_0: 109543.421875 - percentile_90_0: 203437.78125 - percentile_99_5: 295329.03125 - stdev: 41838.28515625 - ncomponents: 1 - pixel_percentage: 0.026731600984930992 - shape: - - [19, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_336.nii.gz - image_foreground_stats: - intensity: - - max: 781.4168701171875 - mean: 433.3476257324219 - median: 426.2273864746094 - min: 134.9720001220703 - percentile: [191.8023223876953, 312.5667419433594, 554.0955810546875, 717.4827880859375] - percentile_00_5: 191.8023223876953 - percentile_10_0: 312.5667419433594 - percentile_90_0: 554.0955810546875 - percentile_99_5: 717.4827880859375 - stdev: 95.58057403564453 - image_stats: - channels: 1 - cropped_shape: - - [34, 47, 43] - intensity: - - max: 1150.81396484375 - mean: 511.9390869140625 - median: 539.8880004882812 - min: 0.0 - percentile: [28.415159225463867, 191.8023223876953, 774.3131103515625, 923.49267578125] - percentile_00_5: 28.415159225463867 - percentile_10_0: 191.8023223876953 - percentile_90_0: 774.3131103515625 - percentile_99_5: 923.49267578125 - stdev: 214.49301147460938 - shape: - - [34, 47, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_336.nii.gz - label_stats: - image_intensity: - - max: 781.4168701171875 - mean: 433.3476257324219 - median: 426.2273864746094 - min: 134.9720001220703 - percentile: [191.8023223876953, 312.5667419433594, 554.0955810546875, 717.4827880859375] - percentile_00_5: 191.8023223876953 - percentile_10_0: 312.5667419433594 - percentile_90_0: 554.0955810546875 - percentile_99_5: 717.4827880859375 - stdev: 95.58057403564453 - label: - - image_intensity: - - max: 1150.81396484375 - mean: 515.0211181640625 - median: 546.9918212890625 - min: 0.0 - percentile: [28.415159225463867, 191.8023223876953, 774.3131103515625, 930.596435546875] - percentile_00_5: 28.415159225463867 - percentile_10_0: 191.8023223876953 - percentile_90_0: 774.3131103515625 - percentile_99_5: 930.596435546875 - stdev: 217.259033203125 - ncomponents: 1 - pixel_percentage: 0.9622638821601868 - shape: - - [34, 47, 43] - - image_intensity: - - max: 781.4168701171875 - mean: 428.400146484375 - median: 426.2273864746094 - min: 134.9720001220703 - percentile: [177.59474182128906, 298.3591613769531, 561.1994018554688, 731.6903686523438] - percentile_00_5: 177.59474182128906 - percentile_10_0: 298.3591613769531 - percentile_90_0: 561.1994018554688 - percentile_99_5: 731.6903686523438 - stdev: 103.08023834228516 - ncomponents: 1 - pixel_percentage: 0.018889890983700752 - shape: - - [20, 15, 17] - - image_intensity: - - max: 731.6903686523438 - mean: 438.3065490722656 - median: 433.3311767578125 - min: 198.90611267089844 - percentile: [248.6326446533203, 326.7743225097656, 554.0955810546875, 696.17138671875] - percentile_00_5: 248.6326446533203 - percentile_10_0: 326.7743225097656 - percentile_90_0: 554.0955810546875 - percentile_99_5: 696.17138671875 - stdev: 87.13884735107422 - ncomponents: 1 - pixel_percentage: 0.018846232444047928 - shape: - - [21, 20, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_236.nii.gz - image_foreground_stats: - intensity: - - max: 668.9650268554688 - mean: 293.0712890625 - median: 287.59246826171875 - min: 37.51205825805664 - percentile: [90.27902221679688, 187.560302734375, 406.3806457519531, 569.6838989257812] - percentile_00_5: 90.27902221679688 - percentile_10_0: 187.560302734375 - percentile_90_0: 406.3806457519531 - percentile_99_5: 569.6838989257812 - stdev: 88.64779663085938 - image_stats: - channels: 1 - cropped_shape: - - [37, 57, 35] - intensity: - - max: 925.2974853515625 - mean: 367.3116455078125 - median: 368.86859130859375 - min: 0.0 - percentile: [18.75602912902832, 106.28416442871094, 612.6969604492188, 731.4851684570312] - percentile_00_5: 18.75602912902832 - percentile_10_0: 106.28416442871094 - percentile_90_0: 612.6969604492188 - percentile_99_5: 731.4851684570312 - stdev: 184.46766662597656 - shape: - - [37, 57, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_236.nii.gz - label_stats: - image_intensity: - - max: 668.9650268554688 - mean: 293.0712890625 - median: 287.59246826171875 - min: 37.51205825805664 - percentile: [90.27902221679688, 187.560302734375, 406.3806457519531, 569.6838989257812] - percentile_00_5: 90.27902221679688 - percentile_10_0: 187.560302734375 - percentile_90_0: 406.3806457519531 - percentile_99_5: 569.6838989257812 - stdev: 88.64779663085938 - label: - - image_intensity: - - max: 925.2974853515625 - mean: 370.55413818359375 - median: 375.12060546875 - min: 0.0 - percentile: [18.75602912902832, 106.28416442871094, 612.6969604492188, 731.4851684570312] - percentile_00_5: 18.75602912902832 - percentile_10_0: 106.28416442871094 - percentile_90_0: 612.6969604492188 - percentile_99_5: 731.4851684570312 - stdev: 186.86911010742188 - ncomponents: 1 - pixel_percentage: 0.9581521153450012 - shape: - - [37, 57, 35] - - image_intensity: - - max: 612.6969604492188 - mean: 298.50897216796875 - median: 293.8444519042969 - min: 68.77210998535156 - percentile: [87.52813720703125, 193.8123016357422, 406.3806457519531, 531.6085815429688] - percentile_00_5: 87.52813720703125 - percentile_10_0: 193.8123016357422 - percentile_90_0: 406.3806457519531 - percentile_99_5: 531.6085815429688 - stdev: 82.6881103515625 - ncomponents: 1 - pixel_percentage: 0.021608075127005577 - shape: - - [19, 18, 13] - - image_intensity: - - max: 668.9650268554688 - mean: 287.26605224609375 - median: 275.08843994140625 - min: 37.51205825805664 - percentile: [93.7801513671875, 175.0562744140625, 406.3806457519531, 591.033935546875] - percentile_00_5: 93.7801513671875 - percentile_10_0: 175.0562744140625 - percentile_90_0: 406.3806457519531 - percentile_99_5: 591.033935546875 - stdev: 94.25127410888672 - ncomponents: 1 - pixel_percentage: 0.02023978903889656 - shape: - - [20, 27, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_259.nii.gz - image_foreground_stats: - intensity: - - max: 964.0927734375 - mean: 427.233154296875 - median: 413.1826171875 - min: 76.51529693603516 - percentile: [206.59130859375, 306.0611877441406, 581.5162353515625, 806.5097045898438] - percentile_00_5: 206.59130859375 - percentile_10_0: 306.0611877441406 - percentile_90_0: 581.5162353515625 - percentile_99_5: 806.5097045898438 - stdev: 112.76705169677734 - image_stats: - channels: 1 - cropped_shape: - - [33, 51, 28] - intensity: - - max: 1124.77490234375 - mean: 490.737060546875 - median: 497.34942626953125 - min: 0.0 - percentile: [15.303059577941895, 122.42447662353516, 803.41064453125, 918.18359375] - percentile_00_5: 15.303059577941895 - percentile_10_0: 122.42447662353516 - percentile_90_0: 803.41064453125 - percentile_99_5: 918.18359375 - stdev: 245.4291229248047 - shape: - - [33, 51, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_259.nii.gz - label_stats: - image_intensity: - - max: 964.0927734375 - mean: 427.233154296875 - median: 413.1826171875 - min: 76.51529693603516 - percentile: [206.59130859375, 306.0611877441406, 581.5162353515625, 806.5097045898438] - percentile_00_5: 206.59130859375 - percentile_10_0: 306.0611877441406 - percentile_90_0: 581.5162353515625 - percentile_99_5: 806.5097045898438 - stdev: 112.76705169677734 - label: - - image_intensity: - - max: 1124.77490234375 - mean: 494.9320068359375 - median: 512.6524658203125 - min: 0.0 - percentile: [15.303059577941895, 114.77294921875, 811.0621337890625, 918.18359375] - percentile_00_5: 15.303059577941895 - percentile_10_0: 114.77294921875 - percentile_90_0: 811.0621337890625 - percentile_99_5: 918.18359375 - stdev: 251.1781005859375 - ncomponents: 1 - pixel_percentage: 0.9380358457565308 - shape: - - [33, 51, 28] - - image_intensity: - - max: 948.7896728515625 - mean: 431.8481750488281 - median: 420.8341369628906 - min: 114.77294921875 - percentile: [204.1810760498047, 313.71270751953125, 566.2131958007812, 775.2152099609375] - percentile_00_5: 204.1810760498047 - percentile_10_0: 313.71270751953125 - percentile_90_0: 566.2131958007812 - percentile_99_5: 775.2152099609375 - stdev: 105.70890808105469 - ncomponents: 1 - pixel_percentage: 0.028393175452947617 - shape: - - [18, 14, 11] - - image_intensity: - - max: 964.0927734375 - mean: 423.329833984375 - median: 397.8795471191406 - min: 76.51529693603516 - percentile: [213.51593017578125, 298.40966796875, 589.1677856445312, 841.6682739257812] - percentile_00_5: 213.51593017578125 - percentile_10_0: 298.40966796875 - percentile_90_0: 589.1677856445312 - percentile_99_5: 841.6682739257812 - stdev: 118.26814270019531 - ncomponents: 1 - pixel_percentage: 0.03357100486755371 - shape: - - [21, 27, 15] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_359.nii.gz - image_foreground_stats: - intensity: - - max: 614.1275634765625 - mean: 292.4081115722656 - median: 280.46771240234375 - min: 14.506950378417969 - percentile: [106.3843002319336, 212.7686004638672, 401.35894775390625, 560.9354248046875] - percentile_00_5: 106.3843002319336 - percentile_10_0: 212.7686004638672 - percentile_90_0: 401.35894775390625 - percentile_99_5: 560.9354248046875 - stdev: 79.32801818847656 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 35] - intensity: - - max: 1702.1488037109375 - mean: 374.8037109375 - median: 386.85198974609375 - min: 0.0 - percentile: [19.342599868774414, 130.5625457763672, 580.2780151367188, 686.6622924804688] - percentile_00_5: 19.342599868774414 - percentile_10_0: 130.5625457763672 - percentile_90_0: 580.2780151367188 - percentile_99_5: 686.6622924804688 - stdev: 167.26123046875 - shape: - - [35, 49, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_359.nii.gz - label_stats: - image_intensity: - - max: 614.1275634765625 - mean: 292.4081115722656 - median: 280.46771240234375 - min: 14.506950378417969 - percentile: [106.3843002319336, 212.7686004638672, 401.35894775390625, 560.9354248046875] - percentile_00_5: 106.3843002319336 - percentile_10_0: 212.7686004638672 - percentile_90_0: 401.35894775390625 - percentile_99_5: 560.9354248046875 - stdev: 79.32801818847656 - label: - - image_intensity: - - max: 1702.1488037109375 - mean: 378.58526611328125 - median: 396.5232849121094 - min: 0.0 - percentile: [14.506950378417969, 125.72689819335938, 585.1136474609375, 691.4979248046875] - percentile_00_5: 14.506950378417969 - percentile_10_0: 125.72689819335938 - percentile_90_0: 585.1136474609375 - percentile_99_5: 691.4979248046875 - stdev: 169.2501220703125 - ncomponents: 1 - pixel_percentage: 0.9561182856559753 - shape: - - [35, 49, 35] - - image_intensity: - - max: 599.62060546875 - mean: 293.7523498535156 - median: 285.3033447265625 - min: 38.68519973754883 - percentile: [103.02352142333984, 212.7686004638672, 396.5232849121094, 531.9215087890625] - percentile_00_5: 103.02352142333984 - percentile_10_0: 212.7686004638672 - percentile_90_0: 396.5232849121094 - percentile_99_5: 531.9215087890625 - stdev: 77.08060455322266 - ncomponents: 1 - pixel_percentage: 0.02102457359433174 - shape: - - [17, 14, 15] - - image_intensity: - - max: 614.1275634765625 - mean: 291.17169189453125 - median: 275.6320495605469 - min: 14.506950378417969 - percentile: [115.35443115234375, 212.7686004638672, 405.7111511230469, 565.7710571289062] - percentile_00_5: 115.35443115234375 - percentile_10_0: 212.7686004638672 - percentile_90_0: 405.7111511230469 - percentile_99_5: 565.7710571289062 - stdev: 81.32081604003906 - ncomponents: 1 - pixel_percentage: 0.022857142612338066 - shape: - - [19, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_224.nii.gz - image_foreground_stats: - intensity: - - max: 1247.5689697265625 - mean: 496.7711486816406 - median: 472.5639953613281 - min: 9.451279640197754 - percentile: [94.5127944946289, 330.7947998046875, 699.3947143554688, 1029.2918701171875] - percentile_00_5: 94.5127944946289 - percentile_10_0: 330.7947998046875 - percentile_90_0: 699.3947143554688 - percentile_99_5: 1029.2918701171875 - stdev: 154.0909881591797 - image_stats: - channels: 1 - cropped_shape: - - [37, 48, 37] - intensity: - - max: 2882.640380859375 - mean: 674.6968994140625 - median: 680.4921264648438 - min: 0.0 - percentile: [37.805118560791016, 207.9281463623047, 1086.897216796875, 1228.6663818359375] - percentile_00_5: 37.805118560791016 - percentile_10_0: 207.9281463623047 - percentile_90_0: 1086.897216796875 - percentile_99_5: 1228.6663818359375 - stdev: 331.7510070800781 - shape: - - [37, 48, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_224.nii.gz - label_stats: - image_intensity: - - max: 1247.5689697265625 - mean: 496.7711486816406 - median: 472.5639953613281 - min: 9.451279640197754 - percentile: [94.5127944946289, 330.7947998046875, 699.3947143554688, 1029.2918701171875] - percentile_00_5: 94.5127944946289 - percentile_10_0: 330.7947998046875 - percentile_90_0: 699.3947143554688 - percentile_99_5: 1029.2918701171875 - stdev: 154.0909881591797 - label: - - image_intensity: - - max: 2882.640380859375 - mean: 685.6785278320312 - median: 718.2972412109375 - min: 0.0 - percentile: [37.805118560791016, 198.47686767578125, 1096.348388671875, 1228.6663818359375] - percentile_00_5: 37.805118560791016 - percentile_10_0: 198.47686767578125 - percentile_90_0: 1096.348388671875 - percentile_99_5: 1228.6663818359375 - stdev: 336.6178894042969 - ncomponents: 1 - pixel_percentage: 0.9418675303459167 - shape: - - [37, 48, 37] - - image_intensity: - - max: 1247.5689697265625 - mean: 510.3318786621094 - median: 491.466552734375 - min: 66.1589584350586 - percentile: [226.83071899414062, 359.14862060546875, 699.3947143554688, 954.5792236328125] - percentile_00_5: 226.83071899414062 - percentile_10_0: 359.14862060546875 - percentile_90_0: 699.3947143554688 - percentile_99_5: 954.5792236328125 - stdev: 136.75819396972656 - ncomponents: 1 - pixel_percentage: 0.030938033014535904 - shape: - - [24, 17, 15] - - image_intensity: - - max: 1171.9586181640625 - mean: 481.34356689453125 - median: 453.66143798828125 - min: 9.451279640197754 - percentile: [66.1589584350586, 302.4409484863281, 699.3947143554688, 1078.108154296875] - percentile_00_5: 66.1589584350586 - percentile_10_0: 302.4409484863281 - percentile_90_0: 699.3947143554688 - percentile_99_5: 1078.108154296875 - stdev: 170.3878631591797 - ncomponents: 1 - pixel_percentage: 0.027194423601031303 - shape: - - [20, 21, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_093.nii.gz - image_foreground_stats: - intensity: - - max: 1070.18994140625 - mean: 485.3583984375 - median: 469.23712158203125 - min: 41.16115188598633 - percentile: [214.03797912597656, 362.2181396484375, 633.8817138671875, 875.0442504882812] - percentile_00_5: 214.03797912597656 - percentile_10_0: 362.2181396484375 - percentile_90_0: 633.8817138671875 - percentile_99_5: 875.0442504882812 - stdev: 115.0201187133789 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 37] - intensity: - - max: 1720.5361328125 - mean: 626.3839721679688 - median: 609.18505859375 - min: 0.0 - percentile: [32.92892074584961, 263.4313659667969, 996.099853515625, 1136.0477294921875] - percentile_00_5: 32.92892074584961 - percentile_10_0: 263.4313659667969 - percentile_90_0: 996.099853515625 - percentile_99_5: 1136.0477294921875 - stdev: 276.8793640136719 - shape: - - [34, 53, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_093.nii.gz - label_stats: - image_intensity: - - max: 1070.18994140625 - mean: 485.3583984375 - median: 469.23712158203125 - min: 41.16115188598633 - percentile: [214.03797912597656, 362.2181396484375, 633.8817138671875, 875.0442504882812] - percentile_00_5: 214.03797912597656 - percentile_10_0: 362.2181396484375 - percentile_90_0: 633.8817138671875 - percentile_99_5: 875.0442504882812 - stdev: 115.0201187133789 - label: - - image_intensity: - - max: 1720.5361328125 - mean: 634.76953125 - median: 633.8817138671875 - min: 0.0 - percentile: [32.92892074584961, 246.96690368652344, 1004.3320922851562, 1136.0477294921875] - percentile_00_5: 32.92892074584961 - percentile_10_0: 246.96690368652344 - percentile_90_0: 1004.3320922851562 - percentile_99_5: 1136.0477294921875 - stdev: 281.3913269042969 - ncomponents: 1 - pixel_percentage: 0.9438761472702026 - shape: - - [34, 53, 37] - - image_intensity: - - max: 889.0808715820312 - mean: 475.301513671875 - median: 469.23712158203125 - min: 90.55453491210938 - percentile: [214.2437744140625, 353.98590087890625, 609.18505859375, 791.89990234375] - percentile_00_5: 214.2437744140625 - percentile_10_0: 353.98590087890625 - percentile_90_0: 609.18505859375 - percentile_99_5: 791.89990234375 - stdev: 105.52168273925781 - ncomponents: 1 - pixel_percentage: 0.026427093893289566 - shape: - - [21, 16, 14] - - image_intensity: - - max: 1070.18994140625 - mean: 494.3080139160156 - median: 477.4693603515625 - min: 41.16115188598633 - percentile: [214.03797912597656, 362.2181396484375, 650.34619140625, 916.3701782226562] - percentile_00_5: 214.03797912597656 - percentile_10_0: 362.2181396484375 - percentile_90_0: 650.34619140625 - percentile_99_5: 916.3701782226562 - stdev: 122.16254425048828 - ncomponents: 1 - pixel_percentage: 0.029696732759475708 - shape: - - [17, 28, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_193.nii.gz - image_foreground_stats: - intensity: - - max: 440456.71875 - mean: 192398.109375 - median: 184807.015625 - min: 73922.8046875 - percentile: [101643.859375, 141685.375, 249489.46875, 383367.03125] - percentile_00_5: 101643.859375 - percentile_10_0: 141685.375 - percentile_90_0: 249489.46875 - percentile_99_5: 383367.03125 - stdev: 47731.55859375 - image_stats: - channels: 1 - cropped_shape: - - [33, 50, 29] - intensity: - - max: 625263.75 - mean: 254059.078125 - median: 261809.9375 - min: 0.0 - percentile: [12320.4677734375, 89323.390625, 397335.09375, 458937.4375] - percentile_00_5: 12320.4677734375 - percentile_10_0: 89323.390625 - percentile_90_0: 397335.09375 - percentile_99_5: 458937.4375 - stdev: 114116.203125 - shape: - - [33, 50, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_193.nii.gz - label_stats: - image_intensity: - - max: 440456.71875 - mean: 192398.109375 - median: 184807.015625 - min: 73922.8046875 - percentile: [101643.859375, 141685.375, 249489.46875, 383367.03125] - percentile_00_5: 101643.859375 - percentile_10_0: 141685.375 - percentile_90_0: 249489.46875 - percentile_99_5: 383367.03125 - stdev: 47731.55859375 - label: - - image_intensity: - - max: 625263.75 - mean: 257758.0 - median: 274130.40625 - min: 0.0 - percentile: [12320.4677734375, 83163.15625, 400415.1875, 458937.4375] - percentile_00_5: 12320.4677734375 - percentile_10_0: 83163.15625 - percentile_90_0: 400415.1875 - percentile_99_5: 458937.4375 - stdev: 115867.484375 - ncomponents: 1 - pixel_percentage: 0.9434064626693726 - shape: - - [33, 50, 29] - - image_intensity: - - max: 397335.09375 - mean: 192533.53125 - median: 190967.25 - min: 73922.8046875 - percentile: [101643.859375, 141685.375, 240249.125, 336502.78125] - percentile_00_5: 101643.859375 - percentile_10_0: 141685.375 - percentile_90_0: 240249.125 - percentile_99_5: 336502.78125 - stdev: 41908.75390625 - ncomponents: 1 - pixel_percentage: 0.02823406457901001 - shape: - - [21, 16, 11] - - image_intensity: - - max: 440456.71875 - mean: 192263.3125 - median: 181726.90625 - min: 80083.0390625 - percentile: [100966.234375, 141685.375, 255649.703125, 394254.96875] - percentile_00_5: 100966.234375 - percentile_10_0: 141685.375 - percentile_90_0: 255649.703125 - percentile_99_5: 394254.96875 - stdev: 52895.328125 - ncomponents: 1 - pixel_percentage: 0.02835945598781109 - shape: - - [21, 21, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_212.nii.gz - image_foreground_stats: - intensity: - - max: 486420.21875 - mean: 212884.765625 - median: 204808.515625 - min: 57602.39453125 - percentile: [112004.65625, 150406.25, 281611.71875, 432321.875] - percentile_00_5: 112004.65625 - percentile_10_0: 150406.25 - percentile_90_0: 281611.71875 - percentile_99_5: 432321.875 - stdev: 57594.88671875 - image_stats: - channels: 1 - cropped_shape: - - [35, 56, 34] - intensity: - - max: 1561664.875 - mean: 285426.125 - median: 294412.25 - min: 0.0 - percentile: [16624.71484375, 124805.1875, 432017.96875, 521621.6875] - percentile_00_5: 16624.71484375 - percentile_10_0: 124805.1875 - percentile_90_0: 432017.96875 - percentile_99_5: 521621.6875 - stdev: 126643.0859375 - shape: - - [35, 56, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_212.nii.gz - label_stats: - image_intensity: - - max: 486420.21875 - mean: 212884.765625 - median: 204808.515625 - min: 57602.39453125 - percentile: [112004.65625, 150406.25, 281611.71875, 432321.875] - percentile_00_5: 112004.65625 - percentile_10_0: 150406.25 - percentile_90_0: 281611.71875 - percentile_99_5: 432321.875 - stdev: 57594.88671875 - label: - - image_intensity: - - max: 1561664.875 - mean: 289546.8125 - median: 304012.625 - min: 0.0 - percentile: [16000.6650390625, 121605.0546875, 435218.09375, 531222.0625] - percentile_00_5: 16000.6650390625 - percentile_10_0: 121605.0546875 - percentile_90_0: 435218.09375 - percentile_99_5: 531222.0625 - stdev: 128238.8515625 - ncomponents: 1 - pixel_percentage: 0.946248471736908 - shape: - - [35, 56, 34] - - image_intensity: - - max: 409617.03125 - mean: 209485.9375 - median: 204808.515625 - min: 105604.390625 - percentile: [121605.0546875, 156806.515625, 272011.3125, 346494.5] - percentile_00_5: 121605.0546875 - percentile_10_0: 156806.515625 - percentile_90_0: 272011.3125 - percentile_99_5: 346494.5 - stdev: 45583.29296875 - ncomponents: 1 - pixel_percentage: 0.02620048075914383 - shape: - - [22, 18, 13] - - image_intensity: - - max: 486420.21875 - mean: 216117.046875 - median: 204808.515625 - min: 57602.39453125 - percentile: [102964.28125, 147206.125, 300812.5, 448018.625] - percentile_00_5: 102964.28125 - percentile_10_0: 147206.125 - percentile_90_0: 300812.5 - percentile_99_5: 448018.625 - stdev: 66890.359375 - ncomponents: 1 - pixel_percentage: 0.027551019564270973 - shape: - - [19, 27, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_363.nii.gz - image_foreground_stats: - intensity: - - max: 740.01123046875 - mean: 351.2170715332031 - median: 337.9578857421875 - min: 110.71034240722656 - percentile: [180.63265991210938, 262.2087097167969, 448.668212890625, 614.588623046875] - percentile_00_5: 180.63265991210938 - percentile_10_0: 262.2087097167969 - percentile_90_0: 448.668212890625 - percentile_99_5: 614.588623046875 - stdev: 79.77729797363281 - image_stats: - channels: 1 - cropped_shape: - - [38, 52, 35] - intensity: - - max: 2272.475341796875 - mean: 452.0211181640625 - median: 460.3219299316406 - min: 0.0 - percentile: [23.30743980407715, 168.97894287109375, 710.8768920898438, 833.240966796875] - percentile_00_5: 23.30743980407715 - percentile_10_0: 168.97894287109375 - percentile_90_0: 710.8768920898438 - percentile_99_5: 833.240966796875 - stdev: 206.50135803222656 - shape: - - [38, 52, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_363.nii.gz - label_stats: - image_intensity: - - max: 740.01123046875 - mean: 351.2170715332031 - median: 337.9578857421875 - min: 110.71034240722656 - percentile: [180.63265991210938, 262.2087097167969, 448.668212890625, 614.588623046875] - percentile_00_5: 180.63265991210938 - percentile_10_0: 262.2087097167969 - percentile_90_0: 448.668212890625 - percentile_99_5: 614.588623046875 - stdev: 79.77729797363281 - label: - - image_intensity: - - max: 2272.475341796875 - mean: 457.4041442871094 - median: 471.97564697265625 - min: 0.0 - percentile: [23.30743980407715, 157.32522583007812, 710.8768920898438, 839.0678100585938] - percentile_00_5: 23.30743980407715 - percentile_10_0: 157.32522583007812 - percentile_90_0: 710.8768920898438 - percentile_99_5: 839.0678100585938 - stdev: 209.78204345703125 - ncomponents: 1 - pixel_percentage: 0.9493059515953064 - shape: - - [38, 52, 35] - - image_intensity: - - max: 675.915771484375 - mean: 343.7022705078125 - median: 337.9578857421875 - min: 110.71034240722656 - percentile: [180.63265991210938, 260.46063232421875, 437.0144958496094, 592.1845092773438] - percentile_00_5: 180.63265991210938 - percentile_10_0: 260.46063232421875 - percentile_90_0: 437.0144958496094 - percentile_99_5: 592.1845092773438 - stdev: 72.34539031982422 - ncomponents: 1 - pixel_percentage: 0.026576055213809013 - shape: - - [19, 19, 15] - - image_intensity: - - max: 740.01123046875 - mean: 359.4977111816406 - median: 343.78472900390625 - min: 110.71034240722656 - percentile: [182.58465576171875, 268.0355529785156, 483.6293640136719, 627.34912109375] - percentile_00_5: 182.58465576171875 - percentile_10_0: 268.0355529785156 - percentile_90_0: 483.6293640136719 - percentile_99_5: 627.34912109375 - stdev: 86.48356628417969 - ncomponents: 1 - pixel_percentage: 0.024117987602949142 - shape: - - [23, 22, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_263.nii.gz - image_foreground_stats: - intensity: - - max: 101.0 - mean: 54.24193572998047 - median: 52.0 - min: 17.0 - percentile: [32.0, 41.0, 71.0, 91.0] - percentile_00_5: 32.0 - percentile_10_0: 41.0 - percentile_90_0: 71.0 - percentile_99_5: 91.0 - stdev: 11.873961448669434 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 35] - intensity: - - max: 164.0 - mean: 72.06175994873047 - median: 76.0 - min: 3.0 - percentile: [10.0, 35.0, 104.0, 117.0] - percentile_00_5: 10.0 - percentile_10_0: 35.0 - percentile_90_0: 104.0 - percentile_99_5: 117.0 - stdev: 27.05876350402832 - shape: - - [36, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_263.nii.gz - label_stats: - image_intensity: - - max: 101.0 - mean: 54.24193572998047 - median: 52.0 - min: 17.0 - percentile: [32.0, 41.0, 71.0, 91.0] - percentile_00_5: 32.0 - percentile_10_0: 41.0 - percentile_90_0: 71.0 - percentile_99_5: 91.0 - stdev: 11.873961448669434 - label: - - image_intensity: - - max: 164.0 - mean: 73.09880828857422 - median: 79.0 - min: 3.0 - percentile: [9.0, 34.0, 104.0, 117.0] - percentile_00_5: 9.0 - percentile_10_0: 34.0 - percentile_90_0: 104.0 - percentile_99_5: 117.0 - stdev: 27.331775665283203 - ncomponents: 1 - pixel_percentage: 0.9450046420097351 - shape: - - [36, 51, 35] - - image_intensity: - - max: 101.0 - mean: 53.251365661621094 - median: 52.0 - min: 23.0 - percentile: [31.0, 40.0, 68.0, 86.77001953125] - percentile_00_5: 31.0 - percentile_10_0: 40.0 - percentile_90_0: 68.0 - percentile_99_5: 86.77001953125 - stdev: 11.149368286132812 - ncomponents: 1 - pixel_percentage: 0.025630252435803413 - shape: - - [22, 15, 14] - - image_intensity: - - max: 100.0 - mean: 55.10651779174805 - median: 53.0 - min: 17.0 - percentile: [33.0, 42.0, 73.0, 92.0] - percentile_00_5: 33.0 - percentile_10_0: 42.0 - percentile_90_0: 73.0 - percentile_99_5: 92.0 - stdev: 12.407571792602539 - ncomponents: 1 - pixel_percentage: 0.02936507947742939 - shape: - - [17, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_300.nii.gz - image_foreground_stats: - intensity: - - max: 1160.4713134765625 - mean: 507.64678955078125 - median: 492.3211669921875 - min: 26.374347686767578 - percentile: [175.9608612060547, 342.8665466308594, 703.3159790039062, 992.9100952148438] - percentile_00_5: 175.9608612060547 - percentile_10_0: 342.8665466308594 - percentile_90_0: 703.3159790039062 - percentile_99_5: 992.9100952148438 - stdev: 144.21517944335938 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 35] - intensity: - - max: 2619.85205078125 - mean: 678.2257690429688 - median: 703.3159790039062 - min: 0.0 - percentile: [43.95724868774414, 246.16058349609375, 1063.765380859375, 1248.3858642578125] - percentile_00_5: 43.95724868774414 - percentile_10_0: 246.16058349609375 - percentile_90_0: 1063.765380859375 - percentile_99_5: 1248.3858642578125 - stdev: 310.16754150390625 - shape: - - [34, 53, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_300.nii.gz - label_stats: - image_intensity: - - max: 1160.4713134765625 - mean: 507.64678955078125 - median: 492.3211669921875 - min: 26.374347686767578 - percentile: [175.9608612060547, 342.8665466308594, 703.3159790039062, 992.9100952148438] - percentile_00_5: 175.9608612060547 - percentile_10_0: 342.8665466308594 - percentile_90_0: 703.3159790039062 - percentile_99_5: 992.9100952148438 - stdev: 144.21517944335938 - label: - - image_intensity: - - max: 2619.85205078125 - mean: 687.9573974609375 - median: 729.6903076171875 - min: 0.0 - percentile: [35.16579818725586, 237.369140625, 1072.556884765625, 1248.3858642578125] - percentile_00_5: 35.16579818725586 - percentile_10_0: 237.369140625 - percentile_90_0: 1072.556884765625 - percentile_99_5: 1248.3858642578125 - stdev: 314.2469787597656 - ncomponents: 1 - pixel_percentage: 0.9460282325744629 - shape: - - [34, 53, 35] - - image_intensity: - - max: 1160.4713134765625 - mean: 528.758544921875 - median: 518.6954956054688 - min: 26.374347686767578 - percentile: [158.24609375, 360.4494323730469, 720.8988647460938, 879.1449584960938] - percentile_00_5: 158.24609375 - percentile_10_0: 360.4494323730469 - percentile_90_0: 720.8988647460938 - percentile_99_5: 879.1449584960938 - stdev: 139.26718139648438 - ncomponents: 1 - pixel_percentage: 0.029269065707921982 - shape: - - [21, 19, 15] - - image_intensity: - - max: 1134.0970458984375 - mean: 482.632568359375 - median: 457.1553649902344 - min: 140.66319274902344 - percentile: [219.78623962402344, 325.28363037109375, 659.3587036132812, 1030.489501953125] - percentile_00_5: 219.78623962402344 - percentile_10_0: 325.28363037109375 - percentile_90_0: 659.3587036132812 - percentile_99_5: 1030.489501953125 - stdev: 145.96632385253906 - ncomponents: 1 - pixel_percentage: 0.024702711030840874 - shape: - - [23, 25, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_160.nii.gz - image_foreground_stats: - intensity: - - max: 321699.5 - mean: 144058.828125 - median: 139998.859375 - min: 5957.3984375 - percentile: [59573.984375, 98297.078125, 193615.453125, 291912.53125] - percentile_00_5: 59573.984375 - percentile_10_0: 98297.078125 - percentile_90_0: 193615.453125 - percentile_99_5: 291912.53125 - stdev: 40902.98046875 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 26] - intensity: - - max: 1012757.75 - mean: 196378.5625 - median: 184679.34375 - min: 0.0 - percentile: [11914.796875, 71488.78125, 324678.21875, 415784.5] - percentile_00_5: 11914.796875 - percentile_10_0: 71488.78125 - percentile_90_0: 324678.21875 - percentile_99_5: 415784.5 - stdev: 97368.0 - shape: - - [34, 51, 26] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_160.nii.gz - label_stats: - image_intensity: - - max: 321699.5 - mean: 144058.828125 - median: 139998.859375 - min: 5957.3984375 - percentile: [59573.984375, 98297.078125, 193615.453125, 291912.53125] - percentile_00_5: 59573.984375 - percentile_10_0: 98297.078125 - percentile_90_0: 193615.453125 - percentile_99_5: 291912.53125 - stdev: 40902.98046875 - label: - - image_intensity: - - max: 1012757.75 - mean: 200303.34375 - median: 196594.15625 - min: 0.0 - percentile: [11914.796875, 68510.078125, 327656.90625, 428932.6875] - percentile_00_5: 11914.796875 - percentile_10_0: 68510.078125 - percentile_90_0: 327656.90625 - percentile_99_5: 428932.6875 - stdev: 99224.296875 - ncomponents: 1 - pixel_percentage: 0.9302191734313965 - shape: - - [34, 51, 26] - - image_intensity: - - max: 297869.9375 - mean: 141426.21875 - median: 139998.859375 - min: 5957.3984375 - percentile: [53616.5859375, 98297.078125, 184679.34375, 244253.34375] - percentile_00_5: 53616.5859375 - percentile_10_0: 98297.078125 - percentile_90_0: 184679.34375 - percentile_99_5: 244253.34375 - stdev: 35262.0859375 - ncomponents: 1 - pixel_percentage: 0.03730813413858414 - shape: - - [20, 18, 14] - - image_intensity: - - max: 321699.5 - mean: 147083.453125 - median: 137020.15625 - min: 62552.68359375 - percentile: [71488.78125, 98297.078125, 211487.640625, 300848.625] - percentile_00_5: 71488.78125 - percentile_10_0: 98297.078125 - percentile_90_0: 211487.640625 - percentile_99_5: 300848.625 - stdev: 46363.3359375 - ncomponents: 1 - pixel_percentage: 0.03247271850705147 - shape: - - [23, 21, 15] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_060.nii.gz - image_foreground_stats: - intensity: - - max: 617.9561767578125 - mean: 277.4104309082031 - median: 265.78759765625 - min: 19.934070587158203 - percentile: [93.0256576538086, 179.40663146972656, 392.0367126464844, 551.50927734375] - percentile_00_5: 93.0256576538086 - percentile_10_0: 179.40663146972656 - percentile_90_0: 392.0367126464844 - percentile_99_5: 551.50927734375 - stdev: 84.13401794433594 - image_stats: - channels: 1 - cropped_shape: - - [39, 52, 31] - intensity: - - max: 1282.4251708984375 - mean: 381.5858154296875 - median: 365.45794677734375 - min: 0.0 - percentile: [19.934070587158203, 132.893798828125, 631.2455444335938, 770.7840576171875] - percentile_00_5: 19.934070587158203 - percentile_10_0: 132.893798828125 - percentile_90_0: 631.2455444335938 - percentile_99_5: 770.7840576171875 - stdev: 187.3821563720703 - shape: - - [39, 52, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_060.nii.gz - label_stats: - image_intensity: - - max: 617.9561767578125 - mean: 277.4104309082031 - median: 265.78759765625 - min: 19.934070587158203 - percentile: [93.0256576538086, 179.40663146972656, 392.0367126464844, 551.50927734375] - percentile_00_5: 93.0256576538086 - percentile_10_0: 179.40663146972656 - percentile_90_0: 392.0367126464844 - percentile_99_5: 551.50927734375 - stdev: 84.13401794433594 - label: - - image_intensity: - - max: 1282.4251708984375 - mean: 387.5585632324219 - median: 378.7473449707031 - min: 0.0 - percentile: [19.934070587158203, 132.893798828125, 637.8902587890625, 770.7840576171875] - percentile_00_5: 19.934070587158203 - percentile_10_0: 132.893798828125 - percentile_90_0: 637.8902587890625 - percentile_99_5: 770.7840576171875 - stdev: 189.89852905273438 - ncomponents: 1 - pixel_percentage: 0.9457752704620361 - shape: - - [39, 52, 31] - - image_intensity: - - max: 591.37744140625 - mean: 290.0526428222656 - median: 285.7216796875 - min: 39.868141174316406 - percentile: [97.1785888671875, 192.69601440429688, 398.681396484375, 524.9305419921875] - percentile_00_5: 97.1785888671875 - percentile_10_0: 192.69601440429688 - percentile_90_0: 398.681396484375 - percentile_99_5: 524.9305419921875 - stdev: 79.89807891845703 - ncomponents: 1 - pixel_percentage: 0.027454348281025887 - shape: - - [22, 17, 13] - - image_intensity: - - max: 617.9561767578125 - mean: 264.44525146484375 - median: 252.4982147216797 - min: 19.934070587158203 - percentile: [78.54023742675781, 172.76194763183594, 378.7473449707031, 562.0740966796875] - percentile_00_5: 78.54023742675781 - percentile_10_0: 172.76194763183594 - percentile_90_0: 378.7473449707031 - percentile_99_5: 562.0740966796875 - stdev: 86.36613464355469 - ncomponents: 1 - pixel_percentage: 0.026770375669002533 - shape: - - [19, 25, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_003.nii.gz - image_foreground_stats: - intensity: - - max: 786.5840454101562 - mean: 357.75146484375 - median: 339.6612854003906 - min: 113.22042846679688 - percentile: [184.7280731201172, 262.1946716308594, 476.71759033203125, 655.4866943359375] - percentile_00_5: 184.7280731201172 - percentile_10_0: 262.1946716308594 - percentile_90_0: 476.71759033203125 - percentile_99_5: 655.4866943359375 - stdev: 89.90286254882812 - image_stats: - channels: 1 - cropped_shape: - - [34, 52, 35] - intensity: - - max: 2776.880126953125 - mean: 482.6452941894531 - median: 482.67657470703125 - min: 0.0 - percentile: [35.753822326660156, 238.35879516601562, 726.9943237304688, 852.1326904296875] - percentile_00_5: 35.753822326660156 - percentile_10_0: 238.35879516601562 - percentile_90_0: 726.9943237304688 - percentile_99_5: 852.1326904296875 - stdev: 196.74331665039062 - shape: - - [34, 52, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_003.nii.gz - label_stats: - image_intensity: - - max: 786.5840454101562 - mean: 357.75146484375 - median: 339.6612854003906 - min: 113.22042846679688 - percentile: [184.7280731201172, 262.1946716308594, 476.71759033203125, 655.4866943359375] - percentile_00_5: 184.7280731201172 - percentile_10_0: 262.1946716308594 - percentile_90_0: 476.71759033203125 - percentile_99_5: 655.4866943359375 - stdev: 89.90286254882812 - label: - - image_intensity: - - max: 2776.880126953125 - mean: 489.8004150390625 - median: 500.5534973144531 - min: 0.0 - percentile: [35.753822326660156, 232.3998260498047, 726.9943237304688, 852.1326904296875] - percentile_00_5: 35.753822326660156 - percentile_10_0: 232.3998260498047 - percentile_90_0: 726.9943237304688 - percentile_99_5: 852.1326904296875 - stdev: 198.79039001464844 - ncomponents: 1 - pixel_percentage: 0.9458144903182983 - shape: - - [34, 52, 35] - - image_intensity: - - max: 738.9122924804688 - mean: 361.8094482421875 - median: 345.6202697753906 - min: 131.0973358154297 - percentile: [177.24957275390625, 262.1946716308594, 476.71759033203125, 633.17041015625] - percentile_00_5: 177.24957275390625 - percentile_10_0: 262.1946716308594 - percentile_90_0: 476.71759033203125 - percentile_99_5: 633.17041015625 - stdev: 86.8495101928711 - ncomponents: 1 - pixel_percentage: 0.025048481300473213 - shape: - - [22, 17, 14] - - image_intensity: - - max: 786.5840454101562 - mean: 354.262939453125 - median: 333.70233154296875 - min: 113.22042846679688 - percentile: [196.64601135253906, 257.427490234375, 482.67657470703125, 655.4866943359375] - percentile_00_5: 196.64601135253906 - percentile_10_0: 257.427490234375 - percentile_90_0: 482.67657470703125 - percentile_99_5: 655.4866943359375 - stdev: 92.30469512939453 - ncomponents: 1 - pixel_percentage: 0.029137039557099342 - shape: - - [20, 25, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_172.nii.gz - image_foreground_stats: - intensity: - - max: 87.0 - mean: 45.88605499267578 - median: 45.0 - min: 20.0 - percentile: [25.0, 34.20001220703125, 59.0, 77.0] - percentile_00_5: 25.0 - percentile_10_0: 34.20001220703125 - percentile_90_0: 59.0 - percentile_99_5: 77.0 - stdev: 10.004460334777832 - image_stats: - channels: 1 - cropped_shape: - - [34, 56, 31] - intensity: - - max: 112.0 - mean: 59.43553161621094 - median: 60.0 - min: 2.0 - percentile: [8.0, 28.0, 88.0, 100.0] - percentile_00_5: 8.0 - percentile_10_0: 28.0 - percentile_90_0: 88.0 - percentile_99_5: 100.0 - stdev: 23.43122673034668 - shape: - - [34, 56, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_172.nii.gz - label_stats: - image_intensity: - - max: 87.0 - mean: 45.88605499267578 - median: 45.0 - min: 20.0 - percentile: [25.0, 34.20001220703125, 59.0, 77.0] - percentile_00_5: 25.0 - percentile_10_0: 34.20001220703125 - percentile_90_0: 59.0 - percentile_99_5: 77.0 - stdev: 10.004460334777832 - label: - - image_intensity: - - max: 112.0 - mean: 60.40020751953125 - median: 63.0 - min: 2.0 - percentile: [8.0, 27.0, 89.0, 100.0] - percentile_00_5: 8.0 - percentile_10_0: 27.0 - percentile_90_0: 89.0 - percentile_99_5: 100.0 - stdev: 23.811412811279297 - ncomponents: 1 - pixel_percentage: 0.9335355162620544 - shape: - - [34, 56, 31] - - image_intensity: - - max: 80.0 - mean: 46.1413459777832 - median: 45.0 - min: 21.0 - percentile: [25.0, 35.0, 59.0, 73.0] - percentile_00_5: 25.0 - percentile_10_0: 35.0 - percentile_90_0: 59.0 - percentile_99_5: 73.0 - stdev: 9.2404203414917 - ncomponents: 1 - pixel_percentage: 0.03356261923909187 - shape: - - [22, 17, 15] - - image_intensity: - - max: 87.0 - mean: 45.62564468383789 - median: 44.0 - min: 20.0 - percentile: [23.704999923706055, 34.0, 60.0, 79.0] - percentile_00_5: 23.704999923706055 - percentile_10_0: 34.0 - percentile_90_0: 60.0 - percentile_99_5: 79.0 - stdev: 10.721664428710938 - ncomponents: 1 - pixel_percentage: 0.03290187194943428 - shape: - - [16, 27, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_011.nii.gz - image_foreground_stats: - intensity: - - max: 902.5029296875 - mean: 437.85736083984375 - median: 422.44818115234375 - min: 70.40803527832031 - percentile: [174.5799102783203, 332.83795166015625, 569.6649780273438, 779.1295166015625] - percentile_00_5: 174.5799102783203 - percentile_10_0: 332.83795166015625 - percentile_90_0: 569.6649780273438 - percentile_99_5: 779.1295166015625 - stdev: 102.07337188720703 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 31] - intensity: - - max: 1728.1971435546875 - mean: 553.5700073242188 - median: 556.863525390625 - min: 0.0 - percentile: [25.602920532226562, 198.42263793945312, 857.6978149414062, 972.9110107421875] - percentile_00_5: 25.602920532226562 - percentile_10_0: 198.42263793945312 - percentile_90_0: 857.6978149414062 - percentile_99_5: 972.9110107421875 - stdev: 247.18447875976562 - shape: - - [36, 50, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_011.nii.gz - label_stats: - image_intensity: - - max: 902.5029296875 - mean: 437.85736083984375 - median: 422.44818115234375 - min: 70.40803527832031 - percentile: [174.5799102783203, 332.83795166015625, 569.6649780273438, 779.1295166015625] - percentile_00_5: 174.5799102783203 - percentile_10_0: 332.83795166015625 - percentile_90_0: 569.6649780273438 - percentile_99_5: 779.1295166015625 - stdev: 102.07337188720703 - label: - - image_intensity: - - max: 1728.1971435546875 - mean: 561.2098999023438 - median: 588.8671875 - min: 0.0 - percentile: [19.202190399169922, 185.6211700439453, 864.0985717773438, 979.3117065429688] - percentile_00_5: 19.202190399169922 - percentile_10_0: 185.6211700439453 - percentile_90_0: 864.0985717773438 - percentile_99_5: 979.3117065429688 - stdev: 251.99993896484375 - ncomponents: 1 - pixel_percentage: 0.9380645155906677 - shape: - - [36, 50, 31] - - image_intensity: - - max: 787.289794921875 - mean: 429.9703674316406 - median: 422.44818115234375 - min: 70.40803527832031 - percentile: [160.01824951171875, 326.4372253417969, 556.863525390625, 742.4846801757812] - percentile_00_5: 160.01824951171875 - percentile_10_0: 326.4372253417969 - percentile_90_0: 556.863525390625 - percentile_99_5: 742.4846801757812 - stdev: 96.38408660888672 - ncomponents: 1 - pixel_percentage: 0.03426523134112358 - shape: - - [26, 16, 14] - - image_intensity: - - max: 902.5029296875 - mean: 447.62408447265625 - median: 422.44818115234375 - min: 172.81971740722656 - percentile: [211.22409057617188, 339.23870849609375, 595.2678833007812, 812.8927001953125] - percentile_00_5: 211.22409057617188 - percentile_10_0: 339.23870849609375 - percentile_90_0: 595.2678833007812 - percentile_99_5: 812.8927001953125 - stdev: 107.91082763671875 - ncomponents: 1 - pixel_percentage: 0.027670251205563545 - shape: - - [17, 21, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_044.nii.gz - image_foreground_stats: - intensity: - - max: 289225.15625 - mean: 127170.7421875 - median: 122058.328125 - min: 34494.74609375 - percentile: [55722.28125, 87563.5859375, 175127.171875, 249171.53125] - percentile_00_5: 55722.28125 - percentile_10_0: 87563.5859375 - percentile_90_0: 175127.171875 - percentile_99_5: 249171.53125 - stdev: 36386.8125 - image_stats: - channels: 1 - cropped_shape: - - [38, 48, 33] - intensity: - - max: 358214.65625 - mean: 179025.328125 - median: 183087.484375 - min: 0.0 - percentile: [10613.767578125, 71642.9296875, 275957.96875, 307799.25] - percentile_00_5: 10613.767578125 - percentile_10_0: 71642.9296875 - percentile_90_0: 275957.96875 - percentile_99_5: 307799.25 - stdev: 78265.9140625 - shape: - - [38, 48, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_044.nii.gz - label_stats: - image_intensity: - - max: 289225.15625 - mean: 127170.7421875 - median: 122058.328125 - min: 34494.74609375 - percentile: [55722.28125, 87563.5859375, 175127.171875, 249171.53125] - percentile_00_5: 55722.28125 - percentile_10_0: 87563.5859375 - percentile_90_0: 175127.171875 - percentile_99_5: 249171.53125 - stdev: 36386.8125 - label: - - image_intensity: - - max: 358214.65625 - mean: 181956.109375 - median: 191047.8125 - min: 0.0 - percentile: [10613.767578125, 71642.9296875, 275957.96875, 307799.25] - percentile_00_5: 10613.767578125 - percentile_10_0: 71642.9296875 - percentile_90_0: 275957.96875 - percentile_99_5: 307799.25 - stdev: 78970.6953125 - ncomponents: 1 - pixel_percentage: 0.946504533290863 - shape: - - [38, 48, 33] - - image_intensity: - - max: 262690.75 - mean: 128947.5546875 - median: 124711.765625 - min: 34494.74609375 - percentile: [52830.02734375, 90217.0234375, 172473.71875, 226988.796875] - percentile_00_5: 52830.02734375 - percentile_10_0: 90217.0234375 - percentile_90_0: 172473.71875 - percentile_99_5: 226988.796875 - stdev: 32644.8984375 - ncomponents: 1 - pixel_percentage: 0.028110047802329063 - shape: - - [23, 15, 12] - - image_intensity: - - max: 289225.15625 - mean: 125203.203125 - median: 116751.4453125 - min: 42455.0703125 - percentile: [57407.21484375, 82256.6953125, 183087.484375, 258352.34375] - percentile_00_5: 57407.21484375 - percentile_10_0: 82256.6953125 - percentile_90_0: 183087.484375 - percentile_99_5: 258352.34375 - stdev: 40033.33984375 - ncomponents: 1 - pixel_percentage: 0.025385433807969093 - shape: - - [17, 22, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_144.nii.gz - image_foreground_stats: - intensity: - - max: 81.0 - mean: 42.477943420410156 - median: 41.0 - min: 22.0 - percentile: [26.0, 32.0, 55.0, 73.0] - percentile_00_5: 26.0 - percentile_10_0: 32.0 - percentile_90_0: 55.0 - percentile_99_5: 73.0 - stdev: 9.120058059692383 - image_stats: - channels: 1 - cropped_shape: - - [34, 45, 43] - intensity: - - max: 226.0 - mean: 53.56415939331055 - median: 55.0 - min: 1.0 - percentile: [7.0, 22.0, 81.0, 96.0] - percentile_00_5: 7.0 - percentile_10_0: 22.0 - percentile_90_0: 81.0 - percentile_99_5: 96.0 - stdev: 22.04056167602539 - shape: - - [34, 45, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_144.nii.gz - label_stats: - image_intensity: - - max: 81.0 - mean: 42.477943420410156 - median: 41.0 - min: 22.0 - percentile: [26.0, 32.0, 55.0, 73.0] - percentile_00_5: 26.0 - percentile_10_0: 32.0 - percentile_90_0: 55.0 - percentile_99_5: 73.0 - stdev: 9.120058059692383 - label: - - image_intensity: - - max: 226.0 - mean: 53.996795654296875 - median: 56.0 - min: 1.0 - percentile: [7.0, 22.0, 81.0, 96.0] - percentile_00_5: 7.0 - percentile_10_0: 22.0 - percentile_90_0: 81.0 - percentile_99_5: 96.0 - stdev: 22.282609939575195 - ncomponents: 1 - pixel_percentage: 0.962441086769104 - shape: - - [34, 45, 43] - - image_intensity: - - max: 74.0 - mean: 43.85329818725586 - median: 42.0 - min: 24.0 - percentile: [27.0, 34.0, 55.4000244140625, 71.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 55.4000244140625 - percentile_99_5: 71.0 - stdev: 8.607136726379395 - ncomponents: 1 - pixel_percentage: 0.018650250509381294 - shape: - - [19, 14, 13] - - image_intensity: - - max: 81.0 - mean: 41.12138366699219 - median: 39.0 - min: 22.0 - percentile: [24.21500015258789, 31.0, 54.0, 75.0] - percentile_00_5: 24.21500015258789 - percentile_10_0: 31.0 - percentile_90_0: 54.0 - percentile_99_5: 75.0 - stdev: 9.404139518737793 - ncomponents: 1 - pixel_percentage: 0.018908647820353508 - shape: - - [16, 19, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_039.nii.gz - image_foreground_stats: - intensity: - - max: 1085.3013916015625 - mean: 465.3375244140625 - median: 443.9869384765625 - min: 115.10771942138672 - percentile: [221.99346923828125, 320.6572265625, 633.0924682617188, 953.7496948242188] - percentile_00_5: 221.99346923828125 - percentile_10_0: 320.6572265625 - percentile_90_0: 633.0924682617188 - percentile_99_5: 953.7496948242188 - stdev: 130.3394012451172 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 34] - intensity: - - max: 3198.350341796875 - mean: 611.4544677734375 - median: 591.9825439453125 - min: 0.0 - percentile: [49.331878662109375, 279.5473327636719, 961.9716796875, 1159.2991943359375] - percentile_00_5: 49.331878662109375 - percentile_10_0: 279.5473327636719 - percentile_90_0: 961.9716796875 - percentile_99_5: 1159.2991943359375 - stdev: 273.3690185546875 - shape: - - [34, 53, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_039.nii.gz - label_stats: - image_intensity: - - max: 1085.3013916015625 - mean: 465.3375244140625 - median: 443.9869384765625 - min: 115.10771942138672 - percentile: [221.99346923828125, 320.6572265625, 633.0924682617188, 953.7496948242188] - percentile_00_5: 221.99346923828125 - percentile_10_0: 320.6572265625 - percentile_90_0: 633.0924682617188 - percentile_99_5: 953.7496948242188 - stdev: 130.3394012451172 - label: - - image_intensity: - - max: 3198.350341796875 - mean: 620.7322387695312 - median: 608.426513671875 - min: 0.0 - percentile: [41.109901428222656, 279.5473327636719, 970.1936645507812, 1175.7431640625] - percentile_00_5: 41.109901428222656 - percentile_10_0: 279.5473327636719 - percentile_90_0: 970.1936645507812 - percentile_99_5: 1175.7431640625 - stdev: 277.4081726074219 - ncomponents: 1 - pixel_percentage: 0.9402951002120972 - shape: - - [34, 53, 34] - - image_intensity: - - max: 929.083740234375 - mean: 447.4080505371094 - median: 435.76495361328125 - min: 115.10771942138672 - percentile: [221.99346923828125, 320.6572265625, 591.9825439453125, 763.1235961914062] - percentile_00_5: 221.99346923828125 - percentile_10_0: 320.6572265625 - percentile_90_0: 591.9825439453125 - percentile_99_5: 763.1235961914062 - stdev: 108.08606719970703 - ncomponents: 1 - pixel_percentage: 0.03326369449496269 - shape: - - [25, 19, 14] - - image_intensity: - - max: 1085.3013916015625 - mean: 487.893310546875 - median: 452.2088928222656 - min: 147.99563598632812 - percentile: [238.4374237060547, 328.87921142578125, 698.8682861328125, 985.075927734375] - percentile_00_5: 238.4374237060547 - percentile_10_0: 328.87921142578125 - percentile_90_0: 698.8682861328125 - percentile_99_5: 985.075927734375 - stdev: 150.83090209960938 - ncomponents: 1 - pixel_percentage: 0.026441209018230438 - shape: - - [19, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_290.nii.gz - image_foreground_stats: - intensity: - - max: 754.5158081054688 - mean: 306.4997253417969 - median: 304.4537658691406 - min: 33.09280014038086 - percentile: [86.04127502441406, 191.938232421875, 430.2063903808594, 570.32080078125] - percentile_00_5: 86.04127502441406 - percentile_10_0: 191.938232421875 - percentile_90_0: 430.2063903808594 - percentile_99_5: 570.32080078125 - stdev: 93.77835083007812 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 40] - intensity: - - max: 1734.0626220703125 - mean: 413.34185791015625 - median: 436.824951171875 - min: 0.0 - percentile: [19.85567855834961, 125.75263977050781, 642.0003051757812, 780.9900512695312] - percentile_00_5: 19.85567855834961 - percentile_10_0: 125.75263977050781 - percentile_90_0: 642.0003051757812 - percentile_99_5: 780.9900512695312 - stdev: 193.10513305664062 - shape: - - [35, 49, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_290.nii.gz - label_stats: - image_intensity: - - max: 754.5158081054688 - mean: 306.4997253417969 - median: 304.4537658691406 - min: 33.09280014038086 - percentile: [86.04127502441406, 191.938232421875, 430.2063903808594, 570.32080078125] - percentile_00_5: 86.04127502441406 - percentile_10_0: 191.938232421875 - percentile_90_0: 430.2063903808594 - percentile_99_5: 570.32080078125 - stdev: 93.77835083007812 - label: - - image_intensity: - - max: 1734.0626220703125 - mean: 418.5131530761719 - median: 450.06207275390625 - min: 0.0 - percentile: [19.85567855834961, 125.75263977050781, 648.6188354492188, 787.608642578125] - percentile_00_5: 19.85567855834961 - percentile_10_0: 125.75263977050781 - percentile_90_0: 648.6188354492188 - percentile_99_5: 787.608642578125 - stdev: 195.16539001464844 - ncomponents: 1 - pixel_percentage: 0.953833818435669 - shape: - - [35, 49, 40] - - image_intensity: - - max: 754.5158081054688 - mean: 318.38494873046875 - median: 317.69085693359375 - min: 46.329917907714844 - percentile: [92.65983581542969, 198.55679321289062, 444.76690673828125, 615.5260620117188] - percentile_00_5: 92.65983581542969 - percentile_10_0: 198.55679321289062 - percentile_90_0: 444.76690673828125 - percentile_99_5: 615.5260620117188 - stdev: 98.09336853027344 - ncomponents: 1 - pixel_percentage: 0.021268222481012344 - shape: - - [20, 14, 13] - - image_intensity: - - max: 608.9075317382812 - mean: 296.34716796875 - median: 291.2166442871094 - min: 33.09280014038086 - percentile: [79.42271423339844, 185.31967163085938, 410.3507080078125, 542.721923828125] - percentile_00_5: 79.42271423339844 - percentile_10_0: 185.31967163085938 - percentile_90_0: 410.3507080078125 - percentile_99_5: 542.721923828125 - stdev: 88.67585754394531 - ncomponents: 1 - pixel_percentage: 0.02489795908331871 - shape: - - [22, 22, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_390.nii.gz - image_foreground_stats: - intensity: - - max: 899.6135864257812 - mean: 404.34527587890625 - median: 388.3224182128906 - min: 32.360198974609375 - percentile: [105.20301055908203, 258.881591796875, 576.0115966796875, 776.6448364257812] - percentile_00_5: 105.20301055908203 - percentile_10_0: 258.881591796875 - percentile_90_0: 576.0115966796875 - percentile_99_5: 776.6448364257812 - stdev: 125.83457946777344 - image_stats: - channels: 1 - cropped_shape: - - [38, 51, 33] - intensity: - - max: 2582.343994140625 - mean: 516.3698120117188 - median: 524.2352294921875 - min: 0.0 - percentile: [25.888160705566406, 174.74508666992188, 815.47705078125, 990.22216796875] - percentile_00_5: 25.888160705566406 - percentile_10_0: 174.74508666992188 - percentile_90_0: 815.47705078125 - percentile_99_5: 990.22216796875 - stdev: 243.97390747070312 - shape: - - [38, 51, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_390.nii.gz - label_stats: - image_intensity: - - max: 899.6135864257812 - mean: 404.34527587890625 - median: 388.3224182128906 - min: 32.360198974609375 - percentile: [105.20301055908203, 258.881591796875, 576.0115966796875, 776.6448364257812] - percentile_00_5: 105.20301055908203 - percentile_10_0: 258.881591796875 - percentile_90_0: 576.0115966796875 - percentile_99_5: 776.6448364257812 - stdev: 125.83457946777344 - label: - - image_intensity: - - max: 2582.343994140625 - mean: 522.3712768554688 - median: 537.1793212890625 - min: 0.0 - percentile: [25.888160705566406, 168.27304077148438, 815.47705078125, 1003.1661987304688] - percentile_00_5: 25.888160705566406 - percentile_10_0: 168.27304077148438 - percentile_90_0: 815.47705078125 - percentile_99_5: 1003.1661987304688 - stdev: 247.29635620117188 - ncomponents: 1 - pixel_percentage: 0.9491509795188904 - shape: - - [38, 51, 33] - - image_intensity: - - max: 796.0609130859375 - mean: 415.96417236328125 - median: 407.738525390625 - min: 84.13652038574219 - percentile: [138.66346740722656, 271.82568359375, 582.483642578125, 754.477783203125] - percentile_00_5: 138.66346740722656 - percentile_10_0: 271.82568359375 - percentile_90_0: 582.483642578125 - percentile_99_5: 754.477783203125 - stdev: 121.57051086425781 - ncomponents: 1 - pixel_percentage: 0.029489945620298386 - shape: - - [23, 19, 14] - - image_intensity: - - max: 899.6135864257812 - mean: 388.3034362792969 - median: 368.9062805175781 - min: 32.360198974609375 - percentile: [95.947998046875, 239.46548461914062, 563.0675048828125, 784.2498168945312] - percentile_00_5: 95.947998046875 - percentile_10_0: 239.46548461914062 - percentile_90_0: 563.0675048828125 - percentile_99_5: 784.2498168945312 - stdev: 129.79661560058594 - ncomponents: 1 - pixel_percentage: 0.021359100937843323 - shape: - - [23, 21, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_127.nii.gz - image_foreground_stats: - intensity: - - max: 99.0 - mean: 53.997066497802734 - median: 52.0 - min: 26.0 - percentile: [32.0, 41.0, 70.0, 91.0] - percentile_00_5: 32.0 - percentile_10_0: 41.0 - percentile_90_0: 70.0 - percentile_99_5: 91.0 - stdev: 11.40976333618164 - image_stats: - channels: 1 - cropped_shape: - - [38, 55, 31] - intensity: - - max: 255.0 - mean: 67.50996398925781 - median: 67.0 - min: 2.0 - percentile: [7.0, 30.0, 105.0, 123.0] - percentile_00_5: 7.0 - percentile_10_0: 30.0 - percentile_90_0: 105.0 - percentile_99_5: 123.0 - stdev: 28.729984283447266 - shape: - - [38, 55, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_127.nii.gz - label_stats: - image_intensity: - - max: 99.0 - mean: 53.997066497802734 - median: 52.0 - min: 26.0 - percentile: [32.0, 41.0, 70.0, 91.0] - percentile_00_5: 32.0 - percentile_10_0: 41.0 - percentile_90_0: 70.0 - percentile_99_5: 91.0 - stdev: 11.40976333618164 - label: - - image_intensity: - - max: 255.0 - mean: 68.33990478515625 - median: 70.0 - min: 2.0 - percentile: [7.0, 29.0, 106.0, 123.0] - percentile_00_5: 7.0 - percentile_10_0: 29.0 - percentile_90_0: 106.0 - percentile_99_5: 123.0 - stdev: 29.261032104492188 - ncomponents: 1 - pixel_percentage: 0.9421361088752747 - shape: - - [38, 55, 31] - - image_intensity: - - max: 93.0 - mean: 53.11604690551758 - median: 52.0 - min: 26.0 - percentile: [31.0, 41.0, 68.0, 85.0] - percentile_00_5: 31.0 - percentile_10_0: 41.0 - percentile_90_0: 68.0 - percentile_99_5: 85.0 - stdev: 10.57291030883789 - ncomponents: 1 - pixel_percentage: 0.0323198027908802 - shape: - - [21, 20, 15] - - image_intensity: - - max: 99.0 - mean: 55.111785888671875 - median: 52.0 - min: 30.0 - percentile: [34.27000045776367, 42.0, 73.0, 95.4599609375] - percentile_00_5: 34.27000045776367 - percentile_10_0: 42.0 - percentile_90_0: 73.0 - percentile_99_5: 95.4599609375 - stdev: 12.297724723815918 - ncomponents: 1 - pixel_percentage: 0.025544065982103348 - shape: - - [21, 23, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_156.nii.gz - image_foreground_stats: - intensity: - - max: 358562.28125 - mean: 153219.28125 - median: 144095.125 - min: 6702.0986328125 - percentile: [56967.83984375, 103882.53125, 217818.203125, 304962.6875] - percentile_00_5: 56967.83984375 - percentile_10_0: 103882.53125 - percentile_90_0: 217818.203125 - percentile_99_5: 304962.6875 - stdev: 46942.984375 - image_stats: - channels: 1 - cropped_shape: - - [36, 52, 36] - intensity: - - max: 723826.625 - mean: 205868.78125 - median: 204414.015625 - min: 0.0 - percentile: [10053.1484375, 77074.1328125, 325051.78125, 365264.375] - percentile_00_5: 10053.1484375 - percentile_10_0: 77074.1328125 - percentile_90_0: 325051.78125 - percentile_99_5: 365264.375 - stdev: 94104.2109375 - shape: - - [36, 52, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_156.nii.gz - label_stats: - image_intensity: - - max: 358562.28125 - mean: 153219.28125 - median: 144095.125 - min: 6702.0986328125 - percentile: [56967.83984375, 103882.53125, 217818.203125, 304962.6875] - percentile_00_5: 56967.83984375 - percentile_10_0: 103882.53125 - percentile_90_0: 217818.203125 - percentile_99_5: 304962.6875 - stdev: 46942.984375 - label: - - image_intensity: - - max: 723826.625 - mean: 208840.015625 - median: 211116.109375 - min: 0.0 - percentile: [10053.1484375, 77074.1328125, 328402.84375, 365264.375] - percentile_00_5: 10053.1484375 - percentile_10_0: 77074.1328125 - percentile_90_0: 328402.84375 - percentile_99_5: 365264.375 - stdev: 95214.140625 - ncomponents: 1 - pixel_percentage: 0.9465811848640442 - shape: - - [36, 52, 36] - - image_intensity: - - max: 338455.96875 - mean: 154127.53125 - median: 147446.171875 - min: 6702.0986328125 - percentile: [56967.83984375, 107233.578125, 211116.109375, 276445.1875] - percentile_00_5: 56967.83984375 - percentile_10_0: 107233.578125 - percentile_90_0: 211116.109375 - percentile_99_5: 276445.1875 - stdev: 42294.609375 - ncomponents: 2 - pixel_percentage: 0.031190644949674606 - shape: - - [22, 18, 16] - - [1, 1, 4] - - image_intensity: - - max: 358562.28125 - mean: 151944.8125 - median: 140744.078125 - min: 33510.4921875 - percentile: [60318.88671875, 97180.4296875, 231222.40625, 323426.59375] - percentile_00_5: 60318.88671875 - percentile_10_0: 97180.4296875 - percentile_90_0: 231222.40625 - percentile_99_5: 323426.59375 - stdev: 52753.43359375 - ncomponents: 1 - pixel_percentage: 0.02222815714776516 - shape: - - [16, 22, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_056.nii.gz - image_foreground_stats: - intensity: - - max: 1152.19091796875 - mean: 527.4898071289062 - median: 500.95257568359375 - min: 141.9365692138672 - percentile: [214.24072265625, 350.66680908203125, 743.0796508789062, 1010.25439453125] - percentile_00_5: 214.24072265625 - percentile_10_0: 350.66680908203125 - percentile_90_0: 743.0796508789062 - percentile_99_5: 1010.25439453125 - stdev: 156.72950744628906 - image_stats: - channels: 1 - cropped_shape: - - [41, 47, 42] - intensity: - - max: 5335.14501953125 - mean: 713.3244018554688 - median: 734.73046875 - min: 0.0 - percentile: [41.74604797363281, 267.1747131347656, 1093.7464599609375, 1744.98486328125] - percentile_00_5: 41.74604797363281 - percentile_10_0: 267.1747131347656 - percentile_90_0: 1093.7464599609375 - percentile_99_5: 1744.98486328125 - stdev: 345.3978271484375 - shape: - - [41, 47, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_056.nii.gz - label_stats: - image_intensity: - - max: 1152.19091796875 - mean: 527.4898071289062 - median: 500.95257568359375 - min: 141.9365692138672 - percentile: [214.24072265625, 350.66680908203125, 743.0796508789062, 1010.25439453125] - percentile_00_5: 214.24072265625 - percentile_10_0: 350.66680908203125 - percentile_90_0: 743.0796508789062 - percentile_99_5: 1010.25439453125 - stdev: 156.72950744628906 - label: - - image_intensity: - - max: 5335.14501953125 - mean: 722.310302734375 - median: 759.778076171875 - min: 0.0 - percentile: [41.74604797363281, 258.82550048828125, 1102.095703125, 1786.7308349609375] - percentile_00_5: 41.74604797363281 - percentile_10_0: 258.82550048828125 - percentile_90_0: 1102.095703125 - percentile_99_5: 1786.7308349609375 - stdev: 349.47088623046875 - ncomponents: 1 - pixel_percentage: 0.9538760185241699 - shape: - - [41, 47, 42] - - image_intensity: - - max: 1152.19091796875 - mean: 536.1976928710938 - median: 517.6510009765625 - min: 141.9365692138672 - percentile: [208.73023986816406, 350.66680908203125, 743.0796508789062, 968.5083618164062] - percentile_00_5: 208.73023986816406 - percentile_10_0: 350.66680908203125 - percentile_90_0: 743.0796508789062 - percentile_99_5: 968.5083618164062 - stdev: 154.11289978027344 - ncomponents: 1 - pixel_percentage: 0.024279043078422546 - shape: - - [23, 16, 17] - - image_intensity: - - max: 1085.397216796875 - mean: 517.8115844726562 - median: 475.90496826171875 - min: 175.33340454101562 - percentile: [249.09866333007812, 350.66680908203125, 743.0796508789062, 1028.3306884765625] - percentile_00_5: 249.09866333007812 - percentile_10_0: 350.66680908203125 - percentile_90_0: 743.0796508789062 - percentile_99_5: 1028.3306884765625 - stdev: 159.02886962890625 - ncomponents: 1 - pixel_percentage: 0.021844960749149323 - shape: - - [18, 21, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_148.nii.gz - image_foreground_stats: - intensity: - - max: 82.0 - mean: 40.566043853759766 - median: 38.0 - min: 7.0 - percentile: [18.0, 28.0, 57.0, 76.0] - percentile_00_5: 18.0 - percentile_10_0: 28.0 - percentile_90_0: 57.0 - percentile_99_5: 76.0 - stdev: 11.138324737548828 - image_stats: - channels: 1 - cropped_shape: - - [34, 48, 32] - intensity: - - max: 144.0 - mean: 48.793983459472656 - median: 49.0 - min: 0.0 - percentile: [3.0, 14.0, 80.0, 91.0] - percentile_00_5: 3.0 - percentile_10_0: 14.0 - percentile_90_0: 80.0 - percentile_99_5: 91.0 - stdev: 23.953716278076172 - shape: - - [34, 48, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_148.nii.gz - label_stats: - image_intensity: - - max: 82.0 - mean: 40.566043853759766 - median: 38.0 - min: 7.0 - percentile: [18.0, 28.0, 57.0, 76.0] - percentile_00_5: 18.0 - percentile_10_0: 28.0 - percentile_90_0: 57.0 - percentile_99_5: 76.0 - stdev: 11.138324737548828 - label: - - image_intensity: - - max: 144.0 - mean: 49.285701751708984 - median: 51.0 - min: 0.0 - percentile: [3.0, 14.0, 80.0, 91.0] - percentile_00_5: 3.0 - percentile_10_0: 14.0 - percentile_90_0: 80.0 - percentile_99_5: 91.0 - stdev: 24.420663833618164 - ncomponents: 1 - pixel_percentage: 0.943608283996582 - shape: - - [34, 48, 32] - - image_intensity: - - max: 76.0 - mean: 40.05032730102539 - median: 38.0 - min: 7.0 - percentile: [16.0, 28.0, 54.0, 70.0] - percentile_00_5: 16.0 - percentile_10_0: 28.0 - percentile_90_0: 54.0 - percentile_99_5: 70.0 - stdev: 10.65861701965332 - ncomponents: 1 - pixel_percentage: 0.032341450452804565 - shape: - - [22, 16, 13] - - image_intensity: - - max: 82.0 - mean: 41.25955581665039 - median: 39.0 - min: 12.0 - percentile: [21.0, 29.0, 59.0, 78.0] - percentile_00_5: 21.0 - percentile_10_0: 29.0 - percentile_90_0: 59.0 - percentile_99_5: 78.0 - stdev: 11.716848373413086 - ncomponents: 1 - pixel_percentage: 0.024050245061516762 - shape: - - [17, 21, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_048.nii.gz - image_foreground_stats: - intensity: - - max: 1144.2408447265625 - mean: 492.4038391113281 - median: 468.508056640625 - min: 99.10747528076172 - percentile: [207.22471618652344, 333.36151123046875, 675.7327880859375, 1032.92529296875] - percentile_00_5: 207.22471618652344 - percentile_10_0: 333.36151123046875 - percentile_90_0: 675.7327880859375 - percentile_99_5: 1032.92529296875 - stdev: 146.8853302001953 - image_stats: - channels: 1 - cropped_shape: - - [38, 52, 29] - intensity: - - max: 2711.94091796875 - mean: 657.6072998046875 - median: 639.6937255859375 - min: 0.0 - percentile: [36.03908157348633, 216.2344970703125, 1081.1724853515625, 1279.387451171875] - percentile_00_5: 36.03908157348633 - percentile_10_0: 216.2344970703125 - percentile_90_0: 1081.1724853515625 - percentile_99_5: 1279.387451171875 - stdev: 325.3800048828125 - shape: - - [38, 52, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_048.nii.gz - label_stats: - image_intensity: - - max: 1144.2408447265625 - mean: 492.4038391113281 - median: 468.508056640625 - min: 99.10747528076172 - percentile: [207.22471618652344, 333.36151123046875, 675.7327880859375, 1032.92529296875] - percentile_00_5: 207.22471618652344 - percentile_10_0: 333.36151123046875 - percentile_90_0: 675.7327880859375 - percentile_99_5: 1032.92529296875 - stdev: 146.8853302001953 - label: - - image_intensity: - - max: 2711.94091796875 - mean: 667.6115112304688 - median: 675.7327880859375 - min: 0.0 - percentile: [36.03908157348633, 207.22471618652344, 1090.1822509765625, 1279.387451171875] - percentile_00_5: 36.03908157348633 - percentile_10_0: 207.22471618652344 - percentile_90_0: 1090.1822509765625 - percentile_99_5: 1279.387451171875 - stdev: 330.4906921386719 - ncomponents: 1 - pixel_percentage: 0.9429010152816772 - shape: - - [38, 52, 29] - - image_intensity: - - max: 982.0650024414062 - mean: 480.588623046875 - median: 468.508056640625 - min: 171.18563842773438 - percentile: [207.22471618652344, 333.36151123046875, 639.6937255859375, 848.9002685546875] - percentile_00_5: 207.22471618652344 - percentile_10_0: 333.36151123046875 - percentile_90_0: 639.6937255859375 - percentile_99_5: 848.9002685546875 - stdev: 122.53980255126953 - ncomponents: 1 - pixel_percentage: 0.034151192754507065 - shape: - - [23, 17, 13] - - image_intensity: - - max: 1144.2408447265625 - mean: 509.98724365234375 - median: 468.508056640625 - min: 99.10747528076172 - percentile: [207.22471618652344, 333.36151123046875, 762.2263793945312, 1072.1627197265625] - percentile_00_5: 207.22471618652344 - percentile_10_0: 333.36151123046875 - percentile_90_0: 762.2263793945312 - percentile_99_5: 1072.1627197265625 - stdev: 175.5562286376953 - ncomponents: 1 - pixel_percentage: 0.02294778637588024 - shape: - - [22, 23, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_135.nii.gz - image_foreground_stats: - intensity: - - max: 320596.625 - mean: 156762.46875 - median: 152516.84375 - min: 6225.17724609375 - percentile: [21788.12109375, 112053.1875, 211656.03125, 295260.46875] - percentile_00_5: 21788.12109375 - percentile_10_0: 112053.1875 - percentile_90_0: 211656.03125 - percentile_99_5: 295260.46875 - stdev: 42601.29296875 - image_stats: - channels: 1 - cropped_shape: - - [32, 49, 38] - intensity: - - max: 479338.65625 - mean: 217502.78125 - median: 224106.375 - min: 0.0 - percentile: [12450.3544921875, 87152.484375, 336159.5625, 389073.5625] - percentile_00_5: 12450.3544921875 - percentile_10_0: 87152.484375 - percentile_90_0: 336159.5625 - percentile_99_5: 389073.5625 - stdev: 94671.8984375 - shape: - - [32, 49, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_135.nii.gz - label_stats: - image_intensity: - - max: 320596.625 - mean: 156762.46875 - median: 152516.84375 - min: 6225.17724609375 - percentile: [21788.12109375, 112053.1875, 211656.03125, 295260.46875] - percentile_00_5: 21788.12109375 - percentile_10_0: 112053.1875 - percentile_90_0: 211656.03125 - percentile_99_5: 295260.46875 - stdev: 42601.29296875 - label: - - image_intensity: - - max: 479338.65625 - mean: 220306.5 - median: 230331.5625 - min: 0.0 - percentile: [12450.3544921875, 87152.484375, 339272.15625, 392186.15625] - percentile_00_5: 12450.3544921875 - percentile_10_0: 87152.484375 - percentile_90_0: 339272.15625 - percentile_99_5: 392186.15625 - stdev: 95470.15625 - ncomponents: 1 - pixel_percentage: 0.955877423286438 - shape: - - [32, 49, 38] - - image_intensity: - - max: 295695.90625 - mean: 154229.578125 - median: 152516.84375 - min: 6225.17724609375 - percentile: [18084.138671875, 105828.015625, 208543.4375, 270795.21875] - percentile_00_5: 18084.138671875 - percentile_10_0: 105828.015625 - percentile_90_0: 208543.4375 - percentile_99_5: 270795.21875 - stdev: 43262.5234375 - ncomponents: 1 - pixel_percentage: 0.022875268012285233 - shape: - - [21, 16, 14] - - image_intensity: - - max: 320596.625 - mean: 159489.4375 - median: 152516.84375 - min: 74702.125 - percentile: [87152.484375, 115165.78125, 214768.609375, 307134.84375] - percentile_00_5: 87152.484375 - percentile_10_0: 115165.78125 - percentile_90_0: 214768.609375 - percentile_99_5: 307134.84375 - stdev: 41706.12109375 - ncomponents: 1 - pixel_percentage: 0.021247314289212227 - shape: - - [18, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_035.nii.gz - image_foreground_stats: - intensity: - - max: 1070.5084228515625 - mean: 472.3668518066406 - median: 452.63104248046875 - min: 129.32315063476562 - percentile: [202.92958068847656, 344.86175537109375, 610.6926879882812, 960.979736328125] - percentile_00_5: 202.92958068847656 - percentile_10_0: 344.86175537109375 - percentile_90_0: 610.6926879882812 - percentile_99_5: 960.979736328125 - stdev: 120.3863525390625 - image_stats: - channels: 1 - cropped_shape: - - [35, 47, 37] - intensity: - - max: 2457.139892578125 - mean: 649.9960327148438 - median: 646.6157836914062 - min: 0.0 - percentile: [35.923099517822266, 273.01556396484375, 1034.585205078125, 1178.2777099609375] - percentile_00_5: 35.923099517822266 - percentile_10_0: 273.01556396484375 - percentile_90_0: 1034.585205078125 - percentile_99_5: 1178.2777099609375 - stdev: 287.1233825683594 - shape: - - [35, 47, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_035.nii.gz - label_stats: - image_intensity: - - max: 1070.5084228515625 - mean: 472.3668518066406 - median: 452.63104248046875 - min: 129.32315063476562 - percentile: [202.92958068847656, 344.86175537109375, 610.6926879882812, 960.979736328125] - percentile_00_5: 202.92958068847656 - percentile_10_0: 344.86175537109375 - percentile_90_0: 610.6926879882812 - percentile_99_5: 960.979736328125 - stdev: 120.3863525390625 - label: - - image_intensity: - - max: 2457.139892578125 - mean: 660.6695556640625 - median: 675.354248046875 - min: 0.0 - percentile: [35.923099517822266, 265.8309326171875, 1034.585205078125, 1178.2777099609375] - percentile_00_5: 35.923099517822266 - percentile_10_0: 265.8309326171875 - percentile_90_0: 1034.585205078125 - percentile_99_5: 1178.2777099609375 - stdev: 290.7109680175781 - ncomponents: 1 - pixel_percentage: 0.943317174911499 - shape: - - [35, 47, 37] - - image_intensity: - - max: 962.7390747070312 - mean: 452.0422668457031 - median: 438.2618103027344 - min: 129.32315063476562 - percentile: [181.98641967773438, 337.6771240234375, 589.1388549804688, 804.6774291992188] - percentile_00_5: 181.98641967773438 - percentile_10_0: 337.6771240234375 - percentile_90_0: 589.1388549804688 - percentile_99_5: 804.6774291992188 - stdev: 104.7016372680664 - ncomponents: 1 - pixel_percentage: 0.030674442648887634 - shape: - - [21, 15, 16] - - image_intensity: - - max: 1070.5084228515625 - mean: 496.3378601074219 - median: 474.1849060058594 - min: 165.2462615966797 - percentile: [250.16847229003906, 366.4156188964844, 660.9850463867188, 985.5856323242188] - percentile_00_5: 250.16847229003906 - percentile_10_0: 366.4156188964844 - percentile_90_0: 660.9850463867188 - percentile_99_5: 985.5856323242188 - stdev: 132.64572143554688 - ncomponents: 1 - pixel_percentage: 0.026008378714323044 - shape: - - [20, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_282.nii.gz - image_foreground_stats: - intensity: - - max: 795.6370849609375 - mean: 309.8588562011719 - median: 296.1860656738281 - min: 17.422710418701172 - percentile: [133.57411193847656, 220.68765258789062, 426.85638427734375, 603.9873046875] - percentile_00_5: 133.57411193847656 - percentile_10_0: 220.68765258789062 - percentile_90_0: 426.85638427734375 - percentile_99_5: 603.9873046875 - stdev: 85.25798034667969 - image_stats: - channels: 1 - cropped_shape: - - [37, 52, 32] - intensity: - - max: 2793.441162109375 - mean: 418.5789489746094 - median: 418.1450500488281 - min: 0.0 - percentile: [23.23027992248535, 145.1892547607422, 662.06298828125, 807.252197265625] - percentile_00_5: 23.23027992248535 - percentile_10_0: 145.1892547607422 - percentile_90_0: 662.06298828125 - percentile_99_5: 807.252197265625 - stdev: 198.16217041015625 - shape: - - [37, 52, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_282.nii.gz - label_stats: - image_intensity: - - max: 795.6370849609375 - mean: 309.8588562011719 - median: 296.1860656738281 - min: 17.422710418701172 - percentile: [133.57411193847656, 220.68765258789062, 426.85638427734375, 603.9873046875] - percentile_00_5: 133.57411193847656 - percentile_10_0: 220.68765258789062 - percentile_90_0: 426.85638427734375 - percentile_99_5: 603.9873046875 - stdev: 85.25798034667969 - label: - - image_intensity: - - max: 2793.441162109375 - mean: 423.0195007324219 - median: 429.76019287109375 - min: 0.0 - percentile: [23.23027992248535, 139.38168334960938, 667.8705444335938, 813.059814453125] - percentile_00_5: 23.23027992248535 - percentile_10_0: 139.38168334960938 - percentile_90_0: 667.8705444335938 - percentile_99_5: 813.059814453125 - stdev: 200.18174743652344 - ncomponents: 1 - pixel_percentage: 0.9607588648796082 - shape: - - [37, 52, 32] - - image_intensity: - - max: 609.7948608398438 - mean: 313.7369384765625 - median: 301.99365234375 - min: 46.4605598449707 - percentile: [133.57411193847656, 221.8491973876953, 412.33746337890625, 569.2574462890625] - percentile_00_5: 133.57411193847656 - percentile_10_0: 221.8491973876953 - percentile_90_0: 412.33746337890625 - percentile_99_5: 569.2574462890625 - stdev: 77.09680938720703 - ncomponents: 1 - pixel_percentage: 0.01840241625905037 - shape: - - [17, 16, 14] - - image_intensity: - - max: 795.6370849609375 - mean: 306.4341735839844 - median: 284.5709228515625 - min: 17.422710418701172 - percentile: [133.57411193847656, 214.88009643554688, 440.21337890625, 609.7948608398438] - percentile_00_5: 133.57411193847656 - percentile_10_0: 214.88009643554688 - percentile_90_0: 440.21337890625 - percentile_99_5: 609.7948608398438 - stdev: 91.72791290283203 - ncomponents: 1 - pixel_percentage: 0.020838746801018715 - shape: - - [24, 24, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_169.nii.gz - image_foreground_stats: - intensity: - - max: 348675.03125 - mean: 178582.8125 - median: 175880.328125 - min: 30856.19921875 - percentile: [87292.1875, 132681.65625, 228335.875, 327075.71875] - percentile_00_5: 87292.1875 - percentile_10_0: 132681.65625 - percentile_90_0: 228335.875 - percentile_99_5: 327075.71875 - stdev: 40288.5078125 - image_stats: - channels: 1 - cropped_shape: - - [36, 45, 39] - intensity: - - max: 965799.0 - mean: 231999.9375 - median: 237592.734375 - min: 0.0 - percentile: [12342.4794921875, 89482.9765625, 357931.90625, 425815.53125] - percentile_00_5: 12342.4794921875 - percentile_10_0: 89482.9765625 - percentile_90_0: 357931.90625 - percentile_99_5: 425815.53125 - stdev: 101552.2421875 - shape: - - [36, 45, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_169.nii.gz - label_stats: - image_intensity: - - max: 348675.03125 - mean: 178582.8125 - median: 175880.328125 - min: 30856.19921875 - percentile: [87292.1875, 132681.65625, 228335.875, 327075.71875] - percentile_00_5: 87292.1875 - percentile_10_0: 132681.65625 - percentile_90_0: 228335.875 - percentile_99_5: 327075.71875 - stdev: 40288.5078125 - label: - - image_intensity: - - max: 965799.0 - mean: 234531.71875 - median: 243763.96875 - min: 0.0 - percentile: [12342.4794921875, 83311.734375, 361017.53125, 428901.15625] - percentile_00_5: 12342.4794921875 - percentile_10_0: 83311.734375 - percentile_90_0: 361017.53125 - percentile_99_5: 428901.15625 - stdev: 102874.046875 - ncomponents: 1 - pixel_percentage: 0.9547483325004578 - shape: - - [36, 45, 39] - - image_intensity: - - max: 293133.875 - mean: 176158.78125 - median: 175880.328125 - min: 30856.19921875 - percentile: [80226.1171875, 132681.65625, 222164.625, 268448.9375] - percentile_00_5: 80226.1171875 - percentile_10_0: 132681.65625 - percentile_90_0: 222164.625 - percentile_99_5: 268448.9375 - stdev: 35374.33203125 - ncomponents: 1 - pixel_percentage: 0.021573282778263092 - shape: - - [21, 14, 14] - - image_intensity: - - max: 348675.03125 - mean: 180791.34375 - median: 172794.71875 - min: 64798.015625 - percentile: [89482.9765625, 132681.65625, 240678.34375, 333246.9375] - percentile_00_5: 89482.9765625 - percentile_10_0: 132681.65625 - percentile_90_0: 240678.34375 - percentile_99_5: 333246.9375 - stdev: 44178.015625 - ncomponents: 1 - pixel_percentage: 0.023678379133343697 - shape: - - [23, 20, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_114.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 49.09638214111328 - median: 47.0 - min: 15.0 - percentile: [26.0, 36.0, 64.0, 87.0] - percentile_00_5: 26.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 87.0 - stdev: 11.354162216186523 - image_stats: - channels: 1 - cropped_shape: - - [38, 50, 39] - intensity: - - max: 253.0 - mean: 61.09433364868164 - median: 60.0 - min: 2.0 - percentile: [7.0, 24.0, 98.0, 113.0] - percentile_00_5: 7.0 - percentile_10_0: 24.0 - percentile_90_0: 98.0 - percentile_99_5: 113.0 - stdev: 27.89406967163086 - shape: - - [38, 50, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_114.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 49.09638214111328 - median: 47.0 - min: 15.0 - percentile: [26.0, 36.0, 64.0, 87.0] - percentile_00_5: 26.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 87.0 - stdev: 11.354162216186523 - label: - - image_intensity: - - max: 253.0 - mean: 61.725624084472656 - median: 62.0 - min: 2.0 - percentile: [7.0, 23.0, 99.0, 114.0] - percentile_00_5: 7.0 - percentile_10_0: 23.0 - percentile_90_0: 99.0 - percentile_99_5: 114.0 - stdev: 28.359533309936523 - ncomponents: 1 - pixel_percentage: 0.9500135183334351 - shape: - - [38, 50, 39] - - image_intensity: - - max: 86.0 - mean: 48.89060592651367 - median: 48.0 - min: 15.0 - percentile: [25.0, 37.0, 62.0, 78.0] - percentile_00_5: 25.0 - percentile_10_0: 37.0 - percentile_90_0: 62.0 - percentile_99_5: 78.0 - stdev: 10.027525901794434 - ncomponents: 1 - pixel_percentage: 0.03318488597869873 - shape: - - [22, 20, 20] - - image_intensity: - - max: 96.0 - mean: 49.502811431884766 - median: 46.0 - min: 23.0 - percentile: [28.0, 36.0, 70.0, 92.0] - percentile_00_5: 28.0 - percentile_10_0: 36.0 - percentile_90_0: 70.0 - percentile_99_5: 92.0 - stdev: 13.590193748474121 - ncomponents: 1 - pixel_percentage: 0.01680161990225315 - shape: - - [17, 17, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_014.nii.gz - image_foreground_stats: - intensity: - - max: 836.0855102539062 - mean: 358.72784423828125 - median: 347.18804931640625 - min: 35.42735290527344 - percentile: [128.28244018554688, 240.90599060058594, 488.8974304199219, 736.1450805664062] - percentile_00_5: 128.28244018554688 - percentile_10_0: 240.90599060058594 - percentile_90_0: 488.8974304199219 - percentile_99_5: 736.1450805664062 - stdev: 104.594482421875 - image_stats: - channels: 1 - cropped_shape: - - [39, 50, 40] - intensity: - - max: 2302.77783203125 - mean: 508.8839416503906 - median: 531.4102783203125 - min: 0.0 - percentile: [28.341880798339844, 184.22222900390625, 793.5726318359375, 914.025634765625] - percentile_00_5: 28.341880798339844 - percentile_10_0: 184.22222900390625 - percentile_90_0: 793.5726318359375 - percentile_99_5: 914.025634765625 - stdev: 232.50302124023438 - shape: - - [39, 50, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_014.nii.gz - label_stats: - image_intensity: - - max: 836.0855102539062 - mean: 358.72784423828125 - median: 347.18804931640625 - min: 35.42735290527344 - percentile: [128.28244018554688, 240.90599060058594, 488.8974304199219, 736.1450805664062] - percentile_00_5: 128.28244018554688 - percentile_10_0: 240.90599060058594 - percentile_90_0: 488.8974304199219 - percentile_99_5: 736.1450805664062 - stdev: 104.594482421875 - label: - - image_intensity: - - max: 2302.77783203125 - mean: 516.1961059570312 - median: 545.5811767578125 - min: 0.0 - percentile: [28.341880798339844, 177.13674926757812, 793.5726318359375, 914.025634765625] - percentile_00_5: 28.341880798339844 - percentile_10_0: 177.13674926757812 - percentile_90_0: 793.5726318359375 - percentile_99_5: 914.025634765625 - stdev: 234.53343200683594 - ncomponents: 1 - pixel_percentage: 0.9535641074180603 - shape: - - [39, 50, 40] - - image_intensity: - - max: 800.6581420898438 - mean: 354.3719177246094 - median: 347.18804931640625 - min: 35.42735290527344 - percentile: [106.84888458251953, 240.90599060058594, 474.72650146484375, 658.3822021484375] - percentile_00_5: 106.84888458251953 - percentile_10_0: 240.90599060058594 - percentile_90_0: 474.72650146484375 - percentile_99_5: 658.3822021484375 - stdev: 96.74717712402344 - ncomponents: 1 - pixel_percentage: 0.02585897408425808 - shape: - - [22, 17, 16] - - image_intensity: - - max: 836.0855102539062 - mean: 364.2020263671875 - median: 347.18804931640625 - min: 85.02564239501953 - percentile: [148.7948760986328, 240.90599060058594, 517.2393188476562, 758.1453247070312] - percentile_00_5: 148.7948760986328 - percentile_10_0: 240.90599060058594 - percentile_90_0: 517.2393188476562 - percentile_99_5: 758.1453247070312 - stdev: 113.45378875732422 - ncomponents: 1 - pixel_percentage: 0.020576922222971916 - shape: - - [21, 24, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_177.nii.gz - image_foreground_stats: - intensity: - - max: 90.0 - mean: 49.70458984375 - median: 48.0 - min: 22.0 - percentile: [31.0, 39.0, 63.0, 83.080078125] - percentile_00_5: 31.0 - percentile_10_0: 39.0 - percentile_90_0: 63.0 - percentile_99_5: 83.080078125 - stdev: 9.899138450622559 - image_stats: - channels: 1 - cropped_shape: - - [33, 44, 40] - intensity: - - max: 175.0 - mean: 65.5118637084961 - median: 70.0 - min: 2.0 - percentile: [7.0, 33.0, 93.0, 105.0] - percentile_00_5: 7.0 - percentile_10_0: 33.0 - percentile_90_0: 93.0 - percentile_99_5: 105.0 - stdev: 23.864320755004883 - shape: - - [33, 44, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_177.nii.gz - label_stats: - image_intensity: - - max: 90.0 - mean: 49.70458984375 - median: 48.0 - min: 22.0 - percentile: [31.0, 39.0, 63.0, 83.080078125] - percentile_00_5: 31.0 - percentile_10_0: 39.0 - percentile_90_0: 63.0 - percentile_99_5: 83.080078125 - stdev: 9.899138450622559 - label: - - image_intensity: - - max: 175.0 - mean: 66.25056457519531 - median: 71.0 - min: 2.0 - percentile: [7.0, 32.0, 93.0, 105.0] - percentile_00_5: 7.0 - percentile_10_0: 32.0 - percentile_90_0: 93.0 - percentile_99_5: 105.0 - stdev: 24.06902313232422 - ncomponents: 1 - pixel_percentage: 0.9553546905517578 - shape: - - [33, 44, 40] - - image_intensity: - - max: 87.0 - mean: 49.25142288208008 - median: 48.0 - min: 22.0 - percentile: [30.264999389648438, 39.0, 61.0, 77.0] - percentile_00_5: 30.264999389648438 - percentile_10_0: 39.0 - percentile_90_0: 61.0 - percentile_99_5: 77.0 - stdev: 8.952879905700684 - ncomponents: 1 - pixel_percentage: 0.018147382885217667 - shape: - - [18, 13, 13] - - image_intensity: - - max: 90.0 - mean: 50.01494598388672 - median: 47.0 - min: 29.0 - percentile: [33.0, 39.0, 65.0, 86.0] - percentile_00_5: 33.0 - percentile_10_0: 39.0 - percentile_90_0: 65.0 - percentile_99_5: 86.0 - stdev: 10.486807823181152 - ncomponents: 1 - pixel_percentage: 0.026497934013605118 - shape: - - [18, 22, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_077.nii.gz - image_foreground_stats: - intensity: - - max: 722.464111328125 - mean: 345.9715576171875 - median: 329.0430603027344 - min: 0.0 - percentile: [128.7559814453125, 250.35885620117188, 464.9521484375, 632.4425048828125] - percentile_00_5: 128.7559814453125 - percentile_10_0: 250.35885620117188 - percentile_90_0: 464.9521484375 - percentile_99_5: 632.4425048828125 - stdev: 88.11822509765625 - image_stats: - channels: 1 - cropped_shape: - - [35, 47, 45] - intensity: - - max: 937.0574340820312 - mean: 442.8080749511719 - median: 464.9521484375 - min: 0.0 - percentile: [21.45932960510254, 143.06219482421875, 686.6985473632812, 779.68896484375] - percentile_00_5: 21.45932960510254 - percentile_10_0: 143.06219482421875 - percentile_90_0: 686.6985473632812 - percentile_99_5: 779.68896484375 - stdev: 199.81129455566406 - shape: - - [35, 47, 45] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_077.nii.gz - label_stats: - image_intensity: - - max: 722.464111328125 - mean: 345.9715576171875 - median: 329.0430603027344 - min: 0.0 - percentile: [128.7559814453125, 250.35885620117188, 464.9521484375, 632.4425048828125] - percentile_00_5: 128.7559814453125 - percentile_10_0: 250.35885620117188 - percentile_90_0: 464.9521484375 - percentile_99_5: 632.4425048828125 - stdev: 88.11822509765625 - label: - - image_intensity: - - max: 937.0574340820312 - mean: 447.92901611328125 - median: 479.25836181640625 - min: 0.0 - percentile: [21.45932960510254, 135.90908813476562, 686.6985473632812, 779.68896484375] - percentile_00_5: 21.45932960510254 - percentile_10_0: 135.90908813476562 - percentile_90_0: 686.6985473632812 - percentile_99_5: 779.68896484375 - stdev: 202.739013671875 - ncomponents: 1 - pixel_percentage: 0.9497737288475037 - shape: - - [35, 47, 45] - - image_intensity: - - max: 722.464111328125 - mean: 353.14154052734375 - median: 336.1961669921875 - min: 42.91865921020508 - percentile: [128.7559814453125, 257.511962890625, 472.1052551269531, 615.16748046875] - percentile_00_5: 128.7559814453125 - percentile_10_0: 257.511962890625 - percentile_90_0: 472.1052551269531 - percentile_99_5: 615.16748046875 - stdev: 87.86307525634766 - ncomponents: 1 - pixel_percentage: 0.026801755651831627 - shape: - - [23, 16, 17] - - image_intensity: - - max: 686.6985473632812 - mean: 337.7678527832031 - median: 321.88995361328125 - min: 0.0 - percentile: [128.7559814453125, 243.2057342529297, 450.64593505859375, 650.9329833984375] - percentile_00_5: 128.7559814453125 - percentile_10_0: 243.2057342529297 - percentile_90_0: 450.64593505859375 - percentile_99_5: 650.9329833984375 - stdev: 87.69307708740234 - ncomponents: 1 - pixel_percentage: 0.02342451922595501 - shape: - - [15, 21, 29] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_006.nii.gz - image_foreground_stats: - intensity: - - max: 1090.437744140625 - mean: 524.6160888671875 - median: 500.1255798339844 - min: 24.59634017944336 - percentile: [215.70989990234375, 360.746337890625, 729.69140625, 1000.2511596679688] - percentile_00_5: 215.70989990234375 - percentile_10_0: 360.746337890625 - percentile_90_0: 729.69140625 - percentile_99_5: 1000.2511596679688 - stdev: 149.73944091796875 - image_stats: - channels: 1 - cropped_shape: - - [35, 52, 34] - intensity: - - max: 3845.227783203125 - mean: 703.9960327148438 - median: 705.0950927734375 - min: 0.0 - percentile: [49.19268035888672, 286.9573059082031, 1106.8353271484375, 1279.0096435546875] - percentile_00_5: 49.19268035888672 - percentile_10_0: 286.9573059082031 - percentile_90_0: 1106.8353271484375 - percentile_99_5: 1279.0096435546875 - stdev: 320.350830078125 - shape: - - [35, 52, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_006.nii.gz - label_stats: - image_intensity: - - max: 1090.437744140625 - mean: 524.6160888671875 - median: 500.1255798339844 - min: 24.59634017944336 - percentile: [215.70989990234375, 360.746337890625, 729.69140625, 1000.2511596679688] - percentile_00_5: 215.70989990234375 - percentile_10_0: 360.746337890625 - percentile_90_0: 729.69140625 - percentile_99_5: 1000.2511596679688 - stdev: 149.73944091796875 - label: - - image_intensity: - - max: 3845.227783203125 - mean: 717.2681274414062 - median: 737.8901977539062 - min: 0.0 - percentile: [49.19268035888672, 278.7585144042969, 1115.0340576171875, 1287.20849609375] - percentile_00_5: 49.19268035888672 - percentile_10_0: 278.7585144042969 - percentile_90_0: 1115.0340576171875 - percentile_99_5: 1287.20849609375 - stdev: 325.5792541503906 - ncomponents: 1 - pixel_percentage: 0.9311085939407349 - shape: - - [35, 52, 34] - - image_intensity: - - max: 1074.0401611328125 - mean: 512.6363525390625 - median: 491.92681884765625 - min: 24.59634017944336 - percentile: [204.96949768066406, 344.3487548828125, 705.0950927734375, 962.82421875] - percentile_00_5: 204.96949768066406 - percentile_10_0: 344.3487548828125 - percentile_90_0: 705.0950927734375 - percentile_99_5: 962.82421875 - stdev: 143.35067749023438 - ncomponents: 1 - pixel_percentage: 0.03739495947957039 - shape: - - [24, 18, 14] - - image_intensity: - - max: 1090.437744140625 - mean: 538.8394775390625 - median: 508.3243713378906 - min: 106.58413696289062 - percentile: [237.76461791992188, 368.9450988769531, 762.486572265625, 1029.111083984375] - percentile_00_5: 237.76461791992188 - percentile_10_0: 368.9450988769531 - percentile_90_0: 762.486572265625 - percentile_99_5: 1029.111083984375 - stdev: 155.7958984375 - ncomponents: 1 - pixel_percentage: 0.03149644657969475 - shape: - - [21, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_106.nii.gz - image_foreground_stats: - intensity: - - max: 974.198486328125 - mean: 391.8468933105469 - median: 379.26812744140625 - min: 29.746519088745117 - percentile: [159.55288696289062, 267.7186584472656, 542.8739624023438, 721.3530883789062] - percentile_00_5: 159.55288696289062 - percentile_10_0: 267.7186584472656 - percentile_90_0: 542.8739624023438 - percentile_99_5: 721.3530883789062 - stdev: 110.99180603027344 - image_stats: - channels: 1 - cropped_shape: - - [34, 46, 38] - intensity: - - max: 3502.652587890625 - mean: 526.2657470703125 - median: 542.8739624023438 - min: 0.0 - percentile: [29.746519088745117, 215.66226196289062, 803.156005859375, 966.7618408203125] - percentile_00_5: 29.746519088745117 - percentile_10_0: 215.66226196289062 - percentile_90_0: 803.156005859375 - percentile_99_5: 966.7618408203125 - stdev: 227.53268432617188 - shape: - - [34, 46, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_106.nii.gz - label_stats: - image_intensity: - - max: 974.198486328125 - mean: 391.8468933105469 - median: 379.26812744140625 - min: 29.746519088745117 - percentile: [159.55288696289062, 267.7186584472656, 542.8739624023438, 721.3530883789062] - percentile_00_5: 159.55288696289062 - percentile_10_0: 267.7186584472656 - percentile_90_0: 542.8739624023438 - percentile_99_5: 721.3530883789062 - stdev: 110.99180603027344 - label: - - image_intensity: - - max: 3502.652587890625 - mean: 533.642822265625 - median: 557.7472534179688 - min: 0.0 - percentile: [29.746519088745117, 208.2256317138672, 803.156005859375, 966.7618408203125] - percentile_00_5: 29.746519088745117 - percentile_10_0: 208.2256317138672 - percentile_90_0: 803.156005859375 - percentile_99_5: 966.7618408203125 - stdev: 229.97879028320312 - ncomponents: 1 - pixel_percentage: 0.9479741454124451 - shape: - - [34, 46, 38] - - image_intensity: - - max: 974.198486328125 - mean: 404.0713195800781 - median: 394.1413879394531 - min: 29.746519088745117 - percentile: [160.29653930664062, 275.1553039550781, 557.7472534179688, 743.6629638671875] - percentile_00_5: 160.29653930664062 - percentile_10_0: 275.1553039550781 - percentile_90_0: 557.7472534179688 - percentile_99_5: 743.6629638671875 - stdev: 113.93299865722656 - ncomponents: 1 - pixel_percentage: 0.028806030750274658 - shape: - - [24, 16, 15] - - image_intensity: - - max: 795.7193603515625 - mean: 376.6814880371094 - median: 356.9582214355469 - min: 89.23955535888672 - percentile: [162.8249969482422, 252.8454132080078, 521.3075561523438, 691.6065673828125] - percentile_00_5: 162.8249969482422 - percentile_10_0: 252.8454132080078 - percentile_90_0: 521.3075561523438 - percentile_99_5: 691.6065673828125 - stdev: 105.27629089355469 - ncomponents: 1 - pixel_percentage: 0.023219814524054527 - shape: - - [13, 20, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_065.nii.gz - image_foreground_stats: - intensity: - - max: 85.0 - mean: 47.45315170288086 - median: 46.0 - min: 21.0 - percentile: [29.0, 36.0, 61.0, 77.755126953125] - percentile_00_5: 29.0 - percentile_10_0: 36.0 - percentile_90_0: 61.0 - percentile_99_5: 77.755126953125 - stdev: 9.922335624694824 - image_stats: - channels: 1 - cropped_shape: - - [39, 52, 37] - intensity: - - max: 205.0 - mean: 60.328739166259766 - median: 60.0 - min: 1.0 - percentile: [7.0, 27.0, 93.0, 109.0] - percentile_00_5: 7.0 - percentile_10_0: 27.0 - percentile_90_0: 93.0 - percentile_99_5: 109.0 - stdev: 25.04729461669922 - shape: - - [39, 52, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_065.nii.gz - label_stats: - image_intensity: - - max: 85.0 - mean: 47.45315170288086 - median: 46.0 - min: 21.0 - percentile: [29.0, 36.0, 61.0, 77.755126953125] - percentile_00_5: 29.0 - percentile_10_0: 36.0 - percentile_90_0: 61.0 - percentile_99_5: 77.755126953125 - stdev: 9.922335624694824 - label: - - image_intensity: - - max: 205.0 - mean: 60.9870719909668 - median: 62.0 - min: 1.0 - percentile: [7.0, 27.0, 93.0, 110.0] - percentile_00_5: 7.0 - percentile_10_0: 27.0 - percentile_90_0: 93.0 - percentile_99_5: 110.0 - stdev: 25.406709671020508 - ncomponents: 1 - pixel_percentage: 0.9513567090034485 - shape: - - [39, 52, 37] - - image_intensity: - - max: 85.0 - mean: 48.73179244995117 - median: 47.0 - min: 21.0 - percentile: [29.0, 36.0, 63.0999755859375, 80.35498046875] - percentile_00_5: 29.0 - percentile_10_0: 36.0 - percentile_90_0: 63.0999755859375 - percentile_99_5: 80.35498046875 - stdev: 10.575288772583008 - ncomponents: 1 - pixel_percentage: 0.023055600002408028 - shape: - - [24, 15, 14] - - image_intensity: - - max: 82.0 - mean: 46.30104446411133 - median: 45.0 - min: 22.0 - percentile: [28.594999313354492, 35.90000915527344, 59.0, 74.405029296875] - percentile_00_5: 28.594999313354492 - percentile_10_0: 35.90000915527344 - percentile_90_0: 59.0 - percentile_99_5: 74.405029296875 - stdev: 9.142905235290527 - ncomponents: 1 - pixel_percentage: 0.025587717071175575 - shape: - - [17, 24, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_165.nii.gz - image_foreground_stats: - intensity: - - max: 88.0 - mean: 47.27389907836914 - median: 46.0 - min: 11.0 - percentile: [26.110000610351562, 36.0, 62.0, 79.0] - percentile_00_5: 26.110000610351562 - percentile_10_0: 36.0 - percentile_90_0: 62.0 - percentile_99_5: 79.0 - stdev: 10.501092910766602 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 29] - intensity: - - max: 187.0 - mean: 60.1342887878418 - median: 59.0 - min: 1.0 - percentile: [6.0, 19.0, 97.0, 112.0] - percentile_00_5: 6.0 - percentile_10_0: 19.0 - percentile_90_0: 97.0 - percentile_99_5: 112.0 - stdev: 28.541006088256836 - shape: - - [34, 49, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_165.nii.gz - label_stats: - image_intensity: - - max: 88.0 - mean: 47.27389907836914 - median: 46.0 - min: 11.0 - percentile: [26.110000610351562, 36.0, 62.0, 79.0] - percentile_00_5: 26.110000610351562 - percentile_10_0: 36.0 - percentile_90_0: 62.0 - percentile_99_5: 79.0 - stdev: 10.501092910766602 - label: - - image_intensity: - - max: 187.0 - mean: 60.992671966552734 - median: 62.0 - min: 1.0 - percentile: [6.0, 18.0, 97.0, 112.0] - percentile_00_5: 6.0 - percentile_10_0: 18.0 - percentile_90_0: 97.0 - percentile_99_5: 112.0 - stdev: 29.151731491088867 - ncomponents: 1 - pixel_percentage: 0.9374301433563232 - shape: - - [34, 49, 29] - - image_intensity: - - max: 88.0 - mean: 48.3536262512207 - median: 47.0 - min: 21.0 - percentile: [26.0, 35.0, 63.0, 80.0] - percentile_00_5: 26.0 - percentile_10_0: 35.0 - percentile_90_0: 63.0 - percentile_99_5: 80.0 - stdev: 11.051191329956055 - ncomponents: 1 - pixel_percentage: 0.031957611441612244 - shape: - - [21, 15, 12] - - image_intensity: - - max: 85.0 - mean: 46.14672088623047 - median: 44.0 - min: 11.0 - percentile: [28.0, 36.0, 59.0, 78.0] - percentile_00_5: 28.0 - percentile_10_0: 36.0 - percentile_90_0: 59.0 - percentile_99_5: 78.0 - stdev: 9.767725944519043 - ncomponents: 1 - pixel_percentage: 0.030612245202064514 - shape: - - [16, 23, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_287.nii.gz - image_foreground_stats: - intensity: - - max: 955.75048828125 - mean: 416.1406555175781 - median: 401.4151916503906 - min: 70.08836364746094 - percentile: [191.15008544921875, 305.84014892578125, 547.963623046875, 777.4090576171875] - percentile_00_5: 191.15008544921875 - percentile_10_0: 305.84014892578125 - percentile_90_0: 547.963623046875 - percentile_99_5: 777.4090576171875 - stdev: 104.53321838378906 - image_stats: - channels: 1 - cropped_shape: - - [37, 50, 39] - intensity: - - max: 1389.0240478515625 - mean: 562.8577270507812 - median: 573.4502563476562 - min: 0.0 - percentile: [31.858348846435547, 235.7517852783203, 872.9187622070312, 1051.3255615234375] - percentile_00_5: 31.858348846435547 - percentile_10_0: 235.7517852783203 - percentile_90_0: 872.9187622070312 - percentile_99_5: 1051.3255615234375 - stdev: 244.1605682373047 - shape: - - [37, 50, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_287.nii.gz - label_stats: - image_intensity: - - max: 955.75048828125 - mean: 416.1406555175781 - median: 401.4151916503906 - min: 70.08836364746094 - percentile: [191.15008544921875, 305.84014892578125, 547.963623046875, 777.4090576171875] - percentile_00_5: 191.15008544921875 - percentile_10_0: 305.84014892578125 - percentile_90_0: 547.963623046875 - percentile_99_5: 777.4090576171875 - stdev: 104.53321838378906 - label: - - image_intensity: - - max: 1389.0240478515625 - mean: 570.7882690429688 - median: 592.5653076171875 - min: 0.0 - percentile: [31.858348846435547, 229.38011169433594, 872.9187622070312, 1057.6971435546875] - percentile_00_5: 31.858348846435547 - percentile_10_0: 229.38011169433594 - percentile_90_0: 872.9187622070312 - percentile_99_5: 1057.6971435546875 - stdev: 247.02157592773438 - ncomponents: 1 - pixel_percentage: 0.9487179517745972 - shape: - - [37, 50, 39] - - image_intensity: - - max: 955.75048828125 - mean: 417.86029052734375 - median: 407.786865234375 - min: 70.08836364746094 - percentile: [197.52175903320312, 312.2118225097656, 535.2202758789062, 727.4857177734375] - percentile_00_5: 197.52175903320312 - percentile_10_0: 312.2118225097656 - percentile_90_0: 535.2202758789062 - percentile_99_5: 727.4857177734375 - stdev: 93.207763671875 - ncomponents: 1 - pixel_percentage: 0.024476785212755203 - shape: - - [20, 16, 14] - - image_intensity: - - max: 847.4320678710938 - mean: 414.5703125 - median: 395.04351806640625 - min: 101.94671630859375 - percentile: [189.0155792236328, 293.0968017578125, 567.07861328125, 792.2213134765625] - percentile_00_5: 189.0155792236328 - percentile_10_0: 293.0968017578125 - percentile_90_0: 567.07861328125 - percentile_99_5: 792.2213134765625 - stdev: 113.87274169921875 - ncomponents: 1 - pixel_percentage: 0.026805266737937927 - shape: - - [18, 24, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_130.nii.gz - image_foreground_stats: - intensity: - - max: 93.0 - mean: 43.85144805908203 - median: 42.0 - min: 15.0 - percentile: [24.0, 33.0, 57.0, 81.0] - percentile_00_5: 24.0 - percentile_10_0: 33.0 - percentile_90_0: 57.0 - percentile_99_5: 81.0 - stdev: 10.117746353149414 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 40] - intensity: - - max: 195.0 - mean: 61.48345184326172 - median: 61.0 - min: 3.0 - percentile: [8.0, 23.0, 99.0, 116.0] - percentile_00_5: 8.0 - percentile_10_0: 23.0 - percentile_90_0: 99.0 - percentile_99_5: 116.0 - stdev: 28.658357620239258 - shape: - - [35, 49, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_130.nii.gz - label_stats: - image_intensity: - - max: 93.0 - mean: 43.85144805908203 - median: 42.0 - min: 15.0 - percentile: [24.0, 33.0, 57.0, 81.0] - percentile_00_5: 24.0 - percentile_10_0: 33.0 - percentile_90_0: 57.0 - percentile_99_5: 81.0 - stdev: 10.117746353149414 - label: - - image_intensity: - - max: 195.0 - mean: 62.37025451660156 - median: 64.0 - min: 3.0 - percentile: [8.0, 22.0, 99.0, 116.0] - percentile_00_5: 8.0 - percentile_10_0: 22.0 - percentile_90_0: 99.0 - percentile_99_5: 116.0 - stdev: 29.000646591186523 - ncomponents: 1 - pixel_percentage: 0.952113687992096 - shape: - - [35, 49, 40] - - image_intensity: - - max: 76.0 - mean: 44.128448486328125 - median: 43.0 - min: 15.0 - percentile: [21.0, 34.0, 56.0, 71.47998046875] - percentile_00_5: 21.0 - percentile_10_0: 34.0 - percentile_90_0: 56.0 - percentile_99_5: 71.47998046875 - stdev: 9.1292724609375 - ncomponents: 1 - pixel_percentage: 0.024854227900505066 - shape: - - [18, 16, 16] - - image_intensity: - - max: 93.0 - mean: 43.55253219604492 - median: 41.0 - min: 19.0 - percentile: [25.0, 33.0, 59.0, 84.10498046875] - percentile_00_5: 25.0 - percentile_10_0: 33.0 - percentile_90_0: 59.0 - percentile_99_5: 84.10498046875 - stdev: 11.078221321105957 - ncomponents: 1 - pixel_percentage: 0.023032069206237793 - shape: - - [19, 23, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_387.nii.gz - image_foreground_stats: - intensity: - - max: 1081.1651611328125 - mean: 519.1820678710938 - median: 503.3010559082031 - min: 93.20389556884766 - percentile: [195.72817993164062, 372.8155822753906, 689.7088623046875, 946.998046875] - percentile_00_5: 195.72817993164062 - percentile_10_0: 372.8155822753906 - percentile_90_0: 689.7088623046875 - percentile_99_5: 946.998046875 - stdev: 130.07347106933594 - image_stats: - channels: 1 - cropped_shape: - - [33, 51, 32] - intensity: - - max: 1556.505126953125 - mean: 681.3613891601562 - median: 661.7476806640625 - min: 0.0 - percentile: [46.60194778442383, 288.93206787109375, 1081.1651611328125, 1248.9322509765625] - percentile_00_5: 46.60194778442383 - percentile_10_0: 288.93206787109375 - percentile_90_0: 1081.1651611328125 - percentile_99_5: 1248.9322509765625 - stdev: 297.30645751953125 - shape: - - [33, 51, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_387.nii.gz - label_stats: - image_intensity: - - max: 1081.1651611328125 - mean: 519.1820678710938 - median: 503.3010559082031 - min: 93.20389556884766 - percentile: [195.72817993164062, 372.8155822753906, 689.7088623046875, 946.998046875] - percentile_00_5: 195.72817993164062 - percentile_10_0: 372.8155822753906 - percentile_90_0: 689.7088623046875 - percentile_99_5: 946.998046875 - stdev: 130.07347106933594 - label: - - image_intensity: - - max: 1556.505126953125 - mean: 691.198974609375 - median: 689.7088623046875 - min: 0.0 - percentile: [46.60194778442383, 279.6116943359375, 1090.485595703125, 1248.9322509765625] - percentile_00_5: 46.60194778442383 - percentile_10_0: 279.6116943359375 - percentile_90_0: 1090.485595703125 - percentile_99_5: 1248.9322509765625 - stdev: 301.7189025878906 - ncomponents: 1 - pixel_percentage: 0.9428104758262634 - shape: - - [33, 51, 32] - - image_intensity: - - max: 1006.6021118164062 - mean: 522.275390625 - median: 521.9418334960938 - min: 93.20389556884766 - percentile: [195.72817993164062, 391.45635986328125, 671.0680541992188, 889.7240600585938] - percentile_00_5: 195.72817993164062 - percentile_10_0: 391.45635986328125 - percentile_90_0: 671.0680541992188 - percentile_99_5: 889.7240600585938 - stdev: 117.55332946777344 - ncomponents: 1 - pixel_percentage: 0.028019161894917488 - shape: - - [21, 20, 13] - - image_intensity: - - max: 1081.1651611328125 - mean: 516.2107543945312 - median: 484.6602783203125 - min: 111.84468078613281 - percentile: [211.57284545898438, 372.8155822753906, 717.6699829101562, 981.4375] - percentile_00_5: 211.57284545898438 - percentile_10_0: 372.8155822753906 - percentile_90_0: 717.6699829101562 - percentile_99_5: 981.4375 - stdev: 140.99310302734375 - ncomponents: 1 - pixel_percentage: 0.029170380905270576 - shape: - - [19, 21, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_053.nii.gz - image_foreground_stats: - intensity: - - max: 1136.0743408203125 - mean: 515.018798828125 - median: 495.6029052734375 - min: 121.99456024169922 - percentile: [248.4876708984375, 388.857666015625, 663.3453979492188, 986.70654296875] - percentile_00_5: 248.4876708984375 - percentile_10_0: 388.857666015625 - percentile_90_0: 663.3453979492188 - percentile_99_5: 986.70654296875 - stdev: 122.52049255371094 - image_stats: - channels: 1 - cropped_shape: - - [37, 51, 35] - intensity: - - max: 3659.8369140625 - mean: 734.9005126953125 - median: 731.9673461914062 - min: 0.0 - percentile: [45.74795913696289, 312.6110534667969, 1174.1976318359375, 1357.189453125] - percentile_00_5: 45.74795913696289 - percentile_10_0: 312.6110534667969 - percentile_90_0: 1174.1976318359375 - percentile_99_5: 1357.189453125 - stdev: 331.2437744140625 - shape: - - [37, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_053.nii.gz - label_stats: - image_intensity: - - max: 1136.0743408203125 - mean: 515.018798828125 - median: 495.6029052734375 - min: 121.99456024169922 - percentile: [248.4876708984375, 388.857666015625, 663.3453979492188, 986.70654296875] - percentile_00_5: 248.4876708984375 - percentile_10_0: 388.857666015625 - percentile_90_0: 663.3453979492188 - percentile_99_5: 986.70654296875 - stdev: 122.52049255371094 - label: - - image_intensity: - - max: 3659.8369140625 - mean: 747.2755126953125 - median: 762.4660034179688 - min: 0.0 - percentile: [45.74795913696289, 304.98638916015625, 1181.822265625, 1357.189453125] - percentile_00_5: 45.74795913696289 - percentile_10_0: 304.98638916015625 - percentile_90_0: 1181.822265625 - percentile_99_5: 1357.189453125 - stdev: 334.9308166503906 - ncomponents: 1 - pixel_percentage: 0.946718156337738 - shape: - - [37, 51, 35] - - image_intensity: - - max: 1021.7044677734375 - mean: 508.1166076660156 - median: 495.6029052734375 - min: 121.99456024169922 - percentile: [236.3644561767578, 381.2330017089844, 655.7207641601562, 888.3491821289062] - percentile_00_5: 236.3644561767578 - percentile_10_0: 381.2330017089844 - percentile_90_0: 655.7207641601562 - percentile_99_5: 888.3491821289062 - stdev: 114.40094757080078 - ncomponents: 1 - pixel_percentage: 0.024982966482639313 - shape: - - [22, 15, 12] - - image_intensity: - - max: 1136.0743408203125 - mean: 521.1122436523438 - median: 495.6029052734375 - min: 198.2411651611328 - percentile: [259.2384338378906, 396.4823303222656, 670.9700927734375, 1014.0797729492188] - percentile_00_5: 259.2384338378906 - percentile_10_0: 396.4823303222656 - percentile_90_0: 670.9700927734375 - percentile_99_5: 1014.0797729492188 - stdev: 128.95877075195312 - ncomponents: 1 - pixel_percentage: 0.028298886492848396 - shape: - - [19, 25, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_299.nii.gz - image_foreground_stats: - intensity: - - max: 1213.2200927734375 - mean: 553.625244140625 - median: 527.4869995117188 - min: 105.49739074707031 - percentile: [237.369140625, 386.82379150390625, 763.9761352539062, 1081.3482666015625] - percentile_00_5: 237.369140625 - percentile_10_0: 386.82379150390625 - percentile_90_0: 763.9761352539062 - percentile_99_5: 1081.3482666015625 - stdev: 156.88540649414062 - image_stats: - channels: 1 - cropped_shape: - - [32, 54, 34] - intensity: - - max: 1538.503662109375 - mean: 708.994384765625 - median: 720.8988647460938 - min: 0.0 - percentile: [35.16579818725586, 290.1178283691406, 1107.72265625, 1274.7601318359375] - percentile_00_5: 35.16579818725586 - percentile_10_0: 290.1178283691406 - percentile_90_0: 1107.72265625 - percentile_99_5: 1274.7601318359375 - stdev: 310.3742980957031 - shape: - - [32, 54, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_299.nii.gz - label_stats: - image_intensity: - - max: 1213.2200927734375 - mean: 553.625244140625 - median: 527.4869995117188 - min: 105.49739074707031 - percentile: [237.369140625, 386.82379150390625, 763.9761352539062, 1081.3482666015625] - percentile_00_5: 237.369140625 - percentile_10_0: 386.82379150390625 - percentile_90_0: 763.9761352539062 - percentile_99_5: 1081.3482666015625 - stdev: 156.88540649414062 - label: - - image_intensity: - - max: 1538.503662109375 - mean: 717.9501342773438 - median: 747.273193359375 - min: 0.0 - percentile: [35.16579818725586, 272.5349426269531, 1116.5140380859375, 1283.5516357421875] - percentile_00_5: 35.16579818725586 - percentile_10_0: 272.5349426269531 - percentile_90_0: 1116.5140380859375 - percentile_99_5: 1283.5516357421875 - stdev: 314.634033203125 - ncomponents: 1 - pixel_percentage: 0.9454997181892395 - shape: - - [32, 54, 34] - - image_intensity: - - max: 1204.4285888671875 - mean: 556.7705688476562 - median: 536.2784423828125 - min: 105.49739074707031 - percentile: [216.0938262939453, 378.0323181152344, 764.8561401367188, 1066.0523681640625] - percentile_00_5: 216.0938262939453 - percentile_10_0: 378.0323181152344 - percentile_90_0: 764.8561401367188 - percentile_99_5: 1066.0523681640625 - stdev: 156.6803741455078 - ncomponents: 1 - pixel_percentage: 0.025820396840572357 - shape: - - [21, 19, 12] - - image_intensity: - - max: 1213.2200927734375 - mean: 550.79345703125 - median: 527.4869995117188 - min: 114.2888412475586 - percentile: [254.95204162597656, 386.82379150390625, 756.0646362304688, 1091.5455322265625] - percentile_00_5: 254.95204162597656 - percentile_10_0: 386.82379150390625 - percentile_90_0: 756.0646362304688 - percentile_99_5: 1091.5455322265625 - stdev: 157.01589965820312 - ncomponents: 1 - pixel_percentage: 0.028679875656962395 - shape: - - [21, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_295.nii.gz - image_foreground_stats: - intensity: - - max: 749.8721923828125 - mean: 358.1430358886719 - median: 349.94036865234375 - min: 42.8498420715332 - percentile: [121.40788269042969, 264.2406921386719, 471.3482666015625, 649.8892822265625] - percentile_00_5: 121.40788269042969 - percentile_10_0: 264.2406921386719 - percentile_90_0: 471.3482666015625 - percentile_99_5: 649.8892822265625 - stdev: 88.06488800048828 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 36] - intensity: - - max: 1942.526123046875 - mean: 474.3259582519531 - median: 471.3482666015625 - min: 0.0 - percentile: [28.566560745239258, 192.82427978515625, 742.7305908203125, 835.5718994140625] - percentile_00_5: 28.566560745239258 - percentile_10_0: 192.82427978515625 - percentile_90_0: 742.7305908203125 - percentile_99_5: 835.5718994140625 - stdev: 208.2882537841797 - shape: - - [35, 53, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_295.nii.gz - label_stats: - image_intensity: - - max: 749.8721923828125 - mean: 358.1430358886719 - median: 349.94036865234375 - min: 42.8498420715332 - percentile: [121.40788269042969, 264.2406921386719, 471.3482666015625, 649.8892822265625] - percentile_00_5: 121.40788269042969 - percentile_10_0: 264.2406921386719 - percentile_90_0: 471.3482666015625 - percentile_99_5: 649.8892822265625 - stdev: 88.06488800048828 - label: - - image_intensity: - - max: 1942.526123046875 - mean: 481.0005187988281 - median: 492.7731628417969 - min: 0.0 - percentile: [28.566560745239258, 185.68264770507812, 749.8721923828125, 835.5718994140625] - percentile_00_5: 28.566560745239258 - percentile_10_0: 185.68264770507812 - percentile_90_0: 749.8721923828125 - percentile_99_5: 835.5718994140625 - stdev: 211.21267700195312 - ncomponents: 1 - pixel_percentage: 0.945672333240509 - shape: - - [35, 53, 36] - - image_intensity: - - max: 699.8807373046875 - mean: 358.90582275390625 - median: 349.94036865234375 - min: 92.84132385253906 - percentile: [168.04278564453125, 271.38232421875, 464.20660400390625, 585.614501953125] - percentile_00_5: 168.04278564453125 - percentile_10_0: 271.38232421875 - percentile_90_0: 464.20660400390625 - percentile_99_5: 585.614501953125 - stdev: 78.87667846679688 - ncomponents: 1 - pixel_percentage: 0.028556454926729202 - shape: - - [22, 19, 15] - - image_intensity: - - max: 749.8721923828125 - mean: 357.29779052734375 - median: 342.7987365722656 - min: 42.8498420715332 - percentile: [82.84302520751953, 249.95741271972656, 478.4898986816406, 674.1709594726562] - percentile_00_5: 82.84302520751953 - percentile_10_0: 249.95741271972656 - percentile_90_0: 478.4898986816406 - percentile_99_5: 674.1709594726562 - stdev: 97.23033905029297 - ncomponents: 1 - pixel_percentage: 0.025771189481019974 - shape: - - [20, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_141.nii.gz - image_foreground_stats: - intensity: - - max: 81.0 - mean: 42.779293060302734 - median: 41.0 - min: 21.0 - percentile: [27.0, 34.0, 54.0, 73.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 54.0 - percentile_99_5: 73.0 - stdev: 8.43726634979248 - image_stats: - channels: 1 - cropped_shape: - - [33, 44, 42] - intensity: - - max: 158.0 - mean: 57.37786865234375 - median: 59.0 - min: 2.0 - percentile: [6.0, 28.0, 84.0, 94.0] - percentile_00_5: 6.0 - percentile_10_0: 28.0 - percentile_90_0: 84.0 - percentile_99_5: 94.0 - stdev: 22.058910369873047 - shape: - - [33, 44, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_141.nii.gz - label_stats: - image_intensity: - - max: 81.0 - mean: 42.779293060302734 - median: 41.0 - min: 21.0 - percentile: [27.0, 34.0, 54.0, 73.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 54.0 - percentile_99_5: 73.0 - stdev: 8.43726634979248 - label: - - image_intensity: - - max: 158.0 - mean: 58.05781936645508 - median: 61.0 - min: 2.0 - percentile: [5.345001220703125, 28.0, 84.0, 94.0] - percentile_00_5: 5.345001220703125 - percentile_10_0: 28.0 - percentile_90_0: 84.0 - percentile_99_5: 94.0 - stdev: 22.261064529418945 - ncomponents: 1 - pixel_percentage: 0.9554965496063232 - shape: - - [33, 44, 42] - - image_intensity: - - max: 75.0 - mean: 42.811336517333984 - median: 42.0 - min: 21.0 - percentile: [27.0, 35.0, 51.0, 66.8299560546875] - percentile_00_5: 27.0 - percentile_10_0: 35.0 - percentile_90_0: 51.0 - percentile_99_5: 66.8299560546875 - stdev: 6.803014278411865 - ncomponents: 1 - pixel_percentage: 0.020251212641596794 - shape: - - [19, 13, 14] - - image_intensity: - - max: 81.0 - mean: 42.752532958984375 - median: 40.0 - min: 25.0 - percentile: [28.0, 33.0, 56.199951171875, 75.0] - percentile_00_5: 28.0 - percentile_10_0: 33.0 - percentile_90_0: 56.199951171875 - percentile_99_5: 75.0 - stdev: 9.59079647064209 - ncomponents: 1 - pixel_percentage: 0.024252261966466904 - shape: - - [13, 20, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_041.nii.gz - image_foreground_stats: - intensity: - - max: 907.206298828125 - mean: 411.7265625 - median: 369.86102294921875 - min: 34.892547607421875 - percentile: [124.2872543334961, 272.1618957519531, 655.9799194335938, 844.3997192382812] - percentile_00_5: 124.2872543334961 - percentile_10_0: 272.1618957519531 - percentile_90_0: 655.9799194335938 - percentile_99_5: 844.3997192382812 - stdev: 148.93247985839844 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 34] - intensity: - - max: 1856.28369140625 - mean: 489.1205139160156 - median: 502.45269775390625 - min: 0.0 - percentile: [27.914039611816406, 188.41976928710938, 767.6361083984375, 865.335205078125] - percentile_00_5: 27.914039611816406 - percentile_10_0: 188.41976928710938 - percentile_90_0: 767.6361083984375 - percentile_99_5: 865.335205078125 - stdev: 218.61279296875 - shape: - - [36, 51, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_041.nii.gz - label_stats: - image_intensity: - - max: 907.206298828125 - mean: 411.7265625 - median: 369.86102294921875 - min: 34.892547607421875 - percentile: [124.2872543334961, 272.1618957519531, 655.9799194335938, 844.3997192382812] - percentile_00_5: 124.2872543334961 - percentile_10_0: 272.1618957519531 - percentile_90_0: 655.9799194335938 - percentile_99_5: 844.3997192382812 - stdev: 148.93247985839844 - label: - - image_intensity: - - max: 1856.28369140625 - mean: 494.085205078125 - median: 516.4097290039062 - min: 0.0 - percentile: [20.935529708862305, 174.46275329589844, 767.6361083984375, 865.335205078125] - percentile_00_5: 20.935529708862305 - percentile_10_0: 174.46275329589844 - percentile_90_0: 767.6361083984375 - percentile_99_5: 865.335205078125 - stdev: 221.41714477539062 - ncomponents: 1 - pixel_percentage: 0.9397187232971191 - shape: - - [36, 51, 34] - - image_intensity: - - max: 907.206298828125 - mean: 404.0584411621094 - median: 369.86102294921875 - min: 34.892547607421875 - percentile: [104.67765045166016, 265.1833801269531, 630.8566284179688, 865.335205078125] - percentile_00_5: 104.67765045166016 - percentile_10_0: 265.1833801269531 - percentile_90_0: 630.8566284179688 - percentile_99_5: 865.335205078125 - stdev: 147.12564086914062 - ncomponents: 1 - pixel_percentage: 0.028466615825891495 - shape: - - [21, 17, 13] - - image_intensity: - - max: 851.3782348632812 - mean: 418.5876159667969 - median: 369.86102294921875 - min: 90.72062683105469 - percentile: [159.98233032226562, 272.1618957519531, 676.9154663085938, 823.4641723632812] - percentile_00_5: 159.98233032226562 - percentile_10_0: 272.1618957519531 - percentile_90_0: 676.9154663085938 - percentile_99_5: 823.4641723632812 - stdev: 150.1993408203125 - ncomponents: 1 - pixel_percentage: 0.031814686954021454 - shape: - - [20, 23, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_321.nii.gz - image_foreground_stats: - intensity: - - max: 686.8026733398438 - mean: 333.61077880859375 - median: 316.05078125 - min: 91.16850280761719 - percentile: [151.94749450683594, 237.03810119628906, 455.8424987792969, 619.94580078125] - percentile_00_5: 151.94749450683594 - percentile_10_0: 237.03810119628906 - percentile_90_0: 455.8424987792969 - percentile_99_5: 619.94580078125 - stdev: 88.38630676269531 - image_stats: - channels: 1 - cropped_shape: - - [34, 46, 34] - intensity: - - max: 2048.252197265625 - mean: 420.86151123046875 - median: 425.4530029296875 - min: 0.0 - percentile: [24.311599731445312, 194.4927978515625, 638.1795043945312, 765.8153686523438] - percentile_00_5: 24.311599731445312 - percentile_10_0: 194.4927978515625 - percentile_90_0: 638.1795043945312 - percentile_99_5: 765.8153686523438 - stdev: 173.3219451904297 - shape: - - [34, 46, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_321.nii.gz - label_stats: - image_intensity: - - max: 686.8026733398438 - mean: 333.61077880859375 - median: 316.05078125 - min: 91.16850280761719 - percentile: [151.94749450683594, 237.03810119628906, 455.8424987792969, 619.94580078125] - percentile_00_5: 151.94749450683594 - percentile_10_0: 237.03810119628906 - percentile_90_0: 455.8424987792969 - percentile_99_5: 619.94580078125 - stdev: 88.38630676269531 - label: - - image_intensity: - - max: 2048.252197265625 - mean: 425.98614501953125 - median: 437.6087951660156 - min: 0.0 - percentile: [24.311599731445312, 188.41490173339844, 638.1795043945312, 765.8153686523438] - percentile_00_5: 24.311599731445312 - percentile_10_0: 188.41490173339844 - percentile_90_0: 638.1795043945312 - percentile_99_5: 765.8153686523438 - stdev: 175.70623779296875 - ncomponents: 1 - pixel_percentage: 0.9445238709449768 - shape: - - [34, 46, 34] - - image_intensity: - - max: 644.2573852539062 - mean: 338.9122314453125 - median: 334.28448486328125 - min: 91.16850280761719 - percentile: [145.86959838867188, 237.03810119628906, 449.76458740234375, 583.4783935546875] - percentile_00_5: 145.86959838867188 - percentile_10_0: 237.03810119628906 - percentile_90_0: 449.76458740234375 - percentile_99_5: 583.4783935546875 - stdev: 84.5455551147461 - ncomponents: 1 - pixel_percentage: 0.030107567086815834 - shape: - - [21, 18, 15] - - image_intensity: - - max: 686.8026733398438 - mean: 327.31903076171875 - median: 303.8949890136719 - min: 121.55799865722656 - percentile: [174.6788330078125, 237.03810119628906, 461.92041015625, 645.8377075195312] - percentile_00_5: 174.6788330078125 - percentile_10_0: 237.03810119628906 - percentile_90_0: 461.92041015625 - percentile_99_5: 645.8377075195312 - stdev: 92.34424591064453 - ncomponents: 1 - pixel_percentage: 0.02536858804523945 - shape: - - [20, 19, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_221.nii.gz - image_foreground_stats: - intensity: - - max: 75.0 - mean: 45.113563537597656 - median: 45.0 - min: 18.0 - percentile: [24.0, 33.0, 56.0, 70.0] - percentile_00_5: 24.0 - percentile_10_0: 33.0 - percentile_90_0: 56.0 - percentile_99_5: 70.0 - stdev: 9.138423919677734 - image_stats: - channels: 1 - cropped_shape: - - [32, 48, 34] - intensity: - - max: 127.0 - mean: 54.629310607910156 - median: 54.0 - min: 2.0 - percentile: [6.0, 20.0, 87.0, 106.0] - percentile_00_5: 6.0 - percentile_10_0: 20.0 - percentile_90_0: 87.0 - percentile_99_5: 106.0 - stdev: 24.795337677001953 - shape: - - [32, 48, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_221.nii.gz - label_stats: - image_intensity: - - max: 75.0 - mean: 45.113563537597656 - median: 45.0 - min: 18.0 - percentile: [24.0, 33.0, 56.0, 70.0] - percentile_00_5: 24.0 - percentile_10_0: 33.0 - percentile_90_0: 56.0 - percentile_99_5: 70.0 - stdev: 9.138423919677734 - label: - - image_intensity: - - max: 127.0 - mean: 55.097293853759766 - median: 56.0 - min: 2.0 - percentile: [6.0, 20.0, 88.0, 106.0] - percentile_00_5: 6.0 - percentile_10_0: 20.0 - percentile_90_0: 88.0 - percentile_99_5: 106.0 - stdev: 25.22431182861328 - ncomponents: 1 - pixel_percentage: 0.953125 - shape: - - [32, 48, 34] - - image_intensity: - - max: 75.0 - mean: 44.352054595947266 - median: 44.0 - min: 18.0 - percentile: [22.959999084472656, 33.0, 56.0, 70.0400390625] - percentile_00_5: 22.959999084472656 - percentile_10_0: 33.0 - percentile_90_0: 56.0 - percentile_99_5: 70.0400390625 - stdev: 9.46011734008789 - ncomponents: 1 - pixel_percentage: 0.022843902930617332 - shape: - - [14, 16, 15] - - image_intensity: - - max: 75.0 - mean: 45.83745193481445 - median: 46.0 - min: 20.0 - percentile: [26.0, 34.0, 56.0, 69.0] - percentile_00_5: 26.0 - percentile_10_0: 34.0 - percentile_90_0: 56.0 - percentile_99_5: 69.0 - stdev: 8.760598182678223 - ncomponents: 1 - pixel_percentage: 0.024031097069382668 - shape: - - [20, 21, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_096.nii.gz - image_foreground_stats: - intensity: - - max: 716.593994140625 - mean: 334.9621276855469 - median: 319.2745361328125 - min: 49.6649284362793 - percentile: [132.64083862304688, 227.0396728515625, 468.2693176269531, 617.2640991210938] - percentile_00_5: 132.64083862304688 - percentile_10_0: 227.0396728515625 - percentile_90_0: 468.2693176269531 - percentile_99_5: 617.2640991210938 - stdev: 94.32195281982422 - image_stats: - channels: 1 - cropped_shape: - - [34, 47, 39] - intensity: - - max: 1631.84765625 - mean: 450.9234619140625 - median: 461.1743469238281 - min: 0.0 - percentile: [28.379959106445312, 170.27975463867188, 695.3090209960938, 823.018798828125] - percentile_00_5: 28.379959106445312 - percentile_10_0: 170.27975463867188 - percentile_90_0: 695.3090209960938 - percentile_99_5: 823.018798828125 - stdev: 198.05252075195312 - shape: - - [34, 47, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_096.nii.gz - label_stats: - image_intensity: - - max: 716.593994140625 - mean: 334.9621276855469 - median: 319.2745361328125 - min: 49.6649284362793 - percentile: [132.64083862304688, 227.0396728515625, 468.2693176269531, 617.2640991210938] - percentile_00_5: 132.64083862304688 - percentile_10_0: 227.0396728515625 - percentile_90_0: 468.2693176269531 - percentile_99_5: 617.2640991210938 - stdev: 94.32195281982422 - label: - - image_intensity: - - max: 1631.84765625 - mean: 457.4900817871094 - median: 475.36431884765625 - min: 0.0 - percentile: [28.379959106445312, 170.27975463867188, 695.3090209960938, 830.1138305664062] - percentile_00_5: 28.379959106445312 - percentile_10_0: 170.27975463867188 - percentile_90_0: 695.3090209960938 - percentile_99_5: 830.1138305664062 - stdev: 200.34375 - ncomponents: 1 - pixel_percentage: 0.9464073777198792 - shape: - - [34, 47, 39] - - image_intensity: - - max: 702.4039916992188 - mean: 340.0940246582031 - median: 333.4645080566406 - min: 49.6649284362793 - percentile: [116.6771011352539, 227.0396728515625, 468.2693176269531, 607.0122680664062] - percentile_00_5: 116.6771011352539 - percentile_10_0: 227.0396728515625 - percentile_90_0: 468.2693176269531 - percentile_99_5: 607.0122680664062 - stdev: 93.74486541748047 - ncomponents: 1 - pixel_percentage: 0.030326370149850845 - shape: - - [21, 16, 14] - - image_intensity: - - max: 716.593994140625 - mean: 328.27294921875 - median: 312.1795654296875 - min: 63.85490798950195 - percentile: [134.8048095703125, 219.94468688964844, 468.2693176269531, 617.2640991210938] - percentile_00_5: 134.8048095703125 - percentile_10_0: 219.94468688964844 - percentile_90_0: 468.2693176269531 - percentile_99_5: 617.2640991210938 - stdev: 94.6521224975586 - ncomponents: 1 - pixel_percentage: 0.02326626144349575 - shape: - - [16, 21, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_242.nii.gz - image_foreground_stats: - intensity: - - max: 94.0 - mean: 49.222904205322266 - median: 47.0 - min: 21.0 - percentile: [26.0, 37.0, 65.0, 85.0] - percentile_00_5: 26.0 - percentile_10_0: 37.0 - percentile_90_0: 65.0 - percentile_99_5: 85.0 - stdev: 11.365469932556152 - image_stats: - channels: 1 - cropped_shape: - - [38, 52, 34] - intensity: - - max: 244.0 - mean: 64.836181640625 - median: 62.0 - min: 3.0 - percentile: [8.0, 28.0, 104.0, 117.0] - percentile_00_5: 8.0 - percentile_10_0: 28.0 - percentile_90_0: 104.0 - percentile_99_5: 117.0 - stdev: 28.81517791748047 - shape: - - [38, 52, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_242.nii.gz - label_stats: - image_intensity: - - max: 94.0 - mean: 49.222904205322266 - median: 47.0 - min: 21.0 - percentile: [26.0, 37.0, 65.0, 85.0] - percentile_00_5: 26.0 - percentile_10_0: 37.0 - percentile_90_0: 65.0 - percentile_99_5: 85.0 - stdev: 11.365469932556152 - label: - - image_intensity: - - max: 244.0 - mean: 65.92585754394531 - median: 65.0 - min: 3.0 - percentile: [7.0, 27.0, 104.0, 117.0] - percentile_00_5: 7.0 - percentile_10_0: 27.0 - percentile_90_0: 104.0 - percentile_99_5: 117.0 - stdev: 29.343610763549805 - ncomponents: 1 - pixel_percentage: 0.9347612261772156 - shape: - - [38, 52, 34] - - image_intensity: - - max: 94.0 - mean: 49.80419921875 - median: 48.0 - min: 22.0 - percentile: [27.0, 38.0, 64.0, 82.0] - percentile_00_5: 27.0 - percentile_10_0: 38.0 - percentile_90_0: 64.0 - percentile_99_5: 82.0 - stdev: 10.46994400024414 - ncomponents: 1 - pixel_percentage: 0.03686889633536339 - shape: - - [25, 17, 16] - - image_intensity: - - max: 94.0 - mean: 48.46746826171875 - median: 46.0 - min: 21.0 - percentile: [25.524999618530273, 35.0, 66.0, 86.0] - percentile_00_5: 25.524999618530273 - percentile_10_0: 35.0 - percentile_90_0: 66.0 - percentile_99_5: 86.0 - stdev: 12.392592430114746 - ncomponents: 1 - pixel_percentage: 0.028369849547743797 - shape: - - [18, 23, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_188.nii.gz - image_foreground_stats: - intensity: - - max: 413957.15625 - mean: 187291.359375 - median: 182264.71875 - min: 18535.39453125 - percentile: [83409.2734375, 135926.21875, 247138.59375, 376886.34375] - percentile_00_5: 83409.2734375 - percentile_10_0: 135926.21875 - percentile_90_0: 247138.59375 - percentile_99_5: 376886.34375 - stdev: 47374.7421875 - image_stats: - channels: 1 - cropped_shape: - - [37, 54, 36] - intensity: - - max: 518991.0625 - mean: 246449.640625 - median: 250227.828125 - min: 0.0 - percentile: [12356.9296875, 92676.96875, 389243.28125, 444849.46875] - percentile_00_5: 12356.9296875 - percentile_10_0: 92676.96875 - percentile_90_0: 389243.28125 - percentile_99_5: 444849.46875 - stdev: 110470.875 - shape: - - [37, 54, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_188.nii.gz - label_stats: - image_intensity: - - max: 413957.15625 - mean: 187291.359375 - median: 182264.71875 - min: 18535.39453125 - percentile: [83409.2734375, 135926.21875, 247138.59375, 376886.34375] - percentile_00_5: 83409.2734375 - percentile_10_0: 135926.21875 - percentile_90_0: 247138.59375 - percentile_99_5: 376886.34375 - stdev: 47374.7421875 - label: - - image_intensity: - - max: 518991.0625 - mean: 249361.21875 - median: 256406.296875 - min: 0.0 - percentile: [12356.9296875, 89587.7421875, 392332.53125, 444849.46875] - percentile_00_5: 12356.9296875 - percentile_10_0: 89587.7421875 - percentile_90_0: 392332.53125 - percentile_99_5: 444849.46875 - stdev: 111862.703125 - ncomponents: 1 - pixel_percentage: 0.9530919790267944 - shape: - - [37, 54, 36] - - image_intensity: - - max: 339815.5625 - mean: 186672.109375 - median: 182264.71875 - min: 18535.39453125 - percentile: [87193.5859375, 135926.21875, 244049.359375, 312012.46875] - percentile_00_5: 87193.5859375 - percentile_10_0: 135926.21875 - percentile_90_0: 244049.359375 - percentile_99_5: 312012.46875 - stdev: 42888.6640625 - ncomponents: 1 - pixel_percentage: 0.020103435963392258 - shape: - - [20, 15, 13] - - image_intensity: - - max: 413957.15625 - mean: 187755.796875 - median: 179175.484375 - min: 27803.091796875 - percentile: [82281.703125, 135926.21875, 251154.375, 386154.0625] - percentile_00_5: 82281.703125 - percentile_10_0: 135926.21875 - percentile_90_0: 251154.375 - percentile_99_5: 386154.0625 - stdev: 50473.3515625 - ncomponents: 1 - pixel_percentage: 0.02680458314716816 - shape: - - [19, 28, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_088.nii.gz - image_foreground_stats: - intensity: - - max: 91.0 - mean: 47.612945556640625 - median: 46.0 - min: 10.0 - percentile: [21.0, 34.0, 64.0, 80.0] - percentile_00_5: 21.0 - percentile_10_0: 34.0 - percentile_90_0: 64.0 - percentile_99_5: 80.0 - stdev: 11.623677253723145 - image_stats: - channels: 1 - cropped_shape: - - [40, 52, 35] - intensity: - - max: 247.0 - mean: 61.74434280395508 - median: 64.0 - min: 1.0 - percentile: [7.0, 24.0, 94.0, 110.0] - percentile_00_5: 7.0 - percentile_10_0: 24.0 - percentile_90_0: 94.0 - percentile_99_5: 110.0 - stdev: 26.512737274169922 - shape: - - [40, 52, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_088.nii.gz - label_stats: - image_intensity: - - max: 91.0 - mean: 47.612945556640625 - median: 46.0 - min: 10.0 - percentile: [21.0, 34.0, 64.0, 80.0] - percentile_00_5: 21.0 - percentile_10_0: 34.0 - percentile_90_0: 64.0 - percentile_99_5: 80.0 - stdev: 11.623677253723145 - label: - - image_intensity: - - max: 247.0 - mean: 62.539466857910156 - median: 67.0 - min: 1.0 - percentile: [7.0, 23.0, 95.0, 110.0] - percentile_00_5: 7.0 - percentile_10_0: 23.0 - percentile_90_0: 95.0 - percentile_99_5: 110.0 - stdev: 26.888769149780273 - ncomponents: 1 - pixel_percentage: 0.9467307925224304 - shape: - - [40, 52, 35] - - image_intensity: - - max: 87.0 - mean: 48.70710754394531 - median: 48.0 - min: 10.0 - percentile: [21.545000076293945, 35.0, 64.0, 78.0] - percentile_00_5: 21.545000076293945 - percentile_10_0: 35.0 - percentile_90_0: 64.0 - percentile_99_5: 78.0 - stdev: 11.192985534667969 - ncomponents: 1 - pixel_percentage: 0.02898351661860943 - shape: - - [24, 16, 15] - - image_intensity: - - max: 91.0 - mean: 46.30712890625 - median: 45.0 - min: 15.0 - percentile: [20.0, 33.0, 64.0, 81.0] - percentile_00_5: 20.0 - percentile_10_0: 33.0 - percentile_90_0: 64.0 - percentile_99_5: 81.0 - stdev: 11.987649917602539 - ncomponents: 1 - pixel_percentage: 0.02428571507334709 - shape: - - [16, 25, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_084.nii.gz - image_foreground_stats: - intensity: - - max: 792.2147216796875 - mean: 367.0208435058594 - median: 352.9669494628906 - min: 7.843709945678711 - percentile: [141.18678283691406, 243.15501403808594, 509.8411560058594, 721.621337890625] - percentile_00_5: 141.18678283691406 - percentile_10_0: 243.15501403808594 - percentile_90_0: 509.8411560058594 - percentile_99_5: 721.621337890625 - stdev: 109.53959655761719 - image_stats: - channels: 1 - cropped_shape: - - [34, 52, 37] - intensity: - - max: 2345.269287109375 - mean: 503.0232238769531 - median: 501.9974365234375 - min: 0.0 - percentile: [31.374839782714844, 196.09274291992188, 792.2147216796875, 933.4014892578125] - percentile_00_5: 31.374839782714844 - percentile_10_0: 196.09274291992188 - percentile_90_0: 792.2147216796875 - percentile_99_5: 933.4014892578125 - stdev: 227.40896606445312 - shape: - - [34, 52, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_084.nii.gz - label_stats: - image_intensity: - - max: 792.2147216796875 - mean: 367.0208435058594 - median: 352.9669494628906 - min: 7.843709945678711 - percentile: [141.18678283691406, 243.15501403808594, 509.8411560058594, 721.621337890625] - percentile_00_5: 141.18678283691406 - percentile_10_0: 243.15501403808594 - percentile_90_0: 509.8411560058594 - percentile_99_5: 721.621337890625 - stdev: 109.53959655761719 - label: - - image_intensity: - - max: 2345.269287109375 - mean: 509.90350341796875 - median: 517.6848754882812 - min: 0.0 - percentile: [31.374839782714844, 196.09274291992188, 792.2147216796875, 933.4014892578125] - percentile_00_5: 31.374839782714844 - percentile_10_0: 196.09274291992188 - percentile_90_0: 792.2147216796875 - percentile_99_5: 933.4014892578125 - stdev: 229.65402221679688 - ncomponents: 1 - pixel_percentage: 0.9518466591835022 - shape: - - [34, 52, 37] - - image_intensity: - - max: 776.5272827148438 - mean: 372.3900146484375 - median: 360.8106689453125 - min: 7.843709945678711 - percentile: [141.18678283691406, 265.9018249511719, 494.1537170410156, 659.303466796875] - percentile_00_5: 141.18678283691406 - percentile_10_0: 265.9018249511719 - percentile_90_0: 494.1537170410156 - percentile_99_5: 659.303466796875 - stdev: 97.00963592529297 - ncomponents: 1 - pixel_percentage: 0.021248623728752136 - shape: - - [21, 14, 13] - - image_intensity: - - max: 792.2147216796875 - mean: 362.7804870605469 - median: 337.279541015625 - min: 54.905967712402344 - percentile: [141.18678283691406, 235.31129455566406, 525.528564453125, 732.6802368164062] - percentile_00_5: 141.18678283691406 - percentile_10_0: 235.31129455566406 - percentile_90_0: 525.528564453125 - percentile_99_5: 732.6802368164062 - stdev: 118.33068084716797 - ncomponents: 1 - pixel_percentage: 0.02690473198890686 - shape: - - [15, 26, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_233.nii.gz - image_foreground_stats: - intensity: - - max: 931.4192504882812 - mean: 454.6297912597656 - median: 431.070068359375 - min: 23.093040466308594 - percentile: [198.83106994628906, 323.30255126953125, 615.8143920898438, 854.4425048828125] - percentile_00_5: 198.83106994628906 - percentile_10_0: 323.30255126953125 - percentile_90_0: 615.8143920898438 - percentile_99_5: 854.4425048828125 - stdev: 120.42060089111328 - image_stats: - channels: 1 - cropped_shape: - - [33, 51, 37] - intensity: - - max: 3079.072021484375 - mean: 582.3634033203125 - median: 592.7213745117188 - min: 0.0 - percentile: [38.488399505615234, 230.93040466308594, 900.6285400390625, 1077.6751708984375] - percentile_00_5: 38.488399505615234 - percentile_10_0: 230.93040466308594 - percentile_90_0: 900.6285400390625 - percentile_99_5: 1077.6751708984375 - stdev: 257.6723937988281 - shape: - - [33, 51, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_233.nii.gz - label_stats: - image_intensity: - - max: 931.4192504882812 - mean: 454.6297912597656 - median: 431.070068359375 - min: 23.093040466308594 - percentile: [198.83106994628906, 323.30255126953125, 615.8143920898438, 854.4425048828125] - percentile_00_5: 198.83106994628906 - percentile_10_0: 323.30255126953125 - percentile_90_0: 615.8143920898438 - percentile_99_5: 854.4425048828125 - stdev: 120.42060089111328 - label: - - image_intensity: - - max: 3079.072021484375 - mean: 589.2078857421875 - median: 615.8143920898438 - min: 0.0 - percentile: [30.790719985961914, 223.23272705078125, 900.6285400390625, 1085.3729248046875] - percentile_00_5: 30.790719985961914 - percentile_10_0: 223.23272705078125 - percentile_90_0: 900.6285400390625 - percentile_99_5: 1085.3729248046875 - stdev: 261.2558288574219 - ncomponents: 1 - pixel_percentage: 0.9491416811943054 - shape: - - [33, 51, 37] - - image_intensity: - - max: 892.930908203125 - mean: 454.3032531738281 - median: 438.76776123046875 - min: 23.093040466308594 - percentile: [177.04664611816406, 323.30255126953125, 606.5765991210938, 846.7448120117188] - percentile_00_5: 177.04664611816406 - percentile_10_0: 323.30255126953125 - percentile_90_0: 606.5765991210938 - percentile_99_5: 846.7448120117188 - stdev: 117.94983673095703 - ncomponents: 1 - pixel_percentage: 0.025581732392311096 - shape: - - [19, 17, 15] - - image_intensity: - - max: 931.4192504882812 - mean: 454.96026611328125 - median: 431.070068359375 - min: 161.65127563476562 - percentile: [223.23272705078125, 323.30255126953125, 623.5120849609375, 863.1793823242188] - percentile_00_5: 223.23272705078125 - percentile_10_0: 323.30255126953125 - percentile_90_0: 623.5120849609375 - percentile_99_5: 863.1793823242188 - stdev: 122.86973571777344 - ncomponents: 1 - pixel_percentage: 0.025276614353060722 - shape: - - [20, 22, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_184.nii.gz - image_foreground_stats: - intensity: - - max: 433042.0625 - mean: 191880.328125 - median: 186047.703125 - min: 38492.62890625 - percentile: [77049.4140625, 131516.484375, 259825.234375, 381654.34375] - percentile_00_5: 77049.4140625 - percentile_10_0: 131516.484375 - percentile_90_0: 259825.234375 - percentile_99_5: 381654.34375 - stdev: 52786.93359375 - image_stats: - channels: 1 - cropped_shape: - - [37, 51, 33] - intensity: - - max: 1238179.5 - mean: 256522.109375 - median: 263032.96875 - min: 0.0 - percentile: [12830.8759765625, 93023.8515625, 400964.875, 468326.96875] - percentile_00_5: 12830.8759765625 - percentile_10_0: 93023.8515625 - percentile_90_0: 400964.875 - percentile_99_5: 468326.96875 - stdev: 117515.9765625 - shape: - - [37, 51, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_184.nii.gz - label_stats: - image_intensity: - - max: 433042.0625 - mean: 191880.328125 - median: 186047.703125 - min: 38492.62890625 - percentile: [77049.4140625, 131516.484375, 259825.234375, 381654.34375] - percentile_00_5: 77049.4140625 - percentile_10_0: 131516.484375 - percentile_90_0: 259825.234375 - percentile_99_5: 381654.34375 - stdev: 52786.93359375 - label: - - image_intensity: - - max: 1238179.5 - mean: 260494.328125 - median: 272656.125 - min: 0.0 - percentile: [12830.8759765625, 89816.1328125, 404172.59375, 468326.96875] - percentile_00_5: 12830.8759765625 - percentile_10_0: 89816.1328125 - percentile_90_0: 404172.59375 - percentile_99_5: 468326.96875 - stdev: 119226.0390625 - ncomponents: 1 - pixel_percentage: 0.9421078562736511 - shape: - - [37, 51, 33] - - image_intensity: - - max: 368887.6875 - mean: 196782.359375 - median: 192463.140625 - min: 38492.62890625 - percentile: [76985.2578125, 141139.640625, 263032.96875, 330395.0625] - percentile_00_5: 76985.2578125 - percentile_10_0: 141139.640625 - percentile_90_0: 263032.96875 - percentile_99_5: 330395.0625 - stdev: 48196.13671875 - ncomponents: 1 - pixel_percentage: 0.03128261864185333 - shape: - - [26, 17, 12] - - image_intensity: - - max: 433042.0625 - mean: 186117.390625 - median: 176424.546875 - min: 60946.66015625 - percentile: [80192.9765625, 127025.6875, 259825.234375, 394549.4375] - percentile_00_5: 80192.9765625 - percentile_10_0: 127025.6875 - percentile_90_0: 259825.234375 - percentile_99_5: 394549.4375 - stdev: 57183.9765625 - ncomponents: 1 - pixel_percentage: 0.026609497144818306 - shape: - - [18, 23, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_333.nii.gz - image_foreground_stats: - intensity: - - max: 798.2019653320312 - mean: 413.6833190917969 - median: 411.9752197265625 - min: 92.69441986083984 - percentile: [159.64039611816406, 272.9335632324219, 551.016845703125, 689.1834106445312] - percentile_00_5: 159.64039611816406 - percentile_10_0: 272.9335632324219 - percentile_90_0: 551.016845703125 - percentile_99_5: 689.1834106445312 - stdev: 106.16770935058594 - image_stats: - channels: 1 - cropped_shape: - - [33, 46, 38] - intensity: - - max: 1931.1337890625 - mean: 531.028076171875 - median: 545.8671264648438 - min: 0.0 - percentile: [36.04783248901367, 211.13729858398438, 808.5013427734375, 1029.93798828125] - percentile_00_5: 36.04783248901367 - percentile_10_0: 211.13729858398438 - percentile_90_0: 808.5013427734375 - percentile_99_5: 1029.93798828125 - stdev: 225.89369201660156 - shape: - - [33, 46, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_333.nii.gz - label_stats: - image_intensity: - - max: 798.2019653320312 - mean: 413.6833190917969 - median: 411.9752197265625 - min: 92.69441986083984 - percentile: [159.64039611816406, 272.9335632324219, 551.016845703125, 689.1834106445312] - percentile_00_5: 159.64039611816406 - percentile_10_0: 272.9335632324219 - percentile_90_0: 551.016845703125 - percentile_99_5: 689.1834106445312 - stdev: 106.16770935058594 - label: - - image_intensity: - - max: 1931.1337890625 - mean: 536.6449584960938 - median: 561.3162231445312 - min: 0.0 - percentile: [30.89813995361328, 205.98760986328125, 813.6510620117188, 1029.93798828125] - percentile_00_5: 30.89813995361328 - percentile_10_0: 205.98760986328125 - percentile_90_0: 813.6510620117188 - percentile_99_5: 1029.93798828125 - stdev: 228.56134033203125 - ncomponents: 1 - pixel_percentage: 0.9543200731277466 - shape: - - [33, 46, 38] - - image_intensity: - - max: 777.6032104492188 - mean: 419.81207275390625 - median: 411.9752197265625 - min: 118.44287109375 - percentile: [180.00741577148438, 293.5323486328125, 556.1665649414062, 690.2904052734375] - percentile_00_5: 180.00741577148438 - percentile_10_0: 293.5323486328125 - percentile_90_0: 556.1665649414062 - percentile_99_5: 690.2904052734375 - stdev: 102.16981506347656 - ncomponents: 1 - pixel_percentage: 0.020664308220148087 - shape: - - [18, 15, 13] - - image_intensity: - - max: 798.2019653320312 - mean: 408.62060546875 - median: 411.9752197265625 - min: 92.69441986083984 - percentile: [146.3542022705078, 267.78387451171875, 545.8671264648438, 680.5838623046875] - percentile_00_5: 146.3542022705078 - percentile_10_0: 267.78387451171875 - percentile_90_0: 545.8671264648438 - percentile_99_5: 680.5838623046875 - stdev: 109.10066223144531 - ncomponents: 1 - pixel_percentage: 0.02501560188829899 - shape: - - [17, 20, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_250.nii.gz - image_foreground_stats: - intensity: - - max: 1052.158203125 - mean: 435.8700256347656 - median: 419.3917541503906 - min: 36.78874969482422 - percentile: [148.2586669921875, 294.30999755859375, 610.6932373046875, 868.2144775390625] - percentile_00_5: 148.2586669921875 - percentile_10_0: 294.30999755859375 - percentile_90_0: 610.6932373046875 - percentile_99_5: 868.2144775390625 - stdev: 127.73078155517578 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 36] - intensity: - - max: 2818.018310546875 - mean: 592.0531616210938 - median: 588.6199951171875 - min: 0.0 - percentile: [29.430999755859375, 198.65924072265625, 956.5075073242188, 1118.3779296875] - percentile_00_5: 29.430999755859375 - percentile_10_0: 198.65924072265625 - percentile_90_0: 956.5075073242188 - percentile_99_5: 1118.3779296875 - stdev: 282.99932861328125 - shape: - - [35, 51, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_250.nii.gz - label_stats: - image_intensity: - - max: 1052.158203125 - mean: 435.8700256347656 - median: 419.3917541503906 - min: 36.78874969482422 - percentile: [148.2586669921875, 294.30999755859375, 610.6932373046875, 868.2144775390625] - percentile_00_5: 148.2586669921875 - percentile_10_0: 294.30999755859375 - percentile_90_0: 610.6932373046875 - percentile_99_5: 868.2144775390625 - stdev: 127.73078155517578 - label: - - image_intensity: - - max: 2818.018310546875 - mean: 600.8624877929688 - median: 610.6932373046875 - min: 0.0 - percentile: [29.430999755859375, 191.30149841308594, 963.865234375, 1118.3779296875] - percentile_00_5: 29.430999755859375 - percentile_10_0: 191.30149841308594 - percentile_90_0: 963.865234375 - percentile_99_5: 1118.3779296875 - stdev: 286.76165771484375 - ncomponents: 1 - pixel_percentage: 0.9466075301170349 - shape: - - [35, 51, 36] - - image_intensity: - - max: 875.572265625 - mean: 442.6506042480469 - median: 434.10723876953125 - min: 73.57749938964844 - percentile: [147.15499877929688, 301.6677551269531, 603.3355102539062, 802.1420288085938] - percentile_00_5: 147.15499877929688 - percentile_10_0: 301.6677551269531 - percentile_90_0: 603.3355102539062 - percentile_99_5: 802.1420288085938 - stdev: 120.88964080810547 - ncomponents: 1 - pixel_percentage: 0.02955182082951069 - shape: - - [23, 17, 14] - - image_intensity: - - max: 1052.158203125 - mean: 427.465087890625 - median: 397.3184814453125 - min: 36.78874969482422 - percentile: [164.15139770507812, 286.9522399902344, 618.051025390625, 951.6879272460938] - percentile_00_5: 164.15139770507812 - percentile_10_0: 286.9522399902344 - percentile_90_0: 618.051025390625 - percentile_99_5: 951.6879272460938 - stdev: 135.26202392578125 - ncomponents: 1 - pixel_percentage: 0.02384064719080925 - shape: - - [17, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_350.nii.gz - image_foreground_stats: - intensity: - - max: 1033.5870361328125 - mean: 444.15380859375 - median: 437.2868347167969 - min: 71.5560302734375 - percentile: [151.06272888183594, 302.9205627441406, 596.3002319335938, 810.9683227539062] - percentile_00_5: 151.06272888183594 - percentile_10_0: 302.9205627441406 - percentile_90_0: 596.3002319335938 - percentile_99_5: 810.9683227539062 - stdev: 116.9878158569336 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 34] - intensity: - - max: 1772.9993896484375 - mean: 617.0733642578125 - median: 651.9548950195312 - min: 0.0 - percentile: [31.80267906188965, 214.6680908203125, 946.1296997070312, 1073.3404541015625] - percentile_00_5: 31.80267906188965 - percentile_10_0: 214.6680908203125 - percentile_90_0: 946.1296997070312 - percentile_99_5: 1073.3404541015625 - stdev: 272.0960388183594 - shape: - - [35, 49, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_350.nii.gz - label_stats: - image_intensity: - - max: 1033.5870361328125 - mean: 444.15380859375 - median: 437.2868347167969 - min: 71.5560302734375 - percentile: [151.06272888183594, 302.9205627441406, 596.3002319335938, 810.9683227539062] - percentile_00_5: 151.06272888183594 - percentile_10_0: 302.9205627441406 - percentile_90_0: 596.3002319335938 - percentile_99_5: 810.9683227539062 - stdev: 116.9878158569336 - label: - - image_intensity: - - max: 1772.9993896484375 - mean: 626.261474609375 - median: 675.8069458007812 - min: 0.0 - percentile: [31.80267906188965, 206.7174072265625, 946.1296997070312, 1073.3404541015625] - percentile_00_5: 31.80267906188965 - percentile_10_0: 206.7174072265625 - percentile_90_0: 946.1296997070312 - percentile_99_5: 1073.3404541015625 - stdev: 274.8995056152344 - ncomponents: 1 - pixel_percentage: 0.9495455622673035 - shape: - - [35, 49, 34] - - image_intensity: - - max: 1033.5870361328125 - mean: 459.8775329589844 - median: 453.18817138671875 - min: 111.30937957763672 - percentile: [174.91473388671875, 325.9774475097656, 604.2509155273438, 803.0176391601562] - percentile_00_5: 174.91473388671875 - percentile_10_0: 325.9774475097656 - percentile_90_0: 604.2509155273438 - percentile_99_5: 803.0176391601562 - stdev: 113.29131317138672 - ncomponents: 1 - pixel_percentage: 0.025295833125710487 - shape: - - [20, 18, 12] - - image_intensity: - - max: 922.2777099609375 - mean: 428.3443908691406 - median: 421.385498046875 - min: 71.5560302734375 - percentile: [137.7851104736328, 294.1747741699219, 580.3988647460938, 816.295654296875] - percentile_00_5: 137.7851104736328 - percentile_10_0: 294.1747741699219 - percentile_90_0: 580.3988647460938 - percentile_99_5: 816.295654296875 - stdev: 118.50525665283203 - ncomponents: 1 - pixel_percentage: 0.025158634409308434 - shape: - - [22, 22, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_378.nii.gz - image_foreground_stats: - intensity: - - max: 789.7006225585938 - mean: 333.4702453613281 - median: 318.53472900390625 - min: 46.452980041503906 - percentile: [132.72279357910156, 218.99261474609375, 457.8936462402344, 691.6183471679688] - percentile_00_5: 132.72279357910156 - percentile_10_0: 218.99261474609375 - percentile_90_0: 457.8936462402344 - percentile_99_5: 691.6183471679688 - stdev: 98.92711639404297 - image_stats: - channels: 1 - cropped_shape: - - [35, 52, 34] - intensity: - - max: 2176.65380859375 - mean: 452.5894775390625 - median: 471.1659240722656 - min: 0.0 - percentile: [26.544559478759766, 159.26736450195312, 703.4308471679688, 842.7897338867188] - percentile_00_5: 26.544559478759766 - percentile_10_0: 159.26736450195312 - percentile_90_0: 703.4308471679688 - percentile_99_5: 842.7897338867188 - stdev: 208.04774475097656 - shape: - - [35, 52, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_378.nii.gz - label_stats: - image_intensity: - - max: 789.7006225585938 - mean: 333.4702453613281 - median: 318.53472900390625 - min: 46.452980041503906 - percentile: [132.72279357910156, 218.99261474609375, 457.8936462402344, 691.6183471679688] - percentile_00_5: 132.72279357910156 - percentile_10_0: 218.99261474609375 - percentile_90_0: 457.8936462402344 - percentile_99_5: 691.6183471679688 - stdev: 98.92711639404297 - label: - - image_intensity: - - max: 2176.65380859375 - mean: 458.1441650390625 - median: 484.4382019042969 - min: 0.0 - percentile: [19.90842056274414, 159.26736450195312, 710.0669555664062, 849.4259033203125] - percentile_00_5: 19.90842056274414 - percentile_10_0: 159.26736450195312 - percentile_90_0: 710.0669555664062 - percentile_99_5: 849.4259033203125 - stdev: 210.1270294189453 - ncomponents: 1 - pixel_percentage: 0.9554460048675537 - shape: - - [35, 52, 34] - - image_intensity: - - max: 703.4308471679688 - mean: 343.701416015625 - median: 338.4431457519531 - min: 46.452980041503906 - percentile: [145.9950714111328, 238.90103149414062, 457.8936462402344, 624.4937744140625] - percentile_00_5: 145.9950714111328 - percentile_10_0: 238.90103149414062 - percentile_90_0: 457.8936462402344 - percentile_99_5: 624.4937744140625 - stdev: 89.67848205566406 - ncomponents: 1 - pixel_percentage: 0.019069166854023933 - shape: - - [19, 14, 11] - - image_intensity: - - max: 789.7006225585938 - mean: 325.814697265625 - median: 311.8985595703125 - min: 46.452980041503906 - percentile: [126.08665466308594, 212.35647583007812, 464.52978515625, 710.86328125] - percentile_00_5: 126.08665466308594 - percentile_10_0: 212.35647583007812 - percentile_90_0: 464.52978515625 - percentile_99_5: 710.86328125 - stdev: 104.66546630859375 - ncomponents: 1 - pixel_percentage: 0.025484809651970863 - shape: - - [19, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_205.nii.gz - image_foreground_stats: - intensity: - - max: 423338.3125 - mean: 206527.984375 - median: 198643.359375 - min: 74898.3125 - percentile: [104206.3515625, 153053.078125, 269308.125, 377748.03125] - percentile_00_5: 104206.3515625 - percentile_10_0: 153053.078125 - percentile_90_0: 269308.125 - percentile_99_5: 377748.03125 - stdev: 49197.97265625 - image_stats: - channels: 1 - cropped_shape: - - [32, 47, 32] - intensity: - - max: 1432837.375 - mean: 270425.34375 - median: 273541.6875 - min: 0.0 - percentile: [13025.7939453125, 97693.453125, 416825.40625, 626421.125] - percentile_00_5: 13025.7939453125 - percentile_10_0: 97693.453125 - percentile_90_0: 416825.40625 - percentile_99_5: 626421.125 - stdev: 127638.15625 - shape: - - [32, 47, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_205.nii.gz - label_stats: - image_intensity: - - max: 423338.3125 - mean: 206527.984375 - median: 198643.359375 - min: 74898.3125 - percentile: [104206.3515625, 153053.078125, 269308.125, 377748.03125] - percentile_00_5: 104206.3515625 - percentile_10_0: 153053.078125 - percentile_90_0: 269308.125 - percentile_99_5: 377748.03125 - stdev: 49197.97265625 - label: - - image_intensity: - - max: 1432837.375 - mean: 274229.03125 - median: 286567.46875 - min: 0.0 - percentile: [13025.7939453125, 94437.0078125, 420081.84375, 644776.8125] - percentile_00_5: 13025.7939453125 - percentile_10_0: 94437.0078125 - percentile_90_0: 420081.84375 - percentile_99_5: 644776.8125 - stdev: 129844.921875 - ncomponents: 1 - pixel_percentage: 0.9438164830207825 - shape: - - [32, 47, 32] - - image_intensity: - - max: 381004.46875 - mean: 205309.90625 - median: 205156.25 - min: 81411.2109375 - percentile: [99533.3515625, 153053.078125, 260515.875, 341927.09375] - percentile_00_5: 99533.3515625 - percentile_10_0: 153053.078125 - percentile_90_0: 260515.875 - percentile_99_5: 341927.09375 - stdev: 44288.03125 - ncomponents: 1 - pixel_percentage: 0.027302194386720657 - shape: - - [18, 15, 14] - - image_intensity: - - max: 423338.3125 - mean: 207679.421875 - median: 198643.359375 - min: 74898.3125 - percentile: [110540.140625, 153053.078125, 280054.5625, 394030.28125] - percentile_00_5: 110540.140625 - percentile_10_0: 153053.078125 - percentile_90_0: 280054.5625 - percentile_99_5: 394030.28125 - stdev: 53400.62109375 - ncomponents: 1 - pixel_percentage: 0.028881317004561424 - shape: - - [21, 22, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_305.nii.gz - image_foreground_stats: - intensity: - - max: 899.477294921875 - mean: 415.31427001953125 - median: 394.7346496582031 - min: 6.471059799194336 - percentile: [97.0658950805664, 297.66876220703125, 582.3953857421875, 802.4114379882812] - percentile_00_5: 97.0658950805664 - percentile_10_0: 297.66876220703125 - percentile_90_0: 582.3953857421875 - percentile_99_5: 802.4114379882812 - stdev: 122.10847473144531 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 30] - intensity: - - max: 2200.160400390625 - mean: 508.36297607421875 - median: 517.684814453125 - min: 0.0 - percentile: [25.884239196777344, 207.07391357421875, 776.5271606445312, 931.8326416015625] - percentile_00_5: 25.884239196777344 - percentile_10_0: 207.07391357421875 - percentile_90_0: 776.5271606445312 - percentile_99_5: 931.8326416015625 - stdev: 218.83680725097656 - shape: - - [34, 49, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_305.nii.gz - label_stats: - image_intensity: - - max: 899.477294921875 - mean: 415.31427001953125 - median: 394.7346496582031 - min: 6.471059799194336 - percentile: [97.0658950805664, 297.66876220703125, 582.3953857421875, 802.4114379882812] - percentile_00_5: 97.0658950805664 - percentile_10_0: 297.66876220703125 - percentile_90_0: 582.3953857421875 - percentile_99_5: 802.4114379882812 - stdev: 122.10847473144531 - label: - - image_intensity: - - max: 2200.160400390625 - mean: 514.365966796875 - median: 530.6268920898438 - min: 0.0 - percentile: [25.884239196777344, 194.1317901611328, 776.5271606445312, 931.8326416015625] - percentile_00_5: 25.884239196777344 - percentile_10_0: 194.1317901611328 - percentile_90_0: 776.5271606445312 - percentile_99_5: 931.8326416015625 - stdev: 222.31185913085938 - ncomponents: 1 - pixel_percentage: 0.9393957853317261 - shape: - - [34, 49, 30] - - image_intensity: - - max: 899.477294921875 - mean: 424.0290222167969 - median: 401.2057189941406 - min: 6.471059799194336 - percentile: [59.79259490966797, 304.1398010253906, 582.3953857421875, 820.2716064453125] - percentile_00_5: 59.79259490966797 - percentile_10_0: 304.1398010253906 - percentile_90_0: 582.3953857421875 - percentile_99_5: 820.2716064453125 - stdev: 125.39521026611328 - ncomponents: 1 - pixel_percentage: 0.032993197441101074 - shape: - - [22, 19, 12] - - image_intensity: - - max: 841.23779296875 - mean: 404.9007873535156 - median: 381.79254150390625 - min: 45.29741668701172 - percentile: [115.79962158203125, 284.72662353515625, 575.92431640625, 758.47265625] - percentile_00_5: 115.79962158203125 - percentile_10_0: 284.72662353515625 - percentile_90_0: 575.92431640625 - percentile_99_5: 758.47265625 - stdev: 117.21452331542969 - ncomponents: 1 - pixel_percentage: 0.02761104516685009 - shape: - - [23, 22, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_366.nii.gz - image_foreground_stats: - intensity: - - max: 1238.031005859375 - mean: 555.1204833984375 - median: 530.584716796875 - min: 67.37583923339844 - percentile: [244.23741149902344, 395.83306884765625, 749.5562133789062, 1069.5914306640625] - percentile_00_5: 244.23741149902344 - percentile_10_0: 395.83306884765625 - percentile_90_0: 749.5562133789062 - percentile_99_5: 1069.5914306640625 - stdev: 148.08775329589844 - image_stats: - channels: 1 - cropped_shape: - - [37, 47, 34] - intensity: - - max: 3680.4052734375 - mean: 751.3726806640625 - median: 800.0880737304688 - min: 0.0 - percentile: [33.68791961669922, 294.769287109375, 1136.96728515625, 1271.718994140625] - percentile_00_5: 33.68791961669922 - percentile_10_0: 294.769287109375 - percentile_90_0: 1136.96728515625 - percentile_99_5: 1271.718994140625 - stdev: 332.8992614746094 - shape: - - [37, 47, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_366.nii.gz - label_stats: - image_intensity: - - max: 1238.031005859375 - mean: 555.1204833984375 - median: 530.584716796875 - min: 67.37583923339844 - percentile: [244.23741149902344, 395.83306884765625, 749.5562133789062, 1069.5914306640625] - percentile_00_5: 244.23741149902344 - percentile_10_0: 395.83306884765625 - percentile_90_0: 749.5562133789062 - percentile_99_5: 1069.5914306640625 - stdev: 148.08775329589844 - label: - - image_intensity: - - max: 3680.4052734375 - mean: 765.5328369140625 - median: 842.197998046875 - min: 0.0 - percentile: [33.68791961669922, 277.9253234863281, 1145.3892822265625, 1280.1409912109375] - percentile_00_5: 33.68791961669922 - percentile_10_0: 277.9253234863281 - percentile_90_0: 1145.3892822265625 - percentile_99_5: 1280.1409912109375 - stdev: 338.0180969238281 - ncomponents: 1 - pixel_percentage: 0.9327030181884766 - shape: - - [37, 47, 34] - - image_intensity: - - max: 1128.5452880859375 - mean: 550.1975708007812 - median: 530.584716796875 - min: 67.37583923339844 - percentile: [213.9604034423828, 395.83306884765625, 732.7122802734375, 965.1165771484375] - percentile_00_5: 213.9604034423828 - percentile_10_0: 395.83306884765625 - percentile_90_0: 732.7122802734375 - percentile_99_5: 965.1165771484375 - stdev: 137.8552703857422 - ncomponents: 1 - pixel_percentage: 0.0419781468808651 - shape: - - [26, 17, 15] - - image_intensity: - - max: 1238.031005859375 - mean: 563.2825317382812 - median: 530.584716796875 - min: 244.23741149902344 - percentile: [286.3473205566406, 395.83306884765625, 786.6131591796875, 1136.96728515625] - percentile_00_5: 286.3473205566406 - percentile_10_0: 395.83306884765625 - percentile_90_0: 786.6131591796875 - percentile_99_5: 1136.96728515625 - stdev: 163.32266235351562 - ncomponents: 1 - pixel_percentage: 0.0253188107162714 - shape: - - [20, 20, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_317.nii.gz - image_foreground_stats: - intensity: - - max: 1042.7255859375 - mean: 505.29339599609375 - median: 486.6052551269531 - min: 69.5150375366211 - percentile: [207.15481567382812, 364.9539489746094, 669.0822143554688, 929.7636108398438] - percentile_00_5: 207.15481567382812 - percentile_10_0: 364.9539489746094 - percentile_90_0: 669.0822143554688 - percentile_99_5: 929.7636108398438 - stdev: 125.19490814208984 - image_stats: - channels: 1 - cropped_shape: - - [33, 51, 34] - intensity: - - max: 4535.85595703125 - mean: 660.3604736328125 - median: 660.3928833007812 - min: 0.0 - percentile: [43.4468994140625, 321.5070495605469, 1016.6574096679688, 1199.1343994140625] - percentile_00_5: 43.4468994140625 - percentile_10_0: 321.5070495605469 - percentile_90_0: 1016.6574096679688 - percentile_99_5: 1199.1343994140625 - stdev: 274.3169860839844 - shape: - - [33, 51, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_317.nii.gz - label_stats: - image_intensity: - - max: 1042.7255859375 - mean: 505.29339599609375 - median: 486.6052551269531 - min: 69.5150375366211 - percentile: [207.15481567382812, 364.9539489746094, 669.0822143554688, 929.7636108398438] - percentile_00_5: 207.15481567382812 - percentile_10_0: 364.9539489746094 - percentile_90_0: 669.0822143554688 - percentile_99_5: 929.7636108398438 - stdev: 125.19490814208984 - label: - - image_intensity: - - max: 4535.85595703125 - mean: 669.8048706054688 - median: 677.7716064453125 - min: 0.0 - percentile: [43.4468994140625, 312.8176574707031, 1016.6574096679688, 1207.82373046875] - percentile_00_5: 43.4468994140625 - percentile_10_0: 312.8176574707031 - percentile_90_0: 1016.6574096679688 - percentile_99_5: 1207.82373046875 - stdev: 278.0729064941406 - ncomponents: 1 - pixel_percentage: 0.9425920248031616 - shape: - - [33, 51, 34] - - image_intensity: - - max: 1042.7255859375 - mean: 520.1716918945312 - median: 503.9840087890625 - min: 139.0300750732422 - percentile: [278.0601501464844, 382.33270263671875, 677.7716064453125, 901.3057250976562] - percentile_00_5: 278.0601501464844 - percentile_10_0: 382.33270263671875 - percentile_90_0: 677.7716064453125 - percentile_99_5: 901.3057250976562 - stdev: 119.84407806396484 - ncomponents: 1 - pixel_percentage: 0.02893991768360138 - shape: - - [21, 21, 14] - - image_intensity: - - max: 981.89990234375 - mean: 490.1684875488281 - median: 469.22650146484375 - min: 69.5150375366211 - percentile: [176.22061157226562, 347.5751953125, 660.3928833007812, 929.7636108398438] - percentile_00_5: 176.22061157226562 - percentile_10_0: 347.5751953125 - percentile_90_0: 660.3928833007812 - percentile_99_5: 929.7636108398438 - stdev: 128.65794372558594 - ncomponents: 1 - pixel_percentage: 0.028468072414398193 - shape: - - [22, 21, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_217.nii.gz - image_foreground_stats: - intensity: - - max: 465995.09375 - mean: 246398.359375 - median: 239381.046875 - min: 63834.9453125 - percentile: [129281.7265625, 188313.09375, 309599.5, 427694.125] - percentile_00_5: 129281.7265625 - percentile_10_0: 188313.09375 - percentile_90_0: 309599.5 - percentile_99_5: 427694.125 - stdev: 51675.26171875 - image_stats: - channels: 1 - cropped_shape: - - [38, 53, 27] - intensity: - - max: 564939.25 - mean: 279381.53125 - median: 277682.03125 - min: 0.0 - percentile: [9575.2421875, 67026.6953125, 456419.875, 510679.5625] - percentile_00_5: 9575.2421875 - percentile_10_0: 67026.6953125 - percentile_90_0: 456419.875 - percentile_99_5: 510679.5625 - stdev: 136744.515625 - shape: - - [38, 53, 27] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_217.nii.gz - label_stats: - image_intensity: - - max: 465995.09375 - mean: 246398.359375 - median: 239381.046875 - min: 63834.9453125 - percentile: [129281.7265625, 188313.09375, 309599.5, 427694.125] - percentile_00_5: 129281.7265625 - percentile_10_0: 188313.09375 - percentile_90_0: 309599.5 - percentile_99_5: 427694.125 - stdev: 51675.26171875 - label: - - image_intensity: - - max: 564939.25 - mean: 281376.90625 - median: 287257.25 - min: 0.0 - percentile: [6383.49462890625, 63834.9453125, 459611.625, 513871.3125] - percentile_00_5: 6383.49462890625 - percentile_10_0: 63834.9453125 - percentile_90_0: 459611.625 - percentile_99_5: 513871.3125 - stdev: 139996.21875 - ncomponents: 1 - pixel_percentage: 0.9429548978805542 - shape: - - [38, 53, 27] - - image_intensity: - - max: 456419.875 - mean: 246647.796875 - median: 239381.046875 - min: 63834.9453125 - percentile: [121286.3984375, 188313.09375, 312791.25, 427391.0] - percentile_00_5: 121286.3984375 - percentile_10_0: 188313.09375 - percentile_90_0: 312791.25 - percentile_99_5: 427391.0 - stdev: 53500.4296875 - ncomponents: 1 - pixel_percentage: 0.03714737668633461 - shape: - - [22, 18, 13] - - image_intensity: - - max: 465995.09375 - mean: 245932.6875 - median: 242572.796875 - min: 114902.90625 - percentile: [144921.28125, 191504.84375, 303216.0, 426401.375] - percentile_00_5: 144921.28125 - percentile_10_0: 191504.84375 - percentile_90_0: 303216.0 - percentile_99_5: 426401.375 - stdev: 48079.31640625 - ncomponents: 1 - pixel_percentage: 0.01989775337278843 - shape: - - [20, 22, 12] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_374.nii.gz - image_foreground_stats: - intensity: - - max: 696.3159790039062 - mean: 326.00213623046875 - median: 315.921142578125 - min: 32.23685073852539 - percentile: [122.50003051757812, 225.657958984375, 451.31591796875, 612.5001831054688] - percentile_00_5: 122.50003051757812 - percentile_10_0: 225.657958984375 - percentile_90_0: 451.31591796875 - percentile_99_5: 612.5001831054688 - stdev: 92.67897033691406 - image_stats: - channels: 1 - cropped_shape: - - [38, 48, 39] - intensity: - - max: 2037.368896484375 - mean: 436.7266845703125 - median: 451.31591796875 - min: 0.0 - percentile: [25.789480209350586, 148.2895050048828, 683.4212036132812, 793.0264892578125] - percentile_00_5: 25.789480209350586 - percentile_10_0: 148.2895050048828 - percentile_90_0: 683.4212036132812 - percentile_99_5: 793.0264892578125 - stdev: 202.2622528076172 - shape: - - [38, 48, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_374.nii.gz - label_stats: - image_intensity: - - max: 696.3159790039062 - mean: 326.00213623046875 - median: 315.921142578125 - min: 32.23685073852539 - percentile: [122.50003051757812, 225.657958984375, 451.31591796875, 612.5001831054688] - percentile_00_5: 122.50003051757812 - percentile_10_0: 225.657958984375 - percentile_90_0: 451.31591796875 - percentile_99_5: 612.5001831054688 - stdev: 92.67897033691406 - label: - - image_intensity: - - max: 2037.368896484375 - mean: 443.1091613769531 - median: 464.21063232421875 - min: 0.0 - percentile: [19.34210968017578, 141.84214782714844, 689.8685913085938, 793.0264892578125] - percentile_00_5: 19.34210968017578 - percentile_10_0: 141.84214782714844 - percentile_90_0: 689.8685913085938 - percentile_99_5: 793.0264892578125 - stdev: 205.0015411376953 - ncomponents: 1 - pixel_percentage: 0.9454987645149231 - shape: - - [38, 48, 39] - - image_intensity: - - max: 696.3159790039062 - mean: 336.7422180175781 - median: 328.8158874511719 - min: 32.23685073852539 - percentile: [135.394775390625, 238.5526885986328, 450.0259704589844, 593.1580200195312] - percentile_00_5: 135.394775390625 - percentile_10_0: 238.5526885986328 - percentile_90_0: 450.0259704589844 - percentile_99_5: 593.1580200195312 - stdev: 84.88502502441406 - ncomponents: 1 - pixel_percentage: 0.029844241216778755 - shape: - - [26, 15, 15] - - image_intensity: - - max: 670.5264892578125 - mean: 313.0025329589844 - median: 296.5790100097656 - min: 51.57896041870117 - percentile: [109.60529327392578, 206.3158416748047, 451.31591796875, 631.84228515625] - percentile_00_5: 109.60529327392578 - percentile_10_0: 206.3158416748047 - percentile_90_0: 451.31591796875 - percentile_99_5: 631.84228515625 - stdev: 99.7790298461914 - ncomponents: 1 - pixel_percentage: 0.02465699426829815 - shape: - - [23, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_274.nii.gz - image_foreground_stats: - intensity: - - max: 646.8286743164062 - mean: 307.4990539550781 - median: 297.33251953125 - min: 26.08180046081543 - percentile: [116.42915344238281, 208.65440368652344, 417.3088073730469, 599.8814086914062] - percentile_00_5: 116.42915344238281 - percentile_10_0: 208.65440368652344 - percentile_90_0: 417.3088073730469 - percentile_99_5: 599.8814086914062 - stdev: 85.1393051147461 - image_stats: - channels: 1 - cropped_shape: - - [35, 40, 40] - intensity: - - max: 2733.372802734375 - mean: 434.62469482421875 - median: 459.0396728515625 - min: 0.0 - percentile: [20.865440368652344, 172.13987731933594, 652.0449829101562, 761.5885620117188] - percentile_00_5: 20.865440368652344 - percentile_10_0: 172.13987731933594 - percentile_90_0: 652.0449829101562 - percentile_99_5: 761.5885620117188 - stdev: 190.7883758544922 - shape: - - [35, 40, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_274.nii.gz - label_stats: - image_intensity: - - max: 646.8286743164062 - mean: 307.4990539550781 - median: 297.33251953125 - min: 26.08180046081543 - percentile: [116.42915344238281, 208.65440368652344, 417.3088073730469, 599.8814086914062] - percentile_00_5: 116.42915344238281 - percentile_10_0: 208.65440368652344 - percentile_90_0: 417.3088073730469 - percentile_99_5: 599.8814086914062 - stdev: 85.1393051147461 - label: - - image_intensity: - - max: 2733.372802734375 - mean: 440.97674560546875 - median: 474.68878173828125 - min: 0.0 - percentile: [20.865440368652344, 166.92352294921875, 652.0449829101562, 761.5885620117188] - percentile_00_5: 20.865440368652344 - percentile_10_0: 166.92352294921875 - percentile_90_0: 652.0449829101562 - percentile_99_5: 761.5885620117188 - stdev: 192.3771209716797 - ncomponents: 2 - pixel_percentage: 0.9524106979370117 - shape: - - [35, 40, 40] - - [1, 1, 1] - - image_intensity: - - max: 641.6123046875 - mean: 313.51336669921875 - median: 307.7652587890625 - min: 26.08180046081543 - percentile: [91.02548217773438, 219.08712768554688, 417.3088073730469, 602.7506713867188] - percentile_00_5: 91.02548217773438 - percentile_10_0: 219.08712768554688 - percentile_90_0: 417.3088073730469 - percentile_99_5: 602.7506713867188 - stdev: 82.62628936767578 - ncomponents: 1 - pixel_percentage: 0.026624999940395355 - shape: - - [20, 15, 17] - - image_intensity: - - max: 646.8286743164062 - mean: 299.8607177734375 - median: 281.6834411621094 - min: 125.19264221191406 - percentile: [149.86602783203125, 203.43804931640625, 417.3088073730469, 590.857177734375] - percentile_00_5: 149.86602783203125 - percentile_10_0: 203.43804931640625 - percentile_90_0: 417.3088073730469 - percentile_99_5: 590.857177734375 - stdev: 87.63478088378906 - ncomponents: 1 - pixel_percentage: 0.020964285358786583 - shape: - - [21, 15, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_309.nii.gz - image_foreground_stats: - intensity: - - max: 1125.3958740234375 - mean: 486.0055847167969 - median: 455.12335205078125 - min: 16.54994010925293 - percentile: [157.67955017089844, 330.9988098144531, 695.0974731445312, 984.721435546875] - percentile_00_5: 157.67955017089844 - percentile_10_0: 330.9988098144531 - percentile_90_0: 695.0974731445312 - percentile_99_5: 984.721435546875 - stdev: 150.90423583984375 - image_stats: - channels: 1 - cropped_shape: - - [34, 52, 38] - intensity: - - max: 4261.609375 - mean: 643.459716796875 - median: 645.4476928710938 - min: 0.0 - percentile: [41.37485122680664, 256.5240783691406, 1001.2713623046875, 1232.9705810546875] - percentile_00_5: 41.37485122680664 - percentile_10_0: 256.5240783691406 - percentile_90_0: 1001.2713623046875 - percentile_99_5: 1232.9705810546875 - stdev: 300.220458984375 - shape: - - [34, 52, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_309.nii.gz - label_stats: - image_intensity: - - max: 1125.3958740234375 - mean: 486.0055847167969 - median: 455.12335205078125 - min: 16.54994010925293 - percentile: [157.67955017089844, 330.9988098144531, 695.0974731445312, 984.721435546875] - percentile_00_5: 157.67955017089844 - percentile_10_0: 330.9988098144531 - percentile_90_0: 695.0974731445312 - percentile_99_5: 984.721435546875 - stdev: 150.90423583984375 - label: - - image_intensity: - - max: 4261.609375 - mean: 652.4059448242188 - median: 670.2725830078125 - min: 0.0 - percentile: [41.37485122680664, 248.2490997314453, 1009.5463256835938, 1266.0704345703125] - percentile_00_5: 41.37485122680664 - percentile_10_0: 248.2490997314453 - percentile_90_0: 1009.5463256835938 - percentile_99_5: 1266.0704345703125 - stdev: 304.0903015136719 - ncomponents: 1 - pixel_percentage: 0.9462372064590454 - shape: - - [34, 52, 38] - - image_intensity: - - max: 1125.3958740234375 - mean: 482.13543701171875 - median: 455.12335205078125 - min: 57.92478942871094 - percentile: [148.16334533691406, 330.9988098144531, 670.2725830078125, 977.2323608398438] - percentile_00_5: 148.16334533691406 - percentile_10_0: 330.9988098144531 - percentile_90_0: 670.2725830078125 - percentile_99_5: 977.2323608398438 - stdev: 145.78981018066406 - ncomponents: 1 - pixel_percentage: 0.026524173095822334 - shape: - - [19, 17, 16] - - image_intensity: - - max: 1059.1961669921875 - mean: 489.77423095703125 - median: 455.12335205078125 - min: 16.54994010925293 - percentile: [173.7743682861328, 330.9988098144531, 719.9224243164062, 991.79638671875] - percentile_00_5: 173.7743682861328 - percentile_10_0: 330.9988098144531 - percentile_90_0: 719.9224243164062 - percentile_99_5: 991.79638671875 - stdev: 155.63070678710938 - ncomponents: 1 - pixel_percentage: 0.027238627895712852 - shape: - - [22, 24, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_252.nii.gz - image_foreground_stats: - intensity: - - max: 107.0 - mean: 47.76335906982422 - median: 46.0 - min: 13.0 - percentile: [19.0, 32.0, 65.0, 93.0] - percentile_00_5: 19.0 - percentile_10_0: 32.0 - percentile_90_0: 65.0 - percentile_99_5: 93.0 - stdev: 13.232316017150879 - image_stats: - channels: 1 - cropped_shape: - - [37, 55, 26] - intensity: - - max: 160.0 - mean: 62.34499740600586 - median: 62.0 - min: 1.0 - percentile: [6.0, 21.0, 101.0, 118.0] - percentile_00_5: 6.0 - percentile_10_0: 21.0 - percentile_90_0: 101.0 - percentile_99_5: 118.0 - stdev: 30.172101974487305 - shape: - - [37, 55, 26] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_252.nii.gz - label_stats: - image_intensity: - - max: 107.0 - mean: 47.76335906982422 - median: 46.0 - min: 13.0 - percentile: [19.0, 32.0, 65.0, 93.0] - percentile_00_5: 19.0 - percentile_10_0: 32.0 - percentile_90_0: 65.0 - percentile_99_5: 93.0 - stdev: 13.232316017150879 - label: - - image_intensity: - - max: 160.0 - mean: 63.40163803100586 - median: 65.0 - min: 1.0 - percentile: [6.0, 21.0, 102.0, 118.0] - percentile_00_5: 6.0 - percentile_10_0: 21.0 - percentile_90_0: 102.0 - percentile_99_5: 118.0 - stdev: 30.775177001953125 - ncomponents: 1 - pixel_percentage: 0.9324324131011963 - shape: - - [37, 55, 26] - - image_intensity: - - max: 93.0 - mean: 46.99223327636719 - median: 46.0 - min: 14.0 - percentile: [19.0, 32.0, 65.0, 82.0] - percentile_00_5: 19.0 - percentile_10_0: 32.0 - percentile_90_0: 65.0 - percentile_99_5: 82.0 - stdev: 12.477899551391602 - ncomponents: 1 - pixel_percentage: 0.03893403708934784 - shape: - - [21, 19, 12] - - image_intensity: - - max: 107.0 - mean: 48.81188201904297 - median: 47.0 - min: 13.0 - percentile: [20.139999389648438, 32.0, 66.0, 99.0] - percentile_00_5: 20.139999389648438 - percentile_10_0: 32.0 - percentile_90_0: 66.0 - percentile_99_5: 99.0 - stdev: 14.126569747924805 - ncomponents: 1 - pixel_percentage: 0.02863352932035923 - shape: - - [18, 24, 12] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_352.nii.gz - image_foreground_stats: - intensity: - - max: 84.0 - mean: 41.60152053833008 - median: 39.0 - min: 15.0 - percentile: [20.0, 30.0, 57.0, 75.0] - percentile_00_5: 20.0 - percentile_10_0: 30.0 - percentile_90_0: 57.0 - percentile_99_5: 75.0 - stdev: 10.502641677856445 - image_stats: - channels: 1 - cropped_shape: - - [38, 51, 35] - intensity: - - max: 254.0 - mean: 53.059661865234375 - median: 52.0 - min: 1.0 - percentile: [6.0, 21.0, 84.0, 97.0] - percentile_00_5: 6.0 - percentile_10_0: 21.0 - percentile_90_0: 84.0 - percentile_99_5: 97.0 - stdev: 24.728330612182617 - shape: - - [38, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_352.nii.gz - label_stats: - image_intensity: - - max: 84.0 - mean: 41.60152053833008 - median: 39.0 - min: 15.0 - percentile: [20.0, 30.0, 57.0, 75.0] - percentile_00_5: 20.0 - percentile_10_0: 30.0 - percentile_90_0: 57.0 - percentile_99_5: 75.0 - stdev: 10.502641677856445 - label: - - image_intensity: - - max: 254.0 - mean: 53.716773986816406 - median: 54.0 - min: 1.0 - percentile: [6.0, 20.0, 85.0, 97.0] - percentile_00_5: 6.0 - percentile_10_0: 20.0 - percentile_90_0: 85.0 - percentile_99_5: 97.0 - stdev: 25.1450138092041 - ncomponents: 1 - pixel_percentage: 0.9457614421844482 - shape: - - [38, 51, 35] - - image_intensity: - - max: 80.0 - mean: 41.380470275878906 - median: 40.0 - min: 15.0 - percentile: [19.0, 30.0, 55.0, 70.0] - percentile_00_5: 19.0 - percentile_10_0: 30.0 - percentile_90_0: 55.0 - percentile_99_5: 70.0 - stdev: 9.717562675476074 - ncomponents: 1 - pixel_percentage: 0.028984224423766136 - shape: - - [21, 16, 14] - - image_intensity: - - max: 84.0 - mean: 41.855224609375 - median: 39.0 - min: 19.0 - percentile: [26.0, 30.0, 60.0, 78.0] - percentile_00_5: 26.0 - percentile_10_0: 30.0 - percentile_90_0: 60.0 - percentile_99_5: 78.0 - stdev: 11.331549644470215 - ncomponents: 1 - pixel_percentage: 0.02525431290268898 - shape: - - [21, 24, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_098.nii.gz - image_foreground_stats: - intensity: - - max: 738.5250854492188 - mean: 353.513916015625 - median: 337.8359375 - min: 62.85319900512695 - percentile: [117.84974670410156, 243.55615234375, 479.2556457519531, 680.0317993164062] - percentile_00_5: 117.84974670410156 - percentile_10_0: 243.55615234375 - percentile_90_0: 479.2556457519531 - percentile_99_5: 680.0317993164062 - stdev: 98.90276336669922 - image_stats: - channels: 1 - cropped_shape: - - [37, 48, 34] - intensity: - - max: 2089.868896484375 - mean: 462.06658935546875 - median: 463.5423278808594 - min: 0.0 - percentile: [15.713299751281738, 125.7063980102539, 754.2384033203125, 864.2315063476562] - percentile_00_5: 15.713299751281738 - percentile_10_0: 125.7063980102539 - percentile_90_0: 754.2384033203125 - percentile_99_5: 864.2315063476562 - stdev: 230.6584930419922 - shape: - - [37, 48, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_098.nii.gz - label_stats: - image_intensity: - - max: 738.5250854492188 - mean: 353.513916015625 - median: 337.8359375 - min: 62.85319900512695 - percentile: [117.84974670410156, 243.55615234375, 479.2556457519531, 680.0317993164062] - percentile_00_5: 117.84974670410156 - percentile_10_0: 243.55615234375 - percentile_90_0: 479.2556457519531 - percentile_99_5: 680.0317993164062 - stdev: 98.90276336669922 - label: - - image_intensity: - - max: 2089.868896484375 - mean: 467.52313232421875 - median: 479.2556457519531 - min: 0.0 - percentile: [15.713299751281738, 125.7063980102539, 754.2384033203125, 864.2315063476562] - percentile_00_5: 15.713299751281738 - percentile_10_0: 125.7063980102539 - percentile_90_0: 754.2384033203125 - percentile_99_5: 864.2315063476562 - stdev: 234.016845703125 - ncomponents: 1 - pixel_percentage: 0.9521396160125732 - shape: - - [37, 48, 34] - - image_intensity: - - max: 730.66845703125 - mean: 353.3781433105469 - median: 345.6925964355469 - min: 62.85319900512695 - percentile: [114.47138214111328, 251.4127960205078, 463.5423278808594, 631.9107666015625] - percentile_00_5: 114.47138214111328 - percentile_10_0: 251.4127960205078 - percentile_90_0: 463.5423278808594 - percentile_99_5: 631.9107666015625 - stdev: 90.6651382446289 - ncomponents: 1 - pixel_percentage: 0.025089427828788757 - shape: - - [21, 16, 15] - - image_intensity: - - max: 738.5250854492188 - mean: 353.6635437011719 - median: 329.97930908203125 - min: 86.42314910888672 - percentile: [149.27635192871094, 235.69949340820312, 510.6822509765625, 693.427978515625] - percentile_00_5: 149.27635192871094 - percentile_10_0: 235.69949340820312 - percentile_90_0: 510.6822509765625 - percentile_99_5: 693.427978515625 - stdev: 107.24877166748047 - ncomponents: 1 - pixel_percentage: 0.02277093194425106 - shape: - - [18, 20, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_231.nii.gz - image_foreground_stats: - intensity: - - max: 752.2297973632812 - mean: 348.68890380859375 - median: 337.20648193359375 - min: 0.0 - percentile: [110.2405776977539, 252.90484619140625, 460.4165344238281, 641.9892578125] - percentile_00_5: 110.2405776977539 - percentile_10_0: 252.90484619140625 - percentile_90_0: 460.4165344238281 - percentile_99_5: 641.9892578125 - stdev: 91.572998046875 - image_stats: - channels: 1 - cropped_shape: - - [33, 47, 42] - intensity: - - max: 1193.192138671875 - mean: 465.72711181640625 - median: 479.8707580566406 - min: 0.0 - percentile: [19.454219818115234, 149.14901733398438, 732.7755737304688, 830.0466918945312] - percentile_00_5: 19.454219818115234 - percentile_10_0: 149.14901733398438 - percentile_90_0: 732.7755737304688 - percentile_99_5: 830.0466918945312 - stdev: 217.02777099609375 - shape: - - [33, 47, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_231.nii.gz - label_stats: - image_intensity: - - max: 752.2297973632812 - mean: 348.68890380859375 - median: 337.20648193359375 - min: 0.0 - percentile: [110.2405776977539, 252.90484619140625, 460.4165344238281, 641.9892578125] - percentile_00_5: 110.2405776977539 - percentile_10_0: 252.90484619140625 - percentile_90_0: 460.4165344238281 - percentile_99_5: 641.9892578125 - stdev: 91.572998046875 - label: - - image_intensity: - - max: 1193.192138671875 - mean: 470.684326171875 - median: 492.8402099609375 - min: 0.0 - percentile: [19.454219818115234, 142.66427612304688, 739.2603149414062, 830.0466918945312] - percentile_00_5: 19.454219818115234 - percentile_10_0: 142.66427612304688 - percentile_90_0: 739.2603149414062 - percentile_99_5: 830.0466918945312 - stdev: 219.3994140625 - ncomponents: 1 - pixel_percentage: 0.9593656659126282 - shape: - - [33, 47, 42] - - image_intensity: - - max: 752.2297973632812 - mean: 354.6971130371094 - median: 337.20648193359375 - min: 51.8779182434082 - percentile: [142.66427612304688, 259.38958740234375, 466.9012756347656, 641.9892578125] - percentile_00_5: 142.66427612304688 - percentile_10_0: 259.38958740234375 - percentile_90_0: 466.9012756347656 - percentile_99_5: 641.9892578125 - stdev: 88.55470275878906 - ncomponents: 1 - pixel_percentage: 0.018098922446370125 - shape: - - [19, 14, 16] - - image_intensity: - - max: 700.3518676757812 - mean: 343.8634948730469 - median: 330.72174072265625 - min: 0.0 - percentile: [84.33404541015625, 239.9353790283203, 460.4165344238281, 641.9892578125] - percentile_00_5: 84.33404541015625 - percentile_10_0: 239.9353790283203 - percentile_90_0: 460.4165344238281 - percentile_99_5: 641.9892578125 - stdev: 93.64820098876953 - ncomponents: 1 - pixel_percentage: 0.022535383701324463 - shape: - - [18, 23, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_331.nii.gz - image_foreground_stats: - intensity: - - max: 676.6813354492188 - mean: 335.8732604980469 - median: 320.8403015136719 - min: 52.501136779785156 - percentile: [151.66995239257812, 245.00531005859375, 447.42608642578125, 612.5133056640625] - percentile_00_5: 151.66995239257812 - percentile_10_0: 245.00531005859375 - percentile_90_0: 447.42608642578125 - percentile_99_5: 612.5133056640625 - stdev: 83.06089782714844 - image_stats: - channels: 1 - cropped_shape: - - [35, 52, 33] - intensity: - - max: 1067.523193359375 - mean: 398.7671813964844 - median: 396.6752624511719 - min: 0.0 - percentile: [17.50037956237793, 122.50265502929688, 635.8471069335938, 711.68212890625] - percentile_00_5: 17.50037956237793 - percentile_10_0: 122.50265502929688 - percentile_90_0: 635.8471069335938 - percentile_99_5: 711.68212890625 - stdev: 184.2305908203125 - shape: - - [35, 52, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_331.nii.gz - label_stats: - image_intensity: - - max: 676.6813354492188 - mean: 335.8732604980469 - median: 320.8403015136719 - min: 52.501136779785156 - percentile: [151.66995239257812, 245.00531005859375, 447.42608642578125, 612.5133056640625] - percentile_00_5: 151.66995239257812 - percentile_10_0: 245.00531005859375 - percentile_90_0: 447.42608642578125 - percentile_99_5: 612.5133056640625 - stdev: 83.06089782714844 - label: - - image_intensity: - - max: 1067.523193359375 - mean: 402.2997741699219 - median: 408.3421936035156 - min: 0.0 - percentile: [17.50037956237793, 116.66919708251953, 635.8471069335938, 717.5155639648438] - percentile_00_5: 17.50037956237793 - percentile_10_0: 116.66919708251953 - percentile_90_0: 635.8471069335938 - percentile_99_5: 717.5155639648438 - stdev: 187.68356323242188 - ncomponents: 1 - pixel_percentage: 0.9468198418617249 - shape: - - [35, 52, 33] - - image_intensity: - - max: 665.014404296875 - mean: 335.65753173828125 - median: 320.8403015136719 - min: 52.501136779785156 - percentile: [144.6697998046875, 245.00531005859375, 443.34295654296875, 606.6798095703125] - percentile_00_5: 144.6697998046875 - percentile_10_0: 245.00531005859375 - percentile_90_0: 443.34295654296875 - percentile_99_5: 606.6798095703125 - stdev: 79.65687561035156 - ncomponents: 1 - pixel_percentage: 0.025990676134824753 - shape: - - [21, 16, 12] - - image_intensity: - - max: 676.6813354492188 - mean: 336.0794372558594 - median: 320.8403015136719 - min: 105.00227355957031 - percentile: [157.50341796875, 245.00531005859375, 455.0098571777344, 612.5133056640625] - percentile_00_5: 157.50341796875 - percentile_10_0: 245.00531005859375 - percentile_90_0: 455.0098571777344 - percentile_99_5: 612.5133056640625 - stdev: 86.18872833251953 - ncomponents: 1 - pixel_percentage: 0.027189476415514946 - shape: - - [22, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_340.nii.gz - image_foreground_stats: - intensity: - - max: 670.5330200195312 - mean: 321.3487243652344 - median: 306.7331848144531 - min: 64.19996643066406 - percentile: [135.53326416015625, 228.2665557861328, 427.9997863769531, 599.19970703125] - percentile_00_5: 135.53326416015625 - percentile_10_0: 228.2665557861328 - percentile_90_0: 427.9997863769531 - percentile_99_5: 599.19970703125 - stdev: 83.88966369628906 - image_stats: - channels: 1 - cropped_shape: - - [35, 46, 38] - intensity: - - max: 884.5328979492188 - mean: 429.0677185058594 - median: 442.2664489746094 - min: 0.0 - percentile: [21.39999008178711, 164.06658935546875, 663.399658203125, 763.2662963867188] - percentile_00_5: 21.39999008178711 - percentile_10_0: 164.06658935546875 - percentile_90_0: 663.399658203125 - percentile_99_5: 763.2662963867188 - stdev: 189.7574920654297 - shape: - - [35, 46, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_340.nii.gz - label_stats: - image_intensity: - - max: 670.5330200195312 - mean: 321.3487243652344 - median: 306.7331848144531 - min: 64.19996643066406 - percentile: [135.53326416015625, 228.2665557861328, 427.9997863769531, 599.19970703125] - percentile_00_5: 135.53326416015625 - percentile_10_0: 228.2665557861328 - percentile_90_0: 427.9997863769531 - percentile_99_5: 599.19970703125 - stdev: 83.88966369628906 - label: - - image_intensity: - - max: 884.5328979492188 - mean: 435.032470703125 - median: 456.5331115722656 - min: 0.0 - percentile: [21.39999008178711, 164.06658935546875, 663.399658203125, 763.2662963867188] - percentile_00_5: 21.39999008178711 - percentile_10_0: 164.06658935546875 - percentile_90_0: 663.399658203125 - percentile_99_5: 763.2662963867188 - stdev: 192.1822052001953 - ncomponents: 1 - pixel_percentage: 0.9475318789482117 - shape: - - [35, 46, 38] - - image_intensity: - - max: 670.5330200195312 - mean: 318.6205749511719 - median: 313.86651611328125 - min: 64.19996643066406 - percentile: [128.39993286132812, 228.2665557861328, 413.7331237792969, 563.8543701171875] - percentile_00_5: 128.39993286132812 - percentile_10_0: 228.2665557861328 - percentile_90_0: 413.7331237792969 - percentile_99_5: 563.8543701171875 - stdev: 75.55298614501953 - ncomponents: 1 - pixel_percentage: 0.026021575555205345 - shape: - - [23, 16, 15] - - image_intensity: - - max: 656.266357421875 - mean: 324.0330505371094 - median: 306.7331848144531 - min: 85.59996032714844 - percentile: [143.27293395996094, 221.1332244873047, 449.3997802734375, 606.3330688476562] - percentile_00_5: 143.27293395996094 - percentile_10_0: 221.1332244873047 - percentile_90_0: 449.3997802734375 - percentile_99_5: 606.3330688476562 - stdev: 91.27326965332031 - ncomponents: 1 - pixel_percentage: 0.026446551084518433 - shape: - - [26, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_194.nii.gz - image_foreground_stats: - intensity: - - max: 394254.96875 - mean: 184770.828125 - median: 178646.78125 - min: 30801.169921875 - percentile: [84595.4140625, 132445.03125, 243329.234375, 354213.4375] - percentile_00_5: 84595.4140625 - percentile_10_0: 132445.03125 - percentile_90_0: 243329.234375 - percentile_99_5: 354213.4375 - stdev: 47476.72265625 - image_stats: - channels: 1 - cropped_shape: - - [35, 50, 30] - intensity: - - max: 560581.3125 - mean: 244185.5625 - median: 255649.703125 - min: 0.0 - percentile: [9240.3505859375, 73922.8046875, 388094.75, 443536.84375] - percentile_00_5: 9240.3505859375 - percentile_10_0: 73922.8046875 - percentile_90_0: 388094.75 - percentile_99_5: 443536.84375 - stdev: 114075.6171875 - shape: - - [35, 50, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_194.nii.gz - label_stats: - image_intensity: - - max: 394254.96875 - mean: 184770.828125 - median: 178646.78125 - min: 30801.169921875 - percentile: [84595.4140625, 132445.03125, 243329.234375, 354213.4375] - percentile_00_5: 84595.4140625 - percentile_10_0: 132445.03125 - percentile_90_0: 243329.234375 - percentile_99_5: 354213.4375 - stdev: 47476.72265625 - label: - - image_intensity: - - max: 560581.3125 - mean: 247651.8125 - median: 264890.0625 - min: 0.0 - percentile: [9240.3505859375, 70842.6875, 388094.75, 443536.84375] - percentile_00_5: 9240.3505859375 - percentile_10_0: 70842.6875 - percentile_90_0: 388094.75 - percentile_99_5: 443536.84375 - stdev: 115857.5703125 - ncomponents: 1 - pixel_percentage: 0.9448761940002441 - shape: - - [35, 50, 30] - - image_intensity: - - max: 354213.4375 - mean: 185250.578125 - median: 181726.90625 - min: 30801.169921875 - percentile: [85627.25, 132445.03125, 243329.234375, 324028.15625] - percentile_00_5: 85627.25 - percentile_10_0: 132445.03125 - percentile_90_0: 243329.234375 - percentile_99_5: 324028.15625 - stdev: 44473.81640625 - ncomponents: 1 - pixel_percentage: 0.02592380903661251 - shape: - - [21, 15, 11] - - image_intensity: - - max: 394254.96875 - mean: 184344.90625 - median: 178646.78125 - min: 40041.51953125 - percentile: [85196.03125, 129364.9140625, 248873.21875, 363515.09375] - percentile_00_5: 85196.03125 - percentile_10_0: 129364.9140625 - percentile_90_0: 248873.21875 - percentile_99_5: 363515.09375 - stdev: 49987.9140625 - ncomponents: 1 - pixel_percentage: 0.029200000688433647 - shape: - - [21, 24, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_223.nii.gz - image_foreground_stats: - intensity: - - max: 1238.11767578125 - mean: 540.9036254882812 - median: 519.8203735351562 - min: 56.707679748535156 - percentile: [212.70103454589844, 387.5024719238281, 718.2972412109375, 1096.348388671875] - percentile_00_5: 212.70103454589844 - percentile_10_0: 387.5024719238281 - percentile_90_0: 718.2972412109375 - percentile_99_5: 1096.348388671875 - stdev: 144.41680908203125 - image_stats: - channels: 1 - cropped_shape: - - [35, 52, 37] - intensity: - - max: 3553.68115234375 - mean: 707.46337890625 - median: 708.845947265625 - min: 0.0 - percentile: [37.805118560791016, 236.28199768066406, 1134.153564453125, 1294.8253173828125] - percentile_00_5: 37.805118560791016 - percentile_10_0: 236.28199768066406 - percentile_90_0: 1134.153564453125 - percentile_99_5: 1294.8253173828125 - stdev: 333.3096618652344 - shape: - - [35, 52, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_223.nii.gz - label_stats: - image_intensity: - - max: 1238.11767578125 - mean: 540.9036254882812 - median: 519.8203735351562 - min: 56.707679748535156 - percentile: [212.70103454589844, 387.5024719238281, 718.2972412109375, 1096.348388671875] - percentile_00_5: 212.70103454589844 - percentile_10_0: 387.5024719238281 - percentile_90_0: 718.2972412109375 - percentile_99_5: 1096.348388671875 - stdev: 144.41680908203125 - label: - - image_intensity: - - max: 3553.68115234375 - mean: 716.6004028320312 - median: 737.1998291015625 - min: 0.0 - percentile: [37.805118560791016, 226.83071899414062, 1134.153564453125, 1304.276611328125] - percentile_00_5: 37.805118560791016 - percentile_10_0: 226.83071899414062 - percentile_90_0: 1134.153564453125 - percentile_99_5: 1304.276611328125 - stdev: 338.29022216796875 - ncomponents: 1 - pixel_percentage: 0.9479952454566956 - shape: - - [35, 52, 37] - - image_intensity: - - max: 1058.5433349609375 - mean: 546.2923583984375 - median: 529.2716674804688 - min: 56.707679748535156 - percentile: [224.56240844726562, 396.9537353515625, 727.74853515625, 975.75] - percentile_00_5: 224.56240844726562 - percentile_10_0: 396.9537353515625 - percentile_90_0: 727.74853515625 - percentile_99_5: 975.75 - stdev: 131.5889129638672 - ncomponents: 1 - pixel_percentage: 0.023418473079800606 - shape: - - [22, 16, 15] - - image_intensity: - - max: 1238.11767578125 - mean: 536.4889526367188 - median: 510.3691101074219 - min: 75.61023712158203 - percentile: [213.78793334960938, 378.0511779785156, 718.2972412109375, 1137.7451171875] - percentile_00_5: 213.78793334960938 - percentile_10_0: 378.0511779785156 - percentile_90_0: 718.2972412109375 - percentile_99_5: 1137.7451171875 - stdev: 153.99171447753906 - ncomponents: 1 - pixel_percentage: 0.02858627773821354 - shape: - - [20, 27, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_094.nii.gz - image_foreground_stats: - intensity: - - max: 1012.5643310546875 - mean: 467.91717529296875 - median: 452.7726745605469 - min: 65.85784149169922 - percentile: [174.0293426513672, 329.2892150878906, 627.2955322265625, 864.3841552734375] - percentile_00_5: 174.0293426513672 - percentile_10_0: 329.2892150878906 - percentile_90_0: 627.2955322265625 - percentile_99_5: 864.3841552734375 - stdev: 123.80758666992188 - image_stats: - channels: 1 - cropped_shape: - - [38, 50, 38] - intensity: - - max: 3465.768798828125 - mean: 600.8885498046875 - median: 592.7205810546875 - min: 0.0 - percentile: [32.92892074584961, 205.80575561523438, 971.4031372070312, 1111.35107421875] - percentile_00_5: 32.92892074584961 - percentile_10_0: 205.80575561523438 - percentile_90_0: 971.4031372070312 - percentile_99_5: 1111.35107421875 - stdev: 286.33056640625 - shape: - - [38, 50, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_094.nii.gz - label_stats: - image_intensity: - - max: 1012.5643310546875 - mean: 467.91717529296875 - median: 452.7726745605469 - min: 65.85784149169922 - percentile: [174.0293426513672, 329.2892150878906, 627.2955322265625, 864.3841552734375] - percentile_00_5: 174.0293426513672 - percentile_10_0: 329.2892150878906 - percentile_90_0: 627.2955322265625 - percentile_99_5: 864.3841552734375 - stdev: 123.80758666992188 - label: - - image_intensity: - - max: 3465.768798828125 - mean: 608.747314453125 - median: 617.417236328125 - min: 0.0 - percentile: [32.92892074584961, 197.57351684570312, 979.6353759765625, 1111.35107421875] - percentile_00_5: 32.92892074584961 - percentile_10_0: 197.57351684570312 - percentile_90_0: 979.6353759765625 - percentile_99_5: 1111.35107421875 - stdev: 291.2352294921875 - ncomponents: 1 - pixel_percentage: 0.9441967010498047 - shape: - - [38, 50, 38] - - image_intensity: - - max: 839.6875 - mean: 471.2864990234375 - median: 461.0048828125 - min: 65.85784149169922 - percentile: [181.10906982421875, 337.52142333984375, 617.417236328125, 783.667724609375] - percentile_00_5: 181.10906982421875 - percentile_10_0: 337.52142333984375 - percentile_90_0: 617.417236328125 - percentile_99_5: 783.667724609375 - stdev: 112.70263671875 - ncomponents: 1 - pixel_percentage: 0.03271467983722687 - shape: - - [27, 17, 16] - - image_intensity: - - max: 1012.5643310546875 - mean: 463.1431579589844 - median: 436.3081970214844 - min: 107.01898956298828 - percentile: [172.8768310546875, 321.0569763183594, 658.5784301757812, 930.2420043945312] - percentile_00_5: 172.8768310546875 - percentile_10_0: 321.0569763183594 - percentile_90_0: 658.5784301757812 - percentile_99_5: 930.2420043945312 - stdev: 137.87994384765625 - ncomponents: 1 - pixel_percentage: 0.023088643327355385 - shape: - - [19, 22, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_376.nii.gz - image_foreground_stats: - intensity: - - max: 967.9932250976562 - mean: 400.4457092285156 - median: 384.4512023925781 - min: 13.730400085449219 - percentile: [116.02188110351562, 267.7427978515625, 549.2160034179688, 796.3632202148438] - percentile_00_5: 116.02188110351562 - percentile_10_0: 267.7427978515625 - percentile_90_0: 549.2160034179688 - percentile_99_5: 796.3632202148438 - stdev: 117.59393310546875 - image_stats: - channels: 1 - cropped_shape: - - [35, 55, 37] - intensity: - - max: 1482.8831787109375 - mean: 478.0411376953125 - median: 473.69879150390625 - min: 0.0 - percentile: [20.595600128173828, 151.03439331054688, 768.9024047851562, 885.6107788085938] - percentile_00_5: 20.595600128173828 - percentile_10_0: 151.03439331054688 - percentile_90_0: 768.9024047851562 - percentile_99_5: 885.6107788085938 - stdev: 227.5447540283203 - shape: - - [35, 55, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_376.nii.gz - label_stats: - image_intensity: - - max: 967.9932250976562 - mean: 400.4457092285156 - median: 384.4512023925781 - min: 13.730400085449219 - percentile: [116.02188110351562, 267.7427978515625, 549.2160034179688, 796.3632202148438] - percentile_00_5: 116.02188110351562 - percentile_10_0: 267.7427978515625 - percentile_90_0: 549.2160034179688 - percentile_99_5: 796.3632202148438 - stdev: 117.59393310546875 - label: - - image_intensity: - - max: 1482.8831787109375 - mean: 482.1489562988281 - median: 487.42919921875 - min: 0.0 - percentile: [20.595600128173828, 144.16920471191406, 775.767578125, 885.6107788085938] - percentile_00_5: 20.595600128173828 - percentile_10_0: 144.16920471191406 - percentile_90_0: 775.767578125 - percentile_99_5: 885.6107788085938 - stdev: 231.19241333007812 - ncomponents: 1 - pixel_percentage: 0.9497227072715759 - shape: - - [35, 55, 37] - - image_intensity: - - max: 967.9932250976562 - mean: 411.26983642578125 - median: 405.04681396484375 - min: 34.32600021362305 - percentile: [126.04507446289062, 288.3384094238281, 542.350830078125, 741.4415893554688] - percentile_00_5: 126.04507446289062 - percentile_10_0: 288.3384094238281 - percentile_90_0: 542.350830078125 - percentile_99_5: 741.4415893554688 - stdev: 106.14445495605469 - ncomponents: 1 - pixel_percentage: 0.022815022617578506 - shape: - - [22, 18, 17] - - image_intensity: - - max: 933.667236328125 - mean: 391.4532775878906 - median: 370.7207946777344 - min: 13.730400085449219 - percentile: [101.4333267211914, 254.0124053955078, 556.0811767578125, 811.6381225585938] - percentile_00_5: 101.4333267211914 - percentile_10_0: 254.0124053955078 - percentile_90_0: 556.0811767578125 - percentile_99_5: 811.6381225585938 - stdev: 125.61180877685547 - ncomponents: 1 - pixel_percentage: 0.027462268248200417 - shape: - - [21, 30, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_276.nii.gz - image_foreground_stats: - intensity: - - max: 908.9783935546875 - mean: 393.3091735839844 - median: 378.7409973144531 - min: 96.40679931640625 - percentile: [165.268798828125, 275.447998046875, 530.2374267578125, 750.5958251953125] - percentile_00_5: 165.268798828125 - percentile_10_0: 275.447998046875 - percentile_90_0: 530.2374267578125 - percentile_99_5: 750.5958251953125 - stdev: 106.16319274902344 - image_stats: - channels: 1 - cropped_shape: - - [35, 50, 33] - intensity: - - max: 2740.70751953125 - mean: 552.4967041015625 - median: 557.7822265625 - min: 0.0 - percentile: [41.31719970703125, 227.24459838867188, 874.54736328125, 1019.1575927734375] - percentile_00_5: 41.31719970703125 - percentile_10_0: 227.24459838867188 - percentile_90_0: 874.54736328125 - percentile_99_5: 1019.1575927734375 - stdev: 252.1583251953125 - shape: - - [35, 50, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_276.nii.gz - label_stats: - image_intensity: - - max: 908.9783935546875 - mean: 393.3091735839844 - median: 378.7409973144531 - min: 96.40679931640625 - percentile: [165.268798828125, 275.447998046875, 530.2374267578125, 750.5958251953125] - percentile_00_5: 165.268798828125 - percentile_10_0: 275.447998046875 - percentile_90_0: 530.2374267578125 - percentile_99_5: 750.5958251953125 - stdev: 106.16319274902344 - label: - - image_intensity: - - max: 2740.70751953125 - mean: 563.2147216796875 - median: 578.4407958984375 - min: 0.0 - percentile: [38.0806770324707, 220.3583984375, 881.43359375, 1026.0438232421875] - percentile_00_5: 38.0806770324707 - percentile_10_0: 220.3583984375 - percentile_90_0: 881.43359375 - percentile_99_5: 1026.0438232421875 - stdev: 255.50927734375 - ncomponents: 1 - pixel_percentage: 0.9369177222251892 - shape: - - [35, 50, 33] - - image_intensity: - - max: 771.25439453125 - mean: 385.650634765625 - median: 378.7409973144531 - min: 96.40679931640625 - percentile: [155.28379821777344, 268.5617980957031, 509.57879638671875, 659.1813354492188] - percentile_00_5: 155.28379821777344 - percentile_10_0: 268.5617980957031 - percentile_90_0: 509.57879638671875 - percentile_99_5: 659.1813354492188 - stdev: 97.20600891113281 - ncomponents: 1 - pixel_percentage: 0.03560173138976097 - shape: - - [24, 18, 14] - - image_intensity: - - max: 908.9783935546875 - mean: 403.2309875488281 - median: 385.627197265625 - min: 123.95159912109375 - percentile: [178.5591583251953, 275.447998046875, 550.89599609375, 798.7991943359375] - percentile_00_5: 178.5591583251953 - percentile_10_0: 275.447998046875 - percentile_90_0: 550.89599609375 - percentile_99_5: 798.7991943359375 - stdev: 116.00061798095703 - ncomponents: 1 - pixel_percentage: 0.02748052030801773 - shape: - - [20, 20, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_368.nii.gz - image_foreground_stats: - intensity: - - max: 1059.968017578125 - mean: 461.6390075683594 - median: 432.1407775878906 - min: 65.22879791259766 - percentile: [179.3791961669922, 301.6831970214844, 660.4415893554688, 937.6639404296875] - percentile_00_5: 179.3791961669922 - percentile_10_0: 301.6831970214844 - percentile_90_0: 660.4415893554688 - percentile_99_5: 937.6639404296875 - stdev: 144.5629119873047 - image_stats: - channels: 1 - cropped_shape: - - [38, 55, 40] - intensity: - - max: 3351.12939453125 - mean: 587.9408569335938 - median: 603.3663940429688 - min: 0.0 - percentile: [32.61439895629883, 195.6864013671875, 937.6639404296875, 1076.275146484375] - percentile_00_5: 32.61439895629883 - percentile_10_0: 195.6864013671875 - percentile_90_0: 937.6639404296875 - percentile_99_5: 1076.275146484375 - stdev: 281.3240051269531 - shape: - - [38, 55, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_368.nii.gz - label_stats: - image_intensity: - - max: 1059.968017578125 - mean: 461.6390075683594 - median: 432.1407775878906 - min: 65.22879791259766 - percentile: [179.3791961669922, 301.6831970214844, 660.4415893554688, 937.6639404296875] - percentile_00_5: 179.3791961669922 - percentile_10_0: 301.6831970214844 - percentile_90_0: 660.4415893554688 - percentile_99_5: 937.6639404296875 - stdev: 144.5629119873047 - label: - - image_intensity: - - max: 3351.12939453125 - mean: 594.9593505859375 - median: 619.673583984375 - min: 0.0 - percentile: [32.61439895629883, 187.5327911376953, 937.6639404296875, 1076.275146484375] - percentile_00_5: 32.61439895629883 - percentile_10_0: 187.5327911376953 - percentile_90_0: 937.6639404296875 - percentile_99_5: 1076.275146484375 - stdev: 285.3841247558594 - ncomponents: 1 - pixel_percentage: 0.9473564624786377 - shape: - - [38, 55, 40] - - image_intensity: - - max: 1019.199951171875 - mean: 467.2676696777344 - median: 448.447998046875 - min: 89.6895980834961 - percentile: [195.6864013671875, 309.8367919921875, 652.2879638671875, 847.974365234375] - percentile_00_5: 195.6864013671875 - percentile_10_0: 309.8367919921875 - percentile_90_0: 652.2879638671875 - percentile_99_5: 847.974365234375 - stdev: 133.03890991210938 - ncomponents: 1 - pixel_percentage: 0.031016746535897255 - shape: - - [25, 20, 18] - - image_intensity: - - max: 1059.968017578125 - mean: 453.5664978027344 - median: 415.8335876464844 - min: 65.22879791259766 - percentile: [163.07199096679688, 293.52960205078125, 684.9024047851562, 978.4319458007812] - percentile_00_5: 163.07199096679688 - percentile_10_0: 293.52960205078125 - percentile_90_0: 684.9024047851562 - percentile_99_5: 978.4319458007812 - stdev: 159.29815673828125 - ncomponents: 1 - pixel_percentage: 0.021626794710755348 - shape: - - [23, 26, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_268.nii.gz - image_foreground_stats: - intensity: - - max: 611.9229736328125 - mean: 296.7102966308594 - median: 292.179443359375 - min: 33.07691955566406 - percentile: [110.25639343261719, 194.60263061523438, 407.94866943359375, 545.7691650390625] - percentile_00_5: 110.25639343261719 - percentile_10_0: 194.60263061523438 - percentile_90_0: 407.94866943359375 - percentile_99_5: 545.7691650390625 - stdev: 84.40548706054688 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 37] - intensity: - - max: 1797.17919921875 - mean: 384.5379333496094 - median: 396.92303466796875 - min: 0.0 - percentile: [22.051279067993164, 143.33331298828125, 589.8717041015625, 716.6665649414062] - percentile_00_5: 22.051279067993164 - percentile_10_0: 143.33331298828125 - percentile_90_0: 589.8717041015625 - percentile_99_5: 716.6665649414062 - stdev: 168.31422424316406 - shape: - - [34, 51, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_268.nii.gz - label_stats: - image_intensity: - - max: 611.9229736328125 - mean: 296.7102966308594 - median: 292.179443359375 - min: 33.07691955566406 - percentile: [110.25639343261719, 194.60263061523438, 407.94866943359375, 545.7691650390625] - percentile_00_5: 110.25639343261719 - percentile_10_0: 194.60263061523438 - percentile_90_0: 407.94866943359375 - percentile_99_5: 545.7691650390625 - stdev: 84.40548706054688 - label: - - image_intensity: - - max: 1797.17919921875 - mean: 388.9276123046875 - median: 407.94866943359375 - min: 0.0 - percentile: [22.051279067993164, 137.82049560546875, 589.8717041015625, 716.6665649414062] - percentile_00_5: 22.051279067993164 - percentile_10_0: 137.82049560546875 - percentile_90_0: 589.8717041015625 - percentile_99_5: 716.6665649414062 - stdev: 170.2490234375 - ncomponents: 1 - pixel_percentage: 0.9523987770080566 - shape: - - [34, 51, 37] - - image_intensity: - - max: 611.9229736328125 - mean: 309.2166442871094 - median: 308.7178955078125 - min: 33.07691955566406 - percentile: [116.76152801513672, 201.7692413330078, 413.46148681640625, 555.8021850585938] - percentile_00_5: 116.76152801513672 - percentile_10_0: 201.7692413330078 - percentile_90_0: 413.46148681640625 - percentile_99_5: 555.8021850585938 - stdev: 83.9128646850586 - ncomponents: 1 - pixel_percentage: 0.022397831082344055 - shape: - - [19, 17, 13] - - image_intensity: - - max: 606.41015625 - mean: 285.59613037109375 - median: 275.6409912109375 - min: 66.15383911132812 - percentile: [110.25639343261719, 190.74359130859375, 402.43585205078125, 534.302734375] - percentile_00_5: 110.25639343261719 - percentile_10_0: 190.74359130859375 - percentile_90_0: 402.43585205078125 - percentile_99_5: 534.302734375 - stdev: 83.27933502197266 - ncomponents: 1 - pixel_percentage: 0.02520340494811535 - shape: - - [20, 23, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_215.nii.gz - image_foreground_stats: - intensity: - - max: 345890.1875 - mean: 155089.703125 - median: 147789.453125 - min: 22011.193359375 - percentile: [75466.953125, 110055.96875, 204389.65625, 305012.25] - percentile_00_5: 75466.953125 - percentile_10_0: 110055.96875 - percentile_90_0: 204389.65625 - percentile_99_5: 305012.25 - stdev: 40747.1015625 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 33] - intensity: - - max: 437079.4375 - mean: 205012.046875 - median: 207534.109375 - min: 0.0 - percentile: [9433.369140625, 78611.40625, 317590.09375, 364756.9375] - percentile_00_5: 9433.369140625 - percentile_10_0: 78611.40625 - percentile_90_0: 317590.09375 - percentile_99_5: 364756.9375 - stdev: 91081.3828125 - shape: - - [35, 49, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_215.nii.gz - label_stats: - image_intensity: - - max: 345890.1875 - mean: 155089.703125 - median: 147789.453125 - min: 22011.193359375 - percentile: [75466.953125, 110055.96875, 204389.65625, 305012.25] - percentile_00_5: 75466.953125 - percentile_10_0: 110055.96875 - percentile_90_0: 204389.65625 - percentile_99_5: 305012.25 - stdev: 40747.1015625 - label: - - image_intensity: - - max: 437079.4375 - mean: 208136.0625 - median: 216967.484375 - min: 0.0 - percentile: [9433.369140625, 75466.953125, 320734.53125, 364756.9375] - percentile_00_5: 9433.369140625 - percentile_10_0: 75466.953125 - percentile_90_0: 320734.53125 - percentile_99_5: 364756.9375 - stdev: 92440.96875 - ncomponents: 1 - pixel_percentage: 0.9411078691482544 - shape: - - [35, 49, 33] - - image_intensity: - - max: 273567.6875 - mean: 153207.734375 - median: 150933.90625 - min: 22011.193359375 - percentile: [72306.7734375, 113200.4296875, 198100.75, 254700.953125] - percentile_00_5: 72306.7734375 - percentile_10_0: 113200.4296875 - percentile_90_0: 198100.75 - percentile_99_5: 254700.953125 - stdev: 34370.2109375 - ncomponents: 1 - pixel_percentage: 0.02827104926109314 - shape: - - [22, 16, 14] - - image_intensity: - - max: 345890.1875 - mean: 156827.25 - median: 147789.453125 - min: 59744.66796875 - percentile: [75466.953125, 106911.515625, 213823.03125, 315514.625] - percentile_00_5: 75466.953125 - percentile_10_0: 106911.515625 - percentile_90_0: 213823.03125 - percentile_99_5: 315514.625 - stdev: 45785.2578125 - ncomponents: 1 - pixel_percentage: 0.030621079728007317 - shape: - - [22, 24, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_264.nii.gz - image_foreground_stats: - intensity: - - max: 110.0 - mean: 51.39745330810547 - median: 50.0 - min: 21.0 - percentile: [28.0, 38.0, 66.0, 92.0] - percentile_00_5: 28.0 - percentile_10_0: 38.0 - percentile_90_0: 66.0 - percentile_99_5: 92.0 - stdev: 11.848954200744629 - image_stats: - channels: 1 - cropped_shape: - - [38, 51, 37] - intensity: - - max: 205.0 - mean: 70.98143768310547 - median: 76.0 - min: 3.0 - percentile: [9.0, 31.0, 105.0, 119.0] - percentile_00_5: 9.0 - percentile_10_0: 31.0 - percentile_90_0: 105.0 - percentile_99_5: 119.0 - stdev: 28.70201873779297 - shape: - - [38, 51, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_264.nii.gz - label_stats: - image_intensity: - - max: 110.0 - mean: 51.39745330810547 - median: 50.0 - min: 21.0 - percentile: [28.0, 38.0, 66.0, 92.0] - percentile_00_5: 28.0 - percentile_10_0: 38.0 - percentile_90_0: 66.0 - percentile_99_5: 92.0 - stdev: 11.848954200744629 - label: - - image_intensity: - - max: 205.0 - mean: 72.09014892578125 - median: 79.0 - min: 3.0 - percentile: [9.0, 31.0, 105.0, 120.0] - percentile_00_5: 9.0 - percentile_10_0: 31.0 - percentile_90_0: 105.0 - percentile_99_5: 120.0 - stdev: 28.975051879882812 - ncomponents: 1 - pixel_percentage: 0.9464201331138611 - shape: - - [38, 51, 37] - - image_intensity: - - max: 98.0 - mean: 50.49379348754883 - median: 50.0 - min: 21.0 - percentile: [28.0, 37.0, 64.0, 84.3349609375] - percentile_00_5: 28.0 - percentile_10_0: 37.0 - percentile_90_0: 64.0 - percentile_99_5: 84.3349609375 - stdev: 11.094625473022461 - ncomponents: 1 - pixel_percentage: 0.0269712433218956 - shape: - - [24, 15, 16] - - image_intensity: - - max: 110.0 - mean: 52.31341552734375 - median: 51.0 - min: 24.0 - percentile: [29.0, 38.0, 68.0, 96.0] - percentile_00_5: 29.0 - percentile_10_0: 38.0 - percentile_90_0: 68.0 - percentile_99_5: 96.0 - stdev: 12.500955581665039 - ncomponents: 1 - pixel_percentage: 0.026608651503920555 - shape: - - [18, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_219.nii.gz - image_foreground_stats: - intensity: - - max: 98.0 - mean: 49.57526397705078 - median: 46.0 - min: 21.0 - percentile: [31.0, 39.0, 65.0, 92.85498046875] - percentile_00_5: 31.0 - percentile_10_0: 39.0 - percentile_90_0: 65.0 - percentile_99_5: 92.85498046875 - stdev: 11.454773902893066 - image_stats: - channels: 1 - cropped_shape: - - [37, 45, 39] - intensity: - - max: 182.0 - mean: 66.21170043945312 - median: 67.0 - min: 1.0 - percentile: [8.0, 31.0, 101.0, 115.0] - percentile_00_5: 8.0 - percentile_10_0: 31.0 - percentile_90_0: 101.0 - percentile_99_5: 115.0 - stdev: 26.79743003845215 - shape: - - [37, 45, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_219.nii.gz - label_stats: - image_intensity: - - max: 98.0 - mean: 49.57526397705078 - median: 46.0 - min: 21.0 - percentile: [31.0, 39.0, 65.0, 92.85498046875] - percentile_00_5: 31.0 - percentile_10_0: 39.0 - percentile_90_0: 65.0 - percentile_99_5: 92.85498046875 - stdev: 11.454773902893066 - label: - - image_intensity: - - max: 182.0 - mean: 66.96979522705078 - median: 69.0 - min: 1.0 - percentile: [8.0, 30.0, 101.0, 115.0] - percentile_00_5: 8.0 - percentile_10_0: 30.0 - percentile_90_0: 101.0 - percentile_99_5: 115.0 - stdev: 27.049198150634766 - ncomponents: 1 - pixel_percentage: 0.956417977809906 - shape: - - [37, 45, 39] - - image_intensity: - - max: 84.0 - mean: 47.689857482910156 - median: 46.0 - min: 21.0 - percentile: [29.0, 38.0, 60.0, 76.3150634765625] - percentile_00_5: 29.0 - percentile_10_0: 38.0 - percentile_90_0: 60.0 - percentile_99_5: 76.3150634765625 - stdev: 8.968484878540039 - ncomponents: 1 - pixel_percentage: 0.02368522435426712 - shape: - - [20, 15, 14] - - image_intensity: - - max: 98.0 - mean: 51.81965637207031 - median: 47.0 - min: 29.0 - percentile: [32.0, 40.0, 73.0, 95.0] - percentile_00_5: 32.0 - percentile_10_0: 40.0 - percentile_90_0: 73.0 - percentile_99_5: 95.0 - stdev: 13.505158424377441 - ncomponents: 1 - pixel_percentage: 0.019896820187568665 - shape: - - [15, 20, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_319.nii.gz - image_foreground_stats: - intensity: - - max: 78.0 - mean: 42.637489318847656 - median: 41.0 - min: 19.0 - percentile: [24.0, 32.0, 55.89990234375, 70.0] - percentile_00_5: 24.0 - percentile_10_0: 32.0 - percentile_90_0: 55.89990234375 - percentile_99_5: 70.0 - stdev: 9.186833381652832 - image_stats: - channels: 1 - cropped_shape: - - [33, 48, 34] - intensity: - - max: 113.0 - mean: 50.328189849853516 - median: 51.0 - min: 1.0 - percentile: [5.0, 14.0, 81.0, 95.0] - percentile_00_5: 5.0 - percentile_10_0: 14.0 - percentile_90_0: 81.0 - percentile_99_5: 95.0 - stdev: 24.18866539001465 - shape: - - [33, 48, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_319.nii.gz - label_stats: - image_intensity: - - max: 78.0 - mean: 42.637489318847656 - median: 41.0 - min: 19.0 - percentile: [24.0, 32.0, 55.89990234375, 70.0] - percentile_00_5: 24.0 - percentile_10_0: 32.0 - percentile_90_0: 55.89990234375 - percentile_99_5: 70.0 - stdev: 9.186833381652832 - label: - - image_intensity: - - max: 113.0 - mean: 50.69034194946289 - median: 52.0 - min: 1.0 - percentile: [5.0, 13.0, 82.0, 95.0] - percentile_00_5: 5.0 - percentile_10_0: 13.0 - percentile_90_0: 82.0 - percentile_99_5: 95.0 - stdev: 24.612041473388672 - ncomponents: 1 - pixel_percentage: 0.955028235912323 - shape: - - [33, 48, 34] - - image_intensity: - - max: 73.0 - mean: 42.25724792480469 - median: 41.0 - min: 19.0 - percentile: [22.895000457763672, 32.0, 54.0, 70.0] - percentile_00_5: 22.895000457763672 - percentile_10_0: 32.0 - percentile_90_0: 54.0 - percentile_99_5: 70.0 - stdev: 8.868511199951172 - ncomponents: 1 - pixel_percentage: 0.025623885914683342 - shape: - - [18, 16, 14] - - image_intensity: - - max: 78.0 - mean: 43.141075134277344 - median: 41.0 - min: 23.0 - percentile: [26.0, 32.0, 58.0, 70.7950439453125] - percentile_00_5: 26.0 - percentile_10_0: 32.0 - percentile_90_0: 58.0 - percentile_99_5: 70.7950439453125 - stdev: 9.568936347961426 - ncomponents: 1 - pixel_percentage: 0.019347891211509705 - shape: - - [12, 21, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_207.nii.gz - image_foreground_stats: - intensity: - - max: 425752.40625 - mean: 197159.171875 - median: 188123.15625 - min: 46205.6875 - percentile: [108913.40625, 148518.28125, 257431.6875, 382847.125] - percentile_00_5: 108913.40625 - percentile_10_0: 148518.28125 - percentile_90_0: 257431.6875 - percentile_99_5: 382847.125 - stdev: 48214.890625 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 33] - intensity: - - max: 544567.0 - mean: 255721.328125 - median: 250830.875 - min: 0.0 - percentile: [13201.625, 125415.4375, 396048.75, 452155.65625] - percentile_00_5: 13201.625 - percentile_10_0: 125415.4375 - percentile_90_0: 396048.75 - percentile_99_5: 452155.65625 - stdev: 104910.265625 - shape: - - [35, 53, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_207.nii.gz - label_stats: - image_intensity: - - max: 425752.40625 - mean: 197159.171875 - median: 188123.15625 - min: 46205.6875 - percentile: [108913.40625, 148518.28125, 257431.6875, 382847.125] - percentile_00_5: 108913.40625 - percentile_10_0: 148518.28125 - percentile_90_0: 257431.6875 - percentile_99_5: 382847.125 - stdev: 48214.890625 - label: - - image_intensity: - - max: 544567.0 - mean: 259896.640625 - median: 264032.5 - min: 0.0 - percentile: [13201.625, 122115.03125, 399349.15625, 452155.65625] - percentile_00_5: 13201.625 - percentile_10_0: 122115.03125 - percentile_90_0: 399349.15625 - percentile_99_5: 452155.65625 - stdev: 106598.2265625 - ncomponents: 1 - pixel_percentage: 0.9334476590156555 - shape: - - [35, 53, 33] - - image_intensity: - - max: 392748.34375 - mean: 196079.34375 - median: 188123.15625 - min: 95711.78125 - percentile: [112213.8125, 148518.28125, 250830.875, 333572.28125] - percentile_00_5: 112213.8125 - percentile_10_0: 148518.28125 - percentile_90_0: 250830.875 - percentile_99_5: 333572.28125 - stdev: 41706.93359375 - ncomponents: 1 - pixel_percentage: 0.03245936334133148 - shape: - - [23, 17, 15] - - image_intensity: - - max: 425752.40625 - mean: 198187.265625 - median: 184822.75 - min: 46205.6875 - percentile: [103731.765625, 145217.875, 270633.3125, 391329.40625] - percentile_00_5: 103731.765625 - percentile_10_0: 145217.875 - percentile_90_0: 270633.3125 - percentile_99_5: 391329.40625 - stdev: 53662.61328125 - ncomponents: 1 - pixel_percentage: 0.03409295156598091 - shape: - - [22, 26, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_067.nii.gz - image_foreground_stats: - intensity: - - max: 887.994384765625 - mean: 422.3365478515625 - median: 403.6337890625 - min: 100.908447265625 - percentile: [195.426025390625, 309.45257568359375, 565.0873413085938, 793.4765014648438] - percentile_00_5: 195.426025390625 - percentile_10_0: 309.45257568359375 - percentile_90_0: 565.0873413085938 - percentile_99_5: 793.4765014648438 - stdev: 106.90087127685547 - image_stats: - channels: 1 - cropped_shape: - - [36, 42, 41] - intensity: - - max: 1695.261962890625 - mean: 557.185302734375 - median: 565.0873413085938 - min: 0.0 - percentile: [26.908920288085938, 168.18075561523438, 887.994384765625, 1076.3568115234375] - percentile_00_5: 26.908920288085938 - percentile_10_0: 168.18075561523438 - percentile_90_0: 887.994384765625 - percentile_99_5: 1076.3568115234375 - stdev: 263.3102111816406 - shape: - - [36, 42, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_067.nii.gz - label_stats: - image_intensity: - - max: 887.994384765625 - mean: 422.3365478515625 - median: 403.6337890625 - min: 100.908447265625 - percentile: [195.426025390625, 309.45257568359375, 565.0873413085938, 793.4765014648438] - percentile_00_5: 195.426025390625 - percentile_10_0: 309.45257568359375 - percentile_90_0: 565.0873413085938 - percentile_99_5: 793.4765014648438 - stdev: 106.90087127685547 - label: - - image_intensity: - - max: 1695.261962890625 - mean: 563.5903930664062 - median: 585.26904296875 - min: 0.0 - percentile: [26.908920288085938, 161.45352172851562, 894.7216186523438, 1076.3568115234375] - percentile_00_5: 26.908920288085938 - percentile_10_0: 161.45352172851562 - percentile_90_0: 894.7216186523438 - percentile_99_5: 1076.3568115234375 - stdev: 266.7918701171875 - ncomponents: 1 - pixel_percentage: 0.9546554684638977 - shape: - - [36, 42, 41] - - image_intensity: - - max: 867.8126831054688 - mean: 419.8172302246094 - median: 403.6337890625 - min: 100.908447265625 - percentile: [192.39878845214844, 309.45257568359375, 551.6328735351562, 735.9591064453125] - percentile_00_5: 192.39878845214844 - percentile_10_0: 309.45257568359375 - percentile_90_0: 551.6328735351562 - percentile_99_5: 735.9591064453125 - stdev: 98.96995544433594 - ncomponents: 1 - pixel_percentage: 0.024535423144698143 - shape: - - [21, 14, 16] - - image_intensity: - - max: 887.994384765625 - mean: 425.3069763183594 - median: 403.6337890625 - min: 127.81736755371094 - percentile: [204.81051635742188, 309.45257568359375, 598.7234497070312, 808.00830078125] - percentile_00_5: 204.81051635742188 - percentile_10_0: 309.45257568359375 - percentile_90_0: 598.7234497070312 - percentile_99_5: 808.00830078125 - stdev: 115.4842300415039 - ncomponents: 1 - pixel_percentage: 0.02080913633108139 - shape: - - [17, 16, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_004.nii.gz - image_foreground_stats: - intensity: - - max: 792.5430297851562 - mean: 331.641357421875 - median: 315.8254089355469 - min: 53.63072967529297 - percentile: [137.05630493164062, 220.4818878173828, 464.7996520996094, 661.4456787109375] - percentile_00_5: 137.05630493164062 - percentile_10_0: 220.4818878173828 - percentile_90_0: 464.7996520996094 - percentile_99_5: 661.4456787109375 - stdev: 100.61515045166016 - image_stats: - channels: 1 - cropped_shape: - - [36, 52, 38] - intensity: - - max: 2252.49072265625 - mean: 453.8284912109375 - median: 458.8406982421875 - min: 0.0 - percentile: [23.835880279541016, 190.68704223632812, 697.1995239257812, 804.4609375] - percentile_00_5: 23.835880279541016 - percentile_10_0: 190.68704223632812 - percentile_90_0: 697.1995239257812 - percentile_99_5: 804.4609375 - stdev: 199.3611297607422 - shape: - - [36, 52, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_004.nii.gz - label_stats: - image_intensity: - - max: 792.5430297851562 - mean: 331.641357421875 - median: 315.8254089355469 - min: 53.63072967529297 - percentile: [137.05630493164062, 220.4818878173828, 464.7996520996094, 661.4456787109375] - percentile_00_5: 137.05630493164062 - percentile_10_0: 220.4818878173828 - percentile_90_0: 464.7996520996094 - percentile_99_5: 661.4456787109375 - stdev: 100.61515045166016 - label: - - image_intensity: - - max: 2252.49072265625 - mean: 460.5286865234375 - median: 476.71759033203125 - min: 0.0 - percentile: [23.835880279541016, 184.7280731201172, 703.158447265625, 810.419921875] - percentile_00_5: 23.835880279541016 - percentile_10_0: 184.7280731201172 - percentile_90_0: 703.158447265625 - percentile_99_5: 810.419921875 - stdev: 201.26002502441406 - ncomponents: 1 - pixel_percentage: 0.9480150938034058 - shape: - - [36, 52, 38] - - image_intensity: - - max: 792.5430297851562 - mean: 340.0125732421875 - median: 327.74334716796875 - min: 95.34352111816406 - percentile: [154.9332275390625, 226.44085693359375, 464.7996520996094, 678.3987426757812] - percentile_00_5: 154.9332275390625 - percentile_10_0: 226.44085693359375 - percentile_90_0: 464.7996520996094 - percentile_99_5: 678.3987426757812 - stdev: 97.28092193603516 - ncomponents: 1 - pixel_percentage: 0.025753486901521683 - shape: - - [23, 17, 15] - - image_intensity: - - max: 738.9122924804688 - mean: 323.422607421875 - median: 309.866455078125 - min: 53.63072967529297 - percentile: [125.13837432861328, 208.56394958496094, 464.7996520996094, 647.5913696289062] - percentile_00_5: 125.13837432861328 - percentile_10_0: 208.56394958496094 - percentile_90_0: 464.7996520996094 - percentile_99_5: 647.5913696289062 - stdev: 103.12550354003906 - ncomponents: 1 - pixel_percentage: 0.026231443509459496 - shape: - - [18, 25, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_104.nii.gz - image_foreground_stats: - intensity: - - max: 1228.1378173828125 - mean: 541.670166015625 - median: 509.2278747558594 - min: 59.90916442871094 - percentile: [239.63665771484375, 369.4398498535156, 758.849365234375, 1038.425537109375] - percentile_00_5: 239.63665771484375 - percentile_10_0: 369.4398498535156 - percentile_90_0: 758.849365234375 - percentile_99_5: 1038.425537109375 - stdev: 155.75082397460938 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 39] - intensity: - - max: 4702.869140625 - mean: 725.1312866210938 - median: 748.864501953125 - min: 0.0 - percentile: [39.9394416809082, 249.6215057373047, 1128.2891845703125, 1318.0015869140625] - percentile_00_5: 39.9394416809082 - percentile_10_0: 249.6215057373047 - percentile_90_0: 1128.2891845703125 - percentile_99_5: 1318.0015869140625 - stdev: 342.1481018066406 - shape: - - [35, 53, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_104.nii.gz - label_stats: - image_intensity: - - max: 1228.1378173828125 - mean: 541.670166015625 - median: 509.2278747558594 - min: 59.90916442871094 - percentile: [239.63665771484375, 369.4398498535156, 758.849365234375, 1038.425537109375] - percentile_00_5: 239.63665771484375 - percentile_10_0: 369.4398498535156 - percentile_90_0: 758.849365234375 - percentile_99_5: 1038.425537109375 - stdev: 155.75082397460938 - label: - - image_intensity: - - max: 4702.869140625 - mean: 735.3500366210938 - median: 768.834228515625 - min: 0.0 - percentile: [39.9394416809082, 249.6215057373047, 1138.2740478515625, 1318.0015869140625] - percentile_00_5: 39.9394416809082 - percentile_10_0: 249.6215057373047 - percentile_90_0: 1138.2740478515625 - percentile_99_5: 1318.0015869140625 - stdev: 346.77874755859375 - ncomponents: 1 - pixel_percentage: 0.9472389221191406 - shape: - - [35, 53, 39] - - image_intensity: - - max: 1228.1378173828125 - mean: 550.790283203125 - median: 529.1976318359375 - min: 59.90916442871094 - percentile: [220.6654052734375, 379.4246826171875, 758.849365234375, 1037.426025390625] - percentile_00_5: 220.6654052734375 - percentile_10_0: 379.4246826171875 - percentile_90_0: 758.849365234375 - percentile_99_5: 1037.426025390625 - stdev: 152.59054565429688 - ncomponents: 1 - pixel_percentage: 0.030700117349624634 - shape: - - [24, 20, 16] - - image_intensity: - - max: 1128.2891845703125 - mean: 528.9786376953125 - median: 489.2581481933594 - min: 209.68206787109375 - percentile: [249.37188720703125, 359.4549865722656, 758.849365234375, 1038.6754150390625] - percentile_00_5: 249.37188720703125 - percentile_10_0: 359.4549865722656 - percentile_90_0: 758.849365234375 - percentile_99_5: 1038.6754150390625 - stdev: 159.17767333984375 - ncomponents: 1 - pixel_percentage: 0.022060958668589592 - shape: - - [17, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_175.nii.gz - image_foreground_stats: - intensity: - - max: 716.4442749023438 - mean: 329.8396301269531 - median: 314.1332702636719 - min: 44.0888786315918 - percentile: [132.26663208007812, 231.46661376953125, 451.9110107421875, 628.2665405273438] - percentile_00_5: 132.26663208007812 - percentile_10_0: 231.46661376953125 - percentile_90_0: 451.9110107421875 - percentile_99_5: 628.2665405273438 - stdev: 88.54077911376953 - image_stats: - channels: 1 - cropped_shape: - - [33, 47, 35] - intensity: - - max: 1719.46630859375 - mean: 399.42352294921875 - median: 407.8221130371094 - min: 0.0 - percentile: [16.533329010009766, 88.1777572631836, 655.8220825195312, 760.5331420898438] - percentile_00_5: 16.533329010009766 - percentile_10_0: 88.1777572631836 - percentile_90_0: 655.8220825195312 - percentile_99_5: 760.5331420898438 - stdev: 205.19491577148438 - shape: - - [33, 47, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_175.nii.gz - label_stats: - image_intensity: - - max: 716.4442749023438 - mean: 329.8396301269531 - median: 314.1332702636719 - min: 44.0888786315918 - percentile: [132.26663208007812, 231.46661376953125, 451.9110107421875, 628.2665405273438] - percentile_00_5: 132.26663208007812 - percentile_10_0: 231.46661376953125 - percentile_90_0: 451.9110107421875 - percentile_99_5: 628.2665405273438 - stdev: 88.54077911376953 - label: - - image_intensity: - - max: 1719.46630859375 - mean: 403.12103271484375 - median: 418.8443603515625 - min: 0.0 - percentile: [16.533329010009766, 88.1777572631836, 661.3331909179688, 760.5331420898438] - percentile_00_5: 16.533329010009766 - percentile_10_0: 88.1777572631836 - percentile_90_0: 661.3331909179688 - percentile_99_5: 760.5331420898438 - stdev: 208.9372100830078 - ncomponents: 1 - pixel_percentage: 0.9495440721511841 - shape: - - [33, 47, 35] - - image_intensity: - - max: 650.3109741210938 - mean: 330.7120666503906 - median: 319.6443786621094 - min: 71.64442443847656 - percentile: [132.26663208007812, 242.48883056640625, 440.8887939453125, 584.1776123046875] - percentile_00_5: 132.26663208007812 - percentile_10_0: 242.48883056640625 - percentile_90_0: 440.8887939453125 - percentile_99_5: 584.1776123046875 - stdev: 82.25785827636719 - ncomponents: 1 - pixel_percentage: 0.029013538733124733 - shape: - - [20, 16, 14] - - image_intensity: - - max: 716.4442749023438 - mean: 328.6590881347656 - median: 314.1332702636719 - min: 44.0888786315918 - percentile: [136.7581787109375, 225.95550537109375, 462.9332275390625, 644.7998657226562] - percentile_00_5: 136.7581787109375 - percentile_10_0: 225.95550537109375 - percentile_90_0: 462.9332275390625 - percentile_99_5: 644.7998657226562 - stdev: 96.37982177734375 - ncomponents: 1 - pixel_percentage: 0.021442387253046036 - shape: - - [16, 21, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_075.nii.gz - image_foreground_stats: - intensity: - - max: 85.0 - mean: 44.38615417480469 - median: 42.0 - min: 24.0 - percentile: [28.0, 35.0, 58.0, 73.0] - percentile_00_5: 28.0 - percentile_10_0: 35.0 - percentile_90_0: 58.0 - percentile_99_5: 73.0 - stdev: 9.137447357177734 - image_stats: - channels: 1 - cropped_shape: - - [32, 47, 41] - intensity: - - max: 127.0 - mean: 60.36217498779297 - median: 62.0 - min: 1.0 - percentile: [8.0, 29.0, 91.0, 101.0] - percentile_00_5: 8.0 - percentile_10_0: 29.0 - percentile_90_0: 91.0 - percentile_99_5: 101.0 - stdev: 24.21053123474121 - shape: - - [32, 47, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_075.nii.gz - label_stats: - image_intensity: - - max: 85.0 - mean: 44.38615417480469 - median: 42.0 - min: 24.0 - percentile: [28.0, 35.0, 58.0, 73.0] - percentile_00_5: 28.0 - percentile_10_0: 35.0 - percentile_90_0: 58.0 - percentile_99_5: 73.0 - stdev: 9.137447357177734 - label: - - image_intensity: - - max: 127.0 - mean: 61.19291687011719 - median: 64.0 - min: 1.0 - percentile: [7.0, 28.0, 92.0, 101.0] - percentile_00_5: 7.0 - percentile_10_0: 28.0 - percentile_90_0: 92.0 - percentile_99_5: 101.0 - stdev: 24.460691452026367 - ncomponents: 1 - pixel_percentage: 0.950570821762085 - shape: - - [32, 47, 41] - - image_intensity: - - max: 77.0 - mean: 43.91898727416992 - median: 42.0 - min: 24.0 - percentile: [27.104999542236328, 34.0, 56.0, 70.0] - percentile_00_5: 27.104999542236328 - percentile_10_0: 34.0 - percentile_90_0: 56.0 - percentile_99_5: 70.0 - stdev: 8.929116249084473 - ncomponents: 1 - pixel_percentage: 0.01981707289814949 - shape: - - [19, 13, 14] - - image_intensity: - - max: 85.0 - mean: 44.698795318603516 - median: 42.0 - min: 25.0 - percentile: [28.0, 35.0, 58.0, 74.875] - percentile_00_5: 28.0 - percentile_10_0: 35.0 - percentile_90_0: 58.0 - percentile_99_5: 74.875 - stdev: 9.261101722717285 - ncomponents: 1 - pixel_percentage: 0.029612090438604355 - shape: - - [16, 22, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_108.nii.gz - image_foreground_stats: - intensity: - - max: 917.2496337890625 - mean: 359.63140869140625 - median: 345.8482360839844 - min: 37.59219741821289 - percentile: [97.73971557617188, 233.07164001464844, 511.25390625, 746.6181640625] - percentile_00_5: 97.73971557617188 - percentile_10_0: 233.07164001464844 - percentile_90_0: 511.25390625 - percentile_99_5: 746.6181640625 - stdev: 113.96183776855469 - image_stats: - channels: 1 - cropped_shape: - - [36, 53, 37] - intensity: - - max: 2834.451904296875 - mean: 487.1240539550781 - median: 466.1432800292969 - min: 0.0 - percentile: [30.073759078979492, 172.9241180419922, 811.9915161132812, 939.8049926757812] - percentile_00_5: 30.073759078979492 - percentile_10_0: 172.9241180419922 - percentile_90_0: 811.9915161132812 - percentile_99_5: 939.8049926757812 - stdev: 242.3692169189453 - shape: - - [36, 53, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_108.nii.gz - label_stats: - image_intensity: - - max: 917.2496337890625 - mean: 359.63140869140625 - median: 345.8482360839844 - min: 37.59219741821289 - percentile: [97.73971557617188, 233.07164001464844, 511.25390625, 746.6181640625] - percentile_00_5: 97.73971557617188 - percentile_10_0: 233.07164001464844 - percentile_90_0: 511.25390625 - percentile_99_5: 746.6181640625 - stdev: 113.96183776855469 - label: - - image_intensity: - - max: 2834.451904296875 - mean: 494.6600036621094 - median: 481.1801452636719 - min: 0.0 - percentile: [30.073759078979492, 165.40567016601562, 811.9915161132812, 939.8049926757812] - percentile_00_5: 30.073759078979492 - percentile_10_0: 165.40567016601562 - percentile_90_0: 811.9915161132812 - percentile_99_5: 939.8049926757812 - stdev: 245.8248291015625 - ncomponents: 1 - pixel_percentage: 0.9441894888877869 - shape: - - [36, 53, 37] - - image_intensity: - - max: 834.5468139648438 - mean: 370.3315124511719 - median: 360.8851013183594 - min: 67.66595458984375 - percentile: [145.03070068359375, 248.10850524902344, 518.7723388671875, 684.1780395507812] - percentile_00_5: 145.03070068359375 - percentile_10_0: 248.10850524902344 - percentile_90_0: 518.7723388671875 - percentile_99_5: 684.1780395507812 - stdev: 106.45022583007812 - ncomponents: 1 - pixel_percentage: 0.029165958985686302 - shape: - - [23, 16, 16] - - image_intensity: - - max: 917.2496337890625 - mean: 347.918701171875 - median: 330.81134033203125 - min: 37.59219741821289 - percentile: [88.71758270263672, 218.03475952148438, 496.2170104980469, 781.917724609375] - percentile_00_5: 88.71758270263672 - percentile_10_0: 218.03475952148438 - percentile_90_0: 496.2170104980469 - percentile_99_5: 781.917724609375 - stdev: 120.56993865966797 - ncomponents: 1 - pixel_percentage: 0.026644568890333176 - shape: - - [17, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_008.nii.gz - image_foreground_stats: - intensity: - - max: 829.3151245117188 - mean: 375.6250305175781 - median: 360.8470458984375 - min: 75.9677963256836 - percentile: [183.58885192871094, 265.8872985839844, 506.4519958496094, 747.0166625976562] - percentile_00_5: 183.58885192871094 - percentile_10_0: 265.8872985839844 - percentile_90_0: 506.4519958496094 - percentile_99_5: 747.0166625976562 - stdev: 101.09828186035156 - image_stats: - channels: 1 - cropped_shape: - - [36, 48, 40] - intensity: - - max: 3108.34912109375 - mean: 537.307861328125 - median: 538.105224609375 - min: 0.0 - percentile: [31.653249740600586, 196.25015258789062, 867.2990112304688, 993.9120483398438] - percentile_00_5: 31.653249740600586 - percentile_10_0: 196.25015258789062 - percentile_90_0: 867.2990112304688 - percentile_99_5: 993.9120483398438 - stdev: 253.15142822265625 - shape: - - [36, 48, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_008.nii.gz - label_stats: - image_intensity: - - max: 829.3151245117188 - mean: 375.6250305175781 - median: 360.8470458984375 - min: 75.9677963256836 - percentile: [183.58885192871094, 265.8872985839844, 506.4519958496094, 747.0166625976562] - percentile_00_5: 183.58885192871094 - percentile_10_0: 265.8872985839844 - percentile_90_0: 506.4519958496094 - percentile_99_5: 747.0166625976562 - stdev: 101.09828186035156 - label: - - image_intensity: - - max: 3108.34912109375 - mean: 545.2800903320312 - median: 563.4278564453125 - min: 0.0 - percentile: [31.653249740600586, 189.91949462890625, 867.2990112304688, 993.9120483398438] - percentile_00_5: 31.653249740600586 - percentile_10_0: 189.91949462890625 - percentile_90_0: 867.2990112304688 - percentile_99_5: 993.9120483398438 - stdev: 255.7128448486328 - ncomponents: 1 - pixel_percentage: 0.9530092477798462 - shape: - - [36, 48, 40] - - image_intensity: - - max: 759.677978515625 - mean: 378.6462097167969 - median: 367.1777038574219 - min: 75.9677963256836 - percentile: [170.92755126953125, 272.21795654296875, 500.121337890625, 679.7852172851562] - percentile_00_5: 170.92755126953125 - percentile_10_0: 272.21795654296875 - percentile_90_0: 500.121337890625 - percentile_99_5: 679.7852172851562 - stdev: 93.59558868408203 - ncomponents: 1 - pixel_percentage: 0.02495659701526165 - shape: - - [23, 16, 16] - - image_intensity: - - max: 829.3151245117188 - mean: 372.2031555175781 - median: 354.5163879394531 - min: 120.2823486328125 - percentile: [183.58885192871094, 253.2259979248047, 512.7826538085938, 778.669921875] - percentile_00_5: 183.58885192871094 - percentile_10_0: 253.2259979248047 - percentile_90_0: 512.7826538085938 - percentile_99_5: 778.669921875 - stdev: 108.87279510498047 - ncomponents: 1 - pixel_percentage: 0.022034144029021263 - shape: - - [18, 21, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_143.nii.gz - image_foreground_stats: - intensity: - - max: 86.0 - mean: 44.77972412109375 - median: 43.0 - min: 23.0 - percentile: [27.0, 34.0, 59.0, 77.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 59.0 - percentile_99_5: 77.0 - stdev: 9.985507011413574 - image_stats: - channels: 1 - cropped_shape: - - [32, 45, 41] - intensity: - - max: 167.0 - mean: 54.73966598510742 - median: 56.0 - min: 2.0 - percentile: [7.0, 23.0, 83.0, 101.0] - percentile_00_5: 7.0 - percentile_10_0: 23.0 - percentile_90_0: 83.0 - percentile_99_5: 101.0 - stdev: 22.32425880432129 - shape: - - [32, 45, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_143.nii.gz - label_stats: - image_intensity: - - max: 86.0 - mean: 44.77972412109375 - median: 43.0 - min: 23.0 - percentile: [27.0, 34.0, 59.0, 77.0] - percentile_00_5: 27.0 - percentile_10_0: 34.0 - percentile_90_0: 59.0 - percentile_99_5: 77.0 - stdev: 9.985507011413574 - label: - - image_intensity: - - max: 167.0 - mean: 55.16115188598633 - median: 57.0 - min: 2.0 - percentile: [7.0, 23.0, 83.0, 101.0] - percentile_00_5: 7.0 - percentile_10_0: 23.0 - percentile_90_0: 83.0 - percentile_99_5: 101.0 - stdev: 22.60237693786621 - ncomponents: 1 - pixel_percentage: 0.9594004154205322 - shape: - - [32, 45, 41] - - image_intensity: - - max: 85.0 - mean: 45.92204666137695 - median: 44.0 - min: 24.0 - percentile: [30.0, 36.0, 59.0, 74.080078125] - percentile_00_5: 30.0 - percentile_10_0: 36.0 - percentile_90_0: 59.0 - percentile_99_5: 74.080078125 - stdev: 9.206567764282227 - ncomponents: 1 - pixel_percentage: 0.020206639543175697 - shape: - - [20, 13, 14] - - image_intensity: - - max: 86.0 - mean: 43.6478385925293 - median: 41.0 - min: 23.0 - percentile: [26.0, 32.0, 59.0, 77.0] - percentile_00_5: 26.0 - percentile_10_0: 32.0 - percentile_90_0: 59.0 - percentile_99_5: 77.0 - stdev: 10.580599784851074 - ncomponents: 1 - pixel_percentage: 0.020392954349517822 - shape: - - [15, 19, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_389.nii.gz - image_foreground_stats: - intensity: - - max: 899.6135864257812 - mean: 421.47540283203125 - median: 407.738525390625 - min: 12.944080352783203 - percentile: [140.63743591308594, 295.12506103515625, 576.0115966796875, 802.532958984375] - percentile_00_5: 140.63743591308594 - percentile_10_0: 295.12506103515625 - percentile_90_0: 576.0115966796875 - percentile_99_5: 802.532958984375 - stdev: 115.85077667236328 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 32] - intensity: - - max: 1029.054443359375 - mean: 512.7587890625 - median: 524.2352294921875 - min: 0.0 - percentile: [19.416120529174805, 155.32896423339844, 815.47705078125, 925.5017700195312] - percentile_00_5: 19.416120529174805 - percentile_10_0: 155.32896423339844 - percentile_90_0: 815.47705078125 - percentile_99_5: 925.5017700195312 - stdev: 238.45184326171875 - shape: - - [34, 49, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_389.nii.gz - label_stats: - image_intensity: - - max: 899.6135864257812 - mean: 421.47540283203125 - median: 407.738525390625 - min: 12.944080352783203 - percentile: [140.63743591308594, 295.12506103515625, 576.0115966796875, 802.532958984375] - percentile_00_5: 140.63743591308594 - percentile_10_0: 295.12506103515625 - percentile_90_0: 576.0115966796875 - percentile_99_5: 802.532958984375 - stdev: 115.85077667236328 - label: - - image_intensity: - - max: 1029.054443359375 - mean: 518.1000366210938 - median: 537.1793212890625 - min: 0.0 - percentile: [19.416120529174805, 148.85691833496094, 821.9490966796875, 925.5017700195312] - percentile_00_5: 19.416120529174805 - percentile_10_0: 148.85691833496094 - percentile_90_0: 821.9490966796875 - percentile_99_5: 925.5017700195312 - stdev: 242.6620330810547 - ncomponents: 1 - pixel_percentage: 0.9447216391563416 - shape: - - [34, 49, 32] - - image_intensity: - - max: 815.47705078125 - mean: 414.0160217285156 - median: 407.738525390625 - min: 12.944080352783203 - percentile: [135.912841796875, 286.0641784667969, 563.0675048828125, 739.0426635742188] - percentile_00_5: 135.912841796875 - percentile_10_0: 286.0641784667969 - percentile_90_0: 563.0675048828125 - percentile_99_5: 739.0426635742188 - stdev: 109.82890319824219 - ncomponents: 1 - pixel_percentage: 0.03306947648525238 - shape: - - [22, 19, 13] - - image_intensity: - - max: 899.6135864257812 - mean: 432.5826110839844 - median: 407.738525390625 - min: 90.60856628417969 - percentile: [180.11688232421875, 310.6579284667969, 612.90185546875, 835.4430541992188] - percentile_00_5: 180.11688232421875 - percentile_10_0: 310.6579284667969 - percentile_90_0: 612.90185546875 - percentile_99_5: 835.4430541992188 - stdev: 123.44544982910156 - ncomponents: 1 - pixel_percentage: 0.022208884358406067 - shape: - - [19, 20, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_289.nii.gz - image_foreground_stats: - intensity: - - max: 714.804443359375 - mean: 324.47137451171875 - median: 317.69085693359375 - min: 72.80416107177734 - percentile: [112.51551818847656, 218.4124755859375, 443.4435119628906, 615.5260620117188] - percentile_00_5: 112.51551818847656 - percentile_10_0: 218.4124755859375 - percentile_90_0: 443.4435119628906 - percentile_99_5: 615.5260620117188 - stdev: 88.43072509765625 - image_stats: - channels: 1 - cropped_shape: - - [35, 49, 36] - intensity: - - max: 1370.0418701171875 - mean: 410.86346435546875 - median: 430.2063903808594 - min: 0.0 - percentile: [19.85567855834961, 119.13407897949219, 648.6188354492188, 767.7529296875] - percentile_00_5: 19.85567855834961 - percentile_10_0: 119.13407897949219 - percentile_90_0: 648.6188354492188 - percentile_99_5: 767.7529296875 - stdev: 192.081787109375 - shape: - - [35, 49, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_289.nii.gz - label_stats: - image_intensity: - - max: 714.804443359375 - mean: 324.47137451171875 - median: 317.69085693359375 - min: 72.80416107177734 - percentile: [112.51551818847656, 218.4124755859375, 443.4435119628906, 615.5260620117188] - percentile_00_5: 112.51551818847656 - percentile_10_0: 218.4124755859375 - percentile_90_0: 443.4435119628906 - percentile_99_5: 615.5260620117188 - stdev: 88.43072509765625 - label: - - image_intensity: - - max: 1370.0418701171875 - mean: 414.8724670410156 - median: 443.4435119628906 - min: 0.0 - percentile: [19.85567855834961, 119.13407897949219, 648.6188354492188, 767.7529296875] - percentile_00_5: 19.85567855834961 - percentile_10_0: 119.13407897949219 - percentile_90_0: 648.6188354492188 - percentile_99_5: 767.7529296875 - stdev: 194.63360595703125 - ncomponents: 1 - pixel_percentage: 0.9556527137756348 - shape: - - [35, 49, 36] - - image_intensity: - - max: 714.804443359375 - mean: 327.4534912109375 - median: 324.3094177246094 - min: 72.80416107177734 - percentile: [105.89695739746094, 211.79391479492188, 450.06207275390625, 628.76318359375] - percentile_00_5: 105.89695739746094 - percentile_10_0: 211.79391479492188 - percentile_90_0: 450.06207275390625 - percentile_99_5: 628.76318359375 - stdev: 95.04486083984375 - ncomponents: 1 - pixel_percentage: 0.02076449617743492 - shape: - - [18, 15, 13] - - image_intensity: - - max: 668.4745483398438 - mean: 321.8456726074219 - median: 311.07232666015625 - min: 92.65983581542969 - percentile: [138.98976135253906, 231.64959716796875, 430.2063903808594, 585.4113159179688] - percentile_00_5: 138.98976135253906 - percentile_10_0: 231.64959716796875 - percentile_90_0: 430.2063903808594 - percentile_99_5: 585.4113159179688 - stdev: 82.0777816772461 - ncomponents: 1 - pixel_percentage: 0.023582765832543373 - shape: - - [20, 22, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_297.nii.gz - image_foreground_stats: - intensity: - - max: 707.5706787109375 - mean: 374.0283203125 - median: 371.18463134765625 - min: 52.197837829589844 - percentile: [167.758056640625, 272.5887145996094, 481.38006591796875, 626.8087768554688] - percentile_00_5: 167.758056640625 - percentile_10_0: 272.5887145996094 - percentile_90_0: 481.38006591796875 - percentile_99_5: 626.8087768554688 - stdev: 84.728271484375 - image_stats: - channels: 1 - cropped_shape: - - [34, 51, 30] - intensity: - - max: 1844.3236083984375 - mean: 441.2764587402344 - median: 452.3812561035156 - min: 0.0 - percentile: [23.199039459228516, 144.99400329589844, 690.1714477539062, 782.9675903320312] - percentile_00_5: 23.199039459228516 - percentile_10_0: 144.99400329589844 - percentile_90_0: 690.1714477539062 - percentile_99_5: 782.9675903320312 - stdev: 198.39730834960938 - shape: - - [34, 51, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_297.nii.gz - label_stats: - image_intensity: - - max: 707.5706787109375 - mean: 374.0283203125 - median: 371.18463134765625 - min: 52.197837829589844 - percentile: [167.758056640625, 272.5887145996094, 481.38006591796875, 626.8087768554688] - percentile_00_5: 167.758056640625 - percentile_10_0: 272.5887145996094 - percentile_90_0: 481.38006591796875 - percentile_99_5: 626.8087768554688 - stdev: 84.728271484375 - label: - - image_intensity: - - max: 1844.3236083984375 - mean: 445.0818176269531 - median: 469.7805480957031 - min: 0.0 - percentile: [17.399280548095703, 139.19424438476562, 690.1714477539062, 782.9675903320312] - percentile_00_5: 17.399280548095703 - percentile_10_0: 139.19424438476562 - percentile_90_0: 690.1714477539062 - percentile_99_5: 782.9675903320312 - stdev: 202.2677001953125 - ncomponents: 1 - pixel_percentage: 0.9464436769485474 - shape: - - [34, 51, 30] - - image_intensity: - - max: 690.1714477539062 - mean: 365.3736267089844 - median: 359.5851135253906 - min: 52.197837829589844 - percentile: [162.39328002929688, 266.7889404296875, 475.580322265625, 604.625] - percentile_00_5: 162.39328002929688 - percentile_10_0: 266.7889404296875 - percentile_90_0: 475.580322265625 - percentile_99_5: 604.625 - stdev: 84.49751281738281 - ncomponents: 1 - pixel_percentage: 0.02981545589864254 - shape: - - [22, 18, 12] - - image_intensity: - - max: 707.5706787109375 - mean: 384.89739990234375 - median: 382.7841491699219 - min: 121.79496002197266 - percentile: [185.59231567382812, 284.188232421875, 492.9795837402344, 651.427978515625] - percentile_00_5: 185.59231567382812 - percentile_10_0: 284.188232421875 - percentile_90_0: 492.9795837402344 - percentile_99_5: 651.427978515625 - stdev: 83.75987243652344 - ncomponents: 1 - pixel_percentage: 0.023740869015455246 - shape: - - [21, 25, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_020.nii.gz - image_foreground_stats: - intensity: - - max: 1148.0921630859375 - mean: 528.3491821289062 - median: 502.2903137207031 - min: 17.938940048217773 - percentile: [161.45045471191406, 349.809326171875, 753.4354858398438, 1031.0401611328125] - percentile_00_5: 161.45045471191406 - percentile_10_0: 349.809326171875 - percentile_90_0: 753.4354858398438 - percentile_99_5: 1031.0401611328125 - stdev: 159.6353759765625 - image_stats: - channels: 1 - cropped_shape: - - [36, 46, 43] - intensity: - - max: 4215.65087890625 - mean: 724.6326293945312 - median: 762.4049682617188 - min: 0.0 - percentile: [35.87788009643555, 242.17568969726562, 1130.1531982421875, 1282.6341552734375] - percentile_00_5: 35.87788009643555 - percentile_10_0: 242.17568969726562 - percentile_90_0: 1130.1531982421875 - percentile_99_5: 1282.6341552734375 - stdev: 343.59283447265625 - shape: - - [36, 46, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_020.nii.gz - label_stats: - image_intensity: - - max: 1148.0921630859375 - mean: 528.3491821289062 - median: 502.2903137207031 - min: 17.938940048217773 - percentile: [161.45045471191406, 349.809326171875, 753.4354858398438, 1031.0401611328125] - percentile_00_5: 161.45045471191406 - percentile_10_0: 349.809326171875 - percentile_90_0: 753.4354858398438 - percentile_99_5: 1031.0401611328125 - stdev: 159.6353759765625 - label: - - image_intensity: - - max: 4215.65087890625 - mean: 735.1179809570312 - median: 789.3133544921875 - min: 0.0 - percentile: [35.87788009643555, 233.2062225341797, 1139.1226806640625, 1282.6341552734375] - percentile_00_5: 35.87788009643555 - percentile_10_0: 233.2062225341797 - percentile_90_0: 1139.1226806640625 - percentile_99_5: 1282.6341552734375 - stdev: 347.6106872558594 - ncomponents: 1 - pixel_percentage: 0.9492893815040588 - shape: - - [36, 46, 43] - - image_intensity: - - max: 1139.1226806640625 - mean: 532.0576171875 - median: 511.2597961425781 - min: 107.63363647460938 - percentile: [183.4256591796875, 358.77880859375, 753.4354858398438, 998.076904296875] - percentile_00_5: 183.4256591796875 - percentile_10_0: 358.77880859375 - percentile_90_0: 753.4354858398438 - percentile_99_5: 998.076904296875 - stdev: 155.65736389160156 - ncomponents: 1 - pixel_percentage: 0.030137063935399055 - shape: - - [26, 16, 17] - - image_intensity: - - max: 1148.0921630859375 - mean: 522.9169921875 - median: 502.2903137207031 - min: 17.938940048217773 - percentile: [131.3130340576172, 340.8398742675781, 744.4660034179688, 1064.4971923828125] - percentile_00_5: 131.3130340576172 - percentile_10_0: 340.8398742675781 - percentile_90_0: 744.4660034179688 - percentile_99_5: 1064.4971923828125 - stdev: 165.13955688476562 - ncomponents: 1 - pixel_percentage: 0.020573530346155167 - shape: - - [20, 18, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_051.nii.gz - image_foreground_stats: - intensity: - - max: 942.271240234375 - mean: 437.7868347167969 - median: 416.1697998046875 - min: 39.26129913330078 - percentile: [204.1587677001953, 306.2381591796875, 604.6240234375, 840.1918334960938] - percentile_00_5: 204.1587677001953 - percentile_10_0: 306.2381591796875 - percentile_90_0: 604.6240234375 - percentile_99_5: 840.1918334960938 - stdev: 123.5770034790039 - image_stats: - channels: 1 - cropped_shape: - - [33, 54, 39] - intensity: - - max: 2599.09814453125 - mean: 544.7484130859375 - median: 565.3627319335938 - min: 0.0 - percentile: [23.556779861450195, 172.74972534179688, 855.8963623046875, 1012.9415283203125] - percentile_00_5: 23.556779861450195 - percentile_10_0: 172.74972534179688 - percentile_90_0: 855.8963623046875 - percentile_99_5: 1012.9415283203125 - stdev: 249.5762176513672 - shape: - - [33, 54, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_051.nii.gz - label_stats: - image_intensity: - - max: 942.271240234375 - mean: 437.7868347167969 - median: 416.1697998046875 - min: 39.26129913330078 - percentile: [204.1587677001953, 306.2381591796875, 604.6240234375, 840.1918334960938] - percentile_00_5: 204.1587677001953 - percentile_10_0: 306.2381591796875 - percentile_90_0: 604.6240234375 - percentile_99_5: 840.1918334960938 - stdev: 123.5770034790039 - label: - - image_intensity: - - max: 2599.09814453125 - mean: 549.7574462890625 - median: 581.0672607421875 - min: 0.0 - percentile: [23.556779861450195, 164.8974609375, 855.8963623046875, 1012.9415283203125] - percentile_00_5: 23.556779861450195 - percentile_10_0: 164.8974609375 - percentile_90_0: 855.8963623046875 - percentile_99_5: 1012.9415283203125 - stdev: 252.84231567382812 - ncomponents: 1 - pixel_percentage: 0.9552649259567261 - shape: - - [33, 54, 39] - - image_intensity: - - max: 942.271240234375 - mean: 439.08648681640625 - median: 431.8742980957031 - min: 39.26129913330078 - percentile: [204.1587677001953, 314.09039306640625, 581.0672607421875, 783.6559448242188] - percentile_00_5: 204.1587677001953 - percentile_10_0: 314.09039306640625 - percentile_90_0: 581.0672607421875 - percentile_99_5: 783.6559448242188 - stdev: 108.94110107421875 - ncomponents: 1 - pixel_percentage: 0.021885521709918976 - shape: - - [20, 17, 14] - - image_intensity: - - max: 895.1576538085938 - mean: 436.5421447753906 - median: 400.46527099609375 - min: 157.04519653320312 - percentile: [204.1587677001953, 298.3858947753906, 643.8853149414062, 848.0440673828125] - percentile_00_5: 204.1587677001953 - percentile_10_0: 298.3858947753906 - percentile_90_0: 643.8853149414062 - percentile_99_5: 848.0440673828125 - stdev: 136.1162567138672 - ncomponents: 1 - pixel_percentage: 0.02284957841038704 - shape: - - [17, 26, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_132.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 41.21039581298828 - median: 39.0 - min: 15.0 - percentile: [22.0, 31.0, 54.0, 79.0] - percentile_00_5: 22.0 - percentile_10_0: 31.0 - percentile_90_0: 54.0 - percentile_99_5: 79.0 - stdev: 10.075538635253906 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 40] - intensity: - - max: 254.0 - mean: 57.5185432434082 - median: 57.0 - min: 2.0 - percentile: [7.0, 27.0, 89.0, 104.0] - percentile_00_5: 7.0 - percentile_10_0: 27.0 - percentile_90_0: 89.0 - percentile_99_5: 104.0 - stdev: 24.079421997070312 - shape: - - [36, 50, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_132.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 41.21039581298828 - median: 39.0 - min: 15.0 - percentile: [22.0, 31.0, 54.0, 79.0] - percentile_00_5: 22.0 - percentile_10_0: 31.0 - percentile_90_0: 54.0 - percentile_99_5: 79.0 - stdev: 10.075538635253906 - label: - - image_intensity: - - max: 254.0 - mean: 58.28971862792969 - median: 59.0 - min: 2.0 - percentile: [7.0, 26.0, 89.0, 104.0] - percentile_00_5: 7.0 - percentile_10_0: 26.0 - percentile_90_0: 89.0 - percentile_99_5: 104.0 - stdev: 24.274789810180664 - ncomponents: 1 - pixel_percentage: 0.9548472166061401 - shape: - - [36, 50, 40] - - image_intensity: - - max: 96.0 - mean: 41.609413146972656 - median: 41.0 - min: 15.0 - percentile: [19.0, 31.0, 53.0, 75.14501953125] - percentile_00_5: 19.0 - percentile_10_0: 31.0 - percentile_90_0: 53.0 - percentile_99_5: 75.14501953125 - stdev: 9.353878021240234 - ncomponents: 1 - pixel_percentage: 0.021833334118127823 - shape: - - [20, 17, 14] - - image_intensity: - - max: 86.0 - mean: 40.83680725097656 - median: 38.0 - min: 21.0 - percentile: [23.0, 30.0, 56.0, 81.0] - percentile_00_5: 23.0 - percentile_10_0: 30.0 - percentile_90_0: 56.0 - percentile_99_5: 81.0 - stdev: 10.693723678588867 - ncomponents: 1 - pixel_percentage: 0.023319443687796593 - shape: - - [18, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_385.nii.gz - image_foreground_stats: - intensity: - - max: 951.03759765625 - mean: 475.3195495605469 - median: 465.1059875488281 - min: 13.883760452270508 - percentile: [173.54701232910156, 347.0940246582031, 624.7692260742188, 839.967529296875] - percentile_00_5: 173.54701232910156 - percentile_10_0: 347.0940246582031 - percentile_90_0: 624.7692260742188 - percentile_99_5: 839.967529296875 - stdev: 116.3960952758789 - image_stats: - channels: 1 - cropped_shape: - - [35, 48, 40] - intensity: - - max: 2360.2392578125 - mean: 620.36181640625 - median: 631.7111206054688 - min: 0.0 - percentile: [34.67465591430664, 236.02392578125, 957.9794921875, 1117.6427001953125] - percentile_00_5: 34.67465591430664 - percentile_10_0: 236.02392578125 - percentile_90_0: 957.9794921875 - percentile_99_5: 1117.6427001953125 - stdev: 268.26898193359375 - shape: - - [35, 48, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_385.nii.gz - label_stats: - image_intensity: - - max: 951.03759765625 - mean: 475.3195495605469 - median: 465.1059875488281 - min: 13.883760452270508 - percentile: [173.54701232910156, 347.0940246582031, 624.7692260742188, 839.967529296875] - percentile_00_5: 173.54701232910156 - percentile_10_0: 347.0940246582031 - percentile_90_0: 624.7692260742188 - percentile_99_5: 839.967529296875 - stdev: 116.3960952758789 - label: - - image_intensity: - - max: 2360.2392578125 - mean: 628.0841674804688 - median: 652.5367431640625 - min: 0.0 - percentile: [27.767520904541016, 229.08204650878906, 957.9794921875, 1124.5845947265625] - percentile_00_5: 27.767520904541016 - percentile_10_0: 229.08204650878906 - percentile_90_0: 957.9794921875 - percentile_99_5: 1124.5845947265625 - stdev: 271.8436279296875 - ncomponents: 1 - pixel_percentage: 0.9494494199752808 - shape: - - [35, 48, 40] - - image_intensity: - - max: 951.03759765625 - mean: 470.7468566894531 - median: 465.1059875488281 - min: 27.767520904541016 - percentile: [156.6088104248047, 347.0940246582031, 610.8854370117188, 805.2581176757812] - percentile_00_5: 156.6088104248047 - percentile_10_0: 347.0940246582031 - percentile_90_0: 610.8854370117188 - percentile_99_5: 805.2581176757812 - stdev: 111.28771209716797 - ncomponents: 1 - pixel_percentage: 0.03144345059990883 - shape: - - [22, 17, 19] - - image_intensity: - - max: 944.095703125 - mean: 482.8445129394531 - median: 465.1059875488281 - min: 13.883760452270508 - percentile: [229.08204650878906, 347.0940246582031, 652.5367431640625, 889.740234375] - percentile_00_5: 229.08204650878906 - percentile_10_0: 347.0940246582031 - percentile_90_0: 652.5367431640625 - percentile_99_5: 889.740234375 - stdev: 123.98004913330078 - ncomponents: 1 - pixel_percentage: 0.019107142463326454 - shape: - - [19, 18, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_260.nii.gz - image_foreground_stats: - intensity: - - max: 856.9713134765625 - mean: 378.9545593261719 - median: 367.2734375 - min: 91.818359375 - percentile: [168.33364868164062, 267.80352783203125, 512.6524658203125, 703.9407348632812] - percentile_00_5: 168.33364868164062 - percentile_10_0: 267.80352783203125 - percentile_90_0: 512.6524658203125 - percentile_99_5: 703.9407348632812 - stdev: 100.29517364501953 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 29] - intensity: - - max: 1010.001953125 - mean: 473.0717468261719 - median: 482.04638671875 - min: 0.0 - percentile: [15.303059577941895, 114.77294921875, 772.8045043945312, 887.5774536132812] - percentile_00_5: 15.303059577941895 - percentile_10_0: 114.77294921875 - percentile_90_0: 772.8045043945312 - percentile_99_5: 887.5774536132812 - stdev: 241.12274169921875 - shape: - - [35, 53, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_260.nii.gz - label_stats: - image_intensity: - - max: 856.9713134765625 - mean: 378.9545593261719 - median: 367.2734375 - min: 91.818359375 - percentile: [168.33364868164062, 267.80352783203125, 512.6524658203125, 703.9407348632812] - percentile_00_5: 168.33364868164062 - percentile_10_0: 267.80352783203125 - percentile_90_0: 512.6524658203125 - percentile_99_5: 703.9407348632812 - stdev: 100.29517364501953 - label: - - image_intensity: - - max: 1010.001953125 - mean: 478.8211364746094 - median: 505.0009765625 - min: 0.0 - percentile: [15.303059577941895, 114.77294921875, 780.4560546875, 887.5774536132812] - percentile_00_5: 15.303059577941895 - percentile_10_0: 114.77294921875 - percentile_90_0: 780.4560546875 - percentile_99_5: 887.5774536132812 - stdev: 245.973876953125 - ncomponents: 1 - pixel_percentage: 0.9424296021461487 - shape: - - [35, 53, 29] - - image_intensity: - - max: 757.50146484375 - mean: 392.5639953613281 - median: 382.57647705078125 - min: 145.37905883789062 - percentile: [175.9851837158203, 283.1065979003906, 512.6524658203125, 665.68310546875] - percentile_00_5: 175.9851837158203 - percentile_10_0: 283.1065979003906 - percentile_90_0: 512.6524658203125 - percentile_99_5: 665.68310546875 - stdev: 93.32048797607422 - ncomponents: 1 - pixel_percentage: 0.02563435211777687 - shape: - - [20, 14, 11] - - image_intensity: - - max: 856.9713134765625 - mean: 368.03057861328125 - median: 351.9703674316406 - min: 91.818359375 - percentile: [160.68212890625, 252.50048828125, 512.6524658203125, 719.2437744140625] - percentile_00_5: 160.68212890625 - percentile_10_0: 252.50048828125 - percentile_90_0: 512.6524658203125 - percentile_99_5: 719.2437744140625 - stdev: 104.28356170654297 - ncomponents: 1 - pixel_percentage: 0.031936053186655045 - shape: - - [23, 26, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_360.nii.gz - image_foreground_stats: - intensity: - - max: 585.1136474609375 - mean: 273.99542236328125 - median: 261.1250915527344 - min: 19.342599868774414 - percentile: [82.20604705810547, 183.75469970703125, 386.85198974609375, 527.0858764648438] - percentile_00_5: 82.20604705810547 - percentile_10_0: 183.75469970703125 - percentile_90_0: 386.85198974609375 - percentile_99_5: 527.0858764648438 - stdev: 81.04881286621094 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 37] - intensity: - - max: 2272.75537109375 - mean: 360.275146484375 - median: 372.3450622558594 - min: 0.0 - percentile: [19.342599868774414, 130.5625457763672, 556.0997314453125, 652.812744140625] - percentile_00_5: 19.342599868774414 - percentile_10_0: 130.5625457763672 - percentile_90_0: 556.0997314453125 - percentile_99_5: 652.812744140625 - stdev: 164.23728942871094 - shape: - - [34, 49, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_360.nii.gz - label_stats: - image_intensity: - - max: 585.1136474609375 - mean: 273.99542236328125 - median: 261.1250915527344 - min: 19.342599868774414 - percentile: [82.20604705810547, 183.75469970703125, 386.85198974609375, 527.0858764648438] - percentile_00_5: 82.20604705810547 - percentile_10_0: 183.75469970703125 - percentile_90_0: 386.85198974609375 - percentile_99_5: 527.0858764648438 - stdev: 81.04881286621094 - label: - - image_intensity: - - max: 2272.75537109375 - mean: 364.58245849609375 - median: 382.016357421875 - min: 0.0 - percentile: [19.342599868774414, 125.72689819335938, 556.0997314453125, 652.812744140625] - percentile_00_5: 19.342599868774414 - percentile_10_0: 125.72689819335938 - percentile_90_0: 556.0997314453125 - percentile_99_5: 652.812744140625 - stdev: 166.13961791992188 - ncomponents: 1 - pixel_percentage: 0.952451229095459 - shape: - - [34, 49, 37] - - image_intensity: - - max: 585.1136474609375 - mean: 288.3284606933594 - median: 285.3033447265625 - min: 33.84954833984375 - percentile: [74.88004302978516, 193.42599487304688, 391.6876525878906, 539.24755859375] - percentile_00_5: 74.88004302978516 - percentile_10_0: 193.42599487304688 - percentile_90_0: 391.6876525878906 - percentile_99_5: 539.24755859375 - stdev: 80.30692291259766 - ncomponents: 1 - pixel_percentage: 0.021057071164250374 - shape: - - [19, 14, 14] - - image_intensity: - - max: 556.0997314453125 - mean: 262.60272216796875 - median: 246.61814880371094 - min: 19.342599868774414 - percentile: [87.8154067993164, 178.91905212402344, 372.3450622558594, 517.41455078125] - percentile_00_5: 87.8154067993164 - percentile_10_0: 178.91905212402344 - percentile_90_0: 372.3450622558594 - percentile_99_5: 517.41455078125 - stdev: 79.81839752197266 - ncomponents: 1 - pixel_percentage: 0.02649167738854885 - shape: - - [18, 24, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_203.nii.gz - image_foreground_stats: - intensity: - - max: 396839.8125 - mean: 174491.359375 - median: 169641.4375 - min: 12117.24609375 - percentile: [79155.9140625, 127231.0859375, 227198.359375, 354429.4375] - percentile_00_5: 79155.9140625 - percentile_10_0: 127231.0859375 - percentile_90_0: 227198.359375 - percentile_99_5: 354429.4375 - stdev: 44738.27734375 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 38] - intensity: - - max: 963321.0625 - mean: 226930.25 - median: 227198.359375 - min: 0.0 - percentile: [12117.24609375, 66644.8515625, 375634.625, 442279.46875] - percentile_00_5: 12117.24609375 - percentile_10_0: 66644.8515625 - percentile_90_0: 375634.625 - percentile_99_5: 442279.46875 - stdev: 110085.3515625 - shape: - - [34, 49, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_203.nii.gz - label_stats: - image_intensity: - - max: 396839.8125 - mean: 174491.359375 - median: 169641.4375 - min: 12117.24609375 - percentile: [79155.9140625, 127231.0859375, 227198.359375, 354429.4375] - percentile_00_5: 79155.9140625 - percentile_10_0: 127231.0859375 - percentile_90_0: 227198.359375 - percentile_99_5: 354429.4375 - stdev: 44738.27734375 - label: - - image_intensity: - - max: 963321.0625 - mean: 229381.359375 - median: 233256.984375 - min: 0.0 - percentile: [12117.24609375, 63615.54296875, 375634.625, 442279.46875] - percentile_00_5: 12117.24609375 - percentile_10_0: 63615.54296875 - percentile_90_0: 375634.625 - percentile_99_5: 442279.46875 - stdev: 111611.5859375 - ncomponents: 1 - pixel_percentage: 0.9553452730178833 - shape: - - [34, 49, 38] - - image_intensity: - - max: 315048.40625 - mean: 175886.671875 - median: 172670.75 - min: 12117.24609375 - percentile: [75732.7890625, 130260.3984375, 230227.671875, 288920.59375] - percentile_00_5: 75732.7890625 - percentile_10_0: 130260.3984375 - percentile_90_0: 230227.671875 - percentile_99_5: 288920.59375 - stdev: 40527.80859375 - ncomponents: 1 - pixel_percentage: 0.02410437911748886 - shape: - - [22, 16, 13] - - image_intensity: - - max: 396839.8125 - mean: 172854.703125 - median: 163582.828125 - min: 33322.42578125 - percentile: [87850.03125, 127231.0859375, 224169.046875, 374119.96875] - percentile_00_5: 87850.03125 - percentile_10_0: 127231.0859375 - percentile_90_0: 224169.046875 - percentile_99_5: 374119.96875 - stdev: 49169.6015625 - ncomponents: 1 - pixel_percentage: 0.020550325512886047 - shape: - - [20, 20, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_303.nii.gz - image_foreground_stats: - intensity: - - max: 862.768798828125 - mean: 387.2750549316406 - median: 365.58001708984375 - min: 73.11600494384766 - percentile: [186.18991088867188, 277.8408203125, 526.4352416992188, 757.0059204101562] - percentile_00_5: 186.18991088867188 - percentile_10_0: 277.8408203125 - percentile_90_0: 526.4352416992188 - percentile_99_5: 757.0059204101562 - stdev: 104.5514144897461 - image_stats: - channels: 1 - cropped_shape: - - [35, 48, 38] - intensity: - - max: 2559.06005859375 - mean: 544.05224609375 - median: 562.9932250976562 - min: 0.0 - percentile: [29.246400833129883, 226.65960693359375, 826.2108154296875, 950.508056640625] - percentile_00_5: 29.246400833129883 - percentile_10_0: 226.65960693359375 - percentile_90_0: 826.2108154296875 - percentile_99_5: 950.508056640625 - stdev: 232.74099731445312 - shape: - - [35, 48, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_303.nii.gz - label_stats: - image_intensity: - - max: 862.768798828125 - mean: 387.2750549316406 - median: 365.58001708984375 - min: 73.11600494384766 - percentile: [186.18991088867188, 277.8408203125, 526.4352416992188, 757.0059204101562] - percentile_00_5: 186.18991088867188 - percentile_10_0: 277.8408203125 - percentile_90_0: 526.4352416992188 - percentile_99_5: 757.0059204101562 - stdev: 104.5514144897461 - label: - - image_intensity: - - max: 2559.06005859375 - mean: 552.5816650390625 - median: 584.9280395507812 - min: 0.0 - percentile: [29.246400833129883, 219.34800720214844, 833.5223999023438, 950.508056640625] - percentile_00_5: 29.246400833129883 - percentile_10_0: 219.34800720214844 - percentile_90_0: 833.5223999023438 - percentile_99_5: 950.508056640625 - stdev: 234.75674438476562 - ncomponents: 1 - pixel_percentage: 0.9484022259712219 - shape: - - [35, 48, 38] - - image_intensity: - - max: 745.783203125 - mean: 386.12567138671875 - median: 365.58001708984375 - min: 73.11600494384766 - percentile: [166.59481811523438, 277.8408203125, 511.81201171875, 681.550537109375] - percentile_00_5: 166.59481811523438 - percentile_10_0: 277.8408203125 - percentile_90_0: 511.81201171875 - percentile_99_5: 681.550537109375 - stdev: 94.35441589355469 - ncomponents: 1 - pixel_percentage: 0.027537593618035316 - shape: - - [21, 16, 14] - - image_intensity: - - max: 862.768798828125 - mean: 388.59063720703125 - median: 358.2684020996094 - min: 160.85520935058594 - percentile: [209.66014099121094, 277.8408203125, 555.681640625, 799.34033203125] - percentile_00_5: 209.66014099121094 - percentile_10_0: 277.8408203125 - percentile_90_0: 555.681640625 - percentile_99_5: 799.34033203125 - stdev: 115.10491180419922 - ncomponents: 1 - pixel_percentage: 0.024060150608420372 - shape: - - [23, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_372.nii.gz - image_foreground_stats: - intensity: - - max: 912.9461669921875 - mean: 408.4577941894531 - median: 400.41497802734375 - min: 24.024898529052734 - percentile: [128.13279724121094, 272.2821960449219, 560.5809936523438, 725.4725952148438] - percentile_00_5: 128.13279724121094 - percentile_10_0: 272.2821960449219 - percentile_90_0: 560.5809936523438 - percentile_99_5: 725.4725952148438 - stdev: 113.02735137939453 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 34] - intensity: - - max: 1689.751220703125 - mean: 544.408203125 - median: 576.5975952148438 - min: 0.0 - percentile: [24.024898529052734, 176.18260192871094, 840.8714599609375, 944.9793701171875] - percentile_00_5: 24.024898529052734 - percentile_10_0: 176.18260192871094 - percentile_90_0: 840.8714599609375 - percentile_99_5: 944.9793701171875 - stdev: 246.838134765625 - shape: - - [36, 50, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_372.nii.gz - label_stats: - image_intensity: - - max: 912.9461669921875 - mean: 408.4577941894531 - median: 400.41497802734375 - min: 24.024898529052734 - percentile: [128.13279724121094, 272.2821960449219, 560.5809936523438, 725.4725952148438] - percentile_00_5: 128.13279724121094 - percentile_10_0: 272.2821960449219 - percentile_90_0: 560.5809936523438 - percentile_99_5: 725.4725952148438 - stdev: 113.02735137939453 - label: - - image_intensity: - - max: 1689.751220703125 - mean: 552.6123046875 - median: 600.6224975585938 - min: 0.0 - percentile: [24.024898529052734, 168.17430114746094, 848.8797607421875, 952.9876708984375] - percentile_00_5: 24.024898529052734 - percentile_10_0: 168.17430114746094 - percentile_90_0: 848.8797607421875 - percentile_99_5: 952.9876708984375 - stdev: 250.304443359375 - ncomponents: 1 - pixel_percentage: 0.9430882334709167 - shape: - - [36, 50, 34] - - image_intensity: - - max: 912.9461669921875 - mean: 417.93170166015625 - median: 408.42327880859375 - min: 72.07469940185547 - percentile: [136.14109802246094, 288.2987976074219, 560.5809936523438, 722.7490844726562] - percentile_00_5: 136.14109802246094 - percentile_10_0: 288.2987976074219 - percentile_90_0: 560.5809936523438 - percentile_99_5: 722.7490844726562 - stdev: 108.55440521240234 - ncomponents: 1 - pixel_percentage: 0.028611110523343086 - shape: - - [21, 16, 12] - - image_intensity: - - max: 912.9461669921875 - mean: 398.8799133300781 - median: 384.39837646484375 - min: 24.024898529052734 - percentile: [112.11619567871094, 264.2738952636719, 552.5726928710938, 723.5096435546875] - percentile_00_5: 112.11619567871094 - percentile_10_0: 264.2738952636719 - percentile_90_0: 552.5726928710938 - percentile_99_5: 723.5096435546875 - stdev: 116.5963134765625 - ncomponents: 1 - pixel_percentage: 0.028300654143095016 - shape: - - [22, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_311.nii.gz - image_foreground_stats: - intensity: - - max: 688.9992065429688 - mean: 315.7151184082031 - median: 305.71002197265625 - min: 67.94719696044922 - percentile: [135.89439392089844, 218.39422607421875, 426.94708251953125, 611.4200439453125] - percentile_00_5: 135.89439392089844 - percentile_10_0: 218.39422607421875 - percentile_90_0: 426.94708251953125 - percentile_99_5: 611.4200439453125 - stdev: 86.40185546875 - image_stats: - channels: 1 - cropped_shape: - - [37, 49, 37] - intensity: - - max: 2256.28662109375 - mean: 432.28594970703125 - median: 436.6837463378906 - min: 0.0 - percentile: [29.105270385742188, 194.1049346923828, 664.7098999023438, 786.0516967773438] - percentile_00_5: 29.105270385742188 - percentile_10_0: 194.1049346923828 - percentile_90_0: 664.7098999023438 - percentile_99_5: 786.0516967773438 - stdev: 179.66094970703125 - shape: - - [37, 49, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_311.nii.gz - label_stats: - image_intensity: - - max: 688.9992065429688 - mean: 315.7151184082031 - median: 305.71002197265625 - min: 67.94719696044922 - percentile: [135.89439392089844, 218.39422607421875, 426.94708251953125, 611.4200439453125] - percentile_00_5: 135.89439392089844 - percentile_10_0: 218.39422607421875 - percentile_90_0: 426.94708251953125 - percentile_99_5: 611.4200439453125 - stdev: 86.40185546875 - label: - - image_intensity: - - max: 2256.28662109375 - mean: 438.127197265625 - median: 451.23638916015625 - min: 0.0 - percentile: [29.105270385742188, 194.1049346923828, 664.7098999023438, 786.0516967773438] - percentile_00_5: 29.105270385742188 - percentile_10_0: 194.1049346923828 - percentile_90_0: 664.7098999023438 - percentile_99_5: 786.0516967773438 - stdev: 181.12527465820312 - ncomponents: 1 - pixel_percentage: 0.9522815942764282 - shape: - - [37, 49, 37] - - image_intensity: - - max: 664.7098999023438 - mean: 317.62615966796875 - median: 305.71002197265625 - min: 72.76317596435547 - percentile: [126.1577377319336, 223.210205078125, 422.131103515625, 617.1031494140625] - percentile_00_5: 126.1577377319336 - percentile_10_0: 223.210205078125 - percentile_90_0: 422.131103515625 - percentile_99_5: 617.1031494140625 - stdev: 83.84825134277344 - ncomponents: 1 - pixel_percentage: 0.023330004885792732 - shape: - - [24, 17, 13] - - image_intensity: - - max: 688.9992065429688 - mean: 313.88702392578125 - median: 300.78936767578125 - min: 67.94719696044922 - percentile: [141.5531768798828, 218.39422607421875, 436.6837463378906, 599.97900390625] - percentile_00_5: 141.5531768798828 - percentile_10_0: 218.39422607421875 - percentile_90_0: 436.6837463378906 - percentile_99_5: 599.97900390625 - stdev: 88.73741912841797 - ncomponents: 1 - pixel_percentage: 0.024388425052165985 - shape: - - [22, 22, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_244.nii.gz - image_foreground_stats: - intensity: - - max: 928.0859985351562 - mean: 366.7692565917969 - median: 348.8550109863281 - min: 26.32868003845215 - percentile: [98.73255157470703, 243.540283203125, 526.5736083984375, 756.9495239257812] - percentile_00_5: 98.73255157470703 - percentile_10_0: 243.540283203125 - percentile_90_0: 526.5736083984375 - percentile_99_5: 756.9495239257812 - stdev: 119.13725280761719 - image_stats: - channels: 1 - cropped_shape: - - [38, 53, 30] - intensity: - - max: 2270.8486328125 - mean: 474.25836181640625 - median: 487.08056640625 - min: 0.0 - percentile: [19.746509552001953, 125.06123352050781, 770.1138916015625, 901.7572631835938] - percentile_00_5: 19.746509552001953 - percentile_10_0: 125.06123352050781 - percentile_90_0: 770.1138916015625 - percentile_99_5: 901.7572631835938 - stdev: 243.93109130859375 - shape: - - [38, 53, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_244.nii.gz - label_stats: - image_intensity: - - max: 928.0859985351562 - mean: 366.7692565917969 - median: 348.8550109863281 - min: 26.32868003845215 - percentile: [98.73255157470703, 243.540283203125, 526.5736083984375, 756.9495239257812] - percentile_00_5: 98.73255157470703 - percentile_10_0: 243.540283203125 - percentile_90_0: 526.5736083984375 - percentile_99_5: 756.9495239257812 - stdev: 119.13725280761719 - label: - - image_intensity: - - max: 2270.8486328125 - mean: 480.2854309082031 - median: 506.82708740234375 - min: 0.0 - percentile: [19.746509552001953, 118.47905731201172, 776.696044921875, 901.7572631835938] - percentile_00_5: 19.746509552001953 - percentile_10_0: 118.47905731201172 - percentile_90_0: 776.696044921875 - percentile_99_5: 901.7572631835938 - stdev: 247.7069854736328 - ncomponents: 1 - pixel_percentage: 0.9469050168991089 - shape: - - [38, 53, 30] - - image_intensity: - - max: 796.4425659179688 - mean: 366.6893005371094 - median: 348.8550109863281 - min: 26.32868003845215 - percentile: [85.56820678710938, 243.540283203125, 519.991455078125, 750.6309204101562] - percentile_00_5: 85.56820678710938 - percentile_10_0: 243.540283203125 - percentile_90_0: 519.991455078125 - percentile_99_5: 750.6309204101562 - stdev: 117.12779235839844 - ncomponents: 1 - pixel_percentage: 0.028086725622415543 - shape: - - [23, 17, 13] - - image_intensity: - - max: 928.0859985351562 - mean: 366.85906982421875 - median: 342.2728271484375 - min: 32.910850524902344 - percentile: [135.2635955810547, 236.95811462402344, 533.15576171875, 759.9111938476562] - percentile_00_5: 135.2635955810547 - percentile_10_0: 236.95811462402344 - percentile_90_0: 533.15576171875 - percentile_99_5: 759.9111938476562 - stdev: 121.35433959960938 - ncomponents: 1 - pixel_percentage: 0.025008276104927063 - shape: - - [24, 25, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_327.nii.gz - image_foreground_stats: - intensity: - - max: 354205.1875 - mean: 174695.921875 - median: 171735.859375 - min: 25044.8125 - percentile: [82290.09375, 125224.0625, 228981.140625, 304115.5625] - percentile_00_5: 82290.09375 - percentile_10_0: 125224.0625 - percentile_90_0: 228981.140625 - percentile_99_5: 304115.5625 - stdev: 41257.609375 - image_stats: - channels: 1 - cropped_shape: - - [36, 54, 27] - intensity: - - max: 536674.5625 - mean: 209496.578125 - median: 207514.15625 - min: 0.0 - percentile: [7155.66064453125, 71556.609375, 329160.375, 372094.34375] - percentile_00_5: 7155.66064453125 - percentile_10_0: 71556.609375 - percentile_90_0: 329160.375 - percentile_99_5: 372094.34375 - stdev: 95244.6875 - shape: - - [36, 54, 27] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_327.nii.gz - label_stats: - image_intensity: - - max: 354205.1875 - mean: 174695.921875 - median: 171735.859375 - min: 25044.8125 - percentile: [82290.09375, 125224.0625, 228981.140625, 304115.5625] - percentile_00_5: 82290.09375 - percentile_10_0: 125224.0625 - percentile_90_0: 228981.140625 - percentile_99_5: 304115.5625 - stdev: 41257.609375 - label: - - image_intensity: - - max: 536674.5625 - mean: 212092.125 - median: 218247.65625 - min: 0.0 - percentile: [7155.66064453125, 67978.7734375, 332738.21875, 372094.34375] - percentile_00_5: 7155.66064453125 - percentile_10_0: 67978.7734375 - percentile_90_0: 332738.21875 - percentile_99_5: 372094.34375 - stdev: 97591.578125 - ncomponents: 1 - pixel_percentage: 0.9305936694145203 - shape: - - [36, 54, 27] - - image_intensity: - - max: 347049.53125 - mean: 177213.765625 - median: 171735.859375 - min: 25044.8125 - percentile: [78712.265625, 128801.890625, 232558.96875, 293382.09375] - percentile_00_5: 78712.265625 - percentile_10_0: 128801.890625 - percentile_90_0: 232558.96875 - percentile_99_5: 293382.09375 - stdev: 41064.06640625 - ncomponents: 1 - pixel_percentage: 0.03985672816634178 - shape: - - [24, 19, 11] - - image_intensity: - - max: 354205.1875 - mean: 171299.859375 - median: 164580.1875 - min: 57245.28515625 - percentile: [85867.9296875, 125224.0625, 225403.3125, 305010.03125] - percentile_00_5: 85867.9296875 - percentile_10_0: 125224.0625 - percentile_90_0: 225403.3125 - percentile_99_5: 305010.03125 - stdev: 41274.6484375 - ncomponents: 1 - pixel_percentage: 0.0295496117323637 - shape: - - [21, 22, 14] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_190.nii.gz - image_foreground_stats: - intensity: - - max: 413560.90625 - mean: 190916.28125 - median: 185613.953125 - min: 48845.7734375 - percentile: [91178.78125, 136768.171875, 250741.640625, 354945.96875] - percentile_00_5: 91178.78125 - percentile_10_0: 136768.171875 - percentile_90_0: 250741.640625 - percentile_99_5: 354945.96875 - stdev: 46336.0 - image_stats: - channels: 1 - cropped_shape: - - [37, 52, 30] - intensity: - - max: 1165785.875 - mean: 259422.734375 - median: 263767.1875 - min: 0.0 - percentile: [13025.5400390625, 100947.9375, 403791.75, 465663.0625] - percentile_00_5: 13025.5400390625 - percentile_10_0: 100947.9375 - percentile_90_0: 403791.75 - percentile_99_5: 465663.0625 - stdev: 116509.9921875 - shape: - - [37, 52, 30] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_190.nii.gz - label_stats: - image_intensity: - - max: 413560.90625 - mean: 190916.28125 - median: 185613.953125 - min: 48845.7734375 - percentile: [91178.78125, 136768.171875, 250741.640625, 354945.96875] - percentile_00_5: 91178.78125 - percentile_10_0: 136768.171875 - percentile_90_0: 250741.640625 - percentile_99_5: 354945.96875 - stdev: 46336.0 - label: - - image_intensity: - - max: 1165785.875 - mean: 263588.9375 - median: 273536.34375 - min: 0.0 - percentile: [13025.5400390625, 94435.1640625, 403791.75, 468919.4375] - percentile_00_5: 13025.5400390625 - percentile_10_0: 94435.1640625 - percentile_90_0: 403791.75 - percentile_99_5: 468919.4375 - stdev: 118181.109375 - ncomponents: 1 - pixel_percentage: 0.942671537399292 - shape: - - [37, 52, 30] - - image_intensity: - - max: 341920.4375 - mean: 188068.46875 - median: 185613.953125 - min: 48845.7734375 - percentile: [85708.0546875, 136768.171875, 244228.875, 296331.03125] - percentile_00_5: 85708.0546875 - percentile_10_0: 136768.171875 - percentile_90_0: 244228.875 - percentile_99_5: 296331.03125 - stdev: 41565.2421875 - ncomponents: 1 - pixel_percentage: 0.028846153989434242 - shape: - - [21, 17, 13] - - image_intensity: - - max: 413560.90625 - mean: 193800.46875 - median: 185613.953125 - min: 78153.2421875 - percentile: [104904.4453125, 140024.5625, 260510.796875, 364715.125] - percentile_00_5: 104904.4453125 - percentile_10_0: 140024.5625 - percentile_90_0: 260510.796875 - percentile_99_5: 364715.125 - stdev: 50549.03515625 - ncomponents: 1 - pixel_percentage: 0.028482329100370407 - shape: - - [19, 25, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_227.nii.gz - image_foreground_stats: - intensity: - - max: 945.2041625976562 - mean: 461.8701477050781 - median: 446.3464050292969 - min: 35.00756072998047 - percentile: [207.20098876953125, 332.57183837890625, 612.63232421875, 813.92578125] - percentile_00_5: 207.20098876953125 - percentile_10_0: 332.57183837890625 - percentile_90_0: 612.63232421875 - percentile_99_5: 813.92578125 - stdev: 110.96717834472656 - image_stats: - channels: 1 - cropped_shape: - - [36, 47, 36] - intensity: - - max: 1907.912109375 - mean: 573.5119018554688 - median: 586.3766479492188 - min: 0.0 - percentile: [22.36101531982422, 157.53402709960938, 918.948486328125, 1032.7230224609375] - percentile_00_5: 22.36101531982422 - percentile_10_0: 157.53402709960938 - percentile_90_0: 918.948486328125 - percentile_99_5: 1032.7230224609375 - stdev: 271.0556640625 - shape: - - [36, 47, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_227.nii.gz - label_stats: - image_intensity: - - max: 945.2041625976562 - mean: 461.8701477050781 - median: 446.3464050292969 - min: 35.00756072998047 - percentile: [207.20098876953125, 332.57183837890625, 612.63232421875, 813.92578125] - percentile_00_5: 207.20098876953125 - percentile_10_0: 332.57183837890625 - percentile_90_0: 612.63232421875 - percentile_99_5: 813.92578125 - stdev: 110.96717834472656 - label: - - image_intensity: - - max: 1907.912109375 - mean: 580.3922119140625 - median: 612.63232421875 - min: 0.0 - percentile: [17.503780364990234, 148.78213500976562, 918.948486328125, 1041.4749755859375] - percentile_00_5: 17.503780364990234 - percentile_10_0: 148.78213500976562 - percentile_90_0: 918.948486328125 - percentile_99_5: 1041.4749755859375 - stdev: 276.4502868652344 - ncomponents: 1 - pixel_percentage: 0.9419490694999695 - shape: - - [36, 47, 36] - - image_intensity: - - max: 840.1814575195312 - mean: 453.2408752441406 - median: 446.3464050292969 - min: 35.00756072998047 - percentile: [201.29347229003906, 332.57183837890625, 603.8804321289062, 762.3770141601562] - percentile_00_5: 201.29347229003906 - percentile_10_0: 332.57183837890625 - percentile_90_0: 603.8804321289062 - percentile_99_5: 762.3770141601562 - stdev: 105.2293930053711 - ncomponents: 1 - pixel_percentage: 0.03248949348926544 - shape: - - [24, 16, 15] - - image_intensity: - - max: 945.2041625976562 - mean: 472.8381652832031 - median: 463.8501892089844 - min: 52.5113410949707 - percentile: [216.87184143066406, 341.32373046875, 621.3842163085938, 866.4371337890625] - percentile_00_5: 216.87184143066406 - percentile_10_0: 341.32373046875 - percentile_90_0: 621.3842163085938 - percentile_99_5: 866.4371337890625 - stdev: 116.94219970703125 - ncomponents: 1 - pixel_percentage: 0.025561464950442314 - shape: - - [20, 21, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_090.nii.gz - image_foreground_stats: - intensity: - - max: 797.0291748046875 - mean: 370.7160949707031 - median: 356.2478942871094 - min: 30.19049835205078 - percentile: [144.91439819335938, 247.5620880126953, 519.2765502929688, 700.4195556640625] - percentile_00_5: 144.91439819335938 - percentile_10_0: 247.5620880126953 - percentile_90_0: 519.2765502929688 - percentile_99_5: 700.4195556640625 - stdev: 106.4747543334961 - image_stats: - channels: 1 - cropped_shape: - - [37, 50, 40] - intensity: - - max: 2294.47802734375 - mean: 514.8211059570312 - median: 543.428955078125 - min: 0.0 - percentile: [30.19049835205078, 205.29539489746094, 784.9529418945312, 899.6768798828125] - percentile_00_5: 30.19049835205078 - percentile_10_0: 205.29539489746094 - percentile_90_0: 784.9529418945312 - percentile_99_5: 899.6768798828125 - stdev: 223.40023803710938 - shape: - - [37, 50, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_090.nii.gz - label_stats: - image_intensity: - - max: 797.0291748046875 - mean: 370.7160949707031 - median: 356.2478942871094 - min: 30.19049835205078 - percentile: [144.91439819335938, 247.5620880126953, 519.2765502929688, 700.4195556640625] - percentile_00_5: 144.91439819335938 - percentile_10_0: 247.5620880126953 - percentile_90_0: 519.2765502929688 - percentile_99_5: 700.4195556640625 - stdev: 106.4747543334961 - label: - - image_intensity: - - max: 2294.47802734375 - mean: 523.057861328125 - median: 561.5432739257812 - min: 0.0 - percentile: [30.19049835205078, 205.29539489746094, 790.9910888671875, 905.7149658203125] - percentile_00_5: 30.19049835205078 - percentile_10_0: 205.29539489746094 - percentile_90_0: 790.9910888671875 - percentile_99_5: 905.7149658203125 - stdev: 225.5160675048828 - ncomponents: 1 - pixel_percentage: 0.9459324479103088 - shape: - - [37, 50, 40] - - image_intensity: - - max: 797.0291748046875 - mean: 384.75457763671875 - median: 374.3621826171875 - min: 30.19049835205078 - percentile: [164.32687377929688, 265.6763916015625, 531.352783203125, 694.3814697265625] - percentile_00_5: 164.32687377929688 - percentile_10_0: 265.6763916015625 - percentile_90_0: 531.352783203125 - percentile_99_5: 694.3814697265625 - stdev: 103.74689483642578 - ncomponents: 1 - pixel_percentage: 0.027621621266007423 - shape: - - [24, 17, 16] - - image_intensity: - - max: 772.8767700195312 - mean: 356.05352783203125 - median: 338.1335754394531 - min: 84.53339385986328 - percentile: [136.2195281982422, 235.4858856201172, 501.16229248046875, 701.7477416992188] - percentile_00_5: 136.2195281982422 - percentile_10_0: 235.4858856201172 - percentile_90_0: 501.16229248046875 - percentile_99_5: 701.7477416992188 - stdev: 107.30791473388672 - ncomponents: 1 - pixel_percentage: 0.026445945724844933 - shape: - - [19, 21, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_356.nii.gz - image_foreground_stats: - intensity: - - max: 1125.0599365234375 - mean: 494.73101806640625 - median: 481.11114501953125 - min: 22.205129623413086 - percentile: [255.1739501953125, 355.2820739746094, 651.3504638671875, 873.4017944335938] - percentile_00_5: 255.1739501953125 - percentile_10_0: 355.2820739746094 - percentile_90_0: 651.3504638671875 - percentile_99_5: 873.4017944335938 - stdev: 118.4688720703125 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 37] - intensity: - - max: 3789.675537109375 - mean: 688.1344604492188 - median: 695.7607421875 - min: 0.0 - percentile: [44.41025924682617, 310.871826171875, 1073.2479248046875, 1236.0855712890625] - percentile_00_5: 44.41025924682617 - percentile_10_0: 310.871826171875 - percentile_90_0: 1073.2479248046875 - percentile_99_5: 1236.0855712890625 - stdev: 299.58343505859375 - shape: - - [36, 51, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_356.nii.gz - label_stats: - image_intensity: - - max: 1125.0599365234375 - mean: 494.73101806640625 - median: 481.11114501953125 - min: 22.205129623413086 - percentile: [255.1739501953125, 355.2820739746094, 651.3504638671875, 873.4017944335938] - percentile_00_5: 255.1739501953125 - percentile_10_0: 355.2820739746094 - percentile_90_0: 651.3504638671875 - percentile_99_5: 873.4017944335938 - stdev: 118.4688720703125 - label: - - image_intensity: - - max: 3789.675537109375 - mean: 698.627685546875 - median: 717.9658813476562 - min: 0.0 - percentile: [37.008548736572266, 303.4701232910156, 1080.649658203125, 1243.4873046875] - percentile_00_5: 37.008548736572266 - percentile_10_0: 303.4701232910156 - percentile_90_0: 1080.649658203125 - percentile_99_5: 1243.4873046875 - stdev: 302.8509216308594 - ncomponents: 1 - pixel_percentage: 0.94853675365448 - shape: - - [36, 51, 37] - - image_intensity: - - max: 1021.4359741210938 - mean: 511.34173583984375 - median: 495.9145812988281 - min: 22.205129623413086 - percentile: [251.65814208984375, 377.4872131347656, 673.5556030273438, 858.598388671875] - percentile_00_5: 251.65814208984375 - percentile_10_0: 377.4872131347656 - percentile_90_0: 673.5556030273438 - percentile_99_5: 858.598388671875 - stdev: 116.10697174072266 - ncomponents: 1 - pixel_percentage: 0.027424482628703117 - shape: - - [23, 17, 16] - - image_intensity: - - max: 1125.0599365234375 - mean: 475.78082275390625 - median: 458.9060363769531 - min: 214.64959716796875 - percentile: [259.0598449707031, 340.4786682128906, 629.1453247070312, 873.4017944335938] - percentile_00_5: 259.0598449707031 - percentile_10_0: 340.4786682128906 - percentile_90_0: 629.1453247070312 - percentile_99_5: 873.4017944335938 - stdev: 118.29232025146484 - ncomponents: 1 - pixel_percentage: 0.02403874509036541 - shape: - - [22, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_235.nii.gz - image_foreground_stats: - intensity: - - max: 681.4690551757812 - mean: 314.4822998046875 - median: 293.8444519042969 - min: 25.008039474487305 - percentile: [107.50330352783203, 206.3163299560547, 456.396728515625, 625.2009887695312] - percentile_00_5: 107.50330352783203 - percentile_10_0: 206.3163299560547 - percentile_90_0: 456.396728515625 - percentile_99_5: 625.2009887695312 - stdev: 101.93476104736328 - image_stats: - channels: 1 - cropped_shape: - - [37, 58, 35] - intensity: - - max: 1012.8256225585938 - mean: 389.039794921875 - median: 387.6246032714844 - min: 0.0 - percentile: [18.75602912902832, 131.29220581054688, 631.4530029296875, 743.9891967773438] - percentile_00_5: 18.75602912902832 - percentile_10_0: 131.29220581054688 - percentile_90_0: 631.4530029296875 - percentile_99_5: 743.9891967773438 - stdev: 183.6175079345703 - shape: - - [37, 58, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_235.nii.gz - label_stats: - image_intensity: - - max: 681.4690551757812 - mean: 314.4822998046875 - median: 293.8444519042969 - min: 25.008039474487305 - percentile: [107.50330352783203, 206.3163299560547, 456.396728515625, 625.2009887695312] - percentile_00_5: 107.50330352783203 - percentile_10_0: 206.3163299560547 - percentile_90_0: 456.396728515625 - percentile_99_5: 625.2009887695312 - stdev: 101.93476104736328 - label: - - image_intensity: - - max: 1012.8256225585938 - mean: 392.18475341796875 - median: 393.8766174316406 - min: 0.0 - percentile: [18.75602912902832, 125.04019927978516, 631.4530029296875, 750.2412109375] - percentile_00_5: 18.75602912902832 - percentile_10_0: 125.04019927978516 - percentile_90_0: 631.4530029296875 - percentile_99_5: 750.2412109375 - stdev: 185.62026977539062 - ncomponents: 1 - pixel_percentage: 0.959526002407074 - shape: - - [37, 58, 35] - - image_intensity: - - max: 662.7130737304688 - mean: 307.95904541015625 - median: 293.8444519042969 - min: 56.268089294433594 - percentile: [108.72245025634766, 200.06431579589844, 431.388671875, 593.94091796875] - percentile_00_5: 108.72245025634766 - percentile_10_0: 200.06431579589844 - percentile_90_0: 431.388671875 - percentile_99_5: 593.94091796875 - stdev: 93.91361999511719 - ncomponents: 1 - pixel_percentage: 0.019691118970513344 - shape: - - [20, 18, 13] - - image_intensity: - - max: 681.4690551757812 - mean: 320.662841796875 - median: 300.0964660644531 - min: 25.008039474487305 - percentile: [115.03697204589844, 206.3163299560547, 481.4047546386719, 637.7050170898438] - percentile_00_5: 115.03697204589844 - percentile_10_0: 206.3163299560547 - percentile_90_0: 481.4047546386719 - percentile_99_5: 637.7050170898438 - stdev: 108.63050079345703 - ncomponents: 1 - pixel_percentage: 0.020782852545380592 - shape: - - [16, 27, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_335.nii.gz - image_foreground_stats: - intensity: - - max: 767.2092895507812 - mean: 386.28961181640625 - median: 383.6046447753906 - min: 99.45305633544922 - percentile: [146.72877502441406, 269.9440002441406, 497.2652893066406, 646.4448852539062] - percentile_00_5: 146.72877502441406 - percentile_10_0: 269.9440002441406 - percentile_90_0: 497.2652893066406 - percentile_99_5: 646.4448852539062 - stdev: 91.85408020019531 - image_stats: - channels: 1 - cropped_shape: - - [32, 47, 41] - intensity: - - max: 1044.257080078125 - mean: 503.4942321777344 - median: 525.680419921875 - min: 0.0 - percentile: [35.51894760131836, 206.00990295410156, 753.001708984375, 880.8699340820312] - percentile_00_5: 35.51894760131836 - percentile_10_0: 206.00990295410156 - percentile_90_0: 753.001708984375 - percentile_99_5: 880.8699340820312 - stdev: 204.63333129882812 - shape: - - [32, 47, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_335.nii.gz - label_stats: - image_intensity: - - max: 767.2092895507812 - mean: 386.28961181640625 - median: 383.6046447753906 - min: 99.45305633544922 - percentile: [146.72877502441406, 269.9440002441406, 497.2652893066406, 646.4448852539062] - percentile_00_5: 146.72877502441406 - percentile_10_0: 269.9440002441406 - percentile_90_0: 497.2652893066406 - percentile_99_5: 646.4448852539062 - stdev: 91.85408020019531 - label: - - image_intensity: - - max: 1044.257080078125 - mean: 508.51287841796875 - median: 539.8880004882812 - min: 0.0 - percentile: [35.51894760131836, 206.00990295410156, 753.001708984375, 880.8699340820312] - percentile_00_5: 35.51894760131836 - percentile_10_0: 206.00990295410156 - percentile_90_0: 753.001708984375 - percentile_99_5: 880.8699340820312 - stdev: 206.623291015625 - ncomponents: 1 - pixel_percentage: 0.9589387774467468 - shape: - - [32, 47, 41] - - image_intensity: - - max: 767.2092895507812 - mean: 375.7640380859375 - median: 369.3970642089844 - min: 99.45305633544922 - percentile: [127.86821746826172, 255.73643493652344, 502.94781494140625, 665.5545043945312] - percentile_00_5: 127.86821746826172 - percentile_10_0: 255.73643493652344 - percentile_90_0: 502.94781494140625 - percentile_99_5: 665.5545043945312 - stdev: 98.71459197998047 - ncomponents: 1 - pixel_percentage: 0.02048196643590927 - shape: - - [19, 17, 15] - - image_intensity: - - max: 745.89794921875 - mean: 396.7654113769531 - median: 397.8122253417969 - min: 120.7644271850586 - percentile: [187.1138153076172, 291.25537109375, 497.2652893066406, 644.0298461914062] - percentile_00_5: 187.1138153076172 - percentile_10_0: 291.25537109375 - percentile_90_0: 497.2652893066406 - percentile_99_5: 644.0298461914062 - stdev: 83.16218566894531 - ncomponents: 1 - pixel_percentage: 0.020579269155859947 - shape: - - [18, 18, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_248.nii.gz - image_foreground_stats: - intensity: - - max: 869.9393310546875 - mean: 366.7991638183594 - median: 349.40185546875 - min: 49.91455078125 - percentile: [142.61300659179688, 242.44210815429688, 520.5374755859375, 754.529296875] - percentile_00_5: 142.61300659179688 - percentile_10_0: 242.44210815429688 - percentile_90_0: 520.5374755859375 - percentile_99_5: 754.529296875 - stdev: 113.25048828125 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 38] - intensity: - - max: 1789.793212890625 - mean: 489.76898193359375 - median: 499.1455078125 - min: 0.0 - percentile: [28.522600173950195, 164.00494384765625, 784.3715209960938, 877.0699462890625] - percentile_00_5: 28.522600173950195 - percentile_10_0: 164.00494384765625 - percentile_90_0: 784.3715209960938 - percentile_99_5: 877.0699462890625 - stdev: 231.8172607421875 - shape: - - [36, 50, 38] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_248.nii.gz - label_stats: - image_intensity: - - max: 869.9393310546875 - mean: 366.7991638183594 - median: 349.40185546875 - min: 49.91455078125 - percentile: [142.61300659179688, 242.44210815429688, 520.5374755859375, 754.529296875] - percentile_00_5: 142.61300659179688 - percentile_10_0: 242.44210815429688 - percentile_90_0: 520.5374755859375 - percentile_99_5: 754.529296875 - stdev: 113.25048828125 - label: - - image_intensity: - - max: 1789.793212890625 - mean: 496.2769470214844 - median: 520.5374755859375 - min: 0.0 - percentile: [28.522600173950195, 156.87429809570312, 784.3715209960938, 884.2006225585938] - percentile_00_5: 28.522600173950195 - percentile_10_0: 156.87429809570312 - percentile_90_0: 784.3715209960938 - percentile_99_5: 884.2006225585938 - stdev: 234.65269470214844 - ncomponents: 1 - pixel_percentage: 0.9497368335723877 - shape: - - [36, 50, 38] - - image_intensity: - - max: 869.9393310546875 - mean: 374.1645202636719 - median: 356.5325012207031 - min: 49.91455078125 - percentile: [121.22105407714844, 256.7033996582031, 520.5374755859375, 741.5875854492188] - percentile_00_5: 121.22105407714844 - percentile_10_0: 256.7033996582031 - percentile_90_0: 520.5374755859375 - percentile_99_5: 741.5875854492188 - stdev: 110.07736206054688 - ncomponents: 1 - pixel_percentage: 0.02758771926164627 - shape: - - [22, 17, 14] - - image_intensity: - - max: 827.1553955078125 - mean: 357.8381652832031 - median: 335.14056396484375 - min: 114.09040069580078 - percentile: [164.00494384765625, 235.3114471435547, 520.5374755859375, 768.3275146484375] - percentile_00_5: 164.00494384765625 - percentile_10_0: 235.3114471435547 - percentile_90_0: 520.5374755859375 - percentile_99_5: 768.3275146484375 - stdev: 116.36811065673828 - ncomponents: 1 - pixel_percentage: 0.022675437852740288 - shape: - - [21, 21, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_155.nii.gz - image_foreground_stats: - intensity: - - max: 385370.65625 - mean: 158287.359375 - median: 150797.21875 - min: 23457.345703125 - percentile: [60318.88671875, 110584.625, 217818.203125, 331753.875] - percentile_00_5: 60318.88671875 - percentile_10_0: 110584.625 - percentile_90_0: 217818.203125 - percentile_99_5: 331753.875 - stdev: 46728.1953125 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 37] - intensity: - - max: 730528.75 - mean: 208862.1875 - median: 207765.0625 - min: 0.0 - percentile: [13404.197265625, 77074.1328125, 331753.875, 371966.46875] - percentile_00_5: 13404.197265625 - percentile_10_0: 77074.1328125 - percentile_90_0: 331753.875 - percentile_99_5: 371966.46875 - stdev: 95119.7421875 - shape: - - [34, 53, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_155.nii.gz - label_stats: - image_intensity: - - max: 385370.65625 - mean: 158287.359375 - median: 150797.21875 - min: 23457.345703125 - percentile: [60318.88671875, 110584.625, 217818.203125, 331753.875] - percentile_00_5: 60318.88671875 - percentile_10_0: 110584.625 - percentile_90_0: 217818.203125 - percentile_99_5: 331753.875 - stdev: 46728.1953125 - label: - - image_intensity: - - max: 730528.75 - mean: 211710.6875 - median: 214467.15625 - min: 0.0 - percentile: [10053.1484375, 73723.0859375, 331753.875, 371966.46875] - percentile_00_5: 10053.1484375 - percentile_10_0: 73723.0859375 - percentile_90_0: 331753.875 - percentile_99_5: 371966.46875 - stdev: 96344.171875 - ncomponents: 1 - pixel_percentage: 0.9466808438301086 - shape: - - [34, 53, 37] - - image_intensity: - - max: 335104.9375 - mean: 153124.59375 - median: 147446.171875 - min: 26808.39453125 - percentile: [60318.88671875, 107233.578125, 204414.015625, 287436.34375] - percentile_00_5: 60318.88671875 - percentile_10_0: 107233.578125 - percentile_90_0: 204414.015625 - percentile_99_5: 287436.34375 - stdev: 40107.91015625 - ncomponents: 1 - pixel_percentage: 0.030686624348163605 - shape: - - [22, 18, 16] - - image_intensity: - - max: 385370.65625 - mean: 165287.34375 - median: 150797.21875 - min: 23457.345703125 - percentile: [58777.40625, 113935.6796875, 244626.59375, 355211.21875] - percentile_00_5: 58777.40625 - percentile_10_0: 113935.6796875 - percentile_90_0: 244626.59375 - percentile_99_5: 355211.21875 - stdev: 53645.55078125 - ncomponents: 1 - pixel_percentage: 0.02263251133263111 - shape: - - [17, 23, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_036.nii.gz - image_foreground_stats: - intensity: - - max: 1221.3853759765625 - mean: 457.4119567871094 - median: 438.2618103027344 - min: 93.40005493164062 - percentile: [212.23367309570312, 330.4925231933594, 603.508056640625, 905.2620849609375] - percentile_00_5: 212.23367309570312 - percentile_10_0: 330.4925231933594 - percentile_90_0: 603.508056640625 - percentile_99_5: 905.2620849609375 - stdev: 117.14227294921875 - image_stats: - channels: 1 - cropped_shape: - - [36, 47, 39] - intensity: - - max: 3484.540771484375 - mean: 659.357666015625 - median: 675.354248046875 - min: 0.0 - percentile: [43.10771942138672, 287.3847961425781, 1020.2160034179688, 1149.5391845703125] - percentile_00_5: 43.10771942138672 - percentile_10_0: 287.3847961425781 - percentile_90_0: 1020.2160034179688 - percentile_99_5: 1149.5391845703125 - stdev: 285.1313781738281 - shape: - - [36, 47, 39] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_036.nii.gz - label_stats: - image_intensity: - - max: 1221.3853759765625 - mean: 457.4119567871094 - median: 438.2618103027344 - min: 93.40005493164062 - percentile: [212.23367309570312, 330.4925231933594, 603.508056640625, 905.2620849609375] - percentile_00_5: 212.23367309570312 - percentile_10_0: 330.4925231933594 - percentile_90_0: 603.508056640625 - percentile_99_5: 905.2620849609375 - stdev: 117.14227294921875 - label: - - image_intensity: - - max: 3484.540771484375 - mean: 670.6995849609375 - median: 696.9081420898438 - min: 0.0 - percentile: [43.10771942138672, 280.2001647949219, 1027.400634765625, 1149.5391845703125] - percentile_00_5: 43.10771942138672 - percentile_10_0: 280.2001647949219 - percentile_90_0: 1027.400634765625 - percentile_99_5: 1149.5391845703125 - stdev: 287.5346374511719 - ncomponents: 1 - pixel_percentage: 0.9468236565589905 - shape: - - [36, 47, 39] - - image_intensity: - - max: 1221.3853759765625 - mean: 456.16705322265625 - median: 445.4464416503906 - min: 114.95391845703125 - percentile: [208.35397338867188, 337.6771240234375, 581.9542236328125, 790.3081665039062] - percentile_00_5: 208.35397338867188 - percentile_10_0: 337.6771240234375 - percentile_90_0: 581.9542236328125 - percentile_99_5: 790.3081665039062 - stdev: 104.7464828491211 - ncomponents: 1 - pixel_percentage: 0.02802024595439434 - shape: - - [24, 16, 14] - - image_intensity: - - max: 1013.0314331054688 - mean: 458.798583984375 - median: 438.2618103027344 - min: 93.40005493164062 - percentile: [222.7232208251953, 323.3078918457031, 625.0619506835938, 924.6961669921875] - percentile_00_5: 222.7232208251953 - percentile_10_0: 323.3078918457031 - percentile_90_0: 625.0619506835938 - percentile_99_5: 924.6961669921875 - stdev: 129.5465545654297 - ncomponents: 1 - pixel_percentage: 0.025156088173389435 - shape: - - [21, 22, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_136.nii.gz - image_foreground_stats: - intensity: - - max: 314371.4375 - mean: 157714.078125 - median: 152516.84375 - min: 24900.708984375 - percentile: [65551.1171875, 108940.6015625, 211656.03125, 273720.875] - percentile_00_5: 65551.1171875 - percentile_10_0: 108940.6015625 - percentile_90_0: 211656.03125 - percentile_99_5: 273720.875 - stdev: 40445.0625 - image_stats: - channels: 1 - cropped_shape: - - [34, 49, 41] - intensity: - - max: 638080.6875 - mean: 212730.34375 - median: 220993.796875 - min: 0.0 - percentile: [9337.765625, 74702.125, 333046.96875, 379735.8125] - percentile_00_5: 9337.765625 - percentile_10_0: 74702.125 - percentile_90_0: 333046.96875 - percentile_99_5: 379735.8125 - stdev: 96317.7109375 - shape: - - [34, 49, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_136.nii.gz - label_stats: - image_intensity: - - max: 314371.4375 - mean: 157714.078125 - median: 152516.84375 - min: 24900.708984375 - percentile: [65551.1171875, 108940.6015625, 211656.03125, 273720.875] - percentile_00_5: 65551.1171875 - percentile_10_0: 108940.6015625 - percentile_90_0: 211656.03125 - percentile_99_5: 273720.875 - stdev: 40445.0625 - label: - - image_intensity: - - max: 638080.6875 - mean: 215093.375 - median: 227218.96875 - min: 0.0 - percentile: [9337.765625, 74702.125, 333046.96875, 382848.40625] - percentile_00_5: 9337.765625 - percentile_10_0: 74702.125 - percentile_90_0: 333046.96875 - percentile_99_5: 382848.40625 - stdev: 97312.46875 - ncomponents: 1 - pixel_percentage: 0.9588176608085632 - shape: - - [34, 49, 41] - - image_intensity: - - max: 270795.21875 - mean: 161647.828125 - median: 158742.015625 - min: 24900.708984375 - percentile: [59823.953125, 118278.3671875, 211656.03125, 264570.03125] - percentile_00_5: 59823.953125 - percentile_10_0: 118278.3671875 - percentile_90_0: 211656.03125 - percentile_99_5: 264570.03125 - stdev: 37100.3203125 - ncomponents: 1 - pixel_percentage: 0.021154804155230522 - shape: - - [20, 15, 15] - - image_intensity: - - max: 314371.4375 - mean: 153558.921875 - median: 146291.671875 - min: 46688.828125 - percentile: [74702.125, 105828.015625, 211656.03125, 292583.34375] - percentile_00_5: 74702.125 - percentile_10_0: 105828.015625 - percentile_90_0: 211656.03125 - percentile_99_5: 292583.34375 - stdev: 43314.6640625 - ncomponents: 1 - pixel_percentage: 0.02002752386033535 - shape: - - [17, 22, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_381.nii.gz - image_foreground_stats: - intensity: - - max: 914.63720703125 - mean: 430.5062561035156 - median: 406.5054016113281 - min: 128.72671508789062 - percentile: [223.57797241210938, 311.6541442871094, 575.8826904296875, 833.3361206054688] - percentile_00_5: 223.57797241210938 - percentile_10_0: 311.6541442871094 - percentile_90_0: 575.8826904296875 - percentile_99_5: 833.3361206054688 - stdev: 111.25676727294922 - image_stats: - channels: 1 - cropped_shape: - - [33, 49, 37] - intensity: - - max: 2818.4375 - mean: 563.1250610351562 - median: 582.6577758789062 - min: 0.0 - percentile: [27.100360870361328, 203.25270080566406, 880.76171875, 1009.4884643554688] - percentile_00_5: 27.100360870361328 - percentile_10_0: 203.25270080566406 - percentile_90_0: 880.76171875 - percentile_99_5: 1009.4884643554688 - stdev: 254.63150024414062 - shape: - - [33, 49, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_381.nii.gz - label_stats: - image_intensity: - - max: 914.63720703125 - mean: 430.5062561035156 - median: 406.5054016113281 - min: 128.72671508789062 - percentile: [223.57797241210938, 311.6541442871094, 575.8826904296875, 833.3361206054688] - percentile_00_5: 223.57797241210938 - percentile_10_0: 311.6541442871094 - percentile_90_0: 575.8826904296875 - percentile_99_5: 833.3361206054688 - stdev: 111.25676727294922 - label: - - image_intensity: - - max: 2818.4375 - mean: 570.5004272460938 - median: 602.9830322265625 - min: 0.0 - percentile: [27.100360870361328, 189.70252990722656, 887.5368041992188, 1016.2635498046875] - percentile_00_5: 27.100360870361328 - percentile_10_0: 189.70252990722656 - percentile_90_0: 887.5368041992188 - percentile_99_5: 1016.2635498046875 - stdev: 258.3062744140625 - ncomponents: 1 - pixel_percentage: 0.9473165273666382 - shape: - - [33, 49, 37] - - image_intensity: - - max: 806.2357177734375 - mean: 431.6650695800781 - median: 420.05560302734375 - min: 128.72671508789062 - percentile: [201.52505493164062, 318.4292297363281, 562.3324584960938, 733.4374389648438] - percentile_00_5: 201.52505493164062 - percentile_10_0: 318.4292297363281 - percentile_90_0: 562.3324584960938 - percentile_99_5: 733.4374389648438 - stdev: 99.98130798339844 - ncomponents: 1 - pixel_percentage: 0.02590716816484928 - shape: - - [18, 17, 15] - - image_intensity: - - max: 914.63720703125 - mean: 429.38507080078125 - median: 399.7303161621094 - min: 203.25270080566406 - percentile: [230.3530731201172, 311.6541442871094, 596.2079467773438, 867.2115478515625] - percentile_00_5: 230.3530731201172 - percentile_10_0: 311.6541442871094 - percentile_90_0: 596.2079467773438 - percentile_99_5: 867.2115478515625 - stdev: 121.16106414794922 - ncomponents: 1 - pixel_percentage: 0.026776311919093132 - shape: - - [15, 23, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_393.nii.gz - image_foreground_stats: - intensity: - - max: 996.3963012695312 - mean: 452.021728515625 - median: 428.203369140625 - min: 41.17340087890625 - percentile: [222.33636474609375, 321.15252685546875, 634.0703735351562, 889.345458984375] - percentile_00_5: 222.33636474609375 - percentile_10_0: 321.15252685546875 - percentile_90_0: 634.0703735351562 - percentile_99_5: 889.345458984375 - stdev: 127.25235748291016 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 31] - intensity: - - max: 1630.4666748046875 - mean: 588.1304321289062 - median: 584.6622924804688 - min: 0.0 - percentile: [32.938720703125, 247.0404052734375, 922.2841796875, 1070.5084228515625] - percentile_00_5: 32.938720703125 - percentile_10_0: 247.0404052734375 - percentile_90_0: 922.2841796875 - percentile_99_5: 1070.5084228515625 - stdev: 260.0743713378906 - shape: - - [36, 51, 31] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_393.nii.gz - label_stats: - image_intensity: - - max: 996.3963012695312 - mean: 452.021728515625 - median: 428.203369140625 - min: 41.17340087890625 - percentile: [222.33636474609375, 321.15252685546875, 634.0703735351562, 889.345458984375] - percentile_00_5: 222.33636474609375 - percentile_10_0: 321.15252685546875 - percentile_90_0: 634.0703735351562 - percentile_99_5: 889.345458984375 - stdev: 127.25235748291016 - label: - - image_intensity: - - max: 1630.4666748046875 - mean: 597.5445556640625 - median: 609.3663330078125 - min: 0.0 - percentile: [32.938720703125, 238.80572509765625, 922.2841796875, 1078.7431640625] - percentile_00_5: 32.938720703125 - percentile_10_0: 238.80572509765625 - percentile_90_0: 922.2841796875 - percentile_99_5: 1078.7431640625 - stdev: 264.2480163574219 - ncomponents: 1 - pixel_percentage: 0.9353081583976746 - shape: - - [36, 51, 31] - - image_intensity: - - max: 988.16162109375 - mean: 453.63189697265625 - median: 436.43804931640625 - min: 107.05084228515625 - percentile: [247.0404052734375, 329.38720703125, 609.3663330078125, 845.57861328125] - percentile_00_5: 247.0404052734375 - percentile_10_0: 329.38720703125 - percentile_90_0: 609.3663330078125 - percentile_99_5: 845.57861328125 - stdev: 115.3425521850586 - ncomponents: 1 - pixel_percentage: 0.03275001794099808 - shape: - - [22, 18, 14] - - image_intensity: - - max: 996.3963012695312 - mean: 450.3708801269531 - median: 419.96868896484375 - min: 41.17340087890625 - percentile: [205.86700439453125, 312.9178466796875, 658.7744140625, 889.345458984375] - percentile_00_5: 205.86700439453125 - percentile_10_0: 312.9178466796875 - percentile_90_0: 658.7744140625 - percentile_99_5: 889.345458984375 - stdev: 138.384033203125 - ncomponents: 1 - pixel_percentage: 0.03194180876016617 - shape: - - [21, 23, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_124.nii.gz - image_foreground_stats: - intensity: - - max: 106.0 - mean: 54.36085510253906 - median: 52.0 - min: 23.0 - percentile: [28.0, 39.0, 74.0, 95.0] - percentile_00_5: 28.0 - percentile_10_0: 39.0 - percentile_90_0: 74.0 - percentile_99_5: 95.0 - stdev: 13.79419231414795 - image_stats: - channels: 1 - cropped_shape: - - [35, 55, 41] - intensity: - - max: 249.0 - mean: 71.20986938476562 - median: 71.0 - min: 4.0 - percentile: [12.0, 30.0, 112.0, 128.0] - percentile_00_5: 12.0 - percentile_10_0: 30.0 - percentile_90_0: 112.0 - percentile_99_5: 128.0 - stdev: 30.756574630737305 - shape: - - [35, 55, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_124.nii.gz - label_stats: - image_intensity: - - max: 106.0 - mean: 54.36085510253906 - median: 52.0 - min: 23.0 - percentile: [28.0, 39.0, 74.0, 95.0] - percentile_00_5: 28.0 - percentile_10_0: 39.0 - percentile_90_0: 74.0 - percentile_99_5: 95.0 - stdev: 13.79419231414795 - label: - - image_intensity: - - max: 249.0 - mean: 71.90727996826172 - median: 72.0 - min: 4.0 - percentile: [11.0, 30.0, 112.0, 129.0] - percentile_00_5: 11.0 - percentile_10_0: 30.0 - percentile_90_0: 112.0 - percentile_99_5: 129.0 - stdev: 31.064594268798828 - ncomponents: 1 - pixel_percentage: 0.9602534174919128 - shape: - - [35, 55, 41] - - image_intensity: - - max: 102.0 - mean: 53.62702178955078 - median: 51.0 - min: 23.0 - percentile: [27.024999618530273, 39.5, 72.0, 92.9749755859375] - percentile_00_5: 27.024999618530273 - percentile_10_0: 39.5 - percentile_90_0: 72.0 - percentile_99_5: 92.9749755859375 - stdev: 13.005401611328125 - ncomponents: 1 - pixel_percentage: 0.020348431542515755 - shape: - - [18, 17, 13] - - image_intensity: - - max: 106.0 - mean: 55.13063049316406 - median: 52.0 - min: 23.0 - percentile: [29.0, 39.0, 76.0, 96.3499755859375] - percentile_00_5: 29.0 - percentile_10_0: 39.0 - percentile_90_0: 76.0 - percentile_99_5: 96.3499755859375 - stdev: 14.53606128692627 - ncomponents: 1 - pixel_percentage: 0.0193981621414423 - shape: - - [16, 26, 22] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_024.nii.gz - image_foreground_stats: - intensity: - - max: 1143.8037109375 - mean: 492.1591796875 - median: 475.8223571777344 - min: 36.60171890258789 - percentile: [137.25643920898438, 320.2650451660156, 686.2822265625, 960.7951049804688] - percentile_00_5: 137.25643920898438 - percentile_10_0: 320.2650451660156 - percentile_90_0: 686.2822265625 - percentile_99_5: 960.7951049804688 - stdev: 146.7787322998047 - image_stats: - channels: 1 - cropped_shape: - - [38, 52, 33] - intensity: - - max: 3696.773681640625 - mean: 710.314453125 - median: 722.8839721679688 - min: 0.0 - percentile: [45.75214767456055, 292.8137512207031, 1107.2020263671875, 1262.75927734375] - percentile_00_5: 45.75214767456055 - percentile_10_0: 292.8137512207031 - percentile_90_0: 1107.2020263671875 - percentile_99_5: 1262.75927734375 - stdev: 316.856201171875 - shape: - - [38, 52, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_024.nii.gz - label_stats: - image_intensity: - - max: 1143.8037109375 - mean: 492.1591796875 - median: 475.8223571777344 - min: 36.60171890258789 - percentile: [137.25643920898438, 320.2650451660156, 686.2822265625, 960.7951049804688] - percentile_00_5: 137.25643920898438 - percentile_10_0: 320.2650451660156 - percentile_90_0: 686.2822265625 - percentile_99_5: 960.7951049804688 - stdev: 146.7787322998047 - label: - - image_intensity: - - max: 3696.773681640625 - mean: 724.68505859375 - median: 759.4856567382812 - min: 0.0 - percentile: [45.75214767456055, 292.8137512207031, 1107.2020263671875, 1271.9097900390625] - percentile_00_5: 45.75214767456055 - percentile_10_0: 292.8137512207031 - percentile_90_0: 1107.2020263671875 - percentile_99_5: 1271.9097900390625 - stdev: 319.7666015625 - ncomponents: 1 - pixel_percentage: 0.9381977915763855 - shape: - - [38, 52, 33] - - image_intensity: - - max: 979.0960083007812 - mean: 504.18365478515625 - median: 494.1231994628906 - min: 73.20343780517578 - percentile: [146.86439514160156, 338.5658874511719, 686.2822265625, 869.2908325195312] - percentile_00_5: 146.86439514160156 - percentile_10_0: 338.5658874511719 - percentile_90_0: 686.2822265625 - percentile_99_5: 869.2908325195312 - stdev: 135.29666137695312 - ncomponents: 1 - pixel_percentage: 0.030839774757623672 - shape: - - [27, 17, 12] - - image_intensity: - - max: 1143.8037109375 - mean: 480.1822509765625 - median: 457.521484375 - min: 36.60171890258789 - percentile: [128.92955017089844, 311.1146240234375, 686.2822265625, 988.2463989257812] - percentile_00_5: 128.92955017089844 - percentile_10_0: 311.1146240234375 - percentile_90_0: 686.2822265625 - percentile_99_5: 988.2463989257812 - stdev: 156.46888732910156 - ncomponents: 1 - pixel_percentage: 0.03096245788037777 - shape: - - [21, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_171.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 47.87969207763672 - median: 46.0 - min: 17.0 - percentile: [29.0, 37.0, 62.0, 86.0] - percentile_00_5: 29.0 - percentile_10_0: 37.0 - percentile_90_0: 62.0 - percentile_99_5: 86.0 - stdev: 10.623573303222656 - image_stats: - channels: 1 - cropped_shape: - - [35, 56, 28] - intensity: - - max: 125.0 - mean: 60.75200271606445 - median: 62.0 - min: 2.0 - percentile: [7.0, 29.0, 90.0, 101.0] - percentile_00_5: 7.0 - percentile_10_0: 29.0 - percentile_90_0: 90.0 - percentile_99_5: 101.0 - stdev: 23.746702194213867 - shape: - - [35, 56, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_171.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 47.87969207763672 - median: 46.0 - min: 17.0 - percentile: [29.0, 37.0, 62.0, 86.0] - percentile_00_5: 29.0 - percentile_10_0: 37.0 - percentile_90_0: 62.0 - percentile_99_5: 86.0 - stdev: 10.623573303222656 - label: - - image_intensity: - - max: 125.0 - mean: 61.67558288574219 - median: 65.0 - min: 2.0 - percentile: [7.0, 28.0, 90.0, 101.0] - percentile_00_5: 7.0 - percentile_10_0: 28.0 - percentile_90_0: 90.0 - percentile_99_5: 101.0 - stdev: 24.156293869018555 - ncomponents: 1 - pixel_percentage: 0.9330539107322693 - shape: - - [35, 56, 28] - - image_intensity: - - max: 86.0 - mean: 47.37641906738281 - median: 46.0 - min: 23.0 - percentile: [29.0, 36.0, 61.0, 75.760009765625] - percentile_00_5: 29.0 - percentile_10_0: 36.0 - percentile_90_0: 61.0 - percentile_99_5: 75.760009765625 - stdev: 9.60980224609375 - ncomponents: 1 - pixel_percentage: 0.03369168937206268 - shape: - - [20, 18, 13] - - image_intensity: - - max: 96.0 - mean: 48.38958740234375 - median: 46.0 - min: 17.0 - percentile: [29.0, 37.0, 64.5999755859375, 88.0] - percentile_00_5: 29.0 - percentile_10_0: 37.0 - percentile_90_0: 64.5999755859375 - percentile_99_5: 88.0 - stdev: 11.53800106048584 - ncomponents: 1 - pixel_percentage: 0.03325437381863594 - shape: - - [18, 27, 13] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_163.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 50.788753509521484 - median: 49.0 - min: 23.0 - percentile: [29.0, 39.0, 65.0, 85.0] - percentile_00_5: 29.0 - percentile_10_0: 39.0 - percentile_90_0: 65.0 - percentile_99_5: 85.0 - stdev: 10.445619583129883 - image_stats: - channels: 1 - cropped_shape: - - [36, 47, 44] - intensity: - - max: 152.0 - mean: 64.65730285644531 - median: 66.0 - min: 0.0 - percentile: [5.0, 26.0, 98.0, 110.0] - percentile_00_5: 5.0 - percentile_10_0: 26.0 - percentile_90_0: 98.0 - percentile_99_5: 110.0 - stdev: 27.059946060180664 - shape: - - [36, 47, 44] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_163.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 50.788753509521484 - median: 49.0 - min: 23.0 - percentile: [29.0, 39.0, 65.0, 85.0] - percentile_00_5: 29.0 - percentile_10_0: 39.0 - percentile_90_0: 65.0 - percentile_99_5: 85.0 - stdev: 10.445619583129883 - label: - - image_intensity: - - max: 152.0 - mean: 65.34207916259766 - median: 68.0 - min: 0.0 - percentile: [5.0, 25.0, 98.0, 110.0] - percentile_00_5: 5.0 - percentile_10_0: 25.0 - percentile_90_0: 98.0 - percentile_99_5: 110.0 - stdev: 27.44162368774414 - ncomponents: 1 - pixel_percentage: 0.9529470205307007 - shape: - - [36, 47, 44] - - image_intensity: - - max: 84.0 - mean: 50.73422622680664 - median: 50.0 - min: 23.0 - percentile: [28.84000015258789, 40.0, 64.0, 80.0] - percentile_00_5: 28.84000015258789 - percentile_10_0: 40.0 - percentile_90_0: 64.0 - percentile_99_5: 80.0 - stdev: 9.627020835876465 - ncomponents: 1 - pixel_percentage: 0.021075112745165825 - shape: - - [23, 12, 17] - - image_intensity: - - max: 96.0 - mean: 50.83298873901367 - median: 49.0 - min: 23.0 - percentile: [30.0, 39.0, 66.0, 89.0] - percentile_00_5: 30.0 - percentile_10_0: 39.0 - percentile_90_0: 66.0 - percentile_99_5: 89.0 - stdev: 11.065122604370117 - ncomponents: 1 - pixel_percentage: 0.025977862998843193 - shape: - - [18, 25, 30] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_126.nii.gz - image_foreground_stats: - intensity: - - max: 97.0 - mean: 52.81113052368164 - median: 51.0 - min: 24.0 - percentile: [32.720001220703125, 41.0, 69.0, 84.0] - percentile_00_5: 32.720001220703125 - percentile_10_0: 41.0 - percentile_90_0: 69.0 - percentile_99_5: 84.0 - stdev: 10.671712875366211 - image_stats: - channels: 1 - cropped_shape: - - [39, 44, 43] - intensity: - - max: 255.0 - mean: 68.09004211425781 - median: 70.0 - min: 1.0 - percentile: [7.0, 26.0, 105.0, 123.0] - percentile_00_5: 7.0 - percentile_10_0: 26.0 - percentile_90_0: 105.0 - percentile_99_5: 123.0 - stdev: 30.001197814941406 - shape: - - [39, 44, 43] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_126.nii.gz - label_stats: - image_intensity: - - max: 97.0 - mean: 52.81113052368164 - median: 51.0 - min: 24.0 - percentile: [32.720001220703125, 41.0, 69.0, 84.0] - percentile_00_5: 32.720001220703125 - percentile_10_0: 41.0 - percentile_90_0: 69.0 - percentile_99_5: 84.0 - stdev: 10.671712875366211 - label: - - image_intensity: - - max: 255.0 - mean: 68.77024841308594 - median: 72.0 - min: 1.0 - percentile: [7.0, 25.0, 105.0, 123.0] - percentile_00_5: 7.0 - percentile_10_0: 25.0 - percentile_90_0: 105.0 - percentile_99_5: 123.0 - stdev: 30.400938034057617 - ncomponents: 1 - pixel_percentage: 0.9573779106140137 - shape: - - [39, 44, 43] - - image_intensity: - - max: 97.0 - mean: 53.15757751464844 - median: 52.0 - min: 24.0 - percentile: [30.244998931884766, 41.90000915527344, 68.0, 83.0] - percentile_00_5: 30.244998931884766 - percentile_10_0: 41.90000915527344 - percentile_90_0: 68.0 - percentile_99_5: 83.0 - stdev: 10.314480781555176 - ncomponents: 1 - pixel_percentage: 0.022361360490322113 - shape: - - [18, 13, 16] - - image_intensity: - - max: 90.0 - mean: 52.42876052856445 - median: 49.0 - min: 31.0 - percentile: [35.0, 41.0, 70.0, 85.0] - percentile_00_5: 35.0 - percentile_10_0: 41.0 - percentile_90_0: 70.0 - percentile_99_5: 85.0 - stdev: 11.0399751663208 - ncomponents: 1 - pixel_percentage: 0.020260747522115707 - shape: - - [18, 20, 25] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_026.nii.gz - image_foreground_stats: - intensity: - - max: 755.1204223632812 - mean: 380.21014404296875 - median: 368.3514099121094 - min: 110.50542449951172 - percentile: [159.6189422607422, 270.1243591308594, 515.6919555664062, 675.3109130859375] - percentile_00_5: 159.6189422607422 - percentile_10_0: 270.1243591308594 - percentile_90_0: 515.6919555664062 - percentile_99_5: 675.3109130859375 - stdev: 99.12187957763672 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 36] - intensity: - - max: 2670.5478515625 - mean: 500.95751953125 - median: 509.55279541015625 - min: 0.0 - percentile: [30.695951461791992, 208.7324676513672, 773.5379638671875, 871.7650146484375] - percentile_00_5: 30.695951461791992 - percentile_10_0: 208.7324676513672 - percentile_90_0: 773.5379638671875 - percentile_99_5: 871.7650146484375 - stdev: 217.1165008544922 - shape: - - [36, 50, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_026.nii.gz - label_stats: - image_intensity: - - max: 755.1204223632812 - mean: 380.21014404296875 - median: 368.3514099121094 - min: 110.50542449951172 - percentile: [159.6189422607422, 270.1243591308594, 515.6919555664062, 675.3109130859375] - percentile_00_5: 159.6189422607422 - percentile_10_0: 270.1243591308594 - percentile_90_0: 515.6919555664062 - percentile_99_5: 675.3109130859375 - stdev: 99.12187957763672 - label: - - image_intensity: - - max: 2670.5478515625 - mean: 508.118896484375 - median: 527.9703369140625 - min: 0.0 - percentile: [24.556760787963867, 202.59327697753906, 773.5379638671875, 877.9041748046875] - percentile_00_5: 24.556760787963867 - percentile_10_0: 202.59327697753906 - percentile_90_0: 773.5379638671875 - percentile_99_5: 877.9041748046875 - stdev: 220.083251953125 - ncomponents: 1 - pixel_percentage: 0.9440123438835144 - shape: - - [36, 50, 36] - - image_intensity: - - max: 755.1204223632812 - mean: 393.0762023925781 - median: 380.6297912597656 - min: 135.0621795654297 - percentile: [171.89732360839844, 288.54193115234375, 515.6919555664062, 663.0325317382812] - percentile_00_5: 171.89732360839844 - percentile_10_0: 288.54193115234375 - percentile_90_0: 515.6919555664062 - percentile_99_5: 663.0325317382812 - stdev: 92.89981842041016 - ncomponents: 1 - pixel_percentage: 0.028750000521540642 - shape: - - [24, 17, 16] - - image_intensity: - - max: 718.2852783203125 - mean: 366.6296691894531 - median: 349.933837890625 - min: 110.50542449951172 - percentile: [140.0963134765625, 257.8459777832031, 515.6919555664062, 682.5555419921875] - percentile_00_5: 140.0963134765625 - percentile_10_0: 257.8459777832031 - percentile_90_0: 515.6919555664062 - percentile_99_5: 682.5555419921875 - stdev: 103.57171630859375 - ncomponents: 1 - pixel_percentage: 0.027237653732299805 - shape: - - [22, 22, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_138.nii.gz - image_foreground_stats: - intensity: - - max: 289448.59375 - mean: 145922.015625 - median: 140509.03125 - min: 25291.625 - percentile: [70254.515625, 103976.6875, 196712.640625, 269777.34375] - percentile_00_5: 70254.515625 - percentile_10_0: 103976.6875 - percentile_90_0: 196712.640625 - percentile_99_5: 269777.34375 - stdev: 36701.4296875 - image_stats: - channels: 1 - cropped_shape: - - [32, 46, 42] - intensity: - - max: 907688.375 - mean: 200259.25 - median: 213573.734375 - min: 0.0 - percentile: [11240.72265625, 75874.875, 303499.5, 362513.3125] - percentile_00_5: 11240.72265625 - percentile_10_0: 75874.875 - percentile_90_0: 303499.5 - percentile_99_5: 362513.3125 - stdev: 87593.9453125 - shape: - - [32, 46, 42] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_138.nii.gz - label_stats: - image_intensity: - - max: 289448.59375 - mean: 145922.015625 - median: 140509.03125 - min: 25291.625 - percentile: [70254.515625, 103976.6875, 196712.640625, 269777.34375] - percentile_00_5: 70254.515625 - percentile_10_0: 103976.6875 - percentile_90_0: 196712.640625 - percentile_99_5: 269777.34375 - stdev: 36701.4296875 - label: - - image_intensity: - - max: 907688.375 - mean: 202581.5625 - median: 219194.09375 - min: 0.0 - percentile: [11240.72265625, 73064.6953125, 303499.5, 362513.3125] - percentile_00_5: 11240.72265625 - percentile_10_0: 73064.6953125 - percentile_90_0: 303499.5 - percentile_99_5: 362513.3125 - stdev: 88382.53125 - ncomponents: 1 - pixel_percentage: 0.9590126872062683 - shape: - - [32, 46, 42] - - image_intensity: - - max: 264156.96875 - mean: 150137.078125 - median: 146129.390625 - min: 44962.890625 - percentile: [78263.53125, 115217.40625, 191092.28125, 247295.90625] - percentile_00_5: 78263.53125 - percentile_10_0: 115217.40625 - percentile_90_0: 191092.28125 - percentile_99_5: 247295.90625 - stdev: 31270.25 - ncomponents: 1 - pixel_percentage: 0.018940864130854607 - shape: - - [18, 12, 14] - - image_intensity: - - max: 289448.59375 - mean: 142300.71875 - median: 132078.484375 - min: 25291.625 - percentile: [67444.3359375, 101166.5, 202333.0, 275397.71875] - percentile_00_5: 67444.3359375 - percentile_10_0: 101166.5 - percentile_90_0: 202333.0 - percentile_99_5: 275397.71875 - stdev: 40444.78125 - ncomponents: 1 - pixel_percentage: 0.02204645425081253 - shape: - - [17, 22, 24] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_038.nii.gz - image_foreground_stats: - intensity: - - max: 652.7219848632812 - mean: 285.780517578125 - median: 272.85919189453125 - min: 21.400720596313477 - percentile: [101.6534194946289, 192.6064910888672, 401.2635192871094, 577.8194580078125] - percentile_00_5: 101.6534194946289 - percentile_10_0: 192.6064910888672 - percentile_90_0: 401.2635192871094 - percentile_99_5: 577.8194580078125 - stdev: 84.97096252441406 - image_stats: - channels: 1 - cropped_shape: - - [37, 51, 35] - intensity: - - max: 1449.8988037109375 - mean: 361.0468444824219 - median: 358.4620666503906 - min: 0.0 - percentile: [26.750900268554688, 165.8555908203125, 561.7689208984375, 658.0721435546875] - percentile_00_5: 26.750900268554688 - percentile_10_0: 165.8555908203125 - percentile_90_0: 561.7689208984375 - percentile_99_5: 658.0721435546875 - stdev: 152.53350830078125 - shape: - - [37, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_038.nii.gz - label_stats: - image_intensity: - - max: 652.7219848632812 - mean: 285.780517578125 - median: 272.85919189453125 - min: 21.400720596313477 - percentile: [101.6534194946289, 192.6064910888672, 401.2635192871094, 577.8194580078125] - percentile_00_5: 101.6534194946289 - percentile_10_0: 192.6064910888672 - percentile_90_0: 401.2635192871094 - percentile_99_5: 577.8194580078125 - stdev: 84.97096252441406 - label: - - image_intensity: - - max: 1449.8988037109375 - mean: 365.33251953125 - median: 363.812255859375 - min: 0.0 - percentile: [21.400720596313477, 160.50540161132812, 567.1190795898438, 658.0721435546875] - percentile_00_5: 21.400720596313477 - percentile_10_0: 160.50540161132812 - percentile_90_0: 567.1190795898438 - percentile_99_5: 658.0721435546875 - stdev: 154.3995361328125 - ncomponents: 1 - pixel_percentage: 0.9461276531219482 - shape: - - [37, 51, 35] - - image_intensity: - - max: 652.7219848632812 - mean: 290.1882629394531 - median: 278.2093811035156 - min: 26.750900268554688 - percentile: [101.6534194946289, 197.9566650390625, 395.913330078125, 583.1696166992188] - percentile_00_5: 101.6534194946289 - percentile_10_0: 197.9566650390625 - percentile_90_0: 395.913330078125 - percentile_99_5: 583.1696166992188 - stdev: 82.83067321777344 - ncomponents: 1 - pixel_percentage: 0.027814369648694992 - shape: - - [21, 17, 14] - - image_intensity: - - max: 609.9205322265625 - mean: 281.0756530761719 - median: 262.1588134765625 - min: 21.400720596313477 - percentile: [107.00360107421875, 187.2563018798828, 406.6136779785156, 561.7689208984375] - percentile_00_5: 107.00360107421875 - percentile_10_0: 187.2563018798828 - percentile_90_0: 406.6136779785156 - percentile_99_5: 561.7689208984375 - stdev: 86.95137786865234 - ncomponents: 1 - pixel_percentage: 0.02605799026787281 - shape: - - [22, 22, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_145.nii.gz - image_foreground_stats: - intensity: - - max: 353007.03125 - mean: 149080.0625 - median: 146166.96875 - min: 22062.939453125 - percentile: [52399.48046875, 107556.828125, 193050.71875, 294126.28125] - percentile_00_5: 52399.48046875 - percentile_10_0: 107556.828125 - percentile_90_0: 193050.71875 - percentile_99_5: 294126.28125 - stdev: 37852.00390625 - image_stats: - channels: 1 - cropped_shape: - - [36, 53, 33] - intensity: - - max: 890791.1875 - mean: 198518.34375 - median: 184777.125 - min: 0.0 - percentile: [11031.4697265625, 66188.8203125, 336459.8125, 391617.1875] - percentile_00_5: 11031.4697265625 - percentile_10_0: 66188.8203125 - percentile_90_0: 336459.8125 - percentile_99_5: 391617.1875 - stdev: 99916.203125 - shape: - - [36, 53, 33] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_145.nii.gz - label_stats: - image_intensity: - - max: 353007.03125 - mean: 149080.0625 - median: 146166.96875 - min: 22062.939453125 - percentile: [52399.48046875, 107556.828125, 193050.71875, 294126.28125] - percentile_00_5: 52399.48046875 - percentile_10_0: 107556.828125 - percentile_90_0: 193050.71875 - percentile_99_5: 294126.28125 - stdev: 37852.00390625 - label: - - image_intensity: - - max: 890791.1875 - mean: 201459.96875 - median: 193050.71875 - min: 0.0 - percentile: [8273.6025390625, 63430.94921875, 339217.6875, 391617.1875] - percentile_00_5: 8273.6025390625 - percentile_10_0: 63430.94921875 - percentile_90_0: 339217.6875 - percentile_99_5: 391617.1875 - stdev: 101675.59375 - ncomponents: 1 - pixel_percentage: 0.9438409209251404 - shape: - - [36, 53, 33] - - image_intensity: - - max: 284060.34375 - mean: 144899.734375 - median: 143409.109375 - min: 22062.939453125 - percentile: [35852.27734375, 104798.9609375, 187534.984375, 237176.59375] - percentile_00_5: 35852.27734375 - percentile_10_0: 104798.9609375 - percentile_90_0: 187534.984375 - percentile_99_5: 237176.59375 - stdev: 33714.41015625 - ncomponents: 1 - pixel_percentage: 0.03293945640325546 - shape: - - [23, 18, 16] - - image_intensity: - - max: 353007.03125 - mean: 155010.265625 - median: 148924.84375 - min: 55157.34765625 - percentile: [75303.5703125, 113072.5625, 204082.1875, 317154.75] - percentile_00_5: 75303.5703125 - percentile_10_0: 113072.5625 - percentile_90_0: 204082.1875 - percentile_99_5: 317154.75 - stdev: 42342.453125 - ncomponents: 1 - pixel_percentage: 0.02321961708366871 - shape: - - [19, 25, 14] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_045.nii.gz - image_foreground_stats: - intensity: - - max: 795.865234375 - mean: 394.4459228515625 - median: 383.8879089355469 - min: 23.407800674438477 - percentile: [188.83071899414062, 294.93829345703125, 510.2900390625, 705.347412109375] - percentile_00_5: 188.83071899414062 - percentile_10_0: 294.93829345703125 - percentile_90_0: 510.2900390625 - percentile_99_5: 705.347412109375 - stdev: 89.73593139648438 - image_stats: - channels: 1 - cropped_shape: - - [36, 48, 37] - intensity: - - max: 1048.66943359375 - mean: 515.2599487304688 - median: 547.7425537109375 - min: 0.0 - percentile: [28.089359283447266, 238.7595672607422, 767.7758178710938, 866.088623046875] - percentile_00_5: 28.089359283447266 - percentile_10_0: 238.7595672607422 - percentile_90_0: 767.7758178710938 - percentile_99_5: 866.088623046875 - stdev: 205.0619354248047 - shape: - - [36, 48, 37] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_045.nii.gz - label_stats: - image_intensity: - - max: 795.865234375 - mean: 394.4459228515625 - median: 383.8879089355469 - min: 23.407800674438477 - percentile: [188.83071899414062, 294.93829345703125, 510.2900390625, 705.347412109375] - percentile_00_5: 188.83071899414062 - percentile_10_0: 294.93829345703125 - percentile_90_0: 510.2900390625 - percentile_99_5: 705.347412109375 - stdev: 89.73593139648438 - label: - - image_intensity: - - max: 1048.66943359375 - mean: 520.933837890625 - median: 557.1056518554688 - min: 0.0 - percentile: [28.089359283447266, 234.0780029296875, 772.4573974609375, 866.088623046875] - percentile_00_5: 28.089359283447266 - percentile_10_0: 234.0780029296875 - percentile_90_0: 772.4573974609375 - percentile_99_5: 866.088623046875 - stdev: 207.194091796875 - ncomponents: 1 - pixel_percentage: 0.955142617225647 - shape: - - [36, 48, 37] - - image_intensity: - - max: 716.2786865234375 - mean: 380.82574462890625 - median: 369.8432312011719 - min: 23.407800674438477 - percentile: [155.54483032226562, 285.5751647949219, 491.5638122558594, 648.63037109375] - percentile_00_5: 155.54483032226562 - percentile_10_0: 285.5751647949219 - percentile_90_0: 491.5638122558594 - percentile_99_5: 648.63037109375 - stdev: 85.42385864257812 - ncomponents: 1 - pixel_percentage: 0.01948823779821396 - shape: - - [20, 15, 13] - - image_intensity: - - max: 795.865234375 - mean: 404.90875244140625 - median: 393.25103759765625 - min: 32.77091979980469 - percentile: [220.0333251953125, 304.3013916015625, 529.0162963867188, 715.7872314453125] - percentile_00_5: 220.0333251953125 - percentile_10_0: 304.3013916015625 - percentile_90_0: 529.0162963867188 - percentile_99_5: 715.7872314453125 - stdev: 91.54656219482422 - ncomponents: 1 - pixel_percentage: 0.02536911889910698 - shape: - - [25, 23, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_034.nii.gz - image_foreground_stats: - intensity: - - max: 96.0 - mean: 46.86933135986328 - median: 45.0 - min: 11.0 - percentile: [22.0, 33.0, 62.0, 84.130126953125] - percentile_00_5: 22.0 - percentile_10_0: 33.0 - percentile_90_0: 62.0 - percentile_99_5: 84.130126953125 - stdev: 11.737112998962402 - image_stats: - channels: 1 - cropped_shape: - - [36, 49, 40] - intensity: - - max: 255.0 - mean: 65.21073150634766 - median: 65.0 - min: 2.0 - percentile: [8.0, 27.0, 103.0, 122.0] - percentile_00_5: 8.0 - percentile_10_0: 27.0 - percentile_90_0: 103.0 - percentile_99_5: 122.0 - stdev: 29.669336318969727 - shape: - - [36, 49, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_034.nii.gz - label_stats: - image_intensity: - - max: 96.0 - mean: 46.86933135986328 - median: 45.0 - min: 11.0 - percentile: [22.0, 33.0, 62.0, 84.130126953125] - percentile_00_5: 22.0 - percentile_10_0: 33.0 - percentile_90_0: 62.0 - percentile_99_5: 84.130126953125 - stdev: 11.737112998962402 - label: - - image_intensity: - - max: 255.0 - mean: 66.13209533691406 - median: 67.0 - min: 2.0 - percentile: [8.0, 26.0, 103.0, 124.0] - percentile_00_5: 8.0 - percentile_10_0: 26.0 - percentile_90_0: 103.0 - percentile_99_5: 124.0 - stdev: 29.99701499938965 - ncomponents: 1 - pixel_percentage: 0.952168345451355 - shape: - - [36, 49, 40] - - image_intensity: - - max: 88.0 - mean: 48.61038589477539 - median: 48.0 - min: 19.0 - percentile: [26.0, 36.0, 62.0, 78.0] - percentile_00_5: 26.0 - percentile_10_0: 36.0 - percentile_90_0: 62.0 - percentile_99_5: 78.0 - stdev: 10.322800636291504 - ncomponents: 1 - pixel_percentage: 0.025935374200344086 - shape: - - [21, 17, 15] - - image_intensity: - - max: 96.0 - mean: 44.8071174621582 - median: 42.0 - min: 11.0 - percentile: [21.0, 31.0, 63.0, 87.0] - percentile_00_5: 21.0 - percentile_10_0: 31.0 - percentile_90_0: 63.0 - percentile_99_5: 87.0 - stdev: 12.917876243591309 - ncomponents: 1 - pixel_percentage: 0.021896257996559143 - shape: - - [16, 21, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_383.nii.gz - image_foreground_stats: - intensity: - - max: 843.4417724609375 - mean: 409.1273193359375 - median: 387.7111511230469 - min: 47.613651275634766 - percentile: [197.2565460205078, 299.2857971191406, 550.9579467773438, 754.3704223632812] - percentile_00_5: 197.2565460205078 - percentile_10_0: 299.2857971191406 - percentile_90_0: 550.9579467773438 - percentile_99_5: 754.3704223632812 - stdev: 103.62618255615234 - image_stats: - channels: 1 - cropped_shape: - - [33, 55, 29] - intensity: - - max: 1074.7081298828125 - mean: 518.3602294921875 - median: 510.146240234375 - min: 0.0 - percentile: [27.207799911499023, 231.26629638671875, 823.0359497070312, 925.065185546875] - percentile_00_5: 27.207799911499023 - percentile_10_0: 231.26629638671875 - percentile_90_0: 823.0359497070312 - percentile_99_5: 925.065185546875 - stdev: 224.49342346191406 - shape: - - [33, 55, 29] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_383.nii.gz - label_stats: - image_intensity: - - max: 843.4417724609375 - mean: 409.1273193359375 - median: 387.7111511230469 - min: 47.613651275634766 - percentile: [197.2565460205078, 299.2857971191406, 550.9579467773438, 754.3704223632812] - percentile_00_5: 197.2565460205078 - percentile_10_0: 299.2857971191406 - percentile_90_0: 550.9579467773438 - percentile_99_5: 754.3704223632812 - stdev: 103.62618255615234 - label: - - image_intensity: - - max: 1074.7081298828125 - mean: 525.9508666992188 - median: 530.5521240234375 - min: 0.0 - percentile: [27.207799911499023, 224.46435546875, 829.837890625, 925.065185546875] - percentile_00_5: 27.207799911499023 - percentile_10_0: 224.46435546875 - percentile_90_0: 829.837890625 - percentile_99_5: 925.065185546875 - stdev: 228.6186065673828 - ncomponents: 1 - pixel_percentage: 0.9350242018699646 - shape: - - [33, 55, 29] - - image_intensity: - - max: 755.0164184570312 - mean: 403.38201904296875 - median: 394.5130920410156 - min: 47.613651275634766 - percentile: [196.4403076171875, 299.2857971191406, 530.5521240234375, 686.9969482421875] - percentile_00_5: 196.4403076171875 - percentile_10_0: 299.2857971191406 - percentile_90_0: 530.5521240234375 - percentile_99_5: 686.9969482421875 - stdev: 93.18011474609375 - ncomponents: 1 - pixel_percentage: 0.03376080468297005 - shape: - - [21, 18, 14] - - image_intensity: - - max: 843.4417724609375 - mean: 415.3412170410156 - median: 387.7111511230469 - min: 170.0487518310547 - percentile: [210.86044311523438, 299.2857971191406, 578.165771484375, 787.5980224609375] - percentile_00_5: 210.86044311523438 - percentile_10_0: 299.2857971191406 - percentile_90_0: 578.165771484375 - percentile_99_5: 787.5980224609375 - stdev: 113.52355194091797 - ncomponents: 1 - pixel_percentage: 0.031214971095323563 - shape: - - [19, 24, 16] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_049.nii.gz - image_foreground_stats: - intensity: - - max: 1230.8634033203125 - mean: 574.8159790039062 - median: 557.7349853515625 - min: 163.4740447998047 - percentile: [278.86749267578125, 413.4931640625, 759.6735229492188, 1067.389404296875] - percentile_00_5: 278.86749267578125 - percentile_10_0: 413.4931640625 - percentile_90_0: 759.6735229492188 - percentile_99_5: 1067.389404296875 - stdev: 143.02377319335938 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 36] - intensity: - - max: 3000.2294921875 - mean: 765.1668701171875 - median: 750.057373046875 - min: 0.0 - percentile: [67.3128433227539, 365.4125671386719, 1182.7828369140625, 1432.8018798828125] - percentile_00_5: 67.3128433227539 - percentile_10_0: 365.4125671386719 - percentile_90_0: 1182.7828369140625 - percentile_99_5: 1432.8018798828125 - stdev: 315.8070068359375 - shape: - - [35, 51, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_049.nii.gz - label_stats: - image_intensity: - - max: 1230.8634033203125 - mean: 574.8159790039062 - median: 557.7349853515625 - min: 163.4740447998047 - percentile: [278.86749267578125, 413.4931640625, 759.6735229492188, 1067.389404296875] - percentile_00_5: 278.86749267578125 - percentile_10_0: 413.4931640625 - percentile_90_0: 759.6735229492188 - percentile_99_5: 1067.389404296875 - stdev: 143.02377319335938 - label: - - image_intensity: - - max: 3000.2294921875 - mean: 776.89013671875 - median: 778.90576171875 - min: 0.0 - percentile: [67.3128433227539, 365.4125671386719, 1192.39892578125, 1432.8018798828125] - percentile_00_5: 67.3128433227539 - percentile_10_0: 365.4125671386719 - percentile_90_0: 1192.39892578125 - percentile_99_5: 1432.8018798828125 - stdev: 319.7618713378906 - ncomponents: 1 - pixel_percentage: 0.9419856667518616 - shape: - - [35, 51, 36] - - image_intensity: - - max: 1086.62158203125 - mean: 572.2548828125 - median: 567.35107421875 - min: 163.4740447998047 - percentile: [284.0121154785156, 413.4931640625, 730.8251342773438, 942.3798217773438] - percentile_00_5: 284.0121154785156 - percentile_10_0: 413.4931640625 - percentile_90_0: 730.8251342773438 - percentile_99_5: 942.3798217773438 - stdev: 127.6119155883789 - ncomponents: 1 - pixel_percentage: 0.029691876843571663 - shape: - - [22, 16, 14] - - image_intensity: - - max: 1230.8634033203125 - mean: 577.5008544921875 - median: 548.1188354492188 - min: 211.5546417236328 - percentile: [278.86749267578125, 403.8770446777344, 788.5218505859375, 1131.96240234375] - percentile_00_5: 278.86749267578125 - percentile_10_0: 403.8770446777344 - percentile_90_0: 788.5218505859375 - percentile_99_5: 1131.96240234375 - stdev: 157.52581787109375 - ncomponents: 1 - pixel_percentage: 0.028322439640760422 - shape: - - [17, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_149.nii.gz - image_foreground_stats: - intensity: - - max: 91.0 - mean: 48.696468353271484 - median: 47.0 - min: 16.0 - percentile: [26.0, 38.0, 63.0, 83.0] - percentile_00_5: 26.0 - percentile_10_0: 38.0 - percentile_90_0: 63.0 - percentile_99_5: 83.0 - stdev: 10.166768074035645 - image_stats: - channels: 1 - cropped_shape: - - [33, 49, 32] - intensity: - - max: 253.0 - mean: 64.84362030029297 - median: 66.0 - min: 2.0 - percentile: [7.0, 29.0, 99.0, 116.0] - percentile_00_5: 7.0 - percentile_10_0: 29.0 - percentile_90_0: 99.0 - percentile_99_5: 116.0 - stdev: 27.183324813842773 - shape: - - [33, 49, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_149.nii.gz - label_stats: - image_intensity: - - max: 91.0 - mean: 48.696468353271484 - median: 47.0 - min: 16.0 - percentile: [26.0, 38.0, 63.0, 83.0] - percentile_00_5: 26.0 - percentile_10_0: 38.0 - percentile_90_0: 63.0 - percentile_99_5: 83.0 - stdev: 10.166768074035645 - label: - - image_intensity: - - max: 253.0 - mean: 65.8878402709961 - median: 69.0 - min: 2.0 - percentile: [7.0, 28.0, 99.0, 117.0] - percentile_00_5: 7.0 - percentile_10_0: 28.0 - percentile_90_0: 99.0 - percentile_99_5: 117.0 - stdev: 27.60585594177246 - ncomponents: 1 - pixel_percentage: 0.9392586350440979 - shape: - - [33, 49, 32] - - image_intensity: - - max: 86.0 - mean: 48.8358039855957 - median: 47.0 - min: 16.0 - percentile: [23.0, 39.0, 62.0, 79.905029296875] - percentile_00_5: 23.0 - percentile_10_0: 39.0 - percentile_90_0: 62.0 - percentile_99_5: 79.905029296875 - stdev: 9.509784698486328 - ncomponents: 1 - pixel_percentage: 0.03130797669291496 - shape: - - [18, 18, 12] - - image_intensity: - - max: 91.0 - mean: 48.54825973510742 - median: 46.0 - min: 19.0 - percentile: [28.0, 38.0, 64.0, 88.0] - percentile_00_5: 28.0 - percentile_10_0: 38.0 - percentile_90_0: 64.0 - percentile_99_5: 88.0 - stdev: 10.819937705993652 - ncomponents: 1 - pixel_percentage: 0.029433364048600197 - shape: - - [18, 20, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_057.nii.gz - image_foreground_stats: - intensity: - - max: 712.4601440429688 - mean: 325.7237243652344 - median: 311.3271179199219 - min: 77.83177947998047 - percentile: [137.70237731933594, 233.49534606933594, 437.0553894042969, 593.5564575195312] - percentile_00_5: 137.70237731933594 - percentile_10_0: 233.49534606933594 - percentile_90_0: 437.0553894042969 - percentile_99_5: 593.5564575195312 - stdev: 83.03717041015625 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 34] - intensity: - - max: 1299.1920166015625 - mean: 397.263916015625 - median: 401.1330261230469 - min: 0.0 - percentile: [17.961179733276367, 101.78002166748047, 646.6024780273438, 736.4083862304688] - percentile_00_5: 17.961179733276367 - percentile_10_0: 101.78002166748047 - percentile_90_0: 646.6024780273438 - percentile_99_5: 736.4083862304688 - stdev: 196.61618041992188 - shape: - - [35, 51, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_057.nii.gz - label_stats: - image_intensity: - - max: 712.4601440429688 - mean: 325.7237243652344 - median: 311.3271179199219 - min: 77.83177947998047 - percentile: [137.70237731933594, 233.49534606933594, 437.0553894042969, 593.5564575195312] - percentile_00_5: 137.70237731933594 - percentile_10_0: 233.49534606933594 - percentile_90_0: 437.0553894042969 - percentile_99_5: 593.5564575195312 - stdev: 83.03717041015625 - label: - - image_intensity: - - max: 1299.1920166015625 - mean: 400.6891784667969 - median: 413.1071472167969 - min: 0.0 - percentile: [17.961179733276367, 95.79296112060547, 652.5895385742188, 742.3954467773438] - percentile_00_5: 17.961179733276367 - percentile_10_0: 95.79296112060547 - percentile_90_0: 652.5895385742188 - percentile_99_5: 742.3954467773438 - stdev: 199.8046875 - ncomponents: 1 - pixel_percentage: 0.954308807849884 - shape: - - [35, 51, 34] - - image_intensity: - - max: 598.7059936523438 - mean: 329.1590881347656 - median: 317.3141784667969 - min: 77.83177947998047 - percentile: [137.70237731933594, 227.50828552246094, 443.0424499511719, 551.1390991210938] - percentile_00_5: 137.70237731933594 - percentile_10_0: 227.50828552246094 - percentile_90_0: 443.0424499511719 - percentile_99_5: 551.1390991210938 - stdev: 83.14595794677734 - ncomponents: 1 - pixel_percentage: 0.022903278470039368 - shape: - - [20, 14, 13] - - image_intensity: - - max: 712.4601440429688 - mean: 322.27093505859375 - median: 311.3271179199219 - min: 83.81884002685547 - percentile: [137.16354370117188, 233.49534606933594, 431.0683288574219, 634.6283569335938] - percentile_00_5: 137.16354370117188 - percentile_10_0: 233.49534606933594 - percentile_90_0: 431.0683288574219 - percentile_99_5: 634.6283569335938 - stdev: 82.78416442871094 - ncomponents: 1 - pixel_percentage: 0.02278793789446354 - shape: - - [19, 25, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_157.nii.gz - image_foreground_stats: - intensity: - - max: 808.1236572265625 - mean: 392.1883239746094 - median: 376.0019836425781 - min: 72.95561218261719 - percentile: [190.80697631835938, 286.2104797363281, 521.9132080078125, 740.780029296875] - percentile_00_5: 190.80697631835938 - percentile_10_0: 286.2104797363281 - percentile_90_0: 521.9132080078125 - percentile_99_5: 740.780029296875 - stdev: 98.14913940429688 - image_stats: - channels: 1 - cropped_shape: - - [36, 51, 35] - intensity: - - max: 1290.7530517578125 - mean: 498.3443908691406 - median: 510.68927001953125 - min: 0.0 - percentile: [22.447879791259766, 179.58303833007812, 785.67578125, 881.0792846679688] - percentile_00_5: 22.447879791259766 - percentile_10_0: 179.58303833007812 - percentile_90_0: 785.67578125 - percentile_99_5: 881.0792846679688 - stdev: 222.6847686767578 - shape: - - [36, 51, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_157.nii.gz - label_stats: - image_intensity: - - max: 808.1236572265625 - mean: 392.1883239746094 - median: 376.0019836425781 - min: 72.95561218261719 - percentile: [190.80697631835938, 286.2104797363281, 521.9132080078125, 740.780029296875] - percentile_00_5: 190.80697631835938 - percentile_10_0: 286.2104797363281 - percentile_90_0: 521.9132080078125 - percentile_99_5: 740.780029296875 - stdev: 98.14913940429688 - label: - - image_intensity: - - max: 1290.7530517578125 - mean: 504.1865539550781 - median: 527.525146484375 - min: 0.0 - percentile: [22.447879791259766, 162.74713134765625, 785.67578125, 886.6912231445312] - percentile_00_5: 22.447879791259766 - percentile_10_0: 162.74713134765625 - percentile_90_0: 785.67578125 - percentile_99_5: 886.6912231445312 - stdev: 226.12625122070312 - ncomponents: 1 - pixel_percentage: 0.9478369355201721 - shape: - - [36, 51, 35] - - image_intensity: - - max: 735.1680908203125 - mean: 386.6623840332031 - median: 381.61395263671875 - min: 72.95561218261719 - percentile: [152.72976684570312, 291.82244873046875, 499.46533203125, 634.152587890625] - percentile_00_5: 152.72976684570312 - percentile_10_0: 291.82244873046875 - percentile_90_0: 499.46533203125 - percentile_99_5: 634.152587890625 - stdev: 83.67259216308594 - ncomponents: 1 - pixel_percentage: 0.02247120998799801 - shape: - - [20, 16, 12] - - image_intensity: - - max: 808.1236572265625 - mean: 396.370361328125 - median: 370.3900146484375 - min: 173.9710693359375 - percentile: [207.64288330078125, 286.2104797363281, 555.5850219726562, 752.0039672851562] - percentile_00_5: 207.64288330078125 - percentile_10_0: 286.2104797363281 - percentile_90_0: 555.5850219726562 - percentile_99_5: 752.0039672851562 - stdev: 107.63224792480469 - ncomponents: 1 - pixel_percentage: 0.029691876843571663 - shape: - - [22, 24, 23] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_102.nii.gz - image_foreground_stats: - intensity: - - max: 826.1170043945312 - mean: 357.4031982421875 - median: 347.8387451171875 - min: 21.73992156982422 - percentile: [123.19288635253906, 239.13912963867188, 500.0181884765625, 688.4308471679688] - percentile_00_5: 123.19288635253906 - percentile_10_0: 239.13912963867188 - percentile_90_0: 500.0181884765625 - percentile_99_5: 688.4308471679688 - stdev: 105.01091003417969 - image_stats: - channels: 1 - cropped_shape: - - [36, 55, 32] - intensity: - - max: 2318.9248046875 - mean: 469.2342834472656 - median: 463.78497314453125 - min: 0.0 - percentile: [28.986560821533203, 173.91937255859375, 746.4039306640625, 862.3501586914062] - percentile_00_5: 28.986560821533203 - percentile_10_0: 173.91937255859375 - percentile_90_0: 746.4039306640625 - percentile_99_5: 862.3501586914062 - stdev: 218.90335083007812 - shape: - - [36, 55, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_102.nii.gz - label_stats: - image_intensity: - - max: 826.1170043945312 - mean: 357.4031982421875 - median: 347.8387451171875 - min: 21.73992156982422 - percentile: [123.19288635253906, 239.13912963867188, 500.0181884765625, 688.4308471679688] - percentile_00_5: 123.19288635253906 - percentile_10_0: 239.13912963867188 - percentile_90_0: 500.0181884765625 - percentile_99_5: 688.4308471679688 - stdev: 105.01091003417969 - label: - - image_intensity: - - max: 2318.9248046875 - mean: 476.6795959472656 - median: 485.52490234375 - min: 0.0 - percentile: [21.73992156982422, 166.6727294921875, 753.6505737304688, 862.3501586914062] - percentile_00_5: 21.73992156982422 - percentile_10_0: 166.6727294921875 - percentile_90_0: 753.6505737304688 - percentile_99_5: 862.3501586914062 - stdev: 222.45614624023438 - ncomponents: 1 - pixel_percentage: 0.9375789165496826 - shape: - - [36, 55, 32] - - image_intensity: - - max: 731.91064453125 - mean: 363.1076354980469 - median: 355.0853576660156 - min: 21.73992156982422 - percentile: [123.19288635253906, 246.38577270507812, 500.0181884765625, 644.9509887695312] - percentile_00_5: 123.19288635253906 - percentile_10_0: 246.38577270507812 - percentile_90_0: 500.0181884765625 - percentile_99_5: 644.9509887695312 - stdev: 100.49949645996094 - ncomponents: 1 - pixel_percentage: 0.036126893013715744 - shape: - - [25, 21, 13] - - image_intensity: - - max: 826.1170043945312 - mean: 349.5655517578125 - median: 333.345458984375 - min: 72.46640014648438 - percentile: [130.4395294189453, 231.89248657226562, 485.52490234375, 736.802490234375] - percentile_00_5: 130.4395294189453 - percentile_10_0: 231.89248657226562 - percentile_90_0: 485.52490234375 - percentile_99_5: 736.802490234375 - stdev: 110.43097686767578 - ncomponents: 1 - pixel_percentage: 0.026294192299246788 - shape: - - [19, 22, 18] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_161.nii.gz - image_foreground_stats: - intensity: - - max: 89.0 - mean: 45.35458755493164 - median: 43.0 - min: 18.0 - percentile: [26.579999923706055, 35.0, 58.0, 81.419921875] - percentile_00_5: 26.579999923706055 - percentile_10_0: 35.0 - percentile_90_0: 58.0 - percentile_99_5: 81.419921875 - stdev: 9.975900650024414 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 36] - intensity: - - max: 249.0 - mean: 58.208526611328125 - median: 58.0 - min: 1.0 - percentile: [6.0, 23.0, 92.0, 110.0] - percentile_00_5: 6.0 - percentile_10_0: 23.0 - percentile_90_0: 92.0 - percentile_99_5: 110.0 - stdev: 26.11874008178711 - shape: - - [35, 51, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_161.nii.gz - label_stats: - image_intensity: - - max: 89.0 - mean: 45.35458755493164 - median: 43.0 - min: 18.0 - percentile: [26.579999923706055, 35.0, 58.0, 81.419921875] - percentile_00_5: 26.579999923706055 - percentile_10_0: 35.0 - percentile_90_0: 58.0 - percentile_99_5: 81.419921875 - stdev: 9.975900650024414 - label: - - image_intensity: - - max: 249.0 - mean: 58.99768829345703 - median: 60.0 - min: 1.0 - percentile: [5.0, 22.0, 92.0, 111.0] - percentile_00_5: 5.0 - percentile_10_0: 22.0 - percentile_90_0: 92.0 - percentile_99_5: 111.0 - stdev: 26.59313201904297 - ncomponents: 1 - pixel_percentage: 0.9421568512916565 - shape: - - [35, 51, 36] - - image_intensity: - - max: 83.0 - mean: 45.267608642578125 - median: 44.0 - min: 18.0 - percentile: [24.869998931884766, 35.0, 57.0, 76.0] - percentile_00_5: 24.869998931884766 - percentile_10_0: 35.0 - percentile_90_0: 57.0 - percentile_99_5: 76.0 - stdev: 8.759698867797852 - ncomponents: 1 - pixel_percentage: 0.02762215957045555 - shape: - - [22, 15, 14] - - image_intensity: - - max: 89.0 - mean: 45.43408966064453 - median: 42.0 - min: 21.0 - percentile: [27.704999923706055, 35.0, 61.0, 84.0] - percentile_00_5: 27.704999923706055 - percentile_10_0: 35.0 - percentile_90_0: 61.0 - percentile_99_5: 84.0 - stdev: 10.96960163116455 - ncomponents: 1 - pixel_percentage: 0.03022097796201706 - shape: - - [17, 26, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_173.nii.gz - image_foreground_stats: - intensity: - - max: 99.0 - mean: 48.30896759033203 - median: 46.0 - min: 21.0 - percentile: [29.0, 36.0, 64.0, 83.0] - percentile_00_5: 29.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 83.0 - stdev: 10.936361312866211 - image_stats: - channels: 1 - cropped_shape: - - [35, 53, 32] - intensity: - - max: 252.0 - mean: 60.54133987426758 - median: 60.0 - min: 2.0 - percentile: [7.0, 32.0, 91.0, 111.0] - percentile_00_5: 7.0 - percentile_10_0: 32.0 - percentile_90_0: 91.0 - percentile_99_5: 111.0 - stdev: 23.756322860717773 - shape: - - [35, 53, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_173.nii.gz - label_stats: - image_intensity: - - max: 99.0 - mean: 48.30896759033203 - median: 46.0 - min: 21.0 - percentile: [29.0, 36.0, 64.0, 83.0] - percentile_00_5: 29.0 - percentile_10_0: 36.0 - percentile_90_0: 64.0 - percentile_99_5: 83.0 - stdev: 10.936361312866211 - label: - - image_intensity: - - max: 252.0 - mean: 61.3210563659668 - median: 62.0 - min: 2.0 - percentile: [7.0, 32.0, 92.0, 111.0] - percentile_00_5: 7.0 - percentile_10_0: 32.0 - percentile_90_0: 92.0 - percentile_99_5: 111.0 - stdev: 24.136423110961914 - ncomponents: 1 - pixel_percentage: 0.9400774836540222 - shape: - - [35, 53, 32] - - image_intensity: - - max: 88.0 - mean: 48.49252700805664 - median: 47.0 - min: 26.0 - percentile: [30.0, 37.0, 62.0, 79.0] - percentile_00_5: 30.0 - percentile_10_0: 37.0 - percentile_90_0: 62.0 - percentile_99_5: 79.0 - stdev: 9.827911376953125 - ncomponents: 1 - pixel_percentage: 0.02592654898762703 - shape: - - [18, 16, 14] - - image_intensity: - - max: 99.0 - mean: 48.16897964477539 - median: 46.0 - min: 21.0 - percentile: [28.0, 36.0, 65.0, 85.0] - percentile_00_5: 28.0 - percentile_10_0: 36.0 - percentile_90_0: 65.0 - percentile_99_5: 85.0 - stdev: 11.70946979522705 - ncomponents: 1 - pixel_percentage: 0.03399595618247986 - shape: - - [17, 26, 20] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_370.nii.gz - image_foreground_stats: - intensity: - - max: 879.9661254882812 - mean: 387.33709716796875 - median: 364.31719970703125 - min: 67.25856018066406 - percentile: [168.14639282226562, 263.4293518066406, 543.67333984375, 790.3729248046875] - percentile_00_5: 168.14639282226562 - percentile_10_0: 263.4293518066406 - percentile_90_0: 543.67333984375 - percentile_99_5: 790.3729248046875 - stdev: 117.5162124633789 - image_stats: - channels: 1 - cropped_shape: - - [35, 50, 36] - intensity: - - max: 3968.2548828125 - mean: 523.1017456054688 - median: 543.67333984375 - min: 0.0 - percentile: [28.024398803710938, 207.38055419921875, 801.497802734375, 919.2003173828125] - percentile_00_5: 28.024398803710938 - percentile_10_0: 207.38055419921875 - percentile_90_0: 801.497802734375 - percentile_99_5: 919.2003173828125 - stdev: 233.7449493408203 - shape: - - [35, 50, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_370.nii.gz - label_stats: - image_intensity: - - max: 879.9661254882812 - mean: 387.33709716796875 - median: 364.31719970703125 - min: 67.25856018066406 - percentile: [168.14639282226562, 263.4293518066406, 543.67333984375, 790.3729248046875] - percentile_00_5: 168.14639282226562 - percentile_10_0: 263.4293518066406 - percentile_90_0: 543.67333984375 - percentile_99_5: 790.3729248046875 - stdev: 117.5162124633789 - label: - - image_intensity: - - max: 3968.2548828125 - mean: 530.8418579101562 - median: 560.4879760742188 - min: 0.0 - percentile: [28.024398803710938, 201.7756805419922, 807.1027221679688, 924.80517578125] - percentile_00_5: 28.024398803710938 - percentile_10_0: 201.7756805419922 - percentile_90_0: 807.1027221679688 - percentile_99_5: 924.80517578125 - stdev: 236.33352661132812 - ncomponents: 1 - pixel_percentage: 0.9460635185241699 - shape: - - [35, 50, 36] - - image_intensity: - - max: 879.9661254882812 - mean: 400.6208190917969 - median: 381.1318359375 - min: 128.9122314453125 - percentile: [184.84893798828125, 274.63909912109375, 549.2781982421875, 796.005126953125] - percentile_00_5: 184.84893798828125 - percentile_10_0: 274.63909912109375 - percentile_90_0: 549.2781982421875 - percentile_99_5: 796.005126953125 - stdev: 114.73052978515625 - ncomponents: 1 - pixel_percentage: 0.0253492072224617 - shape: - - [22, 16, 14] - - image_intensity: - - max: 857.546630859375 - mean: 375.55804443359375 - median: 347.5025634765625 - min: 67.25856018066406 - percentile: [162.54151916503906, 252.21958923339844, 538.0684814453125, 779.0783081054688] - percentile_00_5: 162.54151916503906 - percentile_10_0: 252.21958923339844 - percentile_90_0: 538.0684814453125 - percentile_99_5: 779.0783081054688 - stdev: 118.69512939453125 - ncomponents: 1 - pixel_percentage: 0.028587302193045616 - shape: - - [23, 24, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_301.nii.gz - image_foreground_stats: - intensity: - - max: 897.68212890625 - mean: 426.68878173828125 - median: 407.45855712890625 - min: 76.39848327636719 - percentile: [210.0958251953125, 318.3269958496094, 560.2554931640625, 808.5505981445312] - percentile_00_5: 210.0958251953125 - percentile_10_0: 318.3269958496094 - percentile_90_0: 560.2554931640625 - percentile_99_5: 808.5505981445312 - stdev: 101.80986022949219 - image_stats: - channels: 1 - cropped_shape: - - [31, 50, 36] - intensity: - - max: 3495.23046875 - mean: 545.8502807617188 - median: 541.1558837890625 - min: 0.0 - percentile: [38.199241638183594, 248.29505920410156, 840.38330078125, 974.0806274414062] - percentile_00_5: 38.199241638183594 - percentile_10_0: 248.29505920410156 - percentile_90_0: 840.38330078125 - percentile_99_5: 974.0806274414062 - stdev: 231.167724609375 - shape: - - [31, 50, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_301.nii.gz - label_stats: - image_intensity: - - max: 897.68212890625 - mean: 426.68878173828125 - median: 407.45855712890625 - min: 76.39848327636719 - percentile: [210.0958251953125, 318.3269958496094, 560.2554931640625, 808.5505981445312] - percentile_00_5: 210.0958251953125 - percentile_10_0: 318.3269958496094 - percentile_90_0: 560.2554931640625 - percentile_99_5: 808.5505981445312 - stdev: 101.80986022949219 - label: - - image_intensity: - - max: 3495.23046875 - mean: 553.7275390625 - median: 560.2554931640625 - min: 0.0 - percentile: [31.832698822021484, 235.56198120117188, 846.7498168945312, 974.0806274414062] - percentile_00_5: 31.832698822021484 - percentile_10_0: 235.56198120117188 - percentile_90_0: 846.7498168945312 - percentile_99_5: 974.0806274414062 - stdev: 235.12808227539062 - ncomponents: 1 - pixel_percentage: 0.9379928112030029 - shape: - - [31, 50, 36] - - image_intensity: - - max: 814.9171142578125 - mean: 418.4114074707031 - median: 407.45855712890625 - min: 76.39848327636719 - percentile: [184.62965393066406, 318.3269958496094, 528.4227905273438, 706.6859130859375] - percentile_00_5: 184.62965393066406 - percentile_10_0: 318.3269958496094 - percentile_90_0: 528.4227905273438 - percentile_99_5: 706.6859130859375 - stdev: 86.74916076660156 - ncomponents: 1 - pixel_percentage: 0.028584228828549385 - shape: - - [20, 13, 16] - - image_intensity: - - max: 897.68212890625 - mean: 433.76788330078125 - median: 407.45855712890625 - min: 152.79696655273438 - percentile: [218.49964904785156, 318.3269958496094, 585.7216796875, 825.6132202148438] - percentile_00_5: 218.49964904785156 - percentile_10_0: 318.3269958496094 - percentile_90_0: 585.7216796875 - percentile_99_5: 825.6132202148438 - stdev: 112.6287612915039 - ncomponents: 1 - pixel_percentage: 0.033422939479351044 - shape: - - [18, 25, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_180.nii.gz - image_foreground_stats: - intensity: - - max: 373286.0 - mean: 172842.375 - median: 165904.890625 - min: 38711.140625 - percentile: [88482.609375, 127193.75, 221206.53125, 344570.625] - percentile_00_5: 88482.609375 - percentile_10_0: 127193.75 - percentile_90_0: 221206.53125 - percentile_99_5: 344570.625 - stdev: 42850.83203125 - image_stats: - channels: 1 - cropped_shape: - - [37, 45, 36] - intensity: - - max: 873765.75 - mean: 235864.515625 - median: 246092.25 - min: 0.0 - percentile: [8295.244140625, 71892.1171875, 373286.0, 423057.46875] - percentile_00_5: 8295.244140625 - percentile_10_0: 71892.1171875 - percentile_90_0: 373286.0 - percentile_99_5: 423057.46875 - stdev: 109090.796875 - shape: - - [37, 45, 36] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_180.nii.gz - label_stats: - image_intensity: - - max: 373286.0 - mean: 172842.375 - median: 165904.890625 - min: 38711.140625 - percentile: [88482.609375, 127193.75, 221206.53125, 344570.625] - percentile_00_5: 88482.609375 - percentile_10_0: 127193.75 - percentile_90_0: 221206.53125 - percentile_99_5: 344570.625 - stdev: 42850.83203125 - label: - - image_intensity: - - max: 873765.75 - mean: 238811.875 - median: 254387.5 - min: 0.0 - percentile: [8295.244140625, 69127.0390625, 373286.0, 423057.46875] - percentile_00_5: 8295.244140625 - percentile_10_0: 69127.0390625 - percentile_90_0: 373286.0 - percentile_99_5: 423057.46875 - stdev: 110349.71875 - ncomponents: 1 - pixel_percentage: 0.9553219676017761 - shape: - - [37, 45, 36] - - image_intensity: - - max: 331809.78125 - mean: 172462.3125 - median: 168669.96875 - min: 38711.140625 - percentile: [88427.3046875, 127193.75, 218441.4375, 295863.71875] - percentile_00_5: 88427.3046875 - percentile_10_0: 127193.75 - percentile_90_0: 218441.4375 - percentile_99_5: 295863.71875 - stdev: 37609.1171875 - ncomponents: 1 - pixel_percentage: 0.02330663986504078 - shape: - - [21, 15, 13] - - image_intensity: - - max: 373286.0 - mean: 173256.84375 - median: 163139.8125 - min: 66361.953125 - percentile: [89588.640625, 127193.75, 229501.765625, 357248.40625] - percentile_00_5: 89588.640625 - percentile_10_0: 127193.75 - percentile_90_0: 229501.765625 - percentile_99_5: 357248.40625 - stdev: 47914.5390625 - ncomponents: 1 - pixel_percentage: 0.021371372044086456 - shape: - - [19, 20, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_337.nii.gz - image_foreground_stats: - intensity: - - max: 773.855712890625 - mean: 344.5802917480469 - median: 329.7298278808594 - min: 20.18754005432129 - percentile: [100.93769836425781, 248.9796600341797, 471.0426025390625, 677.8975219726562] - percentile_00_5: 100.93769836425781 - percentile_10_0: 248.9796600341797 - percentile_90_0: 471.0426025390625 - percentile_99_5: 677.8975219726562 - stdev: 95.7658462524414 - image_stats: - channels: 1 - cropped_shape: - - [33, 44, 41] - intensity: - - max: 1729.399169921875 - mean: 440.8028564453125 - median: 450.85504150390625 - min: 0.0 - percentile: [20.18754005432129, 121.12523651123047, 706.5639038085938, 834.4182739257812] - percentile_00_5: 20.18754005432129 - percentile_10_0: 121.12523651123047 - percentile_90_0: 706.5639038085938 - percentile_99_5: 834.4182739257812 - stdev: 212.9915313720703 - shape: - - [33, 44, 41] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_337.nii.gz - label_stats: - image_intensity: - - max: 773.855712890625 - mean: 344.5802917480469 - median: 329.7298278808594 - min: 20.18754005432129 - percentile: [100.93769836425781, 248.9796600341797, 471.0426025390625, 677.8975219726562] - percentile_00_5: 100.93769836425781 - percentile_10_0: 248.9796600341797 - percentile_90_0: 471.0426025390625 - percentile_99_5: 677.8975219726562 - stdev: 95.7658462524414 - label: - - image_intensity: - - max: 1729.399169921875 - mean: 446.3646545410156 - median: 471.0426025390625 - min: 0.0 - percentile: [20.18754005432129, 114.39605712890625, 706.5639038085938, 834.4182739257812] - percentile_00_5: 20.18754005432129 - percentile_10_0: 114.39605712890625 - percentile_90_0: 706.5639038085938 - percentile_99_5: 834.4182739257812 - stdev: 216.5441436767578 - ncomponents: 1 - pixel_percentage: 0.9453571438789368 - shape: - - [33, 44, 41] - - image_intensity: - - max: 767.1265258789062 - mean: 339.791015625 - median: 329.7298278808594 - min: 26.916719436645508 - percentile: [94.2085189819336, 242.25047302246094, 464.31341552734375, 625.813720703125] - percentile_00_5: 94.2085189819336 - percentile_10_0: 242.25047302246094 - percentile_90_0: 464.31341552734375 - percentile_99_5: 625.813720703125 - stdev: 94.46194458007812 - ncomponents: 1 - pixel_percentage: 0.026053214445710182 - shape: - - [16, 13, 18] - - image_intensity: - - max: 773.855712890625 - mean: 348.9447326660156 - median: 329.7298278808594 - min: 20.18754005432129 - percentile: [158.16937255859375, 248.9796600341797, 471.0426025390625, 699.767333984375] - percentile_00_5: 158.16937255859375 - percentile_10_0: 248.9796600341797 - percentile_90_0: 471.0426025390625 - percentile_99_5: 699.767333984375 - stdev: 96.73252868652344 - ncomponents: 1 - pixel_percentage: 0.02858966588973999 - shape: - - [18, 20, 28] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_229.nii.gz - image_foreground_stats: - intensity: - - max: 756.3416137695312 - mean: 337.4050598144531 - median: 324.1463928222656 - min: 91.84148406982422 - percentile: [177.63223266601562, 248.51223754882812, 432.1951904296875, 680.7074584960938] - percentile_00_5: 177.63223266601562 - percentile_10_0: 248.51223754882812 - percentile_90_0: 432.1951904296875 - percentile_99_5: 680.7074584960938 - stdev: 80.90718078613281 - image_stats: - channels: 1 - cropped_shape: - - [33, 50, 35] - intensity: - - max: 1944.87841796875 - mean: 463.89837646484375 - median: 470.0122985839844 - min: 0.0 - percentile: [27.01219940185547, 199.89028930664062, 718.5245361328125, 821.1708984375] - percentile_00_5: 27.01219940185547 - percentile_10_0: 199.89028930664062 - percentile_90_0: 718.5245361328125 - percentile_99_5: 821.1708984375 - stdev: 199.32162475585938 - shape: - - [33, 50, 35] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_229.nii.gz - label_stats: - image_intensity: - - max: 756.3416137695312 - mean: 337.4050598144531 - median: 324.1463928222656 - min: 91.84148406982422 - percentile: [177.63223266601562, 248.51223754882812, 432.1951904296875, 680.7074584960938] - percentile_00_5: 177.63223266601562 - percentile_10_0: 248.51223754882812 - percentile_90_0: 432.1951904296875 - percentile_99_5: 680.7074584960938 - stdev: 80.90718078613281 - label: - - image_intensity: - - max: 1944.87841796875 - mean: 471.26226806640625 - median: 486.2196044921875 - min: 0.0 - percentile: [27.01219940185547, 194.4878387451172, 723.9269409179688, 821.1708984375] - percentile_00_5: 27.01219940185547 - percentile_10_0: 194.4878387451172 - percentile_90_0: 723.9269409179688 - percentile_99_5: 821.1708984375 - stdev: 201.68089294433594 - ncomponents: 1 - pixel_percentage: 0.9449869990348816 - shape: - - [33, 50, 35] - - image_intensity: - - max: 637.4879150390625 - mean: 328.7818603515625 - median: 324.1463928222656 - min: 91.84148406982422 - percentile: [162.0731964111328, 248.51223754882812, 421.39031982421875, 549.5089721679688] - percentile_00_5: 162.0731964111328 - percentile_10_0: 248.51223754882812 - percentile_90_0: 421.39031982421875 - percentile_99_5: 549.5089721679688 - stdev: 69.76150512695312 - ncomponents: 1 - pixel_percentage: 0.02524675242602825 - shape: - - [18, 16, 14] - - image_intensity: - - max: 756.3416137695312 - mean: 344.7190246582031 - median: 329.5488586425781 - min: 156.67076110839844 - percentile: [186.8704071044922, 253.91468811035156, 444.080322265625, 702.3171997070312] - percentile_00_5: 186.8704071044922 - percentile_10_0: 253.91468811035156 - percentile_90_0: 444.080322265625 - percentile_99_5: 702.3171997070312 - stdev: 88.62132263183594 - ncomponents: 1 - pixel_percentage: 0.029766233637928963 - shape: - - [18, 23, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_329.nii.gz - image_foreground_stats: - intensity: - - max: 810.587158203125 - mean: 384.2828674316406 - median: 351.65179443359375 - min: 17.880599975585938 - percentile: [107.28359985351562, 250.32839965820312, 572.17919921875, 756.9453735351562] - percentile_00_5: 107.28359985351562 - percentile_10_0: 250.32839965820312 - percentile_90_0: 572.17919921875 - percentile_99_5: 756.9453735351562 - stdev: 129.23568725585938 - image_stats: - channels: 1 - cropped_shape: - - [34, 53, 32] - intensity: - - max: 3290.0302734375 - mean: 481.5130310058594 - median: 476.81597900390625 - min: 0.0 - percentile: [35.761199951171875, 202.64678955078125, 750.9851684570312, 947.6717529296875] - percentile_00_5: 35.761199951171875 - percentile_10_0: 202.64678955078125 - percentile_90_0: 750.9851684570312 - percentile_99_5: 947.6717529296875 - stdev: 223.33169555664062 - shape: - - [34, 53, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_329.nii.gz - label_stats: - image_intensity: - - max: 810.587158203125 - mean: 384.2828674316406 - median: 351.65179443359375 - min: 17.880599975585938 - percentile: [107.28359985351562, 250.32839965820312, 572.17919921875, 756.9453735351562] - percentile_00_5: 107.28359985351562 - percentile_10_0: 250.32839965820312 - percentile_90_0: 572.17919921875 - percentile_99_5: 756.9453735351562 - stdev: 129.23568725585938 - label: - - image_intensity: - - max: 3290.0302734375 - mean: 488.13140869140625 - median: 494.69659423828125 - min: 0.0 - percentile: [29.80099868774414, 196.6865997314453, 756.9453735351562, 965.5523681640625] - percentile_00_5: 29.80099868774414 - percentile_10_0: 196.6865997314453 - percentile_90_0: 756.9453735351562 - percentile_99_5: 965.5523681640625 - stdev: 226.82139587402344 - ncomponents: 1 - pixel_percentage: 0.9362687468528748 - shape: - - [34, 53, 32] - - image_intensity: - - max: 804.626953125 - mean: 367.978515625 - median: 345.69158935546875 - min: 29.80099868774414 - percentile: [105.37632751464844, 250.32839965820312, 524.49755859375, 745.0249633789062] - percentile_00_5: 105.37632751464844 - percentile_10_0: 250.32839965820312 - percentile_90_0: 524.49755859375 - percentile_99_5: 745.0249633789062 - stdev: 111.99757385253906 - ncomponents: 1 - pixel_percentage: 0.033591147512197495 - shape: - - [21, 16, 14] - - image_intensity: - - max: 810.587158203125 - mean: 402.4540710449219 - median: 357.61199951171875 - min: 17.880599975585938 - percentile: [143.0447998046875, 256.2886047363281, 649.6618041992188, 762.9055786132812] - percentile_00_5: 143.0447998046875 - percentile_10_0: 256.2886047363281 - percentile_90_0: 649.6618041992188 - percentile_99_5: 762.9055786132812 - stdev: 143.9095001220703 - ncomponents: 1 - pixel_percentage: 0.030140122398734093 - shape: - - [16, 25, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_354.nii.gz - image_foreground_stats: - intensity: - - max: 730.186767578125 - mean: 341.19573974609375 - median: 336.5208435058594 - min: 19.048351287841797 - percentile: [126.98899841308594, 234.92965698242188, 457.160400390625, 628.5955810546875] - percentile_00_5: 126.98899841308594 - percentile_10_0: 234.92965698242188 - percentile_90_0: 457.160400390625 - percentile_99_5: 628.5955810546875 - stdev: 90.39067840576172 - image_stats: - channels: 1 - cropped_shape: - - [36, 50, 32] - intensity: - - max: 1892.1361083984375 - mean: 437.1247253417969 - median: 450.8109436035156 - min: 0.0 - percentile: [19.048351287841797, 126.98899841308594, 685.7406005859375, 793.6812744140625] - percentile_00_5: 19.048351287841797 - percentile_10_0: 126.98899841308594 - percentile_90_0: 685.7406005859375 - percentile_99_5: 793.6812744140625 - stdev: 204.61395263671875 - shape: - - [36, 50, 32] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_354.nii.gz - label_stats: - image_intensity: - - max: 730.186767578125 - mean: 341.19573974609375 - median: 336.5208435058594 - min: 19.048351287841797 - percentile: [126.98899841308594, 234.92965698242188, 457.160400390625, 628.5955810546875] - percentile_00_5: 126.98899841308594 - percentile_10_0: 234.92965698242188 - percentile_90_0: 457.160400390625 - percentile_99_5: 628.5955810546875 - stdev: 90.39067840576172 - label: - - image_intensity: - - max: 1892.1361083984375 - mean: 442.232666015625 - median: 469.85931396484375 - min: 0.0 - percentile: [19.048351287841797, 120.6395492553711, 685.7406005859375, 800.0307006835938] - percentile_00_5: 19.048351287841797 - percentile_10_0: 120.6395492553711 - percentile_90_0: 685.7406005859375 - percentile_99_5: 800.0307006835938 - stdev: 207.71377563476562 - ncomponents: 1 - pixel_percentage: 0.9494444727897644 - shape: - - [36, 50, 32] - - image_intensity: - - max: 660.3428344726562 - mean: 348.03619384765625 - median: 342.87030029296875 - min: 19.048351287841797 - percentile: [114.29010009765625, 247.62855529785156, 463.5098571777344, 605.4834594726562] - percentile_00_5: 114.29010009765625 - percentile_10_0: 247.62855529785156 - percentile_90_0: 463.5098571777344 - percentile_99_5: 605.4834594726562 - stdev: 86.94621276855469 - ncomponents: 1 - pixel_percentage: 0.026545139029622078 - shape: - - [21, 16, 12] - - image_intensity: - - max: 730.186767578125 - mean: 333.6330871582031 - median: 323.82196044921875 - min: 44.44615173339844 - percentile: [139.11643981933594, 228.5802001953125, 457.160400390625, 643.579345703125] - percentile_00_5: 139.11643981933594 - percentile_10_0: 228.5802001953125 - percentile_90_0: 457.160400390625 - percentile_99_5: 643.579345703125 - stdev: 93.47119140625 - ncomponents: 1 - pixel_percentage: 0.024010416120290756 - shape: - - [21, 23, 19] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_325.nii.gz - image_foreground_stats: - intensity: - - max: 960.3888549804688 - mean: 449.4330749511719 - median: 440.834228515625 - min: 7.872039794921875 - percentile: [165.31283569335938, 322.7536315917969, 598.2750244140625, 810.820068359375] - percentile_00_5: 165.31283569335938 - percentile_10_0: 322.7536315917969 - percentile_90_0: 598.2750244140625 - percentile_99_5: 810.820068359375 - stdev: 113.93912506103516 - image_stats: - channels: 1 - cropped_shape: - - [35, 51, 40] - intensity: - - max: 4479.1904296875 - mean: 587.176513671875 - median: 582.5309448242188 - min: 0.0 - percentile: [31.4881591796875, 196.80099487304688, 936.772705078125, 1117.82958984375] - percentile_00_5: 31.4881591796875 - percentile_10_0: 196.80099487304688 - percentile_90_0: 936.772705078125 - percentile_99_5: 1117.82958984375 - stdev: 282.170654296875 - shape: - - [35, 51, 40] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_325.nii.gz - label_stats: - image_intensity: - - max: 960.3888549804688 - mean: 449.4330749511719 - median: 440.834228515625 - min: 7.872039794921875 - percentile: [165.31283569335938, 322.7536315917969, 598.2750244140625, 810.820068359375] - percentile_00_5: 165.31283569335938 - percentile_10_0: 322.7536315917969 - percentile_90_0: 598.2750244140625 - percentile_99_5: 810.820068359375 - stdev: 113.93912506103516 - label: - - image_intensity: - - max: 4479.1904296875 - mean: 594.9926147460938 - median: 606.1470947265625 - min: 0.0 - percentile: [31.4881591796875, 188.928955078125, 944.644775390625, 1125.70166015625] - percentile_00_5: 31.4881591796875 - percentile_10_0: 188.928955078125 - percentile_90_0: 944.644775390625 - percentile_99_5: 1125.70166015625 - stdev: 286.8168640136719 - ncomponents: 1 - pixel_percentage: 0.9463025331497192 - shape: - - [35, 51, 40] - - image_intensity: - - max: 865.9243774414062 - mean: 455.1971740722656 - median: 440.834228515625 - min: 7.872039794921875 - percentile: [177.0028076171875, 330.62567138671875, 606.1470947265625, 810.820068359375] - percentile_00_5: 177.0028076171875 - percentile_10_0: 330.62567138671875 - percentile_90_0: 606.1470947265625 - percentile_99_5: 810.820068359375 - stdev: 115.61988067626953 - ncomponents: 1 - pixel_percentage: 0.026582632213830948 - shape: - - [21, 16, 15] - - image_intensity: - - max: 960.3888549804688 - mean: 443.7821350097656 - median: 432.9621887207031 - min: 47.23223876953125 - percentile: [157.4407958984375, 322.7536315917969, 582.5309448242188, 813.3781127929688] - percentile_00_5: 157.4407958984375 - percentile_10_0: 322.7536315917969 - percentile_90_0: 582.5309448242188 - percentile_99_5: 813.3781127929688 - stdev: 111.97929382324219 - ncomponents: 1 - pixel_percentage: 0.02711484581232071 - shape: - - [21, 25, 21] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_225.nii.gz - image_foreground_stats: - intensity: - - max: 970.541015625 - mean: 442.2082824707031 - median: 425.1130065917969 - min: 112.29399871826172 - percentile: [208.54598999023438, 312.8190002441406, 601.5750122070312, 866.2680053710938] - percentile_00_5: 208.54598999023438 - percentile_10_0: 312.8190002441406 - percentile_90_0: 601.5750122070312 - percentile_99_5: 866.2680053710938 - stdev: 120.2042465209961 - image_stats: - channels: 1 - cropped_shape: - - [33, 53, 26] - intensity: - - max: 1860.8719482421875 - mean: 559.1055297851562 - median: 569.490966796875 - min: 0.0 - percentile: [24.062999725341797, 144.37799072265625, 906.3729858398438, 1058.77197265625] - percentile_00_5: 24.062999725341797 - percentile_10_0: 144.37799072265625 - percentile_90_0: 906.3729858398438 - percentile_99_5: 1058.77197265625 - stdev: 276.254638671875 - shape: - - [33, 53, 26] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_225.nii.gz - label_stats: - image_intensity: - - max: 970.541015625 - mean: 442.2082824707031 - median: 425.1130065917969 - min: 112.29399871826172 - percentile: [208.54598999023438, 312.8190002441406, 601.5750122070312, 866.2680053710938] - percentile_00_5: 208.54598999023438 - percentile_10_0: 312.8190002441406 - percentile_90_0: 601.5750122070312 - percentile_99_5: 866.2680053710938 - stdev: 120.2042465209961 - label: - - image_intensity: - - max: 1860.8719482421875 - mean: 565.8341064453125 - median: 593.5540161132812 - min: 0.0 - percentile: [24.062999725341797, 136.35699462890625, 906.3729858398438, 1058.77197265625] - percentile_00_5: 24.062999725341797 - percentile_10_0: 136.35699462890625 - percentile_90_0: 906.3729858398438 - percentile_99_5: 1058.77197265625 - stdev: 281.15093994140625 - ncomponents: 1 - pixel_percentage: 0.9455732703208923 - shape: - - [33, 53, 26] - - image_intensity: - - max: 874.2890014648438 - mean: 435.1266784667969 - median: 425.1130065917969 - min: 112.29399871826172 - percentile: [205.25738525390625, 311.2148132324219, 577.511962890625, 803.9456176757812] - percentile_00_5: 205.25738525390625 - percentile_10_0: 311.2148132324219 - percentile_90_0: 577.511962890625 - percentile_99_5: 803.9456176757812 - stdev: 110.34451293945312 - ncomponents: 1 - pixel_percentage: 0.024607468396425247 - shape: - - [19, 14, 10] - - image_intensity: - - max: 970.541015625 - mean: 448.0521240234375 - median: 425.1130065917969 - min: 168.4409942626953 - percentile: [208.54598999023438, 312.8190002441406, 617.6170043945312, 898.3519897460938] - percentile_00_5: 208.54598999023438 - percentile_10_0: 312.8190002441406 - percentile_90_0: 617.6170043945312 - percentile_99_5: 898.3519897460938 - stdev: 127.47306060791016 - ncomponents: 1 - pixel_percentage: 0.02981923706829548 - shape: - - [20, 28, 15] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_092.nii.gz - image_foreground_stats: - intensity: - - max: 620.0889892578125 - mean: 298.8930358886719 - median: 290.1333923339844 - min: 34.133338928222656 - percentile: [136.53335571289062, 210.48892211914062, 403.91119384765625, 540.4445190429688] - percentile_00_5: 136.53335571289062 - percentile_10_0: 210.48892211914062 - percentile_90_0: 403.91119384765625 - percentile_99_5: 540.4445190429688 - stdev: 76.28549194335938 - image_stats: - channels: 1 - cropped_shape: - - [38, 49, 28] - intensity: - - max: 2178.844970703125 - mean: 395.8317565917969 - median: 409.6000671386719 - min: 0.0 - percentile: [17.066669464111328, 130.84446716308594, 614.400146484375, 705.42236328125] - percentile_00_5: 17.066669464111328 - percentile_10_0: 130.84446716308594 - percentile_90_0: 614.400146484375 - percentile_99_5: 705.42236328125 - stdev: 180.3633575439453 - shape: - - [38, 49, 28] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_092.nii.gz - label_stats: - image_intensity: - - max: 620.0889892578125 - mean: 298.8930358886719 - median: 290.1333923339844 - min: 34.133338928222656 - percentile: [136.53335571289062, 210.48892211914062, 403.91119384765625, 540.4445190429688] - percentile_00_5: 136.53335571289062 - percentile_10_0: 210.48892211914062 - percentile_90_0: 403.91119384765625 - percentile_99_5: 540.4445190429688 - stdev: 76.28549194335938 - label: - - image_intensity: - - max: 2178.844970703125 - mean: 402.0484924316406 - median: 426.666748046875 - min: 0.0 - percentile: [17.066669464111328, 125.15557861328125, 614.400146484375, 705.42236328125] - percentile_00_5: 17.066669464111328 - percentile_10_0: 125.15557861328125 - percentile_90_0: 614.400146484375 - percentile_99_5: 705.42236328125 - stdev: 183.31028747558594 - ncomponents: 1 - pixel_percentage: 0.9397345185279846 - shape: - - [38, 49, 28] - - image_intensity: - - max: 620.0889892578125 - mean: 312.35369873046875 - median: 301.51116943359375 - min: 34.133338928222656 - percentile: [138.26846313476562, 221.86671447753906, 415.2889709472656, 549.3480224609375] - percentile_00_5: 138.26846313476562 - percentile_10_0: 221.86671447753906 - percentile_90_0: 415.2889709472656 - percentile_99_5: 549.3480224609375 - stdev: 77.9832763671875 - ncomponents: 1 - pixel_percentage: 0.02854073978960514 - shape: - - [24, 14, 10] - - image_intensity: - - max: 620.0889892578125 - mean: 286.7833557128906 - median: 278.755615234375 - min: 73.95556640625 - percentile: [138.04090881347656, 204.80003356933594, 386.8445129394531, 512.0001220703125] - percentile_00_5: 138.04090881347656 - percentile_10_0: 204.80003356933594 - percentile_90_0: 386.8445129394531 - percentile_99_5: 512.0001220703125 - stdev: 72.62367248535156 - ncomponents: 1 - pixel_percentage: 0.0317247211933136 - shape: - - [22, 22, 17] - labels: [0, 1, 2] -- image_filepath: /workspace/data/Task04_Hippocampus/imagesTr/hippocampus_358.nii.gz - image_foreground_stats: - intensity: - - max: 1139.9168701171875 - mean: 490.15472412109375 - median: 469.9656982421875 - min: 49.99635314941406 - percentile: [169.9875946044922, 345.9748229980469, 659.9518432617188, 999.9270629882812] - percentile_00_5: 169.9875946044922 - percentile_10_0: 345.9748229980469 - percentile_90_0: 659.9518432617188 - percentile_99_5: 999.9270629882812 - stdev: 136.52745056152344 - image_stats: - channels: 1 - cropped_shape: - - [35, 50, 34] - intensity: - - max: 1359.9007568359375 - mean: 666.5247802734375 - median: 679.9503784179688 - min: 0.0 - percentile: [29.99781036376953, 249.9817657470703, 1049.92333984375, 1189.9132080078125] - percentile_00_5: 29.99781036376953 - percentile_10_0: 249.9817657470703 - percentile_90_0: 1049.92333984375 - percentile_99_5: 1189.9132080078125 - stdev: 301.83233642578125 - shape: - - [35, 50, 34] - spacing: - - [1.0, 1.0, 1.0] - label_filepath: /workspace/data/Task04_Hippocampus/labelsTr/hippocampus_358.nii.gz - label_stats: - image_intensity: - - max: 1139.9168701171875 - mean: 490.15472412109375 - median: 469.9656982421875 - min: 49.99635314941406 - percentile: [169.9875946044922, 345.9748229980469, 659.9518432617188, 999.9270629882812] - percentile_00_5: 169.9875946044922 - percentile_10_0: 345.9748229980469 - percentile_90_0: 659.9518432617188 - percentile_99_5: 999.9270629882812 - stdev: 136.52745056152344 - label: - - image_intensity: - - max: 1359.9007568359375 - mean: 675.5188598632812 - median: 699.9489135742188 - min: 0.0 - percentile: [29.99781036376953, 239.98248291015625, 1059.922607421875, 1199.9124755859375] - percentile_00_5: 29.99781036376953 - percentile_10_0: 239.98248291015625 - percentile_90_0: 1059.922607421875 - percentile_99_5: 1199.9124755859375 - stdev: 305.1734924316406 - ncomponents: 1 - pixel_percentage: 0.9514790177345276 - shape: - - [35, 50, 34] - - image_intensity: - - max: 1029.9248046875 - mean: 484.5466003417969 - median: 469.9656982421875 - min: 49.99635314941406 - percentile: [121.79109954833984, 349.9744567871094, 659.9518432617188, 894.0350952148438] - percentile_00_5: 121.79109954833984 - percentile_10_0: 349.9744567871094 - percentile_90_0: 659.9518432617188 - percentile_99_5: 894.0350952148438 - stdev: 127.90323638916016 - ncomponents: 1 - pixel_percentage: 0.025529412552714348 - shape: - - [23, 19, 13] - - image_intensity: - - max: 1139.9168701171875 - mean: 496.3819580078125 - median: 469.9656982421875 - min: 109.99197387695312 - percentile: [238.33261108398438, 339.9751892089844, 679.9503784179688, 1023.2261352539062] - percentile_00_5: 238.33261108398438 - percentile_10_0: 339.9751892089844 - percentile_90_0: 679.9503784179688 - percentile_99_5: 1023.2261352539062 - stdev: 145.25244140625 - ncomponents: 1 - pixel_percentage: 0.022991595789790154 - shape: - - [23, 19, 19] - labels: [0, 1, 2] -stats_summary: - image_foreground_stats: - intensity: {max: 486420.21875, mean: 22356.19451308617, median: 21565.137033081053, - min: 0.0, percentile_00_5: 10025.874836195433, percentile_10_0: 15999.318258843055, - percentile_90_0: 29675.986145841158, percentile_99_5: 42594.37918219933, stdev: 5741.80349216828} - image_stats: - channels: - max: 1 - mean: 1.0 - median: 1.0 - min: 1 - percentile: [1, 1, 1, 1] - percentile_00_5: 1 - percentile_10_0: 1 - percentile_90_0: 1 - percentile_99_5: 1 - stdev: 0.0 - cropped_shape: - max: [43, 59, 47] - mean: [35.37692307692308, 49.98076923076923, 35.65384615384615] - median: [35.0, 50.0, 36.0] - min: [31, 40, 24] - percentile: - - [31, 40, 26] - - [33, 46, 30] - - [38, 54, 41] - - [41, 58, 45] - percentile_00_5: [31, 40, 26] - percentile_10_0: [33, 46, 30] - percentile_90_0: [38, 54, 41] - percentile_99_5: [41, 58, 45] - stdev: [1.979764494989571, 3.2539348051207666, 4.210264998898141] - intensity: {max: 1704295.25, mean: 29411.816703869747, median: 29634.744104356032, - min: 0.0, percentile_00_5: 1499.0803447980147, percentile_10_0: 10888.021187620896, - percentile_90_0: 46410.96342914288, percentile_99_5: 54237.95997103178, stdev: 13406.155988869301} - shape: - max: [43, 59, 47] - mean: [35.37692307692308, 49.98076923076923, 35.65384615384615] - median: [35.0, 50.0, 36.0] - min: [31, 40, 24] - percentile: - - [31, 40, 26] - - [33, 46, 30] - - [38, 54, 41] - - [41, 58, 45] - percentile_00_5: [31, 40, 26] - percentile_10_0: [33, 46, 30] - percentile_90_0: [38, 54, 41] - percentile_99_5: [41, 58, 45] - stdev: [1.979764494989571, 3.2539348051207666, 4.210264998898141] - spacing: - max: [1.0, 1.0, 1.0] - mean: [1.0, 1.0, 1.0] - median: [1.0, 1.0, 1.0] - min: [1.0, 1.0, 1.0] - percentile: - - [1.0, 1.0, 1.0] - - [1.0, 1.0, 1.0] - - [1.0, 1.0, 1.0] - - [1.0, 1.0, 1.0] - percentile_00_5: [1.0, 1.0, 1.0] - percentile_10_0: [1.0, 1.0, 1.0] - percentile_90_0: [1.0, 1.0, 1.0] - percentile_99_5: [1.0, 1.0, 1.0] - stdev: [0.0, 0.0, 0.0] - label_stats: - image_intensity: {max: 486420.21875, mean: 22356.19451308617, median: 21565.137033081053, - min: 0.0, percentile_00_5: 10025.874836195433, percentile_10_0: 15999.318258843055, - percentile_90_0: 29675.986145841158, percentile_99_5: 42594.37918219933, stdev: 5741.80349216828} - label: - - image_intensity: {max: 1704295.25, mean: 29816.451873926017, median: 30754.60859774076, - min: 0.0, percentile_00_5: 1433.9177829008836, percentile_10_0: 10459.940969936664, - percentile_90_0: 46656.694515991214, percentile_99_5: 54488.350277709964, - stdev: 13605.04892151906} - ncomponents: - max: 2 - mean: 1.0038461538461538 - median: 1.0 - min: 1 - percentile: [1, 1, 1, 1] - percentile_00_5: 1 - percentile_10_0: 1 - percentile_90_0: 1 - percentile_99_5: 1 - stdev: 0.061897988228581086 - pixel_percentage: - max: 0.962441086769104 - mean: 0.9471651265254387 - median: 0.9466995000839233 - min: 0.9252430200576782 - percentile: [0.9292748713493347, 0.938031542301178, 0.9556751847267151, 0.961978679895401] - percentile_00_5: 0.9292748713493347 - percentile_10_0: 0.938031542301178 - percentile_90_0: 0.9556751847267151 - percentile_99_5: 0.961978679895401 - stdev: 0.006967395986478662 - shape: - max: [43, 59, 47] - mean: [35.24521072796935, 49.793103448275865, 35.52107279693487] - median: [35.0, 50.0, 36.0] - min: [1, 1, 1] - percentile: - - [31, 40, 24] - - [33, 46, 30] - - [38, 54, 41] - - [41, 58, 45] - percentile_00_5: [31, 40, 24] - percentile_10_0: [33, 46, 30] - percentile_90_0: [38, 54, 41] - percentile_99_5: [41, 58, 45] - stdev: [2.900856336382301, 4.438954860512355, 4.716131158267367] - - image_intensity: {max: 456419.875, mean: 22348.98208304185, median: 21880.02027529203, - min: 5.0, percentile_00_5: 9691.928853269725, percentile_10_0: 16245.252325556829, - percentile_90_0: 29206.79972698505, percentile_99_5: 37625.35115063007, stdev: 5215.37838471486} - ncomponents: - max: 2 - mean: 1.0038461538461538 - median: 1.0 - min: 1 - percentile: [1, 1, 1, 1] - percentile_00_5: 1 - percentile_10_0: 1 - percentile_90_0: 1 - percentile_99_5: 1 - stdev: 0.061897988228581086 - pixel_percentage: - max: 0.04358745366334915 - mean: 0.027484820288820908 - median: 0.027486125007271767 - min: 0.018098922446370125 - percentile: [0.018215760765597225, 0.02076417114585638, 0.03336264044046402, - 0.04135232836008069] - percentile_00_5: 0.018215760765597225 - percentile_10_0: 0.02076417114585638 - percentile_90_0: 0.03336264044046402 - percentile_99_5: 0.04135232836008069 - stdev: 0.004866392328134567 - shape: - max: [27, 22, 20] - mean: [21.36015325670498, 16.375478927203066, 14.187739463601533] - median: [21.0, 16.0, 14.0] - min: [1, 1, 4] - percentile: - - [14, 11, 10] - - [18, 14, 12] - - [24, 19, 16] - - [27, 21, 19] - percentile_00_5: [14, 11, 10] - percentile_10_0: [18, 14, 12] - percentile_90_0: [24, 19, 16] - percentile_99_5: [27, 21, 19] - stdev: [2.5716890657390703, 2.141724754464362, 1.8833824286994465] - - image_intensity: {max: 486420.21875, mean: 22372.431986515337, median: 21250.799574690598, - min: 0.0, percentile_00_5: 10856.103725404006, percentile_10_0: 15858.199093451867, - percentile_90_0: 30547.069226661097, percentile_99_5: 44219.680789771446, - stdev: 6216.864071468207} - ncomponents: - max: 1 - mean: 1.0 - median: 1.0 - min: 1 - percentile: [1, 1, 1, 1] - percentile_00_5: 1 - percentile_10_0: 1 - percentile_90_0: 1 - percentile_99_5: 1 - stdev: 0.0 - pixel_percentage: - max: 0.037368293851614 - mean: 0.02535005337200486 - median: 0.025343699380755424 - min: 0.015177329070866108 - percentile: [0.015730357482098042, 0.020579034462571144, 0.03014677781611681, - 0.035079965647309995] - percentile_00_5: 0.015730357482098042 - percentile_10_0: 0.020579034462571144 - percentile_90_0: 0.03014677781611681 - percentile_99_5: 0.035079965647309995 - stdev: 0.003764517806114743 - shape: - max: [26, 30, 31] - mean: [19.24230769230769, 22.638461538461538, 20.046153846153846] - median: [19.0, 23.0, 20.0] - min: [12, 15, 11] - percentile: - - [13, 15, 12] - - [16, 20, 16] - - [22, 26, 23] - - [26, 28, 29] - percentile_00_5: [13, 15, 12] - percentile_10_0: [16, 20, 16] - percentile_90_0: [22, 26, 23] - percentile_99_5: [26, 28, 29] - stdev: [2.531140374936389, 2.57802502271632, 3.1582895528130868] - labels: [0, 1, 2] diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index c594b2c13f..0a633ee867 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -12,13 +12,13 @@ import time from abc import ABC, abstractmethod from copy import deepcopy -from typing import Any, Dict, List, Optional, TypeVar +from typing import Any, Dict, List, Optional import numpy as np import torch from monai.apps.utils import get_logger -from monai.auto3dseg.operations import Operations, OperationType, SampleOperations, SummaryOperations +from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations from monai.auto3dseg.utils import ( concat_multikeys_to_dict, concat_val_to_np, @@ -67,7 +67,7 @@ def __init__(self, stats_name: str, report_format: dict) -> None: self.stats_name = stats_name self.ops = ConfigParser({}) - def update_ops(self, key: str, op: OperationType): + def update_ops(self, key: str, op): """ Register an statistical operation to the Analyzer and update the report_format @@ -84,7 +84,7 @@ def update_ops(self, key: str, op: OperationType): self.report_format = parser.config - def update_ops_nested_label(self, nested_key: str, op: OperationType): + def update_ops_nested_label(self, nested_key: str, op): """ Update operations for nested label format. Operation value in report_format will be resolved to a dict with only keys @@ -121,7 +121,7 @@ def get_report_format(self): return self.report_format @staticmethod - def unwrap_ops(func: OperationType): + def unwrap_ops(func): """ Unwrap a function value and generates the same set keys in a dict when the function is actually called in runtime @@ -161,9 +161,6 @@ def __call__(self, data: Any): raise NotImplementedError(f"Subclass {self.__class__.__name__} must implement this method.") -AnalyzerType = TypeVar("AnalyzerType", bound=Analyzer) - - class ImageStats(Analyzer): """ Analyzer to extract image stats properties for each case(image). @@ -342,7 +339,7 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stat self.label_key = label_key self.do_ccp = do_ccp - report_format = { + report_format: Dict[str, Any] = { str(LabelStatsKeys.LABEL_UID): None, str(LabelStatsKeys.IMAGE_INTST): None, str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INTST): None}], @@ -573,7 +570,7 @@ def __init__(self, stats_name: str = "label_stats", average: Optional[bool] = Tr self.summary_average = average self.do_ccp = do_ccp - report_format = { + report_format: Dict[str, Any] = { str(LabelStatsKeys.LABEL_UID): None, str(LabelStatsKeys.IMAGE_INTST): None, str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INTST): None}], diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index d51fbb95e4..a642597afb 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -16,7 +16,7 @@ from monai.config.type_definitions import NdarrayTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std -__all__ = ["Operations", "OperationType", "SampleOperations", "SummaryOperations"] +__all__ = ["Operations", "SampleOperations", "SummaryOperations"] class Operations(UserDict): @@ -40,9 +40,6 @@ def evaluate(self, data: Any, **kwargs) -> dict: return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} -OperationType = TypeVar("OperationType", bound=Operations) - - class SampleOperations(Operations): """ Apply statistical operation to a sample (image/ndarray/tensor) @@ -101,8 +98,7 @@ def evaluate(self, data: Any, **kwargs) -> dict: ret.update({k: ret[cache][idx]}) for k, v in ret.items(): - v: NdarrayTensor - ret[k] = v.tolist() + ret[k] = v.tolist() # type: ignore return ret diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 4fc72ddcea..788b7ee5c6 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -9,7 +9,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import Dict, List, Type +from typing import Any, Dict, List from monai.auto3dseg.analyzer import ( Analyzer, @@ -21,7 +21,6 @@ LabelStats, LabelStatsSumm, ) -from monai.auto3dseg.operations import OperationType from monai.transforms import Compose from monai.utils.enums import DataStatsKeys @@ -77,7 +76,7 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.image_key = image_key self.label_key = label_key - self.summary_analyzers: List[OperationType] = [] + self.summary_analyzers: List[Any] = [] super().__init__() self.add_analyzer(FilenameStats(image_key, DataStatsKeys.BY_CASE_IMAGE_PATH), None) @@ -91,7 +90,7 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.add_analyzer(LabelStats(image_key, label_key, do_ccp=do_ccp), LabelStatsSumm(do_ccp=do_ccp)) - def add_analyzer(self, case_analyzer: Type[Analyzer], summary_analzyer: Type[Analyzer]) -> None: + def add_analyzer(self, case_analyzer, summary_analzyer) -> None: """ Add new analyzers to the engine so that the callable and summarize functions will utilize the new analyzers for stats computations. diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index b130ead5a5..a2ac30867e 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -12,7 +12,7 @@ import os from copy import deepcopy from numbers import Number -from typing import Any, Dict, List, Optional, Sequence, Tuple, Union +from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union, cast import numpy as np import torch @@ -115,7 +115,7 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An def concat_val_to_np( data_list: List[Dict], - fixed_keys: Sequence[Union[str, int]], + fixed_keys: List[Union[str, int]], ragged: Optional[bool] = False, allow_missing: Optional[bool] = False, **kwargs, @@ -141,7 +141,7 @@ def concat_val_to_np( fixed_keys[i] = str(key) val: Any - val = parser.get(ID_SEP_KEY.join(fixed_keys)) + val = parser.get(ID_SEP_KEY.join(cast(Iterable[str], fixed_keys))) if val is None: if allow_missing: @@ -164,13 +164,10 @@ def concat_val_to_np( if len(np_list) == 0: return np.array([0]) - - if ragged: - ret = np.concatenate(np_list, **kwargs) + elif ragged: + return np.concatenate(np_list, **kwargs) # type: ignore else: - ret = np.concatenate([np_list], **kwargs) - - return ret + return np.concatenate([np_list], **kwargs) # type: ignore def concat_multikeys_to_dict( diff --git a/monai/transforms/utils_pytorch_numpy_unification.py b/monai/transforms/utils_pytorch_numpy_unification.py index 5c7a5ac4a0..0ebfed10eb 100644 --- a/monai/transforms/utils_pytorch_numpy_unification.py +++ b/monai/transforms/utils_pytorch_numpy_unification.py @@ -420,12 +420,12 @@ def max(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> ret: NdarrayTensor if dim is None: - ret = np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) + ret = np.max(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.max(x, **kwargs) # type: ignore else: if isinstance(x, (np.ndarray, list)): ret = np.max(x, axis=dim, **kwargs) else: - ret = torch.max(x, int(dim), **kwargs) + ret = torch.max(x, int(dim), **kwargs) # type: ignore return ret @@ -442,12 +442,12 @@ def mean(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> ret: NdarrayTensor if dim is None: - ret = np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) + ret = np.mean(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.mean(x, **kwargs) # type: ignore else: if isinstance(x, (np.ndarray, list)): ret = np.mean(x, axis=dim, **kwargs) else: - ret = torch.mean(x, int(dim), **kwargs) + ret = torch.mean(x, int(dim), **kwargs) # type: ignore return ret @@ -464,12 +464,12 @@ def median(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) ret: NdarrayTensor if dim is None: - ret = np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) + ret = np.median(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.median(x, **kwargs) # type: ignore else: if isinstance(x, (np.ndarray, list)): ret = np.median(x, axis=dim, **kwargs) else: - ret = torch.median(x, int(dim), **kwargs) + ret = torch.median(x, int(dim), **kwargs) # type: ignore return ret @@ -486,12 +486,12 @@ def min(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> ret: NdarrayTensor if dim is None: - ret = np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) + ret = np.min(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.min(x, **kwargs) # type: ignore else: if isinstance(x, (np.ndarray, list)): ret = np.min(x, axis=dim, **kwargs) else: - ret = torch.min(x, int(dim), **kwargs) + ret = torch.min(x, int(dim), **kwargs) # type: ignore return ret @@ -508,12 +508,12 @@ def std(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, unbias: bool ret: NdarrayTensor if dim is None: - ret = np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) + ret = np.std(x) if isinstance(x, (np.ndarray, list)) else torch.std(x, unbias) # type: ignore else: if isinstance(x, (np.ndarray, list)): ret = np.std(x, axis=dim) else: - ret = torch.std(x, int(dim), unbias) + ret = torch.std(x, int(dim), unbias) # type: ignore return ret @@ -530,11 +530,11 @@ def sum(x: NdarrayTensor, dim: Optional[Union[int, Tuple]] = None, **kwargs) -> ret: NdarrayTensor if dim is None: - ret = np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) + ret = np.sum(x, **kwargs) if isinstance(x, (np.ndarray, list)) else torch.sum(x, **kwargs) # type: ignore else: if isinstance(x, (np.ndarray, list)): ret = np.sum(x, axis=dim, **kwargs) else: - ret = torch.sum(x, int(dim), **kwargs) + ret = torch.sum(x, int(dim), **kwargs) # type: ignore return ret From fea21b936297c7ec3d5cb8169aa01cd59266ff29 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 10:23:54 +0000 Subject: [PATCH 137/150] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- monai/auto3dseg/operations.py | 3 +-- monai/auto3dseg/seg_summarizer.py | 1 - monai/auto3dseg/utils.py | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index a642597afb..17c78f0106 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -11,9 +11,8 @@ from collections import UserDict from functools import partial -from typing import Any, TypeVar +from typing import Any -from monai.config.type_definitions import NdarrayTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std __all__ = ["Operations", "SampleOperations", "SummaryOperations"] diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 788b7ee5c6..51366a37cd 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -12,7 +12,6 @@ from typing import Any, Dict, List from monai.auto3dseg.analyzer import ( - Analyzer, FgImageStats, FgImageStatsSumm, FilenameStats, diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index a2ac30867e..3c71018cd2 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -12,7 +12,7 @@ import os from copy import deepcopy from numbers import Number -from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union, cast +from typing import Any, Dict, Iterable, List, Optional, Tuple, Union, cast import numpy as np import torch From a98fa391fe09dd7785f8a7c24f532622833c39d6 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Thu, 25 Aug 2022 11:35:05 +0100 Subject: [PATCH 138/150] adds doc pages Signed-off-by: Wenqi Li --- docs/source/api.rst | 1 + docs/source/auto3dseg.rst | 9 +++++++++ monai/README.md | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 docs/source/auto3dseg.rst diff --git a/docs/source/api.rst b/docs/source/api.rst index db312e2b13..e16a19f488 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -7,6 +7,7 @@ API Reference :maxdepth: 1 apps + auto3dseg fl bundle transforms diff --git a/docs/source/auto3dseg.rst b/docs/source/auto3dseg.rst new file mode 100644 index 0000000000..c9862d294d --- /dev/null +++ b/docs/source/auto3dseg.rst @@ -0,0 +1,9 @@ +:github_url: https://github.com/Project-MONAI/MONAI + +.. _auto3dseg: + +auto3dseg +========= + +.. automodule:: monai.auto3dseg + :members: diff --git a/monai/README.md b/monai/README.md index 2a183803c7..a1e36c6210 100644 --- a/monai/README.md +++ b/monai/README.md @@ -2,7 +2,7 @@ * **apps**: high level medical domain specific deep learning applications. -* **auto3dseg**: modules to run the Auto3D segmentation pipeline. +* **auto3dseg**: automated machine learning (AutoML) components for volumetric image analysis. * **bundle**: components to build the portable self-descriptive model bundle. From 23628892bac15ebbc80e89cf683cd40b239491dd Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 01:32:19 +0800 Subject: [PATCH 139/150] misc fixes Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 101 +++++++++++++++++++++++++++--- monai/auto3dseg/data_analyzer.py | 55 ++++++++++------ monai/auto3dseg/operations.py | 15 +++-- monai/auto3dseg/seg_summarizer.py | 1 - monai/auto3dseg/utils.py | 2 +- 5 files changed, 138 insertions(+), 36 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 0a633ee867..b84d35e203 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -25,6 +25,7 @@ get_foreground_image, get_foreground_label, get_label_ccp, + verify_report_format, ) from monai.bundle.config_parser import ConfigParser from monai.bundle.utils import ID_SEP_KEY @@ -63,7 +64,7 @@ class Analyzer(MapTransform, ABC): def __init__(self, stats_name: str, report_format: dict) -> None: super().__init__(None) parser = ConfigParser(report_format) - self.report_format = parser.config + self.report_format = parser.get("") self.stats_name = stats_name self.ops = ConfigParser({}) @@ -79,10 +80,10 @@ def update_ops(self, key: str, op): self.ops[key] = op parser = ConfigParser(self.report_format) - if parser.get(key, "NA") != "NA": + if parser.get(key, "None") != "None": parser[key] = op - self.report_format = parser.config + self.report_format = parser.get("") def update_ops_nested_label(self, nested_key: str, op): """ @@ -127,7 +128,10 @@ def unwrap_ops(func): called in runtime Args: - func: Operation sub-class object that represents statistical operations. + func: Operation sub-class object that represents statistical operations. The func object + should have a `data` dictionary which stores the statistical operation information. + For some operations (ImageStats for example), it may also contains the data_addon + property, which is part of the update process. Returns: a dict with a set of keys. @@ -214,6 +218,10 @@ def __call__(self, data): ImageStatsKeys.INTENSITY is in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) + Raises: + RuntimeError if the stats report generated is not consistent with the pre- + defined report_format + Note: The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. @@ -239,6 +247,9 @@ def __call__(self, data): self.ops[str(ImageStatsKeys.INTENSITY)].evaluate(nda_c) for nda_c in nda_croppeds ] + if not verify_report_format(report, self.get_report_format()): + raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") + logger.debug(f"Get image stats spent {time.time()-start}") d[self.stats_name] = report return d @@ -286,6 +297,10 @@ def __call__(self, data) -> dict: in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) + Raises: + RuntimeError if the stats report generated is not consistent with the pre- + defined report_format + Note: The stats operation uses numpy and torch to compute max, min, and other functions. If the input has nan/inf, the stats results will be nan/inf. @@ -305,6 +320,9 @@ def __call__(self, data) -> dict: self.ops[str(ImageStatsKeys.INTENSITY)].evaluate(nda_f) for nda_f in nda_foregrounds ] + if not verify_report_format(report, self.get_report_format()): + raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") + d[self.stats_name] = report return d @@ -391,6 +409,10 @@ def __call__(self, data): ] } + Raises: + RuntimeError if the stats report generated is not consistent with the pre- + defined report_format + Notes: The label class_ID of the dictionary in LabelStatsKeys.LABEL IS NOT the index. Instead, the class_ID is the LabelStatsKeys.LABEL_UID with the same @@ -446,6 +468,9 @@ def __call__(self, data): ] report[str(LabelStatsKeys.LABEL)] = label_substats + if not verify_report_format(report, self.get_report_format()): + raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") + d[self.stats_name] = report logger.debug(f"Get label stats spent {time.time()-start}") return d @@ -489,6 +514,10 @@ def __call__(self, data: List[Dict]): in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) + Raises: + RuntimeError if the stats report generated is not consistent with the pre- + defined report_format + Examples: output dict contains a dictionary for all of the following keys{ ImageStatsKeys.SHAPE:{...} @@ -523,6 +552,9 @@ def __call__(self, data: List[Dict]): intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) + if not verify_report_format(report, self.get_report_format()): + raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") + return report @@ -546,6 +578,28 @@ def __init__(self, stats_name: str = "image_foreground_stats", average: Optional self.update_ops(str(ImageStatsKeys.INTENSITY), SummaryOperations()) def __call__(self, data: List[Dict]): + """ + Callable to execute the pre-defined functions + + Returns: + A dictionary. The dict has the key in self.report_format and value + in a list format. Each element of the value list has stats pre-defined + by SampleOperations (max, min, ....) and SummaryOperation (max of the + max, mean of the mean, etc) + + Raises: + RuntimeError if the stats report generated is not consistent with the pre- + defined report_format + + Examples: + output dict contains a dictionary for all of the following keys{ + ImageStatsKeys.INTENSITY: {...}, + } + + Notes: + The stats operation uses numpy and torch to compute max, min, and other + functions. If the input has nan/inf, the stats results will be nan/inf. + """ if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") @@ -562,10 +616,24 @@ def __call__(self, data: List[Dict]): report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) + if not verify_report_format(report, self.get_report_format()): + raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") + return report class LabelStatsSumm(Analyzer): + """ + This summary analyzer processes the values of specific key `stats_name` in a list of + dict. Typically, the list of dict is the output of case analyzer under the similar name + (LabelStats). + + Args: + stats_name: the key of the to-process value in the dict + average: whether to average the statistical value across different image modalities. + + """ + def __init__(self, stats_name: str = "label_stats", average: Optional[bool] = True, do_ccp: Optional[bool] = True): self.summary_average = average self.do_ccp = do_ccp @@ -597,6 +665,23 @@ def __init__(self, stats_name: str = "label_stats", average: Optional[bool] = Tr self.update_ops_nested_label(id_seq, SampleOperations()) def __call__(self, data: List[Dict]): + """ + Callable to execute the pre-defined functions + + Returns: + A dictionary. The dict has the key in self.report_format and value + in a list format. Each element of the value list has stats pre-defined + by SampleOperations (max, min, ....) and SummaryOperation (max of the + max, mean of the mean, etc) + + Raises: + RuntimeError if the stats report generated is not consistent with the pre- + defined report_format + + Notes: + The stats operation uses numpy and torch to compute max, min, and other + functions. If the input has nan/inf, the stats results will be nan/inf. + """ if not isinstance(data, list): return ValueError(f"Callable {self.__class__} requires list inputs") @@ -659,14 +744,16 @@ def __call__(self, data: List[Dict]): report[str(LabelStatsKeys.LABEL)] = detailed_label_list + if not verify_report_format(report, self.get_report_format()): + raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") + return report class FilenameStats(Analyzer): """ - Analyzer to process the values of specific key `stats_name` in a list of dict. - Typically, the list of dict is the output of case analyzer under the same prefix - (FgImageStats). + This class finds the file path for the loaded image/label and write the info + in the data pipeline as other transforms Args: key: the key to fetch the filename (for example, "image", "label") diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index dda38f0beb..2789b8858d 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -16,22 +16,13 @@ import numpy as np import torch -from monai import data from monai.apps.utils import get_logger from monai.auto3dseg.seg_summarizer import DataStatsKeys, SegSummarizer from monai.auto3dseg.utils import datafold_read from monai.bundle.config_parser import ConfigParser +from monai.data import DataLoader, Dataset from monai.data.utils import no_collation -from monai.transforms import ( - Compose, - EnsureChannelFirstd, - EnsureTyped, - Lambdad, - LoadImaged, - Orientationd, - SqueezeDimd, - ToDeviced, -) +from monai.transforms import Compose, EnsureChannelFirstd, EnsureTyped, Lambdad, LoadImaged, Orientationd, SqueezeDimd from monai.utils import min_version, optional_import from monai.utils.enums import ImageStatsKeys @@ -144,17 +135,40 @@ def _check_data_uniformity(keys: List[str], result: Dict): return True def get_all_case_stats(self): + """ + Get all case stats. Caller of the DataAnalyser class. The function iterates datalist and + call get_case_stats to generate stats. Then get_case_summary is called to combine results. - files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) - ds = data.Dataset(data=files) - dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) + Returns: + A data statistics dictionary containing + "stats_summary" (summary statistics of the entire datasets). Within stats_summary + there are "image_stats" (summarizing info of shape, channel, spacing, and etc + using operations_summary), "image_foreground_stats" (info of the intensity for the + non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, + image_intensity, and each invidiual label in a list) + "stats_by_cases" (List type value. Each element of the list is statistics of + a image-label info. Within each each element, there are: "image" (value is the + path to an image), "label" (value is the path to the corresponding label), "image_stats" + (summarizing info of shape, channel, spacing, and etc using operations), + "image_foreground_stats" (similar to the previous one but one foreground image), and + "label_stats" (stats of the individual labels ) + + Raises: + ValueError: if the user sent image_only to False but there is no label found + + Notes: + Since the backend of the statistics computation are torch/numpy, nan/inf value + may be generated and carried over in the computation. In such cases, the output + dictionary will include .nan/.inf in the statistics. + + """ summarizer = SegSummarizer(self.image_key, self.label_key, do_ccp=self.do_ccp) keys = list(filter(None, [self.image_key, self.label_key])) transform_list = [ LoadImaged(keys=keys), EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - ToDeviced(keys=keys, device=self.device, non_blocking=True), + # ToDeviced(keys=keys, device=self.device, non_blocking=True), Orientationd(keys=keys, axcodes="RAS"), EnsureTyped(keys=keys, data_type="tensor"), Lambdad(keys=self.label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x) @@ -164,15 +178,18 @@ def get_all_case_stats(self): summarizer, ] - tranform = Compose(list(filter(None, transform_list))) + tranform = Compose(transforms=list(filter(None, transform_list))) + files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) + dataset = Dataset(data=files, transform=tranform) + dataloader = DataLoader(dataset, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) result = {str(DataStatsKeys.SUMMARY): {}, str(DataStatsKeys.BY_CASE): []} - if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") - for batch_data in tqdm(dataset) if has_tqdm else dataset: - d = tranform(batch_data[0]) + for batch_data in tqdm(dataloader) if has_tqdm else dataloader: + # d = tranform(batch_data[0]) + d = batch_data[0] stats_by_cases = { str(DataStatsKeys.BY_CASE_IMAGE_PATH): d[str(DataStatsKeys.BY_CASE_IMAGE_PATH)], str(DataStatsKeys.BY_CASE_LABEL_PATH): d[str(DataStatsKeys.BY_CASE_LABEL_PATH)], diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index a642597afb..5fcdb9d4e6 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -11,9 +11,8 @@ from collections import UserDict from functools import partial -from typing import Any, TypeVar +from typing import Any -from monai.config.type_definitions import NdarrayTensor from monai.transforms.utils_pytorch_numpy_unification import max, mean, median, min, percentile, std __all__ = ["Operations", "SampleOperations", "SummaryOperations"] @@ -21,7 +20,7 @@ class Operations(UserDict): """ - Base class of operation + Base class of operation interface """ def evaluate(self, data: Any, **kwargs) -> dict: @@ -31,18 +30,18 @@ def evaluate(self, data: Any, **kwargs) -> dict: The result will be written under the same key under the output dict. Args: - data: input data + data: input data. Returns: a dictionary which has same keys as the self.data if the value - is callable + is callable. """ return {k: v(data, **kwargs) for k, v in self.data.items() if callable(v)} class SampleOperations(Operations): """ - Apply statistical operation to a sample (image/ndarray/tensor) + Apply statistical operation to a sample (image/ndarray/tensor). Notes: Percentile operation uses a partial function that embeds different kwargs (q). @@ -142,8 +141,8 @@ def __init__(self) -> None: def evaluate(self, data: Any, **kwargs) -> dict: """ - Applies the callables to the data, and convert the - numerics to list or Python numeric types (int/float). + Applies the callables to the data, and convert the numerics to list or Python + numeric types (int/float). Args: data: input data diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 788b7ee5c6..51366a37cd 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -12,7 +12,6 @@ from typing import Any, Dict, List from monai.auto3dseg.analyzer import ( - Analyzer, FgImageStats, FgImageStatsSumm, FilenameStats, diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index a2ac30867e..3c71018cd2 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -12,7 +12,7 @@ import os from copy import deepcopy from numbers import Number -from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union, cast +from typing import Any, Dict, Iterable, List, Optional, Tuple, Union, cast import numpy as np import torch From 754b0b91d8b7fc678c9e92724a1ed0367ebf5dec Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 01:47:02 +0800 Subject: [PATCH 140/150] pass average to seg_summarizer and fix do_ccp Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 31 ++++++++++++++++--------------- monai/auto3dseg/data_analyzer.py | 6 +++--- monai/auto3dseg/seg_summarizer.py | 10 ++++++---- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index b84d35e203..817c136fcc 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -716,21 +716,22 @@ def __call__(self, data: List[Dict]): pct_np, dim=(0, 1) if pct_np.ndim > 2 and self.summary_average else 0 ) - ncomp_str = str(LabelStatsKeys.LABEL_NCOMP) - ncomp_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, ncomp_str] - ncomp_np = concat_val_to_np(data, ncomp_fixed_keys, allow_missing=True) - stats[ncomp_str] = self.ops[label_str][0][ncomp_str].evaluate( - ncomp_np, dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 - ) - - shape_str = str(LabelStatsKeys.LABEL_SHAPE) - shape_fixed_keys = [self.stats_name, label_str, label_id, LabelStatsKeys.LABEL_SHAPE] - shape_np = concat_val_to_np(data, shape_fixed_keys, ragged=True, allow_missing=True) - stats[shape_str] = self.ops[label_str][0][shape_str].evaluate( - shape_np, dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0 - ) - # label shape is a 3-element value, but the number of labels in each image - # can vary from 0 to N. So the value in a list format is "ragged" + if self.do_ccp: + ncomp_str = str(LabelStatsKeys.LABEL_NCOMP) + ncomp_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, ncomp_str] + ncomp_np = concat_val_to_np(data, ncomp_fixed_keys, allow_missing=True) + stats[ncomp_str] = self.ops[label_str][0][ncomp_str].evaluate( + ncomp_np, dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 + ) + + shape_str = str(LabelStatsKeys.LABEL_SHAPE) + shape_fixed_keys = [self.stats_name, label_str, label_id, LabelStatsKeys.LABEL_SHAPE] + shape_np = concat_val_to_np(data, shape_fixed_keys, ragged=True, allow_missing=True) + stats[shape_str] = self.ops[label_str][0][shape_str].evaluate( + shape_np, dim=(0, 1) if shape_np.ndim > 2 and self.summary_average else 0 + ) + # label shape is a 3-element value, but the number of labels in each image + # can vary from 0 to N. So the value in a list format is "ragged" intst_str = str(LabelStatsKeys.IMAGE_INTST) intst_fixed_keys = [self.stats_name, label_str, label_id, intst_str] diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 2789b8858d..7bfdc26f83 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -94,6 +94,7 @@ def __init__( datalist: Union[str, Dict], dataroot: str = "", output_path: str = "./data_stats.yaml", + average: bool = True, do_ccp: bool = True, device: Union[str, torch.device] = "cuda", worker: int = 2, @@ -107,6 +108,7 @@ def __init__( self.datalist = datalist self.dataroot = dataroot self.output_path = output_path + self.average = average self.do_ccp = do_ccp self.device = device self.worker = worker @@ -162,13 +164,11 @@ def get_all_case_stats(self): dictionary will include .nan/.inf in the statistics. """ - - summarizer = SegSummarizer(self.image_key, self.label_key, do_ccp=self.do_ccp) + summarizer = SegSummarizer(self.image_key, self.label_key, average=self.average, do_ccp=self.do_ccp) keys = list(filter(None, [self.image_key, self.label_key])) transform_list = [ LoadImaged(keys=keys), EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) - # ToDeviced(keys=keys, device=self.device, non_blocking=True), Orientationd(keys=keys, axcodes="RAS"), EnsureTyped(keys=keys, data_type="tensor"), Lambdad(keys=self.label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x) diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index 51366a37cd..ab81bef0b6 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -70,7 +70,7 @@ class SegSummarizer(Compose): report = summarizer.summarize(stats) """ - def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: + def __init__(self, image_key: str, label_key: str, average=True, do_ccp: bool = True) -> None: self.image_key = image_key self.label_key = label_key @@ -80,14 +80,16 @@ def __init__(self, image_key: str, label_key: str, do_ccp: bool = True) -> None: self.add_analyzer(FilenameStats(image_key, DataStatsKeys.BY_CASE_IMAGE_PATH), None) self.add_analyzer(FilenameStats(label_key, DataStatsKeys.BY_CASE_LABEL_PATH), None) - self.add_analyzer(ImageStats(image_key), ImageStatsSumm()) + self.add_analyzer(ImageStats(image_key), ImageStatsSumm(average=average)) if label_key is None: return - self.add_analyzer(FgImageStats(image_key, label_key), FgImageStatsSumm()) + self.add_analyzer(FgImageStats(image_key, label_key), FgImageStatsSumm(average=average)) - self.add_analyzer(LabelStats(image_key, label_key, do_ccp=do_ccp), LabelStatsSumm(do_ccp=do_ccp)) + self.add_analyzer( + LabelStats(image_key, label_key, do_ccp=do_ccp), LabelStatsSumm(average=average, do_ccp=do_ccp) + ) def add_analyzer(self, case_analyzer, summary_analzyer) -> None: """ From 1aa005c6d0e1f49894fca373f065c0327259717f Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 11:03:57 +0800 Subject: [PATCH 141/150] misc fix and docstring update Signed-off-by: Mingxin Zheng --- monai/auto3dseg/analyzer.py | 63 ++++++++++++++++++------------- monai/auto3dseg/data_analyzer.py | 3 -- monai/auto3dseg/seg_summarizer.py | 8 ++-- monai/auto3dseg/utils.py | 28 +++++++------- tests/test_auto3dseg.py | 2 +- 5 files changed, 55 insertions(+), 49 deletions(-) diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 817c136fcc..541b1216ba 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -70,7 +70,7 @@ def __init__(self, stats_name: str, report_format: dict) -> None: def update_ops(self, key: str, op): """ - Register an statistical operation to the Analyzer and update the report_format + Register an statistical operation to the Analyzer and update the report_format. Args: key: value key in the report. @@ -88,7 +88,7 @@ def update_ops(self, key: str, op): def update_ops_nested_label(self, nested_key: str, op): """ Update operations for nested label format. Operation value in report_format will be resolved - to a dict with only keys + to a dict with only keys. Args: nested_key: str that has format of 'key1#0#key2'. @@ -152,7 +152,7 @@ def resolve_format(self, report: dict): """ for k, v in report.items(): - if issubclass(v.__class__, Operations): + if isinstance(v, Operations): report[k] = self.unwrap_ops(v) elif isinstance(v, list) and len(v) > 0: self.resolve_format(v[0]) @@ -171,7 +171,7 @@ class ImageStats(Analyzer): Args: image_key: the key to find image data in the callable function input (data) - meta_key_postfix: the postfix to append for meta_dict ("image_meta_dict") + meta_key_postfix: the postfix to append for meta_dict ("image_meta_dict"). Examples: @@ -216,11 +216,11 @@ def __call__(self, data): Returns: A dictionary. The dict has the key in self.report_format. The value of ImageStatsKeys.INTENSITY is in a list format. Each element of the value list - has stats pre-defined by SampleOperations (max, min, ....) + has stats pre-defined by SampleOperations (max, min, ....). Raises: RuntimeError if the stats report generated is not consistent with the pre- - defined report_format + defined report_format. Note: The stats operation uses numpy and torch to compute max, min, and other @@ -295,11 +295,11 @@ def __call__(self, data) -> dict: Returns: A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined - by SampleOperations (max, min, ....) + by SampleOperations (max, min, ....). Raises: RuntimeError if the stats report generated is not consistent with the pre- - defined report_format + defined report_format. Note: The stats operation uses numpy and torch to compute max, min, and other @@ -376,12 +376,12 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stat def __call__(self, data): """ - Callable to execute the pre-defined functions + Callable to execute the pre-defined functions. Returns: A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined - by SampleOperations (max, min, ....) + by SampleOperations (max, min, ....). Examples: output dict contains { @@ -411,7 +411,7 @@ def __call__(self, data): Raises: RuntimeError if the stats report generated is not consistent with the pre- - defined report_format + defined report_format. Notes: The label class_ID of the dictionary in LabelStatsKeys.LABEL IS NOT the @@ -483,7 +483,7 @@ class ImageStatsSumm(Analyzer): (ImageStats). Args: - stats_name: the key of the to-process value in the dict + stats_name: the key of the to-process value in the dict. average: whether to average the statistical value across different image modalities. """ @@ -512,11 +512,11 @@ def __call__(self, data: List[Dict]): Returns: A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined - by SampleOperations (max, min, ....) + by SampleOperations (max, min, ....). Raises: RuntimeError if the stats report generated is not consistent with the pre- - defined report_format + defined report_format. Examples: output dict contains a dictionary for all of the following keys{ @@ -565,7 +565,7 @@ class FgImageStatsSumm(Analyzer): (FgImageStats). Args: - stats_name: the key of the to-process value in the dict + stats_name: the key of the to-process value in the dict. average: whether to average the statistical value across different image modalities. """ @@ -579,17 +579,17 @@ def __init__(self, stats_name: str = "image_foreground_stats", average: Optional def __call__(self, data: List[Dict]): """ - Callable to execute the pre-defined functions + Callable to execute the pre-defined functions. Returns: A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) and SummaryOperation (max of the - max, mean of the mean, etc) + max, mean of the mean, etc). Raises: RuntimeError if the stats report generated is not consistent with the pre- - defined report_format + defined report_format. Examples: output dict contains a dictionary for all of the following keys{ @@ -607,7 +607,7 @@ def __call__(self, data: List[Dict]): return ValueError(f"Callable {self.__class__} input list is empty") if self.stats_name not in data[0]: - return KeyError(f"{self.stats_name} is not in input data") + return KeyError(f"{self.stats_name} is not in input data.") report = deepcopy(self.get_report_format()) intst_str: str = str(ImageStatsKeys.INTENSITY) @@ -629,7 +629,7 @@ class LabelStatsSumm(Analyzer): (LabelStats). Args: - stats_name: the key of the to-process value in the dict + stats_name: the key of the to-process value in the dict. average: whether to average the statistical value across different image modalities. """ @@ -672,11 +672,11 @@ def __call__(self, data: List[Dict]): A dictionary. The dict has the key in self.report_format and value in a list format. Each element of the value list has stats pre-defined by SampleOperations (max, min, ....) and SummaryOperation (max of the - max, mean of the mean, etc) + max, mean of the mean, etc). Raises: RuntimeError if the stats report generated is not consistent with the pre- - defined report_format + defined report_format. Notes: The stats operation uses numpy and torch to compute max, min, and other @@ -753,12 +753,12 @@ def __call__(self, data: List[Dict]): class FilenameStats(Analyzer): """ - This class finds the file path for the loaded image/label and write the info - in the data pipeline as other transforms + This class finds the file path for the loaded image/label and writes the info + into the data pipeline as a monai transforms. Args: - key: the key to fetch the filename (for example, "image", "label") - stats_name: the key to store the filename in the output stats report + key: the key to fetch the filename (for example, "image", "label"). + stats_name: the key to store the filename in the output stats report. """ @@ -769,5 +769,14 @@ def __init__(self, key: str, stats_name: str, meta_key_postfix: Optional[str] = def __call__(self, data): d = dict(data) - d[self.stats_name] = d[self.meta_key][ImageMetaKey.FILENAME_OR_OBJ] if self.meta_key else "" + + if self.meta_key: + if self.key not in d: # check whether image/label is in the data + raise ValueError(f"Data with key {self.key} is missing ") + if self.meta_key not in d: + raise ValueError(f"Meta data with key {self.meta_key} is mssing") + d[self.stats_name] = d[self.meta_key][ImageMetaKey.FILENAME_OR_OBJ] + else: + d[self.stats_name] = "None" + return d diff --git a/monai/auto3dseg/data_analyzer.py b/monai/auto3dseg/data_analyzer.py index 7bfdc26f83..c1fbfba460 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/auto3dseg/data_analyzer.py @@ -155,9 +155,6 @@ def get_all_case_stats(self): "image_foreground_stats" (similar to the previous one but one foreground image), and "label_stats" (stats of the individual labels ) - Raises: - ValueError: if the user sent image_only to False but there is no label found - Notes: Since the backend of the statistics computation are torch/numpy, nan/inf value may be generated and carried over in the computation. In such cases, the output diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index ab81bef0b6..a4ee79200f 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -41,7 +41,7 @@ class SegSummarizer(Compose): label_key: a string that user specify for the label. The DataAnalyzer will look it up in the datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. - do_ccp: apply the connected component algorithm to process the labels/images + do_ccp: apply the connected component algorithm to process the labels/images. Examples: .. code-block:: python @@ -97,8 +97,8 @@ def add_analyzer(self, case_analyzer, summary_analzyer) -> None: utilize the new analyzers for stats computations. Args: - case_analyzer: analyzer that works on each data - summary_analyzer: analyzer that works on list of stats dict (output from case_analyzers) + case_analyzer: analyzer that works on each data. + summary_analyzer: analyzer that works on list of stats dict (output from case_analyzers). Examples: @@ -148,7 +148,7 @@ def summarize(self, data: List[Dict]): data: a list of data dicts. Returns: - a dict that summarizes the stats across data samples + a dict that summarizes the stats across data samples. Examples: stats_summary: diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 3c71018cd2..e48beac3c4 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -79,9 +79,9 @@ def get_label_ccp(mask_index: MetaTensor, use_gpu: bool = True) -> Tuple[List[An depending on the hardware. Args: - mask_index: a binary mask + mask_index: a binary mask. use_gpu: a switch to use GPU/CUDA or not. If GPU is unavailable, CPU will be used - regardless of this setting + regardless of this setting. """ @@ -127,10 +127,10 @@ def concat_val_to_np( data_list: a list of dictionary {key1: {key2: np.ndarray}}. fixed_keys: a list of keys that records to path to the value in the dict elements. ragged: if True, numbers can be in list of lists or ragged format so concat mode needs change. - allow_missing: if True, it will return a None if the value cannot be found + allow_missing: if True, it will return a None if the value cannot be found. Returns: - nd.array of concatanated array + nd.array of concatanated array. """ @@ -180,12 +180,12 @@ def concat_multikeys_to_dict( Args: data_list: a list of dictionary {key1: {key2: np.ndarray}}. fixed_keys: a list of keys that records to path to the value in the dict elements. - keys: a list of string keys that will be iterated to generate a dict output + keys: a list of string keys that will be iterated to generate a dict output. zero_insert: insert a zero in the list so that it can find the value in element 0 before getting the keys flatten: if True, numbers are flattened before concat. Returns: - a dict with keys - nd.array of concatanated array pair + a dict with keys - nd.array of concatanated array pair. """ ret_dict = {} @@ -202,13 +202,13 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: Read a list of data dictionary `datalist` Args: - datalist: the name of a JSON file listing the data, or a dictionary - basedir: directory of image files - fold: which fold to use (0..1 if in training set) - key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges) + datalist: the name of a JSON file listing the data, or a dictionary. + basedir: directory of image files. + fold: which fold to use (0..1 if in training set). + key: usually 'training' , but can try 'validation' or 'testing' to get the list data without labels (used in challenges). Returns: - A tuple of two arrays (training, validation) + A tuple of two arrays (training, validation). """ if isinstance(datalist, str): @@ -238,11 +238,11 @@ def datafold_read(datalist: Union[str, Dict], basedir: str, fold: int = 0, key: def verify_report_format(report: dict, report_format: dict): """ - Compares the report and the the report_format that has only keys + Compares the report and the the report_format that has only keys. Args: - report: dict that has real values - report_format: dict that only has keys and list-nested value + report: dict that has real values. + report_format: dict that only has keys and list-nested value. """ for k_fmt, v_fmt in report_format.items(): if k_fmt not in report: diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index dc3247a3c5..bae5ce63a9 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -318,7 +318,7 @@ def test_filename_case_analyzer_image_only(self): for batch_data in self.dataset: d = transform(batch_data[0]) assert DataStatsKeys.BY_CASE_IMAGE_PATH in d - assert d[DataStatsKeys.BY_CASE_IMAGE_PATH] == "" + assert d[DataStatsKeys.BY_CASE_IMAGE_PATH] == "None" def test_image_stats_summary_analyzer(self): summary_analyzer = ImageStatsSumm("image_stats") From bb02d7d05b907f1b4220d59140fabc7fb72097bc Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 16:58:33 +0800 Subject: [PATCH 142/150] misc fix: seperate test script, folder, and add error checking for device and n_worker Signed-off-by: Mingxin Zheng --- monai/apps/auto3dseg/__init__.py | 12 +++ monai/{ => apps}/auto3dseg/__main__.py | 2 +- monai/{ => apps}/auto3dseg/data_analyzer.py | 31 +++++-- monai/auto3dseg/__init__.py | 2 +- tests/min_tests.py | 1 + tests/test_auto3dseg.py | 86 +++++++------------ tests/test_auto3dseg_apps.py | 92 +++++++++++++++++++++ 7 files changed, 161 insertions(+), 65 deletions(-) create mode 100644 monai/apps/auto3dseg/__init__.py rename monai/{ => apps}/auto3dseg/__main__.py (92%) rename monai/{ => apps}/auto3dseg/data_analyzer.py (92%) create mode 100644 tests/test_auto3dseg_apps.py diff --git a/monai/apps/auto3dseg/__init__.py b/monai/apps/auto3dseg/__init__.py new file mode 100644 index 0000000000..1e717be7b7 --- /dev/null +++ b/monai/apps/auto3dseg/__init__.py @@ -0,0 +1,12 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .data_analyzer import DataAnalyzer diff --git a/monai/auto3dseg/__main__.py b/monai/apps/auto3dseg/__main__.py similarity index 92% rename from monai/auto3dseg/__main__.py rename to monai/apps/auto3dseg/__main__.py index 1f528b108b..301c5d7236 100644 --- a/monai/auto3dseg/__main__.py +++ b/monai/apps/auto3dseg/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.auto3dseg.data_analyzer import DataAnalyzer +from monai.apps.auto3dseg.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/monai/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py similarity index 92% rename from monai/auto3dseg/data_analyzer.py rename to monai/apps/auto3dseg/data_analyzer.py index c1fbfba460..0942a6823a 100644 --- a/monai/auto3dseg/data_analyzer.py +++ b/monai/apps/auto3dseg/data_analyzer.py @@ -17,14 +17,23 @@ import torch from monai.apps.utils import get_logger -from monai.auto3dseg.seg_summarizer import DataStatsKeys, SegSummarizer +from monai.auto3dseg import SegSummarizer from monai.auto3dseg.utils import datafold_read from monai.bundle.config_parser import ConfigParser from monai.data import DataLoader, Dataset from monai.data.utils import no_collation -from monai.transforms import Compose, EnsureChannelFirstd, EnsureTyped, Lambdad, LoadImaged, Orientationd, SqueezeDimd +from monai.transforms import ( + Compose, + EnsureChannelFirstd, + EnsureTyped, + Lambdad, + LoadImaged, + Orientationd, + SqueezeDimd, + ToDeviced, +) from monai.utils import min_version, optional_import -from monai.utils.enums import ImageStatsKeys +from monai.utils.enums import DataStatsKeys, ImageStatsKeys tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") logger = get_logger(module_name=__name__) @@ -49,13 +58,17 @@ class DataAnalyzer: average: whether to average the statistical value across different image modalities. do_ccp: apply the connected component algorithm to process the labels/images device: a string specifying hardware (CUDA/CPU) utilized for the operations. - worker: number of workers to use for parallel processing. + worker: number of workers to use for parallel processing. If device is cuda/GPU, worker has + to be 0. image_key: a string that user specify for the image. The DataAnalyzer will look it up in the datalist to locate the image files of the dataset. label_key: a string that user specify for the label. The DataAnalyzer will look it up in the datalist to locate the label files of the dataset. If label_key is None, the DataAnalyzer will skip looking for labels and all label-related operations. + Raises: + ValueError if device is GPU and worker > 0. + Examples: .. code-block:: python @@ -81,7 +94,7 @@ class DataAnalyzer: .. code-block:: bash - python -m monai.auto3dseg \ + python -m monai.apps.auto3dseg \ DataAnalyzer \ get_all_case_stats \ --datalist="my_datalist.json" \ @@ -97,7 +110,7 @@ def __init__( average: bool = True, do_ccp: bool = True, device: Union[str, torch.device] = "cuda", - worker: int = 2, + worker: int = 0, image_key: str = "image", label_key: Optional[str] = "label", ): @@ -110,11 +123,14 @@ def __init__( self.output_path = output_path self.average = average self.do_ccp = do_ccp - self.device = device + self.device = torch.device(device) self.worker = worker self.image_key = image_key self.label_key = label_key + if (self.device.type == "cuda") and (worker > 0): + raise ValueError("CUDA does not support multiple subprocess. If device is GPU, please set worker to 0") + @staticmethod def _check_data_uniformity(keys: List[str], result: Dict): """ @@ -172,6 +188,7 @@ def get_all_case_stats(self): if self.label_key else None, SqueezeDimd(keys=["label"], dim=0) if self.label_key else None, + ToDeviced(keys=keys, device=self.device), summarizer, ] diff --git a/monai/auto3dseg/__init__.py b/monai/auto3dseg/__init__.py index d0d6db06a5..501b518ef2 100644 --- a/monai/auto3dseg/__init__.py +++ b/monai/auto3dseg/__init__.py @@ -18,7 +18,6 @@ LabelStats, LabelStatsSumm, ) -from .data_analyzer import DataAnalyzer from .operations import Operations, SampleOperations, SummaryOperations from .seg_summarizer import SegSummarizer from .utils import ( @@ -28,4 +27,5 @@ get_foreground_image, get_foreground_label, get_label_ccp, + verify_report_format, ) diff --git a/tests/min_tests.py b/tests/min_tests.py index 6b60057dd7..ca4250ddcf 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -30,6 +30,7 @@ def run_testsuit(): "test_ahnet", "test_arraydataset", "test_auto3dseg", + "test_auto3dseg_app", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index bae5ce63a9..87b5eb5014 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -9,7 +9,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import sys import tempfile import unittest from copy import deepcopy @@ -20,7 +19,14 @@ import numpy as np import torch -from monai import data +from monai.auto3dseg import ( + Operations, + SampleOperations, + SegSummarizer, + SummaryOperations, + datafold_read, + verify_report_format, +) from monai.auto3dseg.analyzer import ( Analyzer, FgImageStats, @@ -31,12 +37,8 @@ LabelStats, LabelStatsSumm, ) -from monai.auto3dseg.data_analyzer import DataAnalyzer -from monai.auto3dseg.operations import Operations, SampleOperations, SummaryOperations -from monai.auto3dseg.seg_summarizer import SegSummarizer -from monai.auto3dseg.utils import datafold_read, verify_report_format from monai.bundle import ConfigParser -from monai.data import create_test_image_3d +from monai.data import DataLoader, Dataset, create_test_image_3d from monai.data.meta_tensor import MetaTensor from monai.data.utils import no_collation from monai.transforms import ( @@ -52,7 +54,7 @@ from monai.utils.enums import DataStatsKeys device = "cuda" if torch.cuda.is_available() else "cpu" -n_workers = 0 if sys.platform in ("win32", "darwin") else 2 +n_workers = 2 if device == "cpu" else 0 fake_datalist = { "testing": [{"image": "val_001.fake.nii.gz"}, {"image": "val_002.fake.nii.gz"}], @@ -133,34 +135,6 @@ def setUp(self): self.fake_json_datalist = path.join(dataroot, "fake_input.json") ConfigParser.export_config_file(fake_datalist, self.fake_json_datalist) - def test_data_analyzer(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer(fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers) - datastat = analyser.get_all_case_stats() - - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - - def test_data_analyzer_image_only(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer( - fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None - ) - datastat = analyser.get_all_case_stats() - - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - - def test_data_analyzer_from_yaml(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer( - self.fake_json_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers - ) - datastat = analyser.get_all_case_stats() - - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - def test_basic_operation_class(self): op = TestOperations() test_data = np.random.rand(10, 10).astype(np.float64) @@ -218,8 +192,8 @@ def test_transform_analyzer_class(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=0, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=0, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) assert "test_image" in d @@ -241,8 +215,8 @@ def test_image_stats_case_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) report_format = analyzer.get_report_format() @@ -263,8 +237,8 @@ def test_foreground_image_stats_cases_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) report_format = analyzer.get_report_format() @@ -285,8 +259,8 @@ def test_label_stats_case_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) report_format = analyzer.get_report_format() @@ -299,8 +273,8 @@ def test_filename_case_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) assert DataStatsKeys.BY_CASE_IMAGE_PATH in d @@ -313,8 +287,8 @@ def test_filename_case_analyzer_image_only(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) for batch_data in self.dataset: d = transform(batch_data[0]) assert DataStatsKeys.BY_CASE_IMAGE_PATH in d @@ -334,8 +308,8 @@ def test_image_stats_summary_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: stats.append(transform(batch_data[0])) @@ -359,8 +333,8 @@ def test_fg_image_stats_summary_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: stats.append(transform(batch_data[0])) @@ -384,8 +358,8 @@ def test_label_stats_summary_analyzer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: stats.append(transform(batch_data[0])) @@ -409,8 +383,8 @@ def test_seg_summarizer(self): transform = Compose(transform_list) dataroot = self.test_dir.name files, _ = datafold_read(self.fake_json_datalist, dataroot, fold=-1) - ds = data.Dataset(data=files) - self.dataset = data.DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) + ds = Dataset(data=files) + self.dataset = DataLoader(ds, batch_size=1, shuffle=False, num_workers=n_workers, collate_fn=no_collation) stats = [] for batch_data in self.dataset: d = transform(batch_data[0]) diff --git a/tests/test_auto3dseg_apps.py b/tests/test_auto3dseg_apps.py new file mode 100644 index 0000000000..9670f308ef --- /dev/null +++ b/tests/test_auto3dseg_apps.py @@ -0,0 +1,92 @@ +# Copyright (c) MONAI Consortium +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# http://www.apache.org/licenses/LICENSE-2.0 +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import tempfile +import unittest +from os import path + +import nibabel as nib +import numpy as np +import torch + +from monai.apps.auto3dseg import DataAnalyzer +from monai.bundle import ConfigParser +from monai.data import create_test_image_3d + +device = "cuda" if torch.cuda.is_available() else "cpu" +n_workers = 2 if device == "cpu" else 0 + +fake_datalist = { + "testing": [{"image": "val_001.fake.nii.gz"}, {"image": "val_002.fake.nii.gz"}], + "training": [ + {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, + {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, + ], +} + + +class TestDataAnalyzer(unittest.TestCase): + def setUp(self): + self.test_dir = tempfile.TemporaryDirectory() + dataroot = self.test_dir.name + + # Generate a fake dataset + for d in fake_datalist["testing"] + fake_datalist["training"]: + im, seg = create_test_image_3d(39, 47, 46, rad_max=10) + nib_image = nib.Nifti1Image(im, affine=np.eye(4)) + image_fpath = path.join(dataroot, d["image"]) + nib.save(nib_image, image_fpath) + + if "label" in d: + nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) + label_fpath = path.join(dataroot, d["label"]) + nib.save(nib_image, label_fpath) + + # write to a json file + self.fake_json_datalist = path.join(dataroot, "fake_input.json") + ConfigParser.export_config_file(fake_datalist, self.fake_json_datalist) + + def test_data_analyzer(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer(fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + + def test_data_analyzer_image_only(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + + def test_data_analyzer_from_yaml(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + self.fake_json_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + + def tearDown(self) -> None: + self.test_dir.cleanup() + + +if __name__ == "__main__": + unittest.main() From f138cdbffeebe75698caca01eaad4b92ce193c9e Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 17:24:51 +0800 Subject: [PATCH 143/150] misc fix, add yaml strEnum representer Signed-off-by: Mingxin Zheng --- monai/apps/auto3dseg/data_analyzer.py | 26 ++++-- monai/auto3dseg/analyzer.py | 123 +++++++++++++------------- tests/min_tests.py | 2 +- 3 files changed, 79 insertions(+), 72 deletions(-) diff --git a/monai/apps/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py index 0942a6823a..68a7187ec6 100644 --- a/monai/apps/auto3dseg/data_analyzer.py +++ b/monai/apps/auto3dseg/data_analyzer.py @@ -19,6 +19,7 @@ from monai.apps.utils import get_logger from monai.auto3dseg import SegSummarizer from monai.auto3dseg.utils import datafold_read +from monai.bundle import config_parser from monai.bundle.config_parser import ConfigParser from monai.data import DataLoader, Dataset from monai.data.utils import no_collation @@ -32,9 +33,16 @@ SqueezeDimd, ToDeviced, ) -from monai.utils import min_version, optional_import +from monai.utils import StrEnum, min_version, optional_import from monai.utils.enums import DataStatsKeys, ImageStatsKeys + +def strenum_representer(dumper, data): + return dumper.represent_scalar("tag:yaml.org,2002:str", data.value) + + +config_parser.yaml.SafeDumper.add_multi_representer(StrEnum, strenum_representer) + tqdm, has_tqdm = optional_import("tqdm", "4.47.0", min_version, "tqdm") logger = get_logger(module_name=__name__) @@ -197,7 +205,7 @@ def get_all_case_stats(self): files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) dataset = Dataset(data=files, transform=tranform) dataloader = DataLoader(dataset, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) - result = {str(DataStatsKeys.SUMMARY): {}, str(DataStatsKeys.BY_CASE): []} + result = {DataStatsKeys.SUMMARY: {}, DataStatsKeys.BY_CASE: []} if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") @@ -205,21 +213,21 @@ def get_all_case_stats(self): # d = tranform(batch_data[0]) d = batch_data[0] stats_by_cases = { - str(DataStatsKeys.BY_CASE_IMAGE_PATH): d[str(DataStatsKeys.BY_CASE_IMAGE_PATH)], - str(DataStatsKeys.BY_CASE_LABEL_PATH): d[str(DataStatsKeys.BY_CASE_LABEL_PATH)], - str(DataStatsKeys.IMAGE_STATS): d[str(DataStatsKeys.IMAGE_STATS)], + DataStatsKeys.BY_CASE_IMAGE_PATH: d[DataStatsKeys.BY_CASE_IMAGE_PATH], + DataStatsKeys.BY_CASE_LABEL_PATH: d[DataStatsKeys.BY_CASE_LABEL_PATH], + DataStatsKeys.IMAGE_STATS: d[DataStatsKeys.IMAGE_STATS], } if self.label_key is not None: stats_by_cases.update( { - str(DataStatsKeys.FG_IMAGE_STATS): d[str(DataStatsKeys.FG_IMAGE_STATS)], - str(DataStatsKeys.LABEL_STATS): d[str(DataStatsKeys.LABEL_STATS)], + DataStatsKeys.FG_IMAGE_STATS: d[DataStatsKeys.FG_IMAGE_STATS], + DataStatsKeys.LABEL_STATS: d[DataStatsKeys.LABEL_STATS], } ) - result[str(DataStatsKeys.BY_CASE)].append(stats_by_cases) + result[DataStatsKeys.BY_CASE].append(stats_by_cases) - result[str(DataStatsKeys.SUMMARY)] = summarizer.summarize(result[str(DataStatsKeys.BY_CASE)]) + result[DataStatsKeys.SUMMARY] = summarizer.summarize(result[DataStatsKeys.BY_CASE]) if not self._check_data_uniformity([ImageStatsKeys.SPACING], result): logger.warning("Data is not completely uniform. MONAI transforms may provide unexpected result") diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 541b1216ba..6c67ec7b68 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -199,15 +199,15 @@ def __init__( self.image_meta_key = f"{self.image_key}_{meta_key_postfix}" report_format = { - str(ImageStatsKeys.SHAPE): None, - str(ImageStatsKeys.CHANNELS): None, - str(ImageStatsKeys.CROPPED_SHAPE): None, - str(ImageStatsKeys.SPACING): None, - str(ImageStatsKeys.INTENSITY): None, + ImageStatsKeys.SHAPE: None, + ImageStatsKeys.CHANNELS: None, + ImageStatsKeys.CROPPED_SHAPE: None, + ImageStatsKeys.SPACING: None, + ImageStatsKeys.INTENSITY: None, } super().__init__(stats_name, report_format) - self.update_ops(str(ImageStatsKeys.INTENSITY), SampleOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SampleOperations()) def __call__(self, data): """ @@ -237,14 +237,14 @@ def __call__(self, data): # perform calculation report = deepcopy(self.get_report_format()) - report[str(ImageStatsKeys.SHAPE)] = [list(nda.shape) for nda in ndas] - report[str(ImageStatsKeys.CHANNELS)] = len(ndas) - report[str(ImageStatsKeys.CROPPED_SHAPE)] = [list(nda_c.shape) for nda_c in nda_croppeds] - report[str(ImageStatsKeys.SPACING)] = np.tile( + report[ImageStatsKeys.SHAPE] = [list(nda.shape) for nda in ndas] + report[ImageStatsKeys.CHANNELS] = len(ndas) + report[ImageStatsKeys.CROPPED_SHAPE] = [list(nda_c.shape) for nda_c in nda_croppeds] + report[ImageStatsKeys.SPACING] = np.tile( np.diag(data[self.image_meta_key]["affine"])[:3], [len(ndas), 1] ).tolist() - report[str(ImageStatsKeys.INTENSITY)] = [ - self.ops[str(ImageStatsKeys.INTENSITY)].evaluate(nda_c) for nda_c in nda_croppeds + report[ImageStatsKeys.INTENSITY] = [ + self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_c) for nda_c in nda_croppeds ] if not verify_report_format(report, self.get_report_format()): @@ -283,10 +283,10 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "image_fore self.image_key = image_key self.label_key = label_key - report_format = {str(ImageStatsKeys.INTENSITY): None} + report_format = {ImageStatsKeys.INTENSITY: None} super().__init__(stats_name, report_format) - self.update_ops(str(ImageStatsKeys.INTENSITY), SampleOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SampleOperations()) def __call__(self, data) -> dict: """ @@ -316,8 +316,8 @@ def __call__(self, data) -> dict: # perform calculation report = deepcopy(self.get_report_format()) - report[str(ImageStatsKeys.INTENSITY)] = [ - self.ops[str(ImageStatsKeys.INTENSITY)].evaluate(nda_f) for nda_f in nda_foregrounds + report[ImageStatsKeys.INTENSITY] = [ + self.ops[ImageStatsKeys.INTENSITY].evaluate(nda_f) for nda_f in nda_foregrounds ] if not verify_report_format(report, self.get_report_format()): @@ -358,18 +358,18 @@ def __init__(self, image_key: str, label_key: str, stats_name: str = "label_stat self.do_ccp = do_ccp report_format: Dict[str, Any] = { - str(LabelStatsKeys.LABEL_UID): None, - str(LabelStatsKeys.IMAGE_INTST): None, - str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INTST): None}], + LabelStatsKeys.LABEL_UID: None, + LabelStatsKeys.IMAGE_INTST: None, + LabelStatsKeys.LABEL: [{LabelStatsKeys.PIXEL_PCT: None, LabelStatsKeys.IMAGE_INTST: None}], } if self.do_ccp: - report_format[str(LabelStatsKeys.LABEL)][0].update( - {str(LabelStatsKeys.LABEL_SHAPE): None, str(LabelStatsKeys.LABEL_NCOMP): None} + report_format[LabelStatsKeys.LABEL][0].update( + {LabelStatsKeys.LABEL_SHAPE: None, LabelStatsKeys.LABEL_NCOMP: None} ) super().__init__(stats_name, report_format) - self.update_ops(str(LabelStatsKeys.IMAGE_INTST), SampleOperations()) + self.update_ops(LabelStatsKeys.IMAGE_INTST, SampleOperations()) id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.IMAGE_INTST]) self.update_ops_nested_label(id_seq, SampleOperations()) @@ -444,29 +444,29 @@ def __call__(self, data): label_dict: Dict[str, Any] = {} mask_index = ndas_label == index - label_dict[str(LabelStatsKeys.IMAGE_INTST)] = [ - self.ops[str(LabelStatsKeys.IMAGE_INTST)].evaluate(nda[mask_index]) for nda in ndas + label_dict[LabelStatsKeys.IMAGE_INTST] = [ + self.ops[LabelStatsKeys.IMAGE_INTST].evaluate(nda[mask_index]) for nda in ndas ] pixel_count = sum(mask_index) pixel_arr.append(pixel_count) pixel_sum += pixel_count if self.do_ccp: # apply connected component shape_list, ncomponents = get_label_ccp(mask_index) - label_dict[str(LabelStatsKeys.LABEL_SHAPE)] = shape_list - label_dict[str(LabelStatsKeys.LABEL_NCOMP)] = ncomponents + label_dict[LabelStatsKeys.LABEL_SHAPE] = shape_list + label_dict[LabelStatsKeys.LABEL_NCOMP] = ncomponents label_substats.append(label_dict) logger.debug(f" label {index} stats takes {time.time() - start_label}") for i, _ in enumerate(unique_label): - label_substats[i].update({str(LabelStatsKeys.PIXEL_PCT): float(pixel_arr[i] / pixel_sum)}) + label_substats[i].update({LabelStatsKeys.PIXEL_PCT: float(pixel_arr[i] / pixel_sum)}) report = deepcopy(self.get_report_format()) - report[str(LabelStatsKeys.LABEL_UID)] = unique_label - report[str(LabelStatsKeys.IMAGE_INTST)] = [ - self.ops[str(LabelStatsKeys.IMAGE_INTST)].evaluate(nda_f) for nda_f in nda_foregrounds + report[LabelStatsKeys.LABEL_UID] = unique_label + report[LabelStatsKeys.IMAGE_INTST] = [ + self.ops[LabelStatsKeys.IMAGE_INTST].evaluate(nda_f) for nda_f in nda_foregrounds ] - report[str(LabelStatsKeys.LABEL)] = label_substats + report[LabelStatsKeys.LABEL] = label_substats if not verify_report_format(report, self.get_report_format()): raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") @@ -491,19 +491,19 @@ class ImageStatsSumm(Analyzer): def __init__(self, stats_name: str = "image_stats", average: Optional[bool] = True): self.summary_average = average report_format = { - str(ImageStatsKeys.SHAPE): None, - str(ImageStatsKeys.CHANNELS): None, - str(ImageStatsKeys.CROPPED_SHAPE): None, - str(ImageStatsKeys.SPACING): None, - str(ImageStatsKeys.INTENSITY): None, + ImageStatsKeys.SHAPE: None, + ImageStatsKeys.CHANNELS: None, + ImageStatsKeys.CROPPED_SHAPE: None, + ImageStatsKeys.SPACING: None, + ImageStatsKeys.INTENSITY: None, } super().__init__(stats_name, report_format) - self.update_ops(str(ImageStatsKeys.SHAPE), SampleOperations()) - self.update_ops(str(ImageStatsKeys.CHANNELS), SampleOperations()) - self.update_ops(str(ImageStatsKeys.CROPPED_SHAPE), SampleOperations()) - self.update_ops(str(ImageStatsKeys.SPACING), SampleOperations()) - self.update_ops(str(ImageStatsKeys.INTENSITY), SummaryOperations()) + self.update_ops(ImageStatsKeys.SHAPE, SampleOperations()) + self.update_ops(ImageStatsKeys.CHANNELS, SampleOperations()) + self.update_ops(ImageStatsKeys.CROPPED_SHAPE, SampleOperations()) + self.update_ops(ImageStatsKeys.SPACING, SampleOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SummaryOperations()) def __call__(self, data: List[Dict]): """ @@ -543,11 +543,10 @@ def __call__(self, data: List[Dict]): report = deepcopy(self.get_report_format()) for k in [ImageStatsKeys.SHAPE, ImageStatsKeys.CHANNELS, ImageStatsKeys.CROPPED_SHAPE, ImageStatsKeys.SPACING]: - k_str = str(k) - v_np = concat_val_to_np(data, [self.stats_name, k_str]) - report[k_str] = self.ops[k_str].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) + v_np = concat_val_to_np(data, [self.stats_name, k]) + report[k] = self.ops[k].evaluate(v_np, dim=(0, 1) if v_np.ndim > 2 and self.summary_average else 0) - intst_str = str(ImageStatsKeys.INTENSITY) + intst_str = ImageStatsKeys.INTENSITY op_keys = report[intst_str].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) @@ -573,9 +572,9 @@ class FgImageStatsSumm(Analyzer): def __init__(self, stats_name: str = "image_foreground_stats", average: Optional[bool] = True): self.summary_average = average - report_format = {str(ImageStatsKeys.INTENSITY): None} + report_format = {ImageStatsKeys.INTENSITY: None} super().__init__(stats_name, report_format) - self.update_ops(str(ImageStatsKeys.INTENSITY), SummaryOperations()) + self.update_ops(ImageStatsKeys.INTENSITY, SummaryOperations()) def __call__(self, data: List[Dict]): """ @@ -610,7 +609,7 @@ def __call__(self, data: List[Dict]): return KeyError(f"{self.stats_name} is not in input data.") report = deepcopy(self.get_report_format()) - intst_str: str = str(ImageStatsKeys.INTENSITY) + intst_str = ImageStatsKeys.INTENSITY op_keys = report[intst_str].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) @@ -639,17 +638,17 @@ def __init__(self, stats_name: str = "label_stats", average: Optional[bool] = Tr self.do_ccp = do_ccp report_format: Dict[str, Any] = { - str(LabelStatsKeys.LABEL_UID): None, - str(LabelStatsKeys.IMAGE_INTST): None, - str(LabelStatsKeys.LABEL): [{str(LabelStatsKeys.PIXEL_PCT): None, str(LabelStatsKeys.IMAGE_INTST): None}], + LabelStatsKeys.LABEL_UID: None, + LabelStatsKeys.IMAGE_INTST: None, + LabelStatsKeys.LABEL: [{LabelStatsKeys.PIXEL_PCT: None, LabelStatsKeys.IMAGE_INTST: None}], } if self.do_ccp: - report_format[str(LabelStatsKeys.LABEL)][0].update( - {str(LabelStatsKeys.LABEL_SHAPE): None, str(LabelStatsKeys.LABEL_NCOMP): None} + report_format[LabelStatsKeys.LABEL][0].update( + {LabelStatsKeys.LABEL_SHAPE: None, LabelStatsKeys.LABEL_NCOMP: None} ) super().__init__(stats_name, report_format) - self.update_ops(str(LabelStatsKeys.IMAGE_INTST), SummaryOperations()) + self.update_ops(LabelStatsKeys.IMAGE_INTST, SummaryOperations()) # label-0-'pixel percentage' id_seq = ID_SEP_KEY.join([LabelStatsKeys.LABEL, "0", LabelStatsKeys.PIXEL_PCT]) @@ -695,21 +694,21 @@ def __call__(self, data: List[Dict]): # unique class ID uid_np = concat_val_to_np(data, [self.stats_name, LabelStatsKeys.LABEL_UID], axis=None, ragged=True) unique_label = label_union(uid_np) - report[str(LabelStatsKeys.LABEL_UID)] = unique_label + report[LabelStatsKeys.LABEL_UID] = unique_label # image intensity - intst_str: str = str(LabelStatsKeys.IMAGE_INTST) + intst_str = LabelStatsKeys.IMAGE_INTST op_keys = report[intst_str].keys() # template, max/min/... intst_dict = concat_multikeys_to_dict(data, [self.stats_name, intst_str], op_keys) report[intst_str] = self.ops[intst_str].evaluate(intst_dict, dim=None if self.summary_average else 0) detailed_label_list = [] # iterate through each label - label_str = str(LabelStatsKeys.LABEL) + label_str = LabelStatsKeys.LABEL for label_id in unique_label: stats = {} - pct_str = str(LabelStatsKeys.PIXEL_PCT) + pct_str = LabelStatsKeys.PIXEL_PCT pct_fixed_keys = [self.stats_name, label_str, label_id, pct_str] pct_np = concat_val_to_np(data, pct_fixed_keys, allow_missing=True) stats[pct_str] = self.ops[label_str][0][pct_str].evaluate( @@ -717,14 +716,14 @@ def __call__(self, data: List[Dict]): ) if self.do_ccp: - ncomp_str = str(LabelStatsKeys.LABEL_NCOMP) + ncomp_str = LabelStatsKeys.LABEL_NCOMP ncomp_fixed_keys = [self.stats_name, LabelStatsKeys.LABEL, label_id, ncomp_str] ncomp_np = concat_val_to_np(data, ncomp_fixed_keys, allow_missing=True) stats[ncomp_str] = self.ops[label_str][0][ncomp_str].evaluate( ncomp_np, dim=(0, 1) if ncomp_np.ndim > 2 and self.summary_average else 0 ) - shape_str = str(LabelStatsKeys.LABEL_SHAPE) + shape_str = LabelStatsKeys.LABEL_SHAPE shape_fixed_keys = [self.stats_name, label_str, label_id, LabelStatsKeys.LABEL_SHAPE] shape_np = concat_val_to_np(data, shape_fixed_keys, ragged=True, allow_missing=True) stats[shape_str] = self.ops[label_str][0][shape_str].evaluate( @@ -733,7 +732,7 @@ def __call__(self, data: List[Dict]): # label shape is a 3-element value, but the number of labels in each image # can vary from 0 to N. So the value in a list format is "ragged" - intst_str = str(LabelStatsKeys.IMAGE_INTST) + intst_str = LabelStatsKeys.IMAGE_INTST intst_fixed_keys = [self.stats_name, label_str, label_id, intst_str] op_keys = report[label_str][0][intst_str].keys() intst_dict = concat_multikeys_to_dict(data, intst_fixed_keys, op_keys, allow_missing=True) @@ -743,7 +742,7 @@ def __call__(self, data: List[Dict]): detailed_label_list.append(stats) - report[str(LabelStatsKeys.LABEL)] = detailed_label_list + report[LabelStatsKeys.LABEL] = detailed_label_list if not verify_report_format(report, self.get_report_format()): raise RuntimeError(f"report generated by {self.__class__} differs from the report format.") diff --git a/tests/min_tests.py b/tests/min_tests.py index ca4250ddcf..d1d8ccc6a8 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -30,7 +30,7 @@ def run_testsuit(): "test_ahnet", "test_arraydataset", "test_auto3dseg", - "test_auto3dseg_app", + "test_auto3dseg_apps", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", From 302c5bce68f7904981858f0b3504a872e5d7b929 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 17:35:35 +0800 Subject: [PATCH 144/150] misc fix on mintests Signed-off-by: Mingxin Zheng --- tests/min_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/min_tests.py b/tests/min_tests.py index d1d8ccc6a8..16f97fd35a 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -29,8 +29,8 @@ def run_testsuit(): exclude_cases = [ # these cases use external dependencies "test_ahnet", "test_arraydataset", - "test_auto3dseg", "test_auto3dseg_apps", + "test_auto3dseg", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", From 99e21685038706368f8e2faf42ea84a733273f0a Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 17:49:42 +0800 Subject: [PATCH 145/150] misc duplicate module names Signed-off-by: Mingxin Zheng --- monai/apps/{auto3dseg => auto3dsegmentation}/__init__.py | 0 monai/apps/{auto3dseg => auto3dsegmentation}/__main__.py | 2 +- monai/apps/{auto3dseg => auto3dsegmentation}/data_analyzer.py | 0 tests/min_tests.py | 2 +- tests/{test_auto3dseg_apps.py => test_auto3dsegmentation.py} | 2 +- 5 files changed, 3 insertions(+), 3 deletions(-) rename monai/apps/{auto3dseg => auto3dsegmentation}/__init__.py (100%) rename monai/apps/{auto3dseg => auto3dsegmentation}/__main__.py (92%) rename monai/apps/{auto3dseg => auto3dsegmentation}/data_analyzer.py (100%) rename tests/{test_auto3dseg_apps.py => test_auto3dsegmentation.py} (98%) diff --git a/monai/apps/auto3dseg/__init__.py b/monai/apps/auto3dsegmentation/__init__.py similarity index 100% rename from monai/apps/auto3dseg/__init__.py rename to monai/apps/auto3dsegmentation/__init__.py diff --git a/monai/apps/auto3dseg/__main__.py b/monai/apps/auto3dsegmentation/__main__.py similarity index 92% rename from monai/apps/auto3dseg/__main__.py rename to monai/apps/auto3dsegmentation/__main__.py index 301c5d7236..ca821b0a4f 100644 --- a/monai/apps/auto3dseg/__main__.py +++ b/monai/apps/auto3dsegmentation/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.apps.auto3dseg.data_analyzer import DataAnalyzer +from monai.apps.auto3dsegmentation import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/monai/apps/auto3dseg/data_analyzer.py b/monai/apps/auto3dsegmentation/data_analyzer.py similarity index 100% rename from monai/apps/auto3dseg/data_analyzer.py rename to monai/apps/auto3dsegmentation/data_analyzer.py diff --git a/tests/min_tests.py b/tests/min_tests.py index 16f97fd35a..4af1f66406 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -29,8 +29,8 @@ def run_testsuit(): exclude_cases = [ # these cases use external dependencies "test_ahnet", "test_arraydataset", - "test_auto3dseg_apps", "test_auto3dseg", + "test_auto3dsegmentation", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", diff --git a/tests/test_auto3dseg_apps.py b/tests/test_auto3dsegmentation.py similarity index 98% rename from tests/test_auto3dseg_apps.py rename to tests/test_auto3dsegmentation.py index 9670f308ef..69f4228e48 100644 --- a/tests/test_auto3dseg_apps.py +++ b/tests/test_auto3dsegmentation.py @@ -17,7 +17,7 @@ import numpy as np import torch -from monai.apps.auto3dseg import DataAnalyzer +from monai.apps.auto3dsegmentation import DataAnalyzer from monai.bundle import ConfigParser from monai.data import create_test_image_3d From 01bb412aa80685dde4f3d1d0bcea99780fce3650 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 18:04:07 +0800 Subject: [PATCH 146/150] misc mintests Signed-off-by: Mingxin Zheng --- .../__init__.py | 0 .../__main__.py | 2 +- .../data_analyzer.py | 0 tests/min_tests.py | 1 - tests/test_auto3dseg.py | 29 ++++++ tests/test_auto3dsegmentation.py | 92 ------------------- 6 files changed, 30 insertions(+), 94 deletions(-) rename monai/apps/{auto3dsegmentation => auto3dseg}/__init__.py (100%) rename monai/apps/{auto3dsegmentation => auto3dseg}/__main__.py (93%) rename monai/apps/{auto3dsegmentation => auto3dseg}/data_analyzer.py (100%) delete mode 100644 tests/test_auto3dsegmentation.py diff --git a/monai/apps/auto3dsegmentation/__init__.py b/monai/apps/auto3dseg/__init__.py similarity index 100% rename from monai/apps/auto3dsegmentation/__init__.py rename to monai/apps/auto3dseg/__init__.py diff --git a/monai/apps/auto3dsegmentation/__main__.py b/monai/apps/auto3dseg/__main__.py similarity index 93% rename from monai/apps/auto3dsegmentation/__main__.py rename to monai/apps/auto3dseg/__main__.py index ca821b0a4f..73031b330d 100644 --- a/monai/apps/auto3dsegmentation/__main__.py +++ b/monai/apps/auto3dseg/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.apps.auto3dsegmentation import DataAnalyzer +from monai.apps.auto3dseg import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/monai/apps/auto3dsegmentation/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py similarity index 100% rename from monai/apps/auto3dsegmentation/data_analyzer.py rename to monai/apps/auto3dseg/data_analyzer.py diff --git a/tests/min_tests.py b/tests/min_tests.py index 4af1f66406..6b60057dd7 100644 --- a/tests/min_tests.py +++ b/tests/min_tests.py @@ -30,7 +30,6 @@ def run_testsuit(): "test_ahnet", "test_arraydataset", "test_auto3dseg", - "test_auto3dsegmentation", "test_cachedataset", "test_cachedataset_parallel", "test_cachedataset_persistent_workers", diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 87b5eb5014..1836e04afe 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -19,6 +19,7 @@ import numpy as np import torch +from monai.apps.auto3dseg import DataAnalyzer from monai.auto3dseg import ( Operations, SampleOperations, @@ -135,6 +136,34 @@ def setUp(self): self.fake_json_datalist = path.join(dataroot, "fake_input.json") ConfigParser.export_config_file(fake_datalist, self.fake_json_datalist) + def test_data_analyzer(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer(fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + + def test_data_analyzer_image_only(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + + def test_data_analyzer_from_yaml(self): + dataroot = self.test_dir.name + yaml_fpath = path.join(dataroot, "data_stats.yaml") + analyser = DataAnalyzer( + self.fake_json_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers + ) + datastat = analyser.get_all_case_stats() + + assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) + def test_basic_operation_class(self): op = TestOperations() test_data = np.random.rand(10, 10).astype(np.float64) diff --git a/tests/test_auto3dsegmentation.py b/tests/test_auto3dsegmentation.py deleted file mode 100644 index 69f4228e48..0000000000 --- a/tests/test_auto3dsegmentation.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (c) MONAI Consortium -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# http://www.apache.org/licenses/LICENSE-2.0 -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import tempfile -import unittest -from os import path - -import nibabel as nib -import numpy as np -import torch - -from monai.apps.auto3dsegmentation import DataAnalyzer -from monai.bundle import ConfigParser -from monai.data import create_test_image_3d - -device = "cuda" if torch.cuda.is_available() else "cpu" -n_workers = 2 if device == "cpu" else 0 - -fake_datalist = { - "testing": [{"image": "val_001.fake.nii.gz"}, {"image": "val_002.fake.nii.gz"}], - "training": [ - {"fold": 0, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, - {"fold": 0, "image": "tr_image_002.fake.nii.gz", "label": "tr_label_002.fake.nii.gz"}, - {"fold": 1, "image": "tr_image_001.fake.nii.gz", "label": "tr_label_001.fake.nii.gz"}, - {"fold": 1, "image": "tr_image_004.fake.nii.gz", "label": "tr_label_004.fake.nii.gz"}, - ], -} - - -class TestDataAnalyzer(unittest.TestCase): - def setUp(self): - self.test_dir = tempfile.TemporaryDirectory() - dataroot = self.test_dir.name - - # Generate a fake dataset - for d in fake_datalist["testing"] + fake_datalist["training"]: - im, seg = create_test_image_3d(39, 47, 46, rad_max=10) - nib_image = nib.Nifti1Image(im, affine=np.eye(4)) - image_fpath = path.join(dataroot, d["image"]) - nib.save(nib_image, image_fpath) - - if "label" in d: - nib_image = nib.Nifti1Image(seg, affine=np.eye(4)) - label_fpath = path.join(dataroot, d["label"]) - nib.save(nib_image, label_fpath) - - # write to a json file - self.fake_json_datalist = path.join(dataroot, "fake_input.json") - ConfigParser.export_config_file(fake_datalist, self.fake_json_datalist) - - def test_data_analyzer(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer(fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers) - datastat = analyser.get_all_case_stats() - - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - - def test_data_analyzer_image_only(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer( - fake_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers, label_key=None - ) - datastat = analyser.get_all_case_stats() - - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - - def test_data_analyzer_from_yaml(self): - dataroot = self.test_dir.name - yaml_fpath = path.join(dataroot, "data_stats.yaml") - analyser = DataAnalyzer( - self.fake_json_datalist, dataroot, output_path=yaml_fpath, device=device, worker=n_workers - ) - datastat = analyser.get_all_case_stats() - - assert len(datastat["stats_by_cases"]) == len(fake_datalist["training"]) - - def tearDown(self) -> None: - self.test_dir.cleanup() - - -if __name__ == "__main__": - unittest.main() From 7802e02a4553f965a5b1dc9fb5473256043960cf Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Fri, 26 Aug 2022 22:59:00 +0800 Subject: [PATCH 147/150] fix min_test err Signed-off-by: Mingxin Zheng --- monai/apps/auto3dseg/__init__.py | 2 -- monai/apps/auto3dseg/__main__.py | 2 +- tests/test_auto3dseg.py | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/monai/apps/auto3dseg/__init__.py b/monai/apps/auto3dseg/__init__.py index 1e717be7b7..1e97f89407 100644 --- a/monai/apps/auto3dseg/__init__.py +++ b/monai/apps/auto3dseg/__init__.py @@ -8,5 +8,3 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. - -from .data_analyzer import DataAnalyzer diff --git a/monai/apps/auto3dseg/__main__.py b/monai/apps/auto3dseg/__main__.py index 73031b330d..301c5d7236 100644 --- a/monai/apps/auto3dseg/__main__.py +++ b/monai/apps/auto3dseg/__main__.py @@ -10,7 +10,7 @@ # limitations under the License. -from monai.apps.auto3dseg import DataAnalyzer +from monai.apps.auto3dseg.data_analyzer import DataAnalyzer if __name__ == "__main__": from monai.utils import optional_import diff --git a/tests/test_auto3dseg.py b/tests/test_auto3dseg.py index 1836e04afe..43212af107 100644 --- a/tests/test_auto3dseg.py +++ b/tests/test_auto3dseg.py @@ -19,7 +19,7 @@ import numpy as np import torch -from monai.apps.auto3dseg import DataAnalyzer +from monai.apps.auto3dseg.data_analyzer import DataAnalyzer from monai.auto3dseg import ( Operations, SampleOperations, From faed367ce13069670112f8d9922bffa723285a66 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Fri, 26 Aug 2022 17:21:59 +0100 Subject: [PATCH 148/150] update docs Signed-off-by: Wenqi Li --- docs/source/apps.rst | 7 +++++++ docs/source/auto3dseg.rst | 1 + monai/apps/auto3dseg/data_analyzer.py | 8 ++++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/docs/source/apps.rst b/docs/source/apps.rst index 3c5eed4002..16fe8ebb8e 100644 --- a/docs/source/apps.rst +++ b/docs/source/apps.rst @@ -210,3 +210,10 @@ Applications `ComplexConj` ~~~~~~~~~~~~~ .. autofunction:: monai.apps.reconstruction.complex_utils.complex_conj + +`auto3dseg` +----------- + +.. automodule:: monai.apps.auto3dseg.data_analyzer + :members: + :imported-members: diff --git a/docs/source/auto3dseg.rst b/docs/source/auto3dseg.rst index c9862d294d..ce886c0a9d 100644 --- a/docs/source/auto3dseg.rst +++ b/docs/source/auto3dseg.rst @@ -7,3 +7,4 @@ auto3dseg .. automodule:: monai.auto3dseg :members: + :imported-members: diff --git a/monai/apps/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py index 68a7187ec6..57f3fe4740 100644 --- a/monai/apps/auto3dseg/data_analyzer.py +++ b/monai/apps/auto3dseg/data_analyzer.py @@ -102,10 +102,10 @@ class DataAnalyzer: .. code-block:: bash - python -m monai.apps.auto3dseg \ - DataAnalyzer \ - get_all_case_stats \ - --datalist="my_datalist.json" \ + python -m monai.apps.auto3dseg \\ + DataAnalyzer \\ + get_all_case_stats \\ + --datalist="my_datalist.json" \\ --dataroot="my_dataroot_dir" """ From 8e98c4cd9c61300e0f0aa5623118965feee5392e Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Fri, 26 Aug 2022 19:50:47 +0100 Subject: [PATCH 149/150] fixes pickle Signed-off-by: Wenqi Li --- monai/apps/auto3dseg/data_analyzer.py | 20 +++++++++++--------- monai/auto3dseg/analyzer.py | 12 ++++++------ monai/auto3dseg/operations.py | 2 +- monai/auto3dseg/seg_summarizer.py | 6 +++--- monai/auto3dseg/utils.py | 6 +++--- monai/bundle/config_parser.py | 7 ++++--- 6 files changed, 28 insertions(+), 25 deletions(-) diff --git a/monai/apps/auto3dseg/data_analyzer.py b/monai/apps/auto3dseg/data_analyzer.py index 57f3fe4740..6c893c1c52 100644 --- a/monai/apps/auto3dseg/data_analyzer.py +++ b/monai/apps/auto3dseg/data_analyzer.py @@ -49,6 +49,10 @@ def strenum_representer(dumper, data): __all__ = ["DataAnalyzer"] +def _argmax_if_multichannel(x): + return torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x + + class DataAnalyzer: """ The DataAnalyzer automatically analyzes given medical image dataset and reports the statistics. @@ -170,10 +174,10 @@ def get_all_case_stats(self): "stats_summary" (summary statistics of the entire datasets). Within stats_summary there are "image_stats" (summarizing info of shape, channel, spacing, and etc using operations_summary), "image_foreground_stats" (info of the intensity for the - non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentange, - image_intensity, and each invidiual label in a list) + non-zero labeled voxels), and "label_stats" (info of the labels, pixel percentage, + image_intensity, and each individual label in a list) "stats_by_cases" (List type value. Each element of the list is statistics of - a image-label info. Within each each element, there are: "image" (value is the + an image-label info. Within each element, there are: "image" (value is the path to an image), "label" (value is the path to the corresponding label), "image_stats" (summarizing info of shape, channel, spacing, and etc using operations), "image_foreground_stats" (similar to the previous one but one foreground image), and @@ -192,25 +196,23 @@ def get_all_case_stats(self): EnsureChannelFirstd(keys=keys), # this creates label to be (1,H,W,D) Orientationd(keys=keys, axcodes="RAS"), EnsureTyped(keys=keys, data_type="tensor"), - Lambdad(keys=self.label_key, func=lambda x: torch.argmax(x, dim=0, keepdim=True) if x.shape[0] > 1 else x) - if self.label_key - else None, + Lambdad(keys=self.label_key, func=_argmax_if_multichannel) if self.label_key else None, SqueezeDimd(keys=["label"], dim=0) if self.label_key else None, ToDeviced(keys=keys, device=self.device), summarizer, ] - tranform = Compose(transforms=list(filter(None, transform_list))) + transform = Compose(transforms=list(filter(None, transform_list))) files, _ = datafold_read(datalist=self.datalist, basedir=self.dataroot, fold=-1) - dataset = Dataset(data=files, transform=tranform) + dataset = Dataset(data=files, transform=transform) dataloader = DataLoader(dataset, batch_size=1, shuffle=False, num_workers=self.worker, collate_fn=no_collation) result = {DataStatsKeys.SUMMARY: {}, DataStatsKeys.BY_CASE: []} if not has_tqdm: warnings.warn("tqdm is not installed. not displaying the caching progress.") for batch_data in tqdm(dataloader) if has_tqdm else dataloader: - # d = tranform(batch_data[0]) + # d = transform(batch_data[0]) d = batch_data[0] stats_by_cases = { DataStatsKeys.BY_CASE_IMAGE_PATH: d[DataStatsKeys.BY_CASE_IMAGE_PATH], diff --git a/monai/auto3dseg/analyzer.py b/monai/auto3dseg/analyzer.py index 6c67ec7b68..45024d6d7c 100644 --- a/monai/auto3dseg/analyzer.py +++ b/monai/auto3dseg/analyzer.py @@ -54,7 +54,7 @@ class Analyzer(MapTransform, ABC): The Analyzer component is a base class. Other classes inherit this class will provide a callable with the same class name and produces one pre-formatted dictionary for the input data. The format is pre-defined by the init function of the class that inherit this base class. Function operations - can also be registerred before the runtime of the callable. + can also be registered before the runtime of the callable. Args: report_format: a dictionary that outlines the key structures of the report format. @@ -63,14 +63,14 @@ class Analyzer(MapTransform, ABC): def __init__(self, stats_name: str, report_format: dict) -> None: super().__init__(None) - parser = ConfigParser(report_format) + parser = ConfigParser(report_format, globals=False) # ConfigParser.globals not picklable self.report_format = parser.get("") self.stats_name = stats_name - self.ops = ConfigParser({}) + self.ops = ConfigParser({}, globals=False) def update_ops(self, key: str, op): """ - Register an statistical operation to the Analyzer and update the report_format. + Register a statistical operation to the Analyzer and update the report_format. Args: key: value key in the report. @@ -130,7 +130,7 @@ def unwrap_ops(func): Args: func: Operation sub-class object that represents statistical operations. The func object should have a `data` dictionary which stores the statistical operation information. - For some operations (ImageStats for example), it may also contains the data_addon + For some operations (ImageStats for example), it may also contain the data_addon property, which is part of the update process. Returns: @@ -773,7 +773,7 @@ def __call__(self, data): if self.key not in d: # check whether image/label is in the data raise ValueError(f"Data with key {self.key} is missing ") if self.meta_key not in d: - raise ValueError(f"Meta data with key {self.meta_key} is mssing") + raise ValueError(f"Meta data with key {self.meta_key} is missing") d[self.stats_name] = d[self.meta_key][ImageMetaKey.FILENAME_OR_OBJ] else: d[self.stats_name] = "None" diff --git a/monai/auto3dseg/operations.py b/monai/auto3dseg/operations.py index 5fcdb9d4e6..45294549ef 100644 --- a/monai/auto3dseg/operations.py +++ b/monai/auto3dseg/operations.py @@ -120,7 +120,7 @@ class SummaryOperations(Operations): "sum": np.random.rand(4), } op = SummaryOperations() - print(op.evaluate(data)) # "sum" is not registerred yet, so it won't contain "sum" + print(op.evaluate(data)) # "sum" is not registered yet, so it won't contain "sum" op.update({"sum", np.sum}) print(op.evaluate(data)) # output has "sum" diff --git a/monai/auto3dseg/seg_summarizer.py b/monai/auto3dseg/seg_summarizer.py index a4ee79200f..8ebf93fb21 100644 --- a/monai/auto3dseg/seg_summarizer.py +++ b/monai/auto3dseg/seg_summarizer.py @@ -29,7 +29,7 @@ class SegSummarizer(Compose): """ SegSummarizer serializes the operations for data analysis in Auto3Dseg pipeline. It loads - two types of analyzer functions and execuate differently. The first type of analyzer is + two types of analyzer functions and execute differently. The first type of analyzer is CaseAnalyzer which is similar to traditional monai transforms. It can be composed with other transforms to process the data dict which has image/label keys. The second type of analyzer is SummaryAnalyzer which works only on a list of dictionary. Each dictionary is the output @@ -91,7 +91,7 @@ def __init__(self, image_key: str, label_key: str, average=True, do_ccp: bool = LabelStats(image_key, label_key, do_ccp=do_ccp), LabelStatsSumm(average=average, do_ccp=do_ccp) ) - def add_analyzer(self, case_analyzer, summary_analzyer) -> None: + def add_analyzer(self, case_analyzer, summary_analyzer) -> None: """ Add new analyzers to the engine so that the callable and summarize functions will utilize the new analyzers for stats computations. @@ -138,7 +138,7 @@ def __call__(self, data): """ self.transforms += (case_analyzer,) - self.summary_analyzers.append(summary_analzyer) + self.summary_analyzers.append(summary_analyzer) def summarize(self, data: List[Dict]): """ diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index e48beac3c4..ff6b833ae7 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -49,7 +49,7 @@ def get_foreground_image(image: MetaTensor): ndarray of foreground image by removing all-zero edges. Notes: - the size of the ouput is smaller than the input. + the size of the output is smaller than the input. """ copper = CropForeground(select_fn=lambda x: x > 0) @@ -130,7 +130,7 @@ def concat_val_to_np( allow_missing: if True, it will return a None if the value cannot be found. Returns: - nd.array of concatanated array. + nd.array of concatenated array. """ @@ -185,7 +185,7 @@ def concat_multikeys_to_dict( flatten: if True, numbers are flattened before concat. Returns: - a dict with keys - nd.array of concatanated array pair. + a dict with keys - nd.array of concatenated array pair. """ ret_dict = {} diff --git a/monai/bundle/config_parser.py b/monai/bundle/config_parser.py index e15c451b3b..10a4e317ce 100644 --- a/monai/bundle/config_parser.py +++ b/monai/bundle/config_parser.py @@ -76,6 +76,7 @@ class ConfigParser: The current supported globals and alias names are ``{"monai": "monai", "torch": "torch", "np": "numpy", "numpy": "numpy"}``. These are MONAI's minimal dependencies. Additional packages could be included with `globals={"itk": "itk"}`. + Set it to ``False`` to disable `self.globals` module importing. See also: @@ -95,14 +96,14 @@ def __init__( self, config: Any = None, excludes: Optional[Union[Sequence[str], str]] = None, - globals: Optional[Dict[str, Any]] = None, + globals: Union[Dict[str, Any], None, bool] = None, ): self.config = None self.globals: Dict[str, Any] = {} _globals = _default_globals.copy() - if isinstance(_globals, dict) and globals is not None: + if isinstance(_globals, dict) and globals not in (None, False): _globals.update(globals) - if _globals is not None: + if _globals is not None and globals is not False: for k, v in _globals.items(): self.globals[k] = optional_import(v)[0] if isinstance(v, str) else v From a520b0515979e6c10cc711d7b1215c58fa321d33 Mon Sep 17 00:00:00 2001 From: Wenqi Li Date: Fri, 26 Aug 2022 20:21:35 +0100 Subject: [PATCH 150/150] fixes mypy error Signed-off-by: Wenqi Li --- monai/bundle/config_parser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monai/bundle/config_parser.py b/monai/bundle/config_parser.py index 10a4e317ce..752d013a8c 100644 --- a/monai/bundle/config_parser.py +++ b/monai/bundle/config_parser.py @@ -102,7 +102,7 @@ def __init__( self.globals: Dict[str, Any] = {} _globals = _default_globals.copy() if isinstance(_globals, dict) and globals not in (None, False): - _globals.update(globals) + _globals.update(globals) # type: ignore if _globals is not None and globals is not False: for k, v in _globals.items(): self.globals[k] = optional_import(v)[0] if isinstance(v, str) else v