From 6db76ad74ff7128743b03ac8e9dca5c374bdb2ea Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Tue, 3 Sep 2024 12:56:50 -0400 Subject: [PATCH 01/19] made some updates. Stuck at OpenFL-relevant error. --- Task_1/.gitignore | 6 + Task_1/FeTS_Challenge.py | 5 +- Task_1/README.md | 12 +- Task_1/build/lib/fets_challenge/__init__.py | 7 + .../lib/fets_challenge/checkpoint_utils.py | 51 + .../custom_aggregation_wrapper.py | 30 + Task_1/build/lib/fets_challenge/experiment.py | 563 ++++++++ .../lib/fets_challenge/gandlf_csv_adapter.py | 214 +++ Task_1/build/lib/fets_challenge/inference.py | 251 ++++ .../lib/fets_challenge/spec_sens_code.py | 113 ++ .../partitioning_1.csv | 1252 +++++++++++++++++ .../partitioning_2.csv | 1252 +++++++++++++++++ .../fets_challenge_workspace/plan/cols.yaml | 3 + .../fets_challenge_workspace/plan/data.yaml | 4 + .../fets_challenge_workspace/plan/defaults | 2 + .../fets_challenge_workspace/plan/plan.yaml | 140 ++ .../fets_challenge_workspace/requirements.txt | 2 + .../fets_challenge_workspace/small_split.csv | 11 + .../fets_challenge_workspace/src/__init__.py | 10 + .../src/challenge_assigner.py | 40 + .../src/fets_challenge_model.py | 208 +++ .../fets_challenge_workspace/validation.csv | 220 +++ Task_1/cert/ca/root-ca.crt | 27 + Task_1/cert/ca/root-ca/db/root-ca.crl.srl | 1 + Task_1/cert/ca/root-ca/db/root-ca.crt.srl | 1 + Task_1/cert/ca/root-ca/db/root-ca.db | 0 Task_1/cert/ca/root-ca/db/root-ca.db.attr | 0 Task_1/cert/ca/root-ca/private/root-ca.key | 39 + Task_1/cert/ca/signing-ca.crt | 27 + Task_1/cert/ca/signing-ca.csr | 23 + .../cert/ca/signing-ca/db/signing-ca.crl.srl | 1 + .../cert/ca/signing-ca/db/signing-ca.crt.srl | 1 + Task_1/cert/ca/signing-ca/db/signing-ca.db | 0 .../cert/ca/signing-ca/db/signing-ca.db.attr | 0 .../cert/ca/signing-ca/private/signing-ca.key | 39 + Task_1/cert/cert_chain.crt | 54 + Task_1/cert/client/col_one.crt | 25 + Task_1/cert/client/col_one.key | 39 + Task_1/cert/client/col_two.crt | 25 + Task_1/cert/client/col_two.key | 39 + Task_1/cert/col_one.csr | 22 + Task_1/cert/col_two.csr | 22 + .../server/agg_in-ota-232347.ads.iu.edu.crt | 26 + .../server/agg_in-ota-232347.ads.iu.edu.csr | 23 + .../server/agg_in-ota-232347.ads.iu.edu.key | 39 + Task_1/fets_challenge.egg-info/PKG-INFO | 115 ++ Task_1/fets_challenge.egg-info/SOURCES.txt | 28 + .../dependency_links.txt | 1 + Task_1/fets_challenge.egg-info/requires.txt | 3 + Task_1/fets_challenge.egg-info/top_level.txt | 2 + .../custom_aggregation_wrapper.py | 2 +- Task_1/fets_challenge/experiment.py | 31 +- .../fets_challenge_workspace/plan/plan.yaml | 2 +- Task_1/setup.py | 11 +- 54 files changed, 5046 insertions(+), 18 deletions(-) create mode 100644 Task_1/.gitignore create mode 100644 Task_1/build/lib/fets_challenge/__init__.py create mode 100644 Task_1/build/lib/fets_challenge/checkpoint_utils.py create mode 100644 Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py create mode 100644 Task_1/build/lib/fets_challenge/experiment.py create mode 100644 Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py create mode 100644 Task_1/build/lib/fets_challenge/inference.py create mode 100644 Task_1/build/lib/fets_challenge/spec_sens_code.py create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py create mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv create mode 100644 Task_1/cert/ca/root-ca.crt create mode 100644 Task_1/cert/ca/root-ca/db/root-ca.crl.srl create mode 100644 Task_1/cert/ca/root-ca/db/root-ca.crt.srl create mode 100644 Task_1/cert/ca/root-ca/db/root-ca.db create mode 100644 Task_1/cert/ca/root-ca/db/root-ca.db.attr create mode 100644 Task_1/cert/ca/root-ca/private/root-ca.key create mode 100644 Task_1/cert/ca/signing-ca.crt create mode 100644 Task_1/cert/ca/signing-ca.csr create mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl create mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl create mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.db create mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.db.attr create mode 100644 Task_1/cert/ca/signing-ca/private/signing-ca.key create mode 100644 Task_1/cert/cert_chain.crt create mode 100644 Task_1/cert/client/col_one.crt create mode 100644 Task_1/cert/client/col_one.key create mode 100644 Task_1/cert/client/col_two.crt create mode 100644 Task_1/cert/client/col_two.key create mode 100644 Task_1/cert/col_one.csr create mode 100644 Task_1/cert/col_two.csr create mode 100644 Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt create mode 100644 Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr create mode 100644 Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key create mode 100644 Task_1/fets_challenge.egg-info/PKG-INFO create mode 100644 Task_1/fets_challenge.egg-info/SOURCES.txt create mode 100644 Task_1/fets_challenge.egg-info/dependency_links.txt create mode 100644 Task_1/fets_challenge.egg-info/requires.txt create mode 100644 Task_1/fets_challenge.egg-info/top_level.txt diff --git a/Task_1/.gitignore b/Task_1/.gitignore new file mode 100644 index 0000000..230a809 --- /dev/null +++ b/Task_1/.gitignore @@ -0,0 +1,6 @@ +FeTS_Challenge-flair.py +FeTS_Challenge_FedPOD_partitioning2.py +FeTS_Challenge_RL.py +FeTS_Challenge_RecEng.py +FeTS_Challenge_leonardklausman.py +*final_submission* diff --git a/Task_1/FeTS_Challenge.py b/Task_1/FeTS_Challenge.py index 94d7598..028b954 100644 --- a/Task_1/FeTS_Challenge.py +++ b/Task_1/FeTS_Challenge.py @@ -523,10 +523,11 @@ def FedAvgM_Selection(local_tensors, # We encourage participants to experiment with partitioning_1 and partitioning_2, as well as to create # other partitionings to test your changes for generalization to multiple partitionings. #institution_split_csv_filename = 'partitioning_1.csv' -institution_split_csv_filename = 'small_split.csv' +#institution_split_csv_filename = 'partitioning_1.csv' +institution_split_csv_filename = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData/partitioning_2.csv' #'small_split.csv' # change this to point to the parent directory of the data -brats_training_data_parent_dir = '/raid/datasets/FeTS22/MICCAI_FeTS2022_TrainingData' +brats_training_data_parent_dir = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData' # increase this if you need a longer history for your algorithms # decrease this if you need to reduce system RAM consumption diff --git a/Task_1/README.md b/Task_1/README.md index 088ee8f..02b8f4f 100644 --- a/Task_1/README.md +++ b/Task_1/README.md @@ -20,18 +20,18 @@ Please ask any additional questions in our discussion pages on our github site a 2. ```git clone https://github.com/FETS-AI/Challenge.git``` 3. ```cd Challenge/Task_1``` 4. ```git lfs pull``` -5. Create virtual environment (python 3.6-3.8): using Anaconda, a new environment can be created and activated using the following commands: +5. Create virtual environment (python 3.9): using Anaconda, a new environment can be created and activated using the following commands: ```sh ## create venv in specific path - conda create -p ./venv python=3.7 -y + conda create -p ./venv python=3.9 -y conda activate ./venv ``` 6. ```pip install --upgrade pip``` -7. Install Pytorch LTS (1.8.2) for your system (use CUDA 11): - ```pip3 install torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 --extra-index-url https://download.pytorch.org/whl/lts/1.8/cu111``` +7. Install Pytorch (2.3.1) for your system: + ```pip install torch==2.3.1 torchvision==0.18.1``` *Note all previous versions of pytorch can be found in [these instructions]([https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/previous-versions/)) -9. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) -10. ```pip install .``` +8. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) +9. ```pip install .``` > * _Note: if you run into ```ERROR: Failed building wheel for SimpleITK```, try running ```pip install SimpleITK --only-binary :all:``` then rerunning ```pip install .```_ 10. ```python FeTS_Challenge.py``` > * _Note: if you run into ```ImportError: /home/locolinux/FETS2024/fets2024env/bin/../lib/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /home/locolinux/FETS2024/fets2024env/lib/python3.7/site-packages/SimpleITK/_SimpleITK.so)```, try installing a previous version of SimpleITK (version 2.2.0 works) diff --git a/Task_1/build/lib/fets_challenge/__init__.py b/Task_1/build/lib/fets_challenge/__init__.py new file mode 100644 index 0000000..d050e7d --- /dev/null +++ b/Task_1/build/lib/fets_challenge/__init__.py @@ -0,0 +1,7 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 + +# Contributing Authors (alphabetical): +# Micah Sheller (Intel) + +from .experiment import run_challenge_experiment +from .inference import model_outputs_to_disc diff --git a/Task_1/build/lib/fets_challenge/checkpoint_utils.py b/Task_1/build/lib/fets_challenge/checkpoint_utils.py new file mode 100644 index 0000000..30d5706 --- /dev/null +++ b/Task_1/build/lib/fets_challenge/checkpoint_utils.py @@ -0,0 +1,51 @@ +import pandas as pd +import pickle +from pathlib import Path +from glob import glob +from sys import exit +from logging import getLogger + +logger = getLogger(__name__) + +def setup_checkpoint_folder(): + # Create checkpoint + Path("checkpoint").mkdir(parents=True, exist_ok=True) + existing_checkpoints = glob('checkpoint/*') + if len(existing_checkpoints) == 0: + checkpoint_num = 1 + else: + # Increment the existing checkpoint by 1 + checkpoint_num = sorted([int(x.replace('checkpoint/experiment_','')) for x in existing_checkpoints])[-1] + 1 + experiment_folder = f'experiment_{checkpoint_num}' + checkpoint_folder = f'checkpoint/{experiment_folder}' + Path(checkpoint_folder).mkdir(parents=True, exist_ok=False) + return experiment_folder + +def save_checkpoint(checkpoint_folder, aggregator, + collaborator_names, collaborators, + round_num, collaborator_time_stats, + total_simulated_time, best_dice, + best_dice_over_time_auc, + collaborators_chosen_each_round, + collaborator_times_per_round, + experiment_results, + summary): + """ + Save latest checkpoint + """ + # Save aggregator tensor_db + aggregator.tensor_db.tensor_db.to_pickle(f'checkpoint/{checkpoint_folder}/aggregator_tensor_db.pkl') + with open(f'checkpoint/{checkpoint_folder}/state.pkl', 'wb') as f: + pickle.dump([collaborator_names, round_num, collaborator_time_stats, total_simulated_time, + best_dice, best_dice_over_time_auc, collaborators_chosen_each_round, + collaborator_times_per_round, experiment_results, summary], f) + +def load_checkpoint(checkpoint_folder): + """ + Reload checkpoint from 'checkpoint/experiment_*' + """ + aggregator_tensor_db = pd.read_pickle(f'checkpoint/{checkpoint_folder}/aggregator_tensor_db.pkl') + with open(f'checkpoint/{checkpoint_folder}/state.pkl', 'rb') as f: + state = pickle.load(f) + + return state + [aggregator_tensor_db] diff --git a/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py b/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py new file mode 100644 index 0000000..ae7abc4 --- /dev/null +++ b/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py @@ -0,0 +1,30 @@ +from openfl.component.aggregation_functions.experimental import PrivilegedAggregationFunction + + +# extends the openfl agg func interface to include challenge-relevant information +class CustomAggregationWrapper(PrivilegedAggregationFunction): + def __init__(self, func): + super().__init__() + self.func = func + self.collaborators_chosen_each_round = None + self.collaborator_times_per_round = None + + def set_state_data_for_round(self, + collaborators_chosen_each_round, + collaborator_times_per_round): + self.collaborators_chosen_each_round = collaborators_chosen_each_round + self.collaborator_times_per_round = collaborator_times_per_round + + # pass-through that includes additional information from the challenge experiment wrapper + def call(self, + local_tensors, + tensor_db, + tensor_name, + fl_round, + *__): + return self.func(local_tensors, + tensor_db, + tensor_name, + fl_round, + self.collaborators_chosen_each_round, + self.collaborator_times_per_round) diff --git a/Task_1/build/lib/fets_challenge/experiment.py b/Task_1/build/lib/fets_challenge/experiment.py new file mode 100644 index 0000000..f561e66 --- /dev/null +++ b/Task_1/build/lib/fets_challenge/experiment.py @@ -0,0 +1,563 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 + +# Contributing Authors (alphabetical): +# Patrick Foley (Intel), Micah Sheller (Intel) + +import os +import warnings +from collections import namedtuple +from copy import copy +import shutil +from logging import getLogger +from pathlib import Path + +import numpy as np +import pandas as pd +from openfl.utilities import split_tensor_dict_for_holdouts, TensorKey +from openfl.protocols import utils +import openfl.native as fx +import torch + +from .gandlf_csv_adapter import construct_fedsim_csv, extract_csv_partitions +from .custom_aggregation_wrapper import CustomAggregationWrapper +from .checkpoint_utils import setup_checkpoint_folder, save_checkpoint, load_checkpoint + +# one week +# MINUTE = 60 +# HOUR = 60 * MINUTE +# DAY = 24 * HOUR +# WEEK = 7 * DAY +MAX_SIMULATION_TIME = 7 * 24 * 60 * 60 + +## COLLABORATOR TIMING DISTRIBUTIONS +# These data are derived from the actual timing information in the real-world FeTS information +# They reflect a subset of the institutions involved. +# Tuples are (mean, stddev) in seconds + +# time to train one patient +TRAINING_TIMES = [(6.710741331207654, 0.8726112813698301), + (2.7343911917098445, 0.023976155580152165), + (3.173076923076923, 0.04154320960517865), + (6.580379746835443, 0.22461890673025595), + (3.452046783625731, 0.47136389322749656), + (6.090788461700995, 0.08541499003440205), + (3.206933911159263, 0.1927067498514361), + (3.3358208955223883, 0.2950567549663471), + (4.391304347826087, 0.37464538999161057), + (6.324805129494594, 0.1413885448869165), + (7.415133477633478, 1.1198881747151301), + (5.806410256410255, 0.029926699295169234), + (6.300204918032787, 0.24932319729777577), + (5.886317567567567, 0.018627858809133223), + (5.478184991273998, 0.04902740607167421), + (6.32440159574468, 0.15838847558954935), + (20.661918328585003, 6.085405543890793), + (3.197901325478645, 0.07049966132127056), + (6.523963730569948, 0.2533266757118492), + (2.6540077569489338, 0.025503099659276184), + (1.8025746183640918, 0.06805805332403576)] + +# time to validate one patient +VALIDATION_TIMES = [(23.129135113591072, 2.5975116854269507), + (12.965544041450777, 0.3476297824941513), + (14.782051282051283, 0.5262660449172765), + (16.444936708860762, 0.42613177203005187), + (15.728654970760235, 4.327559980390658), + (12.946098012884802, 0.2449927822869217), + (15.335950126991456, 1.1587597276712558), + (24.024875621890544, 3.087348297794285), + (38.361702127659576, 2.240113332190875), + (16.320970580839827, 0.4995108101783225), + (30.805555555555554, 3.1836337269688237), + (12.100899742930592, 0.41122386959584895), + (13.099897540983607, 0.6693132795197584), + (9.690202702702702, 0.17513593019922968), + (10.06980802792321, 0.7947848617875114), + (14.605333333333334, 0.6012305898922827), + (36.30294396961064, 9.24123672148819), + (16.9130060292851, 0.7452868131028928), + (40.244078460399706, 3.7700993678269037), + (13.161603102779575, 0.1975347910041472), + (11.222161868549701, 0.7021223062972527)] + +# time to download the model +DOWNLOAD_TIMES = [(112.42869743589742, 14.456734719659513), + (117.26870618556701, 12.549951446132013), + (13.059666666666667, 4.8700489616521185), + (47.50220338983051, 14.92128656898884), + (162.27864210526315, 32.562113378948396), + (99.46072058823529, 13.808785580783224), + (33.6347090909091, 25.00299299660141), + (216.25489393939392, 19.176465340447848), + (217.4117230769231, 20.757673955585453), + (98.38857297297298, 13.205048376808929), + (88.87509473684209, 23.152936862511545), + (66.96994262295081, 16.682497150763503), + (36.668852040816326, 13.759109844677598), + (149.31716326530614, 26.018185409516104), + (139.847, 80.04755583050091), + (54.97624444444445, 16.645170929316794)] + +# time to upload the model +UPLOAD_TIMES = [(192.28497409326425, 21.537450985376967), + (194.60103626943004, 24.194406902237056), + (20.0, 0.0), + (52.43859649122807, 5.047207127169352), + (182.82417582417582, 14.793519078918195), + (143.38059701492537, 7.910690646792151), + (30.695652173913043, 9.668122350904568), + (430.95360824742266, 54.97790476867727), + (348.3174603174603, 30.14347985347738), + (141.43715846994536, 5.271340868190727), + (158.7433155080214, 64.87526819391198), + (81.06086956521739, 7.003461202082419), + (32.60621761658031, 5.0418315093016615), + (281.5388601036269, 90.60338778706557), + (194.34065934065933, 36.6519776778435), + (66.53787878787878, 16.456280602190606)] + +logger = getLogger(__name__) +# This catches PyTorch UserWarnings for CPU +warnings.filterwarnings("ignore", category=UserWarning) + +CollaboratorTimeStats = namedtuple('CollaboratorTimeStats', + [ + 'validation_mean', + 'training_mean', + 'download_speed_mean', + 'upload_speed_mean', + 'validation_std', + 'training_std', + 'download_speed_std', + 'upload_speed_std', + ] + ) + +def gen_collaborator_time_stats(collaborator_names, seed=0xFEEDFACE): + + np.random.seed(seed) + + stats = {} + for col in collaborator_names: + ml_index = np.random.randint(len(VALIDATION_TIMES)) + validation = VALIDATION_TIMES[ml_index] + training = TRAINING_TIMES[ml_index] + net_index = np.random.randint(len(DOWNLOAD_TIMES)) + download = DOWNLOAD_TIMES[net_index] + upload = UPLOAD_TIMES[net_index] + + stats[col] = CollaboratorTimeStats(validation_mean=validation[0], + training_mean=training[0], + download_speed_mean=download[0], + upload_speed_mean=upload[0], + validation_std=validation[1], + training_std=training[1], + download_speed_std=download[1], + upload_speed_std=upload[1]) + return stats + +def compute_times_per_collaborator(collaborator_names, + training_collaborators, + epochs_per_round, + collaborator_data, + collaborator_time_stats, + round_num): + np.random.seed(round_num) + times = {} + for col in collaborator_names: + time = 0 + + # stats + stats = collaborator_time_stats[col] + + # download time + download_time = np.random.normal(loc=stats.download_speed_mean, + scale=stats.download_speed_std) + download_time = max(1, download_time) + time += download_time + + # data loader + data = collaborator_data[col] + + # validation time + data_size = data.get_valid_data_size() + validation_time_per = np.random.normal(loc=stats.validation_mean, + scale=stats.validation_std) + validation_time_per = max(1, validation_time_per) + time += data_size * validation_time_per + + # only if training + if col in training_collaborators: + # training time + data_size = data.get_train_data_size() + training_time_per = np.random.normal(loc=stats.training_mean, + scale=stats.training_std) + training_time_per = max(1, training_time_per) + + # training data size depends on the hparams + data_size *= epochs_per_round + time += data_size * training_time_per + + # if training, we also validate the locally updated model + data_size = data.get_valid_data_size() + validation_time_per = np.random.normal(loc=stats.validation_mean, + scale=stats.validation_std) + validation_time_per = max(1, validation_time_per) + time += data_size * validation_time_per + + # upload time + upload_time = np.random.normal(loc=stats.upload_speed_mean, + scale=stats.upload_speed_std) + upload_time = max(1, upload_time) + time += upload_time + + times[col] = time + return times + + +def get_metric(metric, fl_round, tensor_db): + metric_name = metric + target_tags = ('metric', 'validate_agg') + return float(tensor_db.tensor_db.query("tensor_name == @metric_name and round == @fl_round and tags == @target_tags").nparray) + +def run_challenge_experiment(aggregation_function, + choose_training_collaborators, + training_hyper_parameters_for_round, + institution_split_csv_filename, + brats_training_data_parent_dir, + db_store_rounds=5, + rounds_to_train=5, + device='cpu', + save_checkpoints=True, + restore_from_checkpoint_folder=None, + include_validation_with_hausdorff=True, + use_pretrained_model=True): + + fx.init('fets_challenge_workspace') + + from sys import path, exit + + file = Path(__file__).resolve() + root = file.parent.resolve() # interface root, containing command modules + work = Path.cwd().resolve() + + path.append(str(root)) + path.insert(0, str(work)) + + # create gandlf_csv and get collaborator names + gandlf_csv_path = os.path.join(work, 'gandlf_paths.csv') + # split_csv_path = os.path.join(work, institution_split_csv_filename) + collaborator_names = construct_fedsim_csv(brats_training_data_parent_dir, + institution_split_csv_filename, + 0.8, + gandlf_csv_path) + + aggregation_wrapper = CustomAggregationWrapper(aggregation_function) + + overrides = { + 'aggregator.settings.rounds_to_train': rounds_to_train, + 'aggregator.settings.db_store_rounds': db_store_rounds, + 'tasks.train.aggregation_type': aggregation_wrapper, + 'task_runner.settings.device': device, + } + + + # Update the plan if necessary + plan = fx.update_plan(overrides) + + if not include_validation_with_hausdorff: + plan.config['task_runner']['settings']['fets_config_dict']['metrics'] = ['dice','dice_per_label'] + + # Overwrite collaborator names + plan.authorized_cols = collaborator_names + # overwrite datapath values with the collaborator name itself + for col in collaborator_names: + plan.cols_data_paths[col] = col + + # get the data loaders for each collaborator + collaborator_data_loaders = {col: copy(plan).get_data_loader(col) for col in collaborator_names} + + transformed_csv_dict = extract_csv_partitions(os.path.join(work, 'gandlf_paths.csv')) + # get the task runner, passing the first data loader + for col in collaborator_data_loaders: + #Insert logic to serialize train / val CSVs here + transformed_csv_dict[col]['train'].to_csv(os.path.join(work, 'seg_test_train.csv')) + transformed_csv_dict[col]['val'].to_csv(os.path.join(work, 'seg_test_val.csv')) + task_runner = copy(plan).get_task_runner(collaborator_data_loaders[col]) + + if use_pretrained_model: + print('Loading pretrained model...') + if device == 'cpu': + checkpoint = torch.load(f'{root}/pretrained_model/resunet_pretrained.pth',map_location=torch.device('cpu')) + task_runner.model.load_state_dict(checkpoint['model_state_dict']) + task_runner.optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + else: + checkpoint = torch.load(f'{root}/pretrained_model/resunet_pretrained.pth') + task_runner.model.load_state_dict(checkpoint['model_state_dict']) + task_runner.optimizer.load_state_dict(checkpoint['optimizer_state_dict']) + + tensor_pipe = plan.get_tensor_pipe() + + # Initialize model weights + init_state_path = plan.config['aggregator']['settings']['init_state_path'] + tensor_dict, _ = split_tensor_dict_for_holdouts(logger, task_runner.get_tensor_dict(False)) + + model_snap = utils.construct_model_proto(tensor_dict=tensor_dict, + round_number=0, + tensor_pipe=tensor_pipe) + + utils.dump_proto(model_proto=model_snap, fpath=init_state_path) + + # get the aggregator, now that we have the initial weights file set up + logger.info('Creating aggregator...') + aggregator = plan.get_aggregator() + # manually override the aggregator UUID (for checkpoint resume when rounds change) + aggregator.uuid = 'aggregator' + aggregator._load_initial_tensors() + + # create our collaborators + logger.info('Creating collaborators...') + collaborators = {col: copy(plan).get_collaborator(col, task_runner=task_runner, client=aggregator) for col in collaborator_names} + + collaborator_time_stats = gen_collaborator_time_stats(plan.authorized_cols) + + collaborators_chosen_each_round = {} + collaborator_times_per_round = {} + + logger.info('Starting experiment') + + total_simulated_time = 0 + best_dice = -1.0 + best_dice_over_time_auc = 0 + + # results dataframe data + experiment_results = { + 'round':[], + 'time': [], + 'convergence_score': [], + 'round_dice': [], + 'dice_label_0': [], + 'dice_label_1': [], + 'dice_label_2': [], + 'dice_label_4': [], + } + if include_validation_with_hausdorff: + experiment_results.update({ + 'hausdorff95_label_0': [], + 'hausdorff95_label_1': [], + 'hausdorff95_label_2': [], + 'hausdorff95_label_4': [], + }) + + + if restore_from_checkpoint_folder is None: + checkpoint_folder = setup_checkpoint_folder() + logger.info(f'\nCreated experiment folder {checkpoint_folder}...') + starting_round_num = 0 + else: + if not Path(f'checkpoint/{restore_from_checkpoint_folder}').exists(): + logger.warning(f'Could not find provided checkpoint folder: {restore_from_checkpoint_folder}. Exiting...') + exit(1) + else: + logger.info(f'Attempting to load last completed round from {restore_from_checkpoint_folder}') + state = load_checkpoint(restore_from_checkpoint_folder) + checkpoint_folder = restore_from_checkpoint_folder + + [loaded_collaborator_names, starting_round_num, collaborator_time_stats, + total_simulated_time, best_dice, best_dice_over_time_auc, + collaborators_chosen_each_round, collaborator_times_per_round, + experiment_results, summary, agg_tensor_db] = state + + if loaded_collaborator_names != collaborator_names: + logger.error(f'Collaborator names found in checkpoint ({loaded_collaborator_names}) ' + f'do not match provided collaborators ({collaborator_names})') + exit(1) + + logger.info(f'Previous summary for round {starting_round_num}') + logger.info(summary) + + starting_round_num += 1 + aggregator.tensor_db.tensor_db = agg_tensor_db + aggregator.round_number = starting_round_num + + + for round_num in range(starting_round_num, rounds_to_train): + # pick collaborators to train for the round + training_collaborators = choose_training_collaborators(collaborator_names, + aggregator.tensor_db._iterate(), + round_num, + collaborators_chosen_each_round, + collaborator_times_per_round) + + logger.info('Collaborators chosen to train for round {}:\n\t{}'.format(round_num, training_collaborators)) + + # save the collaborators chosen this round + collaborators_chosen_each_round[round_num] = training_collaborators + + # get the hyper-parameters from the competitor + hparams = training_hyper_parameters_for_round(collaborator_names, + aggregator.tensor_db._iterate(), + round_num, + collaborators_chosen_each_round, + collaborator_times_per_round) + + learning_rate, epochs_per_round = hparams + + if (epochs_per_round is None): + logger.warning('Hyper-parameter function warning: function returned None for "epochs_per_round". Setting "epochs_per_round" to 1') + epochs_per_round = 1 + + hparam_message = "\n\tlearning rate: {}".format(learning_rate) + + hparam_message += "\n\tepochs_per_round: {}".format(epochs_per_round) + + logger.info("Hyper-parameters for round {}:{}".format(round_num, hparam_message)) + + # cache each tensor in the aggregator tensor_db + hparam_dict = {} + tk = TensorKey(tensor_name='learning_rate', + origin=aggregator.uuid, + round_number=round_num, + report=False, + tags=('hparam', 'model')) + hparam_dict[tk] = np.array(learning_rate) + tk = TensorKey(tensor_name='epochs_per_round', + origin=aggregator.uuid, + round_number=round_num, + report=False, + tags=('hparam', 'model')) + hparam_dict[tk] = np.array(epochs_per_round) + aggregator.tensor_db.cache_tensor(hparam_dict) + + # pre-compute the times for each collaborator + times_per_collaborator = compute_times_per_collaborator(collaborator_names, + training_collaborators, + epochs_per_round, + collaborator_data_loaders, + collaborator_time_stats, + round_num) + collaborator_times_per_round[round_num] = times_per_collaborator + + aggregator.assigner.set_training_collaborators(training_collaborators) + + # update the state in the aggregation wrapper + aggregation_wrapper.set_state_data_for_round(collaborators_chosen_each_round, collaborator_times_per_round) + + # turn the times list into a list of tuples and sort it + times_list = [(t, col) for col, t in times_per_collaborator.items()] + times_list = sorted(times_list) + + # now call each collaborator in order of time + # FIXME: this doesn't break up each task. We need this if we're doing straggler handling + for t, col in times_list: + # set the task_runner data loader + task_runner.data_loader = collaborator_data_loaders[col] + + # run the collaborator + collaborators[col].run_simulation() + + logger.info("Collaborator {} took simulated time: {} minutes".format(col, round(t / 60, 2))) + + # the round time is the max of the times_list + round_time = max([t for t, _ in times_list]) + total_simulated_time += round_time + + + # get the performace validation scores for the round + round_dice = get_metric('valid_dice', round_num, aggregator.tensor_db) + dice_label_0 = get_metric('valid_dice_per_label_0', round_num, aggregator.tensor_db) + dice_label_1 = get_metric('valid_dice_per_label_1', round_num, aggregator.tensor_db) + dice_label_2 = get_metric('valid_dice_per_label_2', round_num, aggregator.tensor_db) + dice_label_4 = get_metric('valid_dice_per_label_4', round_num, aggregator.tensor_db) + if include_validation_with_hausdorff: + hausdorff95_label_0 = get_metric('valid_hd95_per_label_0', round_num, aggregator.tensor_db) + hausdorff95_label_1 = get_metric('valid_hd95_per_label_1', round_num, aggregator.tensor_db) + hausdorff95_label_2 = get_metric('valid_hd95_per_label_2', round_num, aggregator.tensor_db) + hausdorff95_label_4 = get_metric('valid_hd95_per_label_4', round_num, aggregator.tensor_db) + + # update best score + if best_dice < round_dice: + best_dice = round_dice + # Set the weights for the final model + if round_num == 0: + # here the initial model was validated (temp model does not exist) + logger.info(f'Skipping best model saving to disk as it is a random initialization.') + elif not os.path.exists(f'checkpoint/{checkpoint_folder}/temp_model.pkl'): + raise ValueError(f'Expected temporary model at: checkpoint/{checkpoint_folder}/temp_model.pkl to exist but it was not found.') + else: + # here the temp model was the one validated + shutil.copyfile(src=f'checkpoint/{checkpoint_folder}/temp_model.pkl',dst=f'checkpoint/{checkpoint_folder}/best_model.pkl') + logger.info(f'Saved model with best average binary DICE: {best_dice} to ~/.local/workspace/checkpoint/{checkpoint_folder}/best_model.pkl') + + ## RUN VALIDATION ON INTERMEDIATE CONSENSUS MODEL + # set the task_runner data loader + # task_runner.data_loader = collaborator_data_loaders[col] + + ## CONVERGENCE METRIC COMPUTATION + # update the auc score + best_dice_over_time_auc += best_dice * round_time + + # project the auc score as remaining time * best dice + # this projection assumes that the current best score is carried forward for the entire week + projected_auc = (MAX_SIMULATION_TIME - total_simulated_time) * best_dice + best_dice_over_time_auc + projected_auc /= MAX_SIMULATION_TIME + + # End of round summary + summary = '"**** END OF ROUND {} SUMMARY *****"'.format(round_num) + summary += "\n\tSimulation Time: {} minutes".format(round(total_simulated_time / 60, 2)) + summary += "\n\t(Projected) Convergence Score: {}".format(projected_auc) + summary += "\n\tDICE Label 0: {}".format(dice_label_0) + summary += "\n\tDICE Label 1: {}".format(dice_label_1) + summary += "\n\tDICE Label 2: {}".format(dice_label_2) + summary += "\n\tDICE Label 4: {}".format(dice_label_4) + if include_validation_with_hausdorff: + summary += "\n\tHausdorff95 Label 0: {}".format(hausdorff95_label_0) + summary += "\n\tHausdorff95 Label 1: {}".format(hausdorff95_label_1) + summary += "\n\tHausdorff95 Label 2: {}".format(hausdorff95_label_2) + summary += "\n\tHausdorff95 Label 4: {}".format(hausdorff95_label_4) + + + experiment_results['round'].append(round_num) + experiment_results['time'].append(total_simulated_time) + experiment_results['convergence_score'].append(projected_auc) + experiment_results['round_dice'].append(round_dice) + experiment_results['dice_label_0'].append(dice_label_0) + experiment_results['dice_label_1'].append(dice_label_1) + experiment_results['dice_label_2'].append(dice_label_2) + experiment_results['dice_label_4'].append(dice_label_4) + if include_validation_with_hausdorff: + experiment_results['hausdorff95_label_0'].append(hausdorff95_label_0) + experiment_results['hausdorff95_label_1'].append(hausdorff95_label_1) + experiment_results['hausdorff95_label_2'].append(hausdorff95_label_2) + experiment_results['hausdorff95_label_4'].append(hausdorff95_label_4) + logger.info(summary) + + if save_checkpoints: + logger.info(f'Saving checkpoint for round {round_num}') + logger.info(f'To resume from this checkpoint, set the restore_from_checkpoint_folder parameter to \'{checkpoint_folder}\'') + save_checkpoint(checkpoint_folder, aggregator, + collaborator_names, collaborators, + round_num, collaborator_time_stats, + total_simulated_time, best_dice, + best_dice_over_time_auc, + collaborators_chosen_each_round, + collaborator_times_per_round, + experiment_results, + summary) + + # if the total_simulated_time has exceeded the maximum time, we break + # in practice, this means that the previous round's model is the last model scored, + # so a long final round should not actually benefit the competitor, since that final + # model is never globally validated + if total_simulated_time > MAX_SIMULATION_TIME: + logger.info("Simulation time exceeded. Ending Experiment") + break + + # save the most recent aggregated model in native format to be copied over as best when appropriate + # (note this model has not been validated by the collaborators yet) + task_runner.rebuild_model(round_num, aggregator.last_tensor_dict, validation=True) + task_runner.save_native(f'checkpoint/{checkpoint_folder}/temp_model.pkl') + + + + return pd.DataFrame.from_dict(experiment_results), checkpoint_folder diff --git a/Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py b/Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py new file mode 100644 index 0000000..cafad78 --- /dev/null +++ b/Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py @@ -0,0 +1,214 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 + +# Contributing Authors (alphabetical): +# Brandon Edwards (Intel) +# Patrick Foley (Intel) +# Micah Sheller (Intel) + +import os + +import numpy as np +import pandas as pd + +from fets.data.base_utils import get_appropriate_file_paths_from_subject_dir + + +# some hard-coded keys +# feature stack order determines order of feature stack modes +# (so must be consistent across datasets used on a given model) +# dependency here with mode naming convention used in get_appropriate_file_paths_from_subject_dir +feature_modes = ['T1', 'T2', 'FLAIR', 'T1CE'] +label_tag = 'Label' + +# using numerical header names +numeric_header_names = {'T1': 1, + 'T2': 2, + 'FLAIR': 3, + 'T1CE': 4, + 'Label': 5} + +# used to map from numbers back to keys +numeric_header_name_to_key = {value: key for key, value in numeric_header_names.items()} + +# column names for dataframe used to create csv + +# 0 is for the subject name, 1-4 for modes and 5 for label (as above) +train_val_headers = [0, 1, 2, 3, 4, 5] +val_headers = [0, 1, 2, 3, 4] + +# hard coded samples used to train the FeTS2022 initial model +# and therefore best to keep out of split insitution validation +# set +init_train = ['FeTS2022_00159','FeTS2022_00172','FeTS2022_00187','FeTS2022_00199','FeTS2022_00211','FeTS2022_00221', \ + 'FeTS2022_00235','FeTS2022_00243','FeTS2022_00258','FeTS2022_00269','FeTS2022_00282','FeTS2022_00291', \ + 'FeTS2022_00300','FeTS2022_00311','FeTS2022_00321','FeTS2022_00332','FeTS2022_00344','FeTS2022_00353', \ + 'FeTS2022_00370','FeTS2022_00380','FeTS2022_00391','FeTS2022_00403','FeTS2022_00413','FeTS2022_00425', \ + 'FeTS2022_00440','FeTS2022_01000','FeTS2022_01038','FeTS2022_01046','FeTS2022_01054','FeTS2022_01062', \ + 'FeTS2022_01070','FeTS2022_01078','FeTS2022_01086','FeTS2022_01094','FeTS2022_01102','FeTS2022_01110', \ + 'FeTS2022_01118','FeTS2022_01126','FeTS2022_01134','FeTS2022_01205','FeTS2022_01213','FeTS2022_01221', \ + 'FeTS2022_01229','FeTS2022_01237','FeTS2022_01245','FeTS2022_01253','FeTS2022_01261','FeTS2022_01269', \ + 'FeTS2022_01277','FeTS2022_01293','FeTS2022_01307','FeTS2022_01315','FeTS2022_01323','FeTS2022_01331', \ + 'FeTS2022_01339','FeTS2022_01347','FeTS2022_01355','FeTS2022_01363','FeTS2022_01371','FeTS2022_01379', \ + 'FeTS2022_01387','FeTS2022_01395','FeTS2022_01403'] + + +def train_val_split(subdirs, percent_train, shuffle=True): + + if percent_train < 0 or percent_train >=1: + raise ValueError('Percent train must be >= 0 and < 1.') + + # record original length of subdirs + n_subdirs = len(subdirs) + if n_subdirs == 0: + raise ValueError('An empty list was provided to split.') + + train_subdirs = [subdir for subdir in subdirs if subdir in init_train] + # limit subdirs to those that do not lie in init_train + subdirs = [subdir for subdir in subdirs if subdir not in init_train] + + assert len(subdirs) + len(train_subdirs) == n_subdirs + + if shuffle: + np.random.shuffle(subdirs) + + cutpoint = int(n_subdirs * percent_train) - len(train_subdirs) + + train_subdirs = train_subdirs + subdirs[:cutpoint] + val_subdirs = subdirs[cutpoint:] + + if shuffle: + np.random.shuffle(train_subdirs) + + return train_subdirs, val_subdirs + + +def paths_dict_to_dataframe(paths_dict, train_val_headers, numeric_header_name_to_key): + + # intitialize columns + columns = {header: [] for header in train_val_headers} + columns['TrainOrVal'] = [] + columns['Partition_ID'] = [] + + for inst_name, inst_paths_dict in paths_dict.items(): + for usage in ['train', 'val']: + for key_to_fpath in inst_paths_dict[usage]: + columns['Partition_ID'].append(inst_name) + columns['TrainOrVal'].append(usage) + for header in train_val_headers: + if header == 0: + # grabbing the the data subfolder name as the subject id + columns[header].append(key_to_fpath['Subject_ID']) + else: + columns[header].append(key_to_fpath[numeric_header_name_to_key[header]]) + + return pd.DataFrame(columns, dtype=str) + + +def construct_fedsim_csv(pardir, + split_subdirs_path, + percent_train, + federated_simulation_train_val_csv_path, + training_and_validation=True): + + # read in the csv defining the subdirs per institution + split_subdirs = pd.read_csv(split_subdirs_path, dtype=str) + + if not set(['Partition_ID', 'Subject_ID']).issubset(set(split_subdirs.columns)): + raise ValueError("The provided csv at {} must at minimum contain the columns 'Partition_ID' and 'Subject_ID', but the columns are: {}".format(split_subdirs_path, list(split_subdirs.columns))) + + # sanity check that all subdirs provided in the dataframe are unique + if not split_subdirs['Subject_ID'].is_unique: + raise ValueError("Repeated references to the same data subdir were found in the 'Subject_ID' column of {}".format(split_subdirs_path)) + + train_val_specified = ('TrainOrVal' in split_subdirs.columns) + if train_val_specified: + print("Inferring train/val split using 'TrainOrVal' column of split_subdirs csv") + else: + print("No 'TrainOrVal' column found in split_subdirs csv, so performing automated split using percent_train of {}".format(percent_train)) + + + inst_names = list(split_subdirs['Partition_ID'].unique()) + + paths_dict = {inst_name: {'train': [], 'val': []} for inst_name in inst_names} + for inst_name in inst_names: + + if train_val_specified: + train_subdirs = list(split_subdirs[(split_subdirs['Partition_ID']==inst_name) & (split_subdirs['TrainOrVal']=='train')]['Subject_ID']) + val_subdirs = list(split_subdirs[(split_subdirs['Partition_ID']==inst_name) & (split_subdirs['TrainOrVal']=='val')]['Subject_ID']) + if len(train_subdirs) == 0: + raise ValueError("Train/val split specified in {} for insitution {} indicates an empty training set.".format(split_subdirs_path, inst_name)) + if len(val_subdirs) == 0: + raise ValueError("Train/val split specified in {} for insitution {} indicates an empty val set.".format(split_subdirs_path, inst_name)) + else: + subdirs = list(split_subdirs[split_subdirs['Partition_ID']==inst_name]['Subject_ID']) + train_subdirs, val_subdirs = train_val_split(subdirs=subdirs, percent_train=percent_train) + + for subdir in train_subdirs: + inner_dict = get_appropriate_file_paths_from_subject_dir(os.path.join(pardir, subdir), include_labels=True) + inner_dict['Subject_ID'] = subdir + paths_dict[inst_name]['train'].append(inner_dict) + + for subdir in val_subdirs: + inner_dict = get_appropriate_file_paths_from_subject_dir(os.path.join(pardir, subdir), include_labels=training_and_validation) + inner_dict['Subject_ID'] = subdir + paths_dict[inst_name]['val'].append(inner_dict) + + # now construct the dataframe and save it as a csv + if training_and_validation: + df = paths_dict_to_dataframe(paths_dict=paths_dict, + train_val_headers=train_val_headers, + numeric_header_name_to_key=numeric_header_name_to_key) + else: + df = construct_validation_dataframe(paths_dict=paths_dict, + val_headers=val_headers, + numeric_header_name_to_key=numeric_header_name_to_key) + return df + + df.to_csv(federated_simulation_train_val_csv_path, index=False) + return list(sorted(df.Partition_ID.unique())) + +def construct_validation_dataframe(paths_dict, val_headers, numeric_header_name_to_key): + + # intitialize columns + columns = {str(header): [] for header in val_headers} + columns['TrainOrVal'] = [] + columns['Partition_ID'] = [] + + for inst_name, inst_paths_dict in paths_dict.items(): + for usage in ['train', 'val']: + for key_to_fpath in inst_paths_dict[usage]: + columns['Partition_ID'].append(inst_name) + columns['TrainOrVal'].append(usage) + for header in val_headers: + if header == 0: + # grabbing the the data subfolder name as the subject id + columns[str(header)].append(key_to_fpath['Subject_ID']) + else: + columns[str(header)].append(key_to_fpath[numeric_header_name_to_key[header]]) + + df = pd.DataFrame(columns, dtype=str) + df = df.drop(columns=['TrainOrVal','Partition_ID']) + df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', + '2': 'Channel_1', '3': 'Channel_2', + '4': 'Channel_3'}) + return df + + + +def extract_csv_partitions(csv_path): + df = pd.read_csv(csv_path) + df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', + '2': 'Channel_1', '3': 'Channel_2', + '4': 'Channel_3', '5': 'Label'}) + cols = df['Partition_ID'].unique() + transformed_csv_dict = {} + + for col in cols: + transformed_csv_dict[str(col)] = {} + transformed_csv_dict[str(col)]['train'] = \ + df[(df['Partition_ID'] == col) & (df['TrainOrVal'] == 'train')].drop(columns=['TrainOrVal','Partition_ID']) + transformed_csv_dict[str(col)]['val'] = \ + df[(df['Partition_ID'] == col) & (df['TrainOrVal'] == 'val')].drop(columns=['TrainOrVal','Partition_ID']) + + return transformed_csv_dict + diff --git a/Task_1/build/lib/fets_challenge/inference.py b/Task_1/build/lib/fets_challenge/inference.py new file mode 100644 index 0000000..13f0680 --- /dev/null +++ b/Task_1/build/lib/fets_challenge/inference.py @@ -0,0 +1,251 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 + +# Contributing Authors (alphabetical): +# Brandon Edwards (Intel), Patrick Foley (Intel), Micah Sheller (Intel) + +import os +from copy import copy +from logging import getLogger +from pathlib import Path + +import numpy as np +import SimpleITK as sitk + +import torch, torchio + +import openfl.native as fx +from .gandlf_csv_adapter import construct_fedsim_csv + +logger = getLogger(__name__) + +# some hard coded variables +channel_keys = ['1', '2', '3', '4'] +class_label_map = {0:0, 1:1, 2:2, 4:4} +class_list = list(np.sort(list(class_label_map.values()))) + +def nan_check(tensor, tensor_description): + tensor = tensor.cpu() + if torch.any(torch.isnan(tensor)): + raise ValueError("A " + tensor_description + " was found to have nan values.") + + +def binarize(array, threshold=0.5): + """ + Get binarized output using threshold. + """ + + if (np.amax(array) > 1.0) or (np.amin(array) < 0.0): + raise ValueError('Voxel value fed to lambda in converting to original labels was out of range.') + + # obtain binarized output + binarized = array.copy() + zero_mask = (binarized <= threshold) + binarized[zero_mask] = 0.0 + binarized[~zero_mask] = 1.0 + + return binarized + + +def get_binarized_and_belief(array, threshold=0.5): + + """ + Get binarized output using threshold and report the belief values for each of the + channels along the last axis. Belief value is a list of indices along the last axis, and is + determined by the order of how close (closest first) each binarization is from its original in this last axis + so belief should have the same shape as arrray. + Assumptions: + - array is float valued in the range [0.0, 1.0] + """ + + # check assumption above + if (np.amax(array) > 1.0) or (np.amin(array) < 0.0): + raise ValueError('Voxel value fed to lambda in converting to original labels was out of range.') + + # obtain binarized output + binarized = binarize(array=array, threshold=threshold) + + # we will sort from least to greatest, so least suspicion is what we will believe + raw_suspicion = np.absolute(array - binarized) + + belief = np.argsort(raw_suspicion, axis=-1) + + return binarized, belief + +def generate_validation_csv(data_path, validation_csv_filename, working_dir): + """ + Create the validation CSV to be consumed by the FeTSChallengeTaskRunner + """ + validation_csv_path = os.path.join(working_dir, validation_csv_filename) + validation_csv_dict = construct_fedsim_csv(data_path, + validation_csv_path, + 0.0, + 'placeholder', + training_and_validation=False) + validation_csv_dict.to_csv(os.path.join(working_dir, 'validation_paths.csv'),index=False) + +def replace_initializations(done_replacing, array, mask, replacement_value, initialization_value): + """ + Replace in array[mask] intitialization values with replacement value, + ensuring that the locations to replace all held initialization values + """ + + # sanity check + if np.any(mask) and done_replacing: + raise ValueError('Being given locations to replace and yet told that we are done replacing.') + + # check that the mask and array have the same shape + if array.shape != mask.shape: + raise ValueError('Attempting to replace using a mask shape: {} not equal to the array shape: {}'.format(mask.shape, array.shape)) + + # check that the mask only points to locations with initialized values + if np.any(array[mask] != initialization_value): + raise ValueError('Attempting to overwrite a non-initialization value.') + + array[mask] = replacement_value + + done_replacing = np.all(array!=initialization_value) + + return array, done_replacing + + +def check_subarray(array1, array2): + """ + Checks to see where array2 is a subarray of array1. + Assumptions: + - array2 has one axis and is equal in length to the last axis of array1 + """ + + # check assumption + if (len(array2.shape) != 1) or (array2.shape[0] != array1.shape[-1]): + raise ValueError('Attempting to check for subarray equality when shape assumption does not hold.') + + return np.all(array1==array2, axis=-1) + + +def convert_to_original_labels(array, threshold=0.5, initialization_value=999): + """ + array has float output in the range [0.0, 1.0]. + Last three channels are expected to correspond to ET, TC, and WT respecively. + + """ + + binarized, belief = get_binarized_and_belief(array=array, threshold=threshold) + + #sanity check + if binarized.shape != belief.shape: + raise ValueError('Sanity check did not pass.') + + # initialize with a crazy label we will be sure is gone in the end + slice_all_but_last_channel = tuple([slice(None) for _ in array.shape[:-1]] + [0]) + original_labels = initialization_value * np.ones_like(array[slice_all_but_last_channel]) + + # the outer keys correspond to the binarized values + # the inner keys correspond to the order of indices comingn from argsort(ascending) on suspicion, i.e. + # how far the binarized sigmoid outputs were from the original sigmoid outputs + # for example, (2, 1, 0) means the suspicion from least to greatest was: 'WT', 'TC', 'ET' + # (recall that the order of the last three channels is expected to be: 'ET', 'TC', and 'WT') + mapper = {(0, 0, 0): 0, + (1, 1, 1): 4, + (0, 1, 1): 1, + (0, 0, 1): 2, + (0, 1, 0): {(2, 0, 1): 0, + (2, 1, 0): 0, + (1, 0, 2): 1, + (1, 2, 0): 1, + (0, 2, 1): 0, + (0, 1, 2): 1}, + (1, 1, 0): {(2, 0, 1): 0, + (2, 1, 0): 0, + (1, 0, 2): 4, + (1, 2, 0): 4, + (0, 2, 1): 4, + (0, 1, 2): 4}, + (1, 0, 1): {(2, 0, 1): 4, + (2, 1, 0): 2, + (1, 0, 2): 2, + (1, 2, 0): 2, + (0, 2, 1): 4, + (0, 1, 2): 4}, + (1, 0, 0): {(2, 0, 1): 0, + (2, 1, 0): 0, + (1, 0, 2): 0, + (1, 2, 0): 0, + (0, 2, 1): 4, + (0, 1, 2): 4}} + + + + done_replacing = False + + for binary_key, inner in mapper.items(): + mask1 = check_subarray(array1=binarized, array2=np.array(binary_key)) + if isinstance(inner, int): + original_labels, done_replacing = replace_initializations(done_replacing=done_replacing, + array=original_labels, + mask=mask1, + replacement_value=inner, + initialization_value=initialization_value) + else: + for inner_key, inner_value in inner.items(): + mask2 = np.logical_and(mask1, check_subarray(array1=belief, array2=np.array(inner_key))) + original_labels, done_replacing = replace_initializations(done_replacing=done_replacing, + array=original_labels, + mask=mask2, + replacement_value=inner_value, + initialization_value=initialization_value) + + if not done_replacing: + raise ValueError('About to return so should have been done replacing but told otherwise.') + + return original_labels.astype(np.uint8) + + +def model_outputs_to_disc(data_path, + validation_csv, + output_path, + native_model_path, + outputtag='', + device='cpu'): + + fx.init('fets_challenge_workspace') + + from sys import path, exit + + file = Path(__file__).resolve() + root = file.parent.resolve() # interface root, containing command modules + work = Path.cwd().resolve() + + path.append(str(root)) + path.insert(0, str(work)) + + generate_validation_csv(data_path,validation_csv, working_dir=work) + + overrides = { + 'task_runner.settings.device': device, + 'task_runner.settings.val_csv': 'validation_paths.csv', + 'task_runner.settings.train_csv': None, + } + + # Update the plan if necessary + plan = fx.update_plan(overrides) + plan.config['task_runner']['settings']['fets_config_dict']['save_output'] = True + plan.config['task_runner']['settings']['fets_config_dict']['output_dir'] = output_path + + # overwrite datapath value for a single 'InferenceCol' collaborator + plan.cols_data_paths['InferenceCol'] = data_path + + # get the inference data loader + data_loader = copy(plan).get_data_loader('InferenceCol') + + # get the task runner, passing the data loader + task_runner = copy(plan).get_task_runner(data_loader) + + # Populate model weights + device = torch.device(device) + task_runner.load_native(filepath=native_model_path, map_location=device) + task_runner.opt_treatment = 'RESET' + + logger.info('Starting inference using data from {}\n'.format(data_path)) + + task_runner.inference('aggregator',-1,task_runner.get_tensor_dict(),apply='global') + logger.info(f"\nFinished generating predictions to output folder {output_path}") diff --git a/Task_1/build/lib/fets_challenge/spec_sens_code.py b/Task_1/build/lib/fets_challenge/spec_sens_code.py new file mode 100644 index 0000000..50d35b9 --- /dev/null +++ b/Task_1/build/lib/fets_challenge/spec_sens_code.py @@ -0,0 +1,113 @@ +import numpy as np + +def check_shapes_same(output, target): + if output.shape != target.shape: + raise ValueError('Shapes of output {} and target {} do not match.'.format(output.shape, target.shape)) + + +def check_classes_enumerated_along_correct_axis(array, axis, num_classes): + if array.shape[axis] != num_classes: + raise ValueError('The idx={} channel of array should enumerate classes, but its shape is {} and there are {} classes.'.format(axis, array.shape, num_classes)) + + +def check_is_binary_single(array): + unique_values = np.unique(array) + if not set(unique_values).issubset(set([1.0, 0.0])): + raise ValueError('The provided array is not binary as unique values are: {}'.format(unique_values)) + +def apply_threshold(array, threshold=0.5): + + over_threshold = array >= threshold + + bin_tensor = np.zeros_like(array) + bin_tensor[over_threshold] = 1 + + return bin_tensor + + +def binarize_output(output, class_list, modality, threshold=0.5, class_axis=1): + if class_list == ['4', '1||4', '1||2||4']: + check_classes_enumerated_along_correct_axis(array=output, axis=class_axis, num_classes=len(class_list)) + + slices = [slice(None) for _ in output.shape] + + # select appropriate channel for modality, and convert floats to binary using threshold + if modality == 'ET': + slices[class_axis] = 0 + binarized_output = apply_threshold(output[tuple(slices)], threshold=threshold) + elif modality == 'TC': + slices[class_axis] = 1 + binarized_output = apply_threshold(output[tuple(slices)], threshold=threshold) + elif modality == 'WT': + slices[class_axis] = 2 + binarized_output = apply_threshold(output[tuple(slices)], threshold=threshold) + else: + raise ValueError('Modality {} is not currently supported.'.format(modality)) + + else: + raise ValueError("Class list {} is not currently supported.".format(class_list)) + + check_is_binary_single(binarized_output) + + return binarized_output + + +def brats_labels(output, + target, + class_list= ['4', '1||4', '1||2||4'], + binarized=True, + **kwargs): + # take output and target and create: (output_, lable_) + # for tasks in ['enhancing', 'core', 'whole'] + # these can be binary (per-voxel) decisions (if binarized==True) or float valued + if binarized: + output_enhancing = binarize_output(output=output, + class_list=class_list, + modality='ET') + + output_core = binarize_output(output=output, + class_list=class_list, + modality='TC') + + output_whole = binarize_output(output=output, + class_list=class_list, + modality='WT') + + # We detect specific use_cases here, and force a change in the code when another is wanted. + # In all cases, we rely on the order of class_list !!! + if list(class_list) == ['4', '1||4', '1||2||4']: + # In this case we track only enhancing tumor, tumor core, and whole tumor (no background class). + + if not binarized: + + # enhancing signal is channel 0 because of known class_list with fused labels + output_enhancing = output[:,0,:,:,:] + + # core signal is channel 1 because of known class_list with fused labels + output_core = output[:,1,:,:,:] + + # whole signal is channel 2 because of known class_list with fused labels + output_whole = output[:,2,:,:,:] + + + # enhancing signal is channel 0 because of known class_list with fused labels + target_enhancing = target[:,0,:,:,:] + + # core signal is channel 1 because of known class_list with fused labels + target_core = target[:,1,:,:,:] + + # whole signal is channel 2 because of known class_list with fused labels + target_whole = target[:,2,:,:,:] + else: + raise ValueError('No implementation for this model class_list: ', class_list) + + check_shapes_same(output=output_enhancing, target=target_enhancing) + check_shapes_same(output=output_core, target=target_core) + check_shapes_same(output=output_whole, target=target_whole) + + return {'outputs': {'ET': output_enhancing, + 'TC': output_core, + 'WT': output_whole}, + 'targets': {'ET': target_enhancing, + 'TC': target_core, + 'WT': target_whole}} diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv new file mode 100644 index 0000000..a5a8fb3 --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv @@ -0,0 +1,1252 @@ +Partition_ID,Subject_ID +1,FeTS2022_01341 +1,FeTS2022_01333 +1,FeTS2022_01077 +1,FeTS2022_01054 +1,FeTS2022_00285 +1,FeTS2022_01308 +1,FeTS2022_01363 +1,FeTS2022_01091 +1,FeTS2022_01273 +1,FeTS2022_01108 +1,FeTS2022_01255 +1,FeTS2022_01301 +1,FeTS2022_00219 +1,FeTS2022_00380 +1,FeTS2022_01349 +1,FeTS2022_00251 +1,FeTS2022_01276 +1,FeTS2022_01407 +1,FeTS2022_01344 +1,FeTS2022_01405 +1,FeTS2022_00218 +1,FeTS2022_01327 +1,FeTS2022_01252 +1,FeTS2022_01132 +1,FeTS2022_01036 +1,FeTS2022_01039 +1,FeTS2022_01366 +1,FeTS2022_00262 +1,FeTS2022_01279 +1,FeTS2022_00839 +1,FeTS2022_01322 +1,FeTS2022_00389 +1,FeTS2022_00390 +1,FeTS2022_00431 +1,FeTS2022_00222 +1,FeTS2022_00373 +1,FeTS2022_00288 +1,FeTS2022_00284 +1,FeTS2022_01088 +1,FeTS2022_00311 +1,FeTS2022_00387 +1,FeTS2022_00258 +1,FeTS2022_01389 +1,FeTS2022_00321 +1,FeTS2022_01249 +1,FeTS2022_01230 +1,FeTS2022_00836 +1,FeTS2022_00348 +1,FeTS2022_01205 +1,FeTS2022_00246 +1,FeTS2022_00314 +1,FeTS2022_01404 +1,FeTS2022_01102 +1,FeTS2022_00379 +1,FeTS2022_01395 +1,FeTS2022_00155 +1,FeTS2022_00170 +1,FeTS2022_01264 +1,FeTS2022_00837 +1,FeTS2022_01372 +1,FeTS2022_00341 +1,FeTS2022_01257 +1,FeTS2022_00329 +1,FeTS2022_00425 +1,FeTS2022_01350 +1,FeTS2022_01247 +1,FeTS2022_01234 +1,FeTS2022_00331 +1,FeTS2022_01128 +1,FeTS2022_01365 +1,FeTS2022_00221 +1,FeTS2022_00298 +1,FeTS2022_00227 +1,FeTS2022_01204 +1,FeTS2022_00204 +1,FeTS2022_01399 +1,FeTS2022_00377 +1,FeTS2022_00343 +1,FeTS2022_00280 +1,FeTS2022_01347 +1,FeTS2022_00210 +1,FeTS2022_01117 +1,FeTS2022_01275 +1,FeTS2022_01034 +1,FeTS2022_00162 +1,FeTS2022_01340 +1,FeTS2022_01212 +1,FeTS2022_01220 +1,FeTS2022_00419 +1,FeTS2022_00340 +1,FeTS2022_00296 +1,FeTS2022_01208 +1,FeTS2022_01064 +1,FeTS2022_00433 +1,FeTS2022_01050 +1,FeTS2022_01278 +1,FeTS2022_00293 +1,FeTS2022_00206 +1,FeTS2022_00356 +1,FeTS2022_00376 +1,FeTS2022_00316 +1,FeTS2022_00403 +1,FeTS2022_01348 +1,FeTS2022_00192 +1,FeTS2022_00313 +1,FeTS2022_01240 +1,FeTS2022_01222 +1,FeTS2022_00344 +1,FeTS2022_00332 +1,FeTS2022_00292 +1,FeTS2022_01392 +1,FeTS2022_00220 +1,FeTS2022_00378 +1,FeTS2022_01130 +1,FeTS2022_01106 +1,FeTS2022_01295 +1,FeTS2022_01409 +1,FeTS2022_01057 +1,FeTS2022_01068 +1,FeTS2022_00320 +1,FeTS2022_00346 +1,FeTS2022_01001 +1,FeTS2022_01207 +1,FeTS2022_01137 +1,FeTS2022_01318 +1,FeTS2022_00289 +1,FeTS2022_00157 +1,FeTS2022_01224 +1,FeTS2022_01367 +1,FeTS2022_01382 +1,FeTS2022_00309 +1,FeTS2022_01008 +1,FeTS2022_01059 +1,FeTS2022_01271 +1,FeTS2022_01110 +1,FeTS2022_01398 +1,FeTS2022_01119 +1,FeTS2022_00209 +1,FeTS2022_01274 +1,FeTS2022_01124 +1,FeTS2022_00241 +1,FeTS2022_00152 +1,FeTS2022_01131 +1,FeTS2022_01353 +1,FeTS2022_00352 +1,FeTS2022_01133 +1,FeTS2022_01084 +1,FeTS2022_00441 +1,FeTS2022_01268 +1,FeTS2022_01210 +1,FeTS2022_01375 +1,FeTS2022_00236 +1,FeTS2022_01218 +1,FeTS2022_01408 +1,FeTS2022_00274 +1,FeTS2022_01118 +1,FeTS2022_01213 +1,FeTS2022_01310 +1,FeTS2022_00194 +1,FeTS2022_00392 +1,FeTS2022_00334 +1,FeTS2022_00270 +1,FeTS2022_01359 +1,FeTS2022_01364 +1,FeTS2022_01336 +1,FeTS2022_01272 +1,FeTS2022_01090 +1,FeTS2022_00412 +1,FeTS2022_00228 +1,FeTS2022_00410 +1,FeTS2022_01239 +1,FeTS2022_01010 +1,FeTS2022_01394 +1,FeTS2022_00282 +1,FeTS2022_00237 +1,FeTS2022_01390 +1,FeTS2022_00382 +1,FeTS2022_00188 +1,FeTS2022_01211 +1,FeTS2022_01376 +1,FeTS2022_01243 +1,FeTS2022_01330 +1,FeTS2022_00253 +1,FeTS2022_01329 +1,FeTS2022_01306 +1,FeTS2022_01081 +1,FeTS2022_01369 +1,FeTS2022_01048 +1,FeTS2022_00328 +1,FeTS2022_00291 +1,FeTS2022_01049 +1,FeTS2022_01263 +1,FeTS2022_00317 +1,FeTS2022_00305 +1,FeTS2022_01265 +1,FeTS2022_00238 +1,FeTS2022_00423 +1,FeTS2022_01127 +1,FeTS2022_01379 +1,FeTS2022_01258 +1,FeTS2022_00299 +1,FeTS2022_01334 +1,FeTS2022_00350 +1,FeTS2022_01109 +1,FeTS2022_01352 +1,FeTS2022_01055 +1,FeTS2022_00167 +1,FeTS2022_01354 +1,FeTS2022_01231 +1,FeTS2022_00185 +1,FeTS2022_00306 +1,FeTS2022_00171 +1,FeTS2022_01261 +1,FeTS2022_01345 +1,FeTS2022_01397 +1,FeTS2022_00399 +1,FeTS2022_01319 +1,FeTS2022_01250 +1,FeTS2022_01097 +1,FeTS2022_01229 +1,FeTS2022_01393 +1,FeTS2022_00430 +1,FeTS2022_01203 +1,FeTS2022_01309 +1,FeTS2022_01342 +1,FeTS2022_01223 +1,FeTS2022_00239 +1,FeTS2022_00275 +1,FeTS2022_00406 +1,FeTS2022_01116 +1,FeTS2022_01380 +1,FeTS2022_00214 +1,FeTS2022_00195 +1,FeTS2022_01314 +1,FeTS2022_01113 +1,FeTS2022_00193 +1,FeTS2022_01259 +1,FeTS2022_00386 +1,FeTS2022_00834 +1,FeTS2022_01227 +1,FeTS2022_01277 +1,FeTS2022_00283 +1,FeTS2022_01099 +1,FeTS2022_00212 +1,FeTS2022_00165 +1,FeTS2022_01332 +1,FeTS2022_00364 +1,FeTS2022_01129 +1,FeTS2022_00301 +1,FeTS2022_01402 +1,FeTS2022_00199 +1,FeTS2022_01066 +1,FeTS2022_01107 +1,FeTS2022_01337 +1,FeTS2022_00230 +1,FeTS2022_01114 +1,FeTS2022_01294 +1,FeTS2022_01370 +1,FeTS2022_01269 +1,FeTS2022_01043 +1,FeTS2022_00359 +1,FeTS2022_01004 +1,FeTS2022_00286 +1,FeTS2022_01038 +1,FeTS2022_00370 +1,FeTS2022_00184 +1,FeTS2022_00360 +1,FeTS2022_01123 +1,FeTS2022_01237 +1,FeTS2022_01086 +1,FeTS2022_00231 +1,FeTS2022_00353 +1,FeTS2022_01254 +1,FeTS2022_01373 +1,FeTS2022_01100 +1,FeTS2022_01214 +1,FeTS2022_01242 +1,FeTS2022_01115 +1,FeTS2022_01331 +1,FeTS2022_00391 +1,FeTS2022_01312 +1,FeTS2022_00324 +1,FeTS2022_01080 +1,FeTS2022_00371 +1,FeTS2022_01396 +1,FeTS2022_00339 +1,FeTS2022_00260 +1,FeTS2022_00243 +1,FeTS2022_00233 +1,FeTS2022_01323 +1,FeTS2022_01248 +1,FeTS2022_00263 +1,FeTS2022_00347 +1,FeTS2022_01233 +1,FeTS2022_00367 +1,FeTS2022_01051 +1,FeTS2022_01126 +1,FeTS2022_01267 +1,FeTS2022_00383 +1,FeTS2022_01357 +1,FeTS2022_00413 +1,FeTS2022_01287 +1,FeTS2022_00349 +1,FeTS2022_01244 +1,FeTS2022_01041 +1,FeTS2022_01236 +1,FeTS2022_01245 +1,FeTS2022_01383 +1,FeTS2022_00196 +1,FeTS2022_01387 +1,FeTS2022_00297 +1,FeTS2022_01103 +1,FeTS2022_01098 +1,FeTS2022_01410 +1,FeTS2022_00440 +1,FeTS2022_01305 +1,FeTS2022_01304 +1,FeTS2022_01074 +1,FeTS2022_01046 +1,FeTS2022_01226 +1,FeTS2022_01253 +1,FeTS2022_01040 +1,FeTS2022_00269 +1,FeTS2022_00310 +1,FeTS2022_01056 +1,FeTS2022_01311 +1,FeTS2022_01338 +1,FeTS2022_00166 +1,FeTS2022_00327 +1,FeTS2022_00254 +1,FeTS2022_01000 +1,FeTS2022_00259 +1,FeTS2022_01134 +1,FeTS2022_01104 +1,FeTS2022_01232 +1,FeTS2022_01286 +1,FeTS2022_01052 +1,FeTS2022_01217 +1,FeTS2022_01238 +1,FeTS2022_00154 +1,FeTS2022_00395 +1,FeTS2022_00267 +1,FeTS2022_00366 +1,FeTS2022_00351 +1,FeTS2022_00159 +1,FeTS2022_00131 +1,FeTS2022_01246 +1,FeTS2022_01060 +1,FeTS2022_01087 +1,FeTS2022_00250 +1,FeTS2022_00234 +1,FeTS2022_01058 +1,FeTS2022_00235 +1,FeTS2022_00203 +1,FeTS2022_00414 +1,FeTS2022_01285 +1,FeTS2022_01071 +1,FeTS2022_01111 +1,FeTS2022_01377 +1,FeTS2022_01355 +1,FeTS2022_01384 +1,FeTS2022_01120 +1,FeTS2022_01082 +1,FeTS2022_01076 +1,FeTS2022_01072 +1,FeTS2022_00303 +1,FeTS2022_00436 +1,FeTS2022_01361 +1,FeTS2022_01073 +1,FeTS2022_00338 +1,FeTS2022_01351 +1,FeTS2022_00273 +1,FeTS2022_00186 +1,FeTS2022_00290 +1,FeTS2022_01381 +1,FeTS2022_01083 +1,FeTS2022_00409 +1,FeTS2022_00281 +1,FeTS2022_00840 +1,FeTS2022_00407 +1,FeTS2022_01094 +1,FeTS2022_01328 +1,FeTS2022_01078 +1,FeTS2022_00312 +1,FeTS2022_01235 +1,FeTS2022_01288 +1,FeTS2022_01391 +1,FeTS2022_01215 +1,FeTS2022_00160 +1,FeTS2022_00421 +1,FeTS2022_01317 +1,FeTS2022_01216 +1,FeTS2022_00178 +1,FeTS2022_00838 +1,FeTS2022_01321 +1,FeTS2022_01037 +1,FeTS2022_00176 +1,FeTS2022_01293 +1,FeTS2022_01219 +1,FeTS2022_01260 +1,FeTS2022_01339 +1,FeTS2022_01325 +1,FeTS2022_00249 +1,FeTS2022_01241 +1,FeTS2022_00211 +1,FeTS2022_01105 +1,FeTS2022_01138 +1,FeTS2022_00261 +1,FeTS2022_01316 +1,FeTS2022_01315 +1,FeTS2022_01256 +1,FeTS2022_00191 +1,FeTS2022_01069 +1,FeTS2022_01062 +1,FeTS2022_01135 +1,FeTS2022_00207 +1,FeTS2022_00401 +1,FeTS2022_00172 +1,FeTS2022_01085 +1,FeTS2022_00247 +1,FeTS2022_01206 +1,FeTS2022_01356 +1,FeTS2022_00325 +1,FeTS2022_00429 +1,FeTS2022_01122 +1,FeTS2022_01374 +1,FeTS2022_00156 +1,FeTS2022_01075 +1,FeTS2022_01362 +1,FeTS2022_01251 +1,FeTS2022_00405 +1,FeTS2022_01047 +1,FeTS2022_00240 +1,FeTS2022_00336 +1,FeTS2022_01092 +1,FeTS2022_01403 +1,FeTS2022_01385 +1,FeTS2022_01096 +1,FeTS2022_00426 +1,FeTS2022_00201 +1,FeTS2022_01335 +1,FeTS2022_00404 +1,FeTS2022_00322 +1,FeTS2022_00294 +1,FeTS2022_01070 +1,FeTS2022_01225 +1,FeTS2022_01067 +1,FeTS2022_00375 +1,FeTS2022_00158 +1,FeTS2022_00177 +1,FeTS2022_00271 +1,FeTS2022_01388 +1,FeTS2022_01053 +1,FeTS2022_01042 +1,FeTS2022_01400 +1,FeTS2022_00183 +1,FeTS2022_01358 +1,FeTS2022_01266 +1,FeTS2022_01360 +1,FeTS2022_00304 +1,FeTS2022_01065 +1,FeTS2022_01093 +1,FeTS2022_00397 +1,FeTS2022_01262 +1,FeTS2022_00217 +1,FeTS2022_01401 +1,FeTS2022_01125 +1,FeTS2022_01406 +1,FeTS2022_01343 +1,FeTS2022_01346 +1,FeTS2022_01089 +1,FeTS2022_00216 +1,FeTS2022_01061 +1,FeTS2022_01299 +1,FeTS2022_00242 +1,FeTS2022_01112 +1,FeTS2022_00300 +1,FeTS2022_01280 +1,FeTS2022_00187 +1,FeTS2022_00318 +1,FeTS2022_01371 +1,FeTS2022_01378 +1,FeTS2022_00418 +1,FeTS2022_01121 +1,FeTS2022_01136 +1,FeTS2022_00266 +1,FeTS2022_01221 +1,FeTS2022_01307 +1,FeTS2022_01386 +1,FeTS2022_00432 +1,FeTS2022_01101 +1,FeTS2022_01228 +1,FeTS2022_01313 +1,FeTS2022_01209 +1,FeTS2022_00388 +1,FeTS2022_01270 +1,FeTS2022_01044 +1,FeTS2022_00417 +1,FeTS2022_01063 +1,FeTS2022_01368 +1,FeTS2022_00369 +1,FeTS2022_01095 +1,FeTS2022_00416 +1,FeTS2022_00400 +1,FeTS2022_01045 +1,FeTS2022_01202 +1,FeTS2022_01326 +1,FeTS2022_01079 +1,FeTS2022_00402 +1,FeTS2022_01320 +1,FeTS2022_01324 +2,FeTS2022_01412 +2,FeTS2022_01415 +2,FeTS2022_01411 +2,FeTS2022_01414 +2,FeTS2022_01413 +2,FeTS2022_01416 +3,FeTS2022_01439 +3,FeTS2022_01435 +3,FeTS2022_01434 +3,FeTS2022_01440 +3,FeTS2022_01431 +3,FeTS2022_01437 +3,FeTS2022_01436 +3,FeTS2022_01433 +3,FeTS2022_01438 +3,FeTS2022_01426 +3,FeTS2022_01427 +3,FeTS2022_01428 +3,FeTS2022_01429 +3,FeTS2022_01432 +3,FeTS2022_01430 +4,FeTS2022_01152 +4,FeTS2022_01178 +4,FeTS2022_01186 +4,FeTS2022_01184 +4,FeTS2022_01181 +4,FeTS2022_01187 +4,FeTS2022_01168 +4,FeTS2022_01196 +4,FeTS2022_01173 +4,FeTS2022_01176 +4,FeTS2022_01200 +4,FeTS2022_00565 +4,FeTS2022_01193 +4,FeTS2022_01174 +4,FeTS2022_01662 +4,FeTS2022_01660 +4,FeTS2022_01201 +4,FeTS2022_01167 +4,FeTS2022_01170 +4,FeTS2022_01179 +4,FeTS2022_01185 +4,FeTS2022_01197 +4,FeTS2022_01172 +4,FeTS2022_01189 +4,FeTS2022_00563 +4,FeTS2022_01180 +4,FeTS2022_01198 +4,FeTS2022_01183 +4,FeTS2022_01151 +4,FeTS2022_01195 +4,FeTS2022_01657 +4,FeTS2022_01194 +4,FeTS2022_01191 +4,FeTS2022_01169 +4,FeTS2022_01171 +4,FeTS2022_00561 +4,FeTS2022_01659 +4,FeTS2022_01661 +4,FeTS2022_01190 +4,FeTS2022_01188 +4,FeTS2022_01199 +4,FeTS2022_01658 +4,FeTS2022_01192 +4,FeTS2022_01175 +4,FeTS2022_01182 +4,FeTS2022_01537 +4,FeTS2022_01177 +5,FeTS2022_00102 +5,FeTS2022_00149 +5,FeTS2022_01290 +5,FeTS2022_00113 +5,FeTS2022_01009 +5,FeTS2022_01007 +5,FeTS2022_01002 +5,FeTS2022_00139 +5,FeTS2022_01292 +5,FeTS2022_00100 +5,FeTS2022_01289 +5,FeTS2022_01291 +5,FeTS2022_01005 +5,FeTS2022_01282 +5,FeTS2022_01003 +5,FeTS2022_00109 +5,FeTS2022_01283 +5,FeTS2022_00999 +5,FeTS2022_01281 +5,FeTS2022_01284 +5,FeTS2022_00151 +5,FeTS2022_00123 +6,FeTS2022_01451 +6,FeTS2022_01453 +6,FeTS2022_01452 +6,FeTS2022_00831 +6,FeTS2022_01448 +6,FeTS2022_01300 +6,FeTS2022_01443 +6,FeTS2022_00136 +6,FeTS2022_01454 +6,FeTS2022_00144 +6,FeTS2022_00121 +6,FeTS2022_01297 +6,FeTS2022_00133 +6,FeTS2022_01447 +6,FeTS2022_00142 +6,FeTS2022_01450 +6,FeTS2022_00120 +6,FeTS2022_01298 +6,FeTS2022_01449 +6,FeTS2022_01442 +6,FeTS2022_01446 +6,FeTS2022_01303 +6,FeTS2022_01296 +6,FeTS2022_00132 +6,FeTS2022_01441 +6,FeTS2022_01445 +6,FeTS2022_01302 +6,FeTS2022_00143 +6,FeTS2022_00105 +6,FeTS2022_01444 +6,FeTS2022_00147 +6,FeTS2022_01455 +6,FeTS2022_00146 +6,FeTS2022_00137 +7,FeTS2022_01459 +7,FeTS2022_01464 +7,FeTS2022_01458 +7,FeTS2022_01457 +7,FeTS2022_01461 +7,FeTS2022_01456 +7,FeTS2022_01460 +7,FeTS2022_01462 +7,FeTS2022_01466 +7,FeTS2022_01465 +7,FeTS2022_01463 +7,FeTS2022_01467 +8,FeTS2022_00140 +8,FeTS2022_01469 +8,FeTS2022_01468 +8,FeTS2022_01470 +8,FeTS2022_00104 +8,FeTS2022_00110 +8,FeTS2022_00112 +8,FeTS2022_00128 +9,FeTS2022_00134 +9,FeTS2022_00150 +9,FeTS2022_00116 +9,FeTS2022_01471 +10,FeTS2022_01472 +10,FeTS2022_00117 +10,FeTS2022_00130 +10,FeTS2022_00138 +10,FeTS2022_01473 +10,FeTS2022_00111 +10,FeTS2022_00124 +10,FeTS2022_00106 +11,FeTS2022_00122 +11,FeTS2022_00148 +11,FeTS2022_01474 +11,FeTS2022_00108 +11,FeTS2022_01144 +11,FeTS2022_00107 +11,FeTS2022_01140 +11,FeTS2022_01146 +11,FeTS2022_01145 +11,FeTS2022_01139 +11,FeTS2022_01141 +11,FeTS2022_01142 +11,FeTS2022_01143 +11,FeTS2022_01475 +12,FeTS2022_01482 +12,FeTS2022_01480 +12,FeTS2022_01485 +12,FeTS2022_01476 +12,FeTS2022_01481 +12,FeTS2022_01483 +12,FeTS2022_01486 +12,FeTS2022_01484 +12,FeTS2022_01479 +12,FeTS2022_01477 +12,FeTS2022_01478 +13,FeTS2022_01491 +13,FeTS2022_01500 +13,FeTS2022_01519 +13,FeTS2022_01516 +13,FeTS2022_01509 +13,FeTS2022_01520 +13,FeTS2022_01508 +13,FeTS2022_01503 +13,FeTS2022_01488 +13,FeTS2022_01492 +13,FeTS2022_01502 +13,FeTS2022_01493 +13,FeTS2022_01497 +13,FeTS2022_01499 +13,FeTS2022_01487 +13,FeTS2022_01505 +13,FeTS2022_01504 +13,FeTS2022_01490 +13,FeTS2022_01507 +13,FeTS2022_01510 +13,FeTS2022_01512 +13,FeTS2022_01514 +13,FeTS2022_01517 +13,FeTS2022_01501 +13,FeTS2022_01518 +13,FeTS2022_01506 +13,FeTS2022_01515 +13,FeTS2022_01511 +13,FeTS2022_01494 +13,FeTS2022_01489 +13,FeTS2022_01513 +13,FeTS2022_01496 +13,FeTS2022_01495 +13,FeTS2022_01521 +13,FeTS2022_01498 +14,FeTS2022_01522 +14,FeTS2022_01525 +14,FeTS2022_01526 +14,FeTS2022_01527 +14,FeTS2022_01524 +14,FeTS2022_01523 +15,FeTS2022_01530 +15,FeTS2022_01536 +15,FeTS2022_01535 +15,FeTS2022_01663 +15,FeTS2022_01534 +15,FeTS2022_01529 +15,FeTS2022_01531 +15,FeTS2022_01666 +15,FeTS2022_01665 +15,FeTS2022_01532 +15,FeTS2022_01664 +15,FeTS2022_01528 +15,FeTS2022_01533 +16,FeTS2022_00584 +16,FeTS2022_00567 +16,FeTS2022_00571 +16,FeTS2022_00582 +16,FeTS2022_00570 +16,FeTS2022_00594 +16,FeTS2022_00597 +16,FeTS2022_00596 +16,FeTS2022_00576 +16,FeTS2022_00572 +16,FeTS2022_00115 +16,FeTS2022_00593 +16,FeTS2022_00588 +16,FeTS2022_00598 +16,FeTS2022_00589 +16,FeTS2022_00574 +16,FeTS2022_00586 +16,FeTS2022_00579 +16,FeTS2022_00590 +16,FeTS2022_00599 +16,FeTS2022_00577 +16,FeTS2022_00575 +16,FeTS2022_00581 +16,FeTS2022_00591 +16,FeTS2022_00569 +16,FeTS2022_00587 +16,FeTS2022_00580 +16,FeTS2022_00583 +16,FeTS2022_00578 +16,FeTS2022_00568 +17,FeTS2022_01423 +17,FeTS2022_01420 +17,FeTS2022_01422 +17,FeTS2022_01417 +17,FeTS2022_01421 +17,FeTS2022_01424 +17,FeTS2022_01418 +17,FeTS2022_01425 +17,FeTS2022_01419 +18,FeTS2022_01628 +18,FeTS2022_01615 +18,FeTS2022_01035 +18,FeTS2022_00732 +18,FeTS2022_00753 +18,FeTS2022_01620 +18,FeTS2022_01637 +18,FeTS2022_01594 +18,FeTS2022_00530 +18,FeTS2022_00772 +18,FeTS2022_01580 +18,FeTS2022_00731 +18,FeTS2022_00540 +18,FeTS2022_00464 +18,FeTS2022_01622 +18,FeTS2022_01154 +18,FeTS2022_01559 +18,FeTS2022_00729 +18,FeTS2022_00708 +18,FeTS2022_00044 +18,FeTS2022_00705 +18,FeTS2022_00645 +18,FeTS2022_01640 +18,FeTS2022_00008 +18,FeTS2022_00746 +18,FeTS2022_01551 +18,FeTS2022_01610 +18,FeTS2022_00061 +18,FeTS2022_00642 +18,FeTS2022_00675 +18,FeTS2022_01651 +18,FeTS2022_00651 +18,FeTS2022_00626 +18,FeTS2022_00028 +18,FeTS2022_01557 +18,FeTS2022_01616 +18,FeTS2022_00684 +18,FeTS2022_01538 +18,FeTS2022_01647 +18,FeTS2022_00688 +18,FeTS2022_00737 +18,FeTS2022_00063 +18,FeTS2022_00758 +18,FeTS2022_01159 +18,FeTS2022_00615 +18,FeTS2022_00621 +18,FeTS2022_01543 +18,FeTS2022_01560 +18,FeTS2022_00058 +18,FeTS2022_00009 +18,FeTS2022_00544 +18,FeTS2022_01611 +18,FeTS2022_00485 +18,FeTS2022_00735 +18,FeTS2022_00659 +18,FeTS2022_00025 +18,FeTS2022_00550 +18,FeTS2022_01599 +18,FeTS2022_00636 +18,FeTS2022_01644 +18,FeTS2022_00716 +18,FeTS2022_00641 +18,FeTS2022_01624 +18,FeTS2022_00547 +18,FeTS2022_00046 +18,FeTS2022_00728 +18,FeTS2022_00045 +18,FeTS2022_00493 +18,FeTS2022_00089 +18,FeTS2022_00622 +18,FeTS2022_01643 +18,FeTS2022_00602 +18,FeTS2022_00035 +18,FeTS2022_01545 +18,FeTS2022_00014 +18,FeTS2022_01566 +18,FeTS2022_00066 +18,FeTS2022_01614 +18,FeTS2022_01591 +18,FeTS2022_00514 +18,FeTS2022_01588 +18,FeTS2022_00520 +18,FeTS2022_01556 +18,FeTS2022_00097 +18,FeTS2022_00555 +18,FeTS2022_00736 +18,FeTS2022_00639 +18,FeTS2022_00479 +18,FeTS2022_01550 +18,FeTS2022_01592 +18,FeTS2022_01626 +18,FeTS2022_00557 +18,FeTS2022_00496 +18,FeTS2022_00778 +18,FeTS2022_01561 +18,FeTS2022_00690 +18,FeTS2022_00750 +18,FeTS2022_01586 +18,FeTS2022_01549 +18,FeTS2022_01555 +18,FeTS2022_01612 +18,FeTS2022_01600 +18,FeTS2022_01629 +18,FeTS2022_01656 +18,FeTS2022_00500 +18,FeTS2022_00529 +18,FeTS2022_00628 +18,FeTS2022_00775 +18,FeTS2022_00523 +18,FeTS2022_00488 +18,FeTS2022_00518 +18,FeTS2022_00000 +18,FeTS2022_00020 +18,FeTS2022_01646 +18,FeTS2022_01638 +18,FeTS2022_00630 +18,FeTS2022_01590 +18,FeTS2022_01613 +18,FeTS2022_01571 +18,FeTS2022_00519 +18,FeTS2022_01617 +18,FeTS2022_01623 +18,FeTS2022_00691 +18,FeTS2022_01027 +18,FeTS2022_00704 +18,FeTS2022_00098 +18,FeTS2022_01558 +18,FeTS2022_00715 +18,FeTS2022_00757 +18,FeTS2022_00084 +18,FeTS2022_00692 +18,FeTS2022_00078 +18,FeTS2022_00747 +18,FeTS2022_01607 +18,FeTS2022_00751 +18,FeTS2022_00011 +18,FeTS2022_00610 +18,FeTS2022_00694 +18,FeTS2022_00026 +18,FeTS2022_00658 +18,FeTS2022_01544 +18,FeTS2022_01583 +18,FeTS2022_00680 +18,FeTS2022_01028 +18,FeTS2022_01636 +18,FeTS2022_00545 +18,FeTS2022_00072 +18,FeTS2022_00016 +18,FeTS2022_01548 +18,FeTS2022_00624 +18,FeTS2022_00676 +18,FeTS2022_00533 +18,FeTS2022_01574 +18,FeTS2022_01582 +18,FeTS2022_00085 +18,FeTS2022_00613 +18,FeTS2022_01593 +18,FeTS2022_00730 +18,FeTS2022_01585 +18,FeTS2022_00524 +18,FeTS2022_00081 +18,FeTS2022_00472 +18,FeTS2022_00478 +18,FeTS2022_00469 +18,FeTS2022_00682 +18,FeTS2022_00733 +18,FeTS2022_00723 +18,FeTS2022_00099 +18,FeTS2022_00744 +18,FeTS2022_00048 +18,FeTS2022_00480 +18,FeTS2022_00650 +18,FeTS2022_00601 +18,FeTS2022_00542 +18,FeTS2022_00667 +18,FeTS2022_00505 +18,FeTS2022_01539 +18,FeTS2022_00764 +18,FeTS2022_00506 +18,FeTS2022_01649 +18,FeTS2022_00032 +18,FeTS2022_00021 +18,FeTS2022_00685 +18,FeTS2022_00611 +18,FeTS2022_00511 +18,FeTS2022_01584 +18,FeTS2022_01635 +18,FeTS2022_00607 +18,FeTS2022_00071 +18,FeTS2022_00687 +18,FeTS2022_00767 +18,FeTS2022_00537 +18,FeTS2022_01630 +18,FeTS2022_00740 +18,FeTS2022_00525 +18,FeTS2022_00725 +18,FeTS2022_00502 +18,FeTS2022_01562 +18,FeTS2022_01577 +18,FeTS2022_01576 +18,FeTS2022_01595 +18,FeTS2022_00654 +18,FeTS2022_00090 +18,FeTS2022_01645 +18,FeTS2022_01564 +18,FeTS2022_01567 +18,FeTS2022_00703 +18,FeTS2022_00043 +18,FeTS2022_00003 +18,FeTS2022_00495 +18,FeTS2022_00017 +18,FeTS2022_00491 +18,FeTS2022_00054 +18,FeTS2022_00510 +18,FeTS2022_00618 +18,FeTS2022_00064 +18,FeTS2022_00024 +18,FeTS2022_00709 +18,FeTS2022_01653 +18,FeTS2022_01579 +18,FeTS2022_01572 +18,FeTS2022_01156 +18,FeTS2022_00707 +18,FeTS2022_01540 +18,FeTS2022_00056 +18,FeTS2022_00620 +18,FeTS2022_00470 +18,FeTS2022_00499 +18,FeTS2022_00640 +18,FeTS2022_00549 +18,FeTS2022_01601 +18,FeTS2022_00608 +18,FeTS2022_00727 +18,FeTS2022_00773 +18,FeTS2022_00504 +18,FeTS2022_01604 +18,FeTS2022_01158 +18,FeTS2022_00051 +18,FeTS2022_00768 +18,FeTS2022_01161 +18,FeTS2022_00765 +18,FeTS2022_00068 +18,FeTS2022_00551 +18,FeTS2022_01605 +18,FeTS2022_00674 +18,FeTS2022_01157 +18,FeTS2022_01631 +18,FeTS2022_00022 +18,FeTS2022_00777 +18,FeTS2022_01609 +18,FeTS2022_01633 +18,FeTS2022_01652 +18,FeTS2022_00759 +18,FeTS2022_01655 +18,FeTS2022_01639 +18,FeTS2022_01563 +18,FeTS2022_00661 +18,FeTS2022_00087 +18,FeTS2022_00030 +18,FeTS2022_00556 +18,FeTS2022_01597 +18,FeTS2022_00724 +18,FeTS2022_00096 +18,FeTS2022_00049 +18,FeTS2022_00683 +18,FeTS2022_00059 +18,FeTS2022_01596 +18,FeTS2022_00498 +18,FeTS2022_00543 +18,FeTS2022_01641 +18,FeTS2022_01542 +18,FeTS2022_00062 +18,FeTS2022_00005 +18,FeTS2022_00646 +18,FeTS2022_00088 +18,FeTS2022_00656 +18,FeTS2022_01589 +18,FeTS2022_01160 +18,FeTS2022_01547 +18,FeTS2022_01606 +18,FeTS2022_00631 +18,FeTS2022_00756 +18,FeTS2022_00619 +18,FeTS2022_00698 +18,FeTS2022_01541 +18,FeTS2022_00539 +18,FeTS2022_00053 +18,FeTS2022_01618 +18,FeTS2022_00693 +18,FeTS2022_00616 +18,FeTS2022_01642 +18,FeTS2022_01632 +18,FeTS2022_00718 +18,FeTS2022_00006 +18,FeTS2022_00466 +18,FeTS2022_01565 +18,FeTS2022_01621 +18,FeTS2022_00697 +18,FeTS2022_00689 +18,FeTS2022_00554 +18,FeTS2022_00638 +18,FeTS2022_00517 +18,FeTS2022_00019 +18,FeTS2022_01650 +18,FeTS2022_01602 +18,FeTS2022_01570 +18,FeTS2022_00655 +18,FeTS2022_00552 +18,FeTS2022_00706 +18,FeTS2022_01654 +18,FeTS2022_00481 +18,FeTS2022_00604 +18,FeTS2022_00612 +18,FeTS2022_00774 +18,FeTS2022_00625 +18,FeTS2022_00070 +18,FeTS2022_00649 +18,FeTS2022_00036 +18,FeTS2022_01546 +18,FeTS2022_00559 +18,FeTS2022_00018 +18,FeTS2022_00507 +18,FeTS2022_00760 +18,FeTS2022_01568 +18,FeTS2022_00094 +18,FeTS2022_00526 +18,FeTS2022_01575 +18,FeTS2022_00512 +18,FeTS2022_00033 +18,FeTS2022_01648 +18,FeTS2022_00052 +18,FeTS2022_01625 +18,FeTS2022_01573 +18,FeTS2022_00623 +18,FeTS2022_01153 +18,FeTS2022_00532 +18,FeTS2022_00516 +18,FeTS2022_00679 +18,FeTS2022_00468 +18,FeTS2022_00494 +18,FeTS2022_00483 +18,FeTS2022_01552 +18,FeTS2022_00606 +18,FeTS2022_00742 +18,FeTS2022_00677 +18,FeTS2022_00652 +18,FeTS2022_00074 +18,FeTS2022_00513 +18,FeTS2022_01581 +18,FeTS2022_00663 +18,FeTS2022_00734 +18,FeTS2022_01619 +18,FeTS2022_00668 +18,FeTS2022_00558 +18,FeTS2022_00002 +18,FeTS2022_01598 +18,FeTS2022_00477 +18,FeTS2022_01634 +18,FeTS2022_00501 +18,FeTS2022_01155 +18,FeTS2022_00077 +18,FeTS2022_01578 +18,FeTS2022_01569 +18,FeTS2022_01603 +18,FeTS2022_00538 +18,FeTS2022_00714 +18,FeTS2022_00031 +18,FeTS2022_01627 +18,FeTS2022_01553 +18,FeTS2022_00548 +18,FeTS2022_00739 +18,FeTS2022_00103 +18,FeTS2022_00528 +18,FeTS2022_01608 +18,FeTS2022_00095 +18,FeTS2022_00060 +18,FeTS2022_01554 +18,FeTS2022_00657 +18,FeTS2022_01587 +18,FeTS2022_00605 +18,FeTS2022_00686 +18,FeTS2022_00012 +19,FeTS2022_01166 +19,FeTS2022_01163 +19,FeTS2022_01165 +19,FeTS2022_01164 +20,FeTS2022_00444 +20,FeTS2022_01014 +20,FeTS2022_00442 +20,FeTS2022_01025 +20,FeTS2022_01024 +20,FeTS2022_00101 +20,FeTS2022_00453 +20,FeTS2022_01013 +20,FeTS2022_01011 +20,FeTS2022_00459 +20,FeTS2022_00457 +20,FeTS2022_01016 +20,FeTS2022_00448 +20,FeTS2022_01023 +20,FeTS2022_01017 +20,FeTS2022_00443 +20,FeTS2022_00455 +20,FeTS2022_00127 +20,FeTS2022_01012 +20,FeTS2022_01018 +20,FeTS2022_01022 +20,FeTS2022_00451 +20,FeTS2022_00445 +20,FeTS2022_00452 +20,FeTS2022_00454 +20,FeTS2022_01019 +20,FeTS2022_01021 +20,FeTS2022_01020 +20,FeTS2022_01026 +20,FeTS2022_00456 +20,FeTS2022_00446 +20,FeTS2022_00449 +20,FeTS2022_01015 +21,FeTS2022_00802 +21,FeTS2022_00788 +21,FeTS2022_00795 +21,FeTS2022_00820 +21,FeTS2022_00782 +21,FeTS2022_00800 +21,FeTS2022_00830 +21,FeTS2022_00824 +21,FeTS2022_00805 +21,FeTS2022_00796 +21,FeTS2022_00823 +21,FeTS2022_00828 +21,FeTS2022_00811 +21,FeTS2022_00789 +21,FeTS2022_00801 +21,FeTS2022_00780 +21,FeTS2022_00781 +21,FeTS2022_00814 +21,FeTS2022_00806 +21,FeTS2022_00810 +21,FeTS2022_00807 +21,FeTS2022_00818 +21,FeTS2022_00791 +21,FeTS2022_00787 +21,FeTS2022_00808 +21,FeTS2022_00809 +21,FeTS2022_00803 +21,FeTS2022_00816 +21,FeTS2022_00819 +21,FeTS2022_00793 +21,FeTS2022_00799 +21,FeTS2022_00797 +21,FeTS2022_00784 +21,FeTS2022_00804 +21,FeTS2022_00792 +22,FeTS2022_01031 +22,FeTS2022_01033 +22,FeTS2022_01030 +22,FeTS2022_00118 +22,FeTS2022_01029 +22,FeTS2022_00126 +22,FeTS2022_01032 +23,FeTS2022_01147 +23,FeTS2022_01149 +23,FeTS2022_01150 +23,FeTS2022_01148 +23,FeTS2022_01162 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv new file mode 100644 index 0000000..798f651 --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv @@ -0,0 +1,1252 @@ +Partition_ID,Subject_ID +1,FeTS2022_01341 +1,FeTS2022_01333 +1,FeTS2022_01077 +1,FeTS2022_01054 +1,FeTS2022_00285 +1,FeTS2022_01308 +1,FeTS2022_01363 +1,FeTS2022_01091 +1,FeTS2022_01273 +1,FeTS2022_01108 +1,FeTS2022_01255 +1,FeTS2022_01301 +1,FeTS2022_00219 +1,FeTS2022_00380 +1,FeTS2022_01349 +1,FeTS2022_00251 +1,FeTS2022_01276 +1,FeTS2022_01407 +1,FeTS2022_01344 +1,FeTS2022_01405 +1,FeTS2022_00218 +1,FeTS2022_01327 +1,FeTS2022_01252 +1,FeTS2022_01132 +1,FeTS2022_01036 +1,FeTS2022_01039 +1,FeTS2022_01366 +1,FeTS2022_00262 +1,FeTS2022_01279 +1,FeTS2022_00839 +1,FeTS2022_01322 +1,FeTS2022_00389 +1,FeTS2022_00390 +1,FeTS2022_00431 +1,FeTS2022_00222 +1,FeTS2022_00373 +1,FeTS2022_00288 +1,FeTS2022_00284 +1,FeTS2022_01088 +1,FeTS2022_00311 +1,FeTS2022_00387 +1,FeTS2022_00258 +1,FeTS2022_01389 +1,FeTS2022_00321 +1,FeTS2022_01249 +1,FeTS2022_01230 +1,FeTS2022_00836 +1,FeTS2022_00348 +1,FeTS2022_01205 +1,FeTS2022_00246 +1,FeTS2022_00314 +1,FeTS2022_01404 +1,FeTS2022_01102 +1,FeTS2022_00379 +1,FeTS2022_01395 +1,FeTS2022_00155 +1,FeTS2022_00170 +1,FeTS2022_01264 +1,FeTS2022_00837 +1,FeTS2022_01372 +1,FeTS2022_00341 +1,FeTS2022_01257 +1,FeTS2022_00329 +1,FeTS2022_00425 +1,FeTS2022_01350 +1,FeTS2022_01247 +1,FeTS2022_01234 +1,FeTS2022_00331 +1,FeTS2022_01128 +1,FeTS2022_01365 +1,FeTS2022_00221 +1,FeTS2022_00298 +1,FeTS2022_00227 +1,FeTS2022_01204 +1,FeTS2022_00204 +1,FeTS2022_01399 +1,FeTS2022_00377 +1,FeTS2022_00343 +1,FeTS2022_00280 +1,FeTS2022_01347 +1,FeTS2022_00210 +1,FeTS2022_01117 +1,FeTS2022_01275 +1,FeTS2022_01034 +1,FeTS2022_00162 +1,FeTS2022_01340 +1,FeTS2022_01212 +1,FeTS2022_01220 +1,FeTS2022_00419 +1,FeTS2022_00340 +1,FeTS2022_00296 +1,FeTS2022_01208 +1,FeTS2022_01064 +1,FeTS2022_00433 +1,FeTS2022_01050 +1,FeTS2022_01278 +1,FeTS2022_00293 +1,FeTS2022_00206 +1,FeTS2022_00356 +1,FeTS2022_00376 +1,FeTS2022_00316 +1,FeTS2022_00403 +1,FeTS2022_01348 +1,FeTS2022_00192 +1,FeTS2022_00313 +1,FeTS2022_01240 +1,FeTS2022_01222 +1,FeTS2022_00344 +1,FeTS2022_00332 +1,FeTS2022_00292 +1,FeTS2022_01392 +1,FeTS2022_00220 +1,FeTS2022_00378 +1,FeTS2022_01130 +1,FeTS2022_01106 +1,FeTS2022_01295 +1,FeTS2022_01409 +1,FeTS2022_01057 +1,FeTS2022_01068 +1,FeTS2022_00320 +1,FeTS2022_00346 +1,FeTS2022_01001 +1,FeTS2022_01207 +1,FeTS2022_01137 +1,FeTS2022_01318 +1,FeTS2022_00289 +1,FeTS2022_00157 +1,FeTS2022_01224 +1,FeTS2022_01367 +1,FeTS2022_01382 +1,FeTS2022_00309 +1,FeTS2022_01008 +1,FeTS2022_01059 +1,FeTS2022_01271 +1,FeTS2022_01110 +1,FeTS2022_01398 +1,FeTS2022_01119 +1,FeTS2022_00209 +1,FeTS2022_01274 +1,FeTS2022_01124 +1,FeTS2022_00241 +1,FeTS2022_00152 +1,FeTS2022_01131 +1,FeTS2022_01353 +1,FeTS2022_00352 +1,FeTS2022_01133 +1,FeTS2022_01084 +1,FeTS2022_00441 +1,FeTS2022_01268 +1,FeTS2022_01210 +1,FeTS2022_01375 +1,FeTS2022_00236 +1,FeTS2022_01218 +1,FeTS2022_01408 +1,FeTS2022_00274 +1,FeTS2022_01118 +1,FeTS2022_01213 +1,FeTS2022_01310 +1,FeTS2022_00194 +1,FeTS2022_00392 +1,FeTS2022_00334 +1,FeTS2022_00270 +1,FeTS2022_01359 +1,FeTS2022_01364 +1,FeTS2022_01336 +1,FeTS2022_01272 +1,FeTS2022_01090 +1,FeTS2022_00412 +1,FeTS2022_00228 +1,FeTS2022_00410 +2,FeTS2022_01239 +2,FeTS2022_01010 +2,FeTS2022_01394 +2,FeTS2022_00282 +2,FeTS2022_00237 +2,FeTS2022_01390 +2,FeTS2022_00382 +2,FeTS2022_00188 +2,FeTS2022_01211 +2,FeTS2022_01376 +2,FeTS2022_01243 +2,FeTS2022_01330 +2,FeTS2022_00253 +2,FeTS2022_01329 +2,FeTS2022_01306 +2,FeTS2022_01081 +2,FeTS2022_01369 +2,FeTS2022_01048 +2,FeTS2022_00328 +2,FeTS2022_00291 +2,FeTS2022_01049 +2,FeTS2022_01263 +2,FeTS2022_00317 +2,FeTS2022_00305 +2,FeTS2022_01265 +2,FeTS2022_00238 +2,FeTS2022_00423 +2,FeTS2022_01127 +2,FeTS2022_01379 +2,FeTS2022_01258 +2,FeTS2022_00299 +2,FeTS2022_01334 +2,FeTS2022_00350 +2,FeTS2022_01109 +2,FeTS2022_01352 +2,FeTS2022_01055 +2,FeTS2022_00167 +2,FeTS2022_01354 +2,FeTS2022_01231 +2,FeTS2022_00185 +2,FeTS2022_00306 +2,FeTS2022_00171 +2,FeTS2022_01261 +2,FeTS2022_01345 +2,FeTS2022_01397 +2,FeTS2022_00399 +2,FeTS2022_01319 +2,FeTS2022_01250 +2,FeTS2022_01097 +2,FeTS2022_01229 +2,FeTS2022_01393 +2,FeTS2022_00430 +2,FeTS2022_01203 +2,FeTS2022_01309 +2,FeTS2022_01342 +2,FeTS2022_01223 +2,FeTS2022_00239 +2,FeTS2022_00275 +2,FeTS2022_00406 +2,FeTS2022_01116 +2,FeTS2022_01380 +2,FeTS2022_00214 +2,FeTS2022_00195 +2,FeTS2022_01314 +2,FeTS2022_01113 +2,FeTS2022_00193 +2,FeTS2022_01259 +2,FeTS2022_00386 +2,FeTS2022_00834 +2,FeTS2022_01227 +2,FeTS2022_01277 +2,FeTS2022_00283 +2,FeTS2022_01099 +2,FeTS2022_00212 +2,FeTS2022_00165 +2,FeTS2022_01332 +2,FeTS2022_00364 +2,FeTS2022_01129 +2,FeTS2022_00301 +2,FeTS2022_01402 +2,FeTS2022_00199 +2,FeTS2022_01066 +2,FeTS2022_01107 +2,FeTS2022_01337 +2,FeTS2022_00230 +2,FeTS2022_01114 +2,FeTS2022_01294 +2,FeTS2022_01370 +2,FeTS2022_01269 +2,FeTS2022_01043 +2,FeTS2022_00359 +2,FeTS2022_01004 +2,FeTS2022_00286 +2,FeTS2022_01038 +2,FeTS2022_00370 +2,FeTS2022_00184 +2,FeTS2022_00360 +2,FeTS2022_01123 +2,FeTS2022_01237 +2,FeTS2022_01086 +2,FeTS2022_00231 +2,FeTS2022_00353 +2,FeTS2022_01254 +2,FeTS2022_01373 +2,FeTS2022_01100 +2,FeTS2022_01214 +2,FeTS2022_01242 +2,FeTS2022_01115 +2,FeTS2022_01331 +2,FeTS2022_00391 +2,FeTS2022_01312 +2,FeTS2022_00324 +2,FeTS2022_01080 +2,FeTS2022_00371 +2,FeTS2022_01396 +2,FeTS2022_00339 +2,FeTS2022_00260 +2,FeTS2022_00243 +2,FeTS2022_00233 +2,FeTS2022_01323 +2,FeTS2022_01248 +2,FeTS2022_00263 +2,FeTS2022_00347 +2,FeTS2022_01233 +2,FeTS2022_00367 +2,FeTS2022_01051 +2,FeTS2022_01126 +2,FeTS2022_01267 +2,FeTS2022_00383 +2,FeTS2022_01357 +2,FeTS2022_00413 +2,FeTS2022_01287 +2,FeTS2022_00349 +2,FeTS2022_01244 +2,FeTS2022_01041 +2,FeTS2022_01236 +2,FeTS2022_01245 +2,FeTS2022_01383 +2,FeTS2022_00196 +2,FeTS2022_01387 +2,FeTS2022_00297 +2,FeTS2022_01103 +2,FeTS2022_01098 +2,FeTS2022_01410 +2,FeTS2022_00440 +2,FeTS2022_01305 +2,FeTS2022_01304 +2,FeTS2022_01074 +2,FeTS2022_01046 +2,FeTS2022_01226 +2,FeTS2022_01253 +2,FeTS2022_01040 +2,FeTS2022_00269 +2,FeTS2022_00310 +2,FeTS2022_01056 +2,FeTS2022_01311 +2,FeTS2022_01338 +2,FeTS2022_00166 +2,FeTS2022_00327 +2,FeTS2022_00254 +2,FeTS2022_01000 +2,FeTS2022_00259 +2,FeTS2022_01134 +2,FeTS2022_01104 +2,FeTS2022_01232 +2,FeTS2022_01286 +2,FeTS2022_01052 +2,FeTS2022_01217 +2,FeTS2022_01238 +2,FeTS2022_00154 +3,FeTS2022_00395 +3,FeTS2022_00267 +3,FeTS2022_00366 +3,FeTS2022_00351 +3,FeTS2022_00159 +3,FeTS2022_00131 +3,FeTS2022_01246 +3,FeTS2022_01060 +3,FeTS2022_01087 +3,FeTS2022_00250 +3,FeTS2022_00234 +3,FeTS2022_01058 +3,FeTS2022_00235 +3,FeTS2022_00203 +3,FeTS2022_00414 +3,FeTS2022_01285 +3,FeTS2022_01071 +3,FeTS2022_01111 +3,FeTS2022_01377 +3,FeTS2022_01355 +3,FeTS2022_01384 +3,FeTS2022_01120 +3,FeTS2022_01082 +3,FeTS2022_01076 +3,FeTS2022_01072 +3,FeTS2022_00303 +3,FeTS2022_00436 +3,FeTS2022_01361 +3,FeTS2022_01073 +3,FeTS2022_00338 +3,FeTS2022_01351 +3,FeTS2022_00273 +3,FeTS2022_00186 +3,FeTS2022_00290 +3,FeTS2022_01381 +3,FeTS2022_01083 +3,FeTS2022_00409 +3,FeTS2022_00281 +3,FeTS2022_00840 +3,FeTS2022_00407 +3,FeTS2022_01094 +3,FeTS2022_01328 +3,FeTS2022_01078 +3,FeTS2022_00312 +3,FeTS2022_01235 +3,FeTS2022_01288 +3,FeTS2022_01391 +3,FeTS2022_01215 +3,FeTS2022_00160 +3,FeTS2022_00421 +3,FeTS2022_01317 +3,FeTS2022_01216 +3,FeTS2022_00178 +3,FeTS2022_00838 +3,FeTS2022_01321 +3,FeTS2022_01037 +3,FeTS2022_00176 +3,FeTS2022_01293 +3,FeTS2022_01219 +3,FeTS2022_01260 +3,FeTS2022_01339 +3,FeTS2022_01325 +3,FeTS2022_00249 +3,FeTS2022_01241 +3,FeTS2022_00211 +3,FeTS2022_01105 +3,FeTS2022_01138 +3,FeTS2022_00261 +3,FeTS2022_01316 +3,FeTS2022_01315 +3,FeTS2022_01256 +3,FeTS2022_00191 +3,FeTS2022_01069 +3,FeTS2022_01062 +3,FeTS2022_01135 +3,FeTS2022_00207 +3,FeTS2022_00401 +3,FeTS2022_00172 +3,FeTS2022_01085 +3,FeTS2022_00247 +3,FeTS2022_01206 +3,FeTS2022_01356 +3,FeTS2022_00325 +3,FeTS2022_00429 +3,FeTS2022_01122 +3,FeTS2022_01374 +3,FeTS2022_00156 +3,FeTS2022_01075 +3,FeTS2022_01362 +3,FeTS2022_01251 +3,FeTS2022_00405 +3,FeTS2022_01047 +3,FeTS2022_00240 +3,FeTS2022_00336 +3,FeTS2022_01092 +3,FeTS2022_01403 +3,FeTS2022_01385 +3,FeTS2022_01096 +3,FeTS2022_00426 +3,FeTS2022_00201 +3,FeTS2022_01335 +3,FeTS2022_00404 +3,FeTS2022_00322 +3,FeTS2022_00294 +3,FeTS2022_01070 +3,FeTS2022_01225 +3,FeTS2022_01067 +3,FeTS2022_00375 +3,FeTS2022_00158 +3,FeTS2022_00177 +3,FeTS2022_00271 +3,FeTS2022_01388 +3,FeTS2022_01053 +3,FeTS2022_01042 +3,FeTS2022_01400 +3,FeTS2022_00183 +3,FeTS2022_01358 +3,FeTS2022_01266 +3,FeTS2022_01360 +3,FeTS2022_00304 +3,FeTS2022_01065 +3,FeTS2022_01093 +3,FeTS2022_00397 +3,FeTS2022_01262 +3,FeTS2022_00217 +3,FeTS2022_01401 +3,FeTS2022_01125 +3,FeTS2022_01406 +3,FeTS2022_01343 +3,FeTS2022_01346 +3,FeTS2022_01089 +3,FeTS2022_00216 +3,FeTS2022_01061 +3,FeTS2022_01299 +3,FeTS2022_00242 +3,FeTS2022_01112 +3,FeTS2022_00300 +3,FeTS2022_01280 +3,FeTS2022_00187 +3,FeTS2022_00318 +3,FeTS2022_01371 +3,FeTS2022_01378 +3,FeTS2022_00418 +3,FeTS2022_01121 +3,FeTS2022_01136 +3,FeTS2022_00266 +3,FeTS2022_01221 +3,FeTS2022_01307 +3,FeTS2022_01386 +3,FeTS2022_00432 +3,FeTS2022_01101 +3,FeTS2022_01228 +3,FeTS2022_01313 +3,FeTS2022_01209 +3,FeTS2022_00388 +3,FeTS2022_01270 +3,FeTS2022_01044 +3,FeTS2022_00417 +3,FeTS2022_01063 +3,FeTS2022_01368 +3,FeTS2022_00369 +3,FeTS2022_01095 +3,FeTS2022_00416 +3,FeTS2022_00400 +3,FeTS2022_01045 +3,FeTS2022_01202 +3,FeTS2022_01326 +3,FeTS2022_01079 +3,FeTS2022_00402 +3,FeTS2022_01320 +3,FeTS2022_01324 +4,FeTS2022_01412 +4,FeTS2022_01415 +4,FeTS2022_01411 +4,FeTS2022_01414 +4,FeTS2022_01413 +4,FeTS2022_01416 +5,FeTS2022_01439 +5,FeTS2022_01435 +5,FeTS2022_01434 +5,FeTS2022_01440 +5,FeTS2022_01431 +5,FeTS2022_01437 +5,FeTS2022_01436 +5,FeTS2022_01433 +5,FeTS2022_01438 +5,FeTS2022_01426 +5,FeTS2022_01427 +5,FeTS2022_01428 +5,FeTS2022_01429 +5,FeTS2022_01432 +5,FeTS2022_01430 +6,FeTS2022_01152 +6,FeTS2022_01178 +6,FeTS2022_01186 +6,FeTS2022_01184 +6,FeTS2022_01181 +6,FeTS2022_01187 +6,FeTS2022_01168 +6,FeTS2022_01196 +6,FeTS2022_01173 +6,FeTS2022_01176 +6,FeTS2022_01200 +6,FeTS2022_00565 +6,FeTS2022_01193 +6,FeTS2022_01174 +6,FeTS2022_01662 +6,FeTS2022_01660 +7,FeTS2022_01201 +7,FeTS2022_01167 +7,FeTS2022_01170 +7,FeTS2022_01179 +7,FeTS2022_01185 +7,FeTS2022_01197 +7,FeTS2022_01172 +7,FeTS2022_01189 +7,FeTS2022_00563 +7,FeTS2022_01180 +7,FeTS2022_01198 +7,FeTS2022_01183 +7,FeTS2022_01151 +7,FeTS2022_01195 +7,FeTS2022_01657 +8,FeTS2022_01194 +8,FeTS2022_01191 +8,FeTS2022_01169 +8,FeTS2022_01171 +8,FeTS2022_00561 +8,FeTS2022_01659 +8,FeTS2022_01661 +8,FeTS2022_01190 +8,FeTS2022_01188 +8,FeTS2022_01199 +8,FeTS2022_01658 +8,FeTS2022_01192 +8,FeTS2022_01175 +8,FeTS2022_01182 +8,FeTS2022_01537 +8,FeTS2022_01177 +9,FeTS2022_00102 +9,FeTS2022_00149 +9,FeTS2022_01290 +9,FeTS2022_00113 +9,FeTS2022_01009 +9,FeTS2022_01007 +9,FeTS2022_01002 +9,FeTS2022_00139 +9,FeTS2022_01292 +9,FeTS2022_00100 +9,FeTS2022_01289 +9,FeTS2022_01291 +9,FeTS2022_01005 +9,FeTS2022_01282 +9,FeTS2022_01003 +9,FeTS2022_00109 +9,FeTS2022_01283 +9,FeTS2022_00999 +9,FeTS2022_01281 +9,FeTS2022_01284 +9,FeTS2022_00151 +9,FeTS2022_00123 +10,FeTS2022_01451 +10,FeTS2022_01453 +10,FeTS2022_01452 +10,FeTS2022_00831 +10,FeTS2022_01448 +10,FeTS2022_01300 +10,FeTS2022_01443 +10,FeTS2022_00136 +10,FeTS2022_01454 +10,FeTS2022_00144 +10,FeTS2022_00121 +10,FeTS2022_01297 +10,FeTS2022_00133 +10,FeTS2022_01447 +10,FeTS2022_00142 +10,FeTS2022_01450 +10,FeTS2022_00120 +10,FeTS2022_01298 +10,FeTS2022_01449 +10,FeTS2022_01442 +10,FeTS2022_01446 +10,FeTS2022_01303 +10,FeTS2022_01296 +10,FeTS2022_00132 +10,FeTS2022_01441 +10,FeTS2022_01445 +10,FeTS2022_01302 +10,FeTS2022_00143 +10,FeTS2022_00105 +10,FeTS2022_01444 +10,FeTS2022_00147 +10,FeTS2022_01455 +10,FeTS2022_00146 +10,FeTS2022_00137 +11,FeTS2022_01459 +11,FeTS2022_01464 +11,FeTS2022_01458 +11,FeTS2022_01457 +11,FeTS2022_01461 +11,FeTS2022_01456 +11,FeTS2022_01460 +11,FeTS2022_01462 +11,FeTS2022_01466 +11,FeTS2022_01465 +11,FeTS2022_01463 +11,FeTS2022_01467 +12,FeTS2022_00140 +12,FeTS2022_01469 +12,FeTS2022_01468 +12,FeTS2022_01470 +12,FeTS2022_00104 +12,FeTS2022_00110 +12,FeTS2022_00112 +12,FeTS2022_00128 +13,FeTS2022_00134 +13,FeTS2022_00150 +13,FeTS2022_00116 +13,FeTS2022_01471 +14,FeTS2022_01472 +14,FeTS2022_00117 +14,FeTS2022_00130 +14,FeTS2022_00138 +14,FeTS2022_01473 +14,FeTS2022_00111 +14,FeTS2022_00124 +14,FeTS2022_00106 +15,FeTS2022_00122 +15,FeTS2022_00148 +15,FeTS2022_01474 +15,FeTS2022_00108 +15,FeTS2022_01144 +15,FeTS2022_00107 +15,FeTS2022_01140 +15,FeTS2022_01146 +15,FeTS2022_01145 +15,FeTS2022_01139 +15,FeTS2022_01141 +15,FeTS2022_01142 +15,FeTS2022_01143 +15,FeTS2022_01475 +16,FeTS2022_01482 +16,FeTS2022_01480 +16,FeTS2022_01485 +16,FeTS2022_01476 +16,FeTS2022_01481 +16,FeTS2022_01483 +16,FeTS2022_01486 +16,FeTS2022_01484 +16,FeTS2022_01479 +16,FeTS2022_01477 +16,FeTS2022_01478 +17,FeTS2022_01491 +17,FeTS2022_01500 +17,FeTS2022_01519 +17,FeTS2022_01516 +17,FeTS2022_01509 +17,FeTS2022_01520 +17,FeTS2022_01508 +17,FeTS2022_01503 +17,FeTS2022_01488 +17,FeTS2022_01492 +17,FeTS2022_01502 +17,FeTS2022_01493 +18,FeTS2022_01497 +18,FeTS2022_01499 +18,FeTS2022_01487 +18,FeTS2022_01505 +18,FeTS2022_01504 +18,FeTS2022_01490 +18,FeTS2022_01507 +18,FeTS2022_01510 +18,FeTS2022_01512 +18,FeTS2022_01514 +18,FeTS2022_01517 +19,FeTS2022_01501 +19,FeTS2022_01518 +19,FeTS2022_01506 +19,FeTS2022_01515 +19,FeTS2022_01511 +19,FeTS2022_01494 +19,FeTS2022_01489 +19,FeTS2022_01513 +19,FeTS2022_01496 +19,FeTS2022_01495 +19,FeTS2022_01521 +19,FeTS2022_01498 +20,FeTS2022_01522 +20,FeTS2022_01525 +20,FeTS2022_01526 +20,FeTS2022_01527 +20,FeTS2022_01524 +20,FeTS2022_01523 +21,FeTS2022_01530 +21,FeTS2022_01536 +21,FeTS2022_01535 +21,FeTS2022_01663 +21,FeTS2022_01534 +21,FeTS2022_01529 +21,FeTS2022_01531 +21,FeTS2022_01666 +21,FeTS2022_01665 +21,FeTS2022_01532 +21,FeTS2022_01664 +21,FeTS2022_01528 +21,FeTS2022_01533 +22,FeTS2022_00584 +22,FeTS2022_00567 +22,FeTS2022_00571 +22,FeTS2022_00582 +22,FeTS2022_00570 +22,FeTS2022_00594 +22,FeTS2022_00597 +22,FeTS2022_00596 +22,FeTS2022_00576 +22,FeTS2022_00572 +22,FeTS2022_00115 +22,FeTS2022_00593 +22,FeTS2022_00588 +22,FeTS2022_00598 +22,FeTS2022_00589 +22,FeTS2022_00574 +22,FeTS2022_00586 +22,FeTS2022_00579 +22,FeTS2022_00590 +22,FeTS2022_00599 +22,FeTS2022_00577 +22,FeTS2022_00575 +22,FeTS2022_00581 +22,FeTS2022_00591 +22,FeTS2022_00569 +22,FeTS2022_00587 +22,FeTS2022_00580 +22,FeTS2022_00583 +22,FeTS2022_00578 +22,FeTS2022_00568 +23,FeTS2022_01423 +23,FeTS2022_01420 +23,FeTS2022_01422 +23,FeTS2022_01417 +23,FeTS2022_01421 +23,FeTS2022_01424 +23,FeTS2022_01418 +23,FeTS2022_01425 +23,FeTS2022_01419 +24,FeTS2022_01628 +24,FeTS2022_01615 +24,FeTS2022_01035 +24,FeTS2022_00732 +24,FeTS2022_00753 +24,FeTS2022_01620 +24,FeTS2022_01637 +24,FeTS2022_01594 +24,FeTS2022_00530 +24,FeTS2022_00772 +24,FeTS2022_01580 +24,FeTS2022_00731 +24,FeTS2022_00540 +24,FeTS2022_00464 +24,FeTS2022_01622 +24,FeTS2022_01154 +24,FeTS2022_01559 +24,FeTS2022_00729 +24,FeTS2022_00708 +24,FeTS2022_00044 +24,FeTS2022_00705 +24,FeTS2022_00645 +24,FeTS2022_01640 +24,FeTS2022_00008 +24,FeTS2022_00746 +24,FeTS2022_01551 +24,FeTS2022_01610 +24,FeTS2022_00061 +24,FeTS2022_00642 +24,FeTS2022_00675 +24,FeTS2022_01651 +24,FeTS2022_00651 +24,FeTS2022_00626 +24,FeTS2022_00028 +24,FeTS2022_01557 +24,FeTS2022_01616 +24,FeTS2022_00684 +24,FeTS2022_01538 +24,FeTS2022_01647 +24,FeTS2022_00688 +24,FeTS2022_00737 +24,FeTS2022_00063 +24,FeTS2022_00758 +24,FeTS2022_01159 +24,FeTS2022_00615 +24,FeTS2022_00621 +24,FeTS2022_01543 +24,FeTS2022_01560 +24,FeTS2022_00058 +24,FeTS2022_00009 +24,FeTS2022_00544 +24,FeTS2022_01611 +24,FeTS2022_00485 +24,FeTS2022_00735 +24,FeTS2022_00659 +24,FeTS2022_00025 +24,FeTS2022_00550 +24,FeTS2022_01599 +24,FeTS2022_00636 +24,FeTS2022_01644 +24,FeTS2022_00716 +24,FeTS2022_00641 +24,FeTS2022_01624 +24,FeTS2022_00547 +24,FeTS2022_00046 +24,FeTS2022_00728 +24,FeTS2022_00045 +24,FeTS2022_00493 +24,FeTS2022_00089 +24,FeTS2022_00622 +24,FeTS2022_01643 +24,FeTS2022_00602 +24,FeTS2022_00035 +24,FeTS2022_01545 +24,FeTS2022_00014 +24,FeTS2022_01566 +24,FeTS2022_00066 +24,FeTS2022_01614 +24,FeTS2022_01591 +24,FeTS2022_00514 +24,FeTS2022_01588 +24,FeTS2022_00520 +24,FeTS2022_01556 +24,FeTS2022_00097 +24,FeTS2022_00555 +24,FeTS2022_00736 +24,FeTS2022_00639 +24,FeTS2022_00479 +24,FeTS2022_01550 +24,FeTS2022_01592 +24,FeTS2022_01626 +24,FeTS2022_00557 +24,FeTS2022_00496 +24,FeTS2022_00778 +24,FeTS2022_01561 +24,FeTS2022_00690 +24,FeTS2022_00750 +24,FeTS2022_01586 +24,FeTS2022_01549 +24,FeTS2022_01555 +24,FeTS2022_01612 +24,FeTS2022_01600 +24,FeTS2022_01629 +24,FeTS2022_01656 +24,FeTS2022_00500 +24,FeTS2022_00529 +24,FeTS2022_00628 +24,FeTS2022_00775 +24,FeTS2022_00523 +24,FeTS2022_00488 +24,FeTS2022_00518 +24,FeTS2022_00000 +24,FeTS2022_00020 +24,FeTS2022_01646 +24,FeTS2022_01638 +24,FeTS2022_00630 +24,FeTS2022_01590 +24,FeTS2022_01613 +24,FeTS2022_01571 +24,FeTS2022_00519 +24,FeTS2022_01617 +24,FeTS2022_01623 +24,FeTS2022_00691 +24,FeTS2022_01027 +24,FeTS2022_00704 +24,FeTS2022_00098 +24,FeTS2022_01558 +25,FeTS2022_00715 +25,FeTS2022_00757 +25,FeTS2022_00084 +25,FeTS2022_00692 +25,FeTS2022_00078 +25,FeTS2022_00747 +25,FeTS2022_01607 +25,FeTS2022_00751 +25,FeTS2022_00011 +25,FeTS2022_00610 +25,FeTS2022_00694 +25,FeTS2022_00026 +25,FeTS2022_00658 +25,FeTS2022_01544 +25,FeTS2022_01583 +25,FeTS2022_00680 +25,FeTS2022_01028 +25,FeTS2022_01636 +25,FeTS2022_00545 +25,FeTS2022_00072 +25,FeTS2022_00016 +25,FeTS2022_01548 +25,FeTS2022_00624 +25,FeTS2022_00676 +25,FeTS2022_00533 +25,FeTS2022_01574 +25,FeTS2022_01582 +25,FeTS2022_00085 +25,FeTS2022_00613 +25,FeTS2022_01593 +25,FeTS2022_00730 +25,FeTS2022_01585 +25,FeTS2022_00524 +25,FeTS2022_00081 +25,FeTS2022_00472 +25,FeTS2022_00478 +25,FeTS2022_00469 +25,FeTS2022_00682 +25,FeTS2022_00733 +25,FeTS2022_00723 +25,FeTS2022_00099 +25,FeTS2022_00744 +25,FeTS2022_00048 +25,FeTS2022_00480 +25,FeTS2022_00650 +25,FeTS2022_00601 +25,FeTS2022_00542 +25,FeTS2022_00667 +25,FeTS2022_00505 +25,FeTS2022_01539 +25,FeTS2022_00764 +25,FeTS2022_00506 +25,FeTS2022_01649 +25,FeTS2022_00032 +25,FeTS2022_00021 +25,FeTS2022_00685 +25,FeTS2022_00611 +25,FeTS2022_00511 +25,FeTS2022_01584 +25,FeTS2022_01635 +25,FeTS2022_00607 +25,FeTS2022_00071 +25,FeTS2022_00687 +25,FeTS2022_00767 +25,FeTS2022_00537 +25,FeTS2022_01630 +25,FeTS2022_00740 +25,FeTS2022_00525 +25,FeTS2022_00725 +25,FeTS2022_00502 +25,FeTS2022_01562 +25,FeTS2022_01577 +25,FeTS2022_01576 +25,FeTS2022_01595 +25,FeTS2022_00654 +25,FeTS2022_00090 +25,FeTS2022_01645 +25,FeTS2022_01564 +25,FeTS2022_01567 +25,FeTS2022_00703 +25,FeTS2022_00043 +25,FeTS2022_00003 +25,FeTS2022_00495 +25,FeTS2022_00017 +25,FeTS2022_00491 +25,FeTS2022_00054 +25,FeTS2022_00510 +25,FeTS2022_00618 +25,FeTS2022_00064 +25,FeTS2022_00024 +25,FeTS2022_00709 +25,FeTS2022_01653 +25,FeTS2022_01579 +25,FeTS2022_01572 +25,FeTS2022_01156 +25,FeTS2022_00707 +25,FeTS2022_01540 +25,FeTS2022_00056 +25,FeTS2022_00620 +25,FeTS2022_00470 +25,FeTS2022_00499 +25,FeTS2022_00640 +25,FeTS2022_00549 +25,FeTS2022_01601 +25,FeTS2022_00608 +25,FeTS2022_00727 +25,FeTS2022_00773 +25,FeTS2022_00504 +25,FeTS2022_01604 +25,FeTS2022_01158 +25,FeTS2022_00051 +25,FeTS2022_00768 +25,FeTS2022_01161 +25,FeTS2022_00765 +25,FeTS2022_00068 +25,FeTS2022_00551 +25,FeTS2022_01605 +25,FeTS2022_00674 +25,FeTS2022_01157 +25,FeTS2022_01631 +25,FeTS2022_00022 +25,FeTS2022_00777 +25,FeTS2022_01609 +25,FeTS2022_01633 +25,FeTS2022_01652 +25,FeTS2022_00759 +25,FeTS2022_01655 +26,FeTS2022_01639 +26,FeTS2022_01563 +26,FeTS2022_00661 +26,FeTS2022_00087 +26,FeTS2022_00030 +26,FeTS2022_00556 +26,FeTS2022_01597 +26,FeTS2022_00724 +26,FeTS2022_00096 +26,FeTS2022_00049 +26,FeTS2022_00683 +26,FeTS2022_00059 +26,FeTS2022_01596 +26,FeTS2022_00498 +26,FeTS2022_00543 +26,FeTS2022_01641 +26,FeTS2022_01542 +26,FeTS2022_00062 +26,FeTS2022_00005 +26,FeTS2022_00646 +26,FeTS2022_00088 +26,FeTS2022_00656 +26,FeTS2022_01589 +26,FeTS2022_01160 +26,FeTS2022_01547 +26,FeTS2022_01606 +26,FeTS2022_00631 +26,FeTS2022_00756 +26,FeTS2022_00619 +26,FeTS2022_00698 +26,FeTS2022_01541 +26,FeTS2022_00539 +26,FeTS2022_00053 +26,FeTS2022_01618 +26,FeTS2022_00693 +26,FeTS2022_00616 +26,FeTS2022_01642 +26,FeTS2022_01632 +26,FeTS2022_00718 +26,FeTS2022_00006 +26,FeTS2022_00466 +26,FeTS2022_01565 +26,FeTS2022_01621 +26,FeTS2022_00697 +26,FeTS2022_00689 +26,FeTS2022_00554 +26,FeTS2022_00638 +26,FeTS2022_00517 +26,FeTS2022_00019 +26,FeTS2022_01650 +26,FeTS2022_01602 +26,FeTS2022_01570 +26,FeTS2022_00655 +26,FeTS2022_00552 +26,FeTS2022_00706 +26,FeTS2022_01654 +26,FeTS2022_00481 +26,FeTS2022_00604 +26,FeTS2022_00612 +26,FeTS2022_00774 +26,FeTS2022_00625 +26,FeTS2022_00070 +26,FeTS2022_00649 +26,FeTS2022_00036 +26,FeTS2022_01546 +26,FeTS2022_00559 +26,FeTS2022_00018 +26,FeTS2022_00507 +26,FeTS2022_00760 +26,FeTS2022_01568 +26,FeTS2022_00094 +26,FeTS2022_00526 +26,FeTS2022_01575 +26,FeTS2022_00512 +26,FeTS2022_00033 +26,FeTS2022_01648 +26,FeTS2022_00052 +26,FeTS2022_01625 +26,FeTS2022_01573 +26,FeTS2022_00623 +26,FeTS2022_01153 +26,FeTS2022_00532 +26,FeTS2022_00516 +26,FeTS2022_00679 +26,FeTS2022_00468 +26,FeTS2022_00494 +26,FeTS2022_00483 +26,FeTS2022_01552 +26,FeTS2022_00606 +26,FeTS2022_00742 +26,FeTS2022_00677 +26,FeTS2022_00652 +26,FeTS2022_00074 +26,FeTS2022_00513 +26,FeTS2022_01581 +26,FeTS2022_00663 +26,FeTS2022_00734 +26,FeTS2022_01619 +26,FeTS2022_00668 +26,FeTS2022_00558 +26,FeTS2022_00002 +26,FeTS2022_01598 +26,FeTS2022_00477 +26,FeTS2022_01634 +26,FeTS2022_00501 +26,FeTS2022_01155 +26,FeTS2022_00077 +26,FeTS2022_01578 +26,FeTS2022_01569 +26,FeTS2022_01603 +26,FeTS2022_00538 +26,FeTS2022_00714 +26,FeTS2022_00031 +26,FeTS2022_01627 +26,FeTS2022_01553 +26,FeTS2022_00548 +26,FeTS2022_00739 +26,FeTS2022_00103 +26,FeTS2022_00528 +26,FeTS2022_01608 +26,FeTS2022_00095 +26,FeTS2022_00060 +26,FeTS2022_01554 +26,FeTS2022_00657 +26,FeTS2022_01587 +26,FeTS2022_00605 +26,FeTS2022_00686 +26,FeTS2022_00012 +27,FeTS2022_01166 +27,FeTS2022_01163 +27,FeTS2022_01165 +27,FeTS2022_01164 +28,FeTS2022_00444 +28,FeTS2022_01014 +28,FeTS2022_00442 +28,FeTS2022_01025 +28,FeTS2022_01024 +28,FeTS2022_00101 +28,FeTS2022_00453 +28,FeTS2022_01013 +28,FeTS2022_01011 +28,FeTS2022_00459 +28,FeTS2022_00457 +28,FeTS2022_01016 +28,FeTS2022_00448 +28,FeTS2022_01023 +28,FeTS2022_01017 +28,FeTS2022_00443 +28,FeTS2022_00455 +28,FeTS2022_00127 +28,FeTS2022_01012 +28,FeTS2022_01018 +28,FeTS2022_01022 +28,FeTS2022_00451 +28,FeTS2022_00445 +28,FeTS2022_00452 +28,FeTS2022_00454 +28,FeTS2022_01019 +28,FeTS2022_01021 +28,FeTS2022_01020 +28,FeTS2022_01026 +28,FeTS2022_00456 +28,FeTS2022_00446 +28,FeTS2022_00449 +28,FeTS2022_01015 +29,FeTS2022_00802 +29,FeTS2022_00788 +29,FeTS2022_00795 +29,FeTS2022_00820 +29,FeTS2022_00782 +29,FeTS2022_00800 +29,FeTS2022_00830 +29,FeTS2022_00824 +29,FeTS2022_00805 +29,FeTS2022_00796 +29,FeTS2022_00823 +29,FeTS2022_00828 +30,FeTS2022_00811 +30,FeTS2022_00789 +30,FeTS2022_00801 +30,FeTS2022_00780 +30,FeTS2022_00781 +30,FeTS2022_00814 +30,FeTS2022_00806 +30,FeTS2022_00810 +30,FeTS2022_00807 +30,FeTS2022_00818 +30,FeTS2022_00791 +31,FeTS2022_00787 +31,FeTS2022_00808 +31,FeTS2022_00809 +31,FeTS2022_00803 +31,FeTS2022_00816 +31,FeTS2022_00819 +31,FeTS2022_00793 +31,FeTS2022_00799 +31,FeTS2022_00797 +31,FeTS2022_00784 +31,FeTS2022_00804 +31,FeTS2022_00792 +32,FeTS2022_01031 +32,FeTS2022_01033 +32,FeTS2022_01030 +32,FeTS2022_00118 +32,FeTS2022_01029 +32,FeTS2022_00126 +32,FeTS2022_01032 +33,FeTS2022_01147 +33,FeTS2022_01149 +33,FeTS2022_01150 +33,FeTS2022_01148 +33,FeTS2022_01162 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml new file mode 100644 index 0000000..ebd5bec --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml @@ -0,0 +1,3 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2021 + +collaborators: \ No newline at end of file diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml new file mode 100644 index 0000000..93c8816 --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml @@ -0,0 +1,4 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2021 + +one,1 +two,2 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults new file mode 100644 index 0000000..fb82f9c --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults @@ -0,0 +1,2 @@ +../../workspace/plan/defaults + diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml new file mode 100644 index 0000000..ca4476c --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -0,0 +1,140 @@ +# Copyright (C) 2022 Intel Corporation +# Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. + +aggregator : + defaults : plan/defaults/aggregator.yaml + template : openfl.component.Aggregator + settings : + init_state_path : save/fets_seg_test_init.pbuf + best_state_path : save/fets_seg_test_best.pbuf + last_state_path : save/fets_seg_test_last.pbuf + rounds_to_train : 3 + write_logs : true + + +collaborator : + defaults : plan/defaults/collaborator.yaml + template : openfl.component.Collaborator + settings : + delta_updates : false + opt_treatment : RESET + +data_loader : + defaults : plan/defaults/data_loader.yaml + template : openfl.federated.data.loader_fets_challenge.FeTSChallengeDataLoaderWrapper + settings : + feature_shape : [32, 32, 32] + +task_runner : + template : src.fets_challenge_model.FeTSChallengeModel + settings : + train_csv : seg_test_train.csv + val_csv : seg_test_val.csv + device : cpu + fets_config_dict : + batch_size: 1 + clip_grad: null + clip_mode: null + data_augmentation: {} + data_postprocessing: {} + data_preprocessing: + normalize: null + enable_padding: false + in_memory: false + inference_mechanism : + grid_aggregator_overlap: crop + patch_overlap: 0 + learning_rate: 0.001 + loss_function: dc + medcam_enabled: false + output_dir: '.' + metrics: + - dice + - dice_per_label + - hd95_per_label + model: + amp: true + architecture: resunet + base_filters: 32 + class_list: + - 0 + - 1 + - 2 + - 4 + dimension: 3 + final_layer: softmax + ignore_label_validation: null + norm_type: instance + nested_training: + testing: 1 + validation: -5 + num_epochs: 1 + optimizer: + type: sgd + parallel_compute_command: '' + patch_sampler: label + patch_size: + - 64 + - 64 + - 64 + patience: 100 + pin_memory_dataloader: false + print_rgb_label_warning: true + q_max_length: 100 + q_num_workers: 0 + q_samples_per_volume: 40 + q_verbose: false + save_output: false + save_training: false + scaling_factor: 1 + scheduler: + type: triangle_modified + track_memory_usage: false + verbose: false + version: + maximum: 0.0.14 + minimum: 0.0.14 + weighted_loss: true + + +network : + defaults : plan/defaults/network.yaml + +assigner: + template : src.challenge_assigner.FeTSChallengeAssigner + settings : + training_tasks : + - aggregated_model_validation + - train + - locally_tuned_model_validation + validation_tasks : + - aggregated_model_validation + +tasks : + aggregated_model_validation: + function : validate + kwargs : + apply : global + metrics : + - valid_loss + - valid_dice + + locally_tuned_model_validation: + function : validate + kwargs : + apply: local + metrics : + - valid_loss + - valid_dice + + train: + function : train + kwargs : + metrics : + - loss + - train_dice + epochs : 1 + + +compression_pipeline : + defaults : plan/defaults/compression_pipeline.yaml diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt new file mode 100644 index 0000000..9a7d57c --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt @@ -0,0 +1,2 @@ +torchvision +torch diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv new file mode 100644 index 0000000..50baaca --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv @@ -0,0 +1,11 @@ +Partition_ID,Subject_ID +1,FeTS2022_01341 +1,FeTS2022_01333 +1,FeTS2022_01077 +1,FeTS2022_01324 +2,FeTS2022_01412 +2,FeTS2022_01415 +2,FeTS2022_01411 +3,FeTS2022_01439 +3,FeTS2022_01435 +3,FeTS2022_01434 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py new file mode 100644 index 0000000..1c5a549 --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py @@ -0,0 +1,10 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2021 + +# Contributing Authors (alphabetical): +# Patrick Foley (Intel) +# Micah Sheller (Intel) + +TRAINING_HPARAMS = [ + 'epochs_per_round', + 'learning_rate', +] diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py new file mode 100644 index 0000000..46e847f --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py @@ -0,0 +1,40 @@ +# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 + +# Contributing Authors (alphabetical): +# Micah Sheller (Intel) + +class FeTSChallengeAssigner: + def __init__(self, tasks, authorized_cols, training_tasks, validation_tasks, **kwargs): + """Initialize.""" + self.training_collaborators = [] + self.tasks = tasks + self.training_tasks = training_tasks + self.validation_tasks = validation_tasks + self.collaborators = authorized_cols + + def set_training_collaborators(self, training_collaborators): + self.training_collaborators = training_collaborators + + + def get_tasks_for_collaborator(self, collaborator_name, round_number): + """Get tasks for the collaborator specified.""" + if collaborator_name in self.training_collaborators: + return self.training_tasks + else: + return self.validation_tasks + + def get_collaborators_for_task(self, task_name, round_number): + """Get collaborators for the task specified.""" + if task_name in self.validation_tasks: + return self.collaborators + else: + return self.training_collaborators + + def get_all_tasks_for_round(self, round_number): + return self.training_tasks + + def get_aggregation_type_for_task(self, task_name): + """Extract aggregation type from self.tasks.""" + if 'aggregation_type' not in self.tasks[task_name]: + return None + return self.tasks[task_name]['aggregation_type'] diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py new file mode 100644 index 0000000..3794be6 --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py @@ -0,0 +1,208 @@ +# Copyright (C) 2020-2021 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +"""GaNDLFTaskRunner module.""" + +from copy import deepcopy + +import numpy as np +import torch as pt + +from openfl.utilities import split_tensor_dict_for_holdouts +from openfl.utilities import TensorKey + +from openfl.federated.task.runner_fets_challenge import * + +from GANDLF.compute.generic import create_pytorch_objects +from GANDLF.compute.training_loop import train_network +from GANDLF.compute.forward_pass import validate_network + +from . import TRAINING_HPARAMS + +class FeTSChallengeModel(FeTSChallengeTaskRunner): + """FeTSChallenge Model class for Federated Learning.""" + + def validate(self, col_name, round_num, input_tensor_dict, + use_tqdm=False, **kwargs): + """Validate. + Run validation of the model on the local data. + Args: + col_name: Name of the collaborator + round_num: What round is it + input_tensor_dict: Required input tensors (for model) + use_tqdm (bool): Use tqdm to print a progress bar (Default=True) + kwargs: Key word arguments passed to GaNDLF main_run + Returns: + global_output_dict: Tensors to send back to the aggregator + local_output_dict: Tensors to maintain in the local TensorDB + """ + self.rebuild_model(round_num, input_tensor_dict, validation=True) + self.model.eval() + # self.model.to(self.device) + + epoch_valid_loss, epoch_valid_metric = validate_network(self.model, + self.data_loader.val_dataloader, + self.scheduler, + self.params, + round_num, + mode="validation") + + self.logger.info(epoch_valid_loss) + self.logger.info(epoch_valid_metric) + + origin = col_name + suffix = 'validate' + if kwargs['apply'] == 'local': + suffix += '_local' + else: + suffix += '_agg' + tags = ('metric', suffix) + + output_tensor_dict = {} + output_tensor_dict[TensorKey('valid_loss', origin, round_num, True, tags)] = np.array(epoch_valid_loss) + for k, v in epoch_valid_metric.items(): + if np.array(v).size == 1: + output_tensor_dict[TensorKey(f'valid_{k}', origin, round_num, True, tags)] = np.array(v) + else: + for idx,label in enumerate([0,1,2,4]): + output_tensor_dict[TensorKey(f'valid_{k}_{label}', origin, round_num, True, tags)] = np.array(v[idx]) + + return output_tensor_dict, {} + + def inference(self, col_name, round_num, input_tensor_dict, + use_tqdm=False, **kwargs): + """Inference. + Run inference of the model on the local data (used for final validation) + Args: + col_name: Name of the collaborator + round_num: What round is it + input_tensor_dict: Required input tensors (for model) + use_tqdm (bool): Use tqdm to print a progress bar (Default=True) + kwargs: Key word arguments passed to GaNDLF main_run + Returns: + global_output_dict: Tensors to send back to the aggregator + local_output_dict: Tensors to maintain in the local TensorDB + """ + self.rebuild_model(round_num, input_tensor_dict, validation=True) + self.model.eval() + # self.model.to(self.device) + + epoch_valid_loss, epoch_valid_metric = validate_network(self.model, + self.data_loader.val_dataloader, + self.scheduler, + self.params, + round_num, + mode="inference") + + origin = col_name + suffix = 'validate' + if kwargs['apply'] == 'local': + suffix += '_local' + else: + suffix += '_agg' + tags = ('metric', suffix) + + output_tensor_dict = {} + output_tensor_dict[TensorKey('valid_loss', origin, round_num, True, tags)] = np.array(epoch_valid_loss) + for k, v in epoch_valid_metric.items(): + if np.array(v).size == 1: + output_tensor_dict[TensorKey(f'valid_{k}', origin, round_num, True, tags)] = np.array(v) + else: + for idx,label in enumerate([0,1,2,4]): + output_tensor_dict[TensorKey(f'valid_{k}_{label}', origin, round_num, True, tags)] = np.array(v[idx]) + + return output_tensor_dict, {} + + + def train(self, col_name, round_num, input_tensor_dict, use_tqdm=False, epochs=1, **kwargs): + """Train batches. + Train the model on the requested number of batches. + Args: + col_name : Name of the collaborator + round_num : What round is it + input_tensor_dict : Required input tensors (for model) + use_tqdm (bool) : Use tqdm to print a progress bar (Default=True) + epochs : The number of epochs to train + crossfold_test : Whether or not to use cross fold trainval/test + to evaluate the quality of the model under fine tuning + (this uses a separate prameter to pass in the data and + config used) + crossfold_test_data_csv : Data csv used to define data used in crossfold test. + This csv does not itself define the folds, just + defines the total data to be used. + crossfold_val_n : number of folds to use for the train,val level of the nested crossfold. + corssfold_test_n : number of folds to use for the trainval,test level of the nested crossfold. + kwargs : Key word arguments passed to GaNDLF main_run + Returns: + global_output_dict : Tensors to send back to the aggregator + local_output_dict : Tensors to maintain in the local TensorDB + """ + + # handle the hparams + epochs_per_round = int(input_tensor_dict.pop('epochs_per_round')) + learning_rate = float(input_tensor_dict.pop('learning_rate')) + + self.rebuild_model(round_num, input_tensor_dict) + # set to "training" mode + self.model.train() + + # Set the learning rate + for group in self.optimizer.param_groups: + group['lr'] = learning_rate + + for epoch in range(epochs_per_round): + self.logger.info(f'Run {epoch} epoch of {round_num} round') + # FIXME: do we want to capture these in an array rather than simply taking the last value? + epoch_train_loss, epoch_train_metric = train_network(self.model, + self.data_loader.train_dataloader, + self.optimizer, + self.params) + + # output model tensors (Doesn't include TensorKey) + tensor_dict = self.get_tensor_dict(with_opt_vars=True) + + metric_dict = {'loss': epoch_train_loss} + for k, v in epoch_train_metric.items(): + if np.array(v).size == 1: + metric_dict[f'train_{k}'] = np.array(v) + else: + for idx,label in enumerate([0,1,2,4]): + metric_dict[f'train_{k}_{label}'] = np.array(v[idx]) + + + # Return global_tensor_dict, local_tensor_dict + # is this even pt-specific really? + global_tensor_dict, local_tensor_dict = create_tensorkey_dicts(tensor_dict, + metric_dict, + col_name, + round_num, + self.logger, + self.tensor_dict_split_fn_kwargs) + + # Update the required tensors if they need to be pulled from the + # aggregator + # TODO this logic can break if different collaborators have different + # roles between rounds. + # For example, if a collaborator only performs validation in the first + # round but training in the second, it has no way of knowing the + # optimizer state tensor names to request from the aggregator because + # these are only created after training occurs. A work around could + # involve doing a single epoch of training on random data to get the + # optimizer names, and then throwing away the model. + if self.opt_treatment == 'CONTINUE_GLOBAL': + self.initialize_tensorkeys_for_functions(with_opt_vars=True) + + # This will signal that the optimizer values are now present, + # and can be loaded when the model is rebuilt + self.train_round_completed = True + + # Return global_tensor_dict, local_tensor_dict + return global_tensor_dict, local_tensor_dict + + def get_required_tensorkeys_for_function(self, func_name, **kwargs): + required = super().get_required_tensorkeys_for_function(func_name, **kwargs) + if func_name == 'train': + round_number = required[0].round_number + for hparam in TRAINING_HPARAMS: + required.append(TensorKey(tensor_name=hparam, origin='GLOBAL', round_number=round_number, report=False, tags=('hparam', 'model'))) + return required diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv new file mode 100644 index 0000000..d0d78f1 --- /dev/null +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv @@ -0,0 +1,220 @@ +Partition_ID,Subject_ID +-1,FeTS2022_01718 +-1,FeTS2022_01719 +-1,FeTS2022_00573 +-1,FeTS2022_00592 +-1,FeTS2022_00585 +-1,FeTS2022_00595 +-1,FeTS2022_01678 +-1,FeTS2022_01679 +-1,FeTS2022_01680 +-1,FeTS2022_01681 +-1,FeTS2022_01682 +-1,FeTS2022_01683 +-1,FeTS2022_01684 +-1,FeTS2022_01685 +-1,FeTS2022_01686 +-1,FeTS2022_00833 +-1,FeTS2022_01687 +-1,FeTS2022_00384 +-1,FeTS2022_01688 +-1,FeTS2022_01689 +-1,FeTS2022_01690 +-1,FeTS2022_01691 +-1,FeTS2022_00434 +-1,FeTS2022_00333 +-1,FeTS2022_00337 +-1,FeTS2022_01692 +-1,FeTS2022_00229 +-1,FeTS2022_01667 +-1,FeTS2022_01668 +-1,FeTS2022_01669 +-1,FeTS2022_01670 +-1,FeTS2022_01671 +-1,FeTS2022_01672 +-1,FeTS2022_01673 +-1,FeTS2022_01674 +-1,FeTS2022_01675 +-1,FeTS2022_01676 +-1,FeTS2022_01677 +-1,FeTS2022_01720 +-1,FeTS2022_01724 +-1,FeTS2022_00145 +-1,FeTS2022_01693 +-1,FeTS2022_01006 +-1,FeTS2022_01727 +-1,FeTS2022_01694 +-1,FeTS2022_01729 +-1,FeTS2022_01695 +-1,FeTS2022_00997 +-1,FeTS2022_01696 +-1,FeTS2022_01732 +-1,FeTS2022_01697 +-1,FeTS2022_01698 +-1,FeTS2022_01699 +-1,FeTS2022_01700 +-1,FeTS2022_01701 +-1,FeTS2022_01702 +-1,FeTS2022_01703 +-1,FeTS2022_00135 +-1,FeTS2022_01704 +-1,FeTS2022_01705 +-1,FeTS2022_01706 +-1,FeTS2022_01707 +-1,FeTS2022_01708 +-1,FeTS2022_01709 +-1,FeTS2022_01710 +-1,FeTS2022_01711 +-1,FeTS2022_01712 +-1,FeTS2022_01713 +-1,FeTS2022_00129 +-1,FeTS2022_00125 +-1,FeTS2022_01714 +-1,FeTS2022_00119 +-1,FeTS2022_01736 +-1,FeTS2022_00114 +-1,FeTS2022_01738 +-1,FeTS2022_00141 +-1,FeTS2022_01715 +-1,FeTS2022_01716 +-1,FeTS2022_01717 +-1,FeTS2022_01721 +-1,FeTS2022_01756 +-1,FeTS2022_01757 +-1,FeTS2022_01758 +-1,FeTS2022_01759 +-1,FeTS2022_01760 +-1,FeTS2022_01761 +-1,FeTS2022_01762 +-1,FeTS2022_01763 +-1,FeTS2022_01764 +-1,FeTS2022_01765 +-1,FeTS2022_01766 +-1,FeTS2022_01767 +-1,FeTS2022_01768 +-1,FeTS2022_01770 +-1,FeTS2022_01769 +-1,FeTS2022_01772 +-1,FeTS2022_01771 +-1,FeTS2022_00001 +-1,FeTS2022_00013 +-1,FeTS2022_00015 +-1,FeTS2022_00027 +-1,FeTS2022_00037 +-1,FeTS2022_00047 +-1,FeTS2022_00079 +-1,FeTS2022_00080 +-1,FeTS2022_00082 +-1,FeTS2022_00091 +-1,FeTS2022_01722 +-1,FeTS2022_01723 +-1,FeTS2022_01741 +-1,FeTS2022_01725 +-1,FeTS2022_01726 +-1,FeTS2022_01728 +-1,FeTS2022_01742 +-1,FeTS2022_01743 +-1,FeTS2022_01730 +-1,FeTS2022_01744 +-1,FeTS2022_01731 +-1,FeTS2022_01733 +-1,FeTS2022_01734 +-1,FeTS2022_01735 +-1,FeTS2022_01747 +-1,FeTS2022_01737 +-1,FeTS2022_01739 +-1,FeTS2022_01740 +-1,FeTS2022_01745 +-1,FeTS2022_01746 +-1,FeTS2022_01748 +-1,FeTS2022_00153 +-1,FeTS2022_01749 +-1,FeTS2022_01750 +-1,FeTS2022_01751 +-1,FeTS2022_01752 +-1,FeTS2022_01753 +-1,FeTS2022_01754 +-1,FeTS2022_01755 +-1,FeTS2022_01773 +-1,FeTS2022_01774 +-1,FeTS2022_01775 +-1,FeTS2022_01776 +-1,FeTS2022_00161 +-1,FeTS2022_00163 +-1,FeTS2022_00174 +-1,FeTS2022_00181 +-1,FeTS2022_00182 +-1,FeTS2022_00190 +-1,FeTS2022_00200 +-1,FeTS2022_00208 +-1,FeTS2022_00213 +-1,FeTS2022_00252 +-1,FeTS2022_00256 +-1,FeTS2022_00264 +-1,FeTS2022_00287 +-1,FeTS2022_00307 +-1,FeTS2022_00323 +-1,FeTS2022_00335 +-1,FeTS2022_00355 +-1,FeTS2022_00372 +-1,FeTS2022_00381 +-1,FeTS2022_00422 +-1,FeTS2022_00428 +-1,FeTS2022_00438 +-1,FeTS2022_00447 +-1,FeTS2022_00450 +-1,FeTS2022_00458 +-1,FeTS2022_00460 +-1,FeTS2022_00462 +-1,FeTS2022_00463 +-1,FeTS2022_00467 +-1,FeTS2022_00474 +-1,FeTS2022_00489 +-1,FeTS2022_00492 +-1,FeTS2022_00503 +-1,FeTS2022_00521 +-1,FeTS2022_00535 +-1,FeTS2022_00553 +-1,FeTS2022_00560 +-1,FeTS2022_00603 +-1,FeTS2022_01777 +-1,FeTS2022_01778 +-1,FeTS2022_01779 +-1,FeTS2022_01780 +-1,FeTS2022_01781 +-1,FeTS2022_01782 +-1,FeTS2022_01783 +-1,FeTS2022_01784 +-1,FeTS2022_01785 +-1,FeTS2022_01786 +-1,FeTS2022_01787 +-1,FeTS2022_01788 +-1,FeTS2022_01789 +-1,FeTS2022_01790 +-1,FeTS2022_00644 +-1,FeTS2022_00647 +-1,FeTS2022_00662 +-1,FeTS2022_00671 +-1,FeTS2022_00681 +-1,FeTS2022_00699 +-1,FeTS2022_00702 +-1,FeTS2022_00712 +-1,FeTS2022_00719 +-1,FeTS2022_00721 +-1,FeTS2022_00749 +-1,FeTS2022_00762 +-1,FeTS2022_00769 +-1,FeTS2022_00779 +-1,FeTS2022_00821 +-1,FeTS2022_00822 +-1,FeTS2022_00825 +-1,FeTS2022_00826 +-1,FeTS2022_00829 +-1,FeTS2022_01791 +-1,FeTS2022_01792 +-1,FeTS2022_01793 +-1,FeTS2022_01794 +-1,FeTS2022_01795 +-1,FeTS2022_01796 +-1,FeTS2022_01797 +-1,FeTS2022_01798 diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt new file mode 100644 index 0000000..8b73f89 --- /dev/null +++ b/Task_1/cert/ca/root-ca.crt @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEhjCCAu6gAwIBAgIRAPn4axsy5E/rlwC4vGSLfi4wDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1NloXDTI1MDgyODE2 +NTM1NlowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ +bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAoK3/EIg/z0HdAax3cv9zgAu4OULrznwIB4qVXTMI9/Q8nZMK +raPpQ2HzEatKTzv+I+HdcsBrkROics2wlrNLWq6ESnT1/ZAstiNeXctn9Hivp7b8 +vdJ2baT1704L7jNfUJOaOv94Z2UlnSBimqsyWiRZhze2gENH0ceuqKX+jnH9BDt3 +h5VpVXmxr/42qzpae+48EbVcEofKa372JPpX52BizJJeOEFRl3ZrlR7umNEIjlCp +V+T4CERfSvDMrsPQTYV7UjLajgkC8oIhZ+VVIAmzV32TPRpFQkdX1aK4NYkKguvy +K0+aeFI/yUyoF93D0ZHQv5oJd0fAMaacg34XEoMEponOA0aA+/P5qT0MipCntNkk +lNiM3yQG+kr4a/wTKk/N+Rtmu2XHTeNM2CqpKuEFnolAQ4BWvmRePMLlKHQEqt4E +uk1TijoHiK1GXIkZqRxpWIEggXSGISTnwsOJ77IwUxxeBcuWED+91TaRZ4gWGYbU +0mBbhpfo8lvxFKfBAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBADmCfBppGwGCaJLnVhLbh3eWV7X62EbWoMKWf/robiwzHiU5wU3n +JN7VJitRfH/jjYDbhbZlT8+l/q9ZZiLvuLgENypXN40GrGGA2LhZkBtXYHcf0R3W +j18INYxbB7NH7HhwOq2JO/oS2p1YqJOKzf4RtnQUUrAgCSiVXsQgmia2zO5fbEqH +Zm5l0/PFCqw+Mf2ct8AK9SIXIa9sbW9LS3j+B5RIXdRDi5mHXTa1jZbdTiRAlcJa +mBsc88LYHuosI7xHmC1N9NViy4oK0RMPt8d82pOdmgDcpLl9Sjdr5ETkRoJvfcLt +iiMjd0cHJ0EeTLUHIGT5pDw/kNVront4AEOybRNwcVq0Kg5lMfYSGzA3b4oCNIuB +jo0WuR+BXuJu3NpU8ctENzfgzrW4h3d24tkYKnvLFGUajMsd3RVYUyYEROGBDaTR +xNf0JQR3S2AR4SgfNZwlPEwccNhiWKInPwEYvkzPVPysf9wbY1voQy0WWmS6GsE5 +/pCkjmGslbPs+A== +-----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/db/root-ca.crl.srl b/Task_1/cert/ca/root-ca/db/root-ca.crl.srl new file mode 100644 index 0000000..a616ad4 --- /dev/null +++ b/Task_1/cert/ca/root-ca/db/root-ca.crl.srl @@ -0,0 +1 @@ +01 \ No newline at end of file diff --git a/Task_1/cert/ca/root-ca/db/root-ca.crt.srl b/Task_1/cert/ca/root-ca/db/root-ca.crt.srl new file mode 100644 index 0000000..a616ad4 --- /dev/null +++ b/Task_1/cert/ca/root-ca/db/root-ca.crt.srl @@ -0,0 +1 @@ +01 \ No newline at end of file diff --git a/Task_1/cert/ca/root-ca/db/root-ca.db b/Task_1/cert/ca/root-ca/db/root-ca.db new file mode 100644 index 0000000..e69de29 diff --git a/Task_1/cert/ca/root-ca/db/root-ca.db.attr b/Task_1/cert/ca/root-ca/db/root-ca.db.attr new file mode 100644 index 0000000..e69de29 diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key new file mode 100644 index 0000000..efe8953 --- /dev/null +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt new file mode 100644 index 0000000..96f4ff2 --- /dev/null +++ b/Task_1/cert/ca/signing-ca.crt @@ -0,0 +1,27 @@ +-----BEGIN CERTIFICATE----- +MIIEjDCCAvSgAwIBAgIRAKU0fKB6P0Snr1EqK54jl9AwDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1N1oXDTI1MDgyODE2 +NTM1N1owejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs +ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEAvCfToD7c7GdhpaVQf9IVyNyxA6hAJ22aSxFZ+4Oq +0Jj5gJJyMXMdyE84+26c/LB3EHvVD+y5R2uKjXDPId3A4bpSsAWj2Wv4qxgIhi57 +RnqTto6yMLmfZU1+RDAmtWf5PCtL9ptta8kPr7bKOYlANXexakpDvDSXEszA7XnY +QtcGt/CL8nUjCbcd9gigjPFewBQ3OKUgaBUKTtWbbkoJwHhux8IlcfJjlUP9galG +6PNdpXnyAuih+fx3HuQFz3gMBK4sOxFE+sSo+8nDkxqkN0HHpcwlExt1jLRvuOhE +gdzPkrNIGNFgJAKZVnd4EBeiQrxpEYLQ8QTxsw9DRcYoQMK7z6AErGeVYmvbmJd5 +cv0c9rSPvW+gzgoJP1+LW8aO0w4lErRdT2jwpbo7/+5nyPgHKhlYORzu5SrjSD+2 +Uyle2qwTgoP5rIcIrUf301OAwVXWTYMck0yn+q2J/0ApuTqPKcBVBIRVzMCWhQ/V +/01sm3ar8tH9cNzsaGbSyZIdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBAC1QS5H3qSnsTIzUDV6xcQm78OwUmNiGrGoCCmC+g1JE +YsbWpS2BLCXV71QcTgaf6CCZU/zo8KbMpMhjZf1IEHUMhWkEUDpfM8lpO8qV7kOD +RKxYWo/i+EpAw41iAdtShj05ktosBheZ6FMY4RtFU/lb1yjGHAwEpSFJ1oVjJVlh +7NMMRnAXdFnNMr4DKkShL4UcQNcE/DL+IR9KzwH06MvD1D4HUVquKjmsPbiIA0LC +lb+LmsJJhk4w/6bys1gbb0ps0W0vr4uVXmi6X5kIyO5/N3og3WWELIdKf0UukTh1 +cGlsP7iMH6Z+AKEuN7ksLfCIFI1vLG72RQUEho5MYf78jMGfVYJo/7qbCLqiT9HO +VA9kmWpLoYQpbQKQOj/t+ic+maxpl4WIvPyqznQhM2vyA6cJb9mNAejBWSR/t/hC +v6xZMe2KM7CUm7+aYDycTyCaDqUinENrdUrD8OE8JiDvlnfcFMulsh+K4wXka9zR +ayQOvGnGNV6BmBcCJFfe6g== +-----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr new file mode 100644 index 0000000..854d996 --- /dev/null +++ b/Task_1/cert/ca/signing-ca.csr @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIID4TCCAkkCAQAwejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk +ARkWBnNpbXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoM +ClNpbXBsZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkq +hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvCfToD7c7GdhpaVQf9IVyNyxA6hAJ22a +SxFZ+4Oq0Jj5gJJyMXMdyE84+26c/LB3EHvVD+y5R2uKjXDPId3A4bpSsAWj2Wv4 +qxgIhi57RnqTto6yMLmfZU1+RDAmtWf5PCtL9ptta8kPr7bKOYlANXexakpDvDSX +EszA7XnYQtcGt/CL8nUjCbcd9gigjPFewBQ3OKUgaBUKTtWbbkoJwHhux8IlcfJj +lUP9galG6PNdpXnyAuih+fx3HuQFz3gMBK4sOxFE+sSo+8nDkxqkN0HHpcwlExt1 +jLRvuOhEgdzPkrNIGNFgJAKZVnd4EBeiQrxpEYLQ8QTxsw9DRcYoQMK7z6AErGeV +YmvbmJd5cv0c9rSPvW+gzgoJP1+LW8aO0w4lErRdT2jwpbo7/+5nyPgHKhlYORzu +5SrjSD+2Uyle2qwTgoP5rIcIrUf301OAwVXWTYMck0yn+q2J/0ApuTqPKcBVBIRV +zMCWhQ/V/01sm3ar8tH9cNzsaGbSyZIdAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBAIa+PVOEYNL1v3Iq +VCZZREFjjYFxi5vhbkBgNk4eLk7+X5eEvdoPV5Gw2Hkvq0gvze9vi7nbXbBnz4G/ +NUUm/BRRZB56Y5MsXI0mZI1HBLE9OfG2gsSyZVqcWcA0+xFxFMVItVR/R4B8LDbD +60JF/Samfr58OklJjOODHZwmEH+vMxNVcUVic+Xn6iiTNGBQ96x3NkbXFpTuD59K +gfSbBBXw62WlQS7UWvlR0D+awvmseQqsyUU7btEPD1JDY5YPOV+RtuFASwHUrx82 +OLvdehzCDCPz7RNbbQEHsX9uEHGzH+TjgBLtVIiQ/fBjzLgfYB+H6+8rCJMdNf/L +Sk22tUqwSIaDAJuJueovQMs0sXbXlG6FcuN7YwpSBOpoTE6I3HPmi2JSsmnVs6p3 +dpkRqQU7Ecr4hqzI3DaiChOTQ6khojhpCsYAxLA8EhzQTpKcZT678gLD4bqDxgH5 +iRaAgVlLnIAeOvHJy7r5f1Aac/iJ8U6QCWvWzGXATHbArwl4tw== +-----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl b/Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl new file mode 100644 index 0000000..a616ad4 --- /dev/null +++ b/Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl @@ -0,0 +1 @@ +01 \ No newline at end of file diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl b/Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl new file mode 100644 index 0000000..a616ad4 --- /dev/null +++ b/Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl @@ -0,0 +1 @@ +01 \ No newline at end of file diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.db b/Task_1/cert/ca/signing-ca/db/signing-ca.db new file mode 100644 index 0000000..e69de29 diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.db.attr b/Task_1/cert/ca/signing-ca/db/signing-ca.db.attr new file mode 100644 index 0000000..e69de29 diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key new file mode 100644 index 0000000..05485b0 --- /dev/null +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt new file mode 100644 index 0000000..a97e6c5 --- /dev/null +++ b/Task_1/cert/cert_chain.crt @@ -0,0 +1,54 @@ +-----BEGIN CERTIFICATE----- +MIIEhjCCAu6gAwIBAgIRAPn4axsy5E/rlwC4vGSLfi4wDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1NloXDTI1MDgyODE2 +NTM1NlowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ +bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAoK3/EIg/z0HdAax3cv9zgAu4OULrznwIB4qVXTMI9/Q8nZMK +raPpQ2HzEatKTzv+I+HdcsBrkROics2wlrNLWq6ESnT1/ZAstiNeXctn9Hivp7b8 +vdJ2baT1704L7jNfUJOaOv94Z2UlnSBimqsyWiRZhze2gENH0ceuqKX+jnH9BDt3 +h5VpVXmxr/42qzpae+48EbVcEofKa372JPpX52BizJJeOEFRl3ZrlR7umNEIjlCp +V+T4CERfSvDMrsPQTYV7UjLajgkC8oIhZ+VVIAmzV32TPRpFQkdX1aK4NYkKguvy +K0+aeFI/yUyoF93D0ZHQv5oJd0fAMaacg34XEoMEponOA0aA+/P5qT0MipCntNkk +lNiM3yQG+kr4a/wTKk/N+Rtmu2XHTeNM2CqpKuEFnolAQ4BWvmRePMLlKHQEqt4E +uk1TijoHiK1GXIkZqRxpWIEggXSGISTnwsOJ77IwUxxeBcuWED+91TaRZ4gWGYbU +0mBbhpfo8lvxFKfBAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBADmCfBppGwGCaJLnVhLbh3eWV7X62EbWoMKWf/robiwzHiU5wU3n +JN7VJitRfH/jjYDbhbZlT8+l/q9ZZiLvuLgENypXN40GrGGA2LhZkBtXYHcf0R3W +j18INYxbB7NH7HhwOq2JO/oS2p1YqJOKzf4RtnQUUrAgCSiVXsQgmia2zO5fbEqH +Zm5l0/PFCqw+Mf2ct8AK9SIXIa9sbW9LS3j+B5RIXdRDi5mHXTa1jZbdTiRAlcJa +mBsc88LYHuosI7xHmC1N9NViy4oK0RMPt8d82pOdmgDcpLl9Sjdr5ETkRoJvfcLt +iiMjd0cHJ0EeTLUHIGT5pDw/kNVront4AEOybRNwcVq0Kg5lMfYSGzA3b4oCNIuB +jo0WuR+BXuJu3NpU8ctENzfgzrW4h3d24tkYKnvLFGUajMsd3RVYUyYEROGBDaTR +xNf0JQR3S2AR4SgfNZwlPEwccNhiWKInPwEYvkzPVPysf9wbY1voQy0WWmS6GsE5 +/pCkjmGslbPs+A== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEjDCCAvSgAwIBAgIRAKU0fKB6P0Snr1EqK54jl9AwDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1N1oXDTI1MDgyODE2 +NTM1N1owejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs +ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEAvCfToD7c7GdhpaVQf9IVyNyxA6hAJ22aSxFZ+4Oq +0Jj5gJJyMXMdyE84+26c/LB3EHvVD+y5R2uKjXDPId3A4bpSsAWj2Wv4qxgIhi57 +RnqTto6yMLmfZU1+RDAmtWf5PCtL9ptta8kPr7bKOYlANXexakpDvDSXEszA7XnY +QtcGt/CL8nUjCbcd9gigjPFewBQ3OKUgaBUKTtWbbkoJwHhux8IlcfJjlUP9galG +6PNdpXnyAuih+fx3HuQFz3gMBK4sOxFE+sSo+8nDkxqkN0HHpcwlExt1jLRvuOhE +gdzPkrNIGNFgJAKZVnd4EBeiQrxpEYLQ8QTxsw9DRcYoQMK7z6AErGeVYmvbmJd5 +cv0c9rSPvW+gzgoJP1+LW8aO0w4lErRdT2jwpbo7/+5nyPgHKhlYORzu5SrjSD+2 +Uyle2qwTgoP5rIcIrUf301OAwVXWTYMck0yn+q2J/0ApuTqPKcBVBIRVzMCWhQ/V +/01sm3ar8tH9cNzsaGbSyZIdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBAC1QS5H3qSnsTIzUDV6xcQm78OwUmNiGrGoCCmC+g1JE +YsbWpS2BLCXV71QcTgaf6CCZU/zo8KbMpMhjZf1IEHUMhWkEUDpfM8lpO8qV7kOD +RKxYWo/i+EpAw41iAdtShj05ktosBheZ6FMY4RtFU/lb1yjGHAwEpSFJ1oVjJVlh +7NMMRnAXdFnNMr4DKkShL4UcQNcE/DL+IR9KzwH06MvD1D4HUVquKjmsPbiIA0LC +lb+LmsJJhk4w/6bys1gbb0ps0W0vr4uVXmi6X5kIyO5/N3og3WWELIdKf0UukTh1 +cGlsP7iMH6Z+AKEuN7ksLfCIFI1vLG72RQUEho5MYf78jMGfVYJo/7qbCLqiT9HO +VA9kmWpLoYQpbQKQOj/t+ic+maxpl4WIvPyqznQhM2vyA6cJb9mNAejBWSR/t/hC +v6xZMe2KM7CUm7+aYDycTyCaDqUinENrdUrD8OE8JiDvlnfcFMulsh+K4wXka9zR +ayQOvGnGNV6BmBcCJFfe6g== +-----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt new file mode 100644 index 0000000..6f0ef5a --- /dev/null +++ b/Task_1/cert/client/col_one.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEMzCCApugAwIBAgIRALGrJcWLsEZatOIM2L9gs4AwDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDgyODE2NTM1N1oXDTI1 +MDgyODE2NTM1N1owDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAnzsd/2TmHa9Npp8241olWWJClIgr4bODy9qA8leENCSEUdzK +KeGKjdhbVTblE5PdMExmknWBEM3G9Mp7bnd3XEpUDGUYj7Mu+7cVQRJBhRhpySs+ +XQb9jHuEntw6PcU1+SY+ZLH01S9OKFVOWDyhBOMxfOT65GNKVEgq5rFWZmHiKsqQ +uOPdKcqQ81Dp35ogeUdzY7dVSACGoomMa65C8lBV6ueKMxpDqXHyIp9w66B0HH55 +KMDXg0SMPAiA+RXEt2Lhr5PgX6iQ2Ea02f9mTow8elptdH4u3P5sqh54jCJrk2RS +lGsCIKa0PbSEQ3UOhvKFAvWUKjtEdD7QwM0D/zTYxkqjSIvclvd7C+oNxo0hUbaN +bm+Ox+mS5dn6cJOr97mJxWxLcDE2xcRHxCkgcPVzuKUE2uxbGk6L+Io5Zg4i+cMJ +aj86Xaub1NZgDxOLkq6HFgBFxPoE7h+PhBaSSP+WUi4FPRiNFaznSq0S4RjMM9q6 +JBLflTAuH0dFOPrlAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +b25lMA0GCSqGSIb3DQEBDAUAA4IBgQAv3D59inLw8u9SqcC5+hjTe5RI3RRo9eNP +GP2scwAjo7mQxHmcak5mXhzbeNuMgAJ2/GpYMk8oZShcCUox/MICINBbNi+I70qJ +1XqkTisfBaLHz6W8X4GSriHbbPCn9czGyk8LMviiMv6qOz5SjMyXvjEe18ZP1/MG +uPKLpbTfqpBPHXJoj71e5bJ+XnTWUNAAtYyf+2vyQoI3Rj5KgtHE3Ylu0qwqQ2XW +6u5Rn35316Kd9klafqo6M94Nxe0BJzE5xUlCucfPFsOeHXxxgil3kVDhSideJ3Ii +UrR3/LBobfvj9+jsRg4bcbshJpv50jEAOSl2bK/BZmMwc4Qw6FoswizQ9UDN+SS0 +Qxr8hB0W9Z/Mkh6YbK6UdaxUkE3/it/6wNrF/Pf8Zq3Z7ZwPkQMgE018uUTY2dGU +kidzXNdhDrTVUdH7RcureKZetgsAqdeg8aOaWkCbbSigg1IgEJvLZXzrgnTFRELB +WYD8RBSB077MJqWFRbHK5mIC2rETWlA= +-----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key new file mode 100644 index 0000000..882c35b --- /dev/null +++ b/Task_1/cert/client/col_one.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt new file mode 100644 index 0000000..7cc2101 --- /dev/null +++ b/Task_1/cert/client/col_two.crt @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIEMjCCApqgAwIBAgIQGw4ZaujURJy7vyDSyTJsSzANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwODI4MTY1MzU4WhcNMjUw +ODI4MTY1MzU4WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQCoY04uf4yoqYsFJSdNOS7JATcLlLi4yet16EbdYd9FVCjRFJk2 +fS/tVgDCkkUIilA/jc6SnRHmGrR12nQWTwHCkEb98nrp2T0gKlIfFaJOei+kz8V2 +1yKmni3SiLsTSaREECQ+BapfCG3Kl9Snugvq3XDjdyEyBrkXhVZfYl8raQNPr0hS +Huhm+B5zSCV1ugYZLOn5ki2vMaHMxwbC29jPe0fwBFmg7rGTd8a4od0KtQVqeWE7 +oV5Q6MW3CQLqRUFHHVm1AH45oVTGnAwWHzLsd+sIeqnkW2nd1t8mVhHSQxTi7qen +Efh+EsFBhM66F8d0LSsDecOL1joDXj7iXicc/AuJG8V22twABvKfj1t14GHwJzLS +gawbXBnv5huqShJ48zD0k6fPCE8mojY2ZqE3LbpxEkjzlNJ+5wgABEBJU2ATrEPQ +aeGvRlZiIg/WeG2+Lq6qYCdvUAGLalis/ISO/o+novgQSxNi/kgXmQqQYyXMrps1 +JNTgQvgdO6pykfsCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 +d28wDQYJKoZIhvcNAQEMBQADggGBAKty2FotDg6/6SroK9DuaO2mlLH3kZwyOf+e +nSRwzPnKUnBerRHFmtG239GQybxKOyDb8WXSZ7X5CHyl29IiQptpiVPCVpvJnpq5 +gpShS7uaT9psPwR2DR1h9jtne5DXwrVjzWfJNQ8hkcJKSzryzxvFWvbIGGxy3i8g +n/SxiNQB1oNUku/F3hDnBGdkMY+kH/O1ryE80LoeALB302kGoW4TVGV9kLjD6FFL +nEXxcs2jEFaaiLRsDdMYUSBwwt7SHq4wC7tlslfuPe9ZnJeEvo911QgrM3OnOH+w +ii/qiWqHLAoCEColOX099q+3Aww4MhHJYwYH9rxvNFqqhs3TFE3aFfKpgZlft9ZW +cOKlWQXap7vdK0wgfSxeTfdF9kpVyWFWDB397+DY4shqIkYNbFn7zEM+x/UUrQ/H +Zx3Wmcjz3UJXp3nRmjf3/Opj699i+mE7MdOyxnFewo20tR3rOU0UXwG/Mfzvl8Jj +lry9GRVyN54hTEtRpoK8yaKuAZKPLw== +-----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key new file mode 100644 index 0000000..0eced35 --- /dev/null +++ b/Task_1/cert/client/col_two.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr new file mode 100644 index 0000000..cfd3510 --- /dev/null +++ b/Task_1/cert/col_one.csr @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIDqjCCAhICAQAwDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAnzsd/2TmHa9Npp8241olWWJClIgr4bODy9qA8leENCSEUdzK +KeGKjdhbVTblE5PdMExmknWBEM3G9Mp7bnd3XEpUDGUYj7Mu+7cVQRJBhRhpySs+ +XQb9jHuEntw6PcU1+SY+ZLH01S9OKFVOWDyhBOMxfOT65GNKVEgq5rFWZmHiKsqQ +uOPdKcqQ81Dp35ogeUdzY7dVSACGoomMa65C8lBV6ueKMxpDqXHyIp9w66B0HH55 +KMDXg0SMPAiA+RXEt2Lhr5PgX6iQ2Ea02f9mTow8elptdH4u3P5sqh54jCJrk2RS +lGsCIKa0PbSEQ3UOhvKFAvWUKjtEdD7QwM0D/zTYxkqjSIvclvd7C+oNxo0hUbaN +bm+Ox+mS5dn6cJOr97mJxWxLcDE2xcRHxCkgcPVzuKUE2uxbGk6L+Io5Zg4i+cMJ +aj86Xaub1NZgDxOLkq6HFgBFxPoE7h+PhBaSSP+WUi4FPRiNFaznSq0S4RjMM9q6 +JBLflTAuH0dFOPrlAgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC +MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDgYDVR0PAQH/BAQDAgWgMA4GA1Ud +EQQHMAWCA29uZTANBgkqhkiG9w0BAQwFAAOCAYEAUjof9Fimf7x80XaqqnX9enMW +byT5/oI9cmauioOdroiOGqTIGt2kDUJFwiSlBSjVpMNvzCRZtrFhFekwwimsJO/I +UcMFIbrMJ51f//CaPiYvmrG7byoTlJl7LsvAdP6ua7Zs1we6fH3ZSnU3XJKh2p66 +Y88yu8VH3vRL1+WQrE0zAoarenLHG4rGvY6WMUXWX723FCE7RVVFkFI07/XUgQna +PF0HeDmKVhn2sOmyv5U83SG/lzTlejmuFBOYb2HdHQdZz9I1OC/Vl2nuub+B3bGD +sItiS5OpoRhtMe+VaHLwzSjWPcgLAlLZLMk0C8nL+mSMWI5DJnXXdbpGGgxEgakt +Dd60CxLh0MJ+p9lEwhTVOGQeISq6eBE8CacqdiBWw0WH4RH6EUAvEBfQKjTmLaFh +bbQJ4L52sciFyK8wOf2OLXZaPlDtl2i1Y3rr0raVwEKV3iAqeQRVfEGbM67bXCjm +pel5kZ8DjVLI2tl+wcQFriAyc0fpU0vRLb9QgEO1 +-----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr new file mode 100644 index 0000000..8daf426 --- /dev/null +++ b/Task_1/cert/col_two.csr @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIIDqjCCAhICAQAwDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAqGNOLn+MqKmLBSUnTTkuyQE3C5S4uMnrdehG3WHfRVQo0RSZ +Nn0v7VYAwpJFCIpQP43Okp0R5hq0ddp0Fk8BwpBG/fJ66dk9ICpSHxWiTnovpM/F +dtcipp4t0oi7E0mkRBAkPgWqXwhtypfUp7oL6t1w43chMga5F4VWX2JfK2kDT69I +Uh7oZvgec0gldboGGSzp+ZItrzGhzMcGwtvYz3tH8ARZoO6xk3fGuKHdCrUFanlh +O6FeUOjFtwkC6kVBRx1ZtQB+OaFUxpwMFh8y7HfrCHqp5Ftp3dbfJlYR0kMU4u6n +pxH4fhLBQYTOuhfHdC0rA3nDi9Y6A14+4l4nHPwLiRvFdtrcAAbyn49bdeBh8Ccy +0oGsG1wZ7+YbqkoSePMw9JOnzwhPJqI2NmahNy26cRJI85TSfucIAARASVNgE6xD +0Gnhr0ZWYiIP1nhtvi6uqmAnb1ABi2pYrPyEjv6Pp6L4EEsTYv5IF5kKkGMlzK6b +NSTU4EL4HTuqcpH7AgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC +MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDgYDVR0PAQH/BAQDAgWgMA4GA1Ud +EQQHMAWCA3R3bzANBgkqhkiG9w0BAQwFAAOCAYEAIl5YVxe9eykuj45xvVfcSvOp +a4JGO5Cp5qGGEKVgih8LsdrnOrn/XanT7sFYy5k/H+w/7oJfQEV6zWtM1OmLKRF+ +ie5tL13JGnov0H7HL+AM6JU/INokT0zr++xwjSOsqC5CUvv+5cNOtDB/Wgocti2E +QWFlcwkmlhvQm5TM1k8T0CLtaOVXCcXRP+f5ZvFxrAvGhAq7kPZMVsAOD0JcXvJl +NvfRgvfMWG+X6GgPHld4GxjB2citue8TfV8H9rAbLraK66EAkESYBuwshPxapRr3 +jEuvXG2Bajg5k4VfsRIsOtzinJPhrh1+tsCgdkZkPMlwRMk75gg0hJhEUt7Wv97r +7T6FwIPWVPqQ+NKO5P0WQUhXHtJXfKUIrI47xTTy4X67l6wNfqGjy4Id9WYPt6xj +EMy1JKKGBBRpTtieOgg0QMyb9toTIz9TIgBOanRIiC4+txRaKkgyEVSHmeJ+K3uG +U1BRkz6er4QIUjZtDe9D0DsEgyAOVkzC5/OTZL1Q +-----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt new file mode 100644 index 0000000..f72679a --- /dev/null +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -0,0 +1,26 @@ +-----BEGIN CERTIFICATE----- +MIIEXDCCAsSgAwIBAgIQbehulRH7TFCeh9l6sm0CwjANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwODI4MTY1MzU3WhcNMjUw +ODI4MTY1MzU3WjAjMSEwHwYDVQQDDBhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUw +ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCgvaTxBaF6leNQufWgvdqq +xyWCPoUxeolVpnMc6pRFN6jD7GRgpNd4t4HBFkW+I4VxkzVM6M6OIIhMdw/arS4o +8nFKCvMmMWdZD1uJATdwPHjQydbGjMQVEjEYhJZgTLMFCBRItDo0R6eZl+T2+SpN +siAZTbhhiAvAN8vWdeXtLVy3JqrBXqQqAPympnJ6GNEKLVSK/DGj1nUJlm9dX8lr +ZOi0CKY5OMmRIOEUMp0y43qLi8wArjOPoQdglVPQefthj8AMbgjM+tn1IPgNFhrC +oVVw1Yjfly6ERk4+uNkHtyYEcSK/t3cpmSvAZKb9w+yybGtYhNKX1P/U0edasp/0 +q+q404tiaQBOQBIktxx2iP6WGIr9QTIL/lkKGka1SCu9Si2TCYSohIrXbZU3YkEi +ZZHQ/RheQALinzo6JPrJDBg9xm6JU/ZP0H+QBZp5sz4QoATHt3+fnbXYLyyOKkT4 +k0drCjrkp14uJ4FHhC3sKj9kaqKMtNEYddsSAmSB4f0CAwEAAaM1MDMwDAYDVR0T +AQH/BAIwADAjBgNVHREEHDAaghhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUwDQYJ +KoZIhvcNAQEMBQADggGBAG2pOlzco2zk7SNP5o5aD/IwvpxVxLJxNOLPOS8syccN +6p76kfhaJJVmxU4KOxmpLhOtmlOVc6nyuIX549n6aj+MBDp6mgu2ZQpLGnUPVN+y +NJHLaBRXt9/yEbBPprwxbLw9AlTKv1pBH4FLBVdCSIbocydnBeBeGico0XUJ3FmK +DlCX9q5Hy8DLa39XfbIICGa6/kXWmi5ctMEuiH9u9JUdas5TsaBtaPVmVGTpOe/T +kLicM36/XmdgVvMaWUJpxczXRQl84SH1dmVc6m0t+jD+k+mJT+WDElKjPMYDzMwS +8+1mY6DUVqLUCjYE16BAimf+uB4m6mCP73DtE+N620V/mqGUd6N2ae/7jBZnyH+N +i1tZPZ3qO0xPCBPQrY4jceBmAoLhfDJKlNNJ1iG5/VoG1gOKFWGlXjxOQ4E/zWxa +Tni9euDLGvalr/kkTKWPcmwxnYE9I0tiqrebz2/QUp3TNT/8X2y2LPHFhSdRueEN +IyMG4i2ihhwP6Hql1oW6eg== +-----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr new file mode 100644 index 0000000..0885c5f --- /dev/null +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -0,0 +1,23 @@ +-----BEGIN CERTIFICATE REQUEST----- +MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAoL2k8QWhepXjULn1oL3a +qsclgj6FMXqJVaZzHOqURTeow+xkYKTXeLeBwRZFviOFcZM1TOjOjiCITHcP2q0u +KPJxSgrzJjFnWQ9biQE3cDx40MnWxozEFRIxGISWYEyzBQgUSLQ6NEenmZfk9vkq +TbIgGU24YYgLwDfL1nXl7S1ctyaqwV6kKgD8pqZyehjRCi1Uivwxo9Z1CZZvXV/J +a2TotAimOTjJkSDhFDKdMuN6i4vMAK4zj6EHYJVT0Hn7YY/ADG4IzPrZ9SD4DRYa +wqFVcNWI35cuhEZOPrjZB7cmBHEiv7d3KZkrwGSm/cPssmxrWITSl9T/1NHnWrKf +9KvquNOLYmkATkASJLccdoj+lhiK/UEyC/5ZChpGtUgrvUotkwmEqISK122VN2JB +ImWR0P0YXkAC4p86OiT6yQwYPcZuiVP2T9B/kAWaebM+EKAEx7d/n5212C8sjipE ++JNHawo65KdeLieBR4Qt7Co/ZGqijLTRGHXbEgJkgeH9AgMBAAGgbDBqBgkqhkiG +9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw +DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAIaAD8ft93LSu09svalINZ2Y2kNE/AbJG +NjYKZtfz7/IhyMtuXW15BV4UwNA/y4FuyX20NzYsAe2eLUJtnmJybux9FZuIDD4V +RDr5OZiiDIWQMVfpJbQv27QScB8VlMgdjR333vXOenfv6IOfVZLEEnSE1jakYhLP +qG16IMkyHWZcUBLSJ6UbgGP+G9ceKsBxNaHlMUPM98QAa++dkbw+e/AOILj7HOHw +Pzb9G8vT3u7OlDe4CQarKZdhxKNEiUN5hCJ35mzCMp4qmenOmr/chFZC3azyUGaW +ogDzE4bmAfKtqRD7dNLfEjtPTmHXK2hvq+AApZ1qZgAnfHb6G06+OeP2jDW9U8yY +b1U2zajsATWa0xqHe1Iw7WXvKBaYtxJvtpSNUh9ZP1wplubDf5g79W6YYs1+HPTI +5VasQQmqShUHh7U78y2xOYyhAr7tG+27RyT5lHxDiZ2pqBkd8+kZMWNZe/B/h8g5 +03uTnXXIe7Sj8XD5F9SaxkMxQ0e79QaZ +-----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key new file mode 100644 index 0000000..6e61cbe --- /dev/null +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge.egg-info/PKG-INFO b/Task_1/fets_challenge.egg-info/PKG-INFO new file mode 100644 index 0000000..43e953e --- /dev/null +++ b/Task_1/fets_challenge.egg-info/PKG-INFO @@ -0,0 +1,115 @@ +Metadata-Version: 2.1 +Name: fets_challenge +Version: 2.0 +Summary: FeTS Challenge Part 1 +Home-page: https://github.com/FETS-AI/Challenge +Author: Sarthak Pati and Ujjwal Baid and Maximilian Zenk and Brandon Edwards and Micah Sheller and G. Anthony Reina and Patrick Foley and Alexey Gruzdev and Jason Martin and Shadi Albarqouni and Yong Chen and Russell Taki Shinohara and Annika Reinke and David Zimmerer and John B. Freymann and Justin S. Kirby and Christos Davatzikos and Rivka R. Colen and Aikaterini Kotrotsou and Daniel Marcus and Mikhail Milchenko and Arash Nazer and Hassan Fathallah-Shaykh and Roland Wiest Andras Jakab and Marc-Andre Weber and Abhishek Mahajan and Lena Maier-Hein and Jens Kleesiek and Bjoern Menze and Klaus Maier-Hein and Spyridon Bakas +Classifier: Environment :: Console +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence +Classifier: Topic :: Scientific/Engineering :: Image Recognition +Classifier: License :: OSI Approved :: FETS UI License +Classifier: Programming Language :: Python :: 3 +Requires-Python: >=3.9 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: openfl@ git+https://github.com/intel/openfl.git@v1.5.1 +Requires-Dist: GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.20 +Requires-Dist: fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge + +# FeTS 2022 Challenge Task 1 +Task 1 (**"Federated Training"**) aims at effective weight aggregation methods for the creation of a consensus model given a pre-defined segmentation algorithm for training, while also (optionally) accounting for network outages. + +Please ask any additional questions in our discussion pages on our github site and we will try to update this README.md as we identify confusions/gaps in our explanations and instructions. + +## Getting started + +### System requirements + +1. [Git](https://git-scm.com/downloads) +2. [Git LFS](https://github.com/git-lfs/git-lfs#downloading) +2. Python with virtual environment management system: we recommend using [Anaconda](https://www.anaconda.com/products/individual). +3. **Windows- Only**: Pickle5 requires Microsoft C++ 14.0 or greater from the [C++ build tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/). +> * _Note: if you run into ```UnicodeDecodeError``` during installation, trying pinning ```openfl @ git+https://github.com/intel/openfl.git@v1.4``` in [setup.py](https://github.com/FeTS-AI/Challenge/blob/main/Task_1/setup.py#L31)_ +4. Use CUDA 11 for your installation as CUDA 12 is not compatible with this codebase. + +### Instructions --- IMPORTANT + +1. Register for the FeTS 2022 Challenge [here](https://www.synapse.org/#!Synapse:syn28546456/wiki/617093) and submit a data request. +2. ```git clone https://github.com/FETS-AI/Challenge.git``` +3. ```cd Challenge/Task_1``` +4. ```git lfs pull``` +5. Create virtual environment (python 3.9): using Anaconda, a new environment can be created and activated using the following commands: + ```sh + ## create venv in specific path + conda create -p ./venv python=3.9 -y + conda activate ./venv + ``` +6. ```pip install --upgrade pip``` +7. Install Pytorch (2.3.1) for your system: + ```pip install torch==2.3.1 torchvision==0.18.1``` +*Note all previous versions of pytorch can be found in [these instructions]([https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/previous-versions/)) +8. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) +9. ```pip install .``` +> * _Note: if you run into ```ERROR: Failed building wheel for SimpleITK```, try running ```pip install SimpleITK --only-binary :all:``` then rerunning ```pip install .```_ +10. ```python FeTS_Challenge.py``` +> * _Note: if you run into ```ImportError: /home/locolinux/FETS2024/fets2024env/bin/../lib/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /home/locolinux/FETS2024/fets2024env/lib/python3.7/site-packages/SimpleITK/_SimpleITK.so)```, try installing a previous version of SimpleITK (version 2.2.0 works) +11. All lower-level details are in the [FeTS Challenge python file](./FeTS_Challenge.py) +12. To view intermediate results with TensorBoard during training, you can run the following command: ```tensorboard --logdir ~/.local/workspace/logs/tensorboard``` + +## Time to Convergence Metric (formerly "communication cost") +Along with the typical DICE and Hausdorff metrics, we include a "time to convergence metric" intended to encourage solutions that converge to good scores quickly in terms of time. We simulate the time taken to run each round so that competitors don't need to be concerned with runtime optimizations such as compiled vs. interpreted code, and so that final scoring will not depend on the hardware used. This simulated time is computed in the experiment.py file and provided in the metrics output of the experiment execution. + +The time to convergence metric will be computed as the area under the validation learning curve over 1 week of simulated time where the horizontal axis measures simulated runtime and the vertical axis measures the current best score, computed as the average of enhancing tumor, tumor core, and whole tumor DICE scores over the validation split of the training data. + +You can find the code for the "time to convergence metric" in the experiment.py file by searching for ## CONVERGENCE METRIC COMPUTATION. + +### How Simulated Time is computed +The simulated time is stochastic, and computed per collaborator, per round, with the round time equaling the greatest round time of all collaborators in the round. + +A given collaborator's round time is computed as the sum of: +- The simulated time taken to download the shared model +- The simulated time taken to validate the shared model +- The simulated time taken to train the model (if training) +- The simulated time taken to validate that collaborator's trained model (if training) +- The simulated time taken to upload that collaborator's model update (if training) + +During the experiment, to generate these simulated times, we first assign each collaborator four normal distrubitions representing: +1. download speed +2. upload speed +3. training speed +4. validation speed + +We then draw from the appropriate distribution when generating one of the times listed above (at each round). + +We assign these network and compute distributions by drawing uniform-randomly from lists of normal distributions created using timing information collected from a subset of the 50+ participants in the May FeTS initiative training of this same model. In this way, the statistics used to simulate timing information come from timing information collected over an actual federation of hospitals that trained this exact model. In particular, for each actual hospital in our subset, we collected: +1. The mean and stdev seconds to download the model +2. The mean and stdev seconds to train a batch +3. The mean and stdev seconds to validate a batch +4. The mean and stdev seconds to upload the model. + +For a given collaborator, these normal distributions are constant throughout the experiment. Again, each possible timing distribution is based on actual timing information from a subset of the hospitals in the FeTS intitiative. You can find these distributions in the experiment.py file (search for ## COLLABORATOR TIMING DISTRIBUTIONS), as well as the random seed used to ensure reproducibility. + +### Use in Ranking + +For ranking of multidimensional outcomes (or metrics), for each team, we will compute the summation of their ranks across the average of the **7** metrics (i.e., time to convergence, and Dice & Hausdorff from 3 regions of interest) described as a univariate overall summary measure. This measure will decide the overall ranking for each specific team. Notably, since all teams are ranked per patient, whereas the communication cost is only accounted once for the complete training phase, the communication cost **will be weighted** according to the number of testing subjects in order to give it **equal importance** to the quality of the tumor segmentations. + + +## Data Partitioning and Sharding +The FeTS 2022 data release consists of a training set and two CSV files - each providing information for how to partition the training data into non-IID institutional subsets. The release will contain subfolders for single patient records whose names have the format `FeTS2022_###`, and two CSV files: +- **partitioning_1.csv** +- **partitioning_2.csv** + +Each of the partitioning CSV files has two columns, `Partition_ID` and `Subject_ID`. The Subject_ID column exhausts of the patient records contained in the release. The InstitutionName column provides an integer identifier indicating to which institution the record should be assigned. The path to a partition CSV can be provided as the value of the parameter ```institution_split_csv_filename``` to the jupyter notebook function run_challenge_experiment to specify the institutional split used when running experimental federated training on your custom federation logic. A description of each of these split CSVs is provided in Table 1. We encourage participants to create and explore training performance for other non-IID splits of the training data to help in developing generalizable customizations to the federated logic that will perform well during the validation and testing phase. A third CSV is hidden from participants and defines a test partitioning to be used in the challenge testing phase. This hidden partitioning (also described in Table 1) is another refinement of the institution split, having similar difficulty level to the institution tumor size split in our own experiments using the default customization functions. + +Table 1: Information for partitionings provided in the FeTS 2022 data release as well as the hidden partitioning not provided in the release (to be used in the competition testing phase). + +| Split name | CSV filename | Description | Number of institutions | +|-------------------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------| +| Institution Split | partitioning_1.csv | Split of FeTS 2022 training data by originating institution. | 23 | +| Institution Tumor Size Split | partitioning_2.csv | Refinement of the institution split by tumor size, further splitting the larger institutions according to whether a record’s tumor size fell above or below the mean size for that institution. | 33 | +| Test Split | - not provided - | Undisclosed refinement of the institution split. | Hidden from participants | + + + diff --git a/Task_1/fets_challenge.egg-info/SOURCES.txt b/Task_1/fets_challenge.egg-info/SOURCES.txt new file mode 100644 index 0000000..f6add58 --- /dev/null +++ b/Task_1/fets_challenge.egg-info/SOURCES.txt @@ -0,0 +1,28 @@ +LICENSE +MANIFEST.in +README.md +setup.py +fets_challenge/__init__.py +fets_challenge/checkpoint_utils.py +fets_challenge/custom_aggregation_wrapper.py +fets_challenge/experiment.py +fets_challenge/gandlf_csv_adapter.py +fets_challenge/inference.py +fets_challenge/spec_sens_code.py +fets_challenge.egg-info/PKG-INFO +fets_challenge.egg-info/SOURCES.txt +fets_challenge.egg-info/dependency_links.txt +fets_challenge.egg-info/requires.txt +fets_challenge.egg-info/top_level.txt +openfl-workspace/fets_challenge_workspace/partitioning_1.csv +openfl-workspace/fets_challenge_workspace/partitioning_2.csv +openfl-workspace/fets_challenge_workspace/requirements.txt +openfl-workspace/fets_challenge_workspace/small_split.csv +openfl-workspace/fets_challenge_workspace/validation.csv +openfl-workspace/fets_challenge_workspace/plan/cols.yaml +openfl-workspace/fets_challenge_workspace/plan/data.yaml +openfl-workspace/fets_challenge_workspace/plan/defaults +openfl-workspace/fets_challenge_workspace/plan/plan.yaml +openfl-workspace/fets_challenge_workspace/src/__init__.py +openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py +openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py \ No newline at end of file diff --git a/Task_1/fets_challenge.egg-info/dependency_links.txt b/Task_1/fets_challenge.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Task_1/fets_challenge.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/Task_1/fets_challenge.egg-info/requires.txt b/Task_1/fets_challenge.egg-info/requires.txt new file mode 100644 index 0000000..faafd5d --- /dev/null +++ b/Task_1/fets_challenge.egg-info/requires.txt @@ -0,0 +1,3 @@ +openfl@ git+https://github.com/intel/openfl.git@v1.5.1 +GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.20 +fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge diff --git a/Task_1/fets_challenge.egg-info/top_level.txt b/Task_1/fets_challenge.egg-info/top_level.txt new file mode 100644 index 0000000..7ad31f7 --- /dev/null +++ b/Task_1/fets_challenge.egg-info/top_level.txt @@ -0,0 +1,2 @@ +fets_challenge +openfl-workspace diff --git a/Task_1/fets_challenge/custom_aggregation_wrapper.py b/Task_1/fets_challenge/custom_aggregation_wrapper.py index ae7abc4..63472a6 100644 --- a/Task_1/fets_challenge/custom_aggregation_wrapper.py +++ b/Task_1/fets_challenge/custom_aggregation_wrapper.py @@ -1,4 +1,4 @@ -from openfl.component.aggregation_functions.experimental import PrivilegedAggregationFunction +from openfl.interface.aggregation_functions.experimental import PrivilegedAggregationFunction # extends the openfl agg func interface to include challenge-relevant information diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index f561e66..acf670b 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -13,7 +13,7 @@ import numpy as np import pandas as pd -from openfl.utilities import split_tensor_dict_for_holdouts, TensorKey +from openfl.utilities import TensorKey from openfl.protocols import utils import openfl.native as fx import torch @@ -214,6 +214,28 @@ def compute_times_per_collaborator(collaborator_names, times[col] = time return times +def split_tensor_dict_into_floats_and_non_floats(tensor_dict): + """ + Split the tensor dictionary into float and non-floating point values. + + Splits a tensor dictionary into float and non-float values. + + Args: + tensor_dict: A dictionary of tensors + + Returns: + Two dictionaries: the first contains all of the floating point tensors + and the second contains all of the non-floating point tensors + + """ + float_dict = {} + non_float_dict = {} + for k, v in tensor_dict.items(): + if np.issubdtype(v.dtype, np.floating): + float_dict[k] = v + else: + non_float_dict[k] = v + return float_dict, non_float_dict def get_metric(metric, fl_round, tensor_db): metric_name = metric @@ -264,6 +286,7 @@ def run_challenge_experiment(aggregation_function, # Update the plan if necessary plan = fx.update_plan(overrides) + print("****Debugging: plan is", plan) if not include_validation_with_hausdorff: plan.config['task_runner']['settings']['fets_config_dict']['metrics'] = ['dice','dice_per_label'] @@ -274,6 +297,12 @@ def run_challenge_experiment(aggregation_function, for col in collaborator_names: plan.cols_data_paths[col] = col + # Update the plan's data loader template for each collaborator + correct_template = "openfl.federated.data.loader_gandlf" + + # Modify the plan's data loader settings if needed + plan.config['data_loader'][col] = correct_template + # get the data loaders for each collaborator collaborator_data_loaders = {col: copy(plan).get_data_loader(col) for col in collaborator_names} diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index ca4476c..14d8426 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -21,7 +21,7 @@ collaborator : data_loader : defaults : plan/defaults/data_loader.yaml - template : openfl.federated.data.loader_fets_challenge.FeTSChallengeDataLoaderWrapper + template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper settings : feature_shape : [32, 32, 32] diff --git a/Task_1/setup.py b/Task_1/setup.py index 1ff561d..6f2c352 100644 --- a/Task_1/setup.py +++ b/Task_1/setup.py @@ -28,11 +28,11 @@ ], include_package_data=True, install_requires=[ - 'openfl @ git+https://github.com/intel/openfl.git@f4b28d710e2be31cdfa7487fdb4e8cb3a1387a5f', - 'GANDLF @ git+https://github.com/CBICA/GaNDLF.git@e4d0d4bfdf4076130817001a98dfb90189956278', + 'openfl @ git+https://github.com/intel/openfl.git@v1.5.1', + 'GANDLF @ git+https://github.com/CBICA/GaNDLF.git@0.0.20', 'fets @ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge', ], - python_requires='>=3.6, <3.9', + python_requires='>=3.9', classifiers=[ 'Environment :: Console', # How mature is this project? Common values are @@ -46,9 +46,6 @@ 'License :: OSI Approved :: FETS UI License', # Specify the Python versions you support here. In particular, ensure # that you indicate whether you support Python 2, Python 3 or both. - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3' ] ) From ba5b35bbfe6b0be2033df6eb42df54257f451b93 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Sun, 8 Sep 2024 23:01:09 -0400 Subject: [PATCH 02/19] kevin changes --- Task_1/fets_challenge/experiment.py | 8 ++++---- .../fets_challenge_workspace/plan/plan.yaml | 2 +- .../fets_challenge_workspace/src/fets_challenge_model.py | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index acf670b..96f5343 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -297,11 +297,11 @@ def run_challenge_experiment(aggregation_function, for col in collaborator_names: plan.cols_data_paths[col] = col - # Update the plan's data loader template for each collaborator - correct_template = "openfl.federated.data.loader_gandlf" + # # Update the plan's data loader template for each collaborator + # correct_template = "openfl.federated.data.loader_gandlf" - # Modify the plan's data loader settings if needed - plan.config['data_loader'][col] = correct_template + # # Modify the plan's data loader settings if needed + # plan.config['data_loader'][col] = correct_template # get the data loaders for each collaborator collaborator_data_loaders = {col: copy(plan).get_data_loader(col) for col in collaborator_names} diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 14d8426..91fb853 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -31,7 +31,7 @@ task_runner : train_csv : seg_test_train.csv val_csv : seg_test_val.csv device : cpu - fets_config_dict : + gandlf_config : batch_size: 1 clip_grad: null clip_mode: null diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py b/Task_1/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py index 3794be6..66a0c82 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py +++ b/Task_1/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py @@ -8,10 +8,10 @@ import numpy as np import torch as pt -from openfl.utilities import split_tensor_dict_for_holdouts +from openfl.utilities.split import split_tensor_dict_for_holdouts from openfl.utilities import TensorKey -from openfl.federated.task.runner_fets_challenge import * +from openfl.federated.task.runner_gandlf import * from GANDLF.compute.generic import create_pytorch_objects from GANDLF.compute.training_loop import train_network @@ -19,7 +19,7 @@ from . import TRAINING_HPARAMS -class FeTSChallengeModel(FeTSChallengeTaskRunner): +class FeTSChallengeModel(GaNDLFTaskRunner): """FeTSChallenge Model class for Federated Learning.""" def validate(self, col_name, round_num, input_tensor_dict, From 295c046a2e57fd51f563e2ff3b7a3d2142d2b1e4 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Wed, 11 Sep 2024 14:28:42 -0400 Subject: [PATCH 03/19] GaNDLF pinned to 0.0.17 --- Task_1/README.md | 2 +- .../custom_aggregation_wrapper.py | 2 +- Task_1/build/lib/fets_challenge/experiment.py | 36 ++++++- .../fets_challenge_workspace/plan/plan.yaml | 12 +-- .../src/fets_challenge_model.py | 6 +- Task_1/cert/ca/root-ca.crt | 50 ++++----- Task_1/cert/ca/root-ca/private/root-ca.key | 74 ++++++------- Task_1/cert/ca/signing-ca.crt | 50 ++++----- Task_1/cert/ca/signing-ca.csr | 36 +++---- .../cert/ca/signing-ca/private/signing-ca.key | 74 ++++++------- Task_1/cert/cert_chain.crt | 100 +++++++++--------- Task_1/cert/client/col_one.crt | 42 ++++---- Task_1/cert/client/col_one.key | 74 ++++++------- Task_1/cert/client/col_two.crt | 46 ++++---- Task_1/cert/client/col_two.key | 74 ++++++------- Task_1/cert/col_one.csr | 36 +++---- Task_1/cert/col_two.csr | 36 +++---- .../server/agg_in-ota-232347.ads.iu.edu.crt | 48 ++++----- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 +++---- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 ++++++------- Task_1/fets_challenge.egg-info/PKG-INFO | 4 +- Task_1/fets_challenge.egg-info/SOURCES.txt | 1 + Task_1/fets_challenge.egg-info/requires.txt | 2 +- Task_1/fets_challenge/experiment.py | 5 +- .../fets_challenge_workspace/plan/plan.yaml | 8 +- .../smaller_split.csv | 7 ++ Task_1/setup.py | 2 +- 27 files changed, 488 insertions(+), 449 deletions(-) create mode 100644 Task_1/openfl-workspace/fets_challenge_workspace/smaller_split.csv diff --git a/Task_1/README.md b/Task_1/README.md index 02b8f4f..3bd5700 100644 --- a/Task_1/README.md +++ b/Task_1/README.md @@ -29,7 +29,7 @@ Please ask any additional questions in our discussion pages on our github site a 6. ```pip install --upgrade pip``` 7. Install Pytorch (2.3.1) for your system: ```pip install torch==2.3.1 torchvision==0.18.1``` -*Note all previous versions of pytorch can be found in [these instructions]([https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/previous-versions/)) +*Note all previous versions of pytorch can be found in these instructions:[https://pytorch.org/get-started/previous-versions/](https://pytorch.org/get-started/previous-versions/) 8. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) 9. ```pip install .``` > * _Note: if you run into ```ERROR: Failed building wheel for SimpleITK```, try running ```pip install SimpleITK --only-binary :all:``` then rerunning ```pip install .```_ diff --git a/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py b/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py index ae7abc4..63472a6 100644 --- a/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py +++ b/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py @@ -1,4 +1,4 @@ -from openfl.component.aggregation_functions.experimental import PrivilegedAggregationFunction +from openfl.interface.aggregation_functions.experimental import PrivilegedAggregationFunction # extends the openfl agg func interface to include challenge-relevant information diff --git a/Task_1/build/lib/fets_challenge/experiment.py b/Task_1/build/lib/fets_challenge/experiment.py index f561e66..a55bda5 100644 --- a/Task_1/build/lib/fets_challenge/experiment.py +++ b/Task_1/build/lib/fets_challenge/experiment.py @@ -13,7 +13,7 @@ import numpy as np import pandas as pd -from openfl.utilities import split_tensor_dict_for_holdouts, TensorKey +from openfl.utilities import TensorKey from openfl.protocols import utils import openfl.native as fx import torch @@ -214,6 +214,28 @@ def compute_times_per_collaborator(collaborator_names, times[col] = time return times +def split_tensor_dict_into_floats_and_non_floats(tensor_dict): + """ + Split the tensor dictionary into float and non-floating point values. + + Splits a tensor dictionary into float and non-float values. + + Args: + tensor_dict: A dictionary of tensors + + Returns: + Two dictionaries: the first contains all of the floating point tensors + and the second contains all of the non-floating point tensors + + """ + float_dict = {} + non_float_dict = {} + for k, v in tensor_dict.items(): + if np.issubdtype(v.dtype, np.floating): + float_dict[k] = v + else: + non_float_dict[k] = v + return float_dict, non_float_dict def get_metric(metric, fl_round, tensor_db): metric_name = metric @@ -264,6 +286,7 @@ def run_challenge_experiment(aggregation_function, # Update the plan if necessary plan = fx.update_plan(overrides) + print("****Debugging: plan is", plan) if not include_validation_with_hausdorff: plan.config['task_runner']['settings']['fets_config_dict']['metrics'] = ['dice','dice_per_label'] @@ -274,6 +297,12 @@ def run_challenge_experiment(aggregation_function, for col in collaborator_names: plan.cols_data_paths[col] = col + # # Update the plan's data loader template for each collaborator + # correct_template = "openfl.federated.data.loader_gandlf" + + # # Modify the plan's data loader settings if needed + # plan.config['data_loader'][col] = correct_template + # get the data loaders for each collaborator collaborator_data_loaders = {col: copy(plan).get_data_loader(col) for col in collaborator_names} @@ -281,8 +310,9 @@ def run_challenge_experiment(aggregation_function, # get the task runner, passing the first data loader for col in collaborator_data_loaders: #Insert logic to serialize train / val CSVs here - transformed_csv_dict[col]['train'].to_csv(os.path.join(work, 'seg_test_train.csv')) - transformed_csv_dict[col]['val'].to_csv(os.path.join(work, 'seg_test_val.csv')) + os.makedirs(os.path.join(work, col), exist_ok=True) + transformed_csv_dict[col]['train'].to_csv(os.path.join(work, col, 'train.csv')) + transformed_csv_dict[col]['val'].to_csv(os.path.join(work, col, 'val.csv')) task_runner = copy(plan).get_task_runner(collaborator_data_loaders[col]) if use_pretrained_model: diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index ca4476c..928d318 100644 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -21,7 +21,7 @@ collaborator : data_loader : defaults : plan/defaults/data_loader.yaml - template : openfl.federated.data.loader_fets_challenge.FeTSChallengeDataLoaderWrapper + template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper settings : feature_shape : [32, 32, 32] @@ -31,14 +31,14 @@ task_runner : train_csv : seg_test_train.csv val_csv : seg_test_val.csv device : cpu - fets_config_dict : + gandlf_config : batch_size: 1 - clip_grad: null - clip_mode: null + clip_grad: None + clip_mode: None data_augmentation: {} data_postprocessing: {} data_preprocessing: - normalize: null + normalize: None enable_padding: false in_memory: false inference_mechanism : @@ -63,7 +63,7 @@ task_runner : - 4 dimension: 3 final_layer: softmax - ignore_label_validation: null + ignore_label_validation: None norm_type: instance nested_training: testing: 1 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py index 3794be6..66a0c82 100644 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py @@ -8,10 +8,10 @@ import numpy as np import torch as pt -from openfl.utilities import split_tensor_dict_for_holdouts +from openfl.utilities.split import split_tensor_dict_for_holdouts from openfl.utilities import TensorKey -from openfl.federated.task.runner_fets_challenge import * +from openfl.federated.task.runner_gandlf import * from GANDLF.compute.generic import create_pytorch_objects from GANDLF.compute.training_loop import train_network @@ -19,7 +19,7 @@ from . import TRAINING_HPARAMS -class FeTSChallengeModel(FeTSChallengeTaskRunner): +class FeTSChallengeModel(GaNDLFTaskRunner): """FeTSChallenge Model class for Federated Learning.""" def validate(self, col_name, round_num, input_tensor_dict, diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 8b73f89..00262b2 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRAPn4axsy5E/rlwC4vGSLfi4wDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1NloXDTI1MDgyODE2 -NTM1NlowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ -bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAoK3/EIg/z0HdAax3cv9zgAu4OULrznwIB4qVXTMI9/Q8nZMK -raPpQ2HzEatKTzv+I+HdcsBrkROics2wlrNLWq6ESnT1/ZAstiNeXctn9Hivp7b8 -vdJ2baT1704L7jNfUJOaOv94Z2UlnSBimqsyWiRZhze2gENH0ceuqKX+jnH9BDt3 -h5VpVXmxr/42qzpae+48EbVcEofKa372JPpX52BizJJeOEFRl3ZrlR7umNEIjlCp -V+T4CERfSvDMrsPQTYV7UjLajgkC8oIhZ+VVIAmzV32TPRpFQkdX1aK4NYkKguvy -K0+aeFI/yUyoF93D0ZHQv5oJd0fAMaacg34XEoMEponOA0aA+/P5qT0MipCntNkk -lNiM3yQG+kr4a/wTKk/N+Rtmu2XHTeNM2CqpKuEFnolAQ4BWvmRePMLlKHQEqt4E -uk1TijoHiK1GXIkZqRxpWIEggXSGISTnwsOJ77IwUxxeBcuWED+91TaRZ4gWGYbU -0mBbhpfo8lvxFKfBAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBADmCfBppGwGCaJLnVhLbh3eWV7X62EbWoMKWf/robiwzHiU5wU3n -JN7VJitRfH/jjYDbhbZlT8+l/q9ZZiLvuLgENypXN40GrGGA2LhZkBtXYHcf0R3W -j18INYxbB7NH7HhwOq2JO/oS2p1YqJOKzf4RtnQUUrAgCSiVXsQgmia2zO5fbEqH -Zm5l0/PFCqw+Mf2ct8AK9SIXIa9sbW9LS3j+B5RIXdRDi5mHXTa1jZbdTiRAlcJa -mBsc88LYHuosI7xHmC1N9NViy4oK0RMPt8d82pOdmgDcpLl9Sjdr5ETkRoJvfcLt -iiMjd0cHJ0EeTLUHIGT5pDw/kNVront4AEOybRNwcVq0Kg5lMfYSGzA3b4oCNIuB -jo0WuR+BXuJu3NpU8ctENzfgzrW4h3d24tkYKnvLFGUajMsd3RVYUyYEROGBDaTR -xNf0JQR3S2AR4SgfNZwlPEwccNhiWKInPwEYvkzPVPysf9wbY1voQy0WWmS6GsE5 -/pCkjmGslbPs+A== +MIIEhTCCAu2gAwIBAgIQLrN44bz3TGOWMR8fl02jJTANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy +NjUwWjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu +YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQCgtJ7lpcdeil/UP5tTDu9vFWVjRomsHqpOhFqt2WJwxaLvxX+f +Fp3hfQbuM6U8PO90LEig7VL0xl9U4N0FvtylSK8EM/zIPnUdRKwj+EYFDos1+RLl +5gTbD0nuyYobjbxLPLflaOlu+dI2CxVq7wcQBcVD6t+GdTROF+WFhaRSbw8s6gtP +4WrjetikjRWz71tKfLiXyNZ9RC/hojF9C05GCBDUB94TiI9BeteXnxR6aIzbgWsO +DfKieFIh2MYwDezKMaiM0T6rVqN8Sux4ZY0jjra3yzWGElNQOHCei9L++0VeTVtH +rmVWJk+mC4/g4WkyEHzxDXr+xJZYLwrOoF9qLkWoH9IEpJ3j6kX+KMHfFDa/0g0g +tGMg2J06AjwXijPVoIErzQYtzABGQJeeVCup9xDnSOMirGHwMxq1Nsj0TwX38C5x +eFy5pXyib43xcSXcQoP/cQslubiiAvF6MJEU/ZHV3U4/DgidINIvi9uYhDIifUcT +WI/3JBiaJwz5HL0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAYMYQdCHtdTTge0yE4L0fPCCAWw9DWDxciJ4mCjHsLaISNa2O2K71 +a6sY5yyw8IUat/ZjqCjlfFAoqVktQ33xeotvqminfmS4oh4uwaaLmd0kHToH8yC9 +Io7XXIJRsWBMgMmtadIQZrHWlqwy01B96Utm0LOoy9V3Scd6XK2TsNtprBt8Ub1v +PUxRLlJSWraS7RameNTCATKUT2hbKwrk+/1sI3nx3UjM6aY35qVhO+4rZbE4I6bY +0heQEzK8EJi4HpOzsx8J+xXzGx23WcMaXDfV56mxR3mfo8vF1K4Biu6DyN4f5RdH +ajYIiybKXw9YM4LkeosAwEVie+bN1a67Tfc27QEkzJ0Dth28x2f1/EbDiLqvpjUD +x6B3y85LJHL0DyJT2uw53eF8Ic0FSZs/SWH7NnYbKj8OAWBT3bWeE6M0zsqpwOyT +vMRbDDYEUqrEr3Jc7/kUzxutoEU8uD0gOGVEM/F4SB37E63ArXw0my2bzAFaLmYC +LxgmB9qLOqiX -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index efe8953..c3f20b3 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 96f4ff2..5d2c7f2 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRAKU0fKB6P0Snr1EqK54jl9AwDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1N1oXDTI1MDgyODE2 -NTM1N1owejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs -ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEAvCfToD7c7GdhpaVQf9IVyNyxA6hAJ22aSxFZ+4Oq -0Jj5gJJyMXMdyE84+26c/LB3EHvVD+y5R2uKjXDPId3A4bpSsAWj2Wv4qxgIhi57 -RnqTto6yMLmfZU1+RDAmtWf5PCtL9ptta8kPr7bKOYlANXexakpDvDSXEszA7XnY -QtcGt/CL8nUjCbcd9gigjPFewBQ3OKUgaBUKTtWbbkoJwHhux8IlcfJjlUP9galG -6PNdpXnyAuih+fx3HuQFz3gMBK4sOxFE+sSo+8nDkxqkN0HHpcwlExt1jLRvuOhE -gdzPkrNIGNFgJAKZVnd4EBeiQrxpEYLQ8QTxsw9DRcYoQMK7z6AErGeVYmvbmJd5 -cv0c9rSPvW+gzgoJP1+LW8aO0w4lErRdT2jwpbo7/+5nyPgHKhlYORzu5SrjSD+2 -Uyle2qwTgoP5rIcIrUf301OAwVXWTYMck0yn+q2J/0ApuTqPKcBVBIRVzMCWhQ/V -/01sm3ar8tH9cNzsaGbSyZIdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBAC1QS5H3qSnsTIzUDV6xcQm78OwUmNiGrGoCCmC+g1JE -YsbWpS2BLCXV71QcTgaf6CCZU/zo8KbMpMhjZf1IEHUMhWkEUDpfM8lpO8qV7kOD -RKxYWo/i+EpAw41iAdtShj05ktosBheZ6FMY4RtFU/lb1yjGHAwEpSFJ1oVjJVlh -7NMMRnAXdFnNMr4DKkShL4UcQNcE/DL+IR9KzwH06MvD1D4HUVquKjmsPbiIA0LC -lb+LmsJJhk4w/6bys1gbb0ps0W0vr4uVXmi6X5kIyO5/N3og3WWELIdKf0UukTh1 -cGlsP7iMH6Z+AKEuN7ksLfCIFI1vLG72RQUEho5MYf78jMGfVYJo/7qbCLqiT9HO -VA9kmWpLoYQpbQKQOj/t+ic+maxpl4WIvPyqznQhM2vyA6cJb9mNAejBWSR/t/hC -v6xZMe2KM7CUm7+aYDycTyCaDqUinENrdUrD8OE8JiDvlnfcFMulsh+K4wXka9zR -ayQOvGnGNV6BmBcCJFfe6g== +MIIEizCCAvOgAwIBAgIQWISXxdEmSAmgCatUq8iEczANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy +NjUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl +IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB +AQUAA4IBjwAwggGKAoIBgQCbmWTUl2Pg1rdfPj2/vbURDLQF0jiDgEveVlgZ/t3M +CkdwQH32yQQIRwaNFbPxDY6L+F2pkaFjh4pF1gttr7FWl9MBobnSkNsvC+2X8UON +22bmbbK6S5hxxCX/el0goWncifVS6H9rqeaFHvSKBSywYN1JrriTwXKOSVqVLwfW +eYEaTsLWxFK1fYrMH6/v3n3Pv81VaUMePKdDqm/6cwS/W53rGbJIKJqvz+yDtAsQ +2+QlPq1Ndgpaasyxm7LGHfS2+8ysVwhE5oEbAgKyADMTFXQKgg05P+lUxEzMVSvW +rbRad3wgJZ81fXZCGsfAcUaWVrmJRPoAMAWhFA+5X8p4StU/RNWsMjD/Mi7Rp5iZ +1wfdiFG5QpWTegkAIx8rtAUL5/Grhyk3yLcy9jhh1cyL2XjbZPpeqqtzdz1VFbbD +cTkpbyRtXACrYnFsDF4wnUj16Dgcn7ULSMt0/Sd/C76LcTw3mJ6EJOwHrADNvheS +wgqHpg4fX4+7VCv7IK561VMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAXDl3Ae85p2CCqugLw088WFlmYUW4MWoZgnuEzTyRYwwu +7A+04N5Z2pRP4o1M5L67r8JR/tF6ljwJYkee25bW922RIDzPElUrk+O7hm4+rsz6 +SpncV5Sgd36Fp3b6JDdkRA7On61x1t9rtfPD02z1LCdUgWhjbJtTlUj0h4Uc4RDk +Mcv4hwODnVaRVrkRalYX8rPR/QeVacJedLX0YUktCuoDuAqpvYmaXWFDSL7HQ46m +2/e/rbGiU0aYeRwoqhfx/tMy0+mm/8hSwHfWPqn37HFspeJAr+5Ikd4q0yagayg2 +EyjTFQMQaPka5JtaCuGppAJa9tBLLSm/GyuuZIBsX1S9LH6z2HP+Y3rHYck7n872 +na41IDd7z4Z/iQcb9Gj4z96gGLdkYihZLWdTZBwsSerR1/bwnmmTXfJ9Cb9zftfD +LcJmD8qw+y3ZoQO4Zls/TehMD67dsGYuOezHxq/nKVCoCLsChnDHEmrg2s7P67ab +574/n6oO4gdP7OtirQGm -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index 854d996..c3102e5 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index 05485b0..f407126 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index a97e6c5..ad4ed03 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRAPn4axsy5E/rlwC4vGSLfi4wDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1NloXDTI1MDgyODE2 -NTM1NlowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ -bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAoK3/EIg/z0HdAax3cv9zgAu4OULrznwIB4qVXTMI9/Q8nZMK -raPpQ2HzEatKTzv+I+HdcsBrkROics2wlrNLWq6ESnT1/ZAstiNeXctn9Hivp7b8 -vdJ2baT1704L7jNfUJOaOv94Z2UlnSBimqsyWiRZhze2gENH0ceuqKX+jnH9BDt3 -h5VpVXmxr/42qzpae+48EbVcEofKa372JPpX52BizJJeOEFRl3ZrlR7umNEIjlCp -V+T4CERfSvDMrsPQTYV7UjLajgkC8oIhZ+VVIAmzV32TPRpFQkdX1aK4NYkKguvy -K0+aeFI/yUyoF93D0ZHQv5oJd0fAMaacg34XEoMEponOA0aA+/P5qT0MipCntNkk -lNiM3yQG+kr4a/wTKk/N+Rtmu2XHTeNM2CqpKuEFnolAQ4BWvmRePMLlKHQEqt4E -uk1TijoHiK1GXIkZqRxpWIEggXSGISTnwsOJ77IwUxxeBcuWED+91TaRZ4gWGYbU -0mBbhpfo8lvxFKfBAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBADmCfBppGwGCaJLnVhLbh3eWV7X62EbWoMKWf/robiwzHiU5wU3n -JN7VJitRfH/jjYDbhbZlT8+l/q9ZZiLvuLgENypXN40GrGGA2LhZkBtXYHcf0R3W -j18INYxbB7NH7HhwOq2JO/oS2p1YqJOKzf4RtnQUUrAgCSiVXsQgmia2zO5fbEqH -Zm5l0/PFCqw+Mf2ct8AK9SIXIa9sbW9LS3j+B5RIXdRDi5mHXTa1jZbdTiRAlcJa -mBsc88LYHuosI7xHmC1N9NViy4oK0RMPt8d82pOdmgDcpLl9Sjdr5ETkRoJvfcLt -iiMjd0cHJ0EeTLUHIGT5pDw/kNVront4AEOybRNwcVq0Kg5lMfYSGzA3b4oCNIuB -jo0WuR+BXuJu3NpU8ctENzfgzrW4h3d24tkYKnvLFGUajMsd3RVYUyYEROGBDaTR -xNf0JQR3S2AR4SgfNZwlPEwccNhiWKInPwEYvkzPVPysf9wbY1voQy0WWmS6GsE5 -/pCkjmGslbPs+A== +MIIEhTCCAu2gAwIBAgIQLrN44bz3TGOWMR8fl02jJTANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy +NjUwWjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu +YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQCgtJ7lpcdeil/UP5tTDu9vFWVjRomsHqpOhFqt2WJwxaLvxX+f +Fp3hfQbuM6U8PO90LEig7VL0xl9U4N0FvtylSK8EM/zIPnUdRKwj+EYFDos1+RLl +5gTbD0nuyYobjbxLPLflaOlu+dI2CxVq7wcQBcVD6t+GdTROF+WFhaRSbw8s6gtP +4WrjetikjRWz71tKfLiXyNZ9RC/hojF9C05GCBDUB94TiI9BeteXnxR6aIzbgWsO +DfKieFIh2MYwDezKMaiM0T6rVqN8Sux4ZY0jjra3yzWGElNQOHCei9L++0VeTVtH +rmVWJk+mC4/g4WkyEHzxDXr+xJZYLwrOoF9qLkWoH9IEpJ3j6kX+KMHfFDa/0g0g +tGMg2J06AjwXijPVoIErzQYtzABGQJeeVCup9xDnSOMirGHwMxq1Nsj0TwX38C5x +eFy5pXyib43xcSXcQoP/cQslubiiAvF6MJEU/ZHV3U4/DgidINIvi9uYhDIifUcT +WI/3JBiaJwz5HL0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAYMYQdCHtdTTge0yE4L0fPCCAWw9DWDxciJ4mCjHsLaISNa2O2K71 +a6sY5yyw8IUat/ZjqCjlfFAoqVktQ33xeotvqminfmS4oh4uwaaLmd0kHToH8yC9 +Io7XXIJRsWBMgMmtadIQZrHWlqwy01B96Utm0LOoy9V3Scd6XK2TsNtprBt8Ub1v +PUxRLlJSWraS7RameNTCATKUT2hbKwrk+/1sI3nx3UjM6aY35qVhO+4rZbE4I6bY +0heQEzK8EJi4HpOzsx8J+xXzGx23WcMaXDfV56mxR3mfo8vF1K4Biu6DyN4f5RdH +ajYIiybKXw9YM4LkeosAwEVie+bN1a67Tfc27QEkzJ0Dth28x2f1/EbDiLqvpjUD +x6B3y85LJHL0DyJT2uw53eF8Ic0FSZs/SWH7NnYbKj8OAWBT3bWeE6M0zsqpwOyT +vMRbDDYEUqrEr3Jc7/kUzxutoEU8uD0gOGVEM/F4SB37E63ArXw0my2bzAFaLmYC +LxgmB9qLOqiX -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRAKU0fKB6P0Snr1EqK54jl9AwDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDgyODE2NTM1N1oXDTI1MDgyODE2 -NTM1N1owejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs -ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEAvCfToD7c7GdhpaVQf9IVyNyxA6hAJ22aSxFZ+4Oq -0Jj5gJJyMXMdyE84+26c/LB3EHvVD+y5R2uKjXDPId3A4bpSsAWj2Wv4qxgIhi57 -RnqTto6yMLmfZU1+RDAmtWf5PCtL9ptta8kPr7bKOYlANXexakpDvDSXEszA7XnY -QtcGt/CL8nUjCbcd9gigjPFewBQ3OKUgaBUKTtWbbkoJwHhux8IlcfJjlUP9galG -6PNdpXnyAuih+fx3HuQFz3gMBK4sOxFE+sSo+8nDkxqkN0HHpcwlExt1jLRvuOhE -gdzPkrNIGNFgJAKZVnd4EBeiQrxpEYLQ8QTxsw9DRcYoQMK7z6AErGeVYmvbmJd5 -cv0c9rSPvW+gzgoJP1+LW8aO0w4lErRdT2jwpbo7/+5nyPgHKhlYORzu5SrjSD+2 -Uyle2qwTgoP5rIcIrUf301OAwVXWTYMck0yn+q2J/0ApuTqPKcBVBIRVzMCWhQ/V -/01sm3ar8tH9cNzsaGbSyZIdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBAC1QS5H3qSnsTIzUDV6xcQm78OwUmNiGrGoCCmC+g1JE -YsbWpS2BLCXV71QcTgaf6CCZU/zo8KbMpMhjZf1IEHUMhWkEUDpfM8lpO8qV7kOD -RKxYWo/i+EpAw41iAdtShj05ktosBheZ6FMY4RtFU/lb1yjGHAwEpSFJ1oVjJVlh -7NMMRnAXdFnNMr4DKkShL4UcQNcE/DL+IR9KzwH06MvD1D4HUVquKjmsPbiIA0LC -lb+LmsJJhk4w/6bys1gbb0ps0W0vr4uVXmi6X5kIyO5/N3og3WWELIdKf0UukTh1 -cGlsP7iMH6Z+AKEuN7ksLfCIFI1vLG72RQUEho5MYf78jMGfVYJo/7qbCLqiT9HO -VA9kmWpLoYQpbQKQOj/t+ic+maxpl4WIvPyqznQhM2vyA6cJb9mNAejBWSR/t/hC -v6xZMe2KM7CUm7+aYDycTyCaDqUinENrdUrD8OE8JiDvlnfcFMulsh+K4wXka9zR -ayQOvGnGNV6BmBcCJFfe6g== +MIIEizCCAvOgAwIBAgIQWISXxdEmSAmgCatUq8iEczANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy +NjUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl +IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB +AQUAA4IBjwAwggGKAoIBgQCbmWTUl2Pg1rdfPj2/vbURDLQF0jiDgEveVlgZ/t3M +CkdwQH32yQQIRwaNFbPxDY6L+F2pkaFjh4pF1gttr7FWl9MBobnSkNsvC+2X8UON +22bmbbK6S5hxxCX/el0goWncifVS6H9rqeaFHvSKBSywYN1JrriTwXKOSVqVLwfW +eYEaTsLWxFK1fYrMH6/v3n3Pv81VaUMePKdDqm/6cwS/W53rGbJIKJqvz+yDtAsQ +2+QlPq1Ndgpaasyxm7LGHfS2+8ysVwhE5oEbAgKyADMTFXQKgg05P+lUxEzMVSvW +rbRad3wgJZ81fXZCGsfAcUaWVrmJRPoAMAWhFA+5X8p4StU/RNWsMjD/Mi7Rp5iZ +1wfdiFG5QpWTegkAIx8rtAUL5/Grhyk3yLcy9jhh1cyL2XjbZPpeqqtzdz1VFbbD +cTkpbyRtXACrYnFsDF4wnUj16Dgcn7ULSMt0/Sd/C76LcTw3mJ6EJOwHrADNvheS +wgqHpg4fX4+7VCv7IK561VMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAXDl3Ae85p2CCqugLw088WFlmYUW4MWoZgnuEzTyRYwwu +7A+04N5Z2pRP4o1M5L67r8JR/tF6ljwJYkee25bW922RIDzPElUrk+O7hm4+rsz6 +SpncV5Sgd36Fp3b6JDdkRA7On61x1t9rtfPD02z1LCdUgWhjbJtTlUj0h4Uc4RDk +Mcv4hwODnVaRVrkRalYX8rPR/QeVacJedLX0YUktCuoDuAqpvYmaXWFDSL7HQ46m +2/e/rbGiU0aYeRwoqhfx/tMy0+mm/8hSwHfWPqn37HFspeJAr+5Ikd4q0yagayg2 +EyjTFQMQaPka5JtaCuGppAJa9tBLLSm/GyuuZIBsX1S9LH6z2HP+Y3rHYck7n872 +na41IDd7z4Z/iQcb9Gj4z96gGLdkYihZLWdTZBwsSerR1/bwnmmTXfJ9Cb9zftfD +LcJmD8qw+y3ZoQO4Zls/TehMD67dsGYuOezHxq/nKVCoCLsChnDHEmrg2s7P67ab +574/n6oO4gdP7OtirQGm -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index 6f0ef5a..b809ce3 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRALGrJcWLsEZatOIM2L9gs4AwDQYJKoZIhvcNAQEMBQAw +MIIEMzCCApugAwIBAgIRAMw0FyEIY0jRiWZGwRKVwtIwDQYJKoZIhvcNAQEMBQAw ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDgyODE2NTM1N1oXDTI1 -MDgyODE2NTM1N1owDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAnzsd/2TmHa9Npp8241olWWJClIgr4bODy9qA8leENCSEUdzK -KeGKjdhbVTblE5PdMExmknWBEM3G9Mp7bnd3XEpUDGUYj7Mu+7cVQRJBhRhpySs+ -XQb9jHuEntw6PcU1+SY+ZLH01S9OKFVOWDyhBOMxfOT65GNKVEgq5rFWZmHiKsqQ -uOPdKcqQ81Dp35ogeUdzY7dVSACGoomMa65C8lBV6ueKMxpDqXHyIp9w66B0HH55 -KMDXg0SMPAiA+RXEt2Lhr5PgX6iQ2Ea02f9mTow8elptdH4u3P5sqh54jCJrk2RS -lGsCIKa0PbSEQ3UOhvKFAvWUKjtEdD7QwM0D/zTYxkqjSIvclvd7C+oNxo0hUbaN -bm+Ox+mS5dn6cJOr97mJxWxLcDE2xcRHxCkgcPVzuKUE2uxbGk6L+Io5Zg4i+cMJ -aj86Xaub1NZgDxOLkq6HFgBFxPoE7h+PhBaSSP+WUi4FPRiNFaznSq0S4RjMM9q6 -JBLflTAuH0dFOPrlAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -b25lMA0GCSqGSIb3DQEBDAUAA4IBgQAv3D59inLw8u9SqcC5+hjTe5RI3RRo9eNP -GP2scwAjo7mQxHmcak5mXhzbeNuMgAJ2/GpYMk8oZShcCUox/MICINBbNi+I70qJ -1XqkTisfBaLHz6W8X4GSriHbbPCn9czGyk8LMviiMv6qOz5SjMyXvjEe18ZP1/MG -uPKLpbTfqpBPHXJoj71e5bJ+XnTWUNAAtYyf+2vyQoI3Rj5KgtHE3Ylu0qwqQ2XW -6u5Rn35316Kd9klafqo6M94Nxe0BJzE5xUlCucfPFsOeHXxxgil3kVDhSideJ3Ii -UrR3/LBobfvj9+jsRg4bcbshJpv50jEAOSl2bK/BZmMwc4Qw6FoswizQ9UDN+SS0 -Qxr8hB0W9Z/Mkh6YbK6UdaxUkE3/it/6wNrF/Pf8Zq3Z7ZwPkQMgE018uUTY2dGU -kidzXNdhDrTVUdH7RcureKZetgsAqdeg8aOaWkCbbSigg1IgEJvLZXzrgnTFRELB -WYD8RBSB077MJqWFRbHK5mIC2rETWlA= +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MjY1MVoXDTI1 +MDkxMTE4MjY1MVowDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEApuGur6nfZT+aabOJvV5gZfV0ceTLgCYbyh/m2pbmP4FOyEdp +lLEvWxKQ8K1nZXT2h4geXCwtsnLgPGIN+BQZzP9q/dXxhYqNxbUVBNfVKDehyfhk +B/QbwEwkyir+VF0mXj8OKd73rpymzzbiCJKjeEJlRLBapfL9jzkxmbJiJBkAw1aC +tGYALyMpGWWwYiqPBWwNoCTv02hK6CFRTWttTIKmdMAUa05c9Vam36LizhZ5Hkft +e0OtRb/cHL4Dq5zd6W2UQeoAoAwUnyz6F9kehd2n38lG7EUpKA6588KOtJXFCJKI +TkWFlmUihwDbnY2Y9sZFemn0kme88R225jxMW2Go8jCR98VsvL+qoghyMLog94iv +NyZEfASmCGxXiWIEkZj6bLkI2TIvFfEQfv0qu1sbg0IjZVeC9K7yOpIOUhiBq/VC +8ePSP9KkHee/VNSwU01P8Jb7S0o3DWhY0YbQI6HoDqJX8Zv/dI11Unip71UQUYXC +TIWaEFcu8g7hvlr7AgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +b25lMA0GCSqGSIb3DQEBDAUAA4IBgQB9Z8xSOhZ7j2i4t1wT9oGTiR24dWQpCP3R +qNVVsLg/Tkm+heKkZKA9qLoE75H8SSCsbMmjW6pvVEoMe/aqeu5CjdapUS/NWE4l +WmKxKKefyIZc95kvh68VPJVQcq6gpZIcnjaFeRfzdmEnFsQhIsp8KjPA8axPyyow +OUIQ2MHIX+y2lUqA307+XTTbKLc+0ouLg4O+Cs8TqFhVD3bZ/2In6z7dA97v5Mpa +gfH4BOO0W7imd2IDvbD2UMpgNLc3KZUul0bxjRxAKWJStoDkeIJ7dUtp9ALD1cvt +6SpPwSDPXxLEBCWMZSCnUhMONUkwFGH4pY+6ikYG4h/kMtCrlIg/3WGIub5eza+2 +h0uatEtmm4F1xzVIJfXIM/u+MDNBpEsq0AC5Ob3qLvSYYhWwXVcp03pP7ODIta2U +al5b6Ch9EAauxVshm7wnAKlRwb1kCgbQ9TpcX+pOBZSvFSmDMANrkXXVr+EfiiPA +cxt9wVtpWIsjRuQfeMnDElFR+lUvzI4= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index 882c35b..48910b7 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 7cc2101..730ec05 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQGw4ZaujURJy7vyDSyTJsSzANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwODI4MTY1MzU4WhcNMjUw -ODI4MTY1MzU4WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCoY04uf4yoqYsFJSdNOS7JATcLlLi4yet16EbdYd9FVCjRFJk2 -fS/tVgDCkkUIilA/jc6SnRHmGrR12nQWTwHCkEb98nrp2T0gKlIfFaJOei+kz8V2 -1yKmni3SiLsTSaREECQ+BapfCG3Kl9Snugvq3XDjdyEyBrkXhVZfYl8raQNPr0hS -Huhm+B5zSCV1ugYZLOn5ki2vMaHMxwbC29jPe0fwBFmg7rGTd8a4od0KtQVqeWE7 -oV5Q6MW3CQLqRUFHHVm1AH45oVTGnAwWHzLsd+sIeqnkW2nd1t8mVhHSQxTi7qen -Efh+EsFBhM66F8d0LSsDecOL1joDXj7iXicc/AuJG8V22twABvKfj1t14GHwJzLS -gawbXBnv5huqShJ48zD0k6fPCE8mojY2ZqE3LbpxEkjzlNJ+5wgABEBJU2ATrEPQ -aeGvRlZiIg/WeG2+Lq6qYCdvUAGLalis/ISO/o+novgQSxNi/kgXmQqQYyXMrps1 -JNTgQvgdO6pykfsCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 -d28wDQYJKoZIhvcNAQEMBQADggGBAKty2FotDg6/6SroK9DuaO2mlLH3kZwyOf+e -nSRwzPnKUnBerRHFmtG239GQybxKOyDb8WXSZ7X5CHyl29IiQptpiVPCVpvJnpq5 -gpShS7uaT9psPwR2DR1h9jtne5DXwrVjzWfJNQ8hkcJKSzryzxvFWvbIGGxy3i8g -n/SxiNQB1oNUku/F3hDnBGdkMY+kH/O1ryE80LoeALB302kGoW4TVGV9kLjD6FFL -nEXxcs2jEFaaiLRsDdMYUSBwwt7SHq4wC7tlslfuPe9ZnJeEvo911QgrM3OnOH+w -ii/qiWqHLAoCEColOX099q+3Aww4MhHJYwYH9rxvNFqqhs3TFE3aFfKpgZlft9ZW -cOKlWQXap7vdK0wgfSxeTfdF9kpVyWFWDB397+DY4shqIkYNbFn7zEM+x/UUrQ/H -Zx3Wmcjz3UJXp3nRmjf3/Opj699i+mE7MdOyxnFewo20tR3rOU0UXwG/Mfzvl8Jj -lry9GRVyN54hTEtRpoK8yaKuAZKPLw== +MIIEMzCCApugAwIBAgIRAJu3qMb8yULrtxNZGLWZLx4wDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MjY1MVoXDTI1 +MDkxMTE4MjY1MVowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEA3xZYYf0702FoEQ81aw+WdE64NWP0qWahkrveGHLQEB7f9jyd +BvvarlgQSd5LesZDlIV+OZp/otW9/UL1BRCocov83yvattp7zVnBXxYcEoFlMeCJ +A2RvN3bp77wM5mLg+cgp3VTqZutapVEIGokMuA/nfL+X5R0JhI0HNSg5Om6fLewb +BDqOJ2gg5Bs2HNTtkZYimnPXHmHzWPxryBDBDVqwVkA9N4lFdjs6068zzVa2hwqS +rnZuyCvWP5JLv69JmCOQbpAYWqITMtxru0ukFtEiXQMBjD+M/qmfzdR7FBNRM4uy +5UIFu5EXii1bT5w/pCqqjKLr8VnovKDZgszWRvJHDIidrFPiIi7Cc8JfTxtSnpb0 +iaotRq/HpczS9Pn3V5eggkIZJeVfpDjHgv6RO15FXr6ClqSYiE0eg3/dr7j11d7t +K41ABUlBGcyaxuDypdWgaY3n0Oi3r1Wg+n2tpMtEcBtVjjPoYslWP6kiswbS4rQz +fBEtEg5JeFRJqzAxAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQBEmotad5+zfkjv1UhFaxnNWm9Xsq95W+9P +dugMvnOe/nv/CWpRFGlr5vC0uB+jN2SENh62NuleIpsOi0Lr96PbVbHFSDKTakyg +T4G9ZUBQv6O62FzkUkbhOId/YvfRL+g8OmmuvTyX0KPmS6MvH4QQrA8sQwH22X56 +0VN51K2+R5tLHuid25U72Y0Yt69YQTSoU1BtDNSz5HtlkHfiHe6AM0cmRoaTdw4e +3R/wIGLv91Z7NgvMyR4ao4H4CWWSX1ZhgTbc6sR52iCZG0XAD9lfxAROFPftPxWe +rGIuBcc/fWLeEQJMoHa5M58oKaORj1Ul6Da3Ot/sSjkPuctX7tNyfLhf+0K63M1f +Hwt972SkbyhjoCcNmHvZtB4H9tBe3S2ZG2jWAMStPg87eEAdSHLKmbWmDHNUjCZd +B6viRCSnQiC1uKgh8WiitIDg1ARoA+1EiiBdQs8Nc5mF7ocMt8vvJXLd35x3AYjw +ymfr5BJUrFlNfNNcL8C8ruZtsIe1Fxw= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index 0eced35..90dccaf 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index cfd3510..294a766 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index 8daf426..caafbe7 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index f72679a..a4c46cf 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIEXDCCAsSgAwIBAgIQbehulRH7TFCeh9l6sm0CwjANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwODI4MTY1MzU3WhcNMjUw -ODI4MTY1MzU3WjAjMSEwHwYDVQQDDBhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUw -ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCgvaTxBaF6leNQufWgvdqq -xyWCPoUxeolVpnMc6pRFN6jD7GRgpNd4t4HBFkW+I4VxkzVM6M6OIIhMdw/arS4o -8nFKCvMmMWdZD1uJATdwPHjQydbGjMQVEjEYhJZgTLMFCBRItDo0R6eZl+T2+SpN -siAZTbhhiAvAN8vWdeXtLVy3JqrBXqQqAPympnJ6GNEKLVSK/DGj1nUJlm9dX8lr -ZOi0CKY5OMmRIOEUMp0y43qLi8wArjOPoQdglVPQefthj8AMbgjM+tn1IPgNFhrC -oVVw1Yjfly6ERk4+uNkHtyYEcSK/t3cpmSvAZKb9w+yybGtYhNKX1P/U0edasp/0 -q+q404tiaQBOQBIktxx2iP6WGIr9QTIL/lkKGka1SCu9Si2TCYSohIrXbZU3YkEi -ZZHQ/RheQALinzo6JPrJDBg9xm6JU/ZP0H+QBZp5sz4QoATHt3+fnbXYLyyOKkT4 -k0drCjrkp14uJ4FHhC3sKj9kaqKMtNEYddsSAmSB4f0CAwEAAaM1MDMwDAYDVR0T -AQH/BAIwADAjBgNVHREEHDAaghhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUwDQYJ -KoZIhvcNAQEMBQADggGBAG2pOlzco2zk7SNP5o5aD/IwvpxVxLJxNOLPOS8syccN -6p76kfhaJJVmxU4KOxmpLhOtmlOVc6nyuIX549n6aj+MBDp6mgu2ZQpLGnUPVN+y -NJHLaBRXt9/yEbBPprwxbLw9AlTKv1pBH4FLBVdCSIbocydnBeBeGico0XUJ3FmK -DlCX9q5Hy8DLa39XfbIICGa6/kXWmi5ctMEuiH9u9JUdas5TsaBtaPVmVGTpOe/T -kLicM36/XmdgVvMaWUJpxczXRQl84SH1dmVc6m0t+jD+k+mJT+WDElKjPMYDzMwS -8+1mY6DUVqLUCjYE16BAimf+uB4m6mCP73DtE+N620V/mqGUd6N2ae/7jBZnyH+N -i1tZPZ3qO0xPCBPQrY4jceBmAoLhfDJKlNNJ1iG5/VoG1gOKFWGlXjxOQ4E/zWxa -Tni9euDLGvalr/kkTKWPcmwxnYE9I0tiqrebz2/QUp3TNT/8X2y2LPHFhSdRueEN -IyMG4i2ihhwP6Hql1oW6eg== +MIIEXTCCAsWgAwIBAgIRALs4QgLziUHjv72XM5cJZx0wDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MjY1MVoXDTI1 +MDkxMTE4MjY1MVowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtCWlTj/3PMafbJiDkKks +8nGqfg0LUx9MCAb5iIigyV6ie0gDZJsbiI3V4s7Am75GTOD8M7WoOZg3cTc2Zk9C +XlY9IEB1KRDroggSI57AQeF9tPESe71D+VuNxW+fywxqLa+lGPsQBPIvf1qLPQ0/ +TLGfh1mOXEfkBQEyb7AX1/WRYGM7zK3MP4feQQfSu3GIx2J5obJVskrzKgARbRMe +L4IqlAkHkP7oNEc+GXVmYMpj0IymUPn+fVEtEzjc+KqABSAYAyMrhoERLYIn0yJZ +e1p8S94Ul1Mms/XF7g7Vl5diW18EgdGbT4fzTwiMxk6878/smutzsNlmmIFkwcbp +BADcycE1n3LfqSe7OaUu5bL9BT6FxbZXR2nxIgjSxB1Vf488kYYbhHk3ZGciFETn +MO7mHWIpP9q6ZnxnmzSzayKwZtdES8ZfDEMjJeSi2DHlZVvdP2JuNojXJgvw6c0Q +pNAfcFjMeIeG4niG0inhlwQLCWC6veKGPMb2KmuCVoKBAgMBAAGjNTAzMAwGA1Ud +EwEB/wQCMAAwIwYDVR0RBBwwGoIYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1MA0G +CSqGSIb3DQEBDAUAA4IBgQCYzv82dcXpD0mJ3ZMYqL8AQ+FCCQ8PnPJrkrtFiHo7 +lPo/kkpLwj8yosToLIQjH30E/N50nlMJT3NT2nD3ertgZNXh95UKQAeN0IOFBa17 +p2Y64O2tPUUwO2QlFbQEKVtsCTL+1cVf1gSIDRNJCPrGX6pFa2mK81Be3Utfmww5 +3HCXLe/rASy51H/sgB3OcBgvZt2BBtMOtDlT1jl0eRKREEa3K5rsBW2NWmOI9puL +tLSSBnIJAFtWg+5Lyn6LCkjI3bWSbwflXVnes1J4NP3XHy0sgP/XuYDti5ngsoJA +tmMw4uNsv8BA62RNAivcDsvCJSbBnSJQsCHkLR5lYWvopX4o8v0X1Ln8x7/m2V2a +miyYLx7sJq1PD4Xy1UX3CrDj5o1StGV+1X/sxHFwO+++1+c9ac7VWww/ze3o8QRv +nQthaohqL0eMHr/pe4pMk0xkXmFcgyznvhiLeuLf4K1DI1eq5lsC3GIuvH+7wSaF +VaIf1r7nNToy1dBNk+WG2yQ= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index 0885c5f..57855a3 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAoL2k8QWhepXjULn1oL3a -qsclgj6FMXqJVaZzHOqURTeow+xkYKTXeLeBwRZFviOFcZM1TOjOjiCITHcP2q0u -KPJxSgrzJjFnWQ9biQE3cDx40MnWxozEFRIxGISWYEyzBQgUSLQ6NEenmZfk9vkq -TbIgGU24YYgLwDfL1nXl7S1ctyaqwV6kKgD8pqZyehjRCi1Uivwxo9Z1CZZvXV/J -a2TotAimOTjJkSDhFDKdMuN6i4vMAK4zj6EHYJVT0Hn7YY/ADG4IzPrZ9SD4DRYa -wqFVcNWI35cuhEZOPrjZB7cmBHEiv7d3KZkrwGSm/cPssmxrWITSl9T/1NHnWrKf -9KvquNOLYmkATkASJLccdoj+lhiK/UEyC/5ZChpGtUgrvUotkwmEqISK122VN2JB -ImWR0P0YXkAC4p86OiT6yQwYPcZuiVP2T9B/kAWaebM+EKAEx7d/n5212C8sjipE -+JNHawo65KdeLieBR4Qt7Co/ZGqijLTRGHXbEgJkgeH9AgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtCWlTj/3PMafbJiDkKks +8nGqfg0LUx9MCAb5iIigyV6ie0gDZJsbiI3V4s7Am75GTOD8M7WoOZg3cTc2Zk9C +XlY9IEB1KRDroggSI57AQeF9tPESe71D+VuNxW+fywxqLa+lGPsQBPIvf1qLPQ0/ +TLGfh1mOXEfkBQEyb7AX1/WRYGM7zK3MP4feQQfSu3GIx2J5obJVskrzKgARbRMe +L4IqlAkHkP7oNEc+GXVmYMpj0IymUPn+fVEtEzjc+KqABSAYAyMrhoERLYIn0yJZ +e1p8S94Ul1Mms/XF7g7Vl5diW18EgdGbT4fzTwiMxk6878/smutzsNlmmIFkwcbp +BADcycE1n3LfqSe7OaUu5bL9BT6FxbZXR2nxIgjSxB1Vf488kYYbhHk3ZGciFETn +MO7mHWIpP9q6ZnxnmzSzayKwZtdES8ZfDEMjJeSi2DHlZVvdP2JuNojXJgvw6c0Q +pNAfcFjMeIeG4niG0inhlwQLCWC6veKGPMb2KmuCVoKBAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAIaAD8ft93LSu09svalINZ2Y2kNE/AbJG -NjYKZtfz7/IhyMtuXW15BV4UwNA/y4FuyX20NzYsAe2eLUJtnmJybux9FZuIDD4V -RDr5OZiiDIWQMVfpJbQv27QScB8VlMgdjR333vXOenfv6IOfVZLEEnSE1jakYhLP -qG16IMkyHWZcUBLSJ6UbgGP+G9ceKsBxNaHlMUPM98QAa++dkbw+e/AOILj7HOHw -Pzb9G8vT3u7OlDe4CQarKZdhxKNEiUN5hCJ35mzCMp4qmenOmr/chFZC3azyUGaW -ogDzE4bmAfKtqRD7dNLfEjtPTmHXK2hvq+AApZ1qZgAnfHb6G06+OeP2jDW9U8yY -b1U2zajsATWa0xqHe1Iw7WXvKBaYtxJvtpSNUh9ZP1wplubDf5g79W6YYs1+HPTI -5VasQQmqShUHh7U78y2xOYyhAr7tG+27RyT5lHxDiZ2pqBkd8+kZMWNZe/B/h8g5 -03uTnXXIe7Sj8XD5F9SaxkMxQ0e79QaZ +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEADzFEFHJhK6AHi9dvjAHXKCccgsSEZphx +6UGCr14GOgt7UJoiTavc3hSmCWLaj5HSrp8GMfP+96RWb1Bcx2MNccVuR/kzzNdn +WuTzW4CWxT0XFz168CBKpzYz0EMLFmXQ5AArFyqf+nZ5r1qplGYkvnmy9QFQ/jnh ++kHIMPbCTEa2cd1XahJdoYTZozXsxLRB4XxzNmsEIbmuZJmXJgWRdzEjhysec5kc +G22306GhhHzAo2gt/hlH71Oqu2X0SjroiivrbtJ9D9i2u+x+BVTWwVJJqL2W7gMN ++KNHX4nftoUiopUqmh+NWiFcbM29CP/izm70HohoUfl1AplV0d3wWgn9z24xaPbk +PFHlHrE5EvLfGf3W8usiTBEs10Gh8vIX/bdYn9flJ3Ixl3gRW2Fr/mXUZt/sXx6r +eIE910wFr2UmLrmCWHAzO838SG6EIcv8XaXXyT1ayHPGvneZqbS/aObZuBDwykDo +v27MJTivVuYO938ZhJXgaY+GFEeDYnCJ -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index 6e61cbe..c680f4f 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge.egg-info/PKG-INFO b/Task_1/fets_challenge.egg-info/PKG-INFO index 43e953e..f4f9e12 100644 --- a/Task_1/fets_challenge.egg-info/PKG-INFO +++ b/Task_1/fets_challenge.egg-info/PKG-INFO @@ -15,7 +15,7 @@ Requires-Python: >=3.9 Description-Content-Type: text/markdown License-File: LICENSE Requires-Dist: openfl@ git+https://github.com/intel/openfl.git@v1.5.1 -Requires-Dist: GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.20 +Requires-Dist: GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.17 Requires-Dist: fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge # FeTS 2022 Challenge Task 1 @@ -49,7 +49,7 @@ Please ask any additional questions in our discussion pages on our github site a 6. ```pip install --upgrade pip``` 7. Install Pytorch (2.3.1) for your system: ```pip install torch==2.3.1 torchvision==0.18.1``` -*Note all previous versions of pytorch can be found in [these instructions]([https://pytorch.org/get-started/locally/](https://pytorch.org/get-started/previous-versions/)) +*Note all previous versions of pytorch can be found in these instructions:[https://pytorch.org/get-started/previous-versions/](https://pytorch.org/get-started/previous-versions/) 8. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) 9. ```pip install .``` > * _Note: if you run into ```ERROR: Failed building wheel for SimpleITK```, try running ```pip install SimpleITK --only-binary :all:``` then rerunning ```pip install .```_ diff --git a/Task_1/fets_challenge.egg-info/SOURCES.txt b/Task_1/fets_challenge.egg-info/SOURCES.txt index f6add58..d39e899 100644 --- a/Task_1/fets_challenge.egg-info/SOURCES.txt +++ b/Task_1/fets_challenge.egg-info/SOURCES.txt @@ -18,6 +18,7 @@ openfl-workspace/fets_challenge_workspace/partitioning_1.csv openfl-workspace/fets_challenge_workspace/partitioning_2.csv openfl-workspace/fets_challenge_workspace/requirements.txt openfl-workspace/fets_challenge_workspace/small_split.csv +openfl-workspace/fets_challenge_workspace/smaller_split.csv openfl-workspace/fets_challenge_workspace/validation.csv openfl-workspace/fets_challenge_workspace/plan/cols.yaml openfl-workspace/fets_challenge_workspace/plan/data.yaml diff --git a/Task_1/fets_challenge.egg-info/requires.txt b/Task_1/fets_challenge.egg-info/requires.txt index faafd5d..ecf3c20 100644 --- a/Task_1/fets_challenge.egg-info/requires.txt +++ b/Task_1/fets_challenge.egg-info/requires.txt @@ -1,3 +1,3 @@ openfl@ git+https://github.com/intel/openfl.git@v1.5.1 -GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.20 +GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.17 fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index 96f5343..ddef758 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -310,8 +310,9 @@ def run_challenge_experiment(aggregation_function, # get the task runner, passing the first data loader for col in collaborator_data_loaders: #Insert logic to serialize train / val CSVs here - transformed_csv_dict[col]['train'].to_csv(os.path.join(work, 'seg_test_train.csv')) - transformed_csv_dict[col]['val'].to_csv(os.path.join(work, 'seg_test_val.csv')) + os.makedirs(os.path.join(work, col), exist_ok=True) + transformed_csv_dict[col]['train'].to_csv(os.path.join(work, col, 'train.csv')) + transformed_csv_dict[col]['val'].to_csv(os.path.join(work, col, 'valid.csv')) task_runner = copy(plan).get_task_runner(collaborator_data_loaders[col]) if use_pretrained_model: diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 91fb853..928d318 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -33,12 +33,12 @@ task_runner : device : cpu gandlf_config : batch_size: 1 - clip_grad: null - clip_mode: null + clip_grad: None + clip_mode: None data_augmentation: {} data_postprocessing: {} data_preprocessing: - normalize: null + normalize: None enable_padding: false in_memory: false inference_mechanism : @@ -63,7 +63,7 @@ task_runner : - 4 dimension: 3 final_layer: softmax - ignore_label_validation: null + ignore_label_validation: None norm_type: instance nested_training: testing: 1 diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/smaller_split.csv b/Task_1/openfl-workspace/fets_challenge_workspace/smaller_split.csv new file mode 100644 index 0000000..e1701a7 --- /dev/null +++ b/Task_1/openfl-workspace/fets_challenge_workspace/smaller_split.csv @@ -0,0 +1,7 @@ +Partition_ID,Subject_ID +2,FeTS2022_01412 +2,FeTS2022_01415 +2,FeTS2022_01411 +3,FeTS2022_01439 +3,FeTS2022_01435 +3,FeTS2022_01434 diff --git a/Task_1/setup.py b/Task_1/setup.py index 6f2c352..312aa5f 100644 --- a/Task_1/setup.py +++ b/Task_1/setup.py @@ -29,7 +29,7 @@ include_package_data=True, install_requires=[ 'openfl @ git+https://github.com/intel/openfl.git@v1.5.1', - 'GANDLF @ git+https://github.com/CBICA/GaNDLF.git@0.0.20', + 'GANDLF @ git+https://github.com/CBICA/GaNDLF.git@0.0.17', 'fets @ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge', ], python_requires='>=3.9', From 3ba75b204adae3653bd5c58b063aa59c874958ac Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Wed, 11 Sep 2024 14:35:25 -0400 Subject: [PATCH 04/19] GaNDLF pinned to 0.0.17 --- Task_1/cert/ca/root-ca.crt | 42 ++++----- Task_1/cert/ca/root-ca/private/root-ca.key | 74 +++++++-------- Task_1/cert/ca/signing-ca.crt | 50 +++++----- Task_1/cert/ca/signing-ca.csr | 36 ++++---- .../cert/ca/signing-ca/private/signing-ca.key | 74 +++++++-------- Task_1/cert/cert_chain.crt | 92 +++++++++---------- Task_1/cert/client/col_one.crt | 46 +++++----- Task_1/cert/client/col_one.key | 74 +++++++-------- Task_1/cert/client/col_two.crt | 42 ++++----- Task_1/cert/client/col_two.key | 74 +++++++-------- Task_1/cert/col_one.csr | 36 ++++---- Task_1/cert/col_two.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.crt | 42 ++++----- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 +++++++-------- Task_1/fets_challenge/experiment.py | 1 + 16 files changed, 415 insertions(+), 414 deletions(-) diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 00262b2..5849970 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQLrN44bz3TGOWMR8fl02jJTANBgkqhkiG9w0BAQwFADB0 +MIIEhTCCAu2gAwIBAgIQf/LP+qCNTsu9Jpr1CRWy7jANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy -NjUwWjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgzMzM5WhcNMjUwOTExMTgz +MzM5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCgtJ7lpcdeil/UP5tTDu9vFWVjRomsHqpOhFqt2WJwxaLvxX+f -Fp3hfQbuM6U8PO90LEig7VL0xl9U4N0FvtylSK8EM/zIPnUdRKwj+EYFDos1+RLl -5gTbD0nuyYobjbxLPLflaOlu+dI2CxVq7wcQBcVD6t+GdTROF+WFhaRSbw8s6gtP -4WrjetikjRWz71tKfLiXyNZ9RC/hojF9C05GCBDUB94TiI9BeteXnxR6aIzbgWsO -DfKieFIh2MYwDezKMaiM0T6rVqN8Sux4ZY0jjra3yzWGElNQOHCei9L++0VeTVtH -rmVWJk+mC4/g4WkyEHzxDXr+xJZYLwrOoF9qLkWoH9IEpJ3j6kX+KMHfFDa/0g0g -tGMg2J06AjwXijPVoIErzQYtzABGQJeeVCup9xDnSOMirGHwMxq1Nsj0TwX38C5x -eFy5pXyib43xcSXcQoP/cQslubiiAvF6MJEU/ZHV3U4/DgidINIvi9uYhDIifUcT -WI/3JBiaJwz5HL0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAYMYQdCHtdTTge0yE4L0fPCCAWw9DWDxciJ4mCjHsLaISNa2O2K71 -a6sY5yyw8IUat/ZjqCjlfFAoqVktQ33xeotvqminfmS4oh4uwaaLmd0kHToH8yC9 -Io7XXIJRsWBMgMmtadIQZrHWlqwy01B96Utm0LOoy9V3Scd6XK2TsNtprBt8Ub1v -PUxRLlJSWraS7RameNTCATKUT2hbKwrk+/1sI3nx3UjM6aY35qVhO+4rZbE4I6bY -0heQEzK8EJi4HpOzsx8J+xXzGx23WcMaXDfV56mxR3mfo8vF1K4Biu6DyN4f5RdH -ajYIiybKXw9YM4LkeosAwEVie+bN1a67Tfc27QEkzJ0Dth28x2f1/EbDiLqvpjUD -x6B3y85LJHL0DyJT2uw53eF8Ic0FSZs/SWH7NnYbKj8OAWBT3bWeE6M0zsqpwOyT -vMRbDDYEUqrEr3Jc7/kUzxutoEU8uD0gOGVEM/F4SB37E63ArXw0my2bzAFaLmYC -LxgmB9qLOqiX +jwAwggGKAoIBgQCYaWP6SbNjJaQ/43pIyigPEgmV95l9GmpxfP/h/VDyyA5IvbPh +ZIjvwUM+nKkPt1AlJPAUZeJC4OU4rCtJ+VPoSEPIZTS/b1DD5f4GSqyo0mKyvMBz +kNfrFXmdeFnCg396+mIvyceC1+lKC0B9wbxv9/2wEOqGlQJIzIJBbr517LDaZs7T +QbrjpecMjAa1B959sxvQeDa3kgSJXzwbKSu5XHy0sxa7LSwVrf/3YIZ1c+q/yNPw +ocN6goDGb6VP51sIbCP5XssmdBB8xhxJ9vYip/HnfsZ+fOXUJAoi+/UwoTHCIEOR +ETZn7WiESWMu36EQW8M+gDqYE1CiCADJN57np9YZhJXBHGJKEK7IVrT5fYDnVsBF +YN7bMDCrvj86kq9QKLntfz+SUmlz9ZWkVVIqtjO5ukkwe+UWKovIbfyuV6WSoX0W +JPItv/ixXuW4fnkftUnq62F45pvFx0dfZNLwbvKLfEN/YPm5alsLK5OPwVJpm2MX +PuQCiozNenV+c1cCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAdcnP9d3assTHyye+aYX4x892YolGrRh3I9FALZXAFvdw7lG2HO1n +INltE1VA7giSfDyt9304Xmfnv7y4rKP/eH4Plnl5hLI31Ox/ZMPkBNqN9PvmdT6S +kfAVHq1Mw8koTPyu0gQwJERqBhKJwHYwAZZiSLEjxawgGtXSEV4Yly/ShXS3+R2D +6OdVOkrZx0vDZoIgE7BO5hV+xssPTZueasVCQTTMHq5dRkscVVUIlYrvx7KOOIU9 +gcWNvNp+IBDXRDNaLfb107TxSnLtnHF3t6IKlhBHqEnf6rRmHE1wqyFyMNssg6Qm +AjvZzDFjhwlOXjN5/KG3+5veh07ZIlb9Wfez4FbswDSpbEgcarPGEhzPjOjEjQX5 +fZg7w3+kzHn92MWvVDPFa3LEdTI/FM5h/vx3O4b3xNX15pWuz1WIdQS49vq8Z3kk +/RLd/wg4730HcdVoLem2v/RvTcJ+NOI+iwrKbst7xMjs4K/rm3BY4dorX2XoyVG2 +tdt3IBDuOSDC -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index c3f20b3..7b48fb3 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 5d2c7f2..0f53f66 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQWISXxdEmSAmgCatUq8iEczANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy -NjUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl -IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQCbmWTUl2Pg1rdfPj2/vbURDLQF0jiDgEveVlgZ/t3M -CkdwQH32yQQIRwaNFbPxDY6L+F2pkaFjh4pF1gttr7FWl9MBobnSkNsvC+2X8UON -22bmbbK6S5hxxCX/el0goWncifVS6H9rqeaFHvSKBSywYN1JrriTwXKOSVqVLwfW -eYEaTsLWxFK1fYrMH6/v3n3Pv81VaUMePKdDqm/6cwS/W53rGbJIKJqvz+yDtAsQ -2+QlPq1Ndgpaasyxm7LGHfS2+8ysVwhE5oEbAgKyADMTFXQKgg05P+lUxEzMVSvW -rbRad3wgJZ81fXZCGsfAcUaWVrmJRPoAMAWhFA+5X8p4StU/RNWsMjD/Mi7Rp5iZ -1wfdiFG5QpWTegkAIx8rtAUL5/Grhyk3yLcy9jhh1cyL2XjbZPpeqqtzdz1VFbbD -cTkpbyRtXACrYnFsDF4wnUj16Dgcn7ULSMt0/Sd/C76LcTw3mJ6EJOwHrADNvheS -wgqHpg4fX4+7VCv7IK561VMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAXDl3Ae85p2CCqugLw088WFlmYUW4MWoZgnuEzTyRYwwu -7A+04N5Z2pRP4o1M5L67r8JR/tF6ljwJYkee25bW922RIDzPElUrk+O7hm4+rsz6 -SpncV5Sgd36Fp3b6JDdkRA7On61x1t9rtfPD02z1LCdUgWhjbJtTlUj0h4Uc4RDk -Mcv4hwODnVaRVrkRalYX8rPR/QeVacJedLX0YUktCuoDuAqpvYmaXWFDSL7HQ46m -2/e/rbGiU0aYeRwoqhfx/tMy0+mm/8hSwHfWPqn37HFspeJAr+5Ikd4q0yagayg2 -EyjTFQMQaPka5JtaCuGppAJa9tBLLSm/GyuuZIBsX1S9LH6z2HP+Y3rHYck7n872 -na41IDd7z4Z/iQcb9Gj4z96gGLdkYihZLWdTZBwsSerR1/bwnmmTXfJ9Cb9zftfD -LcJmD8qw+y3ZoQO4Zls/TehMD67dsGYuOezHxq/nKVCoCLsChnDHEmrg2s7P67ab -574/n6oO4gdP7OtirQGm +MIIEjDCCAvSgAwIBAgIRAJD9tSiG9UzqnOZtT3QGfmowDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxMTE4MzMzOVoXDTI1MDkxMTE4 +MzMzOVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs +ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEA30K6CRhyHQAYSuiKcxwUVWkzy3jyFWfPiANkYxuU +JIoHwxH8zysVh5iZpkbv0gyMagvQ8Tl6yWxAUrWG2/auxgZMKwOkiDF60CT4MD5b +1Brsh80lgrtL8Pwho3r7SqZx1Scas3zQeOyciO+XthVuLuUzTUJrI2vKL+t7Jehs +4K/r3fwh4N+tvHvKtJZcfVREIlFatUgbi0vsqspFTBNWS6/JEY6f7YQeJICijgw8 +vMU5wDGxZma1J3gGancloORUNl7hf5/rGlRqaTM2FqQh2fFHElL84w7oIYfybMIA +ANGizLtiHP3cX2hmiVHradDOFfu2zcMXk1cxJpBwhdUXZu2+MpewaqIxl0gwCFK+ +JXf3hhvaf2UYF6ITjrDcTzM+dafVhnF9K9/K+LfhlZp+4oi4JmuDe3O0A96dTbVd +Vleguwz8PAHfbPoSVqMuXZ9Mgrn6SSn+WW3ubDFbfKsQBq3Bk8ix0ebAAw4og0i4 +KTZxOza/AaAHz88mmidlKSBJAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBAAlWaBArd6CKJZNDi144TUJgF9pI2ZS1WeG82z+oLeCE +5fUznPVdJP908xOGZS4egsdSHdqaurFwmVkmpSHyePowKaG7PAvgFsGNjKzELu73 +VqeZKR2AwwVoNvR4bR8V/0k8lf4f+t3Y/mtzwfJD8hIHC9lzXrE+njQqLx2Boa/C +KxnXN7EaRhwCDHUqsUmfYaixCZUwVnas9BbLoobdcFcC7C3Q462YSuWDwRp6te67 +bCtjDxMOXQfMPoY3+JDAzR9qzVhdinw4HMDZDv/KKVNahmAl4jplr5qGnP8EIPwI +8VDSUMUEHFHpYr+KDjCrqtVX/IT2NTJh+1rOuAnPquyeV39VV+0Mao15ilMMbTNX +fN6cv71+CbTNN1OUgJ1KyzEs0i4PSTeafiteJAGec+rz+6Ie9DHdVbIOs0n7U9w1 +pCJAdSqklmHdA14EabLK8lIX/7V8FYVqyHc9htzGUbHSeAswVEPzibn6tEBu2nh8 +B2wscdMHuGj3SUOmwyDadg== -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index c3102e5..8fc3fa1 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index f407126..0467c67 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index ad4ed03..44f9aaa 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQLrN44bz3TGOWMR8fl02jJTANBgkqhkiG9w0BAQwFADB0 +MIIEhTCCAu2gAwIBAgIQf/LP+qCNTsu9Jpr1CRWy7jANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy -NjUwWjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgzMzM5WhcNMjUwOTExMTgz +MzM5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCgtJ7lpcdeil/UP5tTDu9vFWVjRomsHqpOhFqt2WJwxaLvxX+f -Fp3hfQbuM6U8PO90LEig7VL0xl9U4N0FvtylSK8EM/zIPnUdRKwj+EYFDos1+RLl -5gTbD0nuyYobjbxLPLflaOlu+dI2CxVq7wcQBcVD6t+GdTROF+WFhaRSbw8s6gtP -4WrjetikjRWz71tKfLiXyNZ9RC/hojF9C05GCBDUB94TiI9BeteXnxR6aIzbgWsO -DfKieFIh2MYwDezKMaiM0T6rVqN8Sux4ZY0jjra3yzWGElNQOHCei9L++0VeTVtH -rmVWJk+mC4/g4WkyEHzxDXr+xJZYLwrOoF9qLkWoH9IEpJ3j6kX+KMHfFDa/0g0g -tGMg2J06AjwXijPVoIErzQYtzABGQJeeVCup9xDnSOMirGHwMxq1Nsj0TwX38C5x -eFy5pXyib43xcSXcQoP/cQslubiiAvF6MJEU/ZHV3U4/DgidINIvi9uYhDIifUcT -WI/3JBiaJwz5HL0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAYMYQdCHtdTTge0yE4L0fPCCAWw9DWDxciJ4mCjHsLaISNa2O2K71 -a6sY5yyw8IUat/ZjqCjlfFAoqVktQ33xeotvqminfmS4oh4uwaaLmd0kHToH8yC9 -Io7XXIJRsWBMgMmtadIQZrHWlqwy01B96Utm0LOoy9V3Scd6XK2TsNtprBt8Ub1v -PUxRLlJSWraS7RameNTCATKUT2hbKwrk+/1sI3nx3UjM6aY35qVhO+4rZbE4I6bY -0heQEzK8EJi4HpOzsx8J+xXzGx23WcMaXDfV56mxR3mfo8vF1K4Biu6DyN4f5RdH -ajYIiybKXw9YM4LkeosAwEVie+bN1a67Tfc27QEkzJ0Dth28x2f1/EbDiLqvpjUD -x6B3y85LJHL0DyJT2uw53eF8Ic0FSZs/SWH7NnYbKj8OAWBT3bWeE6M0zsqpwOyT -vMRbDDYEUqrEr3Jc7/kUzxutoEU8uD0gOGVEM/F4SB37E63ArXw0my2bzAFaLmYC -LxgmB9qLOqiX +jwAwggGKAoIBgQCYaWP6SbNjJaQ/43pIyigPEgmV95l9GmpxfP/h/VDyyA5IvbPh +ZIjvwUM+nKkPt1AlJPAUZeJC4OU4rCtJ+VPoSEPIZTS/b1DD5f4GSqyo0mKyvMBz +kNfrFXmdeFnCg396+mIvyceC1+lKC0B9wbxv9/2wEOqGlQJIzIJBbr517LDaZs7T +QbrjpecMjAa1B959sxvQeDa3kgSJXzwbKSu5XHy0sxa7LSwVrf/3YIZ1c+q/yNPw +ocN6goDGb6VP51sIbCP5XssmdBB8xhxJ9vYip/HnfsZ+fOXUJAoi+/UwoTHCIEOR +ETZn7WiESWMu36EQW8M+gDqYE1CiCADJN57np9YZhJXBHGJKEK7IVrT5fYDnVsBF +YN7bMDCrvj86kq9QKLntfz+SUmlz9ZWkVVIqtjO5ukkwe+UWKovIbfyuV6WSoX0W +JPItv/ixXuW4fnkftUnq62F45pvFx0dfZNLwbvKLfEN/YPm5alsLK5OPwVJpm2MX +PuQCiozNenV+c1cCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAdcnP9d3assTHyye+aYX4x892YolGrRh3I9FALZXAFvdw7lG2HO1n +INltE1VA7giSfDyt9304Xmfnv7y4rKP/eH4Plnl5hLI31Ox/ZMPkBNqN9PvmdT6S +kfAVHq1Mw8koTPyu0gQwJERqBhKJwHYwAZZiSLEjxawgGtXSEV4Yly/ShXS3+R2D +6OdVOkrZx0vDZoIgE7BO5hV+xssPTZueasVCQTTMHq5dRkscVVUIlYrvx7KOOIU9 +gcWNvNp+IBDXRDNaLfb107TxSnLtnHF3t6IKlhBHqEnf6rRmHE1wqyFyMNssg6Qm +AjvZzDFjhwlOXjN5/KG3+5veh07ZIlb9Wfez4FbswDSpbEgcarPGEhzPjOjEjQX5 +fZg7w3+kzHn92MWvVDPFa3LEdTI/FM5h/vx3O4b3xNX15pWuz1WIdQS49vq8Z3kk +/RLd/wg4730HcdVoLem2v/RvTcJ+NOI+iwrKbst7xMjs4K/rm3BY4dorX2XoyVG2 +tdt3IBDuOSDC -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQWISXxdEmSAmgCatUq8iEczANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgyNjUwWhcNMjUwOTExMTgy -NjUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl -IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQCbmWTUl2Pg1rdfPj2/vbURDLQF0jiDgEveVlgZ/t3M -CkdwQH32yQQIRwaNFbPxDY6L+F2pkaFjh4pF1gttr7FWl9MBobnSkNsvC+2X8UON -22bmbbK6S5hxxCX/el0goWncifVS6H9rqeaFHvSKBSywYN1JrriTwXKOSVqVLwfW -eYEaTsLWxFK1fYrMH6/v3n3Pv81VaUMePKdDqm/6cwS/W53rGbJIKJqvz+yDtAsQ -2+QlPq1Ndgpaasyxm7LGHfS2+8ysVwhE5oEbAgKyADMTFXQKgg05P+lUxEzMVSvW -rbRad3wgJZ81fXZCGsfAcUaWVrmJRPoAMAWhFA+5X8p4StU/RNWsMjD/Mi7Rp5iZ -1wfdiFG5QpWTegkAIx8rtAUL5/Grhyk3yLcy9jhh1cyL2XjbZPpeqqtzdz1VFbbD -cTkpbyRtXACrYnFsDF4wnUj16Dgcn7ULSMt0/Sd/C76LcTw3mJ6EJOwHrADNvheS -wgqHpg4fX4+7VCv7IK561VMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAXDl3Ae85p2CCqugLw088WFlmYUW4MWoZgnuEzTyRYwwu -7A+04N5Z2pRP4o1M5L67r8JR/tF6ljwJYkee25bW922RIDzPElUrk+O7hm4+rsz6 -SpncV5Sgd36Fp3b6JDdkRA7On61x1t9rtfPD02z1LCdUgWhjbJtTlUj0h4Uc4RDk -Mcv4hwODnVaRVrkRalYX8rPR/QeVacJedLX0YUktCuoDuAqpvYmaXWFDSL7HQ46m -2/e/rbGiU0aYeRwoqhfx/tMy0+mm/8hSwHfWPqn37HFspeJAr+5Ikd4q0yagayg2 -EyjTFQMQaPka5JtaCuGppAJa9tBLLSm/GyuuZIBsX1S9LH6z2HP+Y3rHYck7n872 -na41IDd7z4Z/iQcb9Gj4z96gGLdkYihZLWdTZBwsSerR1/bwnmmTXfJ9Cb9zftfD -LcJmD8qw+y3ZoQO4Zls/TehMD67dsGYuOezHxq/nKVCoCLsChnDHEmrg2s7P67ab -574/n6oO4gdP7OtirQGm +MIIEjDCCAvSgAwIBAgIRAJD9tSiG9UzqnOZtT3QGfmowDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxMTE4MzMzOVoXDTI1MDkxMTE4 +MzMzOVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs +ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEA30K6CRhyHQAYSuiKcxwUVWkzy3jyFWfPiANkYxuU +JIoHwxH8zysVh5iZpkbv0gyMagvQ8Tl6yWxAUrWG2/auxgZMKwOkiDF60CT4MD5b +1Brsh80lgrtL8Pwho3r7SqZx1Scas3zQeOyciO+XthVuLuUzTUJrI2vKL+t7Jehs +4K/r3fwh4N+tvHvKtJZcfVREIlFatUgbi0vsqspFTBNWS6/JEY6f7YQeJICijgw8 +vMU5wDGxZma1J3gGancloORUNl7hf5/rGlRqaTM2FqQh2fFHElL84w7oIYfybMIA +ANGizLtiHP3cX2hmiVHradDOFfu2zcMXk1cxJpBwhdUXZu2+MpewaqIxl0gwCFK+ +JXf3hhvaf2UYF6ITjrDcTzM+dafVhnF9K9/K+LfhlZp+4oi4JmuDe3O0A96dTbVd +Vleguwz8PAHfbPoSVqMuXZ9Mgrn6SSn+WW3ubDFbfKsQBq3Bk8ix0ebAAw4og0i4 +KTZxOza/AaAHz88mmidlKSBJAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBAAlWaBArd6CKJZNDi144TUJgF9pI2ZS1WeG82z+oLeCE +5fUznPVdJP908xOGZS4egsdSHdqaurFwmVkmpSHyePowKaG7PAvgFsGNjKzELu73 +VqeZKR2AwwVoNvR4bR8V/0k8lf4f+t3Y/mtzwfJD8hIHC9lzXrE+njQqLx2Boa/C +KxnXN7EaRhwCDHUqsUmfYaixCZUwVnas9BbLoobdcFcC7C3Q462YSuWDwRp6te67 +bCtjDxMOXQfMPoY3+JDAzR9qzVhdinw4HMDZDv/KKVNahmAl4jplr5qGnP8EIPwI +8VDSUMUEHFHpYr+KDjCrqtVX/IT2NTJh+1rOuAnPquyeV39VV+0Mao15ilMMbTNX +fN6cv71+CbTNN1OUgJ1KyzEs0i4PSTeafiteJAGec+rz+6Ie9DHdVbIOs0n7U9w1 +pCJAdSqklmHdA14EabLK8lIX/7V8FYVqyHc9htzGUbHSeAswVEPzibn6tEBu2nh8 +B2wscdMHuGj3SUOmwyDadg== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index b809ce3..cdd17d5 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRAMw0FyEIY0jRiWZGwRKVwtIwDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MjY1MVoXDTI1 -MDkxMTE4MjY1MVowDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEApuGur6nfZT+aabOJvV5gZfV0ceTLgCYbyh/m2pbmP4FOyEdp -lLEvWxKQ8K1nZXT2h4geXCwtsnLgPGIN+BQZzP9q/dXxhYqNxbUVBNfVKDehyfhk -B/QbwEwkyir+VF0mXj8OKd73rpymzzbiCJKjeEJlRLBapfL9jzkxmbJiJBkAw1aC -tGYALyMpGWWwYiqPBWwNoCTv02hK6CFRTWttTIKmdMAUa05c9Vam36LizhZ5Hkft -e0OtRb/cHL4Dq5zd6W2UQeoAoAwUnyz6F9kehd2n38lG7EUpKA6588KOtJXFCJKI -TkWFlmUihwDbnY2Y9sZFemn0kme88R225jxMW2Go8jCR98VsvL+qoghyMLog94iv -NyZEfASmCGxXiWIEkZj6bLkI2TIvFfEQfv0qu1sbg0IjZVeC9K7yOpIOUhiBq/VC -8ePSP9KkHee/VNSwU01P8Jb7S0o3DWhY0YbQI6HoDqJX8Zv/dI11Unip71UQUYXC -TIWaEFcu8g7hvlr7AgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -b25lMA0GCSqGSIb3DQEBDAUAA4IBgQB9Z8xSOhZ7j2i4t1wT9oGTiR24dWQpCP3R -qNVVsLg/Tkm+heKkZKA9qLoE75H8SSCsbMmjW6pvVEoMe/aqeu5CjdapUS/NWE4l -WmKxKKefyIZc95kvh68VPJVQcq6gpZIcnjaFeRfzdmEnFsQhIsp8KjPA8axPyyow -OUIQ2MHIX+y2lUqA307+XTTbKLc+0ouLg4O+Cs8TqFhVD3bZ/2In6z7dA97v5Mpa -gfH4BOO0W7imd2IDvbD2UMpgNLc3KZUul0bxjRxAKWJStoDkeIJ7dUtp9ALD1cvt -6SpPwSDPXxLEBCWMZSCnUhMONUkwFGH4pY+6ikYG4h/kMtCrlIg/3WGIub5eza+2 -h0uatEtmm4F1xzVIJfXIM/u+MDNBpEsq0AC5Ob3qLvSYYhWwXVcp03pP7ODIta2U -al5b6Ch9EAauxVshm7wnAKlRwb1kCgbQ9TpcX+pOBZSvFSmDMANrkXXVr+EfiiPA -cxt9wVtpWIsjRuQfeMnDElFR+lUvzI4= +MIIEMjCCApqgAwIBAgIQH7cox9gfQuKaAwDHzUHYCDANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTExMTgzMzM5WhcNMjUw +OTExMTgzMzM5WjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDbD1K2p5KT+bNLlu2pCblCq0vC16YJG+bKxIDII5yJKS0E4eEY +0esxdTiEHQL9ZQ+XB73xGr+7gW1VAEvuKDFUrxzV1Ab1gPtuHbPzuFUtcWo6Jvao +TayezL3SV5nTmhdBxXGID+oDC7P6Xua6GZ4/u/VlywrHEuZXS8EpaeALYnrSmSaA +y9KpCDMa14pkmklfyt2i/8EEd2a0SSPzc/jBfIbmiQOtkjlyHSzNx3QNTXMduwHC +aifsvqqbkqr8hpqM0UwHAW9JmwFfAgC0Y3gE540Y09DDU8ZlS0/MAmi8q3kJXI6l +pqiUHSrHdD3gprI8ZdRZGf7pRh4oe4Q4w0C1AXSl2bqYHLoNcimwpuFKgBSl7uy/ +Fv0OhXuB2/c7I3JpKroScD8WJl3Sq5gqowQa1fkwSDSaL55hRK0VQRBYGZ7QVLhd +6oww4KitlytVV23eXCw8ae2Qt0HllRd4g1J7yIWezHLP8DlTOpsq1JIicqdtM0ls +lsROKhpU7X+R2EcCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv +bmUwDQYJKoZIhvcNAQEMBQADggGBAEgkqWlrDbA4s2qs6ZDNVyiFVmVkwVAT3CvP +B3CyP2mLQT56DdOP3QmltoEfVgSbbwgkAO5COE/EzFS0PyMqhNWrtZAS43W1fMg2 +sTyYXGsVAjz1yPTe35Led4uM8eGmh8lOTEedxZJSJemmCJL+QYET/VWHdZ/e8SjD +kvzZrvPWOIfaBpoDqx3xXOXZZYVQkfCnwDwod/Uay2zzAQ9GKjTGBl3HKUSFoLcG +4gkM986zlUqgaekjvxRO4s2+UDS2BLzQcKxa7hHIIdZ3b0ShncbEU1j+o8tsS5zn +U/pEtpewz6JsrN6WVXOl7fIvLa2zpAmNFeNTshheb4ArcKklwGtXKG69DuRJmbIp +qQ/cB+KA66LfWh53WjU0J0TyVNf4hH+RXcG+mvq83/iO/skv2CgJGvTIAQwvnUCy +tfV2+VqntvwEawBB9PjkdK+qLjjNO9WGoCJN4mW0n5DxAJMZgmLs1eVGlUXt4vXH +peih13By9Tz4Km02zQmWgOSM+qrJSg== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index 48910b7..a2b8adc 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 730ec05..59caaed 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRAJu3qMb8yULrtxNZGLWZLx4wDQYJKoZIhvcNAQEMBQAw +MIIEMzCCApugAwIBAgIRAJ4G0+mvck3TvDS56TvxcyUwDQYJKoZIhvcNAQEMBQAw ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MjY1MVoXDTI1 -MDkxMTE4MjY1MVowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEA3xZYYf0702FoEQ81aw+WdE64NWP0qWahkrveGHLQEB7f9jyd -BvvarlgQSd5LesZDlIV+OZp/otW9/UL1BRCocov83yvattp7zVnBXxYcEoFlMeCJ -A2RvN3bp77wM5mLg+cgp3VTqZutapVEIGokMuA/nfL+X5R0JhI0HNSg5Om6fLewb -BDqOJ2gg5Bs2HNTtkZYimnPXHmHzWPxryBDBDVqwVkA9N4lFdjs6068zzVa2hwqS -rnZuyCvWP5JLv69JmCOQbpAYWqITMtxru0ukFtEiXQMBjD+M/qmfzdR7FBNRM4uy -5UIFu5EXii1bT5w/pCqqjKLr8VnovKDZgszWRvJHDIidrFPiIi7Cc8JfTxtSnpb0 -iaotRq/HpczS9Pn3V5eggkIZJeVfpDjHgv6RO15FXr6ClqSYiE0eg3/dr7j11d7t -K41ABUlBGcyaxuDypdWgaY3n0Oi3r1Wg+n2tpMtEcBtVjjPoYslWP6kiswbS4rQz -fBEtEg5JeFRJqzAxAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQBEmotad5+zfkjv1UhFaxnNWm9Xsq95W+9P -dugMvnOe/nv/CWpRFGlr5vC0uB+jN2SENh62NuleIpsOi0Lr96PbVbHFSDKTakyg -T4G9ZUBQv6O62FzkUkbhOId/YvfRL+g8OmmuvTyX0KPmS6MvH4QQrA8sQwH22X56 -0VN51K2+R5tLHuid25U72Y0Yt69YQTSoU1BtDNSz5HtlkHfiHe6AM0cmRoaTdw4e -3R/wIGLv91Z7NgvMyR4ao4H4CWWSX1ZhgTbc6sR52iCZG0XAD9lfxAROFPftPxWe -rGIuBcc/fWLeEQJMoHa5M58oKaORj1Ul6Da3Ot/sSjkPuctX7tNyfLhf+0K63M1f -Hwt972SkbyhjoCcNmHvZtB4H9tBe3S2ZG2jWAMStPg87eEAdSHLKmbWmDHNUjCZd -B6viRCSnQiC1uKgh8WiitIDg1ARoA+1EiiBdQs8Nc5mF7ocMt8vvJXLd35x3AYjw -ymfr5BJUrFlNfNNcL8C8ruZtsIe1Fxw= +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MzM0MFoXDTI1 +MDkxMTE4MzM0MFowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEA1OHA3roNj4ju6pObbgdLhoCToD9iRGkzUJd4w4N1UqgA2p6R +AWxEqaGpBZ+DYyk3PGxHb8fogG1ETXr2I5KsQKs90pJqWP6coeFb9e+BqYQb7ts1 +0yZgstiPJWTyaXjiIiQPhRvMFFdNnukIbOodtW5Ok4TNTOySNMzuzdMmqZU/Y2Hr +KO22zGE0kDnqe7MstQknMHrKtXGPyCC3YEJ9iDGf3jz4Cn5ty0zX4MGFqz4nw2Bi +FV2ra4LKjDOV5Xi5fLLoMoKTAYUKWOrc9oxfrATKWci+rUKJ30RUif0xj8nvdInm +JYRBBmyZ4u77NM4GTQV5Dgf5Vf9t+/IgOU+rLZeqG+y6FjbzGW4vbIvkmzuY9Aau +isztfR5Hgjr2kZxK2LUPwJy9n3qo6HypPeu1y9HdB4TTpPqdnPPVdxQI0pVfSHCP +AODWdHnqxwfwTzGQmJ+QH32Xv/g7RyHwaBU8IdYn8nXga0VCWLGqf/ZtFXkY7m0B +VlgQqsyXwl2pL3NLAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQBG04+4fcPYJgrFCPMnS71Kvo2pu8IgpCzR +zzHD0ZLJB2GXhKuOe5gFuEcCiGKWlqfJTP2MHdTbAHbXi0+6HPLc5X1VuED7vTRP +YpcgvmjZjkz3HU8hILvKGZApU+P7YWhCRN5/ukqnFbwW37u29bxj3m7XcMzN2+eI +s1R6ZBLnVwz/5YarJaLwwvTi+FciAyQDPIsFcWP/r6Poe7l4CdqSIf1zrC1Fna9Q +xQt7BrCLdQOdgSQaC9Y6gF69v+dVc9RUP5WD4/6L8EmeKl9VL0no2zeuScQbtg9A +c2NMyNg99F0I1ZUvMjo5WFeT5oe3Z1Qn4KIVBAWeM5UfpNAJggba7GJ1dAoF3CvG +aZEwAwKvxgHQoowoD+lfUEewo0hC61kH7BuozEH9COs5lL/Pu8p2p2/sLRtO+iF8 +Y2jRJ7uSKNpeHO4HwNnBGMMUNv0u8xr5LBccpSuu2WX8C5YJYtg2afNJNfWsbYUJ +Sd9R4wSmeO5SPrj+SVgcz0CUiSYueSE= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index 90dccaf..61e0701 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index 294a766..b0c7548 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index caafbe7..9af7b75 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index a4c46cf..633940b 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -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 -VaIf1r7nNToy1dBNk+WG2yQ= +CSqGSIb3DQEBDAUAA4IBgQAPNCUl93k9/ORf5VnqZthcxcTF+QH/vk2qEAncfari +StMDI0ZLnNCmWQQhg3OVZAq/SrpfH7jgdeXmHhk5TsCtKm48muR2slNO5QNEkKu3 +f3jU/1TBOjXE5VxNe06/ITFrYwiBmkY58fOy19XbN3y1Jw28ypt5UcO26lDEDrC/ +axVo66PomD54mBV/9A9mZFow3Yofb1rOXy//vp+9HmD8Ga0Gn4y9wKq+eneDppTn +ZgUzJT9vVjMQWQPUOSoHWWSfde8Ld7mlj/IhXIsjoFjlwZ8jNvL/+UN+CQidwNr4 +WIrGsxvQu03YE0tN0DqNFLwZOxXUQXHDS86lQEesHk3YTOBRXpEjNMiiOKcvP+bi +mw5b2NnEMR/LomBU1tJmkUc/Hg3fU4/eNLwEr4GhXQ5VCCndaYPEy3EmloG1S37B +XKK4YESilMcGotkzrlUtoAkSAig+4Wx2iXP8opMMiqo6mX/YvGuPEQSXkmuzW8a/ +A7k9iH7GU0iUwzaSNf9W0mY= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index 57855a3..daca1be 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtCWlTj/3PMafbJiDkKks -8nGqfg0LUx9MCAb5iIigyV6ie0gDZJsbiI3V4s7Am75GTOD8M7WoOZg3cTc2Zk9C -XlY9IEB1KRDroggSI57AQeF9tPESe71D+VuNxW+fywxqLa+lGPsQBPIvf1qLPQ0/ -TLGfh1mOXEfkBQEyb7AX1/WRYGM7zK3MP4feQQfSu3GIx2J5obJVskrzKgARbRMe -L4IqlAkHkP7oNEc+GXVmYMpj0IymUPn+fVEtEzjc+KqABSAYAyMrhoERLYIn0yJZ -e1p8S94Ul1Mms/XF7g7Vl5diW18EgdGbT4fzTwiMxk6878/smutzsNlmmIFkwcbp -BADcycE1n3LfqSe7OaUu5bL9BT6FxbZXR2nxIgjSxB1Vf488kYYbhHk3ZGciFETn -MO7mHWIpP9q6ZnxnmzSzayKwZtdES8ZfDEMjJeSi2DHlZVvdP2JuNojXJgvw6c0Q -pNAfcFjMeIeG4niG0inhlwQLCWC6veKGPMb2KmuCVoKBAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyPkgPfmtcwH/cUH/9fWi +pdTjT99WU5mYRel8ZXV62/zYeVB7wIUkvmKVkupeLWM7AZVde8QwZk112WcVyIy8 +AZnM5gupyIc19a1+k+Q+lcDzB6OJV6y64/IEDDMX+H5wVTpV/1zM053OZRsGp6VQ +XUpYbiij0i5pBWRFeZi7e/dCJi7Si3rdmUITLl3VLNAIhdBb10+7xQTSUnuTHyHj +x/5ZtM0hwnlhvTo6HgaE4klvThEg/glKjn/nDX3Kco6UZIXt46QlFM7UaoTg9zZB +cRpgdvcjFvO5dlSednoMv2wFrVEAgdzPOcjInjZMFE0zK7OKGnA7gLKAmc70cleW +wQDQ6668qIWADf1RyMDyCjZ+ozBncHMvOlkQEdJkImW5amM6RcTnNJDpeK0PmEpf +p2+npwTYaeQy/M0Ax4bLbVscAOfcJpYgr2xiLJ0u+CG7ETwJL58tAlV9mP+4yQyE +1DWkIlKTNzTCcmM/XfrQcxUh4QKeDPq7UWN+s1TVCWQxAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEADzFEFHJhK6AHi9dvjAHXKCccgsSEZphx -6UGCr14GOgt7UJoiTavc3hSmCWLaj5HSrp8GMfP+96RWb1Bcx2MNccVuR/kzzNdn -WuTzW4CWxT0XFz168CBKpzYz0EMLFmXQ5AArFyqf+nZ5r1qplGYkvnmy9QFQ/jnh -+kHIMPbCTEa2cd1XahJdoYTZozXsxLRB4XxzNmsEIbmuZJmXJgWRdzEjhysec5kc -G22306GhhHzAo2gt/hlH71Oqu2X0SjroiivrbtJ9D9i2u+x+BVTWwVJJqL2W7gMN -+KNHX4nftoUiopUqmh+NWiFcbM29CP/izm70HohoUfl1AplV0d3wWgn9z24xaPbk -PFHlHrE5EvLfGf3W8usiTBEs10Gh8vIX/bdYn9flJ3Ixl3gRW2Fr/mXUZt/sXx6r -eIE910wFr2UmLrmCWHAzO838SG6EIcv8XaXXyT1ayHPGvneZqbS/aObZuBDwykDo -v27MJTivVuYO938ZhJXgaY+GFEeDYnCJ +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAhh8AeJTmk4D0uYe3/+fwLzgFG0csjF++ +PL8GKZewkWLQz2/AEO29B/vXU3QZNJh1iRkvFnRykgaJ1qbpT4wA4oifPxf2Dg/y ++EdFB3iONhW4sRs7vXOylqm5ql4o1r1y7kDEA59+1O9WoIko1YtOjUudidNwmld/ +qygEVrPoLSpsKkzDveP8ELfNbzJYOyg1bI1Xcs0WYKNRBe2zML5+2ul2rZcpeUbr +o9SI/Y+oYBbNeDyqP5zd7gfKWA6cNw24ZNZ8GXmJpkiwcdR34pYkB/s9S3HhdtqY +EhpSCNBBcftRE77AEB1oiQZPEyKTuwh5WhNFIZ0piw7vJ2sa+VD4Qr1yctrY4zxv +CmJPAbFSLRsWEfaKwlg/qTwN9L91jFFy7er1zZD+Pu8Ea6Tod3LDT1zSaOGk/fvW +WY5lXYhpkG6hHT1wcx7ttsPd4TZ2d/Rl1Pb6iFHkVpLXd+1uExHie32O5f/dypIn +6iJUyb4og+Z2+itZYCxpze8XfjmVlW2H -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index c680f4f..77e8bff 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index ddef758..23ff669 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -14,6 +14,7 @@ import numpy as np import pandas as pd from openfl.utilities import TensorKey +from openfl.utilities.split import split_tensor_dict_for_holdouts from openfl.protocols import utils import openfl.native as fx import torch From fbef799e4886c7fc75928e8858c37fd0f1bb79c0 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Mon, 16 Sep 2024 11:31:13 -0400 Subject: [PATCH 05/19] . --- Task_1/.gitignore | 2 + Task_1/cert/ca/root-ca.crt | 50 ++++----- Task_1/cert/ca/root-ca/private/root-ca.key | 74 ++++++------- Task_1/cert/ca/signing-ca.crt | 50 ++++----- Task_1/cert/ca/signing-ca.csr | 36 +++---- .../cert/ca/signing-ca/private/signing-ca.key | 74 ++++++------- Task_1/cert/cert_chain.crt | 100 +++++++++--------- Task_1/cert/client/col_one.crt | 42 ++++---- Task_1/cert/client/col_one.key | 74 ++++++------- Task_1/cert/client/col_two.crt | 46 ++++---- Task_1/cert/client/col_two.key | 74 ++++++------- Task_1/cert/col_one.csr | 36 +++---- Task_1/cert/col_two.csr | 36 +++---- .../server/agg_in-ota-232347.ads.iu.edu.crt | 42 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 +++---- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 ++++++------- .../fets_challenge_workspace/plan/plan.yaml | 8 +- 17 files changed, 428 insertions(+), 426 deletions(-) diff --git a/Task_1/.gitignore b/Task_1/.gitignore index 230a809..264d695 100644 --- a/Task_1/.gitignore +++ b/Task_1/.gitignore @@ -4,3 +4,5 @@ FeTS_Challenge_RL.py FeTS_Challenge_RecEng.py FeTS_Challenge_leonardklausman.py *final_submission* +build/* +*cert* diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 5849970..330270d 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQf/LP+qCNTsu9Jpr1CRWy7jANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgzMzM5WhcNMjUwOTExMTgz -MzM5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu -YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCYaWP6SbNjJaQ/43pIyigPEgmV95l9GmpxfP/h/VDyyA5IvbPh -ZIjvwUM+nKkPt1AlJPAUZeJC4OU4rCtJ+VPoSEPIZTS/b1DD5f4GSqyo0mKyvMBz -kNfrFXmdeFnCg396+mIvyceC1+lKC0B9wbxv9/2wEOqGlQJIzIJBbr517LDaZs7T -QbrjpecMjAa1B959sxvQeDa3kgSJXzwbKSu5XHy0sxa7LSwVrf/3YIZ1c+q/yNPw -ocN6goDGb6VP51sIbCP5XssmdBB8xhxJ9vYip/HnfsZ+fOXUJAoi+/UwoTHCIEOR -ETZn7WiESWMu36EQW8M+gDqYE1CiCADJN57np9YZhJXBHGJKEK7IVrT5fYDnVsBF -YN7bMDCrvj86kq9QKLntfz+SUmlz9ZWkVVIqtjO5ukkwe+UWKovIbfyuV6WSoX0W -JPItv/ixXuW4fnkftUnq62F45pvFx0dfZNLwbvKLfEN/YPm5alsLK5OPwVJpm2MX -PuQCiozNenV+c1cCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAdcnP9d3assTHyye+aYX4x892YolGrRh3I9FALZXAFvdw7lG2HO1n -INltE1VA7giSfDyt9304Xmfnv7y4rKP/eH4Plnl5hLI31Ox/ZMPkBNqN9PvmdT6S -kfAVHq1Mw8koTPyu0gQwJERqBhKJwHYwAZZiSLEjxawgGtXSEV4Yly/ShXS3+R2D -6OdVOkrZx0vDZoIgE7BO5hV+xssPTZueasVCQTTMHq5dRkscVVUIlYrvx7KOOIU9 -gcWNvNp+IBDXRDNaLfb107TxSnLtnHF3t6IKlhBHqEnf6rRmHE1wqyFyMNssg6Qm -AjvZzDFjhwlOXjN5/KG3+5veh07ZIlb9Wfez4FbswDSpbEgcarPGEhzPjOjEjQX5 -fZg7w3+kzHn92MWvVDPFa3LEdTI/FM5h/vx3O4b3xNX15pWuz1WIdQS49vq8Z3kk -/RLd/wg4730HcdVoLem2v/RvTcJ+NOI+iwrKbst7xMjs4K/rm3BY4dorX2XoyVG2 -tdt3IBDuOSDC +MIIEhjCCAu6gAwIBAgIRANUyVSicTEI8mvC0oI+yDUswDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxNTAwNDkzNFoXDTI1MDkxNTAw +NDkzNFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ +bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEA3pjjbfACLCqi5GHZ/RqxZQIg08B3kBWdowCbSmkDtiCgLZx4 +Ed3JNhLNneHYf5hkseWfzIluNsEO5hMouZ4/lTxc+rkx+ArpHl8s8PuSkxg7GUQj +g1em2kdn+PKCSOAPAwXRV2gp5G0lYPdmNUNlt7ub/n+KZ06P7kTlZ3Yrh5+EC1Hb +0K7lO2oY+FO6B2/Pwod4vWufdJUL7tRrjYSoV3nBYjUmtIbxEbgwnpzElge8eb0B +6m05h2Nmewox4ZItfeDISUrk9N4Ux5cPVmcPXNkwHMQvKBn2OIgJsaOWlDcE5JiW +f7OG0AzZx4hFzkTyyYUTfzwyEOiO3G8GtZscKBJe0xBh2ggISKjTVhLsTBsiTz3i +XR8QmK/NvXM6BElwKXbzQqYFMKZUNHRnw3AUAYce3D+s8u7jGTBq3fhKgggy7K5L +iypKDRhQDg+gchznPoZeEJjgm2qiT+hn32q9USgHIvwswfudajHkVNCM7oGMz8H/ +GdoIXcIWNMtKV4gvAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBACPuW17XRhwJC6Grdygb4sHxK7HqxWv6SzjQTK1aaEUtYXF76J4J +BNrvFNm425LMVPyiY2gInAYsys+H5iASlzWikigGrrDT4kQOT7GTd9+49C8LW5tA +qWwKM3eWBAk4waxn/OYWOwqSXFEVqEkWv4jE1rcRGX+J5FhyZfZ7NvFmmqaqoAH8 ++Lp3IM5cVTl19DPGBwT3fJ1V1TP9dV+RkziXSLEy8w3XdTrghBL3ZdXoIpPhcbJR +dk9Jh7hESrT7a2PVZr/w5a7V+g6Yab+1NXQ0jAz9e8cM1kPP3HYpIhrvUetJm1eJ +D0Um1m6zItOM/AFbr7JMszcUHIZ2qSw3Chl2T6ZTHm0wL/UbtZWhBll42WJ/Tqnx +JZLllFpTmckg+qYJ0tA4qnGMcW0/XJUTOOj7ECsQRHRJc0gEQnTbwYlBY+/k67dU +lqdsIADt4Ee7a4EOuH6QGk2FSTGZitQs9v+dDBTT3Io5ZQIw9B+TLIjXrUheAY20 +epcLyiWOb2qOKA== -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index 7b48fb3..f6dcbba 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIG4wIBAAKCAYEAmGlj+kmzYyWkP+N6SMooDxIJlfeZfRpqcXz/4f1Q8sgOSL2z -4WSI78FDPpypD7dQJSTwFGXiQuDlOKwrSflT6EhDyGU0v29Qw+X+BkqsqNJisrzA -c5DX6xV5nXhZwoN/evpiL8nHgtfpSgtAfcG8b/f9sBDqhpUCSMyCQW6+deyw2mbO -00G646XnDIwGtQfefbMb0Hg2t5IEiV88GykruVx8tLMWuy0sFa3/92CGdXPqv8jT -8KHDeoKAxm+lT+dbCGwj+V7LJnQQfMYcSfb2Iqfx537Gfnzl1CQKIvv1MKExwiBD -kRE2Z+1ohEljLt+hEFvDPoA6mBNQoggAyTee56fWGYSVwRxiShCuyFa0+X2A51bA -RWDe2zAwq74/OpKvUCi57X8/klJpc/WVpFVSKrYzubpJMHvlFiqLyG38rlelkqF9 -FiTyLb/4sV7luH55H7VJ6utheOabxcdHX2TS8G7yi3xDf2D5uWpbCyuTj8FSaZtj -Fz7kAoqMzXp1fnNXAgMBAAECggGAAS4KWMJVTIEwF6aFKHxteaBkHpsUvxkt6xmn -9BySkdk78xLfikZ4S5LYGGtSC7hu5bq2zmbzgh0Hk+a79w33uPvw5Q4+LZ/eT4Xq -RNYzJqNqTC6V4XnPkhb6eAjvI52s+6C7PdohXJabTGLF6bNO6CGn/xhCbdmdc5Qn -C1FLfCeMPu8+I/iFn9mFmQfvIrD1kfeJpurR/Eh5wdkmN/ebn7W4PsCG09rHqpX2 -6KKrUnbGlxwmN93+C2a95HYHdj+OO8rg0IL5bfUmYz9Vusxff6zokQN+JN9euRiv -LvS8/M+cWnvGOaSkyJDfYlYPwoXTadtls9i+n9ojc/hUiEtn3GQibAYjo7MwxJFj -XDZe7vFakXgkoK2gwA0oY/F11WeSae/HkqoQSzRDLxtIGtDFLlGJN+pJPjoEKrtd -JOXmcNwUoykQgkt84To9u7DfK64cK48h7nDwSsLLxp35WmXT7SNrpWUBnJgX84Nn -Kh1mAbnTxO32CX+ClZyZ+ojdvurxAoHBAMXu6wkHjDbc9prKmaOKSfRDfzb9JLAD -m2JMIMcEHOxZWMXdfzXeLI29OC4elXi9i/2gZ8QJZDr68eZ+hPBmLtb0czy0hRN/ -u6qDuc5vJ94TVL2OdNfB8lwWyJTx0wLHADGZ+5lubxhKwwrCEv/sssFWVHUfXWK5 -7SxbY3G1mMZvulAbz/gHKWZ9r0AmLzzSUFYWkFtyyDghxDzUGnG1ClYIVrIRtyvo -hgZrEgEwqnO+bPVq3cL4/rDcgPXZNylihQKBwQDFH7vFDUSFVP4Y9KAvn6fImCGo -EQbg4nOWIx+zeLbar4s6xEJ2rp5EU99TwXZKBYVBFQ/VZyASB5B3BVyVO6lbDB8q -kwKha0ztLiDo4kNyD5dlTXW8i7N4au3Bw8n5MFvwta1Iz74B/bLW+Ad4klaJTpzw -FR9ZvLlNSKkML3kNUc1d68WpYymjCPNbuR59C2+ZMabv6kShxpbn8NXzJVwhoGj6 -Y/w2Wjy6YzC5ogoumNlMS0gKfl6HlAOIJlDxeysCgcEAu2JAqL+4gogV/t0nLqhQ -8yqjWQ+2l9wSUrD3pvHB4A+F92yGbhzz2Qv2D9Nsdm4cBfTBx9mMRjokoK3OdTiH -x4CNSD8ubRNUO02RrlmVSKzMYNhozYoTRBNduYRm3A5BpLO+ebcO/dRpadnp2tff -MyHjuy4CXuDeJEwwjQn6pIJJxGVQMeO10g3Sx8xelBoXbCjYaXr1Cg8NlPjIQDXA -n0otqU8UNkFgANuEpBPKiuEQjhap81d+5zkZ7aXCjy9xAoHAQW0e7XBR5c8n5zCK -WkQrdDDKOvYrykhfBN3zj6XpSvwowgCR7sJWVWdhIHN9x2O9rrRG5RWtV06bbGWj -LQT4WPfVAFR68wiiJ7a/xYwTxq/WGBF1mnbjwnv7HezWBJdAbMxgD2KkNhT2XtND -54jqn/gvrp/UH/y7pCMRuLGpA/q6pwmyOV5oW2yFGVSAAhDhoX8RYV/oF6nKPIF7 -AZDM23xaW4EEHSYmMdbqPTLDHmQs+12hM5pt1aIS6gWNqBixAoHAHmVLl0D4lHqF -WTvUsSAKyeBw0ViGQZryN07J/LWW/WRfLrYeFW7OV+ksf6uY7YsjUkTVZfktew1T -igPVqm7kAuPBNdifZygGdUtZyqlSPKlqQddZ11/v3Kwqrc3IyyWHCcjplTPHpW3y -0gxocloLMMmcKhdUwAT1AHP5Fk7WJSK13N9WK+qJi+cwBRFmKRoc1L2XGNQPx1zO -NEDpmSfEZaFSx264OaFN3tOZ7kBNsk0ROW6ncYpOIsnKEXX5EGDK +MIIG5QIBAAKCAYEA3pjjbfACLCqi5GHZ/RqxZQIg08B3kBWdowCbSmkDtiCgLZx4 +Ed3JNhLNneHYf5hkseWfzIluNsEO5hMouZ4/lTxc+rkx+ArpHl8s8PuSkxg7GUQj +g1em2kdn+PKCSOAPAwXRV2gp5G0lYPdmNUNlt7ub/n+KZ06P7kTlZ3Yrh5+EC1Hb +0K7lO2oY+FO6B2/Pwod4vWufdJUL7tRrjYSoV3nBYjUmtIbxEbgwnpzElge8eb0B +6m05h2Nmewox4ZItfeDISUrk9N4Ux5cPVmcPXNkwHMQvKBn2OIgJsaOWlDcE5JiW +f7OG0AzZx4hFzkTyyYUTfzwyEOiO3G8GtZscKBJe0xBh2ggISKjTVhLsTBsiTz3i +XR8QmK/NvXM6BElwKXbzQqYFMKZUNHRnw3AUAYce3D+s8u7jGTBq3fhKgggy7K5L +iypKDRhQDg+gchznPoZeEJjgm2qiT+hn32q9USgHIvwswfudajHkVNCM7oGMz8H/ +GdoIXcIWNMtKV4gvAgMBAAECggGASCRU0TSP/7BxyoLMG3OjOpFOAlLGbTQUOtff +fGY8hbJdN2sWnvO6WoQNj7W6bN//AojhGXEQ/z3ijj53XHElOkCuAbQztagTlXxT +HGbsQjAAN1gWCmNF+EhcMhqmjufO9bPU/PcNXLLjAmIsBecp+DodfIXpXUHg89/w +WW+6++F+8gw9qYyFTpQ8M38vM2nRc8JkJz/SFf6YN3cwxFTSGkejnSiMusVhK9T+ +LOmx7M3lD69qB4gOtQpKFGZhdDHjYaXz+KPz023C8CPTdAbpthxocd/6NFz8FF8U +UIzXCya2iigKBK7mVkzJuWUCt2yO/k0AckpKJeQRr3+WtdOiZwoJ5XpUynkfoepX +IZdQTUz3lDc2GPOTugj7rxZXLbhSwWzfmPbGMIeoj47+N9oDk5+lQuOUSlHig2Bb +YfdIkQy/Nr6uDASwnSBIq93G/SIFaiv8qQlkzRMJ6gMHIc2e3LBVynm4Ms4lcHJD +NSkhDBcMr9sw1qKo2gtO5hyuk8yBAoHBAPhSDJb64OvhG3TxDsWnsNmuTgbL67WK +shj7uZTIBP0Mvht9cPjfDLg3RfjSRThS7JCUYG+Id4JEFeyac6TzWpKEtp8tPOiC +bC9jVZo1ekqWMb8Fq8npzM+IgbcAVsYD4v0gcp8PgLWn9baiJLMIRmXLGGaq7oj0 +TGklzRv0hgn6zBymwxR8GcD3wnh33ZusPuPTYGSizIRPxA8LgL+1PSLU+IyUcd7U +uOaT2zqi2YZTFIFdi0HPrn7UYZqSnzTUFwKBwQDlezAw6lVTgM1hORlATZ5hJzyM +2lLSmwY0PZ/bqaCJNgUD8MRfepNK/yKIoKS9GfZHQkmVmVoiF8xMefWjq5w8mVAU +NcAf7QuGlw0pg/FrhRLgEkqg+eiyJfl8u+ZgUImuUatIldpN5OaNWcLu8b3S2VOp +o4GY3KO81Ls8JijXD2xc7VhRCvywloDnLzSUkl/kFVrykMPiv/RemQIQUhTumWpA +NcBULaOjogqON9jBd4xgCgAdnWaKs76c+XSmw6kCgcEA0dfUV8oORIboQvxqdVFu +O6X2vfuZZsKcGkyu2THmNUmNZYGt9EHZZ9sdwFVAtYYt70fT7qyuAWEz/cvPqjcT +9Pk9smnyLLH6ZllVP4mtnFYsF7bdIzX2I/LBWzpoGdGzAiFne08If3o+RGXlCX4W +r3LfXfNYvFdmMv0ExXjvxIMx9YxfEnKE+PLmXhM9LI50XuaDcMe6eJ1Hm0cnN9oa +ndLHb1UKnTm6Pu/3tSdlFwQiMegxBB5S4U7sZEk/TM9lAoHBAIDQqbiLkeIRxzfw +CVCjQWhf0glu9FbsVos0nGt9yHO9MwuHN3QxJkVO+l+fbVoJHMnbV9r1/jZtDW1Q +eKarSkRp+x2dHn/NXE7ss6K+QeKNDI9jNSkvn4OA9Y8jGqquCtsjVPalx6k5+IEY +BeiDIn8dJ21uLu1TzUXOVFvrP7mZGsb/JDg55qZplWowgV902wb5RdgrkwnRnqcL +VLE8oitdSttIUPHvvI+6AhrbFn1jUhUHCBGXrVvmkfUjwmtqIQKBwQCWa31G2hkw +6KgQNWJbXFQVnKbYGG7u4MVY6UGZ7JtmHNawIMNhhkXu4KFjlWxoyd714d1pDRzr +el6+AHxCq8mUfOk+6QQmO5F+ZfXVf1DVPE8Yow8DIqUY7cK+X9qhztEjSZG+7DAT +SscpvT7K64ri7j5Z2O2YJr9T/NyN8BsdC0G9Twhs7NNaH4Kg+NtKAJqVOoWbDD5g +jH77YJBZWXtABWjjIv8yOrBm7gUMfnhTJmrDF3SOtIK1mxJyrm5b3cc= -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 0f53f66..074143d 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRAJD9tSiG9UzqnOZtT3QGfmowDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxMTE4MzMzOVoXDTI1MDkxMTE4 -MzMzOVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs -ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEA30K6CRhyHQAYSuiKcxwUVWkzy3jyFWfPiANkYxuU -JIoHwxH8zysVh5iZpkbv0gyMagvQ8Tl6yWxAUrWG2/auxgZMKwOkiDF60CT4MD5b -1Brsh80lgrtL8Pwho3r7SqZx1Scas3zQeOyciO+XthVuLuUzTUJrI2vKL+t7Jehs -4K/r3fwh4N+tvHvKtJZcfVREIlFatUgbi0vsqspFTBNWS6/JEY6f7YQeJICijgw8 -vMU5wDGxZma1J3gGancloORUNl7hf5/rGlRqaTM2FqQh2fFHElL84w7oIYfybMIA -ANGizLtiHP3cX2hmiVHradDOFfu2zcMXk1cxJpBwhdUXZu2+MpewaqIxl0gwCFK+ -JXf3hhvaf2UYF6ITjrDcTzM+dafVhnF9K9/K+LfhlZp+4oi4JmuDe3O0A96dTbVd -Vleguwz8PAHfbPoSVqMuXZ9Mgrn6SSn+WW3ubDFbfKsQBq3Bk8ix0ebAAw4og0i4 -KTZxOza/AaAHz88mmidlKSBJAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBAAlWaBArd6CKJZNDi144TUJgF9pI2ZS1WeG82z+oLeCE -5fUznPVdJP908xOGZS4egsdSHdqaurFwmVkmpSHyePowKaG7PAvgFsGNjKzELu73 -VqeZKR2AwwVoNvR4bR8V/0k8lf4f+t3Y/mtzwfJD8hIHC9lzXrE+njQqLx2Boa/C -KxnXN7EaRhwCDHUqsUmfYaixCZUwVnas9BbLoobdcFcC7C3Q462YSuWDwRp6te67 -bCtjDxMOXQfMPoY3+JDAzR9qzVhdinw4HMDZDv/KKVNahmAl4jplr5qGnP8EIPwI -8VDSUMUEHFHpYr+KDjCrqtVX/IT2NTJh+1rOuAnPquyeV39VV+0Mao15ilMMbTNX -fN6cv71+CbTNN1OUgJ1KyzEs0i4PSTeafiteJAGec+rz+6Ie9DHdVbIOs0n7U9w1 -pCJAdSqklmHdA14EabLK8lIX/7V8FYVqyHc9htzGUbHSeAswVEPzibn6tEBu2nh8 -B2wscdMHuGj3SUOmwyDadg== +MIIEizCCAvOgAwIBAgIQTCSYz6JWTOKcSzpyyILwBjANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE1MDA0OTM0WhcNMjUwOTE1MDA0 +OTM0WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl +IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB +AQUAA4IBjwAwggGKAoIBgQCSoTKIyxHxymN/xOHHcnwIdUxB9BtrbNXiGeh9AxW+ +7k5ieWBi5GW9yARf7TWh5UgaZwFj1K8BC4/V42UCIQZPt26iw/+3cE3tZQRHP96H +mfVDcr04ZXDLvjn+I6sWzgjzFgoij918ueoZOOYj3TYth7poAKwj8+Krmy16RH0s +6Mvp/dzsakcOBtFwtVtvA33NKjfofs8b009e8KNWw/x5GhWaAi7s84ybCIhibNZY +i70iC3iPH/T5KC6kyOfup4oYmmHyqAtA6ommgwCveXPLkXl4Z2b6gYsd7lu3tB9c +j/8wCoWR7VEvEKMTKt9lHxx4LLwLNbt5GNvE+YP1sQpol/QEagTajt/Oi325URzS +At/NXqOBMO7P/x2yLOP7MqWXX1658PUQ7kf8D5bFXVUFIka9pY3BP6gLgIgyo65V +dc/9kiKiZUi4pXtl+J+TUXH6akA68qJJrUQ57Ok4cyln/LATpi2zpoIWQDcbmLDL +Y1C2mEe6y0AOssjCtZ5DSN0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAMa8ar5Spzn7y1um+UF7eVHKWULN4HSwFQGSBtnxdlImi +JumYegN5ly7rvYFV23Pc+hIaMUSvaENO3y22HA6A8WYtNPnHBc5Hzbt0ApOpyToJ +wGRjtRJ7QrG4xXW0pANegpTyjiyqa0hnfv5PJKU84Dua0vBOCqJTIc6PGpPj4D+R +JsmsMzeGiyNMbWHTPzCDQnI5rIyskK09g6/Fpz+d/e70R+ivmNoXKS3d+uuprOh+ +WhY6R1g1TeF1Y+xhO5EO/RmT2ZY2S80N0XRQqZFBSLObq/YxoTcTem9aIZfMLYSs +v+0muNPtZ00jHfDezPpSkK2l00CAEwHyulDA4Jm26IT8+Z4xklPsJIsBMiLZpNwA +FoxUnwrkN5pn+dg98BIrVYTKBTbiGcNbPXtdLUHyQBxkjqap6TSaoxQ+tecG1eFE +DzkyEHHMMr1yC51QOdcTFEBVGiXmRL7s/4aZxYRa/bCeGGiIMNqh9New3qdR8zGN +70aiOffFfzhh3fQIdLvm -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index 8fc3fa1..d012d2d 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ MIID4TCCAkkCAQAwejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk ARkWBnNpbXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoM ClNpbXBsZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkq -hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA30K6CRhyHQAYSuiKcxwUVWkzy3jyFWfP -iANkYxuUJIoHwxH8zysVh5iZpkbv0gyMagvQ8Tl6yWxAUrWG2/auxgZMKwOkiDF6 -0CT4MD5b1Brsh80lgrtL8Pwho3r7SqZx1Scas3zQeOyciO+XthVuLuUzTUJrI2vK -L+t7Jehs4K/r3fwh4N+tvHvKtJZcfVREIlFatUgbi0vsqspFTBNWS6/JEY6f7YQe -JICijgw8vMU5wDGxZma1J3gGancloORUNl7hf5/rGlRqaTM2FqQh2fFHElL84w7o -IYfybMIAANGizLtiHP3cX2hmiVHradDOFfu2zcMXk1cxJpBwhdUXZu2+MpewaqIx -l0gwCFK+JXf3hhvaf2UYF6ITjrDcTzM+dafVhnF9K9/K+LfhlZp+4oi4JmuDe3O0 -A96dTbVdVleguwz8PAHfbPoSVqMuXZ9Mgrn6SSn+WW3ubDFbfKsQBq3Bk8ix0ebA -Aw4og0i4KTZxOza/AaAHz88mmidlKSBJAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBAJNEYBJ+T/xuDUO5 -4pHeOo+1U0IXJot77GIXTZ5dj66dop2IW5QAvlF1/YLHoTYnEs7JJSgsu2uPUb/j -u1k3ZpZst2ahZmNA3/Zfs7tvhKD4iDakubj4GeEcXN7khe/optEW8//3XYK89HeH -WEdV0MO5PsI15uE0El5AXxw5N1DtmfqrxVyZVgv9moEOpu8HxZhg6QwXqsV1mGtf -gVaX4Eix78kYlPC3UPMeZve6ToGsjNzMpTksS4WT8QQCNSnKHWS7Fc4IJE4oI6Uf -/sLpYtFbk7NrLqfvk2qkH2GWmNcZGPXsSxq2JWgMkLfxX/uL4bwyj3LvEWeYwf+R -+vYH+l1rx5/OtVb+xGtRmPLa8D2tmz2ofJv87mZfm6JVJKeiW5wAus2fGTdyzlsE -TQ510iFNXjr59Uu6WEZ6+drjokM2a9adXwdMmbhdxKNzBrHPDObnA6kPtlyv4wj0 -6nBDVVO7GQ8J0fUYuqX+3YoOAsYPWZhX+4Scmsc1x5JcgBmEqg== +hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAkqEyiMsR8cpjf8Thx3J8CHVMQfQba2zV +4hnofQMVvu5OYnlgYuRlvcgEX+01oeVIGmcBY9SvAQuP1eNlAiEGT7duosP/t3BN +7WUERz/eh5n1Q3K9OGVwy745/iOrFs4I8xYKIo/dfLnqGTjmI902LYe6aACsI/Pi +q5stekR9LOjL6f3c7GpHDgbRcLVbbwN9zSo36H7PG9NPXvCjVsP8eRoVmgIu7POM +mwiIYmzWWIu9Igt4jx/0+SgupMjn7qeKGJph8qgLQOqJpoMAr3lzy5F5eGdm+oGL +He5bt7QfXI//MAqFke1RLxCjEyrfZR8ceCy8CzW7eRjbxPmD9bEKaJf0BGoE2o7f +zot9uVEc0gLfzV6jgTDuz/8dsizj+zKll19eufD1EO5H/A+WxV1VBSJGvaWNwT+o +C4CIMqOuVXXP/ZIiomVIuKV7Zfifk1Fx+mpAOvKiSa1EOezpOHMpZ/ywE6Yts6aC +FkA3G5iwy2NQtphHustADrLIwrWeQ0jdAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBAFRi3cJmsIBdgNlT +ZYZbqvz20aNeHYlQjL8/gTXBRf/0DgRNijFa81kqiwcBpXhkMqSQTxMQLIny8qM/ +z+3m2xTrCFeaS9FYG/EbbyZTBIR+HDCvbDMHJ2l/ByRV7kGv/oVpZzC7McTBiEtO +L1+h0haGeROTVO3/lLn6z6iI9IRAMNWFFojISV6i8djbXCvzAU2M5w3MN3dGXHBq +SYF2Hk2j527mvPDduhEUOeoNXi2dtQeH1s8vHk1I0Inm8RcJmqivf90ys85PL/Rl +OweyooHqLFRprKIoI0gjJ2MlMaz0BMeMmAx7gOAf57kPifluOKl6dHrhlxfCWEOZ +mI87VcsWau2SfzWfajzV035xb9b4n36WaPgNnVXaJ6TdQ0t0ttDz349CvPBH6ONO +Vy1dgPpLG0DO9R700ggEGTQ+jVhnTdDTxDLM5JFahMtykHnbJOEIR2hIEuOnVbPF +QmDUvIL/CGlOHhgbGiAQFY9o/zLDwZF60EXanN4rePXjRRLJuA== -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index 0467c67..e6d2660 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index 44f9aaa..2f8be64 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQf/LP+qCNTsu9Jpr1CRWy7jANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTExMTgzMzM5WhcNMjUwOTExMTgz -MzM5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu -YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCYaWP6SbNjJaQ/43pIyigPEgmV95l9GmpxfP/h/VDyyA5IvbPh -ZIjvwUM+nKkPt1AlJPAUZeJC4OU4rCtJ+VPoSEPIZTS/b1DD5f4GSqyo0mKyvMBz -kNfrFXmdeFnCg396+mIvyceC1+lKC0B9wbxv9/2wEOqGlQJIzIJBbr517LDaZs7T -QbrjpecMjAa1B959sxvQeDa3kgSJXzwbKSu5XHy0sxa7LSwVrf/3YIZ1c+q/yNPw -ocN6goDGb6VP51sIbCP5XssmdBB8xhxJ9vYip/HnfsZ+fOXUJAoi+/UwoTHCIEOR -ETZn7WiESWMu36EQW8M+gDqYE1CiCADJN57np9YZhJXBHGJKEK7IVrT5fYDnVsBF -YN7bMDCrvj86kq9QKLntfz+SUmlz9ZWkVVIqtjO5ukkwe+UWKovIbfyuV6WSoX0W -JPItv/ixXuW4fnkftUnq62F45pvFx0dfZNLwbvKLfEN/YPm5alsLK5OPwVJpm2MX -PuQCiozNenV+c1cCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAdcnP9d3assTHyye+aYX4x892YolGrRh3I9FALZXAFvdw7lG2HO1n -INltE1VA7giSfDyt9304Xmfnv7y4rKP/eH4Plnl5hLI31Ox/ZMPkBNqN9PvmdT6S -kfAVHq1Mw8koTPyu0gQwJERqBhKJwHYwAZZiSLEjxawgGtXSEV4Yly/ShXS3+R2D -6OdVOkrZx0vDZoIgE7BO5hV+xssPTZueasVCQTTMHq5dRkscVVUIlYrvx7KOOIU9 -gcWNvNp+IBDXRDNaLfb107TxSnLtnHF3t6IKlhBHqEnf6rRmHE1wqyFyMNssg6Qm -AjvZzDFjhwlOXjN5/KG3+5veh07ZIlb9Wfez4FbswDSpbEgcarPGEhzPjOjEjQX5 -fZg7w3+kzHn92MWvVDPFa3LEdTI/FM5h/vx3O4b3xNX15pWuz1WIdQS49vq8Z3kk -/RLd/wg4730HcdVoLem2v/RvTcJ+NOI+iwrKbst7xMjs4K/rm3BY4dorX2XoyVG2 -tdt3IBDuOSDC ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRAJD9tSiG9UzqnOZtT3QGfmowDQYJKoZIhvcNAQEMBQAw +MIIEhjCCAu6gAwIBAgIRANUyVSicTEI8mvC0oI+yDUswDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxMTE4MzMzOVoXDTI1MDkxMTE4 -MzMzOVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs -ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEA30K6CRhyHQAYSuiKcxwUVWkzy3jyFWfPiANkYxuU -JIoHwxH8zysVh5iZpkbv0gyMagvQ8Tl6yWxAUrWG2/auxgZMKwOkiDF60CT4MD5b -1Brsh80lgrtL8Pwho3r7SqZx1Scas3zQeOyciO+XthVuLuUzTUJrI2vKL+t7Jehs -4K/r3fwh4N+tvHvKtJZcfVREIlFatUgbi0vsqspFTBNWS6/JEY6f7YQeJICijgw8 -vMU5wDGxZma1J3gGancloORUNl7hf5/rGlRqaTM2FqQh2fFHElL84w7oIYfybMIA -ANGizLtiHP3cX2hmiVHradDOFfu2zcMXk1cxJpBwhdUXZu2+MpewaqIxl0gwCFK+ -JXf3hhvaf2UYF6ITjrDcTzM+dafVhnF9K9/K+LfhlZp+4oi4JmuDe3O0A96dTbVd -Vleguwz8PAHfbPoSVqMuXZ9Mgrn6SSn+WW3ubDFbfKsQBq3Bk8ix0ebAAw4og0i4 -KTZxOza/AaAHz88mmidlKSBJAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBAAlWaBArd6CKJZNDi144TUJgF9pI2ZS1WeG82z+oLeCE -5fUznPVdJP908xOGZS4egsdSHdqaurFwmVkmpSHyePowKaG7PAvgFsGNjKzELu73 -VqeZKR2AwwVoNvR4bR8V/0k8lf4f+t3Y/mtzwfJD8hIHC9lzXrE+njQqLx2Boa/C -KxnXN7EaRhwCDHUqsUmfYaixCZUwVnas9BbLoobdcFcC7C3Q462YSuWDwRp6te67 -bCtjDxMOXQfMPoY3+JDAzR9qzVhdinw4HMDZDv/KKVNahmAl4jplr5qGnP8EIPwI -8VDSUMUEHFHpYr+KDjCrqtVX/IT2NTJh+1rOuAnPquyeV39VV+0Mao15ilMMbTNX -fN6cv71+CbTNN1OUgJ1KyzEs0i4PSTeafiteJAGec+rz+6Ie9DHdVbIOs0n7U9w1 -pCJAdSqklmHdA14EabLK8lIX/7V8FYVqyHc9htzGUbHSeAswVEPzibn6tEBu2nh8 -B2wscdMHuGj3SUOmwyDadg== +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxNTAwNDkzNFoXDTI1MDkxNTAw +NDkzNFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ +bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEA3pjjbfACLCqi5GHZ/RqxZQIg08B3kBWdowCbSmkDtiCgLZx4 +Ed3JNhLNneHYf5hkseWfzIluNsEO5hMouZ4/lTxc+rkx+ArpHl8s8PuSkxg7GUQj +g1em2kdn+PKCSOAPAwXRV2gp5G0lYPdmNUNlt7ub/n+KZ06P7kTlZ3Yrh5+EC1Hb +0K7lO2oY+FO6B2/Pwod4vWufdJUL7tRrjYSoV3nBYjUmtIbxEbgwnpzElge8eb0B +6m05h2Nmewox4ZItfeDISUrk9N4Ux5cPVmcPXNkwHMQvKBn2OIgJsaOWlDcE5JiW +f7OG0AzZx4hFzkTyyYUTfzwyEOiO3G8GtZscKBJe0xBh2ggISKjTVhLsTBsiTz3i +XR8QmK/NvXM6BElwKXbzQqYFMKZUNHRnw3AUAYce3D+s8u7jGTBq3fhKgggy7K5L +iypKDRhQDg+gchznPoZeEJjgm2qiT+hn32q9USgHIvwswfudajHkVNCM7oGMz8H/ +GdoIXcIWNMtKV4gvAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBACPuW17XRhwJC6Grdygb4sHxK7HqxWv6SzjQTK1aaEUtYXF76J4J +BNrvFNm425LMVPyiY2gInAYsys+H5iASlzWikigGrrDT4kQOT7GTd9+49C8LW5tA +qWwKM3eWBAk4waxn/OYWOwqSXFEVqEkWv4jE1rcRGX+J5FhyZfZ7NvFmmqaqoAH8 ++Lp3IM5cVTl19DPGBwT3fJ1V1TP9dV+RkziXSLEy8w3XdTrghBL3ZdXoIpPhcbJR +dk9Jh7hESrT7a2PVZr/w5a7V+g6Yab+1NXQ0jAz9e8cM1kPP3HYpIhrvUetJm1eJ +D0Um1m6zItOM/AFbr7JMszcUHIZ2qSw3Chl2T6ZTHm0wL/UbtZWhBll42WJ/Tqnx +JZLllFpTmckg+qYJ0tA4qnGMcW0/XJUTOOj7ECsQRHRJc0gEQnTbwYlBY+/k67dU +lqdsIADt4Ee7a4EOuH6QGk2FSTGZitQs9v+dDBTT3Io5ZQIw9B+TLIjXrUheAY20 +epcLyiWOb2qOKA== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEizCCAvOgAwIBAgIQTCSYz6JWTOKcSzpyyILwBjANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE1MDA0OTM0WhcNMjUwOTE1MDA0 +OTM0WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl +IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB +AQUAA4IBjwAwggGKAoIBgQCSoTKIyxHxymN/xOHHcnwIdUxB9BtrbNXiGeh9AxW+ +7k5ieWBi5GW9yARf7TWh5UgaZwFj1K8BC4/V42UCIQZPt26iw/+3cE3tZQRHP96H +mfVDcr04ZXDLvjn+I6sWzgjzFgoij918ueoZOOYj3TYth7poAKwj8+Krmy16RH0s +6Mvp/dzsakcOBtFwtVtvA33NKjfofs8b009e8KNWw/x5GhWaAi7s84ybCIhibNZY +i70iC3iPH/T5KC6kyOfup4oYmmHyqAtA6ommgwCveXPLkXl4Z2b6gYsd7lu3tB9c +j/8wCoWR7VEvEKMTKt9lHxx4LLwLNbt5GNvE+YP1sQpol/QEagTajt/Oi325URzS +At/NXqOBMO7P/x2yLOP7MqWXX1658PUQ7kf8D5bFXVUFIka9pY3BP6gLgIgyo65V +dc/9kiKiZUi4pXtl+J+TUXH6akA68qJJrUQ57Ok4cyln/LATpi2zpoIWQDcbmLDL +Y1C2mEe6y0AOssjCtZ5DSN0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAMa8ar5Spzn7y1um+UF7eVHKWULN4HSwFQGSBtnxdlImi +JumYegN5ly7rvYFV23Pc+hIaMUSvaENO3y22HA6A8WYtNPnHBc5Hzbt0ApOpyToJ +wGRjtRJ7QrG4xXW0pANegpTyjiyqa0hnfv5PJKU84Dua0vBOCqJTIc6PGpPj4D+R +JsmsMzeGiyNMbWHTPzCDQnI5rIyskK09g6/Fpz+d/e70R+ivmNoXKS3d+uuprOh+ +WhY6R1g1TeF1Y+xhO5EO/RmT2ZY2S80N0XRQqZFBSLObq/YxoTcTem9aIZfMLYSs +v+0muNPtZ00jHfDezPpSkK2l00CAEwHyulDA4Jm26IT8+Z4xklPsJIsBMiLZpNwA +FoxUnwrkN5pn+dg98BIrVYTKBTbiGcNbPXtdLUHyQBxkjqap6TSaoxQ+tecG1eFE +DzkyEHHMMr1yC51QOdcTFEBVGiXmRL7s/4aZxYRa/bCeGGiIMNqh9New3qdR8zGN +70aiOffFfzhh3fQIdLvm -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index cdd17d5..7e291b1 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQH7cox9gfQuKaAwDHzUHYCDANBgkqhkiG9w0BAQwFADB6 +MIIEMjCCApqgAwIBAgIQNfEzpo1jSS+9JWBVZESH/DANBgkqhkiG9w0BAQwFADB6 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTExMTgzMzM5WhcNMjUw -OTExMTgzMzM5WjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQDbD1K2p5KT+bNLlu2pCblCq0vC16YJG+bKxIDII5yJKS0E4eEY -0esxdTiEHQL9ZQ+XB73xGr+7gW1VAEvuKDFUrxzV1Ab1gPtuHbPzuFUtcWo6Jvao -TayezL3SV5nTmhdBxXGID+oDC7P6Xua6GZ4/u/VlywrHEuZXS8EpaeALYnrSmSaA -y9KpCDMa14pkmklfyt2i/8EEd2a0SSPzc/jBfIbmiQOtkjlyHSzNx3QNTXMduwHC -aifsvqqbkqr8hpqM0UwHAW9JmwFfAgC0Y3gE540Y09DDU8ZlS0/MAmi8q3kJXI6l -pqiUHSrHdD3gprI8ZdRZGf7pRh4oe4Q4w0C1AXSl2bqYHLoNcimwpuFKgBSl7uy/ -Fv0OhXuB2/c7I3JpKroScD8WJl3Sq5gqowQa1fkwSDSaL55hRK0VQRBYGZ7QVLhd -6oww4KitlytVV23eXCw8ae2Qt0HllRd4g1J7yIWezHLP8DlTOpsq1JIicqdtM0ls -lsROKhpU7X+R2EcCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv -bmUwDQYJKoZIhvcNAQEMBQADggGBAEgkqWlrDbA4s2qs6ZDNVyiFVmVkwVAT3CvP -B3CyP2mLQT56DdOP3QmltoEfVgSbbwgkAO5COE/EzFS0PyMqhNWrtZAS43W1fMg2 -sTyYXGsVAjz1yPTe35Led4uM8eGmh8lOTEedxZJSJemmCJL+QYET/VWHdZ/e8SjD -kvzZrvPWOIfaBpoDqx3xXOXZZYVQkfCnwDwod/Uay2zzAQ9GKjTGBl3HKUSFoLcG -4gkM986zlUqgaekjvxRO4s2+UDS2BLzQcKxa7hHIIdZ3b0ShncbEU1j+o8tsS5zn -U/pEtpewz6JsrN6WVXOl7fIvLa2zpAmNFeNTshheb4ArcKklwGtXKG69DuRJmbIp -qQ/cB+KA66LfWh53WjU0J0TyVNf4hH+RXcG+mvq83/iO/skv2CgJGvTIAQwvnUCy -tfV2+VqntvwEawBB9PjkdK+qLjjNO9WGoCJN4mW0n5DxAJMZgmLs1eVGlUXt4vXH -peih13By9Tz4Km02zQmWgOSM+qrJSg== +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTE1MDA0OTM1WhcNMjUw +OTE1MDA0OTM1WjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDSUqi9Av++Vss8J51EtHlJc9eO+WbenkahPvhC9f5fEqpO+Ij8 +q18em77xIJ9b+b/vpnSibtzgCJOjoS7340jpLFURtJvVTIDr2ROeJ5jn99DROUws +qN1GkGINtz4y8DeDdM1NyO03wq2Ao+Mu60f/40Qz18MR6nY1wqY3GPQwb2LwkIrg +kLim5zZhQ34x7Tj2IY0pr6juucVtyNxKcoFFEM40ZxUBICmcuvpTt0ZYuWShtuZS +Fb2FVB1lTEErRxPLcjvYjGRhNqfUhL0yc5eC8UrWg/qdS42wRQ0IdOrWTHw9XrG/ +MUCQ0JI4cHc8TV6w+G66V6+O+/DKzaLCLqqSQDWVtzOwYocx8CPUvRK5oM/n4Fon +H7EotU15KzcpVk3O+rSy7FqpvgSoUZclx6ePAIlkBX6Qwdio7RGAQ7Ke/ufK5baU +eEnzjT3b6iLn8EucOrwVjdd/UtDg69E0DqHeueDOj0mL4RI4+mkrXVrqBMZN280k +a1js4urJYe8ncw8CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv +bmUwDQYJKoZIhvcNAQEMBQADggGBABtn5qGLjZFj6fYUYmo1EIA1bteXLnEBsMLj +f4ZeIrqoXUHlRWtLHwpw/1329aopnsuKUK5ywGu3aTzOkm3FTYBVTP03B/LpMKC6 +1M6ArxdpT+nGUL7U1nzBOY+dZApsLe9+5ztASoAJlpNmLbC1jhBE0vqsk3U29iJa +3iDTfBTO5XCKEYa8N9sOPsJR20/09SgRvux0qisPKTwRhKMwy9iuJe3LCCeuG5PU +FLURQKg2K+4o/xxPFIQ3nFaLc/KYE6vkKe4FBBd4s7DKDmqgCptC7y/EOeSBzMpt +Z2o9mvjD3tnhY+DC0KsleWofNPz6/LhSla8q4wA3hrG97YDlW9JyBjOD/GPlwfum +KZDdW9RiFCGwMKk2nfqwdfYPyMYUokC/e2PNZi6gjSuHKQA/f/N7AV+o29MkmITh +d4zIFKAS709FRQckPGRBi9TPMxy4IG03lA8og6/uNPGlfnBZqbWlZhLoWciy1bq+ +i2031OWrOLPqdalSFup5EGoWFd2k/Q== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index a2b8adc..df60307 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 59caaed..6747564 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRAJ4G0+mvck3TvDS56TvxcyUwDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MzM0MFoXDTI1 -MDkxMTE4MzM0MFowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEA1OHA3roNj4ju6pObbgdLhoCToD9iRGkzUJd4w4N1UqgA2p6R -AWxEqaGpBZ+DYyk3PGxHb8fogG1ETXr2I5KsQKs90pJqWP6coeFb9e+BqYQb7ts1 -0yZgstiPJWTyaXjiIiQPhRvMFFdNnukIbOodtW5Ok4TNTOySNMzuzdMmqZU/Y2Hr -KO22zGE0kDnqe7MstQknMHrKtXGPyCC3YEJ9iDGf3jz4Cn5ty0zX4MGFqz4nw2Bi -FV2ra4LKjDOV5Xi5fLLoMoKTAYUKWOrc9oxfrATKWci+rUKJ30RUif0xj8nvdInm -JYRBBmyZ4u77NM4GTQV5Dgf5Vf9t+/IgOU+rLZeqG+y6FjbzGW4vbIvkmzuY9Aau -isztfR5Hgjr2kZxK2LUPwJy9n3qo6HypPeu1y9HdB4TTpPqdnPPVdxQI0pVfSHCP -AODWdHnqxwfwTzGQmJ+QH32Xv/g7RyHwaBU8IdYn8nXga0VCWLGqf/ZtFXkY7m0B -VlgQqsyXwl2pL3NLAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQBG04+4fcPYJgrFCPMnS71Kvo2pu8IgpCzR -zzHD0ZLJB2GXhKuOe5gFuEcCiGKWlqfJTP2MHdTbAHbXi0+6HPLc5X1VuED7vTRP -YpcgvmjZjkz3HU8hILvKGZApU+P7YWhCRN5/ukqnFbwW37u29bxj3m7XcMzN2+eI -s1R6ZBLnVwz/5YarJaLwwvTi+FciAyQDPIsFcWP/r6Poe7l4CdqSIf1zrC1Fna9Q -xQt7BrCLdQOdgSQaC9Y6gF69v+dVc9RUP5WD4/6L8EmeKl9VL0no2zeuScQbtg9A -c2NMyNg99F0I1ZUvMjo5WFeT5oe3Z1Qn4KIVBAWeM5UfpNAJggba7GJ1dAoF3CvG -aZEwAwKvxgHQoowoD+lfUEewo0hC61kH7BuozEH9COs5lL/Pu8p2p2/sLRtO+iF8 -Y2jRJ7uSKNpeHO4HwNnBGMMUNv0u8xr5LBccpSuu2WX8C5YJYtg2afNJNfWsbYUJ -Sd9R4wSmeO5SPrj+SVgcz0CUiSYueSE= +MIIEMjCCApqgAwIBAgIQQdOTMXWlTbqBnHEYVoMYDDANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTE1MDA0OTM1WhcNMjUw +OTE1MDA0OTM1WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQChMcjEgd5fJc/Zneg7gO5DJLjQJ3QzpRRsdtjuFUO8z78jSaX5 +QpzPDbeCeZLASsa8G4NqBVeoT51zOUi2Wysf7hmZYKeLtN1Lz9RUbkuEs4FsKHxm +st44Pz18NLq0vXpf1NYB/0Lbzx3oVulZOrZdIBuAydq7620mXBlt8Aao5pubUeLn +95wOUXS5r8Rlyu61f2gAp4EemGPV7yAjTuaB3zqGkAK6ALrNj9cWUd/IMFGG8NV5 +Zkxmq6+2Ei88GVBlQTaej2kr7ttNiOWuGqJF5YL961GwDVZa026m5mPvVrFE/4xN +gBeIaWsaSYOCmxZNhgnRCcM+w7CKtBY44uB/cwO55rjxZhq1Kn8PpVegXiky3cra +hnoM9B1ZzOBIK1hi/1kH8BK05BT8ZyGYcKBt6CHSDm2G/08D9ZvKjL1e6eCNmHw9 +uzuflWtyd7/OL12aai09CZyF0A46JL+kfc61FIwYx8asornVXOX9ElUOo3yiofHG +kxnCwXHeBFmoyzUCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 +d28wDQYJKoZIhvcNAQEMBQADggGBAGDZBuUc8qasKU2XD2zSjhOEY7rcpF30lrMj +v3CoLyBNoTpxQAWTqNWSGqMXKS/YwI9q8A59+xVXUB9t4kn8G3OMdSm5m1m5JrNq +DmZtzdPnUUjFQjwqSEleCfC49M5tNB7AJKF2grgYc0Sgr76DLP6RDW7tGMV+STe3 +WHHTJfL1uz3RlbeaVOHLgJdcSfmNjcEkHNDTWQFA8CZGCpEndlKPnTHR38EeSD1z +lGE5mPuW0FyPAR6QXlQGAa0y1AXAKvfQI1FQfss3leGA0uHejqgp7h857LaIsqIh +u6Hxt2HzB/JwWcDXYLQwitjCxyBYSLL+RDz63eFCibEMBDxpDjjEGGpoFpgQr4rC +4vxlWOwDPgpUEWESu+eIskivZ+eJPwUfki0SAPl3uqxcQ698cZXtYmxlfIH1xya7 +7zelyqPT7M9EXdL9EZgkkBQtq0EkkYcWtB8+VO+gsyVAOW9vlfaypqD4HoqGaOJr +Nwbh+mNDbLxzVawAccqH1GQAWBAglw== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index 61e0701..07d00cb 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index b0c7548..7d57803 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index 9af7b75..99b8569 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index 633940b..d154e76 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIEXTCCAsWgAwIBAgIRAOL4XYfCV0eJmTcRfQxI+l8wDQYJKoZIhvcNAQEMBQAw +MIIEXTCCAsWgAwIBAgIRALXHnF7kbEe5vRw7w+Q9pmUwDQYJKoZIhvcNAQEMBQAw ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxMTE4MzMzOVoXDTI1 -MDkxMTE4MzMzOVowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyPkgPfmtcwH/cUH/9fWi -pdTjT99WU5mYRel8ZXV62/zYeVB7wIUkvmKVkupeLWM7AZVde8QwZk112WcVyIy8 -AZnM5gupyIc19a1+k+Q+lcDzB6OJV6y64/IEDDMX+H5wVTpV/1zM053OZRsGp6VQ -XUpYbiij0i5pBWRFeZi7e/dCJi7Si3rdmUITLl3VLNAIhdBb10+7xQTSUnuTHyHj -x/5ZtM0hwnlhvTo6HgaE4klvThEg/glKjn/nDX3Kco6UZIXt46QlFM7UaoTg9zZB -cRpgdvcjFvO5dlSednoMv2wFrVEAgdzPOcjInjZMFE0zK7OKGnA7gLKAmc70cleW -wQDQ6668qIWADf1RyMDyCjZ+ozBncHMvOlkQEdJkImW5amM6RcTnNJDpeK0PmEpf -p2+npwTYaeQy/M0Ax4bLbVscAOfcJpYgr2xiLJ0u+CG7ETwJL58tAlV9mP+4yQyE -1DWkIlKTNzTCcmM/XfrQcxUh4QKeDPq7UWN+s1TVCWQxAgMBAAGjNTAzMAwGA1Ud +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxNTAwNDkzNVoXDTI1 +MDkxNTAwNDkzNVowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAx6Nu/uIYD5BH2BTwdL7k +JSxzNoMtR6hRfOVA83xZk8K42+pJFrvRV0mj8qWefl8Hcqd+Lacth9ZrenrUfA3z +SW/GnNtsDDfVdOHwJQ72IjjGArOS45++ndx85NO+a6dBRx87FPsfggBMUmz59+93 +ywK7oWSvBTwSHGcXwvvFRy3xwpnSXDs5C8yW3eDxAtPlz2vuCZFle+Ekus/5TGHG ++8HTRxAYSaWOaxeOM8xUa/IWrydSHN7RyIlFXbsWIx1lWrqu69aU31uYckHkLCaA +k2vs8SAhixR+9mysnk4hRstRoyZObIHHD9TbOvTdYUMkFh1F9jEKdSk5iZ6EaqIC +2KcpjAbFriHuZMFKW0jnT+RrJYjg+sNv2p9C//fAexciGknGfYfD54LLUWkP01OI +FYq3v+XDkJL8nxl4smyFcN0KNXsq3NH6uU/nD+S6ck5DnWCQad1TmWUndQISazbe +ZXna3hM7ipfgaqTr4+zETrLDUZXRBHsxXCwIwSN3uHAXAgMBAAGjNTAzMAwGA1Ud EwEB/wQCMAAwIwYDVR0RBBwwGoIYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1MA0G -CSqGSIb3DQEBDAUAA4IBgQAPNCUl93k9/ORf5VnqZthcxcTF+QH/vk2qEAncfari -StMDI0ZLnNCmWQQhg3OVZAq/SrpfH7jgdeXmHhk5TsCtKm48muR2slNO5QNEkKu3 -f3jU/1TBOjXE5VxNe06/ITFrYwiBmkY58fOy19XbN3y1Jw28ypt5UcO26lDEDrC/ -axVo66PomD54mBV/9A9mZFow3Yofb1rOXy//vp+9HmD8Ga0Gn4y9wKq+eneDppTn -ZgUzJT9vVjMQWQPUOSoHWWSfde8Ld7mlj/IhXIsjoFjlwZ8jNvL/+UN+CQidwNr4 -WIrGsxvQu03YE0tN0DqNFLwZOxXUQXHDS86lQEesHk3YTOBRXpEjNMiiOKcvP+bi -mw5b2NnEMR/LomBU1tJmkUc/Hg3fU4/eNLwEr4GhXQ5VCCndaYPEy3EmloG1S37B -XKK4YESilMcGotkzrlUtoAkSAig+4Wx2iXP8opMMiqo6mX/YvGuPEQSXkmuzW8a/ -A7k9iH7GU0iUwzaSNf9W0mY= +CSqGSIb3DQEBDAUAA4IBgQAkraehk5D79BIR0spjrD92A6QOZnXimvJqlucJ+Rje +S7qsAaDkgYNK7G0GtWsDpOVnlTgnvpu2i0mMUZSdTBbYGPVEOzJXGUis8oQMVF5X +rVNhbU2NBt8eZFu6Tzo4iUT/kWQkOdGHqzLqNc7xhbi2T6Lc/nP8OLbKggPcIsj2 +PfWY6YHmez5j7+yEwcrEuIlPBOXT9piK8Bu1e8r8zG2JgQuvJPvkxPkWmlUVbfs/ +MuMNys40HFNojXzy6CNthZdQWrB2lfbXzftDPgZq5dG+zlkO3CnGtXU3dKtnUiUe +cEZgoYg6oDvEPu1SpbO0o3FJiUjih4OPnLNYqM0IGsIDbjvZmXfAXLGmKa3/1wgk +aYiOg6D2fA+5OPVGwc/dghHtpItjvywo8Go1Ru1A5n+UdqAqaieW9pRxJ487dkTT +B7DoKH9Z/l4ssl1Vdaxab5+OUN5UyvrYN8Ef5Tc8lrdDQ0xHMM3DHopnykjpS9sL +pEt6HajrrXP8+FZ7yrPuzRM= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index daca1be..d7a90ad 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAyPkgPfmtcwH/cUH/9fWi -pdTjT99WU5mYRel8ZXV62/zYeVB7wIUkvmKVkupeLWM7AZVde8QwZk112WcVyIy8 -AZnM5gupyIc19a1+k+Q+lcDzB6OJV6y64/IEDDMX+H5wVTpV/1zM053OZRsGp6VQ -XUpYbiij0i5pBWRFeZi7e/dCJi7Si3rdmUITLl3VLNAIhdBb10+7xQTSUnuTHyHj -x/5ZtM0hwnlhvTo6HgaE4klvThEg/glKjn/nDX3Kco6UZIXt46QlFM7UaoTg9zZB -cRpgdvcjFvO5dlSednoMv2wFrVEAgdzPOcjInjZMFE0zK7OKGnA7gLKAmc70cleW -wQDQ6668qIWADf1RyMDyCjZ+ozBncHMvOlkQEdJkImW5amM6RcTnNJDpeK0PmEpf -p2+npwTYaeQy/M0Ax4bLbVscAOfcJpYgr2xiLJ0u+CG7ETwJL58tAlV9mP+4yQyE -1DWkIlKTNzTCcmM/XfrQcxUh4QKeDPq7UWN+s1TVCWQxAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAx6Nu/uIYD5BH2BTwdL7k +JSxzNoMtR6hRfOVA83xZk8K42+pJFrvRV0mj8qWefl8Hcqd+Lacth9ZrenrUfA3z +SW/GnNtsDDfVdOHwJQ72IjjGArOS45++ndx85NO+a6dBRx87FPsfggBMUmz59+93 +ywK7oWSvBTwSHGcXwvvFRy3xwpnSXDs5C8yW3eDxAtPlz2vuCZFle+Ekus/5TGHG ++8HTRxAYSaWOaxeOM8xUa/IWrydSHN7RyIlFXbsWIx1lWrqu69aU31uYckHkLCaA +k2vs8SAhixR+9mysnk4hRstRoyZObIHHD9TbOvTdYUMkFh1F9jEKdSk5iZ6EaqIC +2KcpjAbFriHuZMFKW0jnT+RrJYjg+sNv2p9C//fAexciGknGfYfD54LLUWkP01OI +FYq3v+XDkJL8nxl4smyFcN0KNXsq3NH6uU/nD+S6ck5DnWCQad1TmWUndQISazbe +ZXna3hM7ipfgaqTr4+zETrLDUZXRBHsxXCwIwSN3uHAXAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAhh8AeJTmk4D0uYe3/+fwLzgFG0csjF++ -PL8GKZewkWLQz2/AEO29B/vXU3QZNJh1iRkvFnRykgaJ1qbpT4wA4oifPxf2Dg/y -+EdFB3iONhW4sRs7vXOylqm5ql4o1r1y7kDEA59+1O9WoIko1YtOjUudidNwmld/ -qygEVrPoLSpsKkzDveP8ELfNbzJYOyg1bI1Xcs0WYKNRBe2zML5+2ul2rZcpeUbr -o9SI/Y+oYBbNeDyqP5zd7gfKWA6cNw24ZNZ8GXmJpkiwcdR34pYkB/s9S3HhdtqY -EhpSCNBBcftRE77AEB1oiQZPEyKTuwh5WhNFIZ0piw7vJ2sa+VD4Qr1yctrY4zxv -CmJPAbFSLRsWEfaKwlg/qTwN9L91jFFy7er1zZD+Pu8Ea6Tod3LDT1zSaOGk/fvW -WY5lXYhpkG6hHT1wcx7ttsPd4TZ2d/Rl1Pb6iFHkVpLXd+1uExHie32O5f/dypIn -6iJUyb4og+Z2+itZYCxpze8XfjmVlW2H +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAMtIS4vU4AFCbqNLdBeXTtNGDzNg581tM +rq0NfPNa7dhfFDJ0r+ci7GJFuDui6kmEYi3fpea67Ba7xz0mwQB2TVd4/qDhHSsB +EmIyeVLDli7h0bkenUNXtchGiYIHpn+2xgJWKiRfHEBTQ5uYAvCRt25VQm4uOi3H +xbAe1w3wkQa/Wj8D3Bw5OHUTb85uoo8g2MQNKpmny2Cmf4O6OrcWUglgbT6wFhnV +uiWZ8O9JjrxCcTUqsCe+jGiGLa+tJGKJ5U1gDnuZphZftDAtqn5cstoC0wvWX3Ij +y9rscrFRnZ/L6fAPVjYY2p73yyavDTPbU7G7GwGCZ5khzFkYEPL358WFgACK3OOW +DuVgnumyRU8xRTjUFi8V5hADh70i6NnxzTos/36wGgd5uQkx4wSLy+jExJfL1CHr +wjnpr0te42kOtBptXbNOrV282Gc7hup/wRPhG6iaV1It780TlOJ7mAy0NR13R5hQ +K3zb0Km8kzrBZgDHsEXM/pnBD52P4CqY -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index 77e8bff..c667675 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 928d318..60c6509 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -33,8 +33,8 @@ task_runner : device : cpu gandlf_config : batch_size: 1 - clip_grad: None - clip_mode: None + clip_mode: norm + clip_grad: 0.1 data_augmentation: {} data_postprocessing: {} data_preprocessing: @@ -50,8 +50,8 @@ task_runner : output_dir: '.' metrics: - dice - - dice_per_label - - hd95_per_label + # - dice_per_label + # - hd95_per_label model: amp: true architecture: resunet From 5ae77c95fa9ce403f112486075c063e73df6f569 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Wed, 18 Sep 2024 06:15:07 -0400 Subject: [PATCH 06/19] removed Task 2 --- README.md | 13 +- Task_1/README.md | 2 +- Task_1/cert/ca/root-ca.crt | 42 +- Task_1/cert/ca/root-ca/private/root-ca.key | 74 ++-- Task_1/cert/ca/signing-ca.crt | 42 +- Task_1/cert/ca/signing-ca.csr | 36 +- .../cert/ca/signing-ca/private/signing-ca.key | 74 ++-- Task_1/cert/cert_chain.crt | 84 ++-- Task_1/cert/client/col_one.crt | 42 +- Task_1/cert/client/col_one.key | 74 ++-- Task_1/cert/client/col_two.crt | 46 +- Task_1/cert/client/col_two.key | 74 ++-- Task_1/cert/col_one.csr | 36 +- Task_1/cert/col_two.csr | 36 +- .../server/agg_in-ota-232347.ads.iu.edu.crt | 42 +- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 +- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 ++-- Task_2/LICENSE | 202 --------- Task_2/README.md | 74 ---- Task_2/mlcubes/data_prep/mlcube/mlcube.yaml | 54 --- .../mlcube/workspace/parameters.yaml | 5 - Task_2/mlcubes/data_prep/project/Dockerfile | 30 -- Task_2/mlcubes/data_prep/project/__init__.py | 0 Task_2/mlcubes/data_prep/project/mlcube.py | 91 ---- Task_2/mlcubes/data_prep/project/prepare.py | 199 --------- .../data_prep/project/requirements.txt | 6 - .../mlcubes/data_prep/project/sanity_check.py | 78 ---- .../mlcubes/data_prep/project/statistics.py | 45 -- .../mlcubes/data_prep/tests/test_data_prep.py | 270 ------------ Task_2/mlcubes/metrics/mlcube/mlcube.yaml | 37 -- .../metrics/mlcube/workspace/parameters.yaml | 2 - Task_2/mlcubes/metrics/project/Dockerfile | 31 -- Task_2/mlcubes/metrics/project/app.py | 185 -------- Task_2/mlcubes/metrics/project/mlcube.py | 38 -- .../mlcubes/metrics/project/requirements.txt | 10 - Task_2/mlcubes/model/README.md | 241 ----------- Task_2/mlcubes/model/mlcube/mlcube.yaml | 27 -- .../mlcube/workspace/output/.dockerignore | 1 - .../model/mlcube/workspace/output/.gitignore | 3 - Task_2/mlcubes/model/project/Dockerfile | 27 -- Task_2/mlcubes/model/project/LICENSE | 201 --------- Task_2/mlcubes/model/project/mlcube.py | 61 --- .../model/project/model_ckpts/example.ckpt | 1 - Task_2/mlcubes/model/project/parameters.yaml | 10 - Task_2/mlcubes/model/project/requirements.txt | 4 - Task_2/mlcubes/model/project/src/__init__.py | 0 Task_2/mlcubes/model/project/src/my_logic.py | 95 ----- .../model/project/src/utils/__init__.py | 0 .../model/project/src/utils/utilities.py | 4 - Task_2/ranking/compute_ranking.R | 399 ------------------ Task_2/ranking/example_data.yaml | 44 -- Task_2/ranking/readme.md | 40 -- 52 files changed, 411 insertions(+), 2931 deletions(-) delete mode 100644 Task_2/LICENSE delete mode 100644 Task_2/README.md delete mode 100644 Task_2/mlcubes/data_prep/mlcube/mlcube.yaml delete mode 100644 Task_2/mlcubes/data_prep/mlcube/workspace/parameters.yaml delete mode 100644 Task_2/mlcubes/data_prep/project/Dockerfile delete mode 100644 Task_2/mlcubes/data_prep/project/__init__.py delete mode 100644 Task_2/mlcubes/data_prep/project/mlcube.py delete mode 100644 Task_2/mlcubes/data_prep/project/prepare.py delete mode 100644 Task_2/mlcubes/data_prep/project/requirements.txt delete mode 100644 Task_2/mlcubes/data_prep/project/sanity_check.py delete mode 100644 Task_2/mlcubes/data_prep/project/statistics.py delete mode 100644 Task_2/mlcubes/data_prep/tests/test_data_prep.py delete mode 100644 Task_2/mlcubes/metrics/mlcube/mlcube.yaml delete mode 100644 Task_2/mlcubes/metrics/mlcube/workspace/parameters.yaml delete mode 100644 Task_2/mlcubes/metrics/project/Dockerfile delete mode 100644 Task_2/mlcubes/metrics/project/app.py delete mode 100644 Task_2/mlcubes/metrics/project/mlcube.py delete mode 100644 Task_2/mlcubes/metrics/project/requirements.txt delete mode 100644 Task_2/mlcubes/model/README.md delete mode 100644 Task_2/mlcubes/model/mlcube/mlcube.yaml delete mode 100644 Task_2/mlcubes/model/mlcube/workspace/output/.dockerignore delete mode 100644 Task_2/mlcubes/model/mlcube/workspace/output/.gitignore delete mode 100644 Task_2/mlcubes/model/project/Dockerfile delete mode 100644 Task_2/mlcubes/model/project/LICENSE delete mode 100644 Task_2/mlcubes/model/project/mlcube.py delete mode 100644 Task_2/mlcubes/model/project/model_ckpts/example.ckpt delete mode 100644 Task_2/mlcubes/model/project/parameters.yaml delete mode 100644 Task_2/mlcubes/model/project/requirements.txt delete mode 100644 Task_2/mlcubes/model/project/src/__init__.py delete mode 100644 Task_2/mlcubes/model/project/src/my_logic.py delete mode 100644 Task_2/mlcubes/model/project/src/utils/__init__.py delete mode 100644 Task_2/mlcubes/model/project/src/utils/utilities.py delete mode 100644 Task_2/ranking/compute_ranking.R delete mode 100644 Task_2/ranking/example_data.yaml delete mode 100644 Task_2/ranking/readme.md diff --git a/README.md b/README.md index 89a71c1..7839404 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,16 @@ # Federated Tumor Segmentation Challenge -The repo for the FeTS Challenge: The 1st Computational Competition on Federated Learning. +Repo for FeTS Challenge: The 1st Computational Competition on Federated Learning. +Year 2024 and beyond ## Website https://www.synapse.org/#!Synapse:syn28546456 -## Challenge Tasks +## Challenge Task +The challenge involves customizing core functions of a baseline federated learning system implementation. The goal is to improve over the baseline consensus models in terms of robustness in final model scores to data heterogeneity across the simulated collaborators of the federation. For more details, please see [Task_1](./Task_1). -### Task 1 - -The first task of the challenge involves customizing core functions of a baseline federated learning system implementation. The goal is to improve over the baseline consensus models in terms of robustness in final model scores to data heterogeneity across the simulated collaborators of the federation. For more details, please see [Task_1](./Task_1). - -### Task 2 - -This task utilizes federated testing across various sites of the FeTS initiative in order to evaluate model submissions across data from different medical institutions, MRI scanners, image acquisition parameters and populations. The goal of this task is to find algorithms (by whatever training technique you wish to apply) that score well across these data. For more details, please see [Task_2](./Task_2). ## Documentation and Q&A diff --git a/Task_1/README.md b/Task_1/README.md index 3bd5700..168f753 100644 --- a/Task_1/README.md +++ b/Task_1/README.md @@ -1,4 +1,4 @@ -# FeTS 2022 Challenge Task 1 +# FeTS 2024+ Challenge Task 1 Task 1 (**"Federated Training"**) aims at effective weight aggregation methods for the creation of a consensus model given a pre-defined segmentation algorithm for training, while also (optionally) accounting for network outages. Please ask any additional questions in our discussion pages on our github site and we will try to update this README.md as we identify confusions/gaps in our explanations and instructions. diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 330270d..62b305e 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRANUyVSicTEI8mvC0oI+yDUswDQYJKoZIhvcNAQEMBQAw +MIIEhjCCAu6gAwIBAgIRANVUbE2StkhwlzJ9GOFXlNQwDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxNTAwNDkzNFoXDTI1MDkxNTAw -NDkzNFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxODAxMjM1MFoXDTI1MDkxODAx +MjM1MFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEA3pjjbfACLCqi5GHZ/RqxZQIg08B3kBWdowCbSmkDtiCgLZx4 -Ed3JNhLNneHYf5hkseWfzIluNsEO5hMouZ4/lTxc+rkx+ArpHl8s8PuSkxg7GUQj -g1em2kdn+PKCSOAPAwXRV2gp5G0lYPdmNUNlt7ub/n+KZ06P7kTlZ3Yrh5+EC1Hb -0K7lO2oY+FO6B2/Pwod4vWufdJUL7tRrjYSoV3nBYjUmtIbxEbgwnpzElge8eb0B -6m05h2Nmewox4ZItfeDISUrk9N4Ux5cPVmcPXNkwHMQvKBn2OIgJsaOWlDcE5JiW -f7OG0AzZx4hFzkTyyYUTfzwyEOiO3G8GtZscKBJe0xBh2ggISKjTVhLsTBsiTz3i -XR8QmK/NvXM6BElwKXbzQqYFMKZUNHRnw3AUAYce3D+s8u7jGTBq3fhKgggy7K5L -iypKDRhQDg+gchznPoZeEJjgm2qiT+hn32q9USgHIvwswfudajHkVNCM7oGMz8H/ -GdoIXcIWNMtKV4gvAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBACPuW17XRhwJC6Grdygb4sHxK7HqxWv6SzjQTK1aaEUtYXF76J4J -BNrvFNm425LMVPyiY2gInAYsys+H5iASlzWikigGrrDT4kQOT7GTd9+49C8LW5tA -qWwKM3eWBAk4waxn/OYWOwqSXFEVqEkWv4jE1rcRGX+J5FhyZfZ7NvFmmqaqoAH8 -+Lp3IM5cVTl19DPGBwT3fJ1V1TP9dV+RkziXSLEy8w3XdTrghBL3ZdXoIpPhcbJR -dk9Jh7hESrT7a2PVZr/w5a7V+g6Yab+1NXQ0jAz9e8cM1kPP3HYpIhrvUetJm1eJ -D0Um1m6zItOM/AFbr7JMszcUHIZ2qSw3Chl2T6ZTHm0wL/UbtZWhBll42WJ/Tqnx -JZLllFpTmckg+qYJ0tA4qnGMcW0/XJUTOOj7ECsQRHRJc0gEQnTbwYlBY+/k67dU -lqdsIADt4Ee7a4EOuH6QGk2FSTGZitQs9v+dDBTT3Io5ZQIw9B+TLIjXrUheAY20 -epcLyiWOb2qOKA== +AY8AMIIBigKCAYEAwzSErrULvGzDfwi+/1fbtvrQN/+J7q6CmXnxKT7Sp4+E+plf +f/Ep4m02d6mWVJJdhgBEcGJOWkaazgq+InDIdkvUJkXTFk/BZhqXRzrfz5lI6r+k +YgkEaA+vlC1cziORlNg6EfaLMrEgTLZU94GLrYNu9vv3rIjCh8b/zKsQ5xvg8IyM ++8/h3B35FFAKsOFal7dEVwyBAf8/JXhSDfywbFiN3eXnINSZeo2OoLZ+MoKQt5nT +k0vBsxX3XHenFeR/cXa0G3mlRtv0Hz8IqFeuI/SXnM7mRJPhxk6Y+0iEGtAfEKr2 +f35X3eDoFtC72T4oaaY7N4w3yG6suvIqpjrTlo9CR2esJEFMAi3Rq2UqAXT1/wNA +R8UFVGiV4ygQCN/xUeKDWJrb4b51r4HY5p7DYfS9P0HmVbgeR1XzQiU1E9xjXJRI +d6Uc4dnPriH5USZbfhTMDQuh491i8MheCVc3vpHGn6HSY3nqM9dlH881kJaZFUqe +hm4L00sIEyBGYtPdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBAKaSsmoMnHX/mm+RvxOqTGrSaJl4sy4u5jL6GJAjx8+JpPuTFzwH +WPODdH9U0srSHo8tXXGaZ+WVOtKjc6V5gJi35EWqIqIJ4szB/xbC8bMK6/v9TERt +iOK9BH9P5fsKR/g4PIurMNnHaxVQmU/enDKXIt0sKvv34SLgawwbCvZ2Hf/pW+VR +QtFr40UvhoNfyd5MoRsCk+ubgNt3CSMA+VB2fgVx1uBDPJnHqZrScS+Dxh+85Hml +I1LqYBvSeJkIe/wF7sCy1P6M+aHMoBEuRLwwIgBXkySGT3wxB8pkcpgB+tGKqJky +UdUzdr0yNJLvyiCMzfbJXy0ugtsKVcGTaE4bzjYyYE9Kj2BXvlvszMlwMPOPpx5r +5VdUGK/AWZU2Q4vwUZQyJF9zBNcchNAPB6neld5x65VnL3J5qMDJ2VuHTS9KWMTj +t0/RENVMio9E98Oniu8qNs6hbhUxTSr072Vu/zBluXU/r3AegRo8KcfOTBaykX0y +xfbehj0joDyK3g== -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index f6dcbba..5c3308d 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIG5QIBAAKCAYEA3pjjbfACLCqi5GHZ/RqxZQIg08B3kBWdowCbSmkDtiCgLZx4 -Ed3JNhLNneHYf5hkseWfzIluNsEO5hMouZ4/lTxc+rkx+ArpHl8s8PuSkxg7GUQj -g1em2kdn+PKCSOAPAwXRV2gp5G0lYPdmNUNlt7ub/n+KZ06P7kTlZ3Yrh5+EC1Hb -0K7lO2oY+FO6B2/Pwod4vWufdJUL7tRrjYSoV3nBYjUmtIbxEbgwnpzElge8eb0B -6m05h2Nmewox4ZItfeDISUrk9N4Ux5cPVmcPXNkwHMQvKBn2OIgJsaOWlDcE5JiW -f7OG0AzZx4hFzkTyyYUTfzwyEOiO3G8GtZscKBJe0xBh2ggISKjTVhLsTBsiTz3i -XR8QmK/NvXM6BElwKXbzQqYFMKZUNHRnw3AUAYce3D+s8u7jGTBq3fhKgggy7K5L -iypKDRhQDg+gchznPoZeEJjgm2qiT+hn32q9USgHIvwswfudajHkVNCM7oGMz8H/ -GdoIXcIWNMtKV4gvAgMBAAECggGASCRU0TSP/7BxyoLMG3OjOpFOAlLGbTQUOtff -fGY8hbJdN2sWnvO6WoQNj7W6bN//AojhGXEQ/z3ijj53XHElOkCuAbQztagTlXxT -HGbsQjAAN1gWCmNF+EhcMhqmjufO9bPU/PcNXLLjAmIsBecp+DodfIXpXUHg89/w -WW+6++F+8gw9qYyFTpQ8M38vM2nRc8JkJz/SFf6YN3cwxFTSGkejnSiMusVhK9T+ -LOmx7M3lD69qB4gOtQpKFGZhdDHjYaXz+KPz023C8CPTdAbpthxocd/6NFz8FF8U -UIzXCya2iigKBK7mVkzJuWUCt2yO/k0AckpKJeQRr3+WtdOiZwoJ5XpUynkfoepX -IZdQTUz3lDc2GPOTugj7rxZXLbhSwWzfmPbGMIeoj47+N9oDk5+lQuOUSlHig2Bb -YfdIkQy/Nr6uDASwnSBIq93G/SIFaiv8qQlkzRMJ6gMHIc2e3LBVynm4Ms4lcHJD -NSkhDBcMr9sw1qKo2gtO5hyuk8yBAoHBAPhSDJb64OvhG3TxDsWnsNmuTgbL67WK -shj7uZTIBP0Mvht9cPjfDLg3RfjSRThS7JCUYG+Id4JEFeyac6TzWpKEtp8tPOiC -bC9jVZo1ekqWMb8Fq8npzM+IgbcAVsYD4v0gcp8PgLWn9baiJLMIRmXLGGaq7oj0 -TGklzRv0hgn6zBymwxR8GcD3wnh33ZusPuPTYGSizIRPxA8LgL+1PSLU+IyUcd7U -uOaT2zqi2YZTFIFdi0HPrn7UYZqSnzTUFwKBwQDlezAw6lVTgM1hORlATZ5hJzyM -2lLSmwY0PZ/bqaCJNgUD8MRfepNK/yKIoKS9GfZHQkmVmVoiF8xMefWjq5w8mVAU -NcAf7QuGlw0pg/FrhRLgEkqg+eiyJfl8u+ZgUImuUatIldpN5OaNWcLu8b3S2VOp -o4GY3KO81Ls8JijXD2xc7VhRCvywloDnLzSUkl/kFVrykMPiv/RemQIQUhTumWpA -NcBULaOjogqON9jBd4xgCgAdnWaKs76c+XSmw6kCgcEA0dfUV8oORIboQvxqdVFu -O6X2vfuZZsKcGkyu2THmNUmNZYGt9EHZZ9sdwFVAtYYt70fT7qyuAWEz/cvPqjcT -9Pk9smnyLLH6ZllVP4mtnFYsF7bdIzX2I/LBWzpoGdGzAiFne08If3o+RGXlCX4W -r3LfXfNYvFdmMv0ExXjvxIMx9YxfEnKE+PLmXhM9LI50XuaDcMe6eJ1Hm0cnN9oa -ndLHb1UKnTm6Pu/3tSdlFwQiMegxBB5S4U7sZEk/TM9lAoHBAIDQqbiLkeIRxzfw -CVCjQWhf0glu9FbsVos0nGt9yHO9MwuHN3QxJkVO+l+fbVoJHMnbV9r1/jZtDW1Q -eKarSkRp+x2dHn/NXE7ss6K+QeKNDI9jNSkvn4OA9Y8jGqquCtsjVPalx6k5+IEY -BeiDIn8dJ21uLu1TzUXOVFvrP7mZGsb/JDg55qZplWowgV902wb5RdgrkwnRnqcL -VLE8oitdSttIUPHvvI+6AhrbFn1jUhUHCBGXrVvmkfUjwmtqIQKBwQCWa31G2hkw -6KgQNWJbXFQVnKbYGG7u4MVY6UGZ7JtmHNawIMNhhkXu4KFjlWxoyd714d1pDRzr -el6+AHxCq8mUfOk+6QQmO5F+ZfXVf1DVPE8Yow8DIqUY7cK+X9qhztEjSZG+7DAT -SscpvT7K64ri7j5Z2O2YJr9T/NyN8BsdC0G9Twhs7NNaH4Kg+NtKAJqVOoWbDD5g -jH77YJBZWXtABWjjIv8yOrBm7gUMfnhTJmrDF3SOtIK1mxJyrm5b3cc= +MIIG4wIBAAKCAYEAwzSErrULvGzDfwi+/1fbtvrQN/+J7q6CmXnxKT7Sp4+E+plf +f/Ep4m02d6mWVJJdhgBEcGJOWkaazgq+InDIdkvUJkXTFk/BZhqXRzrfz5lI6r+k +YgkEaA+vlC1cziORlNg6EfaLMrEgTLZU94GLrYNu9vv3rIjCh8b/zKsQ5xvg8IyM ++8/h3B35FFAKsOFal7dEVwyBAf8/JXhSDfywbFiN3eXnINSZeo2OoLZ+MoKQt5nT +k0vBsxX3XHenFeR/cXa0G3mlRtv0Hz8IqFeuI/SXnM7mRJPhxk6Y+0iEGtAfEKr2 +f35X3eDoFtC72T4oaaY7N4w3yG6suvIqpjrTlo9CR2esJEFMAi3Rq2UqAXT1/wNA +R8UFVGiV4ygQCN/xUeKDWJrb4b51r4HY5p7DYfS9P0HmVbgeR1XzQiU1E9xjXJRI +d6Uc4dnPriH5USZbfhTMDQuh491i8MheCVc3vpHGn6HSY3nqM9dlH881kJaZFUqe +hm4L00sIEyBGYtPdAgMBAAECggGAULMGBUnwg6G9QmfFuj9CpIdVDEl25vc7I6Lf +easwoDf7hDRi4Dw9kg+PXHH+JZFq24qBwKpLdRPKTNLxHsDchtc7aeUk6oznScRF +dRuYSjU3CWFX3nWW3kRZ1Fraipf2x/+KJkHz8u16Cmy4fKgQLBfxiGbLUgcp0MMK +njy8XKbQW/HnGPUsjPjRL74VZWGMt7r6pDgVn1M78kwnNAQalXgYkjtIzXBG0Pzz +kWpQiqYimNydtL+1YMl8fTw0FZ9j/ZFSoLmtiEtUBwvRJBVGASS3h5gzx/tsOMg5 +D+CvC5HKJFdl1pRCBxzLoy9N4g7Z5ZNJpQHxrMCKy9bPw+bSVqpx3j/lbtWFjnD4 +t1GSTh4L2aiQ9SCH+LpG1yR05UZVP6y2X/Fj5jjvO4qXOHVAR5shX3eOWKqFsfAG +37AZ19BoreoMCqUHEPSgRJxivkSPRDk/XGgKnkTMsFst8oLTvt/Lqt1fCUc9k3Ct +STCTK3M+Q3AHoPA8oKGoNmymA1bLAoHBAOO5NRuuKgKLmiv8IVjMynNvtCN/VJ5K +7/ojuCx1U5mzfKxHcLoRrYhe0eQ3lIYAvqgpOrRCBEwhherK7PjpGefaWbrLtvs2 +U+vnSr11yMNuw4xX4AcVRMaL1WDvv3XnBAJwsjKD7oueIloN6X26o2u3dZgrbKiX +rQrr10eq1gr9xHGlxNFiZ3lkzyMWC43YeuZWjM5QhCrC3URAqqeSYg1/a7o1Y3fg +feS1XjyvT4iqAl16mJUdEIs0QV13Zc3kYwKBwQDbcaFRD417/L7lsvk5/GpaoyCw +f7O9Kvw8iZM6WEVx8+/ArKd9Q2zckgY/kmu1BxLe1GVv3y7HOShXFwt1pqrbgpCo +5qmdhKWDv6KUF/JqfdGU/2EMnVETQfAo12Jfln1VPxrirMRcXmZK/95uCnwNBDbc +f2HGBoQoUwcapYTJuJ4v5WRTM1o2ppsjBhOeL8XzBJ7hFJh7r/up86oC/Fuiqqsv +ffYv9pRtRaa85W+Ip6hznjywZl95B+aOTpENOr8CgcBLKlbdTB+Rt4KsAgz/wpkQ +gU50aRMFLLcJWcDw68kscpI0S2BqCmu9F48wRShBEv3bg8Bcv22rs2UAmvqdLlPe +s7PqdFNxl/0bYLzKzJX37Befu2G29M4+uukzle8ce6RXKdun0ORsMUYlc3Iejfxj +Eas/DxZOj8IOWMo2Xa1I83pkCNNuSYzeBOhaLGyj5VCrtuXDM9BsTOW8IZwys56p +1eU5EWZDq1Xip/rzDOqzsWoWcODsVyuexyDMORzhWQECgcEAj7JJ403e5RjtXHal +Et6COlXl2w3UggP65h1khmk1GFiXX8DvcGxNheYtJ0XXN9So+7dzsR0hgZ2hF95k +R6da7KED30YkPZyV0b8UVAuWVzuKmRnd0CfX5ldgTy4zIcrmyYKoNVTSxHWgYG5K +lh5ReyiOUDctrEGqGsm7tiw61ukI1O5OktjmszDIF9gr0oMQCYG2FEerThtAHdsM +MiZUTyGZNWEza9b4/NEGTV2keoTnHsa4kP6IeDW/OOKjw1j7AoHAWKDt74Kz2nwd +3mp6mOMtdm/ZQqLSM3e2Y6JEBTgst53SpAjbugrgf7NPH6LM3RrMxlhrPSXjHxl7 +ELHd86J5nkK1yoGw4dQAGJytuKWH9T4cNBYIvJxTnRHBfW65qzPvXudjaKZ4dIWX +O6dT2vrsG16XqgrQfdXGCBHJH/SiiraKrhnclc8finGonfKg0P7XANowxE8/X8uT +qIoTHbfiUcjKUW/q8vm7NW+QFBq9CIE+FmcpFmMN5ukilagJKZxh -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 074143d..b6967d2 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQTCSYz6JWTOKcSzpyyILwBjANBgkqhkiG9w0BAQwFADB0 +MIIEizCCAvOgAwIBAgIQH8NGvgkTQl6XOvgN+rU7QjANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE1MDA0OTM0WhcNMjUwOTE1MDA0 -OTM0WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE4MDEyMzUwWhcNMjUwOTE4MDEy +MzUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQCSoTKIyxHxymN/xOHHcnwIdUxB9BtrbNXiGeh9AxW+ -7k5ieWBi5GW9yARf7TWh5UgaZwFj1K8BC4/V42UCIQZPt26iw/+3cE3tZQRHP96H -mfVDcr04ZXDLvjn+I6sWzgjzFgoij918ueoZOOYj3TYth7poAKwj8+Krmy16RH0s -6Mvp/dzsakcOBtFwtVtvA33NKjfofs8b009e8KNWw/x5GhWaAi7s84ybCIhibNZY -i70iC3iPH/T5KC6kyOfup4oYmmHyqAtA6ommgwCveXPLkXl4Z2b6gYsd7lu3tB9c -j/8wCoWR7VEvEKMTKt9lHxx4LLwLNbt5GNvE+YP1sQpol/QEagTajt/Oi325URzS -At/NXqOBMO7P/x2yLOP7MqWXX1658PUQ7kf8D5bFXVUFIka9pY3BP6gLgIgyo65V -dc/9kiKiZUi4pXtl+J+TUXH6akA68qJJrUQ57Ok4cyln/LATpi2zpoIWQDcbmLDL -Y1C2mEe6y0AOssjCtZ5DSN0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAMa8ar5Spzn7y1um+UF7eVHKWULN4HSwFQGSBtnxdlImi -JumYegN5ly7rvYFV23Pc+hIaMUSvaENO3y22HA6A8WYtNPnHBc5Hzbt0ApOpyToJ -wGRjtRJ7QrG4xXW0pANegpTyjiyqa0hnfv5PJKU84Dua0vBOCqJTIc6PGpPj4D+R -JsmsMzeGiyNMbWHTPzCDQnI5rIyskK09g6/Fpz+d/e70R+ivmNoXKS3d+uuprOh+ -WhY6R1g1TeF1Y+xhO5EO/RmT2ZY2S80N0XRQqZFBSLObq/YxoTcTem9aIZfMLYSs -v+0muNPtZ00jHfDezPpSkK2l00CAEwHyulDA4Jm26IT8+Z4xklPsJIsBMiLZpNwA -FoxUnwrkN5pn+dg98BIrVYTKBTbiGcNbPXtdLUHyQBxkjqap6TSaoxQ+tecG1eFE -DzkyEHHMMr1yC51QOdcTFEBVGiXmRL7s/4aZxYRa/bCeGGiIMNqh9New3qdR8zGN -70aiOffFfzhh3fQIdLvm +AQUAA4IBjwAwggGKAoIBgQDDRkIsBGd5nFapn3q8B1KtP78BM6SNUIzMC9sbYfaP +XBaa4MKzje/u5pswI7OeGsfSAJFkVUCoD2ZR0yjxgXywPRM9kohWwBDTcXdCHaYe +6f4QOFjQFRo+5IomKZBSmvv9BDxKTYhm7inYpQ8i3/GT7uCyDcvRlzZhEbHEAzkS +CL7ELJf7/e3SrCUmNmly2u+8aHDSCS1Zc8xF6W63Yu7TnKAVcuPhjOBGpketroXQ +nc2WukKQyLKHDmZtcSV03JRo6aaVLnD+iahYM1U0GOLJYRQwpIoPQNJUyKwWH2uo +fa2kcRDIW+N2qMvV4MPB6dgQZOymi4jdNSb1tlGHCaRT81f4RVl4/OKh2LuI3Z+u +rouPbcASbrkI51oECiYO+0IcUj0KzYviysYpoon/ppioPo4nwxDk+46LQMaRQA2T +piekB1zV3TclHinp2A4XcsrY/7w4z1n3wDQ4kim1pmPyQ4mSatkpUWilrX7VzMw3 +gCryfxEKz6hJugg9upkj6O0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAFLgHHHDoeSbshS2XzG6q/lXVmEQvHH3xyEfEvh7jZQw4 +YPL4epgtYP8AH5hckAPROXSQrQzL+/BnFHYdfYX+mcO+5TieorMfzvomcAt33Dnw +1VQI1HC/s0qZ8AFzrNX675PJqJgJcNL1ohXW14QEqHqGDMYkmamrtsVOhLeiQdCy +RTTHg1EqqkskhbLeGnP48Idryqo9hz5vSIxdA97HxBOnrvTzBWHJ2U3oSWLLil6i +1AWTK6pYlNLo5oT/N4EaG5FxUXRIDVGwrdjOH2W5XMbZBMA4ZHH2TAxccUtih0xv +rewL1/Dq0jms/cPbK2m+qYBUKnornX8ap43PliXPXd5K7Nv4BDKIxImFlzjmbvsv +Q6MrCAipbYI4jay2pcgM1W7Bq1x5vIdbhNUu3XziVqWXQ/OvhkDKI2o0hgURhOsA +VSSCu/pgrhQSkuOFFajVbokC2ij+2lgWvQO2a1uvVR/fe2Ys1jJPivSvCoee28rS +zqcWzaLs6qmeS/0xrQDe -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index d012d2d..fd58eb1 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ MIID4TCCAkkCAQAwejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk ARkWBnNpbXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoM ClNpbXBsZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkq -hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAkqEyiMsR8cpjf8Thx3J8CHVMQfQba2zV -4hnofQMVvu5OYnlgYuRlvcgEX+01oeVIGmcBY9SvAQuP1eNlAiEGT7duosP/t3BN -7WUERz/eh5n1Q3K9OGVwy745/iOrFs4I8xYKIo/dfLnqGTjmI902LYe6aACsI/Pi -q5stekR9LOjL6f3c7GpHDgbRcLVbbwN9zSo36H7PG9NPXvCjVsP8eRoVmgIu7POM -mwiIYmzWWIu9Igt4jx/0+SgupMjn7qeKGJph8qgLQOqJpoMAr3lzy5F5eGdm+oGL -He5bt7QfXI//MAqFke1RLxCjEyrfZR8ceCy8CzW7eRjbxPmD9bEKaJf0BGoE2o7f -zot9uVEc0gLfzV6jgTDuz/8dsizj+zKll19eufD1EO5H/A+WxV1VBSJGvaWNwT+o -C4CIMqOuVXXP/ZIiomVIuKV7Zfifk1Fx+mpAOvKiSa1EOezpOHMpZ/ywE6Yts6aC -FkA3G5iwy2NQtphHustADrLIwrWeQ0jdAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBAFRi3cJmsIBdgNlT -ZYZbqvz20aNeHYlQjL8/gTXBRf/0DgRNijFa81kqiwcBpXhkMqSQTxMQLIny8qM/ -z+3m2xTrCFeaS9FYG/EbbyZTBIR+HDCvbDMHJ2l/ByRV7kGv/oVpZzC7McTBiEtO -L1+h0haGeROTVO3/lLn6z6iI9IRAMNWFFojISV6i8djbXCvzAU2M5w3MN3dGXHBq -SYF2Hk2j527mvPDduhEUOeoNXi2dtQeH1s8vHk1I0Inm8RcJmqivf90ys85PL/Rl -OweyooHqLFRprKIoI0gjJ2MlMaz0BMeMmAx7gOAf57kPifluOKl6dHrhlxfCWEOZ -mI87VcsWau2SfzWfajzV035xb9b4n36WaPgNnVXaJ6TdQ0t0ttDz349CvPBH6ONO -Vy1dgPpLG0DO9R700ggEGTQ+jVhnTdDTxDLM5JFahMtykHnbJOEIR2hIEuOnVbPF -QmDUvIL/CGlOHhgbGiAQFY9o/zLDwZF60EXanN4rePXjRRLJuA== +hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAw0ZCLARneZxWqZ96vAdSrT+/ATOkjVCM +zAvbG2H2j1wWmuDCs43v7uabMCOznhrH0gCRZFVAqA9mUdMo8YF8sD0TPZKIVsAQ +03F3Qh2mHun+EDhY0BUaPuSKJimQUpr7/QQ8Sk2IZu4p2KUPIt/xk+7gsg3L0Zc2 +YRGxxAM5Egi+xCyX+/3t0qwlJjZpctrvvGhw0gktWXPMRelut2Lu05ygFXLj4Yzg +RqZHra6F0J3NlrpCkMiyhw5mbXEldNyUaOmmlS5w/omoWDNVNBjiyWEUMKSKD0DS +VMisFh9rqH2tpHEQyFvjdqjL1eDDwenYEGTspouI3TUm9bZRhwmkU/NX+EVZePzi +odi7iN2frq6Lj23AEm65COdaBAomDvtCHFI9Cs2L4srGKaKJ/6aYqD6OJ8MQ5PuO +i0DGkUANk6YnpAdc1d03JR4p6dgOF3LK2P+8OM9Z98A0OJIptaZj8kOJkmrZKVFo +pa1+1czMN4Aq8n8RCs+oSboIPbqZI+jtAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBAIGFbEHSeKa3WGMm +dtDTmpNBLtLxJBUYs1BbjGJq5yTacAYOehRwvsIyt7CvVL2ZH8mh4OmqEyfMIrBF +fs8qNVTsGkX4c1K08LO0w436S8ruIhMdOxiOuPnS2wg0pwuBTmqGRz8bDWDzbOae +cLCn2iqEpOOyaOXPyJaJ/gS+bNVpf2oilq8qoDuqSbNZXyRoQvsi+ecw1BLyV5Xf +lPXDppwfsAhqKlsoRkr7cYhR/m7Ac+YiK1ClE1UVBAa6xORMzLmQ7OeoJXcJWwxj +USGhs14ZCF9QiY/zjCEwoqR7D6gIyNaiEv+VqZiFovr2y7amZ781yve9vTAUCe51 +gfds9xGUJExDFwMYSZYPkv3XVSFO8+UdHziR5LPRLegpZJtudgdNT8zSs/aTrAde +2BJfCRVdwjLU7bGJPDQTkx4eApeIEhV88psZyGmAvY/XekHTGuGEBcm5c/HnheLh +9I/pGRZe4ungCXcXtPBtxX5SAyb66kREINsGDqEa/Ijd9x0xSQ== -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index e6d2660..ee9a85e 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index 2f8be64..e54ceed 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRANUyVSicTEI8mvC0oI+yDUswDQYJKoZIhvcNAQEMBQAw +MIIEhjCCAu6gAwIBAgIRANVUbE2StkhwlzJ9GOFXlNQwDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxNTAwNDkzNFoXDTI1MDkxNTAw -NDkzNFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxODAxMjM1MFoXDTI1MDkxODAx +MjM1MFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEA3pjjbfACLCqi5GHZ/RqxZQIg08B3kBWdowCbSmkDtiCgLZx4 -Ed3JNhLNneHYf5hkseWfzIluNsEO5hMouZ4/lTxc+rkx+ArpHl8s8PuSkxg7GUQj -g1em2kdn+PKCSOAPAwXRV2gp5G0lYPdmNUNlt7ub/n+KZ06P7kTlZ3Yrh5+EC1Hb -0K7lO2oY+FO6B2/Pwod4vWufdJUL7tRrjYSoV3nBYjUmtIbxEbgwnpzElge8eb0B -6m05h2Nmewox4ZItfeDISUrk9N4Ux5cPVmcPXNkwHMQvKBn2OIgJsaOWlDcE5JiW -f7OG0AzZx4hFzkTyyYUTfzwyEOiO3G8GtZscKBJe0xBh2ggISKjTVhLsTBsiTz3i -XR8QmK/NvXM6BElwKXbzQqYFMKZUNHRnw3AUAYce3D+s8u7jGTBq3fhKgggy7K5L -iypKDRhQDg+gchznPoZeEJjgm2qiT+hn32q9USgHIvwswfudajHkVNCM7oGMz8H/ -GdoIXcIWNMtKV4gvAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBACPuW17XRhwJC6Grdygb4sHxK7HqxWv6SzjQTK1aaEUtYXF76J4J -BNrvFNm425LMVPyiY2gInAYsys+H5iASlzWikigGrrDT4kQOT7GTd9+49C8LW5tA -qWwKM3eWBAk4waxn/OYWOwqSXFEVqEkWv4jE1rcRGX+J5FhyZfZ7NvFmmqaqoAH8 -+Lp3IM5cVTl19DPGBwT3fJ1V1TP9dV+RkziXSLEy8w3XdTrghBL3ZdXoIpPhcbJR -dk9Jh7hESrT7a2PVZr/w5a7V+g6Yab+1NXQ0jAz9e8cM1kPP3HYpIhrvUetJm1eJ -D0Um1m6zItOM/AFbr7JMszcUHIZ2qSw3Chl2T6ZTHm0wL/UbtZWhBll42WJ/Tqnx -JZLllFpTmckg+qYJ0tA4qnGMcW0/XJUTOOj7ECsQRHRJc0gEQnTbwYlBY+/k67dU -lqdsIADt4Ee7a4EOuH6QGk2FSTGZitQs9v+dDBTT3Io5ZQIw9B+TLIjXrUheAY20 -epcLyiWOb2qOKA== +AY8AMIIBigKCAYEAwzSErrULvGzDfwi+/1fbtvrQN/+J7q6CmXnxKT7Sp4+E+plf +f/Ep4m02d6mWVJJdhgBEcGJOWkaazgq+InDIdkvUJkXTFk/BZhqXRzrfz5lI6r+k +YgkEaA+vlC1cziORlNg6EfaLMrEgTLZU94GLrYNu9vv3rIjCh8b/zKsQ5xvg8IyM ++8/h3B35FFAKsOFal7dEVwyBAf8/JXhSDfywbFiN3eXnINSZeo2OoLZ+MoKQt5nT +k0vBsxX3XHenFeR/cXa0G3mlRtv0Hz8IqFeuI/SXnM7mRJPhxk6Y+0iEGtAfEKr2 +f35X3eDoFtC72T4oaaY7N4w3yG6suvIqpjrTlo9CR2esJEFMAi3Rq2UqAXT1/wNA +R8UFVGiV4ygQCN/xUeKDWJrb4b51r4HY5p7DYfS9P0HmVbgeR1XzQiU1E9xjXJRI +d6Uc4dnPriH5USZbfhTMDQuh491i8MheCVc3vpHGn6HSY3nqM9dlH881kJaZFUqe +hm4L00sIEyBGYtPdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBAKaSsmoMnHX/mm+RvxOqTGrSaJl4sy4u5jL6GJAjx8+JpPuTFzwH +WPODdH9U0srSHo8tXXGaZ+WVOtKjc6V5gJi35EWqIqIJ4szB/xbC8bMK6/v9TERt +iOK9BH9P5fsKR/g4PIurMNnHaxVQmU/enDKXIt0sKvv34SLgawwbCvZ2Hf/pW+VR +QtFr40UvhoNfyd5MoRsCk+ubgNt3CSMA+VB2fgVx1uBDPJnHqZrScS+Dxh+85Hml +I1LqYBvSeJkIe/wF7sCy1P6M+aHMoBEuRLwwIgBXkySGT3wxB8pkcpgB+tGKqJky +UdUzdr0yNJLvyiCMzfbJXy0ugtsKVcGTaE4bzjYyYE9Kj2BXvlvszMlwMPOPpx5r +5VdUGK/AWZU2Q4vwUZQyJF9zBNcchNAPB6neld5x65VnL3J5qMDJ2VuHTS9KWMTj +t0/RENVMio9E98Oniu8qNs6hbhUxTSr072Vu/zBluXU/r3AegRo8KcfOTBaykX0y +xfbehj0joDyK3g== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQTCSYz6JWTOKcSzpyyILwBjANBgkqhkiG9w0BAQwFADB0 +MIIEizCCAvOgAwIBAgIQH8NGvgkTQl6XOvgN+rU7QjANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE1MDA0OTM0WhcNMjUwOTE1MDA0 -OTM0WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE4MDEyMzUwWhcNMjUwOTE4MDEy +MzUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQCSoTKIyxHxymN/xOHHcnwIdUxB9BtrbNXiGeh9AxW+ -7k5ieWBi5GW9yARf7TWh5UgaZwFj1K8BC4/V42UCIQZPt26iw/+3cE3tZQRHP96H -mfVDcr04ZXDLvjn+I6sWzgjzFgoij918ueoZOOYj3TYth7poAKwj8+Krmy16RH0s -6Mvp/dzsakcOBtFwtVtvA33NKjfofs8b009e8KNWw/x5GhWaAi7s84ybCIhibNZY -i70iC3iPH/T5KC6kyOfup4oYmmHyqAtA6ommgwCveXPLkXl4Z2b6gYsd7lu3tB9c -j/8wCoWR7VEvEKMTKt9lHxx4LLwLNbt5GNvE+YP1sQpol/QEagTajt/Oi325URzS -At/NXqOBMO7P/x2yLOP7MqWXX1658PUQ7kf8D5bFXVUFIka9pY3BP6gLgIgyo65V -dc/9kiKiZUi4pXtl+J+TUXH6akA68qJJrUQ57Ok4cyln/LATpi2zpoIWQDcbmLDL -Y1C2mEe6y0AOssjCtZ5DSN0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAMa8ar5Spzn7y1um+UF7eVHKWULN4HSwFQGSBtnxdlImi -JumYegN5ly7rvYFV23Pc+hIaMUSvaENO3y22HA6A8WYtNPnHBc5Hzbt0ApOpyToJ -wGRjtRJ7QrG4xXW0pANegpTyjiyqa0hnfv5PJKU84Dua0vBOCqJTIc6PGpPj4D+R -JsmsMzeGiyNMbWHTPzCDQnI5rIyskK09g6/Fpz+d/e70R+ivmNoXKS3d+uuprOh+ -WhY6R1g1TeF1Y+xhO5EO/RmT2ZY2S80N0XRQqZFBSLObq/YxoTcTem9aIZfMLYSs -v+0muNPtZ00jHfDezPpSkK2l00CAEwHyulDA4Jm26IT8+Z4xklPsJIsBMiLZpNwA -FoxUnwrkN5pn+dg98BIrVYTKBTbiGcNbPXtdLUHyQBxkjqap6TSaoxQ+tecG1eFE -DzkyEHHMMr1yC51QOdcTFEBVGiXmRL7s/4aZxYRa/bCeGGiIMNqh9New3qdR8zGN -70aiOffFfzhh3fQIdLvm +AQUAA4IBjwAwggGKAoIBgQDDRkIsBGd5nFapn3q8B1KtP78BM6SNUIzMC9sbYfaP +XBaa4MKzje/u5pswI7OeGsfSAJFkVUCoD2ZR0yjxgXywPRM9kohWwBDTcXdCHaYe +6f4QOFjQFRo+5IomKZBSmvv9BDxKTYhm7inYpQ8i3/GT7uCyDcvRlzZhEbHEAzkS +CL7ELJf7/e3SrCUmNmly2u+8aHDSCS1Zc8xF6W63Yu7TnKAVcuPhjOBGpketroXQ +nc2WukKQyLKHDmZtcSV03JRo6aaVLnD+iahYM1U0GOLJYRQwpIoPQNJUyKwWH2uo +fa2kcRDIW+N2qMvV4MPB6dgQZOymi4jdNSb1tlGHCaRT81f4RVl4/OKh2LuI3Z+u +rouPbcASbrkI51oECiYO+0IcUj0KzYviysYpoon/ppioPo4nwxDk+46LQMaRQA2T +piekB1zV3TclHinp2A4XcsrY/7w4z1n3wDQ4kim1pmPyQ4mSatkpUWilrX7VzMw3 +gCryfxEKz6hJugg9upkj6O0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAFLgHHHDoeSbshS2XzG6q/lXVmEQvHH3xyEfEvh7jZQw4 +YPL4epgtYP8AH5hckAPROXSQrQzL+/BnFHYdfYX+mcO+5TieorMfzvomcAt33Dnw +1VQI1HC/s0qZ8AFzrNX675PJqJgJcNL1ohXW14QEqHqGDMYkmamrtsVOhLeiQdCy +RTTHg1EqqkskhbLeGnP48Idryqo9hz5vSIxdA97HxBOnrvTzBWHJ2U3oSWLLil6i +1AWTK6pYlNLo5oT/N4EaG5FxUXRIDVGwrdjOH2W5XMbZBMA4ZHH2TAxccUtih0xv +rewL1/Dq0jms/cPbK2m+qYBUKnornX8ap43PliXPXd5K7Nv4BDKIxImFlzjmbvsv +Q6MrCAipbYI4jay2pcgM1W7Bq1x5vIdbhNUu3XziVqWXQ/OvhkDKI2o0hgURhOsA +VSSCu/pgrhQSkuOFFajVbokC2ij+2lgWvQO2a1uvVR/fe2Ys1jJPivSvCoee28rS +zqcWzaLs6qmeS/0xrQDe -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index 7e291b1..b4bf25a 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQNfEzpo1jSS+9JWBVZESH/DANBgkqhkiG9w0BAQwFADB6 +MIIEMjCCApqgAwIBAgIQB7Q5vl5mQueVYwvv0piI4DANBgkqhkiG9w0BAQwFADB6 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTE1MDA0OTM1WhcNMjUw -OTE1MDA0OTM1WjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQDSUqi9Av++Vss8J51EtHlJc9eO+WbenkahPvhC9f5fEqpO+Ij8 -q18em77xIJ9b+b/vpnSibtzgCJOjoS7340jpLFURtJvVTIDr2ROeJ5jn99DROUws -qN1GkGINtz4y8DeDdM1NyO03wq2Ao+Mu60f/40Qz18MR6nY1wqY3GPQwb2LwkIrg -kLim5zZhQ34x7Tj2IY0pr6juucVtyNxKcoFFEM40ZxUBICmcuvpTt0ZYuWShtuZS -Fb2FVB1lTEErRxPLcjvYjGRhNqfUhL0yc5eC8UrWg/qdS42wRQ0IdOrWTHw9XrG/ -MUCQ0JI4cHc8TV6w+G66V6+O+/DKzaLCLqqSQDWVtzOwYocx8CPUvRK5oM/n4Fon -H7EotU15KzcpVk3O+rSy7FqpvgSoUZclx6ePAIlkBX6Qwdio7RGAQ7Ke/ufK5baU -eEnzjT3b6iLn8EucOrwVjdd/UtDg69E0DqHeueDOj0mL4RI4+mkrXVrqBMZN280k -a1js4urJYe8ncw8CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv -bmUwDQYJKoZIhvcNAQEMBQADggGBABtn5qGLjZFj6fYUYmo1EIA1bteXLnEBsMLj -f4ZeIrqoXUHlRWtLHwpw/1329aopnsuKUK5ywGu3aTzOkm3FTYBVTP03B/LpMKC6 -1M6ArxdpT+nGUL7U1nzBOY+dZApsLe9+5ztASoAJlpNmLbC1jhBE0vqsk3U29iJa -3iDTfBTO5XCKEYa8N9sOPsJR20/09SgRvux0qisPKTwRhKMwy9iuJe3LCCeuG5PU -FLURQKg2K+4o/xxPFIQ3nFaLc/KYE6vkKe4FBBd4s7DKDmqgCptC7y/EOeSBzMpt -Z2o9mvjD3tnhY+DC0KsleWofNPz6/LhSla8q4wA3hrG97YDlW9JyBjOD/GPlwfum -KZDdW9RiFCGwMKk2nfqwdfYPyMYUokC/e2PNZi6gjSuHKQA/f/N7AV+o29MkmITh -d4zIFKAS709FRQckPGRBi9TPMxy4IG03lA8og6/uNPGlfnBZqbWlZhLoWciy1bq+ -i2031OWrOLPqdalSFup5EGoWFd2k/Q== +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTE4MDEyMzUxWhcNMjUw +OTE4MDEyMzUxWjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDgQr6cajEIRK6L61ne2zWZc1XGLKmctJPNy0zvaFCN2jSCE5Wb +wW+msXh0TkyOiIjZgppKQAzMbkeXd7OhSxCpv4f8UHXla5sWtV3UwymQMx3XfeDH +JVo7o4TdqAWluyaV9912EVtNdXeFYIEtzcR+rIvXDhzTCLfPpXVm/D+FnMCswt19 +5eMWCY2Kuz2GJg8SdlL5AzYAHDF5he2rV4h7pPfhkwyUDn5nzTaopsJbxhyYZSSJ +3cbsgLfiu5kLPoq97jfiac1jrM80Ue3fz0Jd8IW06dwuszAxUOPrJp2AFfEQQxOh +KUGl6yE44u3IMiacb95jsZzLS5Nt5+/YabZ6PKJAUza+Ce4cTC978wF6KOhJrfHa +Eqbdl75QKZF0B2bn7Hqj/ZCfdHZZiaEN+MUfprmYH2u1HN3HO5QCS0goQwDsU0yj +CmWsNGz4nkmjtTqE8JBMgfi9NjTojW9uYzyPq2/fh6iLO2SppdHDiscuCgkxxmKx +yuj/2yRr4rDOIj0CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv +bmUwDQYJKoZIhvcNAQEMBQADggGBAMCjqaMOXOJKGu/lYqHAb/NaGrcT4Fga5Uv9 +42E0cyF7pZ8bnmxzFAsy6byzFui3CthaySeBLPCHYws7fbKuYa2ZdGM5cmimo03m +Oe01jR7d/npzNhPYGqA7C/WZHwuuDPU78Hr2K3iioGNnqVYmWJXFc1zHvGHvKN+V +iJOch/xMa5wz0IhQzAEtZ0EaIVDUU1gA9W2ZytbcB/Vy91QJtpH+s3Sj8sL9VDxL +/PNz0247bUhYZf0i22j/EmOmqA5JhV1peqtT5Ak8CWCBEPlaV+niZlUQ0Efd6v5v +xgHCUDgPyGsY4kHuo/cGHmQoGPJVuBN3lbZMktDsLvCoazjOe7VxvwPhI7LgNvZA +mWCRg0QZkH8OMDVzq1uhczTiODwPmERTCgQUjCHUQS5joGQYFDINmnJL35crA7xc +CRt6GV8tRqMANpCA7omUamJ0yeFSuct16treZXE4iQctqFwSe8BGFhKZZYJrXcLq +lmpyf6ATZiBhliZr49hds8gDOMwolA== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index df60307..17ce425 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 6747564..71022fc 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQQdOTMXWlTbqBnHEYVoMYDDANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTE1MDA0OTM1WhcNMjUw -OTE1MDA0OTM1WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQChMcjEgd5fJc/Zneg7gO5DJLjQJ3QzpRRsdtjuFUO8z78jSaX5 -QpzPDbeCeZLASsa8G4NqBVeoT51zOUi2Wysf7hmZYKeLtN1Lz9RUbkuEs4FsKHxm -st44Pz18NLq0vXpf1NYB/0Lbzx3oVulZOrZdIBuAydq7620mXBlt8Aao5pubUeLn -95wOUXS5r8Rlyu61f2gAp4EemGPV7yAjTuaB3zqGkAK6ALrNj9cWUd/IMFGG8NV5 -Zkxmq6+2Ei88GVBlQTaej2kr7ttNiOWuGqJF5YL961GwDVZa026m5mPvVrFE/4xN -gBeIaWsaSYOCmxZNhgnRCcM+w7CKtBY44uB/cwO55rjxZhq1Kn8PpVegXiky3cra -hnoM9B1ZzOBIK1hi/1kH8BK05BT8ZyGYcKBt6CHSDm2G/08D9ZvKjL1e6eCNmHw9 -uzuflWtyd7/OL12aai09CZyF0A46JL+kfc61FIwYx8asornVXOX9ElUOo3yiofHG -kxnCwXHeBFmoyzUCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 -d28wDQYJKoZIhvcNAQEMBQADggGBAGDZBuUc8qasKU2XD2zSjhOEY7rcpF30lrMj -v3CoLyBNoTpxQAWTqNWSGqMXKS/YwI9q8A59+xVXUB9t4kn8G3OMdSm5m1m5JrNq -DmZtzdPnUUjFQjwqSEleCfC49M5tNB7AJKF2grgYc0Sgr76DLP6RDW7tGMV+STe3 -WHHTJfL1uz3RlbeaVOHLgJdcSfmNjcEkHNDTWQFA8CZGCpEndlKPnTHR38EeSD1z -lGE5mPuW0FyPAR6QXlQGAa0y1AXAKvfQI1FQfss3leGA0uHejqgp7h857LaIsqIh -u6Hxt2HzB/JwWcDXYLQwitjCxyBYSLL+RDz63eFCibEMBDxpDjjEGGpoFpgQr4rC -4vxlWOwDPgpUEWESu+eIskivZ+eJPwUfki0SAPl3uqxcQ698cZXtYmxlfIH1xya7 -7zelyqPT7M9EXdL9EZgkkBQtq0EkkYcWtB8+VO+gsyVAOW9vlfaypqD4HoqGaOJr -Nwbh+mNDbLxzVawAccqH1GQAWBAglw== +MIIEMzCCApugAwIBAgIRAKYa6sZ0fUDCrvPEfwauFdYwDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxODAxMjM1MVoXDTI1 +MDkxODAxMjM1MVowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAqP0yUvnLq1sHhJYnYga9HE2/+r128sPpKl2c6XTkdV31jVsP +L2q0ZWv2tEofICk+LoDCUk9xfhcLSc2Ira6O8gt3Oe7uoVuONa0rEgxP5PdO5Fpu +e2kNhW2HyQJsP86C0K5CaIw9e5fOKofxEsn+sqr3Cz0AZYjNmFU8lIb+Hjz2LE6m +Qj0Vx3OFvRq4x0oe8A6vnCksXqQhwNN2VWkR74vWtYhwR2sCQdieCBYhpD00M3/s +aJL0Z2BJsZrdCGKyQK/nJk4JtqMmgCK7dzz5vsy9Eq0JYS3+QrI5WFxWVExzKnRz +6aMQvGKnMiajkknLziE15tUxFIaD56bWqpeMUgXvjDuQpTmp9Pm8DwfMupLE9P4g +Rip2LI2hpciv4XCex8vVuVoEFiTXX9V3HUDtMfArJxTLhleYWfURGndpqrf/ryrJ +qzrV3sBakhefQhQuVKPEdQVqxOPgSnHu39Muo99Q1w88hbCmDXirVdv/OOphK6nG +Q/pVG/jrKcZ+5T8BAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQArhLCRF9jfdDeBboCnDpsm+n1fLKmCEQFX +RxbQ1oE/pFdUwtvLC0swbOlUMt4qeQ+8xAgRS/UBGX/5kgv1QHmXrjsRz+4w/VQq +cOIQoNuKw2APIKBaSNTYuXmRALO/6VfMYO5ycvsG4iooWAcUK/5UrzYCPBjnyQpO +ByUP6845FwPng1gdYI88fxNbejLOmcMPF5Bmp1l8esPT3Dvjw+FECp6M6RJ439jJ +VXYPkLLGaLNeSzeLtUbpoSbdH29N5y7TkHZGi0s8VkbjQvg+NNXkfECZQ38x/k+C +AEKEN5PB78CCYqvtb4GZ0whHNp95doAmL819AYxYAW8famxL0GL+Ho6XvO23SSu6 +WPjI4MobaVPj6A+hz7WyIfpEdKpa10QJvyAGC2BFefThpJxCpbyzezxRrRXrEOpV +qgugSVt9EJ6/SRwzGWDsTFZyJbwFm1cSaUAka+vMzMpr4iAZ4KxQGNcSlG8itQ5l +XCRxhdatk8o3PaLtfLfub/GT7RWRmDM= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index 07d00cb..3c9ede6 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index 7d57803..0c9ed91 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index 99b8569..f9890d7 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index d154e76..a412382 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -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 -pEt6HajrrXP8+FZ7yrPuzRM= +CSqGSIb3DQEBDAUAA4IBgQCZF43jXy8EpZOhrWv/eFjQCP0eFkChvH88+6thfUsy +8FfVBGsc3eyXeRHRBBAp2lUZ3owNcSKkHuJDKa2ImZ4rQ7pipEFPm6oM6fEkP0sz +qK0tST3jx4glQBPKq6XUpLXc0kZgCG6y9MdBKBwsbJihSwVJcqkJzg/apm1C78J/ +LFOqRk41nwpA/fgeeKTpCW03ql1wpyzpAmvFqmK5TB2DqBfjP/BUGik5c2/bSWZM +ty8Jp/s2SikMrvnMP/6sGsQAq2Nk7fHgTOZBO6+Dsgb38a/ohOgrrkBjoSISzxMy +qyiCB7zVUpXEAMTPMfvqxjClmSp8JiWkg6DuJ9r73/7lR0Zl9T8wY+Ao9NEL6YZS +lAt8r0dTKKXTNGiHHredyrAGRHl+tfqpBE0zy5wZkavzrE85iMWnLEu8g6ERfnF8 +1COSqUV5g6dpr5GIXnS8xMDpBEC/N2PoP2Ax56Y3GFIckLtGU8CIsTZqcmw1dOA7 +OwCJLhCcE9ODo7I+PstsVvk= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index d7a90ad..68c7997 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAx6Nu/uIYD5BH2BTwdL7k -JSxzNoMtR6hRfOVA83xZk8K42+pJFrvRV0mj8qWefl8Hcqd+Lacth9ZrenrUfA3z -SW/GnNtsDDfVdOHwJQ72IjjGArOS45++ndx85NO+a6dBRx87FPsfggBMUmz59+93 -ywK7oWSvBTwSHGcXwvvFRy3xwpnSXDs5C8yW3eDxAtPlz2vuCZFle+Ekus/5TGHG -+8HTRxAYSaWOaxeOM8xUa/IWrydSHN7RyIlFXbsWIx1lWrqu69aU31uYckHkLCaA -k2vs8SAhixR+9mysnk4hRstRoyZObIHHD9TbOvTdYUMkFh1F9jEKdSk5iZ6EaqIC -2KcpjAbFriHuZMFKW0jnT+RrJYjg+sNv2p9C//fAexciGknGfYfD54LLUWkP01OI -FYq3v+XDkJL8nxl4smyFcN0KNXsq3NH6uU/nD+S6ck5DnWCQad1TmWUndQISazbe -ZXna3hM7ipfgaqTr4+zETrLDUZXRBHsxXCwIwSN3uHAXAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAq1FD0kvkqDWKXQQqYE8W +jvVjxs5EtnbtlIOWA0h8frL1OWhu2MN4lyKoDhClKt791FpIMTudFTv9T/A79Q/u +vWmJVoYMmVFQCbfUGrCfd2Kj5ZCYvMGyC1M8wxwnaenkhHT92PwlsvpP7b+6I82i +EGDkr4FKXuGksjkQ021NzTb6txwg4aBLsTSjnM3CkvDYHDoxkxRoZ20SfMaBjy1l +Dit0X2M/dAbyUblvw+Sk/3NmVabbFl+vnNSqOlMAZ4ronvJMwBzwJUarhPtEGFSr +Xl3U7bMlZZ/9hYl3InQlkbrWVFD68qPfnh6cX+jsP/Tc7vgmy8dYfl8ieWr75Gc/ +LzF8oLrw8/7BWpfpLyzsQ8KPZz8nXXi1CF9QxrPJC1uM+6uB+WxEMs4vV6c1/lUL +U2pQPQ0vSdbOXgsvzZYyC6HKBA3TKalSMXtCzHNe7M1VKLlagxRV9ct8B6UxvBED +CTmSW3JZgW/lfNM2lNDxB0EqxPg9XrYwZkcNY7b2PvHZAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAMtIS4vU4AFCbqNLdBeXTtNGDzNg581tM -rq0NfPNa7dhfFDJ0r+ci7GJFuDui6kmEYi3fpea67Ba7xz0mwQB2TVd4/qDhHSsB -EmIyeVLDli7h0bkenUNXtchGiYIHpn+2xgJWKiRfHEBTQ5uYAvCRt25VQm4uOi3H -xbAe1w3wkQa/Wj8D3Bw5OHUTb85uoo8g2MQNKpmny2Cmf4O6OrcWUglgbT6wFhnV -uiWZ8O9JjrxCcTUqsCe+jGiGLa+tJGKJ5U1gDnuZphZftDAtqn5cstoC0wvWX3Ij -y9rscrFRnZ/L6fAPVjYY2p73yyavDTPbU7G7GwGCZ5khzFkYEPL358WFgACK3OOW -DuVgnumyRU8xRTjUFi8V5hADh70i6NnxzTos/36wGgd5uQkx4wSLy+jExJfL1CHr -wjnpr0te42kOtBptXbNOrV282Gc7hup/wRPhG6iaV1It780TlOJ7mAy0NR13R5hQ -K3zb0Km8kzrBZgDHsEXM/pnBD52P4CqY +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAW6Ni/AqxkH8KCfVpops8HWynENycoi0A +eNsyrRLdD9TanpNjmbHYnXHS3XnI6kJNkooi0n18zP40PWEA+JT5IVShIM4u+stV +Kk4HreaKdrtkfjVoFjHF/IgQUOQ/W3dNK+9XCe+7+lfw1P84ugKfb1jKsGdJgDFB +CWDKpMNyDvLdgpAGIuogaeiW5DlnskFhzr0yf2JPo+KRUa6iScKOIv6oZCC70ECP +irWzOQROcC2E2Zvhd7t1I2pdMDhUbv/C9vd2AFbfyQraEF9rSYe/l3DGldg4C+0v +T3FhiLUtgNmneM+WiC5LUA3vnYDlfxuXTyAzbs7GUNJsIEdRFfTiyngUf4y0fS3c +ZoSPMDHg7gRDQY8qoAoUiW7mDH67dL2bWy2VxpJbKWXRKOMVhKrrquX7gfFYZfCf +RcjzgIP4/J+LbgxP2QuyRm58ygZzOgZk/9rSn5dGnrY6umeDUKRallsuzXGJz47W +S0hVLUiHr1kIkg1K6eW6uV4oMzOEP6YH -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index c667675..1ade0cb 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_2/LICENSE b/Task_2/LICENSE deleted file mode 100644 index d645695..0000000 --- a/Task_2/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/Task_2/README.md b/Task_2/README.md deleted file mode 100644 index 07160c0..0000000 --- a/Task_2/README.md +++ /dev/null @@ -1,74 +0,0 @@ -_Copyright © German Cancer Research Center (DKFZ), Division of Medical Image Computing (MIC). Please make sure that your usage of this code is in compliance with the code license:_ -[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE) - ---- - -# Task 2: Generalization "in the wild" - -This tasks focuses on segmentation methods that can learn from multi-institutional datasets how to be robust to cross-institution distribution shifts at test-time, effectively solving a domain generalization problem. In this repository, you can find information on the container submission and ranking for task 2 of the FeTS challenge 2021. We provide: - -- [MLCube (docker) template](mlcubes/model): This is a guide how to build a container submission. For more details on how to submit to task 2 of the FeTS challenge 2022, see the [challenge website](https://www.synapse.org/#!Synapse:syn28546456/wiki/617255). -- [MLCubes fore evaluation pipeline](mlcubes): These are used for running the evaluation pipeline. Participants should not modify them, as they are just provided for transparency of the official evaluation. -- Code that is used to compute the final [ranking](ranking) - -The requirements of these components are described in the readme files of the respective folders. Below, you find information on how to prepare a submission and run our sanity check on them. Please also note the [hardware constraints](#hardware-constraints-for-submissions) submissions have to obey. - -## How to prepare your submission container - -You need to modify the MLCube template we provide. Details are described [here](mlcubes/model). - -## How to run the evaluation pipeline locally - -Once you have prepared your submission and pushed it to [synapse](https://www.synapse.org/#!Synapse:syn28546456/wiki/617255), it's possible to run the official evaluation pipeline on toy test cases for sanity-checking your submission. To do so, please follow these steps: - -1. [Download](https://hub.dkfz.de/s/Ctb6bQ7mbiwM6Af) the medperf environment folder and unpack it: - ```bash - cd ~ - mkdir .medperf - cd .medperf - tar -xzvf ~/Downloads/medperf_env.tar.gz - ``` -2. Setup python environment (install MedPerf): - ```bash - # Optional but recommended: use conda or virtualenv - conda create -n fets_medperf pip - conda activate fets_medperf - # Actual installation. Important: Please use the branch below - cd ~ - git clone https://github.com/mlcommons/medperf.git && \ - cd medperf/cli && \ - git checkout cli-assoc-comp-test && \ - pip install -e . - ``` -3. Run the sanity check with docker: - ``` - medperf --log=debug --no-cleanup test -b 1 - ``` - Above will run the default model defined in this [folder](mlcubes/model/mlcube/). To use your local model, please specify its path with -m: - ``` - MODEL_PATH=/path/to/local/mlcube/folder - medperf --log=debug --no-cleanup test -b 1 -m $MODEL_PATH - ``` - Note that the folder passed with `-m` needs to contain an `mlcube.yaml`, which is used to pull the docker image and set runtime arguments. - -The results and logs from your local test run are located in the `~/.medperf/results` and `~/.medperf/logs` folder, respectively. They can be compared to the test run executed on the organizers' infrastructure to guarantee reproducibility. Making a submission on [synapse](https://www.synapse.org/#!Synapse:syn28546456/wiki/617255) will trigger a test run through the organizers. Note that we will convert the docker images to singularity on our end. If you would like to run with singularity as well, please ask a question in the [forum](https://www.synapse.org/#!Synapse:syn28546456/discussion/default). - -Note that the toy test cases are part of the FeTS 2022 training data and the same [data usage agreements](https://www.synapse.org/#!Synapse:syn28546456/wiki/617246) apply. - -## Hardware Constraints for Submissions - -In the testing phase of Task 2, we are going to perform a federated evaluation on multiple remote institutions with limited computation capabilities. To finish the evaluation before the MICCAI conference, we have to restrict the inference time of the submitted algorithms. As the number of participants is not known in advance, we decided for the following rules in that regard: - -- We will perform a test run of the submission on three toy test cases (shipped with the MedPerf environment) on a system with one GPU (11GB) and 40 GB RAM. -- For each submission, we are going to check if the algorithms produces valid outputs on the toy test cases. Submissions that exit with error are invalid. -- Participants are allowed to do their own memory management to fit a larger algorithm, but there will be a timeout of `num_cases * 180` seconds on the inference time. - - -## Common Problems - -Problems related to docker -> singularity conversion. There are some cases in which a docker submission can be run without errors by the submitter, but the same container causes errors on the organizers' end (because we convert them to singularity): -- `WORKDIR` not set in singularity: If `WORKDIR` is used in the Dockerfile, this can result in `FileNotFoundError` when we run your submission with singularity. To avoid this, please use only absolute paths in your code. Also the entrypoint of the container should use an absolute path to your script. -- Limited tmpfs space in singularity: Often causes errors like `OSError: [Errno 28] No space left on device`. Solution: Please make sure you write files only to the `output_path` passed to `mlcube.py`. Temporary files can be saved in a sub-directory of `output_path`, for example. -- User inside singularity containers isn't root: This can lead to `PermissionError` when reading files from the file system like model checkpoints. Make sure that all files that need to be read from inside the container can be read by *all users*, either before copying them in the Dockerfile or adding chmod commands to the Dockerfile. - -Any other Errors ? Feel free to contact us: [forum](https://www.synapse.org/#!Synapse:syn28546456/discussion/default) diff --git a/Task_2/mlcubes/data_prep/mlcube/mlcube.yaml b/Task_2/mlcubes/data_prep/mlcube/mlcube.yaml deleted file mode 100644 index 98ea671..0000000 --- a/Task_2/mlcubes/data_prep/mlcube/mlcube.yaml +++ /dev/null @@ -1,54 +0,0 @@ -name: FeTS challenge 2022 (task 2) Medperf Data Preparator Cube -description: MLCube for building data preparators for MedPerf -authors: - - {name: "MLCommons Medical Working Group"} - - {name: "Maximilian Zenk (DKFZ)"} - -platform: - accelerator_count: 0 - -docker: - # Image name. - image: docker.synapse.org/syn31437293/fets22_data-prep - # Docker build context relative to $MLCUBE_ROOT. Default is `build`. - build_context: "../project" - # Docker file name within docker build context, default is `Dockerfile`. - build_file: "Dockerfile" - -tasks: - prepare: - # This task is in charge of transforming the input data into the format expected by the model cubes. - parameters: - inputs: { - data_path: {type: directory, default: data}, # Value must point to a directory containing the raw data inside workspace - labels_path: {type: directory, default: data}, # Not used in this example - parameters_file: parameters.yaml # Not used in this example - } - outputs: { - output_path: prepped_data/, # Indicates where to store the transformed data. Must contain prepared data - output_labels_path: labels/ # Indicates where to store the transformed data. Must contain labels - } - sanity_check: - # This task ensures that the previously transformed data was transformed correctly. - # It runs a set of tests that check que quality of the data. The rigurosity of those - # tests is determined by the cube author. - parameters: - inputs: { - data_path: {type: directory, default: prepped_data}, # Value should be the first output of the prepare task - labels_path: labels/, # Value should be the second output of the prepare task - parameters_file: parameters.yaml # Not used in this example - } - statistics: - # This task computes statistics on the prepared dataset. Its purpose is to get a high-level - # idea of what is contained inside the data, without providing any specifics of any single entry - parameters: - inputs: { - data_path: {type: directory, default: prepped_data}, # Value should be the first output of the prepare task - labels_path: labels/, # Value should be the second output of the prepare task - parameters_file: parameters.yaml # Not used in this example - } - outputs: { - output_path: { - type: file, default: statistics.yaml - } - } \ No newline at end of file diff --git a/Task_2/mlcubes/data_prep/mlcube/workspace/parameters.yaml b/Task_2/mlcubes/data_prep/mlcube/workspace/parameters.yaml deleted file mode 100644 index 512645d..0000000 --- a/Task_2/mlcubes/data_prep/mlcube/workspace/parameters.yaml +++ /dev/null @@ -1,5 +0,0 @@ -prepare: - max_val_size: 250 - seed: 108493 - val_split_file: null # alternative: split_info/fets_phase2_split_1/val.csv - anonymize_subjects: true diff --git a/Task_2/mlcubes/data_prep/project/Dockerfile b/Task_2/mlcubes/data_prep/project/Dockerfile deleted file mode 100644 index 6cdbbc3..0000000 --- a/Task_2/mlcubes/data_prep/project/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -FROM ubuntu:18.04 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - software-properties-common \ - python3-dev \ - curl && \ - rm -rf /var/lib/apt/lists/* - -RUN add-apt-repository ppa:deadsnakes/ppa -y && apt-get update - -RUN apt-get install python3 -y - -RUN apt-get install python3-pip -y - -COPY ./requirements.txt project/requirements.txt - -RUN pip3 install --upgrade pip - -RUN pip3 install --no-cache-dir -r project/requirements.txt - -# Set the locale -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 - -COPY . /project - -WORKDIR /project - -ENTRYPOINT ["python3", "/project/mlcube.py"] \ No newline at end of file diff --git a/Task_2/mlcubes/data_prep/project/__init__.py b/Task_2/mlcubes/data_prep/project/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Task_2/mlcubes/data_prep/project/mlcube.py b/Task_2/mlcubes/data_prep/project/mlcube.py deleted file mode 100644 index 4d71072..0000000 --- a/Task_2/mlcubes/data_prep/project/mlcube.py +++ /dev/null @@ -1,91 +0,0 @@ -# MLCube Entrypoint -# -# This script shows how you can bridge your app with an MLCube interface. -# MLCubes expect the entrypoint to behave like a CLI, where tasks are -# commands, and input/output parameters and command-line arguments. -# You can provide that interface to MLCube in any way you prefer. -# Here, we show a way that requires minimal intrusion to the original code, -# By running the application through subprocesses. - -import typer -import yaml -from prepare import run_preparation -from sanity_check import run_sanity_check -from statistics import run_statistics - - -app = typer.Typer() - - -@app.command("prepare") -def prepare( - data_path: str = typer.Option(..., "--data_path"), - labels_path: str = typer.Option(..., "--labels_path"), - params_file: str = typer.Option(..., "--parameters_file"), - out_path: str = typer.Option(..., "--output_path"), - out_labels_path: str = typer.Option(..., "--output_labels_path"), -): - """Prepare task command. This is what gets executed when we run: - `mlcube run --task=prepare` - - Args: - data_path (str): Location of the data to transform. Required for Medperf Data Preparation MLCubes. - labels_path (str): Location of the labels. Required for Medperf Data Preparation MLCubes - params_file (str): Location of the parameters.yaml file. Required for Medperf Data Preparation MLCubes. - out_path (str): Location to store transformed data. Required for Medperf Data Preparation MLCubes. - """ - with open(params_file, encoding="utf-8") as f: - config = yaml.load(f, Loader=yaml.SafeLoader) - config_key = "prepare" - if not isinstance(config, dict) or not isinstance(config.get(config_key, None), dict): - # We don't want to get unexpected behavior due to incorrect parameter files - raise KeyError( - f"Parameter file does not have a correctly formatted group `{config_key}` with parameters for the `prepare` task." - ) - run_preparation( - input_dir=data_path, - output_data_dir=out_path, - output_label_dir=out_labels_path, - **config[config_key], - ) - - -@app.command("sanity_check") -def sanity_check( - data_path: str = typer.Option(..., "--data_path"), - labels_path: str = typer.Option(..., "--labels_path"), - params_file: str = typer.Option(..., "--parameters_file"), -): - """Sanity check task command. This is what gets executed when we run: - `mlcube run --task=sanity_check` - - Args: - data_path (str): Location of the prepared data. Required for Medperf Data Preparation MLCubes. - params_file (str): Location of the parameters.yaml file. Required for Medperf Data Preparation MLCubes. - """ - run_sanity_check(data_path=data_path, labels_path=labels_path) - - -@app.command("statistics") -def statistics( - data_path: str = typer.Option(..., "--data_path"), - labels_path: str = typer.Option(..., "--labels_path"), - params_file: str = typer.Option(..., "--parameters_file"), - output_path: str = typer.Option(..., "--output_path"), -): - """Computes statistics about the data. This statistics are uploaded - to the Medperf platform under the data owner's approval. Include - every statistic you consider useful for determining the nature of the - data, but keep in mind that we want to keep the data as private as - possible. - - Args: - data_path (str): Location of the prepared data. Required for Medperf Data Preparation MLCubes. - params_file (str): Location of the parameters.yaml file. Required for Medperf Data Preparation MLCubes. - output_path (str): File to store the statistics. Must be statistics.yaml. Required for Medperf Data Preparation MLCubes. - """ - run_statistics(data_path=data_path, labels_path=labels_path, out_file=output_path) - - -if __name__ == "__main__": - app() diff --git a/Task_2/mlcubes/data_prep/project/prepare.py b/Task_2/mlcubes/data_prep/project/prepare.py deleted file mode 100644 index 91c7f3f..0000000 --- a/Task_2/mlcubes/data_prep/project/prepare.py +++ /dev/null @@ -1,199 +0,0 @@ -import csv -import json -from pathlib import Path -import random -import shutil -from typing import List - - -def copy_subject( - subject_dir: Path, - output_dir_data: Path, - output_dir_labels: Path, - subject_alias: str = None, -): - subj_id = subject_dir.name - if subject_alias is None: - subject_alias = subj_id - # it's possible that minor naming differences are present. Accepted options for each modality are below. - # input format: - # [_brain]_t1.nii.gz etc - # [_brain]_final_seg.nii.gz - # output format: - # _brain_t1.nii.gz etc - # _final_seg.nii.gz - files_to_copy = { - "t1": [f"{subj_id}_brain_t1.nii.gz", f"{subj_id}_t1.nii.gz"], - "t1ce": [f"{subj_id}_brain_t1ce.nii.gz", f"{subj_id}_t1ce.nii.gz"], - "t2": [f"{subj_id}_brain_t2.nii.gz", f"{subj_id}_t2.nii.gz"], - "flair": [f"{subj_id}_brain_flair.nii.gz", f"{subj_id}_flair.nii.gz"], - "seg": [ - f"{subj_id}_final_seg.nii.gz", - f"{subj_id}_brain_final_seg.nii.gz", - f"{subj_id}_seg.nii.gz", - f"{subj_id}_brain_seg.nii.gz", - ], - } - target_files = { - "t1": f"{subject_alias}_brain_t1.nii.gz", - "t1ce": f"{subject_alias}_brain_t1ce.nii.gz", - "t2": f"{subject_alias}_brain_t2.nii.gz", - "flair": f"{subject_alias}_brain_flair.nii.gz", - "seg": f"{subject_alias}_final_seg.nii.gz", - } - for modality, fname_options in files_to_copy.items(): - for filename in fname_options: - # search for naming that exists in subject_dir - output_dir = output_dir_data / subject_alias - if modality == "seg": - output_dir = output_dir_labels - output_dir.mkdir(exist_ok=True) - - src_file_path = subject_dir / filename - dst_file_path = output_dir / target_files[modality] - if src_file_path.exists(): - # if no match is found for any option, don't copy anything. The sanity check will make sure no files are missing. - shutil.copy2(src_file_path, dst_file_path) - break - - -def _get_validation_subjects_splitfile( - data_path: Path, max_size: int, seed: int, val_split_file: str = None -) -> List[Path]: - """Note: This may return a list of size > max_size if there are more cases in the val_split_file""" - - # expect relative path in val_split_file - val_split_file: Path = data_path / val_split_file - if not val_split_file.exists(): - print(f"WARNING: The split file {data_path / val_split_file} does not exist.") - return _get_validation_subjects( - data_path=data_path, max_size=max_size, seed=seed - ) - - split_file_subjects = [] - # load subjects from split file - with open(val_split_file, newline="", encoding="utf-8") as csvfile: - split_reader = csv.reader(csvfile) - for row in split_reader: - if str(row[0]) == "data_uid": - continue - subject_dir = data_path / str(row[0]) - if not subject_dir.exists(): - print( - f"WARNING: The data folder {subject_dir} does not exist, but a corresponding subject was found in the validation split file. " - f"This will probably cause an error in the sanity check." - ) - split_file_subjects.append(subject_dir.absolute()) - - # Also get subjects not in splitfile and add them up to max_size - subjects_not_in_splitfile = [] - for x in Path(data_path).iterdir(): - # just to be sure there are no other folders that don't contain the actual data: - if ( - x.is_dir() - and len(list(x.glob("*.nii.gz"))) > 0 - and x.absolute() not in split_file_subjects - ): - subjects_not_in_splitfile.append(x) - - random.seed(seed) - num_additional_samples = min( - len(subjects_not_in_splitfile), max(0, max_size - len(split_file_subjects)) - ) - return split_file_subjects + random.sample( - subjects_not_in_splitfile, k=num_additional_samples - ) - - -def _get_validation_subjects(data_path: Path, max_size: int, seed: int) -> List[Path]: - all_subjects = [] - for x in Path(data_path).iterdir(): - # just to be sure there are no other folders that don't contain the actual data: - if x.is_dir() and len(list(x.glob("*.nii.gz"))) > 0: - all_subjects.append(x) - - if len(all_subjects) > max_size: - random.seed(seed) - subject_list = random.sample(all_subjects, k=max_size) - else: - subject_list = all_subjects - return subject_list - - -def get_validation_subjects( - data_path: Path, max_size: int, seed: int, val_split_file: str = None -) -> List[Path]: - """This function returns a list of subjects that should be used for evaluation. If there is a split file, it tries to include them in the set. - Arguments: - data_path: root directory containing all subject directories - max_size: maximum number of subjects to add to the validation set (to limit inference time); may be exceeded in the case that val_split_file has more cases - seed: used for sampling when more subjects than max_size are available - val_split_file: path to split file (if it exists) from FeTS initiative (relative to data_path) - """ - if val_split_file: - subject_list = _get_validation_subjects_splitfile( - data_path=data_path, - max_size=max_size, - seed=seed, - val_split_file=val_split_file, - ) - else: - subject_list = _get_validation_subjects( - data_path=data_path, max_size=max_size, seed=seed - ) - print( - "These {} subjects are in the validation split:\n{}".format( - len(subject_list), ", ".join([x.name for x in subject_list]) - ) - ) - return subject_list - - -def compute_subject_aliases(subject_list: List[Path]) -> List[str]: - # Enumeration is the simplest option; could also use hash functions - return [f"FeTS22_Patient{idx:04d}" for idx, _ in enumerate(subject_list)] - - -def run_preparation( - input_dir: str, - output_data_dir: str, - output_label_dir: str, - max_val_size: int = 200, - seed: int = 108493, - val_split_file: str = None, - anonymize_subjects: bool = True, -) -> None: - """This function selects subjects from input_dir (and possibly the val_split_file) for validation and copies those to a the output paths. - max_val_size, seed and val_split_file are passed to get_validation_subjects. - """ - output_data_path = Path(output_data_dir) - output_labels_path = Path(output_label_dir) - output_data_path.mkdir(parents=True, exist_ok=True) - output_labels_path.mkdir(parents=True, exist_ok=True) - - selected_subject_dirs = get_validation_subjects( - Path(input_dir), max_size=max_val_size, seed=seed, val_split_file=val_split_file - ) - print(f"Preparing {len(selected_subject_dirs)} subjects...") - if anonymize_subjects: - alias_list = compute_subject_aliases(selected_subject_dirs) - else: - alias_list = [None] * len(selected_subject_dirs) - alias_mapping = {} - for subject_dir, subject_alias in zip(selected_subject_dirs, alias_list): - if anonymize_subjects: - alias_mapping[subject_alias] = subject_dir.name - copy_subject( - subject_dir, - output_data_path, - output_labels_path, - subject_alias=subject_alias, - ) - - # Output is saved to the medperf log. In the future, we may want to improve this. - if anonymize_subjects: - print("This is the mapping from aliases to subject IDs:") - print(alias_mapping) - else: - print("These subject IDs were used for evaluation:") - print([x.name for x in selected_subject_dirs]) diff --git a/Task_2/mlcubes/data_prep/project/requirements.txt b/Task_2/mlcubes/data_prep/project/requirements.txt deleted file mode 100644 index 6c9c6ca..0000000 --- a/Task_2/mlcubes/data_prep/project/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -pyYAML -typer -pandas -SimpleITK>=2.1.0 -numpy -tqdm \ No newline at end of file diff --git a/Task_2/mlcubes/data_prep/project/sanity_check.py b/Task_2/mlcubes/data_prep/project/sanity_check.py deleted file mode 100644 index 8527679..0000000 --- a/Task_2/mlcubes/data_prep/project/sanity_check.py +++ /dev/null @@ -1,78 +0,0 @@ -from pathlib import Path -from typing import List, Tuple - -import SimpleITK as sitk -import numpy as np - - -def check_subject_validity( - subject_dir: Path, labels_dir: Path -) -> Tuple[List[Path], List[Path], List[Path], List[Path]]: - """Checks if all files exist. Also checks size, spacing and label set of images and mask. - """ - missing_files = [] - wrong_size = [] - wrong_spacing = [] - wrong_labels = [] - - files_to_check = [ - subject_dir / f"{subject_dir.name}_brain_t1.nii.gz", - subject_dir / f"{subject_dir.name}_brain_t1ce.nii.gz", - subject_dir / f"{subject_dir.name}_brain_t2.nii.gz", - subject_dir / f"{subject_dir.name}_brain_flair.nii.gz", - labels_dir / f"{subject_dir.name}_final_seg.nii.gz", - ] - # check image properties - EXPECTED_SIZE = np.array([240, 240, 155]) - EXPECTED_SPACING = np.array([1.0, 1.0, 1.0]) - EXPECTED_LABELS = {0, 1, 2, 4} - for file_ in files_to_check: - if not file_.exists(): - missing_files.append(str(file_)) - continue - image = sitk.ReadImage(str(file_)) - size_array = np.array(image.GetSize()) - spacing_array = np.array(image.GetSpacing()) - - if not (EXPECTED_SIZE == size_array).all(): - wrong_size.append(str(file_)) - if not (EXPECTED_SPACING == spacing_array).all(): - wrong_spacing.append(str(file_)) - if file_.name.endswith("seg.nii.gz"): - arr = sitk.GetArrayFromImage(image) - found_labels = np.unique(arr) - if len(set(found_labels).difference(EXPECTED_LABELS)) > 0: - wrong_labels.append(str(file_)) - return missing_files, wrong_size, wrong_spacing, wrong_labels - - -def run_sanity_check(data_path: str, labels_path: str): - check_successful = True - for curr_subject_dir in Path(data_path).iterdir(): - if curr_subject_dir.is_dir(): - ( - missing_files, - wrong_size, - wrong_spacing, - wrong_labels, - ) = check_subject_validity(curr_subject_dir, Path(labels_path)) - if len(missing_files) > 0: - check_successful = False - print( - f"ERROR Files missing for subject {curr_subject_dir.name}:\n{missing_files}" - ) - if len(wrong_size) > 0: - check_successful = False - print(f"ERROR: Image size is not [240,240,155] for:\n{wrong_size}") - if len(wrong_spacing) > 0: - check_successful = False - print(f"ERROR: Image resolution is not [1,1,1] for:\n{wrong_spacing}") - if len(wrong_labels) > 0: - check_successful = False - print( - f"ERROR: There were unexpected label values (not in [0, 1, 2, 4]) for:\n{wrong_labels}" - ) - assert ( - check_successful - ), "The sanity check discovered error(s). Please check the log above for details." - print("Finished. All good!") diff --git a/Task_2/mlcubes/data_prep/project/statistics.py b/Task_2/mlcubes/data_prep/project/statistics.py deleted file mode 100644 index 7f76f70..0000000 --- a/Task_2/mlcubes/data_prep/project/statistics.py +++ /dev/null @@ -1,45 +0,0 @@ -from pathlib import Path -import yaml - -from sanity_check import check_subject_validity - - -def get_statistics(data_path: str, labels_path: str) -> dict: - """Computes statistics about the data. This statistics are uploaded - to the Medperf platform under the data owner's approval. Include - every statistic you consider useful for determining the nature of the - data, but keep in mind that we want to keep the data as private as - possible. - - Args: - data_path (str): The input data folder. - labels_path (str): The input labels folder. - - Returns: - dict: dictionary with all the computed statistics - """ - number_valid_subjects, number_of_invalid_subjects = 0, 0 - - for curr_subject_dir in Path(data_path).iterdir(): - if curr_subject_dir.is_dir(): - missing_files, wrong_size, wrong_spacing, wrong_labels = check_subject_validity(curr_subject_dir, Path(labels_path)) - if 0 == len(missing_files + wrong_size + wrong_spacing + wrong_labels): - number_valid_subjects += 1 - else: - number_of_invalid_subjects += 1 - - ## this can be expanded to get more information about the data, such as the number labels in each segmentation, and so on. - - stats = { - "Valid_Subjects": number_valid_subjects, - "Invalid_Subjects": number_of_invalid_subjects, - } - - return stats - - -def run_statistics(data_path: str, labels_path: str, out_file: str): - stats = get_statistics(data_path, labels_path) - - with open(out_file, "w", encoding="utf-8") as f: - yaml.dump(stats, f) diff --git a/Task_2/mlcubes/data_prep/tests/test_data_prep.py b/Task_2/mlcubes/data_prep/tests/test_data_prep.py deleted file mode 100644 index 4ae3532..0000000 --- a/Task_2/mlcubes/data_prep/tests/test_data_prep.py +++ /dev/null @@ -1,270 +0,0 @@ -import csv -from pathlib import Path -import random -import sys - -import numpy as np -import pytest -import SimpleITK as sitk - -# ugly, but well... -sys.path.insert(0, str(Path(__file__).parents[1])) -print(sys.path) -from project.prepare import run_preparation, copy_subject -from project.sanity_check import run_sanity_check - - -def setup_dummy_data_dir( - root_path: Path, - split_file=None, - num_cases=10, - split_fraction=0.2, - make_real_images=False, -): - # This sets up a dummy fets data directory. Structure: - # root_path / - # Case_id_0/ - # Case_id_0_t1.nii.gz - # Case_id_0_t1ce.nii.gz - # Case_id_0_t2.nii.gz - # Case_id_0_flair.nii.gz - # Case_id_0_seg.nii.gz - # Case_id_1/ - # ... - modalities = ["t1", "t1ce", "t2", "flair", "seg"] - case_ids = [f"ToyPatient{i:03d}" for i in range(num_cases)] - for case in case_ids: - case_dir = root_path / case - case_dir.mkdir() - for m in modalities: - img_path = case_dir / f"{case}_{m}.nii.gz" - if make_real_images: - nda = np.zeros((155, 240, 240)) # BraTS dimensions - img = sitk.GetImageFromArray(nda) - sitk.WriteImage(img, str(img_path.absolute())) - else: - img_path.touch() - - split_file_cases = None - if split_file: - split_file_cases = random.sample( - case_ids, k=int(split_fraction * len(case_ids)) - ) - split_path = root_path / split_file - split_path.parent.mkdir(parents=True) - with open(split_path, "w", encoding="utf-8") as f: - csvwriter = csv.writer(f, delimiter=",") - csvwriter.writerow(["data_uid"]) - csvwriter.writerows([[x] for x in split_file_cases]) - return case_ids, split_file_cases - # should return the list of cases and (if split_file) list of validation cases - - -@pytest.mark.parametrize( - "total_num_cases,max_val_size", [(100, 10), (100, 100), (10, 100)] -) -def test_data_prep_splitfile(tmp_path: Path, total_num_cases: int, max_val_size: int): - split_file = "split_info/fets_phase2_split_1/val.csv" # relative to data dir - tmp_data_dir = tmp_path / "data" - tmp_output_dir = tmp_path / "output_data" - tmp_output_label_dir = tmp_path / "output_labels" - # setup - tmp_data_dir.mkdir() - tmp_output_dir.mkdir() - tmp_output_label_dir.mkdir() - all_cases, split_file_cases = setup_dummy_data_dir( - tmp_data_dir, num_cases=total_num_cases, split_file=split_file - ) - - run_preparation( - input_dir=tmp_data_dir, - output_data_dir=tmp_output_dir, - output_label_dir=tmp_output_label_dir, - max_val_size=max_val_size, - val_split_file=split_file, - anonymize_subjects=False, - ) - output_cases = [x.name for x in tmp_output_dir.iterdir()] - - # no duplicates - assert len(set(output_cases)) == len(output_cases) - if max_val_size > len(split_file_cases): - assert len(output_cases) == min(max_val_size, len(all_cases)) - assert set(output_cases).issubset(set(all_cases)) - assert set(split_file_cases).issubset(set(output_cases)) - else: - assert set(output_cases) == set(split_file_cases) - - -@pytest.mark.parametrize("total_num_cases,max_val_size", [(100, 100)]) -def test_data_prep_missing_splitfile( - tmp_path: Path, total_num_cases: int, max_val_size: int -): - split_file = "split_info/fets_phase2_split_1/val.csv" # relative to data dir - tmp_data_dir = tmp_path / "data" - tmp_output_dir = tmp_path / "output_data" - tmp_output_label_dir = tmp_path / "output_labels" - # setup - tmp_data_dir.mkdir() - tmp_output_dir.mkdir() - tmp_output_label_dir.mkdir() - all_cases, split_file_cases = setup_dummy_data_dir( - tmp_data_dir, num_cases=total_num_cases, split_file=split_file - ) - (tmp_data_dir / split_file).unlink() # delete to simulate missing split file - - run_preparation( - input_dir=tmp_data_dir, - output_data_dir=tmp_output_dir, - output_label_dir=tmp_output_label_dir, - max_val_size=max_val_size, - val_split_file=split_file, - anonymize_subjects=False, - ) - # same as no splitfile - output_cases = [x.name for x in tmp_output_dir.iterdir()] - assert len(output_cases) == min(len(all_cases), max_val_size) - assert set(output_cases).issubset(set(all_cases)) - - -@pytest.mark.slow -@pytest.mark.parametrize("total_num_cases,max_val_size", [(10, 10),]) -def test_data_prep_corrupted_splitfile( - tmp_path: Path, total_num_cases: int, max_val_size: int -): - split_file = "split_info/fets_phase2_split_1/val.csv" # relative to data dir - tmp_data_dir = tmp_path / "data" - tmp_output_dir = tmp_path / "output_data" - tmp_output_label_dir = tmp_path / "output_labels" - # setup - tmp_data_dir.mkdir() - tmp_output_dir.mkdir() - tmp_output_label_dir.mkdir() - _, split_file_cases = setup_dummy_data_dir( - tmp_data_dir, - num_cases=total_num_cases, - split_file=split_file, - make_real_images=True, - ) - - # corrupt - with open(tmp_data_dir / split_file, newline="", encoding="utf-8") as csvfile: - split_reader = csv.reader(csvfile) - lines = [] - for row in split_reader: - lines.append(row) - lines[-1][0] = "corrupted_entry" - split_file_cases[-1] = "corrupted_entry" - with open( - tmp_data_dir / split_file, newline="", encoding="utf-8", mode="w" - ) as csvfile: - split_writer = csv.writer(csvfile) - split_writer.writerows(lines) - - run_preparation( - input_dir=tmp_data_dir, - output_data_dir=tmp_output_dir, - output_label_dir=tmp_output_label_dir, - max_val_size=max_val_size, - val_split_file=split_file, - ) - # sanity check should fail in that case - with pytest.raises(AssertionError): - run_sanity_check(data_path=tmp_output_dir, labels_path=tmp_output_label_dir) - - -@pytest.mark.parametrize( - "total_num_cases,max_val_size", [(100, 10), (100, 100), (10, 100)] -) -def test_data_prep_randomsplit(tmp_path: Path, total_num_cases: int, max_val_size: int): - tmp_data_dir = tmp_path / "data" - tmp_output_dir = tmp_path / "output_data" - tmp_output_label_dir = tmp_path / "output_labels" - # setup - tmp_data_dir.mkdir() - tmp_output_dir.mkdir() - tmp_output_label_dir.mkdir() - all_cases, _ = setup_dummy_data_dir(tmp_data_dir, num_cases=total_num_cases) - - run_preparation( - input_dir=tmp_data_dir, - output_data_dir=tmp_output_dir, - output_label_dir=tmp_output_label_dir, - max_val_size=max_val_size, - anonymize_subjects=False, - ) - output_cases = [x.name for x in tmp_output_dir.iterdir()] - - assert len(set(output_cases)) == len(output_cases) # no duplicates - assert len(output_cases) == min(len(all_cases), max_val_size) - assert set(output_cases).issubset(set(all_cases)) - - -@pytest.mark.parametrize( - "include_brain,use_alias", [(False, True), (False, False), (True, True)] -) -def test_copy_subjects(tmp_path: Path, include_brain: bool, use_alias: bool): - # need a directory with some FeTS files - modalities = ["t1", "t1ce", "t2", "flair", "final_seg"] - case_id = "Bruce Wayne" - case_alias = "Batman" - if not use_alias: - case_alias = case_id - subj_dir = tmp_path / case_id - tmp_output_dir = tmp_path / "output_data" - tmp_output_label_dir = tmp_path / "output_labels" - subj_dir.mkdir() - tmp_output_dir.mkdir() - tmp_output_label_dir.mkdir() - - brain_placeholder = "" - if include_brain: - brain_placeholder = "_brain" - for m in modalities: - img_path = subj_dir / f"{case_id}{brain_placeholder}_{m}.nii.gz" - img_path.touch() - - if use_alias: - copy_subject( - subj_dir, tmp_output_dir, tmp_output_label_dir, subject_alias=case_alias - ) - else: - copy_subject(subj_dir, tmp_output_dir, tmp_output_label_dir) - - expected_paths = set() - for m in modalities: - if m == "final_seg": - expected_paths.add(tmp_output_label_dir / f"{case_alias}_{m}.nii.gz") - else: - expected_paths.add( - tmp_output_dir / case_alias / f"{case_alias}_brain_{m}.nii.gz" - ) - found_paths = set(tmp_output_dir.glob("**/*.nii.gz")) - found_paths = found_paths.union(set(tmp_output_label_dir.glob("**/*.nii.gz"))) - - assert expected_paths == found_paths - - -@pytest.mark.parametrize("total_num_cases,max_val_size", [(100, 10)]) -def test_subject_anonymization(tmp_path: Path, total_num_cases: int, max_val_size: int): - tmp_data_dir = tmp_path / "data" - tmp_output_dir = tmp_path / "output_data" - tmp_output_label_dir = tmp_path / "output_labels" - # setup - tmp_data_dir.mkdir() - tmp_output_dir.mkdir() - tmp_output_label_dir.mkdir() - all_cases, _ = setup_dummy_data_dir(tmp_data_dir, num_cases=total_num_cases) - - run_preparation( - input_dir=tmp_data_dir, - output_data_dir=tmp_output_dir, - output_label_dir=tmp_output_label_dir, - max_val_size=max_val_size, - ) - output_cases = [x.name for x in tmp_output_dir.iterdir()] - - assert len(set(output_cases)) == len(output_cases) # no duplicates - assert len(output_cases) == min(len(all_cases), max_val_size) - assert set(output_cases).isdisjoint(set(all_cases)) - diff --git a/Task_2/mlcubes/metrics/mlcube/mlcube.yaml b/Task_2/mlcubes/metrics/mlcube/mlcube.yaml deleted file mode 100644 index 4e8dd96..0000000 --- a/Task_2/mlcubes/metrics/mlcube/mlcube.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: FeTS challenge 2022 (task 2) Metrics MLCube -description: MLCube for writing metrics for MedPerf -authors: - - {name: "MLCommons Medical Working Group"} - - {name: "Maximilian Zenk (DKFZ)"} - -platform: - accelerator_count: 0 - -docker: - # Image name. - image: docker.synapse.org/syn31437293/fets22_metrics - # Docker build context relative to $MLCUBE_ROOT. Default is `build`. - build_context: "../project" - # Docker file name within docker build context, default is `Dockerfile`. - build_file: "Dockerfile" - -tasks: - # Metrics MLCubes require only a single task: `evaluate` - # This tast takes the predictions generated by the model mlcube (as a directory) - # and the output of the Data Preparation MLCube containing the labels (as a directory) - # to compute metrics, which are then stored inside the output_path - evaluate: - # Executes a number of metrics specified by the params file - parameters: - inputs: { - predictions: {type: directory, default: predictions}, # Required. Where to find the predictions. MUST be a folder - labels: {type: directory, default: labels}, # Required. Where to find the labels. MUST be a folder - parameters_file: parameters.yaml, # Required. Helper file to provide additional arguments. Value MUST be parameters.yaml - # If you need any additional files that should - # not be included inside the mlcube image, - # add them inside `additional_files` folder - } - outputs: { - output_path: {type: "file", default: "results.yaml"}, # Required. Where to write the metrics results. Value MUST be results.yaml - log_path: {type: "file", default: "evaluate.log"} # Where to write the evaluation logs. - } diff --git a/Task_2/mlcubes/metrics/mlcube/workspace/parameters.yaml b/Task_2/mlcubes/metrics/mlcube/workspace/parameters.yaml deleted file mode 100644 index c83ca58..0000000 --- a/Task_2/mlcubes/metrics/mlcube/workspace/parameters.yaml +++ /dev/null @@ -1,2 +0,0 @@ -# File for parametrizing your metrics calculations - diff --git a/Task_2/mlcubes/metrics/project/Dockerfile b/Task_2/mlcubes/metrics/project/Dockerfile deleted file mode 100644 index 44b6af6..0000000 --- a/Task_2/mlcubes/metrics/project/Dockerfile +++ /dev/null @@ -1,31 +0,0 @@ -FROM cbica/captk:release-1.8.1 - -RUN yum install -y xz-devel - -RUN cd /work/CaPTk/bin/ && \ - curl https://captk.projects.nitrc.org/Hausdorff95_linux.zip --output Hausdorff95_linux.zip && \ - unzip -o Hausdorff95_linux.zip && \ - chmod a+x Hausdorff95 && \ - rm Hausdorff95_linux.zip - -# install all python requirements -RUN yum install python3 python3-pip -y - -WORKDIR /project -COPY ./requirements.txt ./requirements.txt -RUN pip3 install --upgrade pip -RUN pip3 install --no-cache-dir -r requirements.txt - -# copy all files -COPY ./ /project - -# Set the locale -ENV LANG en_US.UTF-8 -ENV LANGUAGE en_US:en -ENV LC_ALL en_US.UTF-8 - -# these produce problems with singularity -ENV CMAKE_PREFIX_PATH= -ENV DCMTK_DIR= - -ENTRYPOINT ["python3", "/project/mlcube.py"] diff --git a/Task_2/mlcubes/metrics/project/app.py b/Task_2/mlcubes/metrics/project/app.py deleted file mode 100644 index 537f94f..0000000 --- a/Task_2/mlcubes/metrics/project/app.py +++ /dev/null @@ -1,185 +0,0 @@ -# Code adapted from https://github.com/Sage-Bionetworks-Challenges/brats-dream-challenge-infra/blob/main/Docker/score.py - -from pathlib import Path -from typing import Dict, Union -import re -import yaml -import os -import subprocess - -from loguru import logger -import numpy as np -import pandas as pd -from sklearn.metrics import multilabel_confusion_matrix -import SimpleITK as sitk - - -BRATS_REGIONS = {"WT": (1, 2, 4), "TC": (1, 4), "ET": (4,)} - - -def to_brats_regions(label_mask: np.ndarray) -> np.ndarray: - # converts BraTS labels to regions. Input shape: XYZ; output: XYZC - region_masks = [] - for region_labels in BRATS_REGIONS.values(): - mask_new = np.zeros_like(label_mask, dtype=np.uint8) - for l in region_labels: - mask_new[label_mask == l] = 1 - region_masks.append(mask_new) - return np.stack(region_masks, axis=-1) - - -def load_scan(filepath: Path) -> np.ndarray: - image = sitk.GetArrayFromImage(sitk.ReadImage(str(filepath.absolute()))) - image = to_brats_regions(image) - return image - - -def compute_confusion_matrix(y_pred: np.ndarray, y_true: np.ndarray) -> Dict[str, int]: - # flatten spatial dims - if len(y_pred.shape) > 2: - y_pred = y_pred.reshape((-1, len(BRATS_REGIONS))) - if len(y_true.shape) > 2: - y_true = y_true.reshape((-1, len(BRATS_REGIONS))) - confmat = multilabel_confusion_matrix(y_true=y_true, y_pred=y_pred) - results = {} - for i, region in enumerate(BRATS_REGIONS): - results[f"TN_{region}"] = confmat[i, 0, 0] - results[f"FN_{region}"] = confmat[i, 1, 0] - results[f"TP_{region}"] = confmat[i, 1, 1] - results[f"FP_{region}"] = confmat[i, 0, 1] - return results - - -def run_captk(pred, gold, tmp): - """ - Run BraTS Similarity Metrics computation of prediction scan - against goldstandard. - """ - cmd = [ - os.path.join("/work/CaPTk/bin/Utilities"), - "-i", - gold, - "-lsb", - pred, - "-o", - tmp, - ] - subprocess.check_call(cmd) - - -def extract_metrics(tmp, subject_id): - """Get scores for three regions: ET, WT, and TC. - Metrics wanted: - - Dice score - - Hausdorff distance - - specificity - - sensitivity - - precision - """ - res = ( - pd.read_csv(tmp, index_col="Labels") - .filter( - items=[ - "Labels", - "Dice", - "Hausdorff95", - "Sensitivity", - "Specificity", - "Precision", - ] - ) - .filter(items=["ET", "WT", "TC"], axis=0) - .reset_index() - .assign(subject_id=subject_id) - .pivot(index="subject_id", columns="Labels") - ) - res.columns = ["_".join(col).strip() for col in res.columns] - return res - - -def score(labels_dir: Path, preds_dir: Path, tmp_output="tmp.csv") -> pd.DataFrame: - """Compute and return scores for each scan.""" - scores = [] - missing_preds = [] - for label_path in labels_dir.iterdir(): - if not label_path.is_file(): - logger.warning(f"Skipped directory {label_path}") - continue - subject_id = re.findall(r"(\w+)_final_seg\.nii\.gz", label_path.name)[0] - logger.info(f"Processing {subject_id}...") - - pred_path = preds_dir / (subject_id + ".nii.gz") - if not pred_path.exists(): - missing_preds.append(subject_id) - - try: - run_captk(str(pred_path.absolute()), str(label_path.absolute()), tmp_output) - except subprocess.CalledProcessError: - # If no output found, give penalized scores. - scan_scores = pd.DataFrame( - { - "subject_id": [subject_id], - "Dice_ET": [0], - "Dice_TC": [0], - "Dice_WT": [0], - "Hausdorff95_ET": [374], - "Hausdorff95_TC": [374], - "Hausdorff95_WT": [374], - "Sensitivity_ET": [0], - "Sensitivity_TC": [0], - "Sensitivity_WT": [0], - "Specificity_ET": [0], - "Specificity_TC": [0], - "Specificity_WT": [0], - "Precision_ET": [0], - "Precision_TC": [0], - "Precision_WT": [0], - "TP_ET": [0], - "TP_TC": [0], - "TP_WT": [0], - "FP_ET": [0], - "FP_TC": [0], - "FP_WT": [0], - "TN_ET": [0], - "TN_TC": [0], - "TN_WT": [0], - "FN_ET": [240 * 240 * 155], - "FN_TC": [240 * 240 * 155], - "FN_WT": [240 * 240 * 155], - } - ).set_index("subject_id") - else: - scan_scores = extract_metrics(tmp_output, subject_id) - os.remove(tmp_output) # Remove file, as it's no longer needed - - confusion_matrix = compute_confusion_matrix( - load_scan(pred_path), load_scan(label_path) - ) - confusion_matrix["subject_id"] = subject_id - extra_scores = pd.DataFrame([confusion_matrix]).set_index("subject_id") - scan_scores = pd.concat([scan_scores, extra_scores], axis=1) - - scan_scores["missing_pred"] = not pred_path.exists() - scores.append(scan_scores) - if len(missing_preds) > 0: - logger.warning( - f"Warning: In total, {len(missing_preds)} predictions were missing. " - f"Here is the list: {missing_preds}" - ) - return pd.concat(scores).sort_values(by="subject_id") - - -def evaluate( - label_dir: Union[str, Path], - prediction_dir: Union[str, Path], - output_file: Union[str, Path], - log_file: Union[str, Path], -) -> None: - logger.add(log_file) - results = score(Path(label_dir), Path(prediction_dir)) - - results_dict = results.to_dict(orient="index") - - with open(output_file, "w") as f: - yaml.dump(results_dict, f) - logger.info(f"Results saved at {output_file}") diff --git a/Task_2/mlcubes/metrics/project/mlcube.py b/Task_2/mlcubes/metrics/project/mlcube.py deleted file mode 100644 index 1c767d0..0000000 --- a/Task_2/mlcubes/metrics/project/mlcube.py +++ /dev/null @@ -1,38 +0,0 @@ -# MLCube Entrypoint -# -# This script shows how you can bridge your app with an MLCube interface. -# MLCubes expect the entrypoint to behave like a CLI, where tasks are -# commands, and input/output parameters and command-line arguments. -# You can provide that interface to MLCube in any way you prefer. -# Here, we show a way that requires minimal intrusion to the original code, -# By running the application through subprocesses. -import typer - -import app as evaluator - - -app = typer.Typer() - - -@app.command("evaluate") -def evaluate( - labels: str = typer.Option(..., "--labels"), - predictions: str = typer.Option(..., "--predictions"), - parameters_file: str = typer.Option(..., "--parameters_file"), - output_path: str = typer.Option(..., "--output_path"), - log_path: str = typer.Option(..., "--log_path"), -): - evaluator.evaluate( - label_dir=labels, - prediction_dir=predictions, - output_file=output_path, - log_file=log_path - ) - -@app.command("hotfix") -def hotfix(): - pass - - -if __name__ == "__main__": - app() diff --git a/Task_2/mlcubes/metrics/project/requirements.txt b/Task_2/mlcubes/metrics/project/requirements.txt deleted file mode 100644 index 6402380..0000000 --- a/Task_2/mlcubes/metrics/project/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -PyYAML~=5.3 -pandas -typer -MedPy -SimpleITK -numpy -scikit-learn -synapseclient -nibabel -loguru \ No newline at end of file diff --git a/Task_2/mlcubes/model/README.md b/Task_2/mlcubes/model/README.md deleted file mode 100644 index c939ad5..0000000 --- a/Task_2/mlcubes/model/README.md +++ /dev/null @@ -1,241 +0,0 @@ -# FeTS Challenge task 2 - MLCube integration - Model - -The FeTS challenge 2022 task 2 focuses on how segmentation methods can learn from multi-institutional datasets to be robust to distribution shifts at test-time, effectively solving a domain generalization problem. In this repository, you can find information on the container submission. - -In the FeTS challenge task 2, participants can submit their solution in the form of an MLCube docker image. Note that we do not impose restrictions on the participants how they train their model nor how they perform inference, as long as the resulting algorithm is compatible with the interface described here. After training a model, the following steps are required to submit it: - -1. Update the MLCube template with your custom code and dependencies ([guide below](#how-to-modify-this-project)). -2. Build and test the docker image as described [below](#task-execution). -3. Submit the container as described on the [challenge website](https://www.synapse.org/#!Synapse:syn28546456/wiki/617255). - -To make sure that the containers submitted by the participants also run successfully on the remote institutions in the FeTS federation, we will offer functionality tests on a few toy cases. Details are provided in the [challenge website](https://www.synapse.org/#!Synapse:syn28546456/wiki/617255). Note that we will internally convert the submitted docker images into singularity images before running the evaluation. - -## Project setup - -Please follow these steps to get started: - -- Install [docker](https://docs.docker.com/engine/install/). You may also have to install the [NVIDIA container toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#installing-on-ubuntu-and-debian) for GPU-support. -- [Install MLCube](https://mlcommons.github.io/mlcube/getting-started/) (with docker runner) to a virtual/conda environment of your choice. For example: - -```bash -# Create Python environment and install MLCube Docker runner -virtualenv -p python3 ./env && source ./env/bin/activate && pip install mlcube-docker -``` - - -- Clone this repository - -```bash -# Fetch the template from GitHub -git clone https://github.com/FETS-AI/Challenge.git -cd ./Task_2/mlcubes/model -``` - -To test your installation, you can run any of the commands in [this section](#task-execution). - -## How to modify this project - -You can change each file in this project to add your own implementation. In particular, participants will want to adapt the `Dockerfile`, `requirements.txt` and code in `project/src`. They should also add model checkpoints to their container. Each place where modifications are possible is described in some detail below. We also made a short guide for converting BraTS docker submissions to the format used in FeTS [here](#guide-for-converting-brats-submissions). Here is an overview of files in this project: - -```bash -├── mlcube -│ ├── mlcube.yaml # MLCube configuration, defines the project, author, platform, docker and tasks. -│ └── workspace # This folder is mounted at runtime. Note that it will be empty during fed. eval. -│ ├── data # For example some data can be put here during local testing. -│ └── output # Location where inference outputs are stored. -└── project - ├── Dockerfile # Docker file with instructions to create the image. - ├── mlcube.py # Python entrypoint used by MLCube, contains the logic for MLCube tasks. - ├── model_ckpts # Folder with checkpoint files loaded for inference. - ├── parameters.yaml # File with parameters used by inference procedure. - ├── requirements.txt # Python requirements needed to run the project inside Docker. - └── src - ├── my_logic.py # Python file that contains the main logic of the project. - └── utils - └── utilities.py # Python utilities file that stores useful functions. -``` - -
Requirements file -

- -In this file (`requirements.txt`) you can add all the python dependencies needed for running your implementation. These dependencies will be installed during the creation of the docker image, which happens automatically when you run the ```mlcube run ...``` command. -

-
- -
Dockerfile -

- -This file can be adapted to add your own docker labels, install some OS dependencies or to change the base docker image. Note however that we *strongly recommend* to use one of our proposed base images (`nvcr.io/nvidia/pytorch:20.08-py3` or tensorflow equivalent), to make sure your application can be executed in the federated evaluation. Note that the [pytorch (or tensorflow) version](https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html) inside this container is 1.7.0 (or 2.2.0), so for inference you may not be able to use features introduced in later versions, unfortunately. - -

-
- -
MLCube yaml file -

- -`mlcube.yaml` contains instructions about the docker image and platform that will be used, information about the project (name, description, authors), and also the tasks defined for the project. **Note** that this file is not submitted and changes will hence not have any effect in the official evaluation. We will use the provided template with the name of your docker image instead. To change the name of your docker image, you can use the `docker.image` field in the `mlcube.yaml` or use `docker tag` after building it. - -In the existing implementation you will find the `infer` task, which will be executed in the federated evaluation. It takes the following parameters: - -- Input parameters: - - data_path: folder path containing input data - - checkpoint_path: folder path containing model checkpoints - - parameters_file: Extra parameters -- Output parameters: - - output_path: folder path where output data will be stored - -This task loads the input data, processes it and then saves the output result in the output_path. It also prints some information from the extra parameters. - -

-
- -
MLCube python file -

- -The `mlcube.py` file is the handler file and entrypoint described in the dockerfile. Here you can find all the logic related to how to process each MLCube task. For most challenge participants, the provided template should be usable without modifications. -Note that the *infer* task is the only one that will be executed in the evaluation pipeline. -If you still want to add a new task for your convenience (for example model training), you have to define it inside `mlcube.yaml` with its input and output parameters and then add the logic to handle this new task inside the `mlcube.py` file. - -

-
- -
Main logic file -

- -The `my_logic.py` file contains the main logic of the project; hence most of the custom implementations by challenge participants are required here. This logic file is called from the `mlcube.py` file. - -*Please make sure* that your MLCube obeys the [conventions for input/output folders](#description-of-io-interface) after modification! - -

-
- -
Utilities file -

- -In the `utilities.py` file you can add some functions that will be useful for your main implementation. In this case, the functions from the utilities file are used inside the main logic file. - -

-
- -
Model checkpoint(s) -

- -This directory contains model checkpoints that are loaded for inference. The checkpoints used for a challenge submission have to be stored inside the MLCube to guarantee reproducibility. Therefore, please copy them to the `project/model_ckpts` directory, which will be copied to the docker image if you use the provided Dockerfile. -When testing your MLCube locally, different checkpoint directories can be passed to an existing MLCube without rebuilding the image, as described in the [example section](#tasks-execution)). - -

-
- -
Parameters file -

- -This file (`parameters.yaml`) contains all extra parameters that aren't files or directories. For example, here you can place all the hyperparameters that you will use for training a model. The parameters used for a challenge submission have to be stored inside the MLCube to guarantee reproducibility. Therefore, please copy the final paramters to the `project/parameters.yaml` file, which will be copied to the docker image if you use the provided Dockerfile. -When testing your MLCube locally, different parameter files can be passed to an existing MLCube without rebuilding the image, as described in the [example section](#tasks-execution)). - -

-
- -More information on the internals of MLCube can be found in the official [git repository](https://github.com/mlcommons/mlcube) or [documentation](https://mlcommons.github.io/mlcube/). - -## Task execution - -Here we describe the simple commands required to build and run individual MLCubes, which is useful for debugging your submission. -To run the complete evaluation pipeline (including toy data preparation and scoring), follow the steps [here](../../README.md#how-to-run-the-evaluation-pipeline-locally). -Note that we use docker-based MLCubes for development, which are converted automatically to singularity images before the official evaluation. - -First, make sure that you are still in the `mlcube` folder. To run the `infer` task specified by the MLCube: - -```bash -# Run main task -mlcube run --mlcube=mlcube.yaml --task=infer -``` - -By default, this will try to pull the image specified in the `docker` section of `mlcube.yaml` from dockerhub. To rebuild the docker based on local modifications, challenge participants should run: - -```Bash -# Run main task and always rebuild -mlcube run --mlcube=mlcube.yaml --task=infer -Pdocker.build_strategy=always -``` - -You can pass parameters defined in the `mlcube.yaml` file to the MLCube like this: - -```Bash -# Run main task with custom parameters -mlcube run --mlcube=mlcube.yaml --task=infer data_path=/path/to/data checkpoint_path=/path/to/checkpoints -``` - -where paths have to be specified as absolute paths. Refer to [this section](#mlcube-yaml-file) which parameters are supported. Note however, that only `data_path` and `output_path` will be available during federated evaluation. - -If you want to build the docker image without running it, you can use - -```Bash -# Only build without running a task -mlcube configure --mlcube=mlcube.yaml -Pdocker.build_strategy=always -``` - -## Description of IO-interface - -At inference, the MLCube gets the path to the test data as input. All cases will be organized in the following structure: - -``` -data/ # this path is passed for inference -│ -└───Patient_001 # case identifier -│ │ Patient_001_brain_t1.nii.gz -│ │ Patient_001_brain_t1ce.nii.gz -│ │ Patient_001_brain_t2.nii.gz -│ │ Patient_001_brain_flair.nii.gz -│ -└───Pat_JohnDoe # other case identifier -│ │ ... -``` - -Furthermore, predictions for test cases should be placed in an output directory and named as follows: `.nii.gz` -An example for loading images and saving segmentations is included in [`my_logic.py`](project/src/my_logic.py). - - -## Guide for converting BraTS submissions - -This section is supposed to help teams that already created a docker submission for BraTS 2021 with converting it so that it's a valid FeTS task-2 submission. The first step is to download [this folder](.) and copy your code to `project/src`. Then, you will need to modify a few files: - -- `mlcube.py`: You can write a simple wrapper that basically calls your original inference code for each test case. This could look similar to this: - ```python - # ... - - @app.command("infer") - def infer( - data_path: str = typer.Option(..., "--data_path"), - output_path: str = typer.Option(..., "--output_path"), - parameters_file: str = typer.Option(..., "--parameters_file"), - ckpt_path: str = typer.Option(..., "--checkpoint_path") - ): - if not Path(ckpt_path).exists(): - print(ckpt_path) - # For federated evaluation, model needs to be stored here - print("WARNING: Checkpoint path not specified or doesn't exist. Using default path instead.") - ckpt_path = "/mlcube_project/model_ckpts" - - for idx, subject_dir in enumerate(Path(data_path).iterdir()): - if subject_dir.is_dir(): - subject_id = subject_dir.name - print("Processing subject {}".format(subject_id)) - # run code from original BraTS submission. - # TODO Make sure your code can handle input/output paths as arguments: --input and --output. Also make sure outputs from previous runs in the output are not overwritten - single_case_cmd = ["", "--input", str(subject_dir), "--output", str(output_path)] - subprocess.run(single_case_cmd, check=True) - ``` - If your original entrypoint is a python script, you can of course also import it in `mlcube.py` instead of using a subprocess. It is important to keep the interface of the `infer` command unchanged. - -- `requirements.txt`: Update the python requirements. - -- `Dockerfile`: Merge your Dockerfile with the one provided in [`project/Dockerfile`](./project/Dockerfile). It's important to make `mlcube.py` the entrypoint now, as in our Dockerfile. If possible, you should try to use the base image (`FROM` instruction) we suggest, to guarantee your container runs on various GPU setups. - -- `model_ckpts`: Your model checkpoints have to be embedded in the docker image. Copy them here before building the image and make sure they are found by your script inside the container. - -- `mlcube.yaml`: Insert your custom image name in the `docker.image` field. - -After these changes, you should be able to run tests using the commands from [this section](#task-execution). Once these run without error, you're ready to [submit](https://www.synapse.org/#!Synapse:syn28546456/wiki/617255)! - -## Project workflow - -![MLCube workflow](https://i.imgur.com/qXRp3Tb.png) \ No newline at end of file diff --git a/Task_2/mlcubes/model/mlcube/mlcube.yaml b/Task_2/mlcubes/model/mlcube/mlcube.yaml deleted file mode 100644 index 13c30fe..0000000 --- a/Task_2/mlcubes/model/mlcube/mlcube.yaml +++ /dev/null @@ -1,27 +0,0 @@ -name: FeTS challenge 2022 (task 2) model MLCube -description: Template for inference cubes submitted to task 2. -authors: - - {name: "MLCommons Best Practices Working Group"} - - {name: "Maximilian Zenk (DKFZ)"} - -platform: - # If you have GPUs, specify the number of GPUs; 0 is for CPU - accelerator_count: 1 - -docker: - # Image name. - image: docker.synapse.org/syn31437293/fets22_model - # Docker build context relative to $MLCUBE_ROOT. Default is `build`. - build_context: "../project" - # Docker file name within docker build context, default is `Dockerfile`. - build_file: "Dockerfile" - # Used in case you have at least 1 GPU in your system and if platform.accelerator_count > 0 - gpu_args: "--gpus all" - -tasks: - infer: - # Inference task - parameters: - # NOTE: parameters_file and checkpoint_path are *not* passed during federated evaluation - inputs: {data_path: data/, parameters_file: {type: file, default: "null"}, checkpoint_path: {type: file, default: "null"}} - outputs: {output_path: output/} diff --git a/Task_2/mlcubes/model/mlcube/workspace/output/.dockerignore b/Task_2/mlcubes/model/mlcube/workspace/output/.dockerignore deleted file mode 100644 index 4462c1c..0000000 --- a/Task_2/mlcubes/model/mlcube/workspace/output/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -*.nii.gz diff --git a/Task_2/mlcubes/model/mlcube/workspace/output/.gitignore b/Task_2/mlcubes/model/mlcube/workspace/output/.gitignore deleted file mode 100644 index 331cf24..0000000 --- a/Task_2/mlcubes/model/mlcube/workspace/output/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!.gitignore -!.dockerignore diff --git a/Task_2/mlcubes/model/project/Dockerfile b/Task_2/mlcubes/model/project/Dockerfile deleted file mode 100644 index 9a975fd..0000000 --- a/Task_2/mlcubes/model/project/Dockerfile +++ /dev/null @@ -1,27 +0,0 @@ -# Please use one of the following base images for your container. -# This makes sure it can be run successfully in the federated evaluation. -FROM nvcr.io/nvidia/pytorch:20.08-py3 -# FROM nvcr.io/nvidia/tensorflow:20.08-tf2-py3 -# FROM nvcr.io/nvidia/tensorflow:20.08-tf1-py3 - -# fill in your info here -LABEL author="chuck@norris.org" -LABEL team="A-team" -LABEL application="your application name" -LABEL maintainer="chuck@norris.org" -LABEL version="0.0.1" -LABEL status="beta" - -# basic -RUN apt-get -y update && apt -y full-upgrade && apt-get -y install apt-utils wget git tar build-essential curl nano - -# install all python requirements -WORKDIR /mlcube_project -COPY ./requirements.txt ./requirements.txt -RUN pip3 install -r requirements.txt - -# copy all files -COPY ./ /mlcube_project - -# NOTE: to be able to run this with singularity, an absolute path is required here. -ENTRYPOINT [ "python3", "/mlcube_project/mlcube.py"] diff --git a/Task_2/mlcubes/model/project/LICENSE b/Task_2/mlcubes/model/project/LICENSE deleted file mode 100644 index 261eeb9..0000000 --- a/Task_2/mlcubes/model/project/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - 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. diff --git a/Task_2/mlcubes/model/project/mlcube.py b/Task_2/mlcubes/model/project/mlcube.py deleted file mode 100644 index c071257..0000000 --- a/Task_2/mlcubes/model/project/mlcube.py +++ /dev/null @@ -1,61 +0,0 @@ -"""MLCube handler file""" -from pathlib import Path -import typer -import yaml -from src.my_logic import run_inference - - -# This is used to create a simple CLI`` -app = typer.Typer() - - -class InferTask(object): - """ Inference task - This class defines the environment variables: - data_path: Directory path to dataset - output_path: Directory path to final results - checkpoint_path: Directory path to model checkpoints - All other parameters are defined in parameters_file - The `run` method executes the run_inference method from the src.my_logic module""" - - @staticmethod - def run(data_path: str, output_path: str, parameters_file: str, checkpoint_path: str) -> None: - # Load parameters from the paramters file - with open(parameters_file, "r") as stream: - parameters = yaml.safe_load(stream) - - application_name = parameters["APPLICATION_NAME"] - application_version = parameters["APPLICATION_VERSION"] - run_inference(data_path, output_path, checkpoint_path, - application_name, application_version) - - -# Don't delete this; if only one named command is defined, typer doesn't recognize the `infer` command any more. -@app.command("example") -def run_shit( - parameters_file: str = typer.Option(..., "--parameters_file") -): - print(parameters_file) - - -@app.command("infer") -def infer( - data_path: str = typer.Option(..., "--data_path"), - output_path: str = typer.Option(..., "--output_path"), - parameters_file: str = typer.Option(..., "--parameters_file"), - ckpt_path: str = typer.Option(..., "--checkpoint_path") -): - if not Path(ckpt_path).exists(): - print(ckpt_path) - # For federated evaluation, model needs to be stored here - print("WARNING: Checkpoint path not specified or doesn't exist. Using default path instead.") - ckpt_path = "/mlcube_project/model_ckpts" - if not Path(parameters_file).exists(): - # For federated evaluation, extra parameters need to be stored here - print("WARNING: Parameter file not specified or doesn't exist. Using default path instead.") - parameters_file = "/mlcube_project/parameters.yaml" - InferTask.run(data_path, output_path, parameters_file, ckpt_path) - - -if __name__ == "__main__": - app() diff --git a/Task_2/mlcubes/model/project/model_ckpts/example.ckpt b/Task_2/mlcubes/model/project/model_ckpts/example.ckpt deleted file mode 100644 index 58954a8..0000000 --- a/Task_2/mlcubes/model/project/model_ckpts/example.ckpt +++ /dev/null @@ -1 +0,0 @@ -Model weights can be stored in this location \ No newline at end of file diff --git a/Task_2/mlcubes/model/project/parameters.yaml b/Task_2/mlcubes/model/project/parameters.yaml deleted file mode 100644 index f522c4f..0000000 --- a/Task_2/mlcubes/model/project/parameters.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# Here you can define new parameters -# author info -AUTHOR_NAME: "Chuck Norris" -AUTHOR_EMAIL: "chuck@norris.org" -# put your app name here -APPLICATION_NAME: "AMAZING APPLICATION" -# specify version here, if possible use semantic versioning -APPLICATION_VERSION: "0.0.1" -# It's also possible to have a hyperparameter config here -HPARAM_EXAMPLE: 42 \ No newline at end of file diff --git a/Task_2/mlcubes/model/project/requirements.txt b/Task_2/mlcubes/model/project/requirements.txt deleted file mode 100644 index 63a2d97..0000000 --- a/Task_2/mlcubes/model/project/requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -PyYAML -typer -numpy -SimpleITK \ No newline at end of file diff --git a/Task_2/mlcubes/model/project/src/__init__.py b/Task_2/mlcubes/model/project/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Task_2/mlcubes/model/project/src/my_logic.py b/Task_2/mlcubes/model/project/src/my_logic.py deleted file mode 100644 index 6ddd203..0000000 --- a/Task_2/mlcubes/model/project/src/my_logic.py +++ /dev/null @@ -1,95 +0,0 @@ -"""Logic file""" -from pathlib import Path - -import torch -import numpy as np -import SimpleITK as sitk - -from src.utils.utilities import helper - - -def pseudo_predict(subject_dir: Path, output_dir: Path): - """ - In this dummy example, the four MR sequences are loaded from `subject_dir` and then class 0 is "predicted" from the t1-image, - class 1 from t1ce etc., using a simple thresholding operation. The resulting segmentation is saved to `output_dir`. - """ - # NOTE Please stick to this naming convention for your prediction! - output_fname = output_dir / f"{subject_dir.name}.nii.gz" - - # NOTE FeTS structure: one folder for each test case (subject), containing four niftis. - # Patient_001 # case identifier - # │ Patient_001_brain_t1.nii.gz - # │ Patient_001_brain_t1ce.nii.gz - # │ Patient_001_brain_t2.nii.gz - # │ Patient_001_brain_flair.nii.gz - modalities = ["t1", "t1ce", "t2", "flair"] - labels = [0, 1, 2, 4] - seg_npy = None - - for mod, lab in zip(modalities, labels): - img_path = next(subject_dir.glob(f"*_{mod}.nii.gz")) - img_itk = sitk.ReadImage(str(img_path.absolute())) - img_npy = sitk.GetArrayFromImage(img_itk) - if seg_npy is None: - seg_npy = np.zeros_like(img_npy) - else: - seg_npy[img_npy > np.percentile(img_npy, 95)] = lab - - # make sure segmentation occupies the same space - seg_itk = sitk.GetImageFromArray(seg_npy) - seg_itk.CopyInformation(img_itk) - - sitk.WriteImage(seg_itk, str(output_fname.absolute())) - - -def run_inference( - input_folder: str, - output_folder: str, - checkpoint_folder: str, - application_name: str, - application_version: str, -) -> None: - print( - "*** code execution started:", - application_name, - "version:", - application_version, - "! ***", - ) - in_folder = Path(input_folder) - out_folder = Path(output_folder) - params_folder = Path(checkpoint_folder) - print("Number of subjects found in data path: ", - len(list(in_folder.iterdir()))) - - # no parameters are used in this example. This is just for illustration. - if not params_folder.exists() or len(list(params_folder.iterdir())) == 0: - raise FileNotFoundError( - f"No model parameters found at {params_folder}") - else: - print( - "Found these files/dirs in the model checkpoint directory: ", - [x.name for x in params_folder.iterdir()], - ) - - # Just for demonstration: This is a user-implemented utility function. - helper() - - # GPU check - if not torch.cuda.is_available(): - print("\n!!!WARNING!!! Could not detect GPU. Please check why the cube cannot access GPUs.\n") - - - # Iterate over subjects - for subject in in_folder.iterdir(): - if subject.is_dir(): - print(f"Processing subject {subject.name}") - pseudo_predict(subject, out_folder) - - print( - "*** code execution finished:", - application_name, - "version:", - application_version, - "! ***", - ) diff --git a/Task_2/mlcubes/model/project/src/utils/__init__.py b/Task_2/mlcubes/model/project/src/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/Task_2/mlcubes/model/project/src/utils/utilities.py b/Task_2/mlcubes/model/project/src/utils/utilities.py deleted file mode 100644 index da685e7..0000000 --- a/Task_2/mlcubes/model/project/src/utils/utilities.py +++ /dev/null @@ -1,4 +0,0 @@ -"""utility functions here""" -def helper(): - """helper function""" - print("helper: Here you can store all your utility functions") diff --git a/Task_2/ranking/compute_ranking.R b/Task_2/ranking/compute_ranking.R deleted file mode 100644 index ca17b77..0000000 --- a/Task_2/ranking/compute_ranking.R +++ /dev/null @@ -1,399 +0,0 @@ -#!/usr/bin/env Rscript - -library(yaml) -library(dplyr) -library(reshape2) -library(challengeR) -library(doParallel) -library(huxtable) -library(magrittr) - -# Function to calculate one subranking ------------------------------------ - -#' Calculate a single ranking -#' -#' @param data The underlying dataset used to calculate the ranking (data.frame) -#' @param metric_variant Either "Dice" or "Hausdorff95" (str) -#' @param institution_name Name of the institution (used in title) (str) -#' @param ranking_method Ranking method, choose from -#' (rankThenMean, rankThenMedian, aggregateThenMean, aggregateThenMedian, testBased) -#' @param title_name_ending Ending of the title string (str) -#' @param file_name_ending Ending of the file name string (str) -#' -#' @return A ranking list - -calculate_sub_ranking <- function(data, metric_variant, institution_name, ranking_method, - title_name_ending, file_name_ending, report_dir = NULL) { - - smallBetter_order <- FALSE - isna <- 0 - if(metric_variant == "Hausdorff95") { - smallBetter_order <- TRUE - isna <- 1000 - } - - if(sum(is.na(data$metric_value))>0) { - challenge <- as.challenge(data, algorithm = "algorithm", case = "case", value = "metric_value", - smallBetter = smallBetter_order, na.treat = isna) - } else { - challenge <- as.challenge(data, algorithm = "algorithm", case = "case", value = "metric_value", - smallBetter = smallBetter_order) - } - - if(ranking_method == "rankThenMean") { - ranking <- challenge%>%rankThenAggregate(FUN = mean, ties.method = "min") - } else if(ranking_method == "rankThenMedian") { - ranking <- challenge%>%rankThenAggregate(FUN = median, ties.method = "min") - } else if(ranking_method == "aggregateThenMean") { - ranking <- challenge%>%aggregateThenRank(FUN = mean, na.treat = isna, ties.method = "min") - } else if(ranking_method == "aggregateThenMedian") { - ranking <- challenge%>%aggregateThenRank(FUN = median, na.treat = isna, ties.method = "min") - } else if(ranking_method == "testBased") { - ranking <- challenge%>%testThenRank(alpha = 0.05, - p.adjust.method = "none", - na.treat = isna, ties.method = "min") - } else { - warning("Please specify valid ranking scheme") - } - - - if (!is.null(report_dir)){ - # Bootstrapping analysis - registerDoParallel(cores = 8) - set.seed(1) - ranking_bootstrapped <- ranking%>%bootstrap(nboot = 1000, parallel = TRUE, progress = "none") - stopImplicitCluster() - - # Ranking report - ranking_bootstrapped %>% - report(title = paste(institution_name, title_name_ending, sep=" "), - file = file.path(report_dir, paste(institution_name, file_name_ending, sep="_")), - format = "PDF", - latex_engine = "pdflatex", - clean = FALSE - ) - } - - return(ranking) -} - - -# Function to calculate rankings for ET, TC, WT for Dice and HD95 ------------------ - -#' Calculate all 6 rankings for one institutes (Dice and HD95 for ET, TC, WT) -#' -#' @param data The underlying dataset used to calculate the ranking (data.frame) -#' @param institution_name Name of the institution (used in title) (str) -#' @param ranking_method Ranking method, choose from -#' (rankThenMean, rankThenMedian, aggregateThenMean, aggregateThenMedian, testBased) -#' -#' @return A list of the 6 ranking lists - -calculate_all_rankings_per_institute <- function(data, institution_name, ranking_method, report_dir = NULL) { - - ## Enhancing tumor (ET) ## - # Compute ET ranking for the Dice metric - print("... calculate ET Dice ranking ...") - - data_et_dice <- subset(data, metric == "Dice_ET") - ranking_et_dice <- calculate_sub_ranking(data_et_dice, "Dice", - institution_name, ranking_method, - "ET Dice", "ET_Dice", - report_dir) - - # Compute ET ranking for the HD95 metric - print("... calculate ET HD95 ranking ...") - - data_et_hd95 <- subset(data, metric == "Hausdorff95_ET") - ranking_et_hd95 <- calculate_sub_ranking(data_et_hd95, "Hausdorff95", - institution_name, ranking_method, - "ET HD95", "ET_HD95", - report_dir) - - ## Tumor core (TC) ## - # Compute TC ranking for the Dice metric - print("... calculate TC Dice ranking ...") - - data_tc_dice <- subset(data, metric == "Dice_TC") - ranking_tc_dice <- calculate_sub_ranking(data_tc_dice, "Dice", - institution_name, ranking_method, - "TC Dice", "TC_Dice", - report_dir) - - # Compute TC ranking for the HD95 metric - print("... calculate TC HD95 ranking ...") - - data_tc_hd95 <- subset(data, metric == "Hausdorff95_TC") - ranking_tc_hd95 <- calculate_sub_ranking(data_tc_hd95, "Hausdorff95", - institution_name, ranking_method, - "TC HD95", "TC_HD95", - report_dir) - - ## Whole tumor (WT) ## - # Compute WT ranking for the Dice metric - print("... calculate WT Dice ranking ...") - data_wt_dice <- subset(data, metric == "Dice_WT") - ranking_wt_dice <- calculate_sub_ranking(data_wt_dice, "Dice", - institution_name, ranking_method, - "WT Dice", "WT_Dice", - report_dir) - - # Compute WT ranking for the HD95 metric - print("... calculate WT HD95 ranking ...") - - data_wt_hd95 <- subset(data, metric == "Hausdorff95_WT") - ranking_wt_hd95 <- calculate_sub_ranking(data_wt_hd95, "Hausdorff95", - institution_name, ranking_method, - "WT HD95", "WT_HD95", - report_dir) - - # Store all rankings in a list - rankings <- list(ranking_et_dice, ranking_et_hd95, ranking_tc_dice, - ranking_tc_hd95, ranking_wt_dice, ranking_wt_hd95) - - return(rankings) -} - -# Function to calculate the number of significant superiorities per ranking -------- - -#' Overall function to calculate the number of significant superiorities per ranking -#' -#' @param rankings All sub-rankings per institute (list of ranking objects) -#' @param dataSignCounts Data frame to store significance counts -#' -#' @return Updated dataSignCount - -calculate_significance_one_institute <- function(rankings, dataSignCounts) { - print("... calculating significance counts ...") - alpha=0.05 - p.adjust.method="holm" - order=FALSE - - signMatrix = NULL - for (ranking in rankings) { - currSignMatrix = ranking$data%>%decision.challenge(na.treat=ranking$call[[1]][[1]]$na.treat, - alpha=alpha, - p.adjust.method=p.adjust.method) - if (is.null(signMatrix)){ - signMatrix <- currSignMatrix - } - else { - assertthat::are_equal(rownames(signMatrix$dummyTask), rownames(currSignMatrix$dummyTask)) - signMatrix$dummyTask <- signMatrix$dummyTask + currSignMatrix$dummyTask - } - } - - return(signMatrix) -} - - -# Load data --------------------------------------------------------------- -#' Title -#' -#' @param path Path to yaml file (str) -#' -#' @return data in data.frame format - -load_data <- function(path) { - - print("... load data from institute ...") - - # Load data from yaml file and convert to data frame - yaml_data <- yaml.load_file(path) - # need to replace nulls from yaml, as these indicate missing values - yaml_data <- replace_nulls_in_list(yaml_data) - yaml_data_df <- data.frame(melt(yaml_data)) - - data <- data.frame(case = yaml_data_df$L1, - # region = yaml_data_df$L3, # Included in metric now - algorithm = yaml_data_df$L2, - metric = yaml_data_df$L3, - metric_value = yaml_data_df$value) - - return(data) -} - - -# couldn't find a function from the library that does this -replace_nulls_in_list <- function(x) { - for (i in seq_along(x)) { - value <- x[[i]] - if (is.list(value)) { - x[[i]] <- replace_nulls_in_list(value) - } else { - if (is.null(value)) { - x[[i]] <- NA - } - } - } - x -} - - -# Function to calculate the mean ranks per algorithm for one institution -------- - -#' Overall function to compute the rankings per institute and calculate the -#' mean rank per algorithm -#' -#' @param data The underlying dataset used to calculate the ranking (data.frame) -#' @param institution_name Name of the institution (used in title) (str) -#' -#' @return Mean ranks for each algorithm (data.frame) - -calculate_mean_ranks_one_institute <- function(rankings, data, institution_name, report_dir = NULL) { - - ## Bring all ranks together for each algorithm - print("... compute mean ranks per algorithm ...") - - algorithms <- unique(data$algorithm) - all_ranks_df <- data.frame(matrix(ncol = length(algorithms), nrow = 6)) - counter = 1 - - for(alg in algorithms) { - alg_ranks <- c() - - # Extract ranks from each of the 6 rankings for each algorithm - for(ranking in rankings) { - alg_rank <- ranking[[1]]$dummyTask[c(alg),c("rank")] - alg_ranks <- rbind(alg_ranks, alg_rank) - } - - # Store ranks for each algorithm in data frame - all_ranks_df[[counter]] <- alg_ranks - colnames(all_ranks_df)[counter] <- alg - counter = counter + 1 - } - - # Compute mean rank over the 6 ranks per algorithm for this institution - mean_rank_df <- data.frame(t(colMeans(all_ranks_df))) - - sprintf("... done with %s ...", institution_name) - - return(mean_rank_df) -} - - -# Main script -------------------------------------------------------------- -args = commandArgs(trailingOnly = TRUE) - -if (length(args) == 0) { - stop("Please specify these arguments: data_path [, ranking_method, --make_reports].") -} -make_reports = FALSE -data_path <- args[1] -make_reports = FALSE -ranking_method <- "rankThenMean" -all_ranking_methods = list("rankThenMean", "rankThenMedian", "aggregateThenMean", "aggregateThenMedian", "testBased") - -if (length(args) == 2) { - if (args[2] == "--make_reports") { - make_reports = TRUE - } else { - ranking_method <- args[2] - } -} else if (length(args) == 3) { - ranking_method <- args[2] - if (!(ranking_method %in% all_ranking_methods)) { - stop(paste("Ranking method must be one of", all_ranking_methods)) - } - if (args[3] == "--make_reports") { - make_reports = TRUE - } else { - stop(paste("Unrecognized argument.", args[3])) - } -} - -output_dir <- "ranking_output" -if (! dir.exists(output_dir)) { - dir.create(output_dir) -} -if (make_reports) { - report_dir <- paste(output_dir, paste("reports",ranking_method, sep = "_"), sep = "/") -} else { - report_dir <- NULL -} - -# get list of all institution files -data_files <- list.files(data_path, pattern = '.*\\.(yaml|yml)$', full.names = TRUE) - -mean_ranks_all_institutions <- NULL -all_institution_names <- NULL -all_data <- list() -dataSignMatrices <- list() - -for (path in data_files) { - # Institution i ---------------------------------------------------------- - print(path) - institution_name <- unlist(strsplit(tail(unlist(strsplit(path, "/")), 1), "[.]"))[1] - # print(institution_name) - # if (institution_name == "C22_validation") { - # next - # print("skipping") - # } - data_fets_inst <- load_data(path) - # data_fets_inst <- subset(data_fets_inst, algorithm != "baseline_nnunet2020") # not ranked - - # Calculate the rankings for the ET, TC and WT - # For each region, the ranking is computed for the Dice and Hausdorff95 metrics - # Resulting in 6 rankings - print("... calculate rankings ... ...") - rankings <- calculate_all_rankings_per_institute(data_fets_inst, institution_name, ranking_method, report_dir=report_dir) - - # Compute mean rank per algorithm for each institution -------------------- - mean_rank_df <- calculate_mean_ranks_one_institute(rankings, data_fets_inst, institution_name) - - # Make sure that data frames have same ordering - mean_rank_df %>% select(sort(names(.))) - - if (is.null(mean_ranks_all_institutions)) - { - mean_ranks_all_institutions <- mean_rank_df - all_institution_names <- c(institution_name) - } - else - { - mean_ranks_all_institutions <- rbind(mean_ranks_all_institutions, mean_rank_df) - all_institution_names <- c(all_institution_names, institution_name) - } - all_data[[institution_name]] <- data_fets_inst - - # Calculate number of significantly superior rankings per algorithm - dataSignMatrices[[length(dataSignMatrices) + 1]] <- calculate_significance_one_institute(rankings, dataSignCounts) -} -rownames(mean_ranks_all_institutions) <- all_institution_names - -# Compute final ranking --------------------------------------------------- - -final_ranks_df <- data.frame(meanRank = colMeans(mean_ranks_all_institutions)) -final_ranks_df <- cbind(final_ranks_df, finalRank = rank(final_ranks_df$meanRank)) -final_ranks_df <- final_ranks_df[order(final_ranks_df$finalRank),] - -final_ranks_df_print <- - hux(final_ranks_df) %>% - add_rownames() %>% - set_bold(row = 1, col = everywhere, value = TRUE) %>% - set_all_borders(TRUE) - -print("The final ranking is: ") -print_screen(final_ranks_df_print) -file_name_final_ranks <- paste("final_ranks", ranking_method, sep="_") -file_name_mean_ranks <- paste("per_institute_ranks", ranking_method, sep="_") -write.csv(final_ranks_df, file = paste(output_dir, paste(file_name_final_ranks, ".csv",sep=""), sep="/")) -write.csv(mean_ranks_all_institutions, file = paste(output_dir, paste(file_name_mean_ranks, ".csv",sep=""), sep="/")) - -# also sum up significance matrices -total_sign_matrix <- NULL -for (s in dataSignMatrices) { - ordered_s <- s$dummyTask[order(rownames(s$dummyTask)), order(colnames(s$dummyTask))] - if (is_null(total_sign_matrix)){ - total_sign_matrix <- ordered_s - } else { - total_sign_matrix <- total_sign_matrix + ordered_s - } -} -print("Counting how often algorithms are significantly superior to the others (each row shows the no. superiorities of that model): ") -print(total_sign_matrix) -print("Sum along rows:") -print(rowSums(total_sign_matrix)) -file_name <- paste("significant_matrix", ranking_method, sep="_") -write.csv(total_sign_matrix, file = paste(output_dir, paste(file_name, ".csv",sep=""), sep="/")) diff --git a/Task_2/ranking/example_data.yaml b/Task_2/ranking/example_data.yaml deleted file mode 100644 index 7c3973c..0000000 --- a/Task_2/ranking/example_data.yaml +++ /dev/null @@ -1,44 +0,0 @@ -0: - deepmedic: - Dice_WT: 0.5 - Hausdorff95_WT: 8 - Dice_TC: 0.7 - Hausdorff95_TC: 2 - Dice_ET: 0.54 - Hausdorff95_ET: 14 - deepscan: - Dice_WT: 0.45 - Hausdorff95_WT: 12 - Dice_TC: 0.85 - Hausdorff95_TC: 5 - Dice_ET: 0.2 - Hausdorff95_ET: 22 - nnunet: - Dice_WT: 0.4 - Hausdorff95_WT: 9 - Dice_TC: 0.7 - Hausdorff95_TC: 6 - Dice_ET: 0.12 - Hausdorff95_ET: 16 -1: - deepmedic: - Dice_WT: 0.98 - Hausdorff95_WT: 2 - Dice_TC: 0.31 - Hausdorff95_TC: 5 - Dice_ET: 0.45 - Hausdorff95_ET: 1 - deepscan: - Dice_WT: 0.63 - Hausdorff95_WT: 6.1 - Dice_TC: 0.23 - Hausdorff95_TC: 4.2 - Dice_ET: 0.65 - Hausdorff95_ET: 9.1 - nnunet: - Dice_WT: 0.31 - Hausdorff95_WT: 6 - Dice_TC: 0.56 - Hausdorff95_TC: 11 - Dice_ET: 0.98 - Hausdorff95_ET: 1 diff --git a/Task_2/ranking/readme.md b/Task_2/ranking/readme.md deleted file mode 100644 index d35219a..0000000 --- a/Task_2/ranking/readme.md +++ /dev/null @@ -1,40 +0,0 @@ -# Task 2 Ranking - -This is an implementation of the ranking method described on the [challenge website](https://www.synapse.org/#!Synapse:syn28546456/wiki/617245). To run this on your computer, you need to install R and the challengeR toolkit, as described in their [repository](https://github.com/wiesenfa/challengeR/#installation). The script `compute_ranking.R` should be invoked by -``` -Rscript compute_ranking.R data_path [report_save_dir] -``` -and takes two positional arguments as input: -- `data_path` specifies the path to the directory that contains yaml-files with the evaluation results (there will be one for each testing institution in the federated evaluation). -- `report_save_dir` (optional) specifies the path to the directory where ranking analysis reports should be saved to. If not present, no reports are created. - -The script outputs the final ranking to stdout. - -Each yaml file is expected to have the following format (see also the example file): -``` -patient_id0: - algorithm_id0: - WT: - Dice: ... - Hausdorff95: ... - TC: - Dice: ... - Hausdorff95: ... - ET: - Dice: ... - Hausdorff95: ... - algorithm_id1: - WT: - Dice: ... - Hausdorff95: ... - TC: - Dice: ... - Hausdorff95: ... - ET: - Dice: ... - Hausdorff95: ... - ... -patient_id1: - ... -``` - From 960fe3548d894ee7484c7cc3273c19c56d07eee1 Mon Sep 17 00:00:00 2001 From: kta-intel Date: Sat, 28 Sep 2024 06:34:00 -0700 Subject: [PATCH 07/19] updates to enable latest openfl and gandlf Signed-off-by: kta-intel --- Task_1/fets_challenge/experiment.py | 78 +++++++++---------- Task_1/fets_challenge/inference.py | 12 +-- .../fets_challenge_workspace/plan/plan.yaml | 3 +- Task_1/setup.py | 4 +- 4 files changed, 50 insertions(+), 47 deletions(-) diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index 23ff669..1bf25d3 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -254,7 +254,7 @@ def run_challenge_experiment(aggregation_function, save_checkpoints=True, restore_from_checkpoint_folder=None, include_validation_with_hausdorff=True, - use_pretrained_model=True): + use_pretrained_model=False): fx.init('fets_challenge_workspace') @@ -367,18 +367,18 @@ def run_challenge_experiment(aggregation_function, 'time': [], 'convergence_score': [], 'round_dice': [], - 'dice_label_0': [], - 'dice_label_1': [], - 'dice_label_2': [], - 'dice_label_4': [], + # 'dice_label_0': [], + # 'dice_label_1': [], + # 'dice_label_2': [], + # 'dice_label_4': [], } - if include_validation_with_hausdorff: - experiment_results.update({ - 'hausdorff95_label_0': [], - 'hausdorff95_label_1': [], - 'hausdorff95_label_2': [], - 'hausdorff95_label_4': [], - }) + # if include_validation_with_hausdorff: + # experiment_results.update({ + # 'hausdorff95_label_0': [], + # 'hausdorff95_label_1': [], + # 'hausdorff95_label_2': [], + # 'hausdorff95_label_4': [], + # }) if restore_from_checkpoint_folder is None: @@ -496,15 +496,15 @@ def run_challenge_experiment(aggregation_function, # get the performace validation scores for the round round_dice = get_metric('valid_dice', round_num, aggregator.tensor_db) - dice_label_0 = get_metric('valid_dice_per_label_0', round_num, aggregator.tensor_db) - dice_label_1 = get_metric('valid_dice_per_label_1', round_num, aggregator.tensor_db) - dice_label_2 = get_metric('valid_dice_per_label_2', round_num, aggregator.tensor_db) - dice_label_4 = get_metric('valid_dice_per_label_4', round_num, aggregator.tensor_db) - if include_validation_with_hausdorff: - hausdorff95_label_0 = get_metric('valid_hd95_per_label_0', round_num, aggregator.tensor_db) - hausdorff95_label_1 = get_metric('valid_hd95_per_label_1', round_num, aggregator.tensor_db) - hausdorff95_label_2 = get_metric('valid_hd95_per_label_2', round_num, aggregator.tensor_db) - hausdorff95_label_4 = get_metric('valid_hd95_per_label_4', round_num, aggregator.tensor_db) + # dice_label_0 = get_metric('valid_dice_per_label_0', round_num, aggregator.tensor_db) + # dice_label_1 = get_metric('valid_dice_per_label_1', round_num, aggregator.tensor_db) + # dice_label_2 = get_metric('valid_dice_per_label_2', round_num, aggregator.tensor_db) + # dice_label_4 = get_metric('valid_dice_per_label_4', round_num, aggregator.tensor_db) + # if include_validation_with_hausdorff: + # hausdorff95_label_0 = get_metric('valid_hd95_per_label_0', round_num, aggregator.tensor_db) + # hausdorff95_label_1 = get_metric('valid_hd95_per_label_1', round_num, aggregator.tensor_db) + # hausdorff95_label_2 = get_metric('valid_hd95_per_label_2', round_num, aggregator.tensor_db) + # hausdorff95_label_4 = get_metric('valid_hd95_per_label_4', round_num, aggregator.tensor_db) # update best score if best_dice < round_dice: @@ -537,30 +537,30 @@ def run_challenge_experiment(aggregation_function, summary = '"**** END OF ROUND {} SUMMARY *****"'.format(round_num) summary += "\n\tSimulation Time: {} minutes".format(round(total_simulated_time / 60, 2)) summary += "\n\t(Projected) Convergence Score: {}".format(projected_auc) - summary += "\n\tDICE Label 0: {}".format(dice_label_0) - summary += "\n\tDICE Label 1: {}".format(dice_label_1) - summary += "\n\tDICE Label 2: {}".format(dice_label_2) - summary += "\n\tDICE Label 4: {}".format(dice_label_4) - if include_validation_with_hausdorff: - summary += "\n\tHausdorff95 Label 0: {}".format(hausdorff95_label_0) - summary += "\n\tHausdorff95 Label 1: {}".format(hausdorff95_label_1) - summary += "\n\tHausdorff95 Label 2: {}".format(hausdorff95_label_2) - summary += "\n\tHausdorff95 Label 4: {}".format(hausdorff95_label_4) + # summary += "\n\tDICE Label 0: {}".format(dice_label_0) + # summary += "\n\tDICE Label 1: {}".format(dice_label_1) + # summary += "\n\tDICE Label 2: {}".format(dice_label_2) + # summary += "\n\tDICE Label 4: {}".format(dice_label_4) + # if include_validation_with_hausdorff: + # summary += "\n\tHausdorff95 Label 0: {}".format(hausdorff95_label_0) + # summary += "\n\tHausdorff95 Label 1: {}".format(hausdorff95_label_1) + # summary += "\n\tHausdorff95 Label 2: {}".format(hausdorff95_label_2) + # summary += "\n\tHausdorff95 Label 4: {}".format(hausdorff95_label_4) experiment_results['round'].append(round_num) experiment_results['time'].append(total_simulated_time) experiment_results['convergence_score'].append(projected_auc) experiment_results['round_dice'].append(round_dice) - experiment_results['dice_label_0'].append(dice_label_0) - experiment_results['dice_label_1'].append(dice_label_1) - experiment_results['dice_label_2'].append(dice_label_2) - experiment_results['dice_label_4'].append(dice_label_4) - if include_validation_with_hausdorff: - experiment_results['hausdorff95_label_0'].append(hausdorff95_label_0) - experiment_results['hausdorff95_label_1'].append(hausdorff95_label_1) - experiment_results['hausdorff95_label_2'].append(hausdorff95_label_2) - experiment_results['hausdorff95_label_4'].append(hausdorff95_label_4) + # experiment_results['dice_label_0'].append(dice_label_0) + # experiment_results['dice_label_1'].append(dice_label_1) + # experiment_results['dice_label_2'].append(dice_label_2) + # experiment_results['dice_label_4'].append(dice_label_4) + # if include_validation_with_hausdorff: + # experiment_results['hausdorff95_label_0'].append(hausdorff95_label_0) + # experiment_results['hausdorff95_label_1'].append(hausdorff95_label_1) + # experiment_results['hausdorff95_label_2'].append(hausdorff95_label_2) + # experiment_results['hausdorff95_label_4'].append(hausdorff95_label_4) logger.info(summary) if save_checkpoints: diff --git a/Task_1/fets_challenge/inference.py b/Task_1/fets_challenge/inference.py index 13f0680..732fa5c 100644 --- a/Task_1/fets_challenge/inference.py +++ b/Task_1/fets_challenge/inference.py @@ -81,7 +81,8 @@ def generate_validation_csv(data_path, validation_csv_filename, working_dir): 0.0, 'placeholder', training_and_validation=False) - validation_csv_dict.to_csv(os.path.join(working_dir, 'validation_paths.csv'),index=False) + os.makedirs(os.path.join(working_dir, 'inference_col'), exist_ok=True) + validation_csv_dict.to_csv(os.path.join(working_dir, 'inference_col', 'valid.csv'),index=False) def replace_initializations(done_replacing, array, mask, replacement_value, initialization_value): """ @@ -228,12 +229,13 @@ def model_outputs_to_disc(data_path, # Update the plan if necessary plan = fx.update_plan(overrides) - plan.config['task_runner']['settings']['fets_config_dict']['save_output'] = True - plan.config['task_runner']['settings']['fets_config_dict']['output_dir'] = output_path + plan.config['task_runner']['settings']['gandlf_config']['save_output'] = True + plan.config['task_runner']['settings']['gandlf_config']['output_dir'] = output_path # overwrite datapath value for a single 'InferenceCol' collaborator - plan.cols_data_paths['InferenceCol'] = data_path - + # plan.cols_data_paths['InferenceCol'] = data_path + plan.cols_data_paths['InferenceCol'] = 'inference_col' + # get the inference data loader data_loader = copy(plan).get_data_loader('InferenceCol') diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 60c6509..912c614 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -92,9 +92,10 @@ task_runner : track_memory_usage: false verbose: false version: - maximum: 0.0.14 + maximum: 0.1.0 minimum: 0.0.14 weighted_loss: true + modality: rad network : diff --git a/Task_1/setup.py b/Task_1/setup.py index 312aa5f..49a02f6 100644 --- a/Task_1/setup.py +++ b/Task_1/setup.py @@ -28,8 +28,8 @@ ], include_package_data=True, install_requires=[ - 'openfl @ git+https://github.com/intel/openfl.git@v1.5.1', - 'GANDLF @ git+https://github.com/CBICA/GaNDLF.git@0.0.17', + 'openfl @ git+https://github.com/securefederatedai/openfl.git@kta-intel/fets-2024-patch-1', + 'GANDLF @ git+https://github.com/CBICA/GaNDLF.git@0.1.0', 'fets @ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge', ], python_requires='>=3.9', From 7f238e7d37fe527d1d3810016c283f49b05237a1 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Sat, 28 Sep 2024 17:19:57 -0400 Subject: [PATCH 08/19] added classification plan, made separate plans folder for multiple yaml blueprints --- Task_1/.gitignore | 4 +- Task_1/FeTS_Challenge.py | 1 + .../fets_challenge_workspace/plan/plan.yaml | 11 +- Task_1/cert/ca/root-ca.crt | 42 +++--- Task_1/cert/ca/root-ca/private/root-ca.key | 74 ++++----- Task_1/cert/ca/signing-ca.crt | 42 +++--- Task_1/cert/ca/signing-ca.csr | 36 ++--- .../cert/ca/signing-ca/private/signing-ca.key | 74 ++++----- Task_1/cert/cert_chain.crt | 84 +++++------ Task_1/cert/client/col_one.crt | 46 +++--- Task_1/cert/client/col_one.key | 74 ++++----- Task_1/cert/client/col_two.crt | 46 +++--- Task_1/cert/client/col_two.key | 74 ++++----- Task_1/cert/col_one.csr | 36 ++--- Task_1/cert/col_two.csr | 36 ++--- .../server/agg_in-ota-232347.ads.iu.edu.crt | 42 +++--- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 ++--- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 ++++----- Task_1/fets_challenge.egg-info/PKG-INFO | 6 +- Task_1/fets_challenge.egg-info/requires.txt | 4 +- .../fets_challenge_workspace/plan/plan.yaml | 27 ++-- Task_1/plans/cla_plan.yaml | 142 ++++++++++++++++++ Task_1/plans/seg_plan.yaml | 141 +++++++++++++++++ 23 files changed, 719 insertions(+), 433 deletions(-) create mode 100644 Task_1/plans/cla_plan.yaml create mode 100644 Task_1/plans/seg_plan.yaml diff --git a/Task_1/.gitignore b/Task_1/.gitignore index 264d695..f3220d1 100644 --- a/Task_1/.gitignore +++ b/Task_1/.gitignore @@ -4,5 +4,5 @@ FeTS_Challenge_RL.py FeTS_Challenge_RecEng.py FeTS_Challenge_leonardklausman.py *final_submission* -build/* -*cert* +build* +cert* diff --git a/Task_1/FeTS_Challenge.py b/Task_1/FeTS_Challenge.py index 028b954..50c0fdb 100644 --- a/Task_1/FeTS_Challenge.py +++ b/Task_1/FeTS_Challenge.py @@ -528,6 +528,7 @@ def FedAvgM_Selection(local_tensors, # change this to point to the parent directory of the data brats_training_data_parent_dir = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData' +brats_training_data_parent_dir = '/home/locolinux2/datasets/MICCAI_FeTS2022_Resized' # increase this if you need a longer history for your algorithms # decrease this if you need to reduce system RAM consumption diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 928d318..912c614 100644 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -33,8 +33,8 @@ task_runner : device : cpu gandlf_config : batch_size: 1 - clip_grad: None - clip_mode: None + clip_mode: norm + clip_grad: 0.1 data_augmentation: {} data_postprocessing: {} data_preprocessing: @@ -50,8 +50,8 @@ task_runner : output_dir: '.' metrics: - dice - - dice_per_label - - hd95_per_label + # - dice_per_label + # - hd95_per_label model: amp: true architecture: resunet @@ -92,9 +92,10 @@ task_runner : track_memory_usage: false verbose: false version: - maximum: 0.0.14 + maximum: 0.1.0 minimum: 0.0.14 weighted_loss: true + modality: rad network : diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 62b305e..2c1dcba 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRANVUbE2StkhwlzJ9GOFXlNQwDQYJKoZIhvcNAQEMBQAw +MIIEhjCCAu6gAwIBAgIRAILS0iFyKkgQoGbmdHFTroswDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxODAxMjM1MFoXDTI1MDkxODAx -MjM1MFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkyODE5NDczOFoXDTI1MDkyODE5 +NDczOFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAwzSErrULvGzDfwi+/1fbtvrQN/+J7q6CmXnxKT7Sp4+E+plf -f/Ep4m02d6mWVJJdhgBEcGJOWkaazgq+InDIdkvUJkXTFk/BZhqXRzrfz5lI6r+k -YgkEaA+vlC1cziORlNg6EfaLMrEgTLZU94GLrYNu9vv3rIjCh8b/zKsQ5xvg8IyM -+8/h3B35FFAKsOFal7dEVwyBAf8/JXhSDfywbFiN3eXnINSZeo2OoLZ+MoKQt5nT -k0vBsxX3XHenFeR/cXa0G3mlRtv0Hz8IqFeuI/SXnM7mRJPhxk6Y+0iEGtAfEKr2 -f35X3eDoFtC72T4oaaY7N4w3yG6suvIqpjrTlo9CR2esJEFMAi3Rq2UqAXT1/wNA -R8UFVGiV4ygQCN/xUeKDWJrb4b51r4HY5p7DYfS9P0HmVbgeR1XzQiU1E9xjXJRI -d6Uc4dnPriH5USZbfhTMDQuh491i8MheCVc3vpHGn6HSY3nqM9dlH881kJaZFUqe -hm4L00sIEyBGYtPdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBAKaSsmoMnHX/mm+RvxOqTGrSaJl4sy4u5jL6GJAjx8+JpPuTFzwH -WPODdH9U0srSHo8tXXGaZ+WVOtKjc6V5gJi35EWqIqIJ4szB/xbC8bMK6/v9TERt -iOK9BH9P5fsKR/g4PIurMNnHaxVQmU/enDKXIt0sKvv34SLgawwbCvZ2Hf/pW+VR -QtFr40UvhoNfyd5MoRsCk+ubgNt3CSMA+VB2fgVx1uBDPJnHqZrScS+Dxh+85Hml -I1LqYBvSeJkIe/wF7sCy1P6M+aHMoBEuRLwwIgBXkySGT3wxB8pkcpgB+tGKqJky -UdUzdr0yNJLvyiCMzfbJXy0ugtsKVcGTaE4bzjYyYE9Kj2BXvlvszMlwMPOPpx5r -5VdUGK/AWZU2Q4vwUZQyJF9zBNcchNAPB6neld5x65VnL3J5qMDJ2VuHTS9KWMTj -t0/RENVMio9E98Oniu8qNs6hbhUxTSr072Vu/zBluXU/r3AegRo8KcfOTBaykX0y -xfbehj0joDyK3g== +AY8AMIIBigKCAYEArNT3RK1YJqD6fvDwm2RtcCabpNJFMnfKR94y6pn8nZth1X/l +eW9O4vfrAVkVoW2GMKpjtq5OP9ihoOaBm7QwZRDE0ofqfK9qGUZROiZrVIUuS6Pc +c0LoobmnX2jah8fLhzT0PmUBM2Is5o6iO9RH9VZB3BmxngTtHm5y9zkj9YgazC6Y +UbUIDHvPYVzHQA4x1EAg/NQEpmhzQ3tcLGEfZHviFGHOxxtK36itWG8RkugxDEFX +xACyo9cjh1b82FrOHVnFryyCbQVkd9VtfEph3vAPaJfeOySdW1p+mdUT6rkdeiSd +f7f0asu3KaVHPKW1ljUrwfvqzjW9v4jlNI6/5wxsxRGwFYH/ZIJlFg3bOHMWAuDe +QzHZwJYuXtc/LGCIDmtU51RcbGLZNOv0F3IWBJlxA7N4gWXT43K2rhtl+Rbbt4Y3 +cMcnEDZ3CD29ZtFtvA+C+AG4RCBnNj9lG40ie/0UqO+rh4Yr9B2mGy7f6xxM46tq +7NPGJxB2NXXdUuVjAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBABwHuS2hfN0/oYHP8oPJteZq6ETQRnSHpmWNwdZTdRez5kY7Uimh +zo5zzzQXIHRaCobz7cmFw+3VVTrrEKKC8I4lQUZC2SiWvF2rDhALadR0r04j0zc4 +aJ3DumsXYJRuRAuzA5hPdxb40bVSSXYj0YPzWi6qc3Nuiae6d/gUx8b+GuwwIYmH +KBEizQYQFjK7pPwFdyrIbIppOhab6nhIeBG0yH/lL5zKwBnCvN0L/rUBGe1L3tNJ +IOuLuaIR9epq4k2eS0ipHClPpAauDBe1JwMqcFu/5F2Fs9xNbNd090DwgJqj00Oj +pPm2Q+2EDMFtI6P/u7ptT7d8K/JpLQxfgap73dc4rTs31r8vfbip/gd0lryXkJiF +HA2ZCEBtIhGTWBApebsmLY3rr2GAdm7PTrTfc0PJ8sRmKG2lr1coE2DoGUhY1spZ +RwLv85K8HM9oaExJ5Fx8BPEC/YxFv7Feyx35TVmStou/DCp1szcRzcDcL7RAcnrM +gsHte7PWhLlhNA== -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index 5c3308d..7aaffd2 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIG4wIBAAKCAYEAwzSErrULvGzDfwi+/1fbtvrQN/+J7q6CmXnxKT7Sp4+E+plf -f/Ep4m02d6mWVJJdhgBEcGJOWkaazgq+InDIdkvUJkXTFk/BZhqXRzrfz5lI6r+k -YgkEaA+vlC1cziORlNg6EfaLMrEgTLZU94GLrYNu9vv3rIjCh8b/zKsQ5xvg8IyM -+8/h3B35FFAKsOFal7dEVwyBAf8/JXhSDfywbFiN3eXnINSZeo2OoLZ+MoKQt5nT -k0vBsxX3XHenFeR/cXa0G3mlRtv0Hz8IqFeuI/SXnM7mRJPhxk6Y+0iEGtAfEKr2 -f35X3eDoFtC72T4oaaY7N4w3yG6suvIqpjrTlo9CR2esJEFMAi3Rq2UqAXT1/wNA -R8UFVGiV4ygQCN/xUeKDWJrb4b51r4HY5p7DYfS9P0HmVbgeR1XzQiU1E9xjXJRI -d6Uc4dnPriH5USZbfhTMDQuh491i8MheCVc3vpHGn6HSY3nqM9dlH881kJaZFUqe -hm4L00sIEyBGYtPdAgMBAAECggGAULMGBUnwg6G9QmfFuj9CpIdVDEl25vc7I6Lf -easwoDf7hDRi4Dw9kg+PXHH+JZFq24qBwKpLdRPKTNLxHsDchtc7aeUk6oznScRF -dRuYSjU3CWFX3nWW3kRZ1Fraipf2x/+KJkHz8u16Cmy4fKgQLBfxiGbLUgcp0MMK -njy8XKbQW/HnGPUsjPjRL74VZWGMt7r6pDgVn1M78kwnNAQalXgYkjtIzXBG0Pzz -kWpQiqYimNydtL+1YMl8fTw0FZ9j/ZFSoLmtiEtUBwvRJBVGASS3h5gzx/tsOMg5 -D+CvC5HKJFdl1pRCBxzLoy9N4g7Z5ZNJpQHxrMCKy9bPw+bSVqpx3j/lbtWFjnD4 -t1GSTh4L2aiQ9SCH+LpG1yR05UZVP6y2X/Fj5jjvO4qXOHVAR5shX3eOWKqFsfAG -37AZ19BoreoMCqUHEPSgRJxivkSPRDk/XGgKnkTMsFst8oLTvt/Lqt1fCUc9k3Ct -STCTK3M+Q3AHoPA8oKGoNmymA1bLAoHBAOO5NRuuKgKLmiv8IVjMynNvtCN/VJ5K -7/ojuCx1U5mzfKxHcLoRrYhe0eQ3lIYAvqgpOrRCBEwhherK7PjpGefaWbrLtvs2 -U+vnSr11yMNuw4xX4AcVRMaL1WDvv3XnBAJwsjKD7oueIloN6X26o2u3dZgrbKiX -rQrr10eq1gr9xHGlxNFiZ3lkzyMWC43YeuZWjM5QhCrC3URAqqeSYg1/a7o1Y3fg -feS1XjyvT4iqAl16mJUdEIs0QV13Zc3kYwKBwQDbcaFRD417/L7lsvk5/GpaoyCw -f7O9Kvw8iZM6WEVx8+/ArKd9Q2zckgY/kmu1BxLe1GVv3y7HOShXFwt1pqrbgpCo -5qmdhKWDv6KUF/JqfdGU/2EMnVETQfAo12Jfln1VPxrirMRcXmZK/95uCnwNBDbc -f2HGBoQoUwcapYTJuJ4v5WRTM1o2ppsjBhOeL8XzBJ7hFJh7r/up86oC/Fuiqqsv -ffYv9pRtRaa85W+Ip6hznjywZl95B+aOTpENOr8CgcBLKlbdTB+Rt4KsAgz/wpkQ -gU50aRMFLLcJWcDw68kscpI0S2BqCmu9F48wRShBEv3bg8Bcv22rs2UAmvqdLlPe -s7PqdFNxl/0bYLzKzJX37Befu2G29M4+uukzle8ce6RXKdun0ORsMUYlc3Iejfxj -Eas/DxZOj8IOWMo2Xa1I83pkCNNuSYzeBOhaLGyj5VCrtuXDM9BsTOW8IZwys56p -1eU5EWZDq1Xip/rzDOqzsWoWcODsVyuexyDMORzhWQECgcEAj7JJ403e5RjtXHal -Et6COlXl2w3UggP65h1khmk1GFiXX8DvcGxNheYtJ0XXN9So+7dzsR0hgZ2hF95k -R6da7KED30YkPZyV0b8UVAuWVzuKmRnd0CfX5ldgTy4zIcrmyYKoNVTSxHWgYG5K -lh5ReyiOUDctrEGqGsm7tiw61ukI1O5OktjmszDIF9gr0oMQCYG2FEerThtAHdsM -MiZUTyGZNWEza9b4/NEGTV2keoTnHsa4kP6IeDW/OOKjw1j7AoHAWKDt74Kz2nwd -3mp6mOMtdm/ZQqLSM3e2Y6JEBTgst53SpAjbugrgf7NPH6LM3RrMxlhrPSXjHxl7 -ELHd86J5nkK1yoGw4dQAGJytuKWH9T4cNBYIvJxTnRHBfW65qzPvXudjaKZ4dIWX -O6dT2vrsG16XqgrQfdXGCBHJH/SiiraKrhnclc8finGonfKg0P7XANowxE8/X8uT -qIoTHbfiUcjKUW/q8vm7NW+QFBq9CIE+FmcpFmMN5ukilagJKZxh +MIIG4gIBAAKCAYEArNT3RK1YJqD6fvDwm2RtcCabpNJFMnfKR94y6pn8nZth1X/l +eW9O4vfrAVkVoW2GMKpjtq5OP9ihoOaBm7QwZRDE0ofqfK9qGUZROiZrVIUuS6Pc +c0LoobmnX2jah8fLhzT0PmUBM2Is5o6iO9RH9VZB3BmxngTtHm5y9zkj9YgazC6Y +UbUIDHvPYVzHQA4x1EAg/NQEpmhzQ3tcLGEfZHviFGHOxxtK36itWG8RkugxDEFX +xACyo9cjh1b82FrOHVnFryyCbQVkd9VtfEph3vAPaJfeOySdW1p+mdUT6rkdeiSd +f7f0asu3KaVHPKW1ljUrwfvqzjW9v4jlNI6/5wxsxRGwFYH/ZIJlFg3bOHMWAuDe +QzHZwJYuXtc/LGCIDmtU51RcbGLZNOv0F3IWBJlxA7N4gWXT43K2rhtl+Rbbt4Y3 +cMcnEDZ3CD29ZtFtvA+C+AG4RCBnNj9lG40ie/0UqO+rh4Yr9B2mGy7f6xxM46tq +7NPGJxB2NXXdUuVjAgMBAAECggGAL9xP1yxbp2LXy3RkZNvENJT0cAmskOO8V/eP +yQi4fFqtloZy4RRyV4cJBJgLVeczDGH69/lAAQ04AQskJB6bcjlZD+YEiN+4tWQU +FVLTURYKcnbfkumZ60MytsieD5DD616+LlMhKH4M6hHgmknYXXe0CEPzPEun8E/s +tUqVCybUKOvUUXgc0PwuOwuKv9HOebUCjZEW8pAlLzBHn6CLpXNq8XL+ZIPJ0bLv +wfgL+U8kWfz0VXpN/fITTCTKIw3N5kWKdKBJxD0/b+vWMlAprv+XJJ2iCSGg6Jq0 +OJzdb4/jJmVXF+An+3OvWREan0kXxykR5rHPjXjJnKkV9fUIxhQMWntAr3/0cpaE +HR8//UKkmv7C0p2/Vx3jICBtFD38RrkovoNyq7fEqyrCwEXAHduU8OufDagC11zz +Jqa6u0UX1ucVkoCbXrVthPMFt/J24/2LjB+GAa2KWno0B4o3mbziT572fCpTk+eG +y6s3mR7uF9hfUTefUjue1LFADNCFAoHBAOUSKliw3TmU3DeulSNd99r82lfBcve9 +pei1WzKfeHjmGPJUvqvpK6kEfycTTtkFc3ahxds1w0pnubS8zJNEDEtTD9XpPkVd +zq0It2LiMvJTl1MgvJfsZHIAYIJdyalqo7Myn/pvEZ+bWGtzgdBya7jv09k+sI8n +i/8I8IExO8zjUjeGaIgZ7hJ/MzRHL0u5WmlGlDmJz4D/iB71gCfQruwf/rz4xSoj +o+itTAb/ZFAR+fLOAwlUg4PpDcyurXd/nQKBwQDBJky3bdZS/LMWcaWSPM95/a+Z +shgkDoPq6sDMfsfWNgfc0GDdvBiQ+gYZmUKk12PeNh9MRth4ABq/C8oaKGgyZCLu +N+xjqlg/a8KfvA6s2NVhDk04+kntJVPm4HUAWoI/SSljTCZBog27ye/h5R6cYWbh +I+CXoioU0DQbowCcGwFoJbfSzZGyxG32wS0bflTBBeP2+4PU//ZJrIeGj3kSKNjy ++m6P31RZvS0yxhnwYyqqMCCVE5Uv0XsuBN5PaP8CgcA80zf/WOdFNOvMtUTQoVEB +CwcHKkzWz7rQMefHZ2Tb5W1WW35Ns5puRM1mmM/k/HeOVqJs9LeoeCZtgXxo1jbV +gXbA/DAWxzPr6laXoSyZ/+w8nIK3bIO3abY2p6S2oaRaHuUv4HIziVJPJdqgeOF1 +t+ju1KCZQoz/6WXDSElyvCHGsJ/tE8WNj80O4qACYXNKZP1S0e8Rd8izP8kJyXXJ +KS3BC+V+rPwG+o0nhoUiZcOS33Ua8yAA1M9fPDq/clkCgcBnbO/FhQ4v79qh2QcU +0HU02I/wF/pvTEp9P2kv12+Al/wL1JUaBr+M2iTsDjIufJuggJCv0nvVfhDUXibB +bQOmgBJoRw/QqoWIqFZWHGgrTAyuZO8a5IMzdjqANY7ROqXl53I/FqahnHoIJXDL +IFoM2OczBXgdGhu4e2h7qAQKkzdkolXVjnhHJoHPkM9rmnEdzt6sATAtnUYvWzBS +8H6fJ7pMGaecaLUNPIx4VLXND/znls/Lo+nN6jkwgjDcitcCgcBjIcHW82i2nHOH +D0To+wkUnCpmLc427ZMT0eZamGp4CgtPfWFuWoGYkwc9orZ1Ye0ZoFTf3Xz32Lv9 +eMdKpRl5BEXTJtguC5jrM6uOe71Kg4Vq47q+DhhHn+2nopYbKHOeEqKc2uXqfZtV +kNWEjopAyncUFPCV0KNxzN4fDfk21QMmRjUnazb8+5FKF2fw0qd0I4ULXCScB796 +Ypodmw2rphmjJi1iJbX18Du2N+R2CjNTzHESc0Qdy3PY8jk8mSs= -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index b6967d2..4680f0b 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQH8NGvgkTQl6XOvgN+rU7QjANBgkqhkiG9w0BAQwFADB0 +MIIEizCCAvOgAwIBAgIQcSwjO927RKGnAGyNaO9DDjANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE4MDEyMzUwWhcNMjUwOTE4MDEy -MzUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTI4MTk0NzM5WhcNMjUwOTI4MTk0 +NzM5WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQDDRkIsBGd5nFapn3q8B1KtP78BM6SNUIzMC9sbYfaP -XBaa4MKzje/u5pswI7OeGsfSAJFkVUCoD2ZR0yjxgXywPRM9kohWwBDTcXdCHaYe -6f4QOFjQFRo+5IomKZBSmvv9BDxKTYhm7inYpQ8i3/GT7uCyDcvRlzZhEbHEAzkS -CL7ELJf7/e3SrCUmNmly2u+8aHDSCS1Zc8xF6W63Yu7TnKAVcuPhjOBGpketroXQ -nc2WukKQyLKHDmZtcSV03JRo6aaVLnD+iahYM1U0GOLJYRQwpIoPQNJUyKwWH2uo -fa2kcRDIW+N2qMvV4MPB6dgQZOymi4jdNSb1tlGHCaRT81f4RVl4/OKh2LuI3Z+u -rouPbcASbrkI51oECiYO+0IcUj0KzYviysYpoon/ppioPo4nwxDk+46LQMaRQA2T -piekB1zV3TclHinp2A4XcsrY/7w4z1n3wDQ4kim1pmPyQ4mSatkpUWilrX7VzMw3 -gCryfxEKz6hJugg9upkj6O0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAFLgHHHDoeSbshS2XzG6q/lXVmEQvHH3xyEfEvh7jZQw4 -YPL4epgtYP8AH5hckAPROXSQrQzL+/BnFHYdfYX+mcO+5TieorMfzvomcAt33Dnw -1VQI1HC/s0qZ8AFzrNX675PJqJgJcNL1ohXW14QEqHqGDMYkmamrtsVOhLeiQdCy -RTTHg1EqqkskhbLeGnP48Idryqo9hz5vSIxdA97HxBOnrvTzBWHJ2U3oSWLLil6i -1AWTK6pYlNLo5oT/N4EaG5FxUXRIDVGwrdjOH2W5XMbZBMA4ZHH2TAxccUtih0xv -rewL1/Dq0jms/cPbK2m+qYBUKnornX8ap43PliXPXd5K7Nv4BDKIxImFlzjmbvsv -Q6MrCAipbYI4jay2pcgM1W7Bq1x5vIdbhNUu3XziVqWXQ/OvhkDKI2o0hgURhOsA -VSSCu/pgrhQSkuOFFajVbokC2ij+2lgWvQO2a1uvVR/fe2Ys1jJPivSvCoee28rS -zqcWzaLs6qmeS/0xrQDe +AQUAA4IBjwAwggGKAoIBgQCkaWboxZHWa6dx0vfH2Dk2sXO2E5HakZotTYOFrHDO +yxd8KMbrUvl6KVB6zvFgfes8WcMv783sE1Ljrs6DTWUERtm+fjTGHmvvH0/lpbru +dl5Srv/9NbXUqqTzS1cNI0qWuwbdemTzbPJIX4m2ACuooDg/LgmZp2kv7JexJzDe +KdeO2nXrZPgw3udzk6ZrIN5XHN5qot/n01vdgbx40k+i7j7tZcuqnIsAD1zpOffg +sbGafAF0EUzJnCGEAuNW37XuG4RziWKrfqZ8SyjGQphJ2gvFHAynpnpP6+I8pV0h +gf9TAP6mCI3FziWMOft6dJCBRc1EpVEYemlTPA9zS98CYAFoAhwOTxvFfvbQRmZG +/xiGu9PRKg1E7oDzxPE5KbdFcoOWqLS+pP99HqU6A3RKN200XdODRtm8wsxB7YOr +K3LvnajVcn5TbqqzmlztLsTco8vv4y1l2GFsWIaA62SJjvBjotQEKnIMp75JejK2 +rqo0gGFd+YrSKm3r2gFPwKMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAR6egjXKHKGG8tKMbaRdYHMojDbngq/3mPjONVB6GyhfQ +o7vNh1rS7P9YgpjhnTm4BGe8UqHGjtb1IiWJE8KTnZj2lLePcR+8SkJ5czyeVaiH +jI+bny0Pt9u+24ZGANSg93y2CjAVPKijpElv2EwnqajcugWTCJXkjN8fJumLnmje +Ug/IlogFDAF04r9T3FSGJb68Ww9we9oyhYpI3gsEuqxua4W+6/j5lPMWpd2npS5Q +2JAysN3TeeiBwzZUkC/HClFrmvXo+6LJtDXZ4RduT3KXFpONvQ1rDtbj00dpGhMB +gu+M6P6YnyOaTWJqO1mWUrxEWCHSze/5Jrlr/bm5FdaPAa5HkWsNxQzXWuLbo0WN +07khHhtuJNWAh6onRDgrdWZu8nQYj8kKUtfWs22eyDGWspjkzYaRIOUCMczMiybu +4HNPKuAtjG62Mld+pa9iRLFf+NR017nd4kpuof3ySJ0bCoagPWrN3qas9o9Iu92f +nCl03a/JtUg5wKPrJj4h -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index fd58eb1..a43425e 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index ee9a85e..dce22f5 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index e54ceed..ad8982f 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRANVUbE2StkhwlzJ9GOFXlNQwDQYJKoZIhvcNAQEMBQAw +MIIEhjCCAu6gAwIBAgIRAILS0iFyKkgQoGbmdHFTroswDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkxODAxMjM1MFoXDTI1MDkxODAx -MjM1MFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkyODE5NDczOFoXDTI1MDkyODE5 +NDczOFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAwzSErrULvGzDfwi+/1fbtvrQN/+J7q6CmXnxKT7Sp4+E+plf -f/Ep4m02d6mWVJJdhgBEcGJOWkaazgq+InDIdkvUJkXTFk/BZhqXRzrfz5lI6r+k -YgkEaA+vlC1cziORlNg6EfaLMrEgTLZU94GLrYNu9vv3rIjCh8b/zKsQ5xvg8IyM -+8/h3B35FFAKsOFal7dEVwyBAf8/JXhSDfywbFiN3eXnINSZeo2OoLZ+MoKQt5nT -k0vBsxX3XHenFeR/cXa0G3mlRtv0Hz8IqFeuI/SXnM7mRJPhxk6Y+0iEGtAfEKr2 -f35X3eDoFtC72T4oaaY7N4w3yG6suvIqpjrTlo9CR2esJEFMAi3Rq2UqAXT1/wNA -R8UFVGiV4ygQCN/xUeKDWJrb4b51r4HY5p7DYfS9P0HmVbgeR1XzQiU1E9xjXJRI -d6Uc4dnPriH5USZbfhTMDQuh491i8MheCVc3vpHGn6HSY3nqM9dlH881kJaZFUqe -hm4L00sIEyBGYtPdAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBAKaSsmoMnHX/mm+RvxOqTGrSaJl4sy4u5jL6GJAjx8+JpPuTFzwH -WPODdH9U0srSHo8tXXGaZ+WVOtKjc6V5gJi35EWqIqIJ4szB/xbC8bMK6/v9TERt -iOK9BH9P5fsKR/g4PIurMNnHaxVQmU/enDKXIt0sKvv34SLgawwbCvZ2Hf/pW+VR -QtFr40UvhoNfyd5MoRsCk+ubgNt3CSMA+VB2fgVx1uBDPJnHqZrScS+Dxh+85Hml -I1LqYBvSeJkIe/wF7sCy1P6M+aHMoBEuRLwwIgBXkySGT3wxB8pkcpgB+tGKqJky -UdUzdr0yNJLvyiCMzfbJXy0ugtsKVcGTaE4bzjYyYE9Kj2BXvlvszMlwMPOPpx5r -5VdUGK/AWZU2Q4vwUZQyJF9zBNcchNAPB6neld5x65VnL3J5qMDJ2VuHTS9KWMTj -t0/RENVMio9E98Oniu8qNs6hbhUxTSr072Vu/zBluXU/r3AegRo8KcfOTBaykX0y -xfbehj0joDyK3g== +AY8AMIIBigKCAYEArNT3RK1YJqD6fvDwm2RtcCabpNJFMnfKR94y6pn8nZth1X/l +eW9O4vfrAVkVoW2GMKpjtq5OP9ihoOaBm7QwZRDE0ofqfK9qGUZROiZrVIUuS6Pc +c0LoobmnX2jah8fLhzT0PmUBM2Is5o6iO9RH9VZB3BmxngTtHm5y9zkj9YgazC6Y +UbUIDHvPYVzHQA4x1EAg/NQEpmhzQ3tcLGEfZHviFGHOxxtK36itWG8RkugxDEFX +xACyo9cjh1b82FrOHVnFryyCbQVkd9VtfEph3vAPaJfeOySdW1p+mdUT6rkdeiSd +f7f0asu3KaVHPKW1ljUrwfvqzjW9v4jlNI6/5wxsxRGwFYH/ZIJlFg3bOHMWAuDe +QzHZwJYuXtc/LGCIDmtU51RcbGLZNOv0F3IWBJlxA7N4gWXT43K2rhtl+Rbbt4Y3 +cMcnEDZ3CD29ZtFtvA+C+AG4RCBnNj9lG40ie/0UqO+rh4Yr9B2mGy7f6xxM46tq +7NPGJxB2NXXdUuVjAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN +AQEMBQADggGBABwHuS2hfN0/oYHP8oPJteZq6ETQRnSHpmWNwdZTdRez5kY7Uimh +zo5zzzQXIHRaCobz7cmFw+3VVTrrEKKC8I4lQUZC2SiWvF2rDhALadR0r04j0zc4 +aJ3DumsXYJRuRAuzA5hPdxb40bVSSXYj0YPzWi6qc3Nuiae6d/gUx8b+GuwwIYmH +KBEizQYQFjK7pPwFdyrIbIppOhab6nhIeBG0yH/lL5zKwBnCvN0L/rUBGe1L3tNJ +IOuLuaIR9epq4k2eS0ipHClPpAauDBe1JwMqcFu/5F2Fs9xNbNd090DwgJqj00Oj +pPm2Q+2EDMFtI6P/u7ptT7d8K/JpLQxfgap73dc4rTs31r8vfbip/gd0lryXkJiF +HA2ZCEBtIhGTWBApebsmLY3rr2GAdm7PTrTfc0PJ8sRmKG2lr1coE2DoGUhY1spZ +RwLv85K8HM9oaExJ5Fx8BPEC/YxFv7Feyx35TVmStou/DCp1szcRzcDcL7RAcnrM +gsHte7PWhLlhNA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQH8NGvgkTQl6XOvgN+rU7QjANBgkqhkiG9w0BAQwFADB0 +MIIEizCCAvOgAwIBAgIQcSwjO927RKGnAGyNaO9DDjANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTE4MDEyMzUwWhcNMjUwOTE4MDEy -MzUwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTI4MTk0NzM5WhcNMjUwOTI4MTk0 +NzM5WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQDDRkIsBGd5nFapn3q8B1KtP78BM6SNUIzMC9sbYfaP -XBaa4MKzje/u5pswI7OeGsfSAJFkVUCoD2ZR0yjxgXywPRM9kohWwBDTcXdCHaYe -6f4QOFjQFRo+5IomKZBSmvv9BDxKTYhm7inYpQ8i3/GT7uCyDcvRlzZhEbHEAzkS -CL7ELJf7/e3SrCUmNmly2u+8aHDSCS1Zc8xF6W63Yu7TnKAVcuPhjOBGpketroXQ -nc2WukKQyLKHDmZtcSV03JRo6aaVLnD+iahYM1U0GOLJYRQwpIoPQNJUyKwWH2uo -fa2kcRDIW+N2qMvV4MPB6dgQZOymi4jdNSb1tlGHCaRT81f4RVl4/OKh2LuI3Z+u -rouPbcASbrkI51oECiYO+0IcUj0KzYviysYpoon/ppioPo4nwxDk+46LQMaRQA2T -piekB1zV3TclHinp2A4XcsrY/7w4z1n3wDQ4kim1pmPyQ4mSatkpUWilrX7VzMw3 -gCryfxEKz6hJugg9upkj6O0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAFLgHHHDoeSbshS2XzG6q/lXVmEQvHH3xyEfEvh7jZQw4 -YPL4epgtYP8AH5hckAPROXSQrQzL+/BnFHYdfYX+mcO+5TieorMfzvomcAt33Dnw -1VQI1HC/s0qZ8AFzrNX675PJqJgJcNL1ohXW14QEqHqGDMYkmamrtsVOhLeiQdCy -RTTHg1EqqkskhbLeGnP48Idryqo9hz5vSIxdA97HxBOnrvTzBWHJ2U3oSWLLil6i -1AWTK6pYlNLo5oT/N4EaG5FxUXRIDVGwrdjOH2W5XMbZBMA4ZHH2TAxccUtih0xv -rewL1/Dq0jms/cPbK2m+qYBUKnornX8ap43PliXPXd5K7Nv4BDKIxImFlzjmbvsv -Q6MrCAipbYI4jay2pcgM1W7Bq1x5vIdbhNUu3XziVqWXQ/OvhkDKI2o0hgURhOsA -VSSCu/pgrhQSkuOFFajVbokC2ij+2lgWvQO2a1uvVR/fe2Ys1jJPivSvCoee28rS -zqcWzaLs6qmeS/0xrQDe +AQUAA4IBjwAwggGKAoIBgQCkaWboxZHWa6dx0vfH2Dk2sXO2E5HakZotTYOFrHDO +yxd8KMbrUvl6KVB6zvFgfes8WcMv783sE1Ljrs6DTWUERtm+fjTGHmvvH0/lpbru +dl5Srv/9NbXUqqTzS1cNI0qWuwbdemTzbPJIX4m2ACuooDg/LgmZp2kv7JexJzDe +KdeO2nXrZPgw3udzk6ZrIN5XHN5qot/n01vdgbx40k+i7j7tZcuqnIsAD1zpOffg +sbGafAF0EUzJnCGEAuNW37XuG4RziWKrfqZ8SyjGQphJ2gvFHAynpnpP6+I8pV0h +gf9TAP6mCI3FziWMOft6dJCBRc1EpVEYemlTPA9zS98CYAFoAhwOTxvFfvbQRmZG +/xiGu9PRKg1E7oDzxPE5KbdFcoOWqLS+pP99HqU6A3RKN200XdODRtm8wsxB7YOr +K3LvnajVcn5TbqqzmlztLsTco8vv4y1l2GFsWIaA62SJjvBjotQEKnIMp75JejK2 +rqo0gGFd+YrSKm3r2gFPwKMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAR6egjXKHKGG8tKMbaRdYHMojDbngq/3mPjONVB6GyhfQ +o7vNh1rS7P9YgpjhnTm4BGe8UqHGjtb1IiWJE8KTnZj2lLePcR+8SkJ5czyeVaiH +jI+bny0Pt9u+24ZGANSg93y2CjAVPKijpElv2EwnqajcugWTCJXkjN8fJumLnmje +Ug/IlogFDAF04r9T3FSGJb68Ww9we9oyhYpI3gsEuqxua4W+6/j5lPMWpd2npS5Q +2JAysN3TeeiBwzZUkC/HClFrmvXo+6LJtDXZ4RduT3KXFpONvQ1rDtbj00dpGhMB +gu+M6P6YnyOaTWJqO1mWUrxEWCHSze/5Jrlr/bm5FdaPAa5HkWsNxQzXWuLbo0WN +07khHhtuJNWAh6onRDgrdWZu8nQYj8kKUtfWs22eyDGWspjkzYaRIOUCMczMiybu +4HNPKuAtjG62Mld+pa9iRLFf+NR017nd4kpuof3ySJ0bCoagPWrN3qas9o9Iu92f +nCl03a/JtUg5wKPrJj4h -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index b4bf25a..f46d52a 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQB7Q5vl5mQueVYwvv0piI4DANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTE4MDEyMzUxWhcNMjUw -OTE4MDEyMzUxWjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQDgQr6cajEIRK6L61ne2zWZc1XGLKmctJPNy0zvaFCN2jSCE5Wb -wW+msXh0TkyOiIjZgppKQAzMbkeXd7OhSxCpv4f8UHXla5sWtV3UwymQMx3XfeDH -JVo7o4TdqAWluyaV9912EVtNdXeFYIEtzcR+rIvXDhzTCLfPpXVm/D+FnMCswt19 -5eMWCY2Kuz2GJg8SdlL5AzYAHDF5he2rV4h7pPfhkwyUDn5nzTaopsJbxhyYZSSJ -3cbsgLfiu5kLPoq97jfiac1jrM80Ue3fz0Jd8IW06dwuszAxUOPrJp2AFfEQQxOh -KUGl6yE44u3IMiacb95jsZzLS5Nt5+/YabZ6PKJAUza+Ce4cTC978wF6KOhJrfHa -Eqbdl75QKZF0B2bn7Hqj/ZCfdHZZiaEN+MUfprmYH2u1HN3HO5QCS0goQwDsU0yj -CmWsNGz4nkmjtTqE8JBMgfi9NjTojW9uYzyPq2/fh6iLO2SppdHDiscuCgkxxmKx -yuj/2yRr4rDOIj0CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv -bmUwDQYJKoZIhvcNAQEMBQADggGBAMCjqaMOXOJKGu/lYqHAb/NaGrcT4Fga5Uv9 -42E0cyF7pZ8bnmxzFAsy6byzFui3CthaySeBLPCHYws7fbKuYa2ZdGM5cmimo03m -Oe01jR7d/npzNhPYGqA7C/WZHwuuDPU78Hr2K3iioGNnqVYmWJXFc1zHvGHvKN+V -iJOch/xMa5wz0IhQzAEtZ0EaIVDUU1gA9W2ZytbcB/Vy91QJtpH+s3Sj8sL9VDxL -/PNz0247bUhYZf0i22j/EmOmqA5JhV1peqtT5Ak8CWCBEPlaV+niZlUQ0Efd6v5v -xgHCUDgPyGsY4kHuo/cGHmQoGPJVuBN3lbZMktDsLvCoazjOe7VxvwPhI7LgNvZA -mWCRg0QZkH8OMDVzq1uhczTiODwPmERTCgQUjCHUQS5joGQYFDINmnJL35crA7xc -CRt6GV8tRqMANpCA7omUamJ0yeFSuct16treZXE4iQctqFwSe8BGFhKZZYJrXcLq -lmpyf6ATZiBhliZr49hds8gDOMwolA== +MIIEMzCCApugAwIBAgIRAJVMjs7ryEmSnkltnonVbwgwDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkyODE5NDc0MFoXDTI1 +MDkyODE5NDc0MFowDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAnZ7DjWqOM+6dwFC5ZJvJs3SyFo/uw255+RFqrhJ3n0bwT2LN +qHc/7VlAmZFMnCYuGtPJtDhNcAp+2SwOWgJbZdMHPg9t1VV7jezlQGjRBhXdXApg +m1FZzOzxyOjo03pWTKJBHHfdNgfn8xFBBxIQ5PEjWjzOg2w/BUzoaxpdkyIKzING +Ueepkzj/VFE48CF5+9DYgbfUJb6TOlcPpw5D7Xk0HOO+DPbDTimxgphkGhGqkB9o +jS87jvCj4ywfVOY2R2qkftc3M9uYdrlLi3hRPVhz1PEvP1bsrc0N9s+5UkmGevqB +XRDsw9+b8MQPgZhY3KWM7AUsYNGHAf6Y00B/6KasYDX2rGDKQ9gdAyTWSMRRrVIV +OI0c4ExWwOtcq2wYyYZKXPqORZmqMHFoFqYxiC763aKJcf27kEmRcNG820qmVJWU +QZltGoryTePWuF2qSR0zp6xtLDFhYblhVK9QBHIzy0zkv3dG10LBcGyZHJ/dDGCq +KEBhn5o+aJ7E6EC5AgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +b25lMA0GCSqGSIb3DQEBDAUAA4IBgQCSez36hi0fXw4W8L6FgNgy0xMl0N/RMqRk +8ocZGoy8HYH5nxASC77YLDMwfAIbrmESWGNyf4snpomhRr8KuRT+JzZN0tA/fJnu +IdNFCnufkODnUQVs+tY58cWwS9gAHGgb8JY7fx50/IZWzo9eg0ugM+W0Iq58Cn21 +ll1DTWwu5yCsy4zwgFX9gJJO74VMtRX8FbVEZ+FuxRO/GVjU282ax7WhGyOp50Zt +3KZ8P10f4oGEi/qrVbvdAITDybmrZC+1djUO/yZ7P5GPU4dnnfKY09V2U8yQ1U6a +qUrbQNRT0JXx5RXZ2P4e43ykTWkQ/0JGt3eNEpqh3k4GLcDZhqjS4ZkBgQwh58Gq +2/zoHoAOkO8B+dUKn7p0Juf+HGaA9oIdcC7ZQbDXXRCSRKkXFmDdzOHcHPhy0f1o +G5nc6JAXgC8bZxa8VJE5GqlOhNujPIe7Qguk9w+F2qMpxHBsh6+aba1UWiPRKRQz +b0BGBzPINzEc3th0x4B6pxx/8JTC7hA= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index 17ce425..1a13b7e 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 71022fc..07c0517 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRAKYa6sZ0fUDCrvPEfwauFdYwDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkxODAxMjM1MVoXDTI1 -MDkxODAxMjM1MVowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAqP0yUvnLq1sHhJYnYga9HE2/+r128sPpKl2c6XTkdV31jVsP -L2q0ZWv2tEofICk+LoDCUk9xfhcLSc2Ira6O8gt3Oe7uoVuONa0rEgxP5PdO5Fpu -e2kNhW2HyQJsP86C0K5CaIw9e5fOKofxEsn+sqr3Cz0AZYjNmFU8lIb+Hjz2LE6m -Qj0Vx3OFvRq4x0oe8A6vnCksXqQhwNN2VWkR74vWtYhwR2sCQdieCBYhpD00M3/s -aJL0Z2BJsZrdCGKyQK/nJk4JtqMmgCK7dzz5vsy9Eq0JYS3+QrI5WFxWVExzKnRz -6aMQvGKnMiajkknLziE15tUxFIaD56bWqpeMUgXvjDuQpTmp9Pm8DwfMupLE9P4g -Rip2LI2hpciv4XCex8vVuVoEFiTXX9V3HUDtMfArJxTLhleYWfURGndpqrf/ryrJ -qzrV3sBakhefQhQuVKPEdQVqxOPgSnHu39Muo99Q1w88hbCmDXirVdv/OOphK6nG -Q/pVG/jrKcZ+5T8BAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQArhLCRF9jfdDeBboCnDpsm+n1fLKmCEQFX -RxbQ1oE/pFdUwtvLC0swbOlUMt4qeQ+8xAgRS/UBGX/5kgv1QHmXrjsRz+4w/VQq -cOIQoNuKw2APIKBaSNTYuXmRALO/6VfMYO5ycvsG4iooWAcUK/5UrzYCPBjnyQpO -ByUP6845FwPng1gdYI88fxNbejLOmcMPF5Bmp1l8esPT3Dvjw+FECp6M6RJ439jJ -VXYPkLLGaLNeSzeLtUbpoSbdH29N5y7TkHZGi0s8VkbjQvg+NNXkfECZQ38x/k+C -AEKEN5PB78CCYqvtb4GZ0whHNp95doAmL819AYxYAW8famxL0GL+Ho6XvO23SSu6 -WPjI4MobaVPj6A+hz7WyIfpEdKpa10QJvyAGC2BFefThpJxCpbyzezxRrRXrEOpV -qgugSVt9EJ6/SRwzGWDsTFZyJbwFm1cSaUAka+vMzMpr4iAZ4KxQGNcSlG8itQ5l -XCRxhdatk8o3PaLtfLfub/GT7RWRmDM= +MIIEMjCCApqgAwIBAgIQGGgH4L9iQ2Oncm+dITl+LTANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTI4MTk0NzQwWhcNMjUw +OTI4MTk0NzQwWjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQC2mx3eV5YFmQKbKMEdkZN8LL3GFTMzKvE0jUQeahEEFadJ0f8q +PyV8G71DnJ0cbj7iHzxV4QNYypl60U1JgGfeafGnYK7PyUcM8iz2TIVdVvaH/jg3 +OOhOPHlAG+R3M0Yo1nIC/vPdDBq1zVsamIYmG0kqSzz6YVGEqYZF525eNmYIwGIu +A3L80etRoqTgZ2cjTFWb061/FQ8i9DxsiyeEO4eTWxf+l0qTLBj/gjAk72hhX09s +p7AL+EWF6O0eKxfc6Azfluo/CiaIpy+gBMXGpb8z0gmCzEqfAzle18l6imCGg7Pg +urkVd8QgOUc9dFh4AWQ3z/cTAX5AE+80Mn1C77pnq7jDGa67Sb8Rs/VNWVQxViy8 +8QEuak4MwS2RclmWnFmgB30MkMgN+Tgp9ZMRa/ubKRpcRb4MNXM/srU3O0Vz63wx +CuF/ImOM1Z6LoQtO9fTtVYYg89LU6umezIte1ENuRCVCtbcOTg9hvC/T1bohB837 +0TT0ZrppV+kfKtkCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 +d28wDQYJKoZIhvcNAQEMBQADggGBAJBC6OT0hIvlEp9EE35n3sMqgcVJluad0o3H +h1tpAl3o+5DSjZRI7G/ePNDP/0K2x5xv1mZUzxnbAAqY0PI4Utv/1eMzpea9Y1Rv +2tJIyuzcSSd+TVUTb5qeQWVhYvNFMCAZGPs/17X8Q2uifhmrZXM0TsD7aOt420om +bbOOspo1KT5fbOt7W8bktSP7nFsyxlaqsb8AmqqUBIdA/UBn50SoWIG+OSEZTonE +YMRQ1Y+X1H/SFCkn6du5K3PR7B5ppBYeXPp8YmRnSwQ1BAP0Tm3QgW3viINTV3y+ +STJw4DTK1Dm04fKnIbnx+dUsAs+cBbTo0aRh85Ji9QNK9vdtiIomKpBgTaAusOnK +OjBnL266afFhfYDngbiQA+cX1Az/HnAntv/4LBYfaAdfv8rnR04bm3Ddmlmxntqy +m0/tqz80UVZ3/6V6yvGH7LLvl+z/KsHdxQbffJLaVdoex2xc1u6q3Z2hwsXteN85 +AfZanLIX0KQtbmwoaQQphW/5Jt9w/g== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index 3c9ede6..a4972cc 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index 0c9ed91..7fd489a 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index f9890d7..9ca44f2 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index a412382..0cef313 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -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 -OwCJLhCcE9ODo7I+PstsVvk= +CSqGSIb3DQEBDAUAA4IBgQCiYU/ZPBbUEBVqBYEqs1Ec0tBEw9bBoFv7xujzpHKP +2XibleAIxalVyIHvMui7W43SmJieX2HU6zKzij5nAayBW5FKG59zlfw+q8k00nLv +qhnsVsJjNdO7HJz/P4yvnQGx1i0l5oNGkiSzewsuhFUbu60QQrchR0XFXdgtRyjW ++hwyp3NAN1l0VgVGMCalnSJn4FrY+9AabFER9HFGHM8ugFGD1ukgeeTLSAclRoHw +IYAk3tCPDqcb7ka1cZZflkb0XIGZ6bXoikRCBNbTiHIgXISYsiv9R6+57vkb2w/v +qgYkAt+dSVToJdeK99b3QeFqdczICGr5cmdo6hfrs+kk4vLY5pRdYqP7JRgLOCSt +QrQ6wBxMUAzAl3C/8dBObLcCUzTDuXRbWcCHWKjGTDU9BVkrMiUJeu973Cl4Y2JO +jl3DCdmyJyZBwfLS18+R4ed4z9VYk6Ocph/Okc2ksyQ8eMG+WkOFSsL8xOXMD/ZD +sy0Y7g5ho8nW2AkVoxxaDLo= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index 68c7997..c6fc16e 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAq1FD0kvkqDWKXQQqYE8W -jvVjxs5EtnbtlIOWA0h8frL1OWhu2MN4lyKoDhClKt791FpIMTudFTv9T/A79Q/u -vWmJVoYMmVFQCbfUGrCfd2Kj5ZCYvMGyC1M8wxwnaenkhHT92PwlsvpP7b+6I82i -EGDkr4FKXuGksjkQ021NzTb6txwg4aBLsTSjnM3CkvDYHDoxkxRoZ20SfMaBjy1l -Dit0X2M/dAbyUblvw+Sk/3NmVabbFl+vnNSqOlMAZ4ronvJMwBzwJUarhPtEGFSr -Xl3U7bMlZZ/9hYl3InQlkbrWVFD68qPfnh6cX+jsP/Tc7vgmy8dYfl8ieWr75Gc/ -LzF8oLrw8/7BWpfpLyzsQ8KPZz8nXXi1CF9QxrPJC1uM+6uB+WxEMs4vV6c1/lUL -U2pQPQ0vSdbOXgsvzZYyC6HKBA3TKalSMXtCzHNe7M1VKLlagxRV9ct8B6UxvBED -CTmSW3JZgW/lfNM2lNDxB0EqxPg9XrYwZkcNY7b2PvHZAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2AVjsaCPzjJMFTrVJ0YK +30zONsne99wQSrBs/S2VO7PT6MQF5pJeMC6Ogi05dlC7ln9VZ/P13hofJUphJ5L/ +W1fMl3Qu1v44bECyi1nKbeZcFo0AlHRfVl2mQg1T20+v98iadDxU4ObdIWR/Th4p +CoMtKNiscTrSb06jze1uWPtSFsf+SaRXWgG3SbiLQcMQRKwReg0OjdBzVeIG8/ol +RhSMIvhNDVyYf9xicAcMp8IweA4accuPZnXge/2PRDNLb1iixxTW52DwXRaid6sU +DCQ8qCAvprQtTpRA/oIvF74/8z45YXrEysy1XcMAo3IvqJJbIa6xPvSrpeyNu3hF +FEkHw4rNkCtrQMSxKU9NzVyXHK+1ettIpWuYKFKNtnWLX9neIEXh9OF7174lI/uR +p07XRRyCCRNiS3/nwjjjkS0DnLHA9J1qawpfeRhU/piSdZ5EnTVfIPXI3ckzUlHb +J4OfYjedTB5zSvOFWlLlLnRQVy4n0/qekqv0lYcs6eVLAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAW6Ni/AqxkH8KCfVpops8HWynENycoi0A -eNsyrRLdD9TanpNjmbHYnXHS3XnI6kJNkooi0n18zP40PWEA+JT5IVShIM4u+stV -Kk4HreaKdrtkfjVoFjHF/IgQUOQ/W3dNK+9XCe+7+lfw1P84ugKfb1jKsGdJgDFB -CWDKpMNyDvLdgpAGIuogaeiW5DlnskFhzr0yf2JPo+KRUa6iScKOIv6oZCC70ECP -irWzOQROcC2E2Zvhd7t1I2pdMDhUbv/C9vd2AFbfyQraEF9rSYe/l3DGldg4C+0v -T3FhiLUtgNmneM+WiC5LUA3vnYDlfxuXTyAzbs7GUNJsIEdRFfTiyngUf4y0fS3c -ZoSPMDHg7gRDQY8qoAoUiW7mDH67dL2bWy2VxpJbKWXRKOMVhKrrquX7gfFYZfCf -RcjzgIP4/J+LbgxP2QuyRm58ygZzOgZk/9rSn5dGnrY6umeDUKRallsuzXGJz47W -S0hVLUiHr1kIkg1K6eW6uV4oMzOEP6YH +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAufr0fyjkbCEWAm6Em92N+W1mWh7pYG0B +lFJ8QLwMDK3feOM1d2Hyhob+2DaZ+Y65WP6ShC2WMTsSrz6sgxAg5Mqj0C8Ei46s +UAv0jRlFVvSxqBDY/aeNIH3qPMtdRXzipYSE3ZaDqlAhTGRBkJQYSblSeY+fcEvz +RF+I5hxQHBF8B6qzRJwSplt+pr3815BctgbiphKwuY/8nu4k4hMC8mAFFAJjVqqM +Xw969OYOBsidyxK5TFf/BM1El14eJPBGVhlOb7cTCgatvkvsiHsVmGxbY4wzNvm6 +l3YJ6fAa3HI0rrkNR6AN6FfyYSVcNIKIWw3t3mnMJciEmAskv1pgILrICfq+qW8A +rLOi3xGEH978GNj89K6PA/0d82ZQyWtjqTmo/ZM/Xu6nKuH5p/ELKPJyfQvfUfCa +K3NbcwuYcijqwn0hFdsR+Fd17syd453S3a11DB6SaMUHQTqRHF9hxQfd29t/sKJN +qoDd7/OMMLkjbuiy/IYU35120KE5I8e2 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index 1ade0cb..a4db6aa 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge.egg-info/PKG-INFO b/Task_1/fets_challenge.egg-info/PKG-INFO index f4f9e12..0566eb6 100644 --- a/Task_1/fets_challenge.egg-info/PKG-INFO +++ b/Task_1/fets_challenge.egg-info/PKG-INFO @@ -14,11 +14,11 @@ Classifier: Programming Language :: Python :: 3 Requires-Python: >=3.9 Description-Content-Type: text/markdown License-File: LICENSE -Requires-Dist: openfl@ git+https://github.com/intel/openfl.git@v1.5.1 -Requires-Dist: GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.17 +Requires-Dist: openfl@ git+https://github.com/securefederatedai/openfl.git@kta-intel/fets-2024-patch-1 +Requires-Dist: GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.1.0 Requires-Dist: fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge -# FeTS 2022 Challenge Task 1 +# FeTS 2024+ Challenge Task 1 Task 1 (**"Federated Training"**) aims at effective weight aggregation methods for the creation of a consensus model given a pre-defined segmentation algorithm for training, while also (optionally) accounting for network outages. Please ask any additional questions in our discussion pages on our github site and we will try to update this README.md as we identify confusions/gaps in our explanations and instructions. diff --git a/Task_1/fets_challenge.egg-info/requires.txt b/Task_1/fets_challenge.egg-info/requires.txt index ecf3c20..72ddcc1 100644 --- a/Task_1/fets_challenge.egg-info/requires.txt +++ b/Task_1/fets_challenge.egg-info/requires.txt @@ -1,3 +1,3 @@ -openfl@ git+https://github.com/intel/openfl.git@v1.5.1 -GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.0.17 +openfl@ git+https://github.com/securefederatedai/openfl.git@kta-intel/fets-2024-patch-1 +GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.1.0 fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 912c614..e7c1ace 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -23,15 +23,17 @@ data_loader : defaults : plan/defaults/data_loader.yaml template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper settings : - feature_shape : [32, 32, 32] + feature_shape : [128,128,64] #[32,32,32] task_runner : template : src.fets_challenge_model.FeTSChallengeModel settings : - train_csv : seg_test_train.csv - val_csv : seg_test_val.csv + train_csv : cla_test_train.csv + val_csv : cla_test_val.csv device : cpu gandlf_config : + problem_type: classification + label: None batch_size: 1 clip_mode: norm clip_grad: 0.1 @@ -45,26 +47,25 @@ task_runner : grid_aggregator_overlap: crop patch_overlap: 0 learning_rate: 0.001 - loss_function: dc + loss_function: cel medcam_enabled: false output_dir: '.' metrics: - - dice - # - dice_per_label - # - hd95_per_label + - accuracy + - recall model: - amp: true - architecture: resunet + amp: false + architecture: densenet base_filters: 32 + norm_type: batch class_list: - 0 - 1 - 2 - - 4 + - 3 dimension: 3 final_layer: softmax ignore_label_validation: None - norm_type: instance nested_training: testing: 1 validation: -5 @@ -74,8 +75,8 @@ task_runner : parallel_compute_command: '' patch_sampler: label patch_size: - - 64 - - 64 + - 128 + - 128 - 64 patience: 100 pin_memory_dataloader: false diff --git a/Task_1/plans/cla_plan.yaml b/Task_1/plans/cla_plan.yaml new file mode 100644 index 0000000..e7c1ace --- /dev/null +++ b/Task_1/plans/cla_plan.yaml @@ -0,0 +1,142 @@ +# Copyright (C) 2022 Intel Corporation +# Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. + +aggregator : + defaults : plan/defaults/aggregator.yaml + template : openfl.component.Aggregator + settings : + init_state_path : save/fets_seg_test_init.pbuf + best_state_path : save/fets_seg_test_best.pbuf + last_state_path : save/fets_seg_test_last.pbuf + rounds_to_train : 3 + write_logs : true + + +collaborator : + defaults : plan/defaults/collaborator.yaml + template : openfl.component.Collaborator + settings : + delta_updates : false + opt_treatment : RESET + +data_loader : + defaults : plan/defaults/data_loader.yaml + template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper + settings : + feature_shape : [128,128,64] #[32,32,32] + +task_runner : + template : src.fets_challenge_model.FeTSChallengeModel + settings : + train_csv : cla_test_train.csv + val_csv : cla_test_val.csv + device : cpu + gandlf_config : + problem_type: classification + label: None + batch_size: 1 + clip_mode: norm + clip_grad: 0.1 + data_augmentation: {} + data_postprocessing: {} + data_preprocessing: + normalize: None + enable_padding: false + in_memory: false + inference_mechanism : + grid_aggregator_overlap: crop + patch_overlap: 0 + learning_rate: 0.001 + loss_function: cel + medcam_enabled: false + output_dir: '.' + metrics: + - accuracy + - recall + model: + amp: false + architecture: densenet + base_filters: 32 + norm_type: batch + class_list: + - 0 + - 1 + - 2 + - 3 + dimension: 3 + final_layer: softmax + ignore_label_validation: None + nested_training: + testing: 1 + validation: -5 + num_epochs: 1 + optimizer: + type: sgd + parallel_compute_command: '' + patch_sampler: label + patch_size: + - 128 + - 128 + - 64 + patience: 100 + pin_memory_dataloader: false + print_rgb_label_warning: true + q_max_length: 100 + q_num_workers: 0 + q_samples_per_volume: 40 + q_verbose: false + save_output: false + save_training: false + scaling_factor: 1 + scheduler: + type: triangle_modified + track_memory_usage: false + verbose: false + version: + maximum: 0.1.0 + minimum: 0.0.14 + weighted_loss: true + modality: rad + + +network : + defaults : plan/defaults/network.yaml + +assigner: + template : src.challenge_assigner.FeTSChallengeAssigner + settings : + training_tasks : + - aggregated_model_validation + - train + - locally_tuned_model_validation + validation_tasks : + - aggregated_model_validation + +tasks : + aggregated_model_validation: + function : validate + kwargs : + apply : global + metrics : + - valid_loss + - valid_dice + + locally_tuned_model_validation: + function : validate + kwargs : + apply: local + metrics : + - valid_loss + - valid_dice + + train: + function : train + kwargs : + metrics : + - loss + - train_dice + epochs : 1 + + +compression_pipeline : + defaults : plan/defaults/compression_pipeline.yaml diff --git a/Task_1/plans/seg_plan.yaml b/Task_1/plans/seg_plan.yaml new file mode 100644 index 0000000..912c614 --- /dev/null +++ b/Task_1/plans/seg_plan.yaml @@ -0,0 +1,141 @@ +# Copyright (C) 2022 Intel Corporation +# Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. + +aggregator : + defaults : plan/defaults/aggregator.yaml + template : openfl.component.Aggregator + settings : + init_state_path : save/fets_seg_test_init.pbuf + best_state_path : save/fets_seg_test_best.pbuf + last_state_path : save/fets_seg_test_last.pbuf + rounds_to_train : 3 + write_logs : true + + +collaborator : + defaults : plan/defaults/collaborator.yaml + template : openfl.component.Collaborator + settings : + delta_updates : false + opt_treatment : RESET + +data_loader : + defaults : plan/defaults/data_loader.yaml + template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper + settings : + feature_shape : [32, 32, 32] + +task_runner : + template : src.fets_challenge_model.FeTSChallengeModel + settings : + train_csv : seg_test_train.csv + val_csv : seg_test_val.csv + device : cpu + gandlf_config : + batch_size: 1 + clip_mode: norm + clip_grad: 0.1 + data_augmentation: {} + data_postprocessing: {} + data_preprocessing: + normalize: None + enable_padding: false + in_memory: false + inference_mechanism : + grid_aggregator_overlap: crop + patch_overlap: 0 + learning_rate: 0.001 + loss_function: dc + medcam_enabled: false + output_dir: '.' + metrics: + - dice + # - dice_per_label + # - hd95_per_label + model: + amp: true + architecture: resunet + base_filters: 32 + class_list: + - 0 + - 1 + - 2 + - 4 + dimension: 3 + final_layer: softmax + ignore_label_validation: None + norm_type: instance + nested_training: + testing: 1 + validation: -5 + num_epochs: 1 + optimizer: + type: sgd + parallel_compute_command: '' + patch_sampler: label + patch_size: + - 64 + - 64 + - 64 + patience: 100 + pin_memory_dataloader: false + print_rgb_label_warning: true + q_max_length: 100 + q_num_workers: 0 + q_samples_per_volume: 40 + q_verbose: false + save_output: false + save_training: false + scaling_factor: 1 + scheduler: + type: triangle_modified + track_memory_usage: false + verbose: false + version: + maximum: 0.1.0 + minimum: 0.0.14 + weighted_loss: true + modality: rad + + +network : + defaults : plan/defaults/network.yaml + +assigner: + template : src.challenge_assigner.FeTSChallengeAssigner + settings : + training_tasks : + - aggregated_model_validation + - train + - locally_tuned_model_validation + validation_tasks : + - aggregated_model_validation + +tasks : + aggregated_model_validation: + function : validate + kwargs : + apply : global + metrics : + - valid_loss + - valid_dice + + locally_tuned_model_validation: + function : validate + kwargs : + apply: local + metrics : + - valid_loss + - valid_dice + + train: + function : train + kwargs : + metrics : + - loss + - train_dice + epochs : 1 + + +compression_pipeline : + defaults : plan/defaults/compression_pipeline.yaml From 1818d331f191bd5bdec03d01d8440775910425e4 Mon Sep 17 00:00:00 2001 From: Sarthak Pati Date: Mon, 30 Sep 2024 08:58:57 -0400 Subject: [PATCH 09/19] Update plan.yaml --- .../openfl-workspace/fets_challenge_workspace/plan/plan.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index e7c1ace..90fa048 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -73,7 +73,7 @@ task_runner : optimizer: type: sgd parallel_compute_command: '' - patch_sampler: label + patch_sampler: uniform patch_size: - 128 - 128 @@ -95,7 +95,7 @@ task_runner : version: maximum: 0.1.0 minimum: 0.0.14 - weighted_loss: true + weighted_loss: false modality: rad From 5763b01ff67a3ad2369acae0a2be658ebfc7b2a2 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Mon, 30 Sep 2024 14:03:08 -0400 Subject: [PATCH 10/19] simplified config --- Task_1/cert/ca/root-ca.crt | 50 +++++----- Task_1/cert/ca/root-ca/private/root-ca.key | 74 +++++++-------- Task_1/cert/ca/signing-ca.crt | 42 ++++----- Task_1/cert/ca/signing-ca.csr | 36 ++++---- .../cert/ca/signing-ca/private/signing-ca.key | 74 +++++++-------- Task_1/cert/cert_chain.crt | 92 +++++++++---------- Task_1/cert/client/col_one.crt | 46 +++++----- Task_1/cert/client/col_one.key | 74 +++++++-------- Task_1/cert/client/col_two.crt | 46 +++++----- Task_1/cert/client/col_two.key | 74 +++++++-------- Task_1/cert/col_one.csr | 36 ++++---- Task_1/cert/col_two.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.crt | 48 +++++----- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 +++++++-------- .../fets_challenge_workspace/plan/plan.yaml | 66 +++++-------- 16 files changed, 444 insertions(+), 460 deletions(-) diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 2c1dcba..08cd856 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRAILS0iFyKkgQoGbmdHFTroswDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkyODE5NDczOFoXDTI1MDkyODE5 -NDczOFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ -bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEArNT3RK1YJqD6fvDwm2RtcCabpNJFMnfKR94y6pn8nZth1X/l -eW9O4vfrAVkVoW2GMKpjtq5OP9ihoOaBm7QwZRDE0ofqfK9qGUZROiZrVIUuS6Pc -c0LoobmnX2jah8fLhzT0PmUBM2Is5o6iO9RH9VZB3BmxngTtHm5y9zkj9YgazC6Y -UbUIDHvPYVzHQA4x1EAg/NQEpmhzQ3tcLGEfZHviFGHOxxtK36itWG8RkugxDEFX -xACyo9cjh1b82FrOHVnFryyCbQVkd9VtfEph3vAPaJfeOySdW1p+mdUT6rkdeiSd -f7f0asu3KaVHPKW1ljUrwfvqzjW9v4jlNI6/5wxsxRGwFYH/ZIJlFg3bOHMWAuDe -QzHZwJYuXtc/LGCIDmtU51RcbGLZNOv0F3IWBJlxA7N4gWXT43K2rhtl+Rbbt4Y3 -cMcnEDZ3CD29ZtFtvA+C+AG4RCBnNj9lG40ie/0UqO+rh4Yr9B2mGy7f6xxM46tq -7NPGJxB2NXXdUuVjAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBABwHuS2hfN0/oYHP8oPJteZq6ETQRnSHpmWNwdZTdRez5kY7Uimh -zo5zzzQXIHRaCobz7cmFw+3VVTrrEKKC8I4lQUZC2SiWvF2rDhALadR0r04j0zc4 -aJ3DumsXYJRuRAuzA5hPdxb40bVSSXYj0YPzWi6qc3Nuiae6d/gUx8b+GuwwIYmH -KBEizQYQFjK7pPwFdyrIbIppOhab6nhIeBG0yH/lL5zKwBnCvN0L/rUBGe1L3tNJ -IOuLuaIR9epq4k2eS0ipHClPpAauDBe1JwMqcFu/5F2Fs9xNbNd090DwgJqj00Oj -pPm2Q+2EDMFtI6P/u7ptT7d8K/JpLQxfgap73dc4rTs31r8vfbip/gd0lryXkJiF -HA2ZCEBtIhGTWBApebsmLY3rr2GAdm7PTrTfc0PJ8sRmKG2lr1coE2DoGUhY1spZ -RwLv85K8HM9oaExJ5Fx8BPEC/YxFv7Feyx35TVmStou/DCp1szcRzcDcL7RAcnrM -gsHte7PWhLlhNA== +MIIEhTCCAu2gAwIBAgIQCTT5t5pkT+agIQEXUo/PejANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMTU5WhcNMjUwOTMwMTYx +MTU5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu +YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQCy/anmcU7bCYYtuA5AuQXzuYfbYbvJTSEomTRumzEtVLIrnpkY +kGqNzZOdcChauRufLo7EjKByW5LNBJzUF7uqNKjDnS4fJG962FqLyGxw+xRvNGgX +qtupBo+GG+PG0eo3Zy+bnofc5qD/8aYenncdMlMDhInjm/MmHY7FrSJRf7snAKQg +egWcHXNG++H9nK1nfCyNl7WgLtts+KZHBH5N+msDPHyynIjg02hRiS2+AQ88baHX +z5qBkMd896PpaXXK82ugG7WOSXvSHRtRPVjf+Qf7hELi8fDFszhyNC+5B28G7blH +c/5cKgmhLTzpujw6LP1GWivEfYj/y5dAksR20Gy5CWj/148xzOTxTra9X5OgExJL +WvJGWoHrglWuggIveLRymHqRvyHSUAKHXuFyuHM8jB4sTWVeN1mg8TI0YxFmoZRQ +QRKGNNf+BjBo5wgE/Ci6GSA1voCymE9SMwhyE9ygr4uGg1dRHvejAbOls0v3XuZb +r3QYHQpqyTfTKGECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEApem0vP3ZlZFScUwzll2A2YIE9NK7N1Gx1OqvB+MReLf79FFEkAZo +fPoW8XDUl531DuN5VYw7tOQNVkzEdE5Mpt4O+YKtESKQKF5AyTREWxezAz5Bmd90 +IOFgV4PDCMzPD/cnBJnvROFB5BVsrUEj1JZfhX6DYM7wQ79SRokF5q8oKQ40EB1e +Zu73oLpcq/j6BgB3d7r7fpuE6UM16VKCeB7+kZX3sbqZlxdBq2AwtnRyQMittxqT +hzFrDl4rIoCEHqBVh8uuZAhFeXkGDZ7ikFz/B/iCEqtm7YZHUiFgGrR/lV/xwSmY +zDnKRvfY01yC4wTgP5deBmsjunjNoRGEb/6QBApKMEqEz8BjlwaL8sZvn0w1VPQC +OB1Uv/c3hDOC+woixFCuM2RqdasddsOysmDynqsJF5c47/EpM7ByysLBxDcnN8hp +Y23E/PXDJbRgKi+aQF4UsR010w3hiWBdlw3pTtOjMuT5fVOSUxiwZadL6m82i6P+ +3J/VsqmYGh1f -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index 7aaffd2..4149bc5 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 4680f0b..76d43d0 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQcSwjO927RKGnAGyNaO9DDjANBgkqhkiG9w0BAQwFADB0 +MIIEizCCAvOgAwIBAgIQBrQDKnGyT26F9PdxM7Q2PDANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTI4MTk0NzM5WhcNMjUwOTI4MTk0 -NzM5WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUwOTMwMTYx +MjAwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQCkaWboxZHWa6dx0vfH2Dk2sXO2E5HakZotTYOFrHDO -yxd8KMbrUvl6KVB6zvFgfes8WcMv783sE1Ljrs6DTWUERtm+fjTGHmvvH0/lpbru -dl5Srv/9NbXUqqTzS1cNI0qWuwbdemTzbPJIX4m2ACuooDg/LgmZp2kv7JexJzDe -KdeO2nXrZPgw3udzk6ZrIN5XHN5qot/n01vdgbx40k+i7j7tZcuqnIsAD1zpOffg -sbGafAF0EUzJnCGEAuNW37XuG4RziWKrfqZ8SyjGQphJ2gvFHAynpnpP6+I8pV0h -gf9TAP6mCI3FziWMOft6dJCBRc1EpVEYemlTPA9zS98CYAFoAhwOTxvFfvbQRmZG -/xiGu9PRKg1E7oDzxPE5KbdFcoOWqLS+pP99HqU6A3RKN200XdODRtm8wsxB7YOr -K3LvnajVcn5TbqqzmlztLsTco8vv4y1l2GFsWIaA62SJjvBjotQEKnIMp75JejK2 -rqo0gGFd+YrSKm3r2gFPwKMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAR6egjXKHKGG8tKMbaRdYHMojDbngq/3mPjONVB6GyhfQ -o7vNh1rS7P9YgpjhnTm4BGe8UqHGjtb1IiWJE8KTnZj2lLePcR+8SkJ5czyeVaiH -jI+bny0Pt9u+24ZGANSg93y2CjAVPKijpElv2EwnqajcugWTCJXkjN8fJumLnmje -Ug/IlogFDAF04r9T3FSGJb68Ww9we9oyhYpI3gsEuqxua4W+6/j5lPMWpd2npS5Q -2JAysN3TeeiBwzZUkC/HClFrmvXo+6LJtDXZ4RduT3KXFpONvQ1rDtbj00dpGhMB -gu+M6P6YnyOaTWJqO1mWUrxEWCHSze/5Jrlr/bm5FdaPAa5HkWsNxQzXWuLbo0WN -07khHhtuJNWAh6onRDgrdWZu8nQYj8kKUtfWs22eyDGWspjkzYaRIOUCMczMiybu -4HNPKuAtjG62Mld+pa9iRLFf+NR017nd4kpuof3ySJ0bCoagPWrN3qas9o9Iu92f -nCl03a/JtUg5wKPrJj4h +AQUAA4IBjwAwggGKAoIBgQDFpVn3eYfcGYusf3W+Com81jjzbGB9W16wjIdjZW3O +ydvaUlDGteTVFHDqYx2Ow7ujz4gHnmmiHrt91NIs4Q5Pyfl8e+CgT4Qlt1IgJ5OA +UE27Pt3JuwJGBCGdSLH32FG2+YovTr9Ux8Kie/RW+tqXfovEFixsxtgMcr192bLT +CyF5A/VzSaZrtZiCPs1aC7dA9ocbvjqhufC4eDT1hkFPLxQ2jpcm22IQ57XT8eUQ +BQaH2ZS5KaNo2zpaQ+pASMmNX7nryEhyniX7e1iJhdIgwzutdIN/Cti/cdxN+cUe +DzOv9ELGkAXrraGeJ5AqZPSc1TUM22Yx9yHlAqhfYrQwcH0tFhPyl+6yCMuZeUBD +263kvtB5AR4/wPL2LYwZuRJQTLl/uB7AUYfh/1Hp6qJahkF69/rxgeHw8RbxZu15 +JoGUe8zlbiGK8B1hSay4FdPI214SmZiLskISKHHb4P/7H1QBV1rLaF3osdgr9GFp +MbmBpoLrWFRwiUQrpDn3C00CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAZW1Sl0TdJuVKokij9ODA82QK3SrCflOBQwBmX0eNXh/u +M6lDCDwR274S2X0Ud/f/CJgEChrRXIkL6PZZ7ERwV07twVd2d3QCYSSBlbTaoXk2 +WQ5HlM8GOATPaXhn+OB5g8hOJxDnWMWnFIgxlhJmyRGo+EY5bu0SEj33vh05zbJ2 +5jISitiWUHNCFaw2M4E82FRq2yRVlec6iddo8/NrlHoeWM3AWP7w1OiZxs2jVsdN +rCJwBod+FQ2fk+mGMuDbZWLCbkFM4INHNA8rWxfbqc5MgJMB2I4dzNTarBPY2Ap6 +vv43fwfT5kr5ZXsin8/93scQaFKPUrfRYGSr025tvWMIb4dS6fj5E5srxv6zB2Gg +dyo6d3lufqs3fjLDkBZKtg71ucrJeOExIVPhLAaA0V8goRKpaRNysvZfennMr1Up +puy9fQQA2AeEiZKo6TIXqewdJkoyl69NCo4W+Wxl+mmPY6cWc5e/br0EOP2ZERzR +SeJ+HxHQjG+6Rj20BCKc -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index a43425e..a9ab06e 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index dce22f5..ba51376 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index ad8982f..50ee8d0 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhjCCAu6gAwIBAgIRAILS0iFyKkgQoGbmdHFTroswDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MDkyODE5NDczOFoXDTI1MDkyODE5 -NDczOFowdDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEXMBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJ -bmMxFzAVBgNVBAsMDlNpbXBsZSBSb290IENBMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEArNT3RK1YJqD6fvDwm2RtcCabpNJFMnfKR94y6pn8nZth1X/l -eW9O4vfrAVkVoW2GMKpjtq5OP9ihoOaBm7QwZRDE0ofqfK9qGUZROiZrVIUuS6Pc -c0LoobmnX2jah8fLhzT0PmUBM2Is5o6iO9RH9VZB3BmxngTtHm5y9zkj9YgazC6Y -UbUIDHvPYVzHQA4x1EAg/NQEpmhzQ3tcLGEfZHviFGHOxxtK36itWG8RkugxDEFX -xACyo9cjh1b82FrOHVnFryyCbQVkd9VtfEph3vAPaJfeOySdW1p+mdUT6rkdeiSd -f7f0asu3KaVHPKW1ljUrwfvqzjW9v4jlNI6/5wxsxRGwFYH/ZIJlFg3bOHMWAuDe -QzHZwJYuXtc/LGCIDmtU51RcbGLZNOv0F3IWBJlxA7N4gWXT43K2rhtl+Rbbt4Y3 -cMcnEDZ3CD29ZtFtvA+C+AG4RCBnNj9lG40ie/0UqO+rh4Yr9B2mGy7f6xxM46tq -7NPGJxB2NXXdUuVjAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcN -AQEMBQADggGBABwHuS2hfN0/oYHP8oPJteZq6ETQRnSHpmWNwdZTdRez5kY7Uimh -zo5zzzQXIHRaCobz7cmFw+3VVTrrEKKC8I4lQUZC2SiWvF2rDhALadR0r04j0zc4 -aJ3DumsXYJRuRAuzA5hPdxb40bVSSXYj0YPzWi6qc3Nuiae6d/gUx8b+GuwwIYmH -KBEizQYQFjK7pPwFdyrIbIppOhab6nhIeBG0yH/lL5zKwBnCvN0L/rUBGe1L3tNJ -IOuLuaIR9epq4k2eS0ipHClPpAauDBe1JwMqcFu/5F2Fs9xNbNd090DwgJqj00Oj -pPm2Q+2EDMFtI6P/u7ptT7d8K/JpLQxfgap73dc4rTs31r8vfbip/gd0lryXkJiF -HA2ZCEBtIhGTWBApebsmLY3rr2GAdm7PTrTfc0PJ8sRmKG2lr1coE2DoGUhY1spZ -RwLv85K8HM9oaExJ5Fx8BPEC/YxFv7Feyx35TVmStou/DCp1szcRzcDcL7RAcnrM -gsHte7PWhLlhNA== +MIIEhTCCAu2gAwIBAgIQCTT5t5pkT+agIQEXUo/PejANBgkqhkiG9w0BAQwFADB0 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw +FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMTU5WhcNMjUwOTMwMTYx +MTU5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu +YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQCy/anmcU7bCYYtuA5AuQXzuYfbYbvJTSEomTRumzEtVLIrnpkY +kGqNzZOdcChauRufLo7EjKByW5LNBJzUF7uqNKjDnS4fJG962FqLyGxw+xRvNGgX +qtupBo+GG+PG0eo3Zy+bnofc5qD/8aYenncdMlMDhInjm/MmHY7FrSJRf7snAKQg +egWcHXNG++H9nK1nfCyNl7WgLtts+KZHBH5N+msDPHyynIjg02hRiS2+AQ88baHX +z5qBkMd896PpaXXK82ugG7WOSXvSHRtRPVjf+Qf7hELi8fDFszhyNC+5B28G7blH +c/5cKgmhLTzpujw6LP1GWivEfYj/y5dAksR20Gy5CWj/148xzOTxTra9X5OgExJL +WvJGWoHrglWuggIveLRymHqRvyHSUAKHXuFyuHM8jB4sTWVeN1mg8TI0YxFmoZRQ +QRKGNNf+BjBo5wgE/Ci6GSA1voCymE9SMwhyE9ygr4uGg1dRHvejAbOls0v3XuZb +r3QYHQpqyTfTKGECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEApem0vP3ZlZFScUwzll2A2YIE9NK7N1Gx1OqvB+MReLf79FFEkAZo +fPoW8XDUl531DuN5VYw7tOQNVkzEdE5Mpt4O+YKtESKQKF5AyTREWxezAz5Bmd90 +IOFgV4PDCMzPD/cnBJnvROFB5BVsrUEj1JZfhX6DYM7wQ79SRokF5q8oKQ40EB1e +Zu73oLpcq/j6BgB3d7r7fpuE6UM16VKCeB7+kZX3sbqZlxdBq2AwtnRyQMittxqT +hzFrDl4rIoCEHqBVh8uuZAhFeXkGDZ7ikFz/B/iCEqtm7YZHUiFgGrR/lV/xwSmY +zDnKRvfY01yC4wTgP5deBmsjunjNoRGEb/6QBApKMEqEz8BjlwaL8sZvn0w1VPQC +OB1Uv/c3hDOC+woixFCuM2RqdasddsOysmDynqsJF5c47/EpM7ByysLBxDcnN8hp +Y23E/PXDJbRgKi+aQF4UsR010w3hiWBdlw3pTtOjMuT5fVOSUxiwZadL6m82i6P+ +3J/VsqmYGh1f -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQcSwjO927RKGnAGyNaO9DDjANBgkqhkiG9w0BAQwFADB0 +MIIEizCCAvOgAwIBAgIQBrQDKnGyT26F9PdxM7Q2PDANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTI4MTk0NzM5WhcNMjUwOTI4MTk0 -NzM5WjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUwOTMwMTYx +MjAwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQCkaWboxZHWa6dx0vfH2Dk2sXO2E5HakZotTYOFrHDO -yxd8KMbrUvl6KVB6zvFgfes8WcMv783sE1Ljrs6DTWUERtm+fjTGHmvvH0/lpbru -dl5Srv/9NbXUqqTzS1cNI0qWuwbdemTzbPJIX4m2ACuooDg/LgmZp2kv7JexJzDe -KdeO2nXrZPgw3udzk6ZrIN5XHN5qot/n01vdgbx40k+i7j7tZcuqnIsAD1zpOffg -sbGafAF0EUzJnCGEAuNW37XuG4RziWKrfqZ8SyjGQphJ2gvFHAynpnpP6+I8pV0h -gf9TAP6mCI3FziWMOft6dJCBRc1EpVEYemlTPA9zS98CYAFoAhwOTxvFfvbQRmZG -/xiGu9PRKg1E7oDzxPE5KbdFcoOWqLS+pP99HqU6A3RKN200XdODRtm8wsxB7YOr -K3LvnajVcn5TbqqzmlztLsTco8vv4y1l2GFsWIaA62SJjvBjotQEKnIMp75JejK2 -rqo0gGFd+YrSKm3r2gFPwKMCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAR6egjXKHKGG8tKMbaRdYHMojDbngq/3mPjONVB6GyhfQ -o7vNh1rS7P9YgpjhnTm4BGe8UqHGjtb1IiWJE8KTnZj2lLePcR+8SkJ5czyeVaiH -jI+bny0Pt9u+24ZGANSg93y2CjAVPKijpElv2EwnqajcugWTCJXkjN8fJumLnmje -Ug/IlogFDAF04r9T3FSGJb68Ww9we9oyhYpI3gsEuqxua4W+6/j5lPMWpd2npS5Q -2JAysN3TeeiBwzZUkC/HClFrmvXo+6LJtDXZ4RduT3KXFpONvQ1rDtbj00dpGhMB -gu+M6P6YnyOaTWJqO1mWUrxEWCHSze/5Jrlr/bm5FdaPAa5HkWsNxQzXWuLbo0WN -07khHhtuJNWAh6onRDgrdWZu8nQYj8kKUtfWs22eyDGWspjkzYaRIOUCMczMiybu -4HNPKuAtjG62Mld+pa9iRLFf+NR017nd4kpuof3ySJ0bCoagPWrN3qas9o9Iu92f -nCl03a/JtUg5wKPrJj4h +AQUAA4IBjwAwggGKAoIBgQDFpVn3eYfcGYusf3W+Com81jjzbGB9W16wjIdjZW3O +ydvaUlDGteTVFHDqYx2Ow7ujz4gHnmmiHrt91NIs4Q5Pyfl8e+CgT4Qlt1IgJ5OA +UE27Pt3JuwJGBCGdSLH32FG2+YovTr9Ux8Kie/RW+tqXfovEFixsxtgMcr192bLT +CyF5A/VzSaZrtZiCPs1aC7dA9ocbvjqhufC4eDT1hkFPLxQ2jpcm22IQ57XT8eUQ +BQaH2ZS5KaNo2zpaQ+pASMmNX7nryEhyniX7e1iJhdIgwzutdIN/Cti/cdxN+cUe +DzOv9ELGkAXrraGeJ5AqZPSc1TUM22Yx9yHlAqhfYrQwcH0tFhPyl+6yCMuZeUBD +263kvtB5AR4/wPL2LYwZuRJQTLl/uB7AUYfh/1Hp6qJahkF69/rxgeHw8RbxZu15 +JoGUe8zlbiGK8B1hSay4FdPI214SmZiLskISKHHb4P/7H1QBV1rLaF3osdgr9GFp +MbmBpoLrWFRwiUQrpDn3C00CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQwFAAOCAYEAZW1Sl0TdJuVKokij9ODA82QK3SrCflOBQwBmX0eNXh/u +M6lDCDwR274S2X0Ud/f/CJgEChrRXIkL6PZZ7ERwV07twVd2d3QCYSSBlbTaoXk2 +WQ5HlM8GOATPaXhn+OB5g8hOJxDnWMWnFIgxlhJmyRGo+EY5bu0SEj33vh05zbJ2 +5jISitiWUHNCFaw2M4E82FRq2yRVlec6iddo8/NrlHoeWM3AWP7w1OiZxs2jVsdN +rCJwBod+FQ2fk+mGMuDbZWLCbkFM4INHNA8rWxfbqc5MgJMB2I4dzNTarBPY2Ap6 +vv43fwfT5kr5ZXsin8/93scQaFKPUrfRYGSr025tvWMIb4dS6fj5E5srxv6zB2Gg +dyo6d3lufqs3fjLDkBZKtg71ucrJeOExIVPhLAaA0V8goRKpaRNysvZfennMr1Up +puy9fQQA2AeEiZKo6TIXqewdJkoyl69NCo4W+Wxl+mmPY6cWc5e/br0EOP2ZERzR +SeJ+HxHQjG+6Rj20BCKc -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index f46d52a..4130c7e 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRAJVMjs7ryEmSnkltnonVbwgwDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkyODE5NDc0MFoXDTI1 -MDkyODE5NDc0MFowDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAnZ7DjWqOM+6dwFC5ZJvJs3SyFo/uw255+RFqrhJ3n0bwT2LN -qHc/7VlAmZFMnCYuGtPJtDhNcAp+2SwOWgJbZdMHPg9t1VV7jezlQGjRBhXdXApg -m1FZzOzxyOjo03pWTKJBHHfdNgfn8xFBBxIQ5PEjWjzOg2w/BUzoaxpdkyIKzING -Ueepkzj/VFE48CF5+9DYgbfUJb6TOlcPpw5D7Xk0HOO+DPbDTimxgphkGhGqkB9o -jS87jvCj4ywfVOY2R2qkftc3M9uYdrlLi3hRPVhz1PEvP1bsrc0N9s+5UkmGevqB -XRDsw9+b8MQPgZhY3KWM7AUsYNGHAf6Y00B/6KasYDX2rGDKQ9gdAyTWSMRRrVIV -OI0c4ExWwOtcq2wYyYZKXPqORZmqMHFoFqYxiC763aKJcf27kEmRcNG820qmVJWU -QZltGoryTePWuF2qSR0zp6xtLDFhYblhVK9QBHIzy0zkv3dG10LBcGyZHJ/dDGCq -KEBhn5o+aJ7E6EC5AgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -b25lMA0GCSqGSIb3DQEBDAUAA4IBgQCSez36hi0fXw4W8L6FgNgy0xMl0N/RMqRk -8ocZGoy8HYH5nxASC77YLDMwfAIbrmESWGNyf4snpomhRr8KuRT+JzZN0tA/fJnu -IdNFCnufkODnUQVs+tY58cWwS9gAHGgb8JY7fx50/IZWzo9eg0ugM+W0Iq58Cn21 -ll1DTWwu5yCsy4zwgFX9gJJO74VMtRX8FbVEZ+FuxRO/GVjU282ax7WhGyOp50Zt -3KZ8P10f4oGEi/qrVbvdAITDybmrZC+1djUO/yZ7P5GPU4dnnfKY09V2U8yQ1U6a -qUrbQNRT0JXx5RXZ2P4e43ykTWkQ/0JGt3eNEpqh3k4GLcDZhqjS4ZkBgQwh58Gq -2/zoHoAOkO8B+dUKn7p0Juf+HGaA9oIdcC7ZQbDXXRCSRKkXFmDdzOHcHPhy0f1o -G5nc6JAXgC8bZxa8VJE5GqlOhNujPIe7Qguk9w+F2qMpxHBsh6+aba1UWiPRKRQz -b0BGBzPINzEc3th0x4B6pxx/8JTC7hA= +MIIEMjCCApqgAwIBAgIQFtDXPzKyRvS5GGlK/CuIbDANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUw +OTMwMTYxMjAwWjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQC2K57/98zGAyghjZmSX0loi7SXtdqjwHFtEd43YVXLVtqEcgWc +Sg8fo5UgO2gyZVS60UZElC3V2uOEBrqwMVJUnNF6KKyewRh+LUi2PLymmJw0Hw/G +noHon2WPy2WRZl7rffapR+rvJ4JWZoB2n/kOint+oCL+y3heTrc2Vvzu7GUAbrsE +NcxIn/EvdAe95Qb23Xd/zJqIvKiHneLI4dzMk3zYwCRcXarA3IZkYgp23Z+qE3Z6 +zCK+2H0De28QyV0nj/bAXVfD6K2QfK4890kc41NHkfOCos4NeXmPsTPe7JgfI80U +11bwKDbMkFpi2ogEPZ3vL9gnqgmWH8QXXi+76Rzp5YRrQ860aA1lfsSt24Y6o9Nz +FBznNxe2RoXkurBBaVwCVt59jshn2pkryFaxHcY7wzyMNpzAjLFRjwz56mEQvd8a +jGzLb6K7N+G74zEY1kotxQ6L7Xe5MOiv3vswTN5Jx+MHikY7YqFUbYJ2IbT5WQDF +8Qc5xMdccJqGGP8CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv +bmUwDQYJKoZIhvcNAQEMBQADggGBAAiw8vg+DSMUtswErfGp/K3gMw85NxD0g9ih +1w8NBm2FBXEvJ0rXO8juCp7j6a+XUTAFbH64BkAkvDCKFMIjARGxnJaH+IQnyQeE +IX887jTw29dDdTGzGVYeRjQTG6Nk/XsDW8sBOI+XzMxr6/GvPbznJTozfkhPh0zM +Z+koLqfuqr/eZ4vxkwktspDhW8qhdklKAVinv5vTvtcqwx8Fm5CDrIYeWGrHdnRN +5nwO7Yao394d6hg/RGXPylBwSABAAXNBxpZGPP8e5nQ37vZL1xx/7o9uoNBty7rd +TIKlq5eD4j+/7KO/I4QLB4TeSeMEQW9ERpKagAM8hs9CEGYALeJk895wDpOf+g3h +svp2wbtmrbX/Vyfi/1CWVqLDqG5PuLRszG92AVgkXC8WYINnKvggtQjUzKxU3WcD +baakgUzc0ezdEDe6heobkOZKwUzFdFlghHybyBavCUi0XTX3mdWVBNMYFm/WpiyV +LlwEa5PDhKqfuxxSQYiRXnKFXNmPgA== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index 1a13b7e..a7ec02f 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 07c0517..5f42e2b 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQGGgH4L9iQ2Oncm+dITl+LTANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTI4MTk0NzQwWhcNMjUw -OTI4MTk0NzQwWjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC2mx3eV5YFmQKbKMEdkZN8LL3GFTMzKvE0jUQeahEEFadJ0f8q -PyV8G71DnJ0cbj7iHzxV4QNYypl60U1JgGfeafGnYK7PyUcM8iz2TIVdVvaH/jg3 -OOhOPHlAG+R3M0Yo1nIC/vPdDBq1zVsamIYmG0kqSzz6YVGEqYZF525eNmYIwGIu -A3L80etRoqTgZ2cjTFWb061/FQ8i9DxsiyeEO4eTWxf+l0qTLBj/gjAk72hhX09s -p7AL+EWF6O0eKxfc6Azfluo/CiaIpy+gBMXGpb8z0gmCzEqfAzle18l6imCGg7Pg -urkVd8QgOUc9dFh4AWQ3z/cTAX5AE+80Mn1C77pnq7jDGa67Sb8Rs/VNWVQxViy8 -8QEuak4MwS2RclmWnFmgB30MkMgN+Tgp9ZMRa/ubKRpcRb4MNXM/srU3O0Vz63wx -CuF/ImOM1Z6LoQtO9fTtVYYg89LU6umezIte1ENuRCVCtbcOTg9hvC/T1bohB837 -0TT0ZrppV+kfKtkCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 -d28wDQYJKoZIhvcNAQEMBQADggGBAJBC6OT0hIvlEp9EE35n3sMqgcVJluad0o3H -h1tpAl3o+5DSjZRI7G/ePNDP/0K2x5xv1mZUzxnbAAqY0PI4Utv/1eMzpea9Y1Rv -2tJIyuzcSSd+TVUTb5qeQWVhYvNFMCAZGPs/17X8Q2uifhmrZXM0TsD7aOt420om -bbOOspo1KT5fbOt7W8bktSP7nFsyxlaqsb8AmqqUBIdA/UBn50SoWIG+OSEZTonE -YMRQ1Y+X1H/SFCkn6du5K3PR7B5ppBYeXPp8YmRnSwQ1BAP0Tm3QgW3viINTV3y+ -STJw4DTK1Dm04fKnIbnx+dUsAs+cBbTo0aRh85Ji9QNK9vdtiIomKpBgTaAusOnK -OjBnL266afFhfYDngbiQA+cX1Az/HnAntv/4LBYfaAdfv8rnR04bm3Ddmlmxntqy -m0/tqz80UVZ3/6V6yvGH7LLvl+z/KsHdxQbffJLaVdoex2xc1u6q3Z2hwsXteN85 -AfZanLIX0KQtbmwoaQQphW/5Jt9w/g== +MIIEMzCCApugAwIBAgIRAKBKK2rj60Govy/+ax+iVbswDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkzMDE2MTIwMFoXDTI1 +MDkzMDE2MTIwMFowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAsy0sHs5xyQBoCfpL5yFfboQC0mBYQXBLShqldNIPhnKNTLKd +IlGBfMCW+XiyCb4/eGauuiyVP2e00Y0IWCVDIIcQpYLmcMOEav049FUHKACSSEn+ +xXVfN1bGVXWU89G4MJBGlJcKbgdP7AF0A4n9rYmv3XZDxUxab/OZ/YcTHCYtjsJS +rc9OrCE5M+elIUJjy05BsyXRTdwcR5bU6t906CJP0gh+GUWL9A0DUxbBlc51/RVm +iIyjzAvx9I0rw5ztR46BZotsxsBnl/ZQ5ew4FAH3HyvhgRBSanaQPULI9LUuSEd1 +Eq8dSHyDo7KcGIg4STvDVN+CEZaLSWpCC5TlBekn+ZB2EAqvolO020FHbrWy4lFm +DQhi1v3HKtAv0WY+5ul/eTywg5+fkMXevV4Jtax1RE5gafKIfnQQ7SXglEOUT38X +/wehHl4/Venf0+DoIVGTzDI3B6X9GJnRzeFeRQV1RgmKEqmSpdJvPqrKeL+cEIzj +nmnoaaSFXaNpSj+NAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQAwFz5ZxWk2/Za4EY6/eVRaUXjT8a1pFAAQ +jY3f2FrMsS4oeQwsZvd0RnBdNltsuLKSLSKmz2uoblNvTT+2WC73nqUZ1DZURB2u +3diyZCwqMsW6ToXF6ZTtkE6HBcbCV3S6+p8GUq+EYb9MImEOBZhC+Kk31uLjElJt +L/SwvRHHRNcvsRljUDU2uoton90W4nmynXH53PucUS0WfjJ1HpoxPpmJ46im2oEP +bE5oWvzWd8P2wAPzdcp0XAoO/YikpFCHopg3EIznKbo/ajYOlP95FvT930hqF/kp +4MiqupOr2m5EcxBieYkg31HYRGA2qqlDw64KXwXJZ4r8aBzAzvUcNAJRKuwNA1NW +TUq0n0Hr/Y5CGFtwiRjOJOeg9meTZ/5/FRzE7FYF8WFskdfrM2uok5sdcSQBM4Ba +HWm1ESRoJG+LVC2pEm4JvIPNX2TkyZplfLhE8yuA5z8+/C0d1SY61MYzizhpk74l +ecq2pctQ3rSIRbBiB26iHAiI3VlS+hM= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index a4972cc..6398f08 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index 7fd489a..fe2ac68 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index 9ca44f2..9754af5 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index 0cef313..8d65a84 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIEXTCCAsWgAwIBAgIRAJ60W9bRpUuLsMs72Q1i6hgwDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkyODE5NDczOVoXDTI1 -MDkyODE5NDczOVowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2AVjsaCPzjJMFTrVJ0YK -30zONsne99wQSrBs/S2VO7PT6MQF5pJeMC6Ogi05dlC7ln9VZ/P13hofJUphJ5L/ -W1fMl3Qu1v44bECyi1nKbeZcFo0AlHRfVl2mQg1T20+v98iadDxU4ObdIWR/Th4p -CoMtKNiscTrSb06jze1uWPtSFsf+SaRXWgG3SbiLQcMQRKwReg0OjdBzVeIG8/ol -RhSMIvhNDVyYf9xicAcMp8IweA4accuPZnXge/2PRDNLb1iixxTW52DwXRaid6sU -DCQ8qCAvprQtTpRA/oIvF74/8z45YXrEysy1XcMAo3IvqJJbIa6xPvSrpeyNu3hF -FEkHw4rNkCtrQMSxKU9NzVyXHK+1ettIpWuYKFKNtnWLX9neIEXh9OF7174lI/uR -p07XRRyCCRNiS3/nwjjjkS0DnLHA9J1qawpfeRhU/piSdZ5EnTVfIPXI3ckzUlHb -J4OfYjedTB5zSvOFWlLlLnRQVy4n0/qekqv0lYcs6eVLAgMBAAGjNTAzMAwGA1Ud -EwEB/wQCMAAwIwYDVR0RBBwwGoIYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1MA0G -CSqGSIb3DQEBDAUAA4IBgQCiYU/ZPBbUEBVqBYEqs1Ec0tBEw9bBoFv7xujzpHKP -2XibleAIxalVyIHvMui7W43SmJieX2HU6zKzij5nAayBW5FKG59zlfw+q8k00nLv -qhnsVsJjNdO7HJz/P4yvnQGx1i0l5oNGkiSzewsuhFUbu60QQrchR0XFXdgtRyjW -+hwyp3NAN1l0VgVGMCalnSJn4FrY+9AabFER9HFGHM8ugFGD1ukgeeTLSAclRoHw -IYAk3tCPDqcb7ka1cZZflkb0XIGZ6bXoikRCBNbTiHIgXISYsiv9R6+57vkb2w/v -qgYkAt+dSVToJdeK99b3QeFqdczICGr5cmdo6hfrs+kk4vLY5pRdYqP7JRgLOCSt -QrQ6wBxMUAzAl3C/8dBObLcCUzTDuXRbWcCHWKjGTDU9BVkrMiUJeu973Cl4Y2JO -jl3DCdmyJyZBwfLS18+R4ed4z9VYk6Ocph/Okc2ksyQ8eMG+WkOFSsL8xOXMD/ZD -sy0Y7g5ho8nW2AkVoxxaDLo= +MIIEXDCCAsSgAwIBAgIQRF7ZqvmsR9WM2UvsTei14TANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUw +OTMwMTYxMjAwWjAjMSEwHwYDVQQDDBhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUw +ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC55WGoyJIz4gLFebGnOPlv +/ZzVbrccq6bZTleu/siycsSpxU9rJv5heteqUFLcR8+nnzq/qNpLFFQ1Af47ZZP7 +fFtkjKcHzzYbNlmGymAeYGthwcSDroWu0EbPvtbhvukOkHDVRpuiWi0ltNSQdk0F +kAH3wkqMzHGgn9IwvMvo5csZXvIjLgj+h3LH0z8/YKDm3nbfZ67rdpSSlsFyohN1 +DriCkxGrO2zxhYw+NjcT0Xkf9NgFkLa00w0NHdGqdotlGaCPQ6QaMEYDzQhG2Bv0 +mQGQuT0pB6pnP0ipxmP9LkxUmMANz8dDhft1TPMqcNAPZA9gmmUR/DrPfhlZHPGd +OciHPxumkv+H4QBk2OAdZXC3aE8uMA+/RI8Z2q3KQ75pDZs8tlrrsArWcB59fVmL +iu4Z4feOEZB6s13oTlVIVkDSu4WzfEWsG12iQi/GUUfxBlMVD4cAx6UkKaWEheot +a6V+e1qsWGvsr8uo8QQDDlRXfLxHl8nkDTw1RaUbixkCAwEAAaM1MDMwDAYDVR0T +AQH/BAIwADAjBgNVHREEHDAaghhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUwDQYJ +KoZIhvcNAQEMBQADggGBAIq0HS79tCg2DXM3itEibFHzKqSPeOhaPJnP9LGkDYLE +LKSq5ZSjRrrJ/YBYRvBylUF84H+75aET/ZOEGcfILr8qNJTwiJtxIpqodSxS82V+ +zgx5GqbkBt0e9TF180LljSkegWFjtiniwHeDlSETtKDoUk7uuUc56ZIBclXJQ+R4 +KnepOMNaDBcE3UPXSzhfQlbyQHybS7ST1pKdbO2PRTw9NZ9Z65bszd1szwZXtRUT +GrqaJv4Uyonxi2UTnBF89TbEyyF2jmK2LFMjc3vkS6lgNfxXOz5TXELYUwYolxcx +mwFdYYy2UCuPxzioU1EbXAwWQKiYOgokp6LeJdPnu8RUpnU5GEu9PkungrkY6/2d +72lmvH3B/QlBVdvIE7pG1+R2vS9PzfPyGYmaZnvI51oYVRHBDSdhWjtm8VL4M0yq +skGbNCgQfuOB0J6yZceZXyanyk/jQD9FUMHvNu+8SlIV7wLnfcXq0jvTjLw4qiCe +HHkPfxzyqsEH6a7n2IvwkQ== -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index c6fc16e..bbc4ad3 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2AVjsaCPzjJMFTrVJ0YK -30zONsne99wQSrBs/S2VO7PT6MQF5pJeMC6Ogi05dlC7ln9VZ/P13hofJUphJ5L/ -W1fMl3Qu1v44bECyi1nKbeZcFo0AlHRfVl2mQg1T20+v98iadDxU4ObdIWR/Th4p -CoMtKNiscTrSb06jze1uWPtSFsf+SaRXWgG3SbiLQcMQRKwReg0OjdBzVeIG8/ol -RhSMIvhNDVyYf9xicAcMp8IweA4accuPZnXge/2PRDNLb1iixxTW52DwXRaid6sU -DCQ8qCAvprQtTpRA/oIvF74/8z45YXrEysy1XcMAo3IvqJJbIa6xPvSrpeyNu3hF -FEkHw4rNkCtrQMSxKU9NzVyXHK+1ettIpWuYKFKNtnWLX9neIEXh9OF7174lI/uR -p07XRRyCCRNiS3/nwjjjkS0DnLHA9J1qawpfeRhU/piSdZ5EnTVfIPXI3ckzUlHb -J4OfYjedTB5zSvOFWlLlLnRQVy4n0/qekqv0lYcs6eVLAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAueVhqMiSM+ICxXmxpzj5 +b/2c1W63HKum2U5Xrv7IsnLEqcVPayb+YXrXqlBS3EfPp586v6jaSxRUNQH+O2WT ++3xbZIynB882GzZZhspgHmBrYcHEg66FrtBGz77W4b7pDpBw1UabolotJbTUkHZN +BZAB98JKjMxxoJ/SMLzL6OXLGV7yIy4I/odyx9M/P2Cg5t5232eu63aUkpbBcqIT +dQ64gpMRqzts8YWMPjY3E9F5H/TYBZC2tNMNDR3RqnaLZRmgj0OkGjBGA80IRtgb +9JkBkLk9KQeqZz9IqcZj/S5MVJjADc/HQ4X7dUzzKnDQD2QPYJplEfw6z34ZWRzx +nTnIhz8bppL/h+EAZNjgHWVwt2hPLjAPv0SPGdqtykO+aQ2bPLZa67AK1nAefX1Z +i4ruGeH3jhGQerNd6E5VSFZA0ruFs3xFrBtdokIvxlFH8QZTFQ+HAMelJCmlhIXq +LWulfntarFhr7K/LqPEEAw5UV3y8R5fJ5A08NUWlG4sZAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAufr0fyjkbCEWAm6Em92N+W1mWh7pYG0B -lFJ8QLwMDK3feOM1d2Hyhob+2DaZ+Y65WP6ShC2WMTsSrz6sgxAg5Mqj0C8Ei46s -UAv0jRlFVvSxqBDY/aeNIH3qPMtdRXzipYSE3ZaDqlAhTGRBkJQYSblSeY+fcEvz -RF+I5hxQHBF8B6qzRJwSplt+pr3815BctgbiphKwuY/8nu4k4hMC8mAFFAJjVqqM -Xw969OYOBsidyxK5TFf/BM1El14eJPBGVhlOb7cTCgatvkvsiHsVmGxbY4wzNvm6 -l3YJ6fAa3HI0rrkNR6AN6FfyYSVcNIKIWw3t3mnMJciEmAskv1pgILrICfq+qW8A -rLOi3xGEH978GNj89K6PA/0d82ZQyWtjqTmo/ZM/Xu6nKuH5p/ELKPJyfQvfUfCa -K3NbcwuYcijqwn0hFdsR+Fd17syd453S3a11DB6SaMUHQTqRHF9hxQfd29t/sKJN -qoDd7/OMMLkjbuiy/IYU35120KE5I8e2 +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEApadovkbOJ1ncW/zvGITDTof5xu2MW/UR +m1MaNEDbxMOW0l2eU5PM6ObaLyDMO/jEYS4xlcTWtT/vy+DXt6yV44fsSa1Ublr5 +fY6mJ11ZzunxJcSgJOlvu7eBCBOgcsyBpB7phtTtfHH8fweW3vpvWE6sPqdTfNRb +8Z6jsiAWyFtNkYVcx+ebzbhe/ddO6JeE6WOCr5kknMXJ60DEMRfYsN+MUxcx1OXe +vhJCUFYPWBDjUFc1ezStGMyCMQLe9NoSkphZ5RFHyEWiMiws0BRoHTo08Qwre0cU +sDERyH0siLBl/aY8IeJfQ1U5dMN0PqBdF+NoEPopPscxFi2s5SuTBfDXI7rXVG9i +CzObtcxfafYOwN08SElHCLvPrvkxgo2onYBMeLf5ZwaHiJxtwHFwMeh8BBgyrLrm +ynztXmEUr1h8R4bLxJPh+t3rQmSgB2bAvGNHje4RArzcMYsCPsF+0Jrj5tTioJzC +uupIyMkPrbmdzp6l1TQitT+OCTVHHIDe -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index a4db6aa..d40ad98 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 90fa048..8708a52 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -32,71 +32,55 @@ task_runner : val_csv : cla_test_val.csv device : cpu gandlf_config : - problem_type: classification - label: None - batch_size: 1 - clip_mode: norm - clip_grad: 0.1 + # label: None + # clip_mode: norm + # clip_grad: 0.1 + output_dir: '.' + + batch_size: 8 data_augmentation: {} - data_postprocessing: {} - data_preprocessing: - normalize: None - enable_padding: false + data_preprocessing: {} in_memory: false - inference_mechanism : - grid_aggregator_overlap: crop - patch_overlap: 0 learning_rate: 0.001 - loss_function: cel - medcam_enabled: false - output_dir: '.' + loss_function: ce metrics: - - accuracy - - recall + - classification_accuracy + modality: rad model: amp: false - architecture: densenet - base_filters: 32 - norm_type: batch + onnx_export: false + architecture: vgg11 + base_filters: 16 class_list: - - 0 - - 1 - - 2 - - 3 + - '0' + - '1' + - '2' + - '3' dimension: 3 final_layer: softmax - ignore_label_validation: None + num_channels: 4 + norm_type: instance + weighted_loss: false + num_epochs: 500 nested_training: testing: 1 - validation: -5 - num_epochs: 1 - optimizer: - type: sgd - parallel_compute_command: '' + validation: -4 ## these are 4 because there is one site (i.e., Site3) that has only 4 samples. + optimizer: adam patch_sampler: uniform patch_size: - 128 - 128 - 64 patience: 100 - pin_memory_dataloader: false - print_rgb_label_warning: true q_max_length: 100 q_num_workers: 0 q_samples_per_volume: 40 q_verbose: false - save_output: false - save_training: false - scaling_factor: 1 - scheduler: - type: triangle_modified - track_memory_usage: false - verbose: false + save_masks: false + scheduler: triangle version: maximum: 0.1.0 minimum: 0.0.14 - weighted_loss: false - modality: rad network : From 6414e2a34e49bc2301ad43e65ceb494d882afaa2 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Tue, 1 Oct 2024 14:46:46 -0400 Subject: [PATCH 11/19] added extract_csv for classification - i.e. generating of csv files for classification --- Task_1/cert/ca/root-ca.crt | 42 ++++----- Task_1/cert/ca/root-ca/private/root-ca.key | 74 +++++++-------- Task_1/cert/ca/signing-ca.crt | 50 +++++----- Task_1/cert/ca/signing-ca.csr | 36 ++++---- .../cert/ca/signing-ca/private/signing-ca.key | 74 +++++++-------- Task_1/cert/cert_chain.crt | 92 +++++++++---------- Task_1/cert/client/col_one.crt | 46 +++++----- Task_1/cert/client/col_one.key | 74 +++++++-------- Task_1/cert/client/col_two.crt | 46 +++++----- Task_1/cert/client/col_two.key | 74 +++++++-------- Task_1/cert/col_one.csr | 36 ++++---- Task_1/cert/col_two.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.crt | 48 +++++----- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 +++++++-------- Task_1/fets_challenge/experiment.py | 13 ++- Task_1/fets_challenge/gandlf_csv_adapter.py | 62 ++++++++++++- .../fets_challenge_workspace/plan/plan.yaml | 7 +- 18 files changed, 493 insertions(+), 427 deletions(-) diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index 08cd856..e070336 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQCTT5t5pkT+agIQEXUo/PejANBgkqhkiG9w0BAQwFADB0 +MIIEhTCCAu2gAwIBAgIQV0dTS16yR9eekTxw55asnTANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMTU5WhcNMjUwOTMwMTYx -MTU5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAxMTg0NDE1WhcNMjUxMDAxMTg0 +NDE1WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCy/anmcU7bCYYtuA5AuQXzuYfbYbvJTSEomTRumzEtVLIrnpkY -kGqNzZOdcChauRufLo7EjKByW5LNBJzUF7uqNKjDnS4fJG962FqLyGxw+xRvNGgX -qtupBo+GG+PG0eo3Zy+bnofc5qD/8aYenncdMlMDhInjm/MmHY7FrSJRf7snAKQg -egWcHXNG++H9nK1nfCyNl7WgLtts+KZHBH5N+msDPHyynIjg02hRiS2+AQ88baHX -z5qBkMd896PpaXXK82ugG7WOSXvSHRtRPVjf+Qf7hELi8fDFszhyNC+5B28G7blH -c/5cKgmhLTzpujw6LP1GWivEfYj/y5dAksR20Gy5CWj/148xzOTxTra9X5OgExJL -WvJGWoHrglWuggIveLRymHqRvyHSUAKHXuFyuHM8jB4sTWVeN1mg8TI0YxFmoZRQ -QRKGNNf+BjBo5wgE/Ci6GSA1voCymE9SMwhyE9ygr4uGg1dRHvejAbOls0v3XuZb -r3QYHQpqyTfTKGECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEApem0vP3ZlZFScUwzll2A2YIE9NK7N1Gx1OqvB+MReLf79FFEkAZo -fPoW8XDUl531DuN5VYw7tOQNVkzEdE5Mpt4O+YKtESKQKF5AyTREWxezAz5Bmd90 -IOFgV4PDCMzPD/cnBJnvROFB5BVsrUEj1JZfhX6DYM7wQ79SRokF5q8oKQ40EB1e -Zu73oLpcq/j6BgB3d7r7fpuE6UM16VKCeB7+kZX3sbqZlxdBq2AwtnRyQMittxqT -hzFrDl4rIoCEHqBVh8uuZAhFeXkGDZ7ikFz/B/iCEqtm7YZHUiFgGrR/lV/xwSmY -zDnKRvfY01yC4wTgP5deBmsjunjNoRGEb/6QBApKMEqEz8BjlwaL8sZvn0w1VPQC -OB1Uv/c3hDOC+woixFCuM2RqdasddsOysmDynqsJF5c47/EpM7ByysLBxDcnN8hp -Y23E/PXDJbRgKi+aQF4UsR010w3hiWBdlw3pTtOjMuT5fVOSUxiwZadL6m82i6P+ -3J/VsqmYGh1f +jwAwggGKAoIBgQC2qZxekVtUQpFCNybvCxj/r2IO+86nUB4sP+Tmnv63q1ddXq5h +gzNATL0ccKSfe7hgbJpxPS4FiUB0xf6EJV5Y1oGT4cp/UymlchPj5v7/IvFc2F3y +gxi4D+LunzQtJL3VT/S/ecf/iPItA15N4pP8+cjiDuEgpQ7CdEOuRoX0w4Xo8Dz2 +DKX5d02VqGcALoIq7lkGX2CekUBhPyD5nGOrvDnIxGi4HGUxX5AphinL9kidQiWU +OWOyWvF10MK8zHAg+AzGcBpa1Mryf5npi0TuEEa59H+QyWh2/SbOnlzDBvlyumPt +Y7nuUqS+R8fgB/kvJW7HhjWvm9qfeHTZsRhmmrWiPMrvN0Sc77cflMDWxPpyvNiI ++Ah5KCkP0KQgUyYCOaKnM3RLYDHFE0MiIY8tkzOizhtLLPtYL3A7FMr25ghqOck+ +pmaO8/q8J5xXQgUd620smmKlYa87UjGY7pypHzwpCEpbh8m4WyzglTLGCQ7S2/0M +udsm9nHexIa5WJ0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAKMPDvHAYJzSIpsaHsgIPepzlewj5ECYk/CFDdUNE5ryv02RODKeM +QOQU3Gr3A0rrEdDobz8B7aDGImshQVXrCnBjpQ6a/QSRND/6fidD93ojlaZFiq+6 +35b5GcCAe19tQ3k0uANAEWOGNh45jmQDofN+PTrn+Gw/H7RfWw7WRRySwo8anhMs +kbXoU3v7iN7ofMNknPzWjFPaU8d1NdcbX8e9gfugjuYgkhmcKIMPAdSfPJVf26dn +uddAg1C1FVFPoOjOKmsiokdir2g9uN8jH8m5/6CTXd8IjdbkiB5iLc5q0CdgQODm +B2LwFCLT5iBc3/2YbKx3HeuTlgGpKinU48FhFDD6T/E5s4fOXLuFP3B7TkXGMU9R +ZQgHWJbieB+DtL7KcDjDvHDunbAHvaCPOv/ZxtLs4NkBjjr0zqH8QG/O6TWnkt/t +Wq6PI3IAXKFODn4vRCMJbNCGsjBOKlyCw/LdGeco9LdIs+vFx1i/Jq8BMed0erUf +2lhaJM5kuGUb -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index 4149bc5..e739d1d 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 76d43d0..5f56ec9 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQBrQDKnGyT26F9PdxM7Q2PDANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUwOTMwMTYx -MjAwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl -IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQDFpVn3eYfcGYusf3W+Com81jjzbGB9W16wjIdjZW3O -ydvaUlDGteTVFHDqYx2Ow7ujz4gHnmmiHrt91NIs4Q5Pyfl8e+CgT4Qlt1IgJ5OA -UE27Pt3JuwJGBCGdSLH32FG2+YovTr9Ux8Kie/RW+tqXfovEFixsxtgMcr192bLT -CyF5A/VzSaZrtZiCPs1aC7dA9ocbvjqhufC4eDT1hkFPLxQ2jpcm22IQ57XT8eUQ -BQaH2ZS5KaNo2zpaQ+pASMmNX7nryEhyniX7e1iJhdIgwzutdIN/Cti/cdxN+cUe -DzOv9ELGkAXrraGeJ5AqZPSc1TUM22Yx9yHlAqhfYrQwcH0tFhPyl+6yCMuZeUBD -263kvtB5AR4/wPL2LYwZuRJQTLl/uB7AUYfh/1Hp6qJahkF69/rxgeHw8RbxZu15 -JoGUe8zlbiGK8B1hSay4FdPI214SmZiLskISKHHb4P/7H1QBV1rLaF3osdgr9GFp -MbmBpoLrWFRwiUQrpDn3C00CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAZW1Sl0TdJuVKokij9ODA82QK3SrCflOBQwBmX0eNXh/u -M6lDCDwR274S2X0Ud/f/CJgEChrRXIkL6PZZ7ERwV07twVd2d3QCYSSBlbTaoXk2 -WQ5HlM8GOATPaXhn+OB5g8hOJxDnWMWnFIgxlhJmyRGo+EY5bu0SEj33vh05zbJ2 -5jISitiWUHNCFaw2M4E82FRq2yRVlec6iddo8/NrlHoeWM3AWP7w1OiZxs2jVsdN -rCJwBod+FQ2fk+mGMuDbZWLCbkFM4INHNA8rWxfbqc5MgJMB2I4dzNTarBPY2Ap6 -vv43fwfT5kr5ZXsin8/93scQaFKPUrfRYGSr025tvWMIb4dS6fj5E5srxv6zB2Gg -dyo6d3lufqs3fjLDkBZKtg71ucrJeOExIVPhLAaA0V8goRKpaRNysvZfennMr1Up -puy9fQQA2AeEiZKo6TIXqewdJkoyl69NCo4W+Wxl+mmPY6cWc5e/br0EOP2ZERzR -SeJ+HxHQjG+6Rj20BCKc +MIIEjDCCAvSgAwIBAgIRAP/wqarLkUmEr9QLBpHdCIMwDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMTE4NDQxNVoXDTI1MTAwMTE4 +NDQxNVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs +ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEAoyNZBwWglUD+ayaMyK54T1PDnZetVXh5a3NXkgjE +rGqIk4FadN++mpzmfoXgjvx/SByXJ+W8ckWXLS/SEMeqYo7r1Z1gak4lLE0otPo/ +HmX5s+rBdD4XKNKLY96VJYszw45380rpZxEjVnFfeZL065UKhVL9wCVL9C16khey +YDRRNNoAVyb5TMiK7SSImlxDz5INYi3t/3hFJ91IQ5+cPgoXZRAa9DC1ZdRlosKv +qzI5X8MyDpJKTRYUt2eytTaF7A3azzyPBwLii+E8MIy+XK+6q4VwinET1SBQm/54 +KIA55qp2vKlVgu81IUM6GTHpiNHsCvMX7I53vYrm4nerPUVP0S4tUlHmPH970Dfh +wJOSQA63wxD5ie1SRKHuNAWsaCNzyLw1aPb11nmrxWIWncoKSC7e1OXMhDSwljlY +zXMhMQ9AZGcsk/va5C/gNQgs0nKtf3A5bbuKypbZSFP12+IRx8NUr0DiSE2GZXZu +vmCCHePUvTI6zZGKY62nP+4zAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBAJxnY1ZKsCjDwpnL58cGFeMRSIHHWLTqbdXj5Qxp1JRI +p3T4jfliNcVVgGSGhbRURYBmvqKHIFVirS1NsRAgVX4y6eHQAOfJS/6HomQuaoi4 +NJVeuYIV6icqJ/0FDrQvQE79LeZQxZjgcJ0/aboqNFzW1rl5StK8wXoTaYe7+C7t +e2Lprr4HXfVUeuVh6SGQnia7dOMjJO6J6nPULZlzipW29MUBVjrtn+t80E5LKbFa +KM7YzWPo8YTE7pw9kR5+CCtXBHoxU+El47HuBI2UkZKMdI4yniuDY/xUUTuauOiL +haOZfpUHmqk4VD1loxRBG3sxIsRsx5voH65Fmp6aZbTvYuEky1G/GdchSdWigtJ7 +wTJrcAZLrTHnjxgdVTxxmfms6EfSLPwt1JgvLTTpFzF/1m3gM6+60A1ic/PqWkQq +55jV1/VsWsoPcr7ABYVSxcCt1qP6bv3y04ZIv55uchGEEDF0hu8qqxPo/GG7E1+T +247GNg5stSj9ZHtdn1S9Yw== -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index a9ab06e..039eacb 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index ba51376..f395740 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIG4wIBAAKCAYEAxaVZ93mH3BmLrH91vgqJvNY482xgfVtesIyHY2Vtzsnb2lJQ -xrXk1RRw6mMdjsO7o8+IB55poh67fdTSLOEOT8n5fHvgoE+EJbdSICeTgFBNuz7d -ybsCRgQhnUix99hRtvmKL06/VMfConv0Vvral36LxBYsbMbYDHK9fdmy0wsheQP1 -c0mma7WYgj7NWgu3QPaHG746obnwuHg09YZBTy8UNo6XJttiEOe10/HlEAUGh9mU -uSmjaNs6WkPqQEjJjV+568hIcp4l+3tYiYXSIMM7rXSDfwrYv3HcTfnFHg8zr/RC -xpAF662hnieQKmT0nNU1DNtmMfch5QKoX2K0MHB9LRYT8pfusgjLmXlAQ9ut5L7Q -eQEeP8Dy9i2MGbkSUEy5f7gewFGH4f9R6eqiWoZBevf68YHh8PEW8WbteSaBlHvM -5W4hivAdYUmsuBXTyNteEpmYi7JCEihx2+D/+x9UAVday2hd6LHYK/RhaTG5gaaC -61hUcIlEK6Q59wtNAgMBAAECggGAAIgSjx4STbb6326jUizElI+t7QeqVcP4Y/io -x41nB3KXBwYIJhSopiMNL7AvDOp9V3IwLzcPmSpEflDjdM/xIilMpLdPkhbMp+5P -h/sbRDHTF7ESVx/L4ITT01C1+9Dm3Vtb8gcf8BoubZHwRQidLGGgfhlCKtO5EoV/ -eXZrqvIhd6oZT6NP0YPWQmlpU3frGP9guyQek79EhLZ8C/n9tHkPsJrfELFv2NRK -sqR4pXuh+h0Nb5cLU7WdOU9r8prPgLxAausEnhUQdWFS8mnpsZGxgkCBgA2i857b -CF8Y4+SPl8UOC5bGj4o1lN4be3+CSq7Q+yjjkGmKgLwCLYwcsBJ/6Yx0IlZmEPG3 -Vgim+xDy4cyBAyYDlCHs4qeeTESyUJMFDtAP+gTH00c9igzTYvOQOe4gPBXngHR4 -yfPGUuyt2d3Ki2qjgbgs8EIOjP8bVL5QMHWtEJyTmd+MzuL24DuKtq2W6DPch23F -kj9Q9dyGIJBI+B9yf3mXqOAOTm4JAoHBAPywllF2SItO6whWq+xwGJ+VxP9DJ8r+ -7V360Rlmw52qJitjhcb33ma/JLNRrARfkY1ZtxOs22H0qq0y40PcfrnPB/anMnIA -4xuJ4j6/sFLJPyTEl0IFbek7ijoPlQ6rQaXLmoq2f4lJc4Wbh8d9yD3k5VxK2JO9 -BE6KFxOTyoY1DNi0z5iYx3yWyORClS3TxJee7ux72qBuX7hAxkH9+L7AfWUr9fau -Wf3nTqt7SKZh+NK/CLh/e0YpB/w9vKiMSQKBwQDIPCu1SN62wBn8iYKCaubrvGuA -yAzR/KlIU5k4BEhTE18aUdLwmnqUJ1JSDPC0YHjupQNF/TIjAvO7PqYpQ8eIg7RT -UHn0A8IaQvPijIOkMV+AmNGBBYa6vJPUcNNCQZ7jZD4QyrvIoef5ho0SR+fe+PoW -LROIx0fet/v7gh9kO37VtyQ3JJ+ePjrNpbCzD9YJckYVPsALA6qA5wsxo3bKeFW+ -87Z41IzBUlgW9+MfywxywPBYu5+K1bDLOqa5HuUCgcEA+SprXvJiwDNWYMeOCbvT -G/GD6izfHTTY/JWpAAIsG9i+gIRHUpXx0KDkYInFNB7EmHwBob4OKX4nmleWb8EJ -mNDDyny9qlqjlvEUjclY5ZkZ0Xikqe5OnfAe8feRhIBsYD7vKZ6hDc/GwNVHQvgN -rrJ5U9Nd0fhNOeDCtoRB7Kp8+2b3WUI1Wu4YM7RQA3tQ3C1U7Q2H3DBZ5IbCuCnl -0LpgK5X4mID9rfcaxM7xKVdsEutafwr9lIY7IIgD8rM5AoHACEVL/OH0qRHIQQEh -DegCf8w5mIkq1mWcTGt/kavDnQLY08p7bwrCc2ooYVE9hAXUGO9h8jsiHgYaMSrG -TEALdt0RzrstPmIFW3ZWgo4RRe/wJOyrAqxKw13UsVqzrzHssTHLyn/FP+VIIqtn -GlE0B6a7Fb1o6CZrFoz88IeQamB2vbch3NE7cprZbPMiGFNYIO3CbVA5OHs/SLHC -aZt55aUQzaFdcSI+aiHPl6tHi2Gksvy7ML8XOPHYqpxSlKTtAoHAXrqmKXxASAu6 -zvU4qBHqtB/OhLNsSuirQ3FJvOLjXwSbAbzCL+pzlM7NqywYUcICHMI0c38CrFCd -2IZZxNBa3IaX/DovA7HJLTR49yMRflD1XPNcTzKCxkPdc4Z9IoipLY5jC5w7UZ2C -MsnVcRaVAO78UuiP+dn2qhlOB9LLEUdUeM35rsfQmGnW0G6B39b+7ebu/kQHM2yZ -wL4+J2YJb5horW7avIx/Xa9xpv4glMD5ce+0WK1Hp1MBL5w9msdv +MIIG4wIBAAKCAYEAoyNZBwWglUD+ayaMyK54T1PDnZetVXh5a3NXkgjErGqIk4Fa +dN++mpzmfoXgjvx/SByXJ+W8ckWXLS/SEMeqYo7r1Z1gak4lLE0otPo/HmX5s+rB +dD4XKNKLY96VJYszw45380rpZxEjVnFfeZL065UKhVL9wCVL9C16kheyYDRRNNoA +Vyb5TMiK7SSImlxDz5INYi3t/3hFJ91IQ5+cPgoXZRAa9DC1ZdRlosKvqzI5X8My +DpJKTRYUt2eytTaF7A3azzyPBwLii+E8MIy+XK+6q4VwinET1SBQm/54KIA55qp2 +vKlVgu81IUM6GTHpiNHsCvMX7I53vYrm4nerPUVP0S4tUlHmPH970DfhwJOSQA63 +wxD5ie1SRKHuNAWsaCNzyLw1aPb11nmrxWIWncoKSC7e1OXMhDSwljlYzXMhMQ9A +ZGcsk/va5C/gNQgs0nKtf3A5bbuKypbZSFP12+IRx8NUr0DiSE2GZXZuvmCCHePU +vTI6zZGKY62nP+4zAgMBAAECggGALrZI4Cta01HkZ68GodHfTiuYeA/9yFryPXOt +7/lFw27Pw5jG229TpvblQvY3mgmvsmjJWVm9b2UAyCYIuthJL+Znnedtu5K7ryc6 +0DNVjnE5oixGj2/V9tDuq76Iq1LkFAs/ynC5S1NLcI2O/oM3URuAgzODyBiF2pmJ +HrrdTxG77Ou9LDdTLArCSOvsl3Jy0kUqQuIO41c/Sg5hCkfyF4uRLlWBukkWL920 +6nlfjqAXcJW2SBjYYKFBdlChiaTeF86abTn8UfHeFVTVm8TnB7Hm0Vp/UQk+X7g3 +H9F4ocm+0KqAtP0nRveURRIicMzpBJ2JLkDLR5tMbROMXo3w+wMVVLKDeY1Z+BeU +WNzZjBP3TQmzCQbv7D0vyz/e4/0Il5kZiHKzsHkr0rmUvM397jG7qgnifPWjnKVB +JkV9gjE9v3iRpReB3+s7LajMy5eztapo0FzqQ/R3lJV7/uRxxzXoBriBaujbBsXz +2qj/5TYe64feam6uQICBJ/DNyCutAoHBANbjQDF/xqRhq0lhdK7oD9DuvY0eQASl +ws1GyDSGGw4YlCxhpt7Qsf5aWUoDL/0zruH/NrCWg7jX+j20sHsg8deS+20LcMqY +ImbYix+LJlzQ6zqQMQhYS5XCvqf2wETuk6tXsmVX4deOyFyqxwZcL865dfrgommB +Gcfekbza/tVCKhLczE67fK9iY1N/fepUQUObfuupDB9xgujPFm/hfSPtAQpi+SAD +HheadbnXJSk38pesxYFb+RsAGcYxUQWyjwKBwQDCWYJNMGmE9Rm41Noc3oigYa9n +P1M8AOWdFfZiz2MU5ufoEBVOBRuz6GEGstLW5eokiKz+RzHNnxf6FWV84dTvM2m1 +uWBiTs+bwun/3voW7Zlp2F8yzJV9vPZVZnuiWs0R7TJ3cwfb6HolRQjFA/7NfKPU +anYIM0ImluHT7Gi/iEu1npzoA/OetbRshHNI0futiJcgUnsn7m5Dz63i21sucV5a +wC80G84q6mAGUsuw3YAQ1bsiF9MczxfQHmUEDB0CgcEAnah/iZGY2TP7asxAwq7q +I711ftrp1z8SrG85JigaI35vABzpRGLTpKz/A6lRBTFtJsyLgIX9wJldNPaj4MKs +DSD+rOOO7mUuIEzRzePW0pRJcV8nSlsVoZwPK8aDDFAKMdUWwvn2baOJZ0u41/a8 +8KvrXpR/NG8OzjCCto/qFecEXXB3yXAPK9JA05sfc9Q7SfIE7bvKdCthA5QkfxNu +L/SMJeW1qAIBiwm9RAsQbaxppVSSV7V2D5REVMAMFOULAoHAeN4d8U9ocG3WP2Lw ++v9SzRuzcGyroSeVpWohPzZnEnrAQ0ytU0ZOAkdFAFt6UHfQdEQkAkfYq16EFN31 +rgLs4I6C8aeGT91ftCk2ShEsS9IclP0hx4AAgKBiOp5vyXrbCokP18XMX3FndYJH +f++KKdWYNeS330WxoDo53Ais5GEpZJxuTMUYX931hX+iCum8siG+izWArkbUgIvK +QsnVHT8YRSw8rxWT1JDKg2Q+lZJLsSybIwraGpKY5q/gdvHpAoHAIB6eH4l17cuR +LS9LxOVfQfMvGVt+LItxSoYptpMnKiwbqLdvMPrk5B0GM0RCoqqxuABUw0Ca8Osg +JOIiT0neSK0wwgyLN+kwIA/HpszvI5Ybu2IJhqqUULzXfHqI4QKKaNWLmUqurmML +uH3wogAcWnPFYOhsisDP8y9o7yeu3Ec6puxcLy0KAIsVq4+o29TmseDKhJHQ82UD +KvcpT8ptIk/gkbjauRHJkGvhyMgw0v9jE8MfPl4q2G+NmCjrqg4m -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index 50ee8d0..2f86764 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQCTT5t5pkT+agIQEXUo/PejANBgkqhkiG9w0BAQwFADB0 +MIIEhTCCAu2gAwIBAgIQV0dTS16yR9eekTxw55asnTANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMTU5WhcNMjUwOTMwMTYx -MTU5WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAxMTg0NDE1WhcNMjUxMDAxMTg0 +NDE1WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQCy/anmcU7bCYYtuA5AuQXzuYfbYbvJTSEomTRumzEtVLIrnpkY -kGqNzZOdcChauRufLo7EjKByW5LNBJzUF7uqNKjDnS4fJG962FqLyGxw+xRvNGgX -qtupBo+GG+PG0eo3Zy+bnofc5qD/8aYenncdMlMDhInjm/MmHY7FrSJRf7snAKQg -egWcHXNG++H9nK1nfCyNl7WgLtts+KZHBH5N+msDPHyynIjg02hRiS2+AQ88baHX -z5qBkMd896PpaXXK82ugG7WOSXvSHRtRPVjf+Qf7hELi8fDFszhyNC+5B28G7blH -c/5cKgmhLTzpujw6LP1GWivEfYj/y5dAksR20Gy5CWj/148xzOTxTra9X5OgExJL -WvJGWoHrglWuggIveLRymHqRvyHSUAKHXuFyuHM8jB4sTWVeN1mg8TI0YxFmoZRQ -QRKGNNf+BjBo5wgE/Ci6GSA1voCymE9SMwhyE9ygr4uGg1dRHvejAbOls0v3XuZb -r3QYHQpqyTfTKGECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEApem0vP3ZlZFScUwzll2A2YIE9NK7N1Gx1OqvB+MReLf79FFEkAZo -fPoW8XDUl531DuN5VYw7tOQNVkzEdE5Mpt4O+YKtESKQKF5AyTREWxezAz5Bmd90 -IOFgV4PDCMzPD/cnBJnvROFB5BVsrUEj1JZfhX6DYM7wQ79SRokF5q8oKQ40EB1e -Zu73oLpcq/j6BgB3d7r7fpuE6UM16VKCeB7+kZX3sbqZlxdBq2AwtnRyQMittxqT -hzFrDl4rIoCEHqBVh8uuZAhFeXkGDZ7ikFz/B/iCEqtm7YZHUiFgGrR/lV/xwSmY -zDnKRvfY01yC4wTgP5deBmsjunjNoRGEb/6QBApKMEqEz8BjlwaL8sZvn0w1VPQC -OB1Uv/c3hDOC+woixFCuM2RqdasddsOysmDynqsJF5c47/EpM7ByysLBxDcnN8hp -Y23E/PXDJbRgKi+aQF4UsR010w3hiWBdlw3pTtOjMuT5fVOSUxiwZadL6m82i6P+ -3J/VsqmYGh1f +jwAwggGKAoIBgQC2qZxekVtUQpFCNybvCxj/r2IO+86nUB4sP+Tmnv63q1ddXq5h +gzNATL0ccKSfe7hgbJpxPS4FiUB0xf6EJV5Y1oGT4cp/UymlchPj5v7/IvFc2F3y +gxi4D+LunzQtJL3VT/S/ecf/iPItA15N4pP8+cjiDuEgpQ7CdEOuRoX0w4Xo8Dz2 +DKX5d02VqGcALoIq7lkGX2CekUBhPyD5nGOrvDnIxGi4HGUxX5AphinL9kidQiWU +OWOyWvF10MK8zHAg+AzGcBpa1Mryf5npi0TuEEa59H+QyWh2/SbOnlzDBvlyumPt +Y7nuUqS+R8fgB/kvJW7HhjWvm9qfeHTZsRhmmrWiPMrvN0Sc77cflMDWxPpyvNiI ++Ah5KCkP0KQgUyYCOaKnM3RLYDHFE0MiIY8tkzOizhtLLPtYL3A7FMr25ghqOck+ +pmaO8/q8J5xXQgUd620smmKlYa87UjGY7pypHzwpCEpbh8m4WyzglTLGCQ7S2/0M +udsm9nHexIa5WJ0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAKMPDvHAYJzSIpsaHsgIPepzlewj5ECYk/CFDdUNE5ryv02RODKeM +QOQU3Gr3A0rrEdDobz8B7aDGImshQVXrCnBjpQ6a/QSRND/6fidD93ojlaZFiq+6 +35b5GcCAe19tQ3k0uANAEWOGNh45jmQDofN+PTrn+Gw/H7RfWw7WRRySwo8anhMs +kbXoU3v7iN7ofMNknPzWjFPaU8d1NdcbX8e9gfugjuYgkhmcKIMPAdSfPJVf26dn +uddAg1C1FVFPoOjOKmsiokdir2g9uN8jH8m5/6CTXd8IjdbkiB5iLc5q0CdgQODm +B2LwFCLT5iBc3/2YbKx3HeuTlgGpKinU48FhFDD6T/E5s4fOXLuFP3B7TkXGMU9R +ZQgHWJbieB+DtL7KcDjDvHDunbAHvaCPOv/ZxtLs4NkBjjr0zqH8QG/O6TWnkt/t +Wq6PI3IAXKFODn4vRCMJbNCGsjBOKlyCw/LdGeco9LdIs+vFx1i/Jq8BMed0erUf +2lhaJM5kuGUb -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEizCCAvOgAwIBAgIQBrQDKnGyT26F9PdxM7Q2PDANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUwOTMwMTYx -MjAwWjB6MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRowGAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxl -IEluYzEaMBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwggGiMA0GCSqGSIb3DQEB -AQUAA4IBjwAwggGKAoIBgQDFpVn3eYfcGYusf3W+Com81jjzbGB9W16wjIdjZW3O -ydvaUlDGteTVFHDqYx2Ow7ujz4gHnmmiHrt91NIs4Q5Pyfl8e+CgT4Qlt1IgJ5OA -UE27Pt3JuwJGBCGdSLH32FG2+YovTr9Ux8Kie/RW+tqXfovEFixsxtgMcr192bLT -CyF5A/VzSaZrtZiCPs1aC7dA9ocbvjqhufC4eDT1hkFPLxQ2jpcm22IQ57XT8eUQ -BQaH2ZS5KaNo2zpaQ+pASMmNX7nryEhyniX7e1iJhdIgwzutdIN/Cti/cdxN+cUe -DzOv9ELGkAXrraGeJ5AqZPSc1TUM22Yx9yHlAqhfYrQwcH0tFhPyl+6yCMuZeUBD -263kvtB5AR4/wPL2LYwZuRJQTLl/uB7AUYfh/1Hp6qJahkF69/rxgeHw8RbxZu15 -JoGUe8zlbiGK8B1hSay4FdPI214SmZiLskISKHHb4P/7H1QBV1rLaF3osdgr9GFp -MbmBpoLrWFRwiUQrpDn3C00CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq -hkiG9w0BAQwFAAOCAYEAZW1Sl0TdJuVKokij9ODA82QK3SrCflOBQwBmX0eNXh/u -M6lDCDwR274S2X0Ud/f/CJgEChrRXIkL6PZZ7ERwV07twVd2d3QCYSSBlbTaoXk2 -WQ5HlM8GOATPaXhn+OB5g8hOJxDnWMWnFIgxlhJmyRGo+EY5bu0SEj33vh05zbJ2 -5jISitiWUHNCFaw2M4E82FRq2yRVlec6iddo8/NrlHoeWM3AWP7w1OiZxs2jVsdN -rCJwBod+FQ2fk+mGMuDbZWLCbkFM4INHNA8rWxfbqc5MgJMB2I4dzNTarBPY2Ap6 -vv43fwfT5kr5ZXsin8/93scQaFKPUrfRYGSr025tvWMIb4dS6fj5E5srxv6zB2Gg -dyo6d3lufqs3fjLDkBZKtg71ucrJeOExIVPhLAaA0V8goRKpaRNysvZfennMr1Up -puy9fQQA2AeEiZKo6TIXqewdJkoyl69NCo4W+Wxl+mmPY6cWc5e/br0EOP2ZERzR -SeJ+HxHQjG+6Rj20BCKc +MIIEjDCCAvSgAwIBAgIRAP/wqarLkUmEr9QLBpHdCIMwDQYJKoZIhvcNAQEMBQAw +dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX +MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMTE4NDQxNVoXDTI1MTAwMTE4 +NDQxNVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs +ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B +AQEFAAOCAY8AMIIBigKCAYEAoyNZBwWglUD+ayaMyK54T1PDnZetVXh5a3NXkgjE +rGqIk4FadN++mpzmfoXgjvx/SByXJ+W8ckWXLS/SEMeqYo7r1Z1gak4lLE0otPo/ +HmX5s+rBdD4XKNKLY96VJYszw45380rpZxEjVnFfeZL065UKhVL9wCVL9C16khey +YDRRNNoAVyb5TMiK7SSImlxDz5INYi3t/3hFJ91IQ5+cPgoXZRAa9DC1ZdRlosKv +qzI5X8MyDpJKTRYUt2eytTaF7A3azzyPBwLii+E8MIy+XK+6q4VwinET1SBQm/54 +KIA55qp2vKlVgu81IUM6GTHpiNHsCvMX7I53vYrm4nerPUVP0S4tUlHmPH970Dfh +wJOSQA63wxD5ie1SRKHuNAWsaCNzyLw1aPb11nmrxWIWncoKSC7e1OXMhDSwljlY +zXMhMQ9AZGcsk/va5C/gNQgs0nKtf3A5bbuKypbZSFP12+IRx8NUr0DiSE2GZXZu +vmCCHePUvTI6zZGKY62nP+4zAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBAJxnY1ZKsCjDwpnL58cGFeMRSIHHWLTqbdXj5Qxp1JRI +p3T4jfliNcVVgGSGhbRURYBmvqKHIFVirS1NsRAgVX4y6eHQAOfJS/6HomQuaoi4 +NJVeuYIV6icqJ/0FDrQvQE79LeZQxZjgcJ0/aboqNFzW1rl5StK8wXoTaYe7+C7t +e2Lprr4HXfVUeuVh6SGQnia7dOMjJO6J6nPULZlzipW29MUBVjrtn+t80E5LKbFa +KM7YzWPo8YTE7pw9kR5+CCtXBHoxU+El47HuBI2UkZKMdI4yniuDY/xUUTuauOiL +haOZfpUHmqk4VD1loxRBG3sxIsRsx5voH65Fmp6aZbTvYuEky1G/GdchSdWigtJ7 +wTJrcAZLrTHnjxgdVTxxmfms6EfSLPwt1JgvLTTpFzF/1m3gM6+60A1ic/PqWkQq +55jV1/VsWsoPcr7ABYVSxcCt1qP6bv3y04ZIv55uchGEEDF0hu8qqxPo/GG7E1+T +247GNg5stSj9ZHtdn1S9Yw== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index 4130c7e..8334ac1 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQFtDXPzKyRvS5GGlK/CuIbDANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUw -OTMwMTYxMjAwWjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC2K57/98zGAyghjZmSX0loi7SXtdqjwHFtEd43YVXLVtqEcgWc -Sg8fo5UgO2gyZVS60UZElC3V2uOEBrqwMVJUnNF6KKyewRh+LUi2PLymmJw0Hw/G -noHon2WPy2WRZl7rffapR+rvJ4JWZoB2n/kOint+oCL+y3heTrc2Vvzu7GUAbrsE -NcxIn/EvdAe95Qb23Xd/zJqIvKiHneLI4dzMk3zYwCRcXarA3IZkYgp23Z+qE3Z6 -zCK+2H0De28QyV0nj/bAXVfD6K2QfK4890kc41NHkfOCos4NeXmPsTPe7JgfI80U -11bwKDbMkFpi2ogEPZ3vL9gnqgmWH8QXXi+76Rzp5YRrQ860aA1lfsSt24Y6o9Nz -FBznNxe2RoXkurBBaVwCVt59jshn2pkryFaxHcY7wzyMNpzAjLFRjwz56mEQvd8a -jGzLb6K7N+G74zEY1kotxQ6L7Xe5MOiv3vswTN5Jx+MHikY7YqFUbYJ2IbT5WQDF -8Qc5xMdccJqGGP8CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv -bmUwDQYJKoZIhvcNAQEMBQADggGBAAiw8vg+DSMUtswErfGp/K3gMw85NxD0g9ih -1w8NBm2FBXEvJ0rXO8juCp7j6a+XUTAFbH64BkAkvDCKFMIjARGxnJaH+IQnyQeE -IX887jTw29dDdTGzGVYeRjQTG6Nk/XsDW8sBOI+XzMxr6/GvPbznJTozfkhPh0zM -Z+koLqfuqr/eZ4vxkwktspDhW8qhdklKAVinv5vTvtcqwx8Fm5CDrIYeWGrHdnRN -5nwO7Yao394d6hg/RGXPylBwSABAAXNBxpZGPP8e5nQ37vZL1xx/7o9uoNBty7rd -TIKlq5eD4j+/7KO/I4QLB4TeSeMEQW9ERpKagAM8hs9CEGYALeJk895wDpOf+g3h -svp2wbtmrbX/Vyfi/1CWVqLDqG5PuLRszG92AVgkXC8WYINnKvggtQjUzKxU3WcD -baakgUzc0ezdEDe6heobkOZKwUzFdFlghHybyBavCUi0XTX3mdWVBNMYFm/WpiyV -LlwEa5PDhKqfuxxSQYiRXnKFXNmPgA== +MIIEMzCCApugAwIBAgIRANmSuZCWS0IhuM1UsGj1WCswDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MTAwMTE4NDQxN1oXDTI1 +MTAwMTE4NDQxN1owDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC +AY8AMIIBigKCAYEAy9rYzB3u+RH89Fc1sQUKoepMHywGVYiD5PPfy9SWek6rLh4d +/uCFEpHtqC2K24ERw1nlRurKMAs6aNe1EGo5DHRIQzDaS8R7XAD9dMDlzTlaK7RE +Rko/XPAQTdsOQ8vgHAvymh8T1Yy9c6wCgpaODgeRclZnhRaBI2B0hwGgtAY7Il4X +2ezXftDvK/u7Mmf13v1nlxnm+GjZM+kEQn8GXcuyNm4E+rib89ZDMNaz0OyHYr/p +wttylDEuuAwzvdd//3ZCEA2RyqsSEF3Ean2JUbWYeS/27rIvGnPFcVjCS/3jQTa0 +wLYhsKn3BnHojJF0I39SjlAUAm9CqjTEXdGFYCwB6F6XHiTpCN1wstLVb3LQ+7zr +1ZE+uiaKL5EEn7VVSUjviDVew48iP0PmKKlredFYDhD+KK1y651NUq1g5XGIquMr +pX2h43b/1RAlfZBv8u/W7AFC9h+dA+hDr1r7AgPMVE3mjecaqDMnCPgKWBcV8+q2 +wGVEsjo1d18mfglbAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID +b25lMA0GCSqGSIb3DQEBDAUAA4IBgQCVmxWY27TT3hPKZxexn0u57wxHIxlyo8kf +72VvKVcHggajWTqaIIwpUzWQ7FC39gRFudoHllM6AsBKjlMMVJ3zFpatrnf2q6BA +OvExCMc4CMFEk3KK0dwAF/lZE9uqZrbFmAMuD0BlzZbOccRzQrW0FVSQnvMGE0Ph +OuQ/IKabrEHTYXxr217Qn96no+bXSUIZbyeGi+/k5sVA67FcHWfpF2J9Qwr8DCI0 +CE+UhHH2LjAFJzD+aHyEQfRo6DRLTzoQik8SBOLtuYykrQ+egRu2nvF9etrjDjuH +RPqIlNwCScJKC10G/8pxkfk3WuRchWbihvieYR0oZPVETxE79TB/KupZoMGSZGAl +yfzxssP+5o5SqKXFdnBEmP8BbAUdGPA2oshR7pYFXadsEtoSR4SooDwSJwsUEDvA +HUBa0YqrJ2meQ38WnbEAZIRFXeRKtWEixdbn1/t+ow3CPvIDwf90z/t1KKbSKxnQ +R+U97wPhzk448RTfzkTTlRdfwViRi5Q= -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index a7ec02f..f7bc833 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index 5f42e2b..ba8e3bc 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRAKBKK2rj60Govy/+ax+iVbswDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MDkzMDE2MTIwMFoXDTI1 -MDkzMDE2MTIwMFowDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAsy0sHs5xyQBoCfpL5yFfboQC0mBYQXBLShqldNIPhnKNTLKd -IlGBfMCW+XiyCb4/eGauuiyVP2e00Y0IWCVDIIcQpYLmcMOEav049FUHKACSSEn+ -xXVfN1bGVXWU89G4MJBGlJcKbgdP7AF0A4n9rYmv3XZDxUxab/OZ/YcTHCYtjsJS -rc9OrCE5M+elIUJjy05BsyXRTdwcR5bU6t906CJP0gh+GUWL9A0DUxbBlc51/RVm -iIyjzAvx9I0rw5ztR46BZotsxsBnl/ZQ5ew4FAH3HyvhgRBSanaQPULI9LUuSEd1 -Eq8dSHyDo7KcGIg4STvDVN+CEZaLSWpCC5TlBekn+ZB2EAqvolO020FHbrWy4lFm -DQhi1v3HKtAv0WY+5ul/eTywg5+fkMXevV4Jtax1RE5gafKIfnQQ7SXglEOUT38X -/wehHl4/Venf0+DoIVGTzDI3B6X9GJnRzeFeRQV1RgmKEqmSpdJvPqrKeL+cEIzj -nmnoaaSFXaNpSj+NAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -dHdvMA0GCSqGSIb3DQEBDAUAA4IBgQAwFz5ZxWk2/Za4EY6/eVRaUXjT8a1pFAAQ -jY3f2FrMsS4oeQwsZvd0RnBdNltsuLKSLSKmz2uoblNvTT+2WC73nqUZ1DZURB2u -3diyZCwqMsW6ToXF6ZTtkE6HBcbCV3S6+p8GUq+EYb9MImEOBZhC+Kk31uLjElJt -L/SwvRHHRNcvsRljUDU2uoton90W4nmynXH53PucUS0WfjJ1HpoxPpmJ46im2oEP -bE5oWvzWd8P2wAPzdcp0XAoO/YikpFCHopg3EIznKbo/ajYOlP95FvT930hqF/kp -4MiqupOr2m5EcxBieYkg31HYRGA2qqlDw64KXwXJZ4r8aBzAzvUcNAJRKuwNA1NW -TUq0n0Hr/Y5CGFtwiRjOJOeg9meTZ/5/FRzE7FYF8WFskdfrM2uok5sdcSQBM4Ba -HWm1ESRoJG+LVC2pEm4JvIPNX2TkyZplfLhE8yuA5z8+/C0d1SY61MYzizhpk74l -ecq2pctQ3rSIRbBiB26iHAiI3VlS+hM= +MIIEMjCCApqgAwIBAgIQfJL287tTT9uaavWZ/8KjBzANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQxMDAxMTg0NDE3WhcNMjUx +MDAxMTg0NDE3WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQDtOs1vy74QEOYHyX0NRM920YjSzB103YfKB8rNlzYHg8spgbKf +2p1GT7vKRDBAuXuKMzNPOwdNwMW+c70pcnRzGws+7rkcIruSuhUnJXzIWgZvgUM3 +1dVsjuhJOqZP+u2+Hx55tPDlGDe0G8vNWGoOCLbCbXXjxV0OznTeiQ02u9PCIfGN +iJeu621F7B2gjyjZWnD4S0tjfIPMcOrdNVsobxVYdmeiwDIcjYUqH84gf9hK2Ty6 +9F1ClnAMMVNTCA7be9ymF+AiJA8ZJiVB9KesbyNR3GSA8cvzRlGcpghn+OwvV+Zn +aI7v15/UI/4bP3zsLpjlHBt20cyrktuPM+u3n/E6Q/8Yxm8nQvwxBeFv0UPScmlk +84nv8siSbWrOE8tQYHd96Y6rqPxj5uGh8GANmL0cUpHZzqMZnikjKdvRuNe85rLt +twHRHNcww6ntTaqIuiLlWk5kaIvwwNiW0Fc5OL68SUXd7GZ8Q/jkFCmjpVUc3vI8 +HJtVydNJ4b8zsikCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 +d28wDQYJKoZIhvcNAQEMBQADggGBAIB8ARj3QFvr34iYEIj3/bJPNnUZuPwgHFN4 +WrH0OcNkZvpAPfXmP1BmXCJlo3WEYbBVusqPc7bVeI8cUg5q7o+wJCGdj+x60lao +yRSf8cPHDuLgWhyNd3zMoecpWtWz60WOMsg7DrDmoydCm7jdX10xvEUwD6zrTZYw +qRnVAb0kMUyb3isnhCmJnewECWOoDRAkZY4X5koMXCg36yCk9p1CFMF2656ML3/O +9MPTqTCIDy33VuvCmHsH1fXlKE7pMLp7NgB4OPawnI5aha+QWbjX/ZHGxUtr9Wav +zo8lqV95zWWLA/8J11yFeBbp6PvRjJgE9AXmv0XtlUVQ2jASzID6fGO0sx08CJ2B +cLgeLGsDCBHhSy/2J+vgQrEC140H5dqzPFhmX8ZKMqi6wznUguhSRqQOIk/ah0vk +fo24iMEWqLMK3Z8I2XNc9hMkideZcLtY5LwzjoxDJHLVcmBF3q61Xo/9nn+XhmyO +0yzdI7h5E9H7DRatJQ7mNLpKWYEWWA== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index 6398f08..c2a6edb 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index fe2ac68..e0e9c6e 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- MIIDqjCCAhICAQAwDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAtiue//fMxgMoIY2Zkl9JaIu0l7Xao8BxbRHeN2FVy1bahHIF -nEoPH6OVIDtoMmVUutFGRJQt1drjhAa6sDFSVJzReiisnsEYfi1Itjy8ppicNB8P -xp6B6J9lj8tlkWZe6332qUfq7yeCVmaAdp/5Dop7fqAi/st4Xk63Nlb87uxlAG67 -BDXMSJ/xL3QHveUG9t13f8yaiLyoh53iyOHczJN82MAkXF2qwNyGZGIKdt2fqhN2 -eswivth9A3tvEMldJ4/2wF1Xw+itkHyuPPdJHONTR5HzgqLODXl5j7Ez3uyYHyPN -FNdW8Cg2zJBaYtqIBD2d7y/YJ6oJlh/EF14vu+kc6eWEa0POtGgNZX7ErduGOqPT -cxQc5zcXtkaF5LqwQWlcAlbefY7IZ9qZK8hWsR3GO8M8jDacwIyxUY8M+ephEL3f -Goxsy2+iuzfhu+MxGNZKLcUOi+13uTDor977MEzeScfjB4pGO2KhVG2CdiG0+VkA -xfEHOcTHXHCahhj/AgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC +AY8AMIIBigKCAYEAy9rYzB3u+RH89Fc1sQUKoepMHywGVYiD5PPfy9SWek6rLh4d +/uCFEpHtqC2K24ERw1nlRurKMAs6aNe1EGo5DHRIQzDaS8R7XAD9dMDlzTlaK7RE +Rko/XPAQTdsOQ8vgHAvymh8T1Yy9c6wCgpaODgeRclZnhRaBI2B0hwGgtAY7Il4X +2ezXftDvK/u7Mmf13v1nlxnm+GjZM+kEQn8GXcuyNm4E+rib89ZDMNaz0OyHYr/p +wttylDEuuAwzvdd//3ZCEA2RyqsSEF3Ean2JUbWYeS/27rIvGnPFcVjCS/3jQTa0 +wLYhsKn3BnHojJF0I39SjlAUAm9CqjTEXdGFYCwB6F6XHiTpCN1wstLVb3LQ+7zr +1ZE+uiaKL5EEn7VVSUjviDVew48iP0PmKKlredFYDhD+KK1y651NUq1g5XGIquMr +pX2h43b/1RAlfZBv8u/W7AFC9h+dA+hDr1r7AgPMVE3mjecaqDMnCPgKWBcV8+q2 +wGVEsjo1d18mfglbAgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDgYDVR0PAQH/BAQDAgWgMA4GA1Ud -EQQHMAWCA29uZTANBgkqhkiG9w0BAQwFAAOCAYEAnChUJmpCpqmXD87eaM7DYMT1 -NVkK16X2MqJ4qJs8DQEsWwlSxRMwKMuAuhxeP3Y9lRtCnYDPNpYr6RRL3lrhG3ri -HhIhxMVJu+L6nLHNsxPKjA+5PSP9q1e53Dyzcj/dYOTOoUD59gUFb+0oeloNquzU -GZQmXMoP8fXm4kvcXwQwidIIt5ghc+jCII7XSAZ0ueDzptKC9RnYsr+KZ+DFCjcp -awcr1DCVBInSzI+KAaFw0lrtkNt146Q+qyGnpJfTGR/QmAnglkGt0efk1pZHC70x -1SJCLZwzg8oJ7j7irHhKyhXXwe4p9dmfENSBtcA8JrLE9y95dYBvfkY9FGMrI/D9 -+Dsoi9siv2FUGSCv9eq+LdPncY2g5h3StOczXaILIVhxowpBiMev9wVgdYi0DukA -D3dJIAPIKbbP/VEV1sJR9zAyZvL0irAsQAjrHhutrLQpkJ9pe/xY+mJTZM7bC/w4 -fBFdWIVoihCLKK9v7e8qugV7PN5hrEZAlHmVcp33 +EQQHMAWCA29uZTANBgkqhkiG9w0BAQwFAAOCAYEAkFti0AVjno7n9IbAnlVfWW4z +QHGUFviPSjh2ZnQE3PLrz/QBDyoTMz7/fPXm2NGZiEX/XC6SRnmj07dnaSidUeW7 +i1I/Feuh1IxK9Zm4zydok2cc+b9lzK0hGbhxnkVCBPgQhQOn+bnw2niEtR1qDke+ +hQkdnQ3kJsYzUk52K/oarjt+jc0gaxrMqkh9eEgINhVBSnCnCFISsYmtbSEdrw08 ++Xq4kFcSFZxHfw0QEphNv5aNMkcmzYyBtFg88BNPfYwN50BVCDB86miWHYe3sCIK +tev/OByn5jKP1ywbmIwlkJ/37WcmYI8e3QA4w+Yz6PN0f+IYIheEuK8A8rBUfoRS +E7lfsW3QH3MtK31+EYqC3xrEqwBCJHQ1abUP7DcZQky55s5iZy/JVI+VNQ47NpVD +tnzSEBCSsCYqwuekMc6ziTARZB5zDPud/59ny9UuqzhGEniY7snLfYtUUdqki8nh +EwY+FX0oUkk3c2WrdGpQdESjteIX88yBz8+9VqPf -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index 9754af5..e7e604a 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index 8d65a84..862066c 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIEXDCCAsSgAwIBAgIQRF7ZqvmsR9WM2UvsTei14TANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQwOTMwMTYxMjAwWhcNMjUw -OTMwMTYxMjAwWjAjMSEwHwYDVQQDDBhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUw -ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQC55WGoyJIz4gLFebGnOPlv -/ZzVbrccq6bZTleu/siycsSpxU9rJv5heteqUFLcR8+nnzq/qNpLFFQ1Af47ZZP7 -fFtkjKcHzzYbNlmGymAeYGthwcSDroWu0EbPvtbhvukOkHDVRpuiWi0ltNSQdk0F -kAH3wkqMzHGgn9IwvMvo5csZXvIjLgj+h3LH0z8/YKDm3nbfZ67rdpSSlsFyohN1 -DriCkxGrO2zxhYw+NjcT0Xkf9NgFkLa00w0NHdGqdotlGaCPQ6QaMEYDzQhG2Bv0 -mQGQuT0pB6pnP0ipxmP9LkxUmMANz8dDhft1TPMqcNAPZA9gmmUR/DrPfhlZHPGd -OciHPxumkv+H4QBk2OAdZXC3aE8uMA+/RI8Z2q3KQ75pDZs8tlrrsArWcB59fVmL -iu4Z4feOEZB6s13oTlVIVkDSu4WzfEWsG12iQi/GUUfxBlMVD4cAx6UkKaWEheot -a6V+e1qsWGvsr8uo8QQDDlRXfLxHl8nkDTw1RaUbixkCAwEAAaM1MDMwDAYDVR0T -AQH/BAIwADAjBgNVHREEHDAaghhpbi1vdGEtMjMyMzQ3LmFkcy5pdS5lZHUwDQYJ -KoZIhvcNAQEMBQADggGBAIq0HS79tCg2DXM3itEibFHzKqSPeOhaPJnP9LGkDYLE -LKSq5ZSjRrrJ/YBYRvBylUF84H+75aET/ZOEGcfILr8qNJTwiJtxIpqodSxS82V+ -zgx5GqbkBt0e9TF180LljSkegWFjtiniwHeDlSETtKDoUk7uuUc56ZIBclXJQ+R4 -KnepOMNaDBcE3UPXSzhfQlbyQHybS7ST1pKdbO2PRTw9NZ9Z65bszd1szwZXtRUT -GrqaJv4Uyonxi2UTnBF89TbEyyF2jmK2LFMjc3vkS6lgNfxXOz5TXELYUwYolxcx -mwFdYYy2UCuPxzioU1EbXAwWQKiYOgokp6LeJdPnu8RUpnU5GEu9PkungrkY6/2d -72lmvH3B/QlBVdvIE7pG1+R2vS9PzfPyGYmaZnvI51oYVRHBDSdhWjtm8VL4M0yq -skGbNCgQfuOB0J6yZceZXyanyk/jQD9FUMHvNu+8SlIV7wLnfcXq0jvTjLw4qiCe -HHkPfxzyqsEH6a7n2IvwkQ== +MIIEXTCCAsWgAwIBAgIRAM4XPlQTbESZg/8Ny3nX1EMwDQYJKoZIhvcNAQEMBQAw +ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa +MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MTAwMTE4NDQxNloXDTI1 +MTAwMTE4NDQxNlowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnC68RiSM+uOSC/k8htJe +lWVYXUo9/BJzs2yoSklPAMRzjiDVM+NExX2A1g6blcbvMJyA4ulcrHCkgpsXMV5A +MQfw7HMoSdemukU2yuBfin36Ey6t+mKjoUBiW1XtqQSWrgdPALZA0uegMhwaJzVK +QQu0R54VipBlL27gjQxesd4yQWi45+6YjHNoDHnv4ysZ/uA649Wv66azwMl8gvTv +j167Kb4b7NIxrWgADLzklqWxI+zkW9sQ4yxh4Rwr6Flh5oU4SZQ1whMvGEK28Eoe +2E/g9HvwgIFxFKGF/OV/OP+389xyHRtNobdtzdAnEtBwY9KNDbYoC+sq5mrZfUhT +5boKmgLZDQ7q7Ch5pJQCYSLNUNXjhpUf0QJArcn0S/WDqvdhiKboi6CI4YB5N1kX +lQIMoG0yjy+gw8QgyDT4JTOkjvC4zOEGAbWK9Dp+c8FLUALlYekGu4fyFjq7ymt7 +McJhXm1y8Ry8HRnTXHqC70i6Y0IT3b272HraXQgpRlUtAgMBAAGjNTAzMAwGA1Ud +EwEB/wQCMAAwIwYDVR0RBBwwGoIYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1MA0G +CSqGSIb3DQEBDAUAA4IBgQAnAjcoLNtb/tcXzolw21RvT5uczceBxlp1HoYQEwIi +hBdsRm/dRkXcFe7iT5E0JMz7g65fXEy0euI5FZ6hs43YYfvzHS20hLxlrwG12/T6 +aMbM0lfQP+4MMDHzPXX8La1Xo37SewBeqlpeXl+O3fGodOCbJHy51q0CX1Gy9YrM +wikCE7QhL37jdAvlDjSTOlxVc1Q/NE4ExWA78XuVa2F5eNcxurICn+vD75NG30zJ +20vJudotbyiNazI3Sl6fUgl1vG4vHUzi0lOmWpqo/OBRJF+EYhgseLWMUEn1BP56 +i/LGCb8mMxLcfgMD0khVgvG1WqOkQC2mIk/tc8tkXpwyAk2dCe4V2kRma68DXpMP +/KKH4huYz82Thqva2y3W8eJIuow8kAQr2nB3RmmJ0CY/ZI+58I+t//EKVh2wK8SZ +Em7qLPjfy63tr+SdKNsg8y+UZWO/b8mBAjVAq+l7rcEemiaYS1yvEKUHM5aaBviL +eFnWuqEJIcRdITrhO8wta54= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index bbc4ad3..23bb0f7 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAueVhqMiSM+ICxXmxpzj5 -b/2c1W63HKum2U5Xrv7IsnLEqcVPayb+YXrXqlBS3EfPp586v6jaSxRUNQH+O2WT -+3xbZIynB882GzZZhspgHmBrYcHEg66FrtBGz77W4b7pDpBw1UabolotJbTUkHZN -BZAB98JKjMxxoJ/SMLzL6OXLGV7yIy4I/odyx9M/P2Cg5t5232eu63aUkpbBcqIT -dQ64gpMRqzts8YWMPjY3E9F5H/TYBZC2tNMNDR3RqnaLZRmgj0OkGjBGA80IRtgb -9JkBkLk9KQeqZz9IqcZj/S5MVJjADc/HQ4X7dUzzKnDQD2QPYJplEfw6z34ZWRzx -nTnIhz8bppL/h+EAZNjgHWVwt2hPLjAPv0SPGdqtykO+aQ2bPLZa67AK1nAefX1Z -i4ruGeH3jhGQerNd6E5VSFZA0ruFs3xFrBtdokIvxlFH8QZTFQ+HAMelJCmlhIXq -LWulfntarFhr7K/LqPEEAw5UV3y8R5fJ5A08NUWlG4sZAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnC68RiSM+uOSC/k8htJe +lWVYXUo9/BJzs2yoSklPAMRzjiDVM+NExX2A1g6blcbvMJyA4ulcrHCkgpsXMV5A +MQfw7HMoSdemukU2yuBfin36Ey6t+mKjoUBiW1XtqQSWrgdPALZA0uegMhwaJzVK +QQu0R54VipBlL27gjQxesd4yQWi45+6YjHNoDHnv4ysZ/uA649Wv66azwMl8gvTv +j167Kb4b7NIxrWgADLzklqWxI+zkW9sQ4yxh4Rwr6Flh5oU4SZQ1whMvGEK28Eoe +2E/g9HvwgIFxFKGF/OV/OP+389xyHRtNobdtzdAnEtBwY9KNDbYoC+sq5mrZfUhT +5boKmgLZDQ7q7Ch5pJQCYSLNUNXjhpUf0QJArcn0S/WDqvdhiKboi6CI4YB5N1kX +lQIMoG0yjy+gw8QgyDT4JTOkjvC4zOEGAbWK9Dp+c8FLUALlYekGu4fyFjq7ymt7 +McJhXm1y8Ry8HRnTXHqC70i6Y0IT3b272HraXQgpRlUtAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEApadovkbOJ1ncW/zvGITDTof5xu2MW/UR -m1MaNEDbxMOW0l2eU5PM6ObaLyDMO/jEYS4xlcTWtT/vy+DXt6yV44fsSa1Ublr5 -fY6mJ11ZzunxJcSgJOlvu7eBCBOgcsyBpB7phtTtfHH8fweW3vpvWE6sPqdTfNRb -8Z6jsiAWyFtNkYVcx+ebzbhe/ddO6JeE6WOCr5kknMXJ60DEMRfYsN+MUxcx1OXe -vhJCUFYPWBDjUFc1ezStGMyCMQLe9NoSkphZ5RFHyEWiMiws0BRoHTo08Qwre0cU -sDERyH0siLBl/aY8IeJfQ1U5dMN0PqBdF+NoEPopPscxFi2s5SuTBfDXI7rXVG9i -CzObtcxfafYOwN08SElHCLvPrvkxgo2onYBMeLf5ZwaHiJxtwHFwMeh8BBgyrLrm -ynztXmEUr1h8R4bLxJPh+t3rQmSgB2bAvGNHje4RArzcMYsCPsF+0Jrj5tTioJzC -uupIyMkPrbmdzp6l1TQitT+OCTVHHIDe +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAd7B/N78coCJ7JSoM3aUcq4lKHhnCvCkh +GtbN5VSvLARPfA/EPQoIIMwF/NIZFB2T9joEAXEaxWCRd47NxIZfvIJhDOjCxfpf +eo+d5MVK0PzJrJjTex1m2YButqLfl8V/fKT2meYciIUJMkd8oNAOEKT95cqpwbTP +DF6J9LZBDz9Wulkm8u6FQAHOthq3Kb5+fNw0AhYsMJKXcaFXcRuU8HKX2VLYWqk+ +qSnYxp9fuWEzE8QqelW6YX6edduirXLfsRHbAd7Xe9Eu6yJDbfE+miF3g9yclRQe +qDEEN29T/tuqS/WF1p5roVoQ4B1leV4jViUrl4FL0MihmH7Ou3Tk4RAHtOHoqg1M +n0RKA12sDO9A5jmcVcWSL/fNuaws3aT4JEvhwiXPutijxe65o7EObZaEz0vFwf1Y +8Fzha8MNykjRB0kNBfri6wHHVm1Hosur3p3ZuMynFQX9vhcgydcDHQERG8iHM71l +tuMF623nlw0L8uqOTWwp9ToZAH9f88tR -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index d40ad98..058cbe9 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index 1bf25d3..bbb91f9 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -19,7 +19,7 @@ import openfl.native as fx import torch -from .gandlf_csv_adapter import construct_fedsim_csv, extract_csv_partitions +from .gandlf_csv_adapter import construct_fedsim_csv, extract_segmentation_csv_partitions, extract_classification_csv_partitions from .custom_aggregation_wrapper import CustomAggregationWrapper from .checkpoint_utils import setup_checkpoint_folder, save_checkpoint, load_checkpoint @@ -290,7 +290,7 @@ def run_challenge_experiment(aggregation_function, print("****Debugging: plan is", plan) if not include_validation_with_hausdorff: - plan.config['task_runner']['settings']['fets_config_dict']['metrics'] = ['dice','dice_per_label'] + plan.config['task_runner']['settings']['gandlf_config']['metrics'] = ['dice','dice_per_label'] # Overwrite collaborator names plan.authorized_cols = collaborator_names @@ -307,7 +307,14 @@ def run_challenge_experiment(aggregation_function, # get the data loaders for each collaborator collaborator_data_loaders = {col: copy(plan).get_data_loader(col) for col in collaborator_names} - transformed_csv_dict = extract_csv_partitions(os.path.join(work, 'gandlf_paths.csv')) + # Check the task type and use the appropriate function + if plan.config['task_runner']['settings']['gandlf_config']['problem_type'] == 'segmentation': + transformed_csv_dict = extract_segmentation_csv_partitions(os.path.join(work, 'gandlf_paths.csv')) + elif plan.config['task_runner']['settings']['gandlf_config']['problem_type'] == 'classification': + transformed_csv_dict = extract_classification_csv_partitions(os.path.join(work, 'gandlf_paths.csv')) + else: + raise ValueError("Invalid problem type. Expected 'segmentation' or 'classification'.") + # get the task runner, passing the first data loader for col in collaborator_data_loaders: #Insert logic to serialize train / val CSVs here diff --git a/Task_1/fets_challenge/gandlf_csv_adapter.py b/Task_1/fets_challenge/gandlf_csv_adapter.py index cafad78..ec13510 100644 --- a/Task_1/fets_challenge/gandlf_csv_adapter.py +++ b/Task_1/fets_challenge/gandlf_csv_adapter.py @@ -5,7 +5,7 @@ # Patrick Foley (Intel) # Micah Sheller (Intel) -import os +import os, sys import numpy as np import pandas as pd @@ -195,7 +195,7 @@ def construct_validation_dataframe(paths_dict, val_headers, numeric_header_name_ -def extract_csv_partitions(csv_path): +def extract_segmentation_csv_partitions(csv_path): df = pd.read_csv(csv_path) df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', '2': 'Channel_1', '3': 'Channel_2', @@ -212,3 +212,61 @@ def extract_csv_partitions(csv_path): return transformed_csv_dict +def extract_classification_csv_partitions(csv_path): + df = pd.read_csv(csv_path) + df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', + '2': 'Channel_1', '3': 'Channel_2', + '4': 'Channel_3', '5': 'Label'}) + + cols = df['Partition_ID'].unique() + transformed_csv_dict = {} + + # Define a mapping for channel labels + channel_label_mapping = { + 'Channel_0': 0, # t1 + 'Channel_1': 1, # t2 + 'Channel_2': 2, # flair + 'Channel_3': 3 # t1ce + } + + for col in cols: + transformed_csv_dict[str(col)] = {} + + # Create lists for train and val partitions + train_list = [] + val_list = [] + + # Filter rows by partition + for _, row in df[df['Partition_ID'] == col].iterrows(): + subject_id = row['SubjectID'] + train_or_val = row['TrainOrVal'] + + # Iterate through the channels (up to 4 channels) + for channel_name, channel_index in channel_label_mapping.items(): + channel_path = row[channel_name] + + # Create a row for the CSV output with the correct channel label + row_dict = { + 'SubjectID': subject_id, + 'Channel': channel_path, + 'ValueToPredict': channel_index # Correct label (0-3 for t1, t2, flair, t1ce) + } + + # Add row to the correct partition list + if train_or_val == 'train': + train_list.append(row_dict) + else: + val_list.append(row_dict) + + # Convert lists to DataFrames for train and val + transformed_csv_dict[str(col)]['train'] = pd.DataFrame(train_list) + transformed_csv_dict[str(col)]['val'] = pd.DataFrame(val_list) + + # Prints for easy debugging + print(f"\n=== Sample of Partition {col} - Train Data ===") + transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) + + print(f"\n=== Sample of Partition {col} - Validation Data ===") + transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) + + return transformed_csv_dict diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index 8708a52..e6d08e6 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -28,10 +28,11 @@ data_loader : task_runner : template : src.fets_challenge_model.FeTSChallengeModel settings : - train_csv : cla_test_train.csv - val_csv : cla_test_val.csv + # train_csv : cla_test_train.csv + # val_csv : cla_test_val.csv device : cpu gandlf_config : + problem_type: classification # label: None # clip_mode: norm # clip_grad: 0.1 @@ -42,7 +43,7 @@ task_runner : data_preprocessing: {} in_memory: false learning_rate: 0.001 - loss_function: ce + loss_function: cel metrics: - classification_accuracy modality: rad From 5b231b896138509a628598bdd80374a82b8f21bc Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Tue, 1 Oct 2024 14:48:19 -0400 Subject: [PATCH 12/19] added extract_csv for classification - i.e. generating of csv files for classification --- Task_1/fets_challenge/gandlf_csv_adapter.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Task_1/fets_challenge/gandlf_csv_adapter.py b/Task_1/fets_challenge/gandlf_csv_adapter.py index ec13510..958806d 100644 --- a/Task_1/fets_challenge/gandlf_csv_adapter.py +++ b/Task_1/fets_challenge/gandlf_csv_adapter.py @@ -210,6 +210,13 @@ def extract_segmentation_csv_partitions(csv_path): transformed_csv_dict[str(col)]['val'] = \ df[(df['Partition_ID'] == col) & (df['TrainOrVal'] == 'val')].drop(columns=['TrainOrVal','Partition_ID']) + # Prints for easy debugging + print(f"\n=== Sample of Partition {col} - Train Data ===") + transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) + + print(f"\n=== Sample of Partition {col} - Validation Data ===") + transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) + return transformed_csv_dict def extract_classification_csv_partitions(csv_path): From 9d932a8d32df2fcbb0926e7a2156dfbd46748430 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Thu, 3 Oct 2024 03:56:05 -0400 Subject: [PATCH 13/19] functional classification --- Task_1/FeTS_Challenge.py | 2 +- Task_1/cert/ca/root-ca.crt | 42 +++++----- Task_1/cert/ca/root-ca/private/root-ca.key | 74 ++++++++-------- Task_1/cert/ca/signing-ca.crt | 42 +++++----- Task_1/cert/ca/signing-ca.csr | 36 ++++---- .../cert/ca/signing-ca/private/signing-ca.key | 74 ++++++++-------- Task_1/cert/cert_chain.crt | 84 +++++++++---------- Task_1/cert/client/col_one.crt | 46 +++++----- Task_1/cert/client/col_one.key | 74 ++++++++-------- Task_1/cert/client/col_two.crt | 42 +++++----- Task_1/cert/client/col_two.key | 74 ++++++++-------- Task_1/cert/col_one.csr | 36 ++++---- Task_1/cert/col_two.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.crt | 42 +++++----- .../server/agg_in-ota-232347.ads.iu.edu.csr | 36 ++++---- .../server/agg_in-ota-232347.ads.iu.edu.key | 74 ++++++++-------- Task_1/fets_challenge/gandlf_csv_adapter.py | 20 ++--- .../fets_challenge_workspace/plan/plan.yaml | 11 ++- Task_1/plans/cla_plan.yaml | 74 +++++++--------- 19 files changed, 455 insertions(+), 464 deletions(-) diff --git a/Task_1/FeTS_Challenge.py b/Task_1/FeTS_Challenge.py index 50c0fdb..e78589c 100644 --- a/Task_1/FeTS_Challenge.py +++ b/Task_1/FeTS_Challenge.py @@ -539,7 +539,7 @@ def FedAvgM_Selection(local_tensors, # you'll want to increase this most likely. You can set it as high as you like, # however, the experiment will exit once the simulated time exceeds one week. -rounds_to_train = 5 +rounds_to_train = 20 # (bool) Determines whether checkpoints should be saved during the experiment. # The checkpoints can grow quite large (5-10GB) so only the latest will be saved when this parameter is enabled diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt index e070336..e9db85e 100644 --- a/Task_1/cert/ca/root-ca.crt +++ b/Task_1/cert/ca/root-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQV0dTS16yR9eekTxw55asnTANBgkqhkiG9w0BAQwFADB0 +MIIEhTCCAu2gAwIBAgIQW0jEQ6KxRUyDACxedeUaIDANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAxMTg0NDE1WhcNMjUxMDAxMTg0 -NDE1WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAyMTcxNDM2WhcNMjUxMDAyMTcx +NDM2WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC2qZxekVtUQpFCNybvCxj/r2IO+86nUB4sP+Tmnv63q1ddXq5h -gzNATL0ccKSfe7hgbJpxPS4FiUB0xf6EJV5Y1oGT4cp/UymlchPj5v7/IvFc2F3y -gxi4D+LunzQtJL3VT/S/ecf/iPItA15N4pP8+cjiDuEgpQ7CdEOuRoX0w4Xo8Dz2 -DKX5d02VqGcALoIq7lkGX2CekUBhPyD5nGOrvDnIxGi4HGUxX5AphinL9kidQiWU -OWOyWvF10MK8zHAg+AzGcBpa1Mryf5npi0TuEEa59H+QyWh2/SbOnlzDBvlyumPt -Y7nuUqS+R8fgB/kvJW7HhjWvm9qfeHTZsRhmmrWiPMrvN0Sc77cflMDWxPpyvNiI -+Ah5KCkP0KQgUyYCOaKnM3RLYDHFE0MiIY8tkzOizhtLLPtYL3A7FMr25ghqOck+ -pmaO8/q8J5xXQgUd620smmKlYa87UjGY7pypHzwpCEpbh8m4WyzglTLGCQ7S2/0M -udsm9nHexIa5WJ0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAKMPDvHAYJzSIpsaHsgIPepzlewj5ECYk/CFDdUNE5ryv02RODKeM -QOQU3Gr3A0rrEdDobz8B7aDGImshQVXrCnBjpQ6a/QSRND/6fidD93ojlaZFiq+6 -35b5GcCAe19tQ3k0uANAEWOGNh45jmQDofN+PTrn+Gw/H7RfWw7WRRySwo8anhMs -kbXoU3v7iN7ofMNknPzWjFPaU8d1NdcbX8e9gfugjuYgkhmcKIMPAdSfPJVf26dn -uddAg1C1FVFPoOjOKmsiokdir2g9uN8jH8m5/6CTXd8IjdbkiB5iLc5q0CdgQODm -B2LwFCLT5iBc3/2YbKx3HeuTlgGpKinU48FhFDD6T/E5s4fOXLuFP3B7TkXGMU9R -ZQgHWJbieB+DtL7KcDjDvHDunbAHvaCPOv/ZxtLs4NkBjjr0zqH8QG/O6TWnkt/t -Wq6PI3IAXKFODn4vRCMJbNCGsjBOKlyCw/LdGeco9LdIs+vFx1i/Jq8BMed0erUf -2lhaJM5kuGUb +jwAwggGKAoIBgQC29xJlezkW0R0BeeRA2R6B3oJC6J8nccZnuSvA0DxLIwC2mWQb +uQVUM9Twd320pf2EQ5o61qVLj2xqmmvQsn8HOTWKpb0fjFtVEev5DG8zJIuTlgvK +1jEZWQ+Y9PlGDBVmXmnwLUJOdLd+Rb22U0yb+HEJnMMlrYexYcB+lmSuX7/g81Cd +UYTlsEA2FDBvirQDZPhxv+08HOTuwOf99QI3qI3aX1BaP9d6eh5RRzg46AZtOcCP +7JEolh3KMNCrH7zfnwE0xItokB77xeDYdkyyNxBV8Wf4h+RmsOARV4F0K525kpBF +NQ0aa8m4eqmDI3XAw95k4BP2IORmHkRcGvOVP/Dm76CQysVY4mN+n7XXDaaDHafd +gw+iTOX1pb48VCH7L+JgooiSOXRX4JC0g76arT2TG5FR+Y97KswSf1A/38KQ5cJe +GOmhkzVMhQrYMe5U+CedwEQ9sRo6Kj5+tNGrkcS/tAYVz15DnvmUU3YzDOrBgJhu +kAyjbeQ4EOyl/kUCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAnkTFZ1FAOGLWrlDZzmIG5txlV3erVGVMzpGCX6utnTla4cUtKJs5 +4izvWZxUlRB0DWEieDLXEZMXI/rUV3hmn2f8T8MJS4zi9nZF+XwdgrDK4f4MTpYp +mD3sUY+l4OY47ExwZzHWZS2Qox5qQ7d7nYbchCQSv6TCgA2ZCvUtSdcxK9QTP8gf +6t8hvO7kS16EdmIER/TnBg2xiEOEJVXZ8nAjqIPXmxjLi3ZifINV3Zx66/a0oLzS +x99Iua/ppiZn9Cf8zWcTUh/Uy0x3HEGf62xOU8pFjv4QDnuiiK8mWgTslxIXEpfx +wVH4kWxosIY6LuIP0eSvTK6fhjeqLADNyUTdBbPyDLR+duR9rWjzfbrJRckFzhrR +RZH63wNAt5xOFyWzWU38HL735uYBdRfDLmn9TbjTN2qJC6auMfTYA0BaBRR4zDqQ +c1TBcOyyP7UzDhWttpN2GOA5v/Dfgae96OKbgadoQoKyngxuLbl6hD/Uu18rZUO5 +C5H5LSI99S3u -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key index e739d1d..fb3d031 100644 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ b/Task_1/cert/ca/root-ca/private/root-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIG5AIBAAKCAYEAtqmcXpFbVEKRQjcm7wsY/69iDvvOp1AeLD/k5p7+t6tXXV6u -YYMzQEy9HHCkn3u4YGyacT0uBYlAdMX+hCVeWNaBk+HKf1MppXIT4+b+/yLxXNhd -8oMYuA/i7p80LSS91U/0v3nH/4jyLQNeTeKT/PnI4g7hIKUOwnRDrkaF9MOF6PA8 -9gyl+XdNlahnAC6CKu5ZBl9gnpFAYT8g+Zxjq7w5yMRouBxlMV+QKYYpy/ZInUIl -lDljslrxddDCvMxwIPgMxnAaWtTK8n+Z6YtE7hBGufR/kMlodv0mzp5cwwb5crpj -7WO57lKkvkfH4Af5LyVux4Y1r5van3h02bEYZpq1ojzK7zdEnO+3H5TA1sT6crzY -iPgIeSgpD9CkIFMmAjmipzN0S2AxxRNDIiGPLZMzos4bSyz7WC9wOxTK9uYIajnJ -PqZmjvP6vCecV0IFHettLJpipWGvO1IxmO6cqR88KQhKW4fJuFss4JUyxgkO0tv9 -DLnbJvZx3sSGuVidAgMBAAECggGAEcuc3w6ws9kHX0jRu3Sckx5SQozwIVc6FUwF -QB2JybmA2akVeo0GY3OGcfycYSgzunsiIbmY3/Oy6p12cgfU9Pky5wYWjQh8VHC0 -dN3GhnMwSgAPSQbSE+6CSIaMlgBQGTXArZ3O6Pt9wnpjR9m02q64DiPudVh3Q2UB -yfr3ZnTc+ShcfAkX62Ge1p9xJ3CggE+3rxoAJvqWJ9M3YnIEuNCt3XwbCqLDjgeW -GyGFtWfxQ5bT4+iiaJgZEYYMzslo0fvHrmxPI19P/RTFUmc1yqEGCsTcj280J9pw -lHeKUSeLvU/M/nHGjyD12NxRNMHdKXtCBtbGJ6et0vFI5+2b0eNNpjebqt7bU0ha -icxwLBWuBtJ6q04Kvl+QZFTd/3XNaYHsnYNfifr/zaM7cXaQB1S5uoRzZTLjfiLS -z3EOpEYt0y8Kawv7B028kYiJkHO/6cTjJz6e/B9Cv6ZGhy0+slgGVTRqQgoN7cb8 -WLKviSiK0FWKk4ecphAHeseHJhpJAoHBAN2U4xlyEV3zw819pdTeqBoVKpDvC+i7 -QQpLgC349U5CFG8orwvY6jXFqb54rg5KaCY3RFAwy4lP1qjblOoc+FbgpqINSx0Z -5KomvHKDSe6SDH75cgtplilNAuhIoqCatPPOpmix0ldv3f0NWQ31kI+yje0mYbOM -7X5Ha1n2BAMc/ITVrBvoHHc2ESvWXwGoMk2O4EXes6RRbSY4kgq9KevyrWzAraYM -SN2hkmnQPY1GZgV6sQFfp1TfH++Jvfe72QKBwQDTCR8kfMjgtsCzclhaTIQOMm9b -VcUeZY8E5x73zxok5O9nhpZ9IddVNpXn0LO2iGnB6hDXWbSCdpPmxUwQowVT7zQo -j7u0TYBrkNKTDBKjHsl8N9uyyOn13ovpO4Kp4QDd2UXxOQHq2wkB+EIzcjZVb0t5 -kJflYQ5r6+42+uiKAB0c0Ypcy7LH5Baj7goQCFULISl4FqlFUPo+rZ5qJXb3KdLw -VXd2RPHR/2UMoApjbc7tlSTogwXGIq95m+sknGUCgcAJYr0b3tENgb3Rfnj/w06r -jCn5aaa/fO8MWJZdXCZH4lSrQLXpco65KF5ASyxUPqKau8yQ+QAmGNOm42YzZHbA -d1OXmaiM2wPskSd6UkVXbahJ2JcUFKzfovt0i18YHnV7vk0eMioOuhZVGbOj+7rb -21xXp0CMMnP83VmWvez9lMS9e6+GnxZVllyz1qi/kThQQLUPQJerZieRbuQAwHJ+ -JBFkgeTZG7waZzWkdcWlrk2z/bZxsHOODMV1iAgb7kECgcEAmU8VGrK0U9sv3q0A -1oijnpSxJQ8IJm7tGUi1zJzdh1PxP6ochUciYbtH56JMDBzJh5/9IBUA944hIBLQ -kX18j19E6vqQCAoNcxdAgqbQm0PwZ5dEuXsPzBgiWAttfvAAayo+j2E0rWL2BkJO -BYXBRwuVLvkGABMkIO7CnZpleGtguuDWvVcVx/VBJVH2aXNEJNOwhpcf3UVYplQG -s2IILMJrhUDxii/H5SC+Tg+tvFG3dA1XRLp6ZVgpVhUZG/2pAoHBAJX/6/y9Q3AY -lcJ38zvmKhThV6Zxx0QhYpLheRnLhi2955amKkauvr1WR/+qGbrOkndkAYZjok2Y -Cgyt3luzjCTK2ClcGn2oKhH8te9zTzeNkMwTG5mb7bS8ldcgK8CEHhvEFgIQpirP -Mqc+Q4PBiYKC0f3Ke2oSWRVQh9d7oAlTAmzn1vRWJc5QB4JoyRhN6Qt2WT0Ii5o6 -jlGLwV2G8FXQjv6IM2hWR+g06IHs7BDi6MzY6nh+MxmpByMGRY+VVg== +MIIG4gIBAAKCAYEAtvcSZXs5FtEdAXnkQNkegd6CQuifJ3HGZ7krwNA8SyMAtplk +G7kFVDPU8Hd9tKX9hEOaOtalS49sappr0LJ/Bzk1iqW9H4xbVRHr+QxvMySLk5YL +ytYxGVkPmPT5RgwVZl5p8C1CTnS3fkW9tlNMm/hxCZzDJa2HsWHAfpZkrl+/4PNQ +nVGE5bBANhQwb4q0A2T4cb/tPBzk7sDn/fUCN6iN2l9QWj/XenoeUUc4OOgGbTnA +j+yRKJYdyjDQqx+8358BNMSLaJAe+8Xg2HZMsjcQVfFn+IfkZrDgEVeBdCuduZKQ +RTUNGmvJuHqpgyN1wMPeZOAT9iDkZh5EXBrzlT/w5u+gkMrFWOJjfp+11w2mgx2n +3YMPokzl9aW+PFQh+y/iYKKIkjl0V+CQtIO+mq09kxuRUfmPeyrMEn9QP9/CkOXC +XhjpoZM1TIUK2DHuVPgnncBEPbEaOio+frTRq5HEv7QGFc9eQ575lFN2MwzqwYCY +bpAMo23kOBDspf5FAgMBAAECggGADRHaKRCj09rtOQFFilJYKQvFf1URpWYtt5QV +KYlWfUGLV//eFFLjrA+lyuWmP6TJ1sxjdIeHuD2PD5BnWjmd9FykU/qh52KF1a5Z +jmlSejNGmyzRO9SQHlDr2c/KDLRpRO5CoAsDnQoeX3FI64DIzK1zGa4ujH74XfXv +I7vHhmNFmCKZZBuCJEwyUgqgKR+d2043pxyALFaeDeYOzGfXmDU8qNg9K606zb9y +cfjl7b65Us0Y0c8i0WTjzOEuzsKOAvi7cHODun7HwCOrSMLGKcdQPRvzcYC04slV +tIB20tFk/TOFHn2LCxu9lRncMkUsSw88uD18gc+MsxbAGwLARd5UlLqLVbV4o8H6 +9GOAquUnVS8Vs/MeuMzhHg/ojGQJ0gvtX9N6HlC7+EqRmDZXvZOO9DT7mfuisTqq +SqEpb0YTzok5zCz6WBjG/F+tvzT0AX8vGl7OARuVIAus+lvlKzSxcYXwIHgDBeg/ +KCxf1zEs6LvjgYzlUFvLe14CkFLhAoHBANwaMvFqxwy2RPa7+eRixwLJEaDiostv +bBqn+fYIkbCns69uOooqxkp+U6TfLyL9vSe5k8m0J3ViS2v57cTztaNru6pfmh2R +7T0nN3uO3Ygh9e8jN4Z2RrrLlo6i8fI26QWGeRxNLrDg5NK2697YWoBkABuJmKCw +VXyrnuTKjeenPuVKOBjWzjLSqp/ZphISO6wHsrp01Hc/oSuMnb0TPni2gWB1/9sI +C77+4/jk6+Dg5oDE7jDgoS8eIojgkDhP9QKBwQDUzk4TSVopybTk46fFSp6sNGKX +MLLHGlzRqzMOF9NJH0C1G95pOZpqLHksw8pswk2m35iH92oRIfvkRXc43Bdw6EeN +YLF8VmGm1sZ/4gFvjI4+7EEzfPVPwNtQGOJPfucYEkVTfSLhU5+ffZbLAnoP/UGG +xo9Y0qLbV9uoLAUd0XyOKKjYCmI+UsmpUyfO6rm3gIOtPsjG7j9b8ufCwlQrrFYy +2I0ccvlHgIBTd4HzZ6Sr3mcz2PyK6srjvXKjkxECgcBN6MArkF5Q85vJspQr8YL8 +S2wABPkXBaPAc8EZA8N+Qn5qFJyIF8gEyl6VN6MZwbNZAml7tldZR6fm2pr9Yj7j +T9kn35tP6D2PrfgHtnRYIZ1KPq8C248Bw9rRNoBp+mHVYNox2Gg0mAanR7SKNw8h +70PSe4wZJRG9hYpC9ifw3dR3mSPuNuraNpPK7WHJd8bDiB4NvhkO9Oj531ZefRdZ +51A4csxUHa76toK/sViFS1aMMikWCA1F/ma/CK5EIJkCgcBNb+UpT3/nxOZ2hAEA +4e5ra4SUz7u+h/FOuqWRc0oHScAaJ1H/qF5wVE6j43s9qFbpamPu1jFamqs2nbCM +mEpPY7bl01HClQxj0bPZxTwQg20fqIjxW39Izj0AII35r4wYTk2728VdiTiEqQa+ +SOByAQ5fJNH02HE6r/XWdG5IM3rHoDQQqXamhymq2/+YZAHArJs956LYAMo9g16i +mGRYoBWd2v8+Yvgi9Le9p7c6A3UAtaWIUGVVh6rcxIt6yoECgcAh4dFxsPzH4+3Z +xNySvBVV7WV4QsdgP47Exm/y/wGIWiijcESaY+bep1y7Vtw4+k5v+apKC0J7B6oT +k2qebsABf/i9OIok4G01++5Zkfe7mriF+irCQjPT+PttG/UVS3KRqXOpLChhr9LF +TFLzn7lKc67hP66uhB1j0XDodi9kYaisSX8KSchUfH47OssKG8dpJApvtXt6lNK6 +R+I4+9D2DYi5qVYixtdJP5aUzbgwsng27G2OAf2F+BOoCOtuXco= -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt index 5f56ec9..b810204 100644 --- a/Task_1/cert/ca/signing-ca.crt +++ b/Task_1/cert/ca/signing-ca.crt @@ -1,27 +1,27 @@ -----BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRAP/wqarLkUmEr9QLBpHdCIMwDQYJKoZIhvcNAQEMBQAw +MIIEjDCCAvSgAwIBAgIRALwWpD0DCUajjzNlO/Gt208wDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMTE4NDQxNVoXDTI1MTAwMTE4 -NDQxNVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMjE3MTQzNloXDTI1MTAwMjE3 +MTQzNlowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEAoyNZBwWglUD+ayaMyK54T1PDnZetVXh5a3NXkgjE -rGqIk4FadN++mpzmfoXgjvx/SByXJ+W8ckWXLS/SEMeqYo7r1Z1gak4lLE0otPo/ -HmX5s+rBdD4XKNKLY96VJYszw45380rpZxEjVnFfeZL065UKhVL9wCVL9C16khey -YDRRNNoAVyb5TMiK7SSImlxDz5INYi3t/3hFJ91IQ5+cPgoXZRAa9DC1ZdRlosKv -qzI5X8MyDpJKTRYUt2eytTaF7A3azzyPBwLii+E8MIy+XK+6q4VwinET1SBQm/54 -KIA55qp2vKlVgu81IUM6GTHpiNHsCvMX7I53vYrm4nerPUVP0S4tUlHmPH970Dfh -wJOSQA63wxD5ie1SRKHuNAWsaCNzyLw1aPb11nmrxWIWncoKSC7e1OXMhDSwljlY -zXMhMQ9AZGcsk/va5C/gNQgs0nKtf3A5bbuKypbZSFP12+IRx8NUr0DiSE2GZXZu -vmCCHePUvTI6zZGKY62nP+4zAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBAJxnY1ZKsCjDwpnL58cGFeMRSIHHWLTqbdXj5Qxp1JRI -p3T4jfliNcVVgGSGhbRURYBmvqKHIFVirS1NsRAgVX4y6eHQAOfJS/6HomQuaoi4 -NJVeuYIV6icqJ/0FDrQvQE79LeZQxZjgcJ0/aboqNFzW1rl5StK8wXoTaYe7+C7t -e2Lprr4HXfVUeuVh6SGQnia7dOMjJO6J6nPULZlzipW29MUBVjrtn+t80E5LKbFa -KM7YzWPo8YTE7pw9kR5+CCtXBHoxU+El47HuBI2UkZKMdI4yniuDY/xUUTuauOiL -haOZfpUHmqk4VD1loxRBG3sxIsRsx5voH65Fmp6aZbTvYuEky1G/GdchSdWigtJ7 -wTJrcAZLrTHnjxgdVTxxmfms6EfSLPwt1JgvLTTpFzF/1m3gM6+60A1ic/PqWkQq -55jV1/VsWsoPcr7ABYVSxcCt1qP6bv3y04ZIv55uchGEEDF0hu8qqxPo/GG7E1+T -247GNg5stSj9ZHtdn1S9Yw== +AQEFAAOCAY8AMIIBigKCAYEAtMKcjEy3FBPy0sJEVUsca9rahLEx9UlFf18VBiIH +qdfx1USfpmGwjOObKmGvFISPdf7xyNWQDIDrxdINQYNO65TNT6GiU4FWJPCiJ00B +kHDNHd6WJIezj61Q8GXSzUEFP0reCCjEc/aIHKn+QNdsthObDDGeMG5HeffwjOTQ +7gSIL/xMILECG3FqOUk3MrKT1s+fs9MQ+QGllxqPGzRkv+wtz/G1njwzi8UvozhP +NmWtE/uVsZZ7cf6TupaiC3Fr2TgoHYQ0fKO4/fIFqJ/7nfYQ7hoR+FDeSe8X54yT +WWFHJyYeeraf/Tvjun9t8oRpFXK9173pk9Y0XdJNZvfwRmGhJnHqUMExBoyzZBzK ++WfAwJDDMyofMQBxj/n/WO4lMP7mhTvXZAXGUG6WxTCpj2u5cA7amjH+yfB2d/pQ +I9i6f3ddWzr+++QwLuw1BEoi3vY1zC5z6wpUq4olDyy8/Ch82FgOeWncdTjWVEoT +LBqWNG60PDQdXJqbAACllDqzAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBALQl8i4Qb9uuVKQo7jDE+CfI11emIWaHydcSvZn/C9Pj +ViwEIMTPL9w8uVeVxpvT/8eEQMfkNqJQ+1gPRnYrU0IcNDcUtNkD9Qq37TZw/m/K +rfeN9YcmNXKdEhCHNXpSOk+bDNzepA2dDdQrU0a1WXthzrDtKJWTvxQKf1pp8Zri +GxXwqdz1KZttvyQwqCjHA9tR7fRjLjsP7Lc/AROB5gO1Ph/f2GBPgfj2QHxS5oyp +Eo2rIFZu7VmgD4+9C0DBwoNtur8uQMZc/cPr5r0Jd/rijG7mntJDJ4k5jr/wBIpA +4XhMIYNm5I20Cqkkd0UpB5kU38y2DOLTYSCgT4qVwKUdiaTY3IgfqVY0DLrCWbbz +CIRmYl816skvN8yH9Gg77BPOzIsc72rudt2h1w9ZDWm36Yo92dYLP6At7FIa5GnD +7TPxlBq0NWW8znJ4roYRAlr66nhXhoxytWGcLDyIQUU3CJIowH15319Bau5fAJfm +kfUFdfHcZrCdvkkBy4vk2w== -----END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr index 039eacb..1b10e38 100644 --- a/Task_1/cert/ca/signing-ca.csr +++ b/Task_1/cert/ca/signing-ca.csr @@ -2,22 +2,22 @@ MIID4TCCAkkCAQAwejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk ARkWBnNpbXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoM ClNpbXBsZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkq -hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAoyNZBwWglUD+ayaMyK54T1PDnZetVXh5 -a3NXkgjErGqIk4FadN++mpzmfoXgjvx/SByXJ+W8ckWXLS/SEMeqYo7r1Z1gak4l -LE0otPo/HmX5s+rBdD4XKNKLY96VJYszw45380rpZxEjVnFfeZL065UKhVL9wCVL -9C16kheyYDRRNNoAVyb5TMiK7SSImlxDz5INYi3t/3hFJ91IQ5+cPgoXZRAa9DC1 -ZdRlosKvqzI5X8MyDpJKTRYUt2eytTaF7A3azzyPBwLii+E8MIy+XK+6q4VwinET -1SBQm/54KIA55qp2vKlVgu81IUM6GTHpiNHsCvMX7I53vYrm4nerPUVP0S4tUlHm -PH970DfhwJOSQA63wxD5ie1SRKHuNAWsaCNzyLw1aPb11nmrxWIWncoKSC7e1OXM -hDSwljlYzXMhMQ9AZGcsk/va5C/gNQgs0nKtf3A5bbuKypbZSFP12+IRx8NUr0Di -SE2GZXZuvmCCHePUvTI6zZGKY62nP+4zAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBAICp7K4feE+bawY7 -/7vZVef2OtSmIaTb3CTylMNuOiXoD7zWHgO3TVcwAoZzcZo49TXPv0MqN1p3OS46 -dN/0jakiVT90RFEqh4I6S4dHM38K36aXRFZVQwBODqIL82Z+VDgaqnskLTpp20dS -4pJJNvRbCsCFI4hHjIJsvL7FmlBGLGZAWOrLh2+bMWJ5JFd2DEuQubHybuB1NXJG -VAe0DNNX+riIFPKzblIG4bifdNYbIBAFuAFxMOEMKoJMxFz2tIsO6OGfHFdMbv7g -BCtbH6/n2BZ2F8OciHbVNCNkpeL3HhGweo/ZqYdALGGcwZMmRlpaUOBhovNpuNhn -5roWAN3Ufx4WerTi6LBvuEO4ugcJRFqyQIQbBQVwwL9y0KX/C0epjYkhdjwYO1Yt -sAQPK2TttIaNh0lidXtQ8AZtyL6uDMCS9rqNThWRg4ho9SsC9DumahlE8fElx5CS -ZD0H3m45jTdCmCwNZGjdX7V5zcZh03BRMUBUtzQAiqf5ErvDBQ== +hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtMKcjEy3FBPy0sJEVUsca9rahLEx9UlF +f18VBiIHqdfx1USfpmGwjOObKmGvFISPdf7xyNWQDIDrxdINQYNO65TNT6GiU4FW +JPCiJ00BkHDNHd6WJIezj61Q8GXSzUEFP0reCCjEc/aIHKn+QNdsthObDDGeMG5H +effwjOTQ7gSIL/xMILECG3FqOUk3MrKT1s+fs9MQ+QGllxqPGzRkv+wtz/G1njwz +i8UvozhPNmWtE/uVsZZ7cf6TupaiC3Fr2TgoHYQ0fKO4/fIFqJ/7nfYQ7hoR+FDe +Se8X54yTWWFHJyYeeraf/Tvjun9t8oRpFXK9173pk9Y0XdJNZvfwRmGhJnHqUMEx +BoyzZBzK+WfAwJDDMyofMQBxj/n/WO4lMP7mhTvXZAXGUG6WxTCpj2u5cA7amjH+ +yfB2d/pQI9i6f3ddWzr+++QwLuw1BEoi3vY1zC5z6wpUq4olDyy8/Ch82FgOeWnc +dTjWVEoTLBqWNG60PDQdXJqbAACllDqzAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBABmFhQ7991aBGsCn +C+mqOjdwUS5XFmclWDeHImQPXaLU0By9mKpeI0epCisXjroXmnVDxLPZ0QkJ0lW9 +ecoM5Ik/6GcFDXaheizSw+/CX7eaSB+rp1DNBehHb4r3E9qNt28ZrvoilwoE7aAC +OfiiZYHb55+DgAotOO8S0yCsxd043ZyCyXma0NmbhYVxMMW4wHZXlPZcZMPwJuP+ +ktUrqD7LJPifJEjjc2ynMfYpNo20CaI/v45D+ocIcGYov4HgZDUB1fDoCf+GqQHY +H2QwMPB6ODbCgh1ZYB/y6Ahs2E2zd+75uo8V40i9xTj6KcTIEny1rP/RjXiuZWmQ +XmutJ8999NVAX1ZpME00f6REFJeZ+TIWJUJmVsSXbqp+pciX0n4mlTMqPE9q4p9t +w5mURTUJHBPLxBJxZc1vzZb/N2XuJ3DX/lUQLiOdViFUDhBcupunFlEDS+kPHL0t +7zKMRcUWsFrXx+QnahhJphP5CSVbdUx0DJm/T0/D5FJql4f8eQ== -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key index f395740..41c1ff0 100644 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ b/Task_1/cert/ca/signing-ca/private/signing-ca.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt index 2f86764..d587b1b 100644 --- a/Task_1/cert/cert_chain.crt +++ b/Task_1/cert/cert_chain.crt @@ -1,54 +1,54 @@ -----BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQV0dTS16yR9eekTxw55asnTANBgkqhkiG9w0BAQwFADB0 +MIIEhTCCAu2gAwIBAgIQW0jEQ6KxRUyDACxedeUaIDANBgkqhkiG9w0BAQwFADB0 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAxMTg0NDE1WhcNMjUxMDAxMTg0 -NDE1WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt +A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAyMTcxNDM2WhcNMjUxMDAyMTcx +NDM2WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC2qZxekVtUQpFCNybvCxj/r2IO+86nUB4sP+Tmnv63q1ddXq5h -gzNATL0ccKSfe7hgbJpxPS4FiUB0xf6EJV5Y1oGT4cp/UymlchPj5v7/IvFc2F3y -gxi4D+LunzQtJL3VT/S/ecf/iPItA15N4pP8+cjiDuEgpQ7CdEOuRoX0w4Xo8Dz2 -DKX5d02VqGcALoIq7lkGX2CekUBhPyD5nGOrvDnIxGi4HGUxX5AphinL9kidQiWU -OWOyWvF10MK8zHAg+AzGcBpa1Mryf5npi0TuEEa59H+QyWh2/SbOnlzDBvlyumPt -Y7nuUqS+R8fgB/kvJW7HhjWvm9qfeHTZsRhmmrWiPMrvN0Sc77cflMDWxPpyvNiI -+Ah5KCkP0KQgUyYCOaKnM3RLYDHFE0MiIY8tkzOizhtLLPtYL3A7FMr25ghqOck+ -pmaO8/q8J5xXQgUd620smmKlYa87UjGY7pypHzwpCEpbh8m4WyzglTLGCQ7S2/0M -udsm9nHexIa5WJ0CAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAKMPDvHAYJzSIpsaHsgIPepzlewj5ECYk/CFDdUNE5ryv02RODKeM -QOQU3Gr3A0rrEdDobz8B7aDGImshQVXrCnBjpQ6a/QSRND/6fidD93ojlaZFiq+6 -35b5GcCAe19tQ3k0uANAEWOGNh45jmQDofN+PTrn+Gw/H7RfWw7WRRySwo8anhMs -kbXoU3v7iN7ofMNknPzWjFPaU8d1NdcbX8e9gfugjuYgkhmcKIMPAdSfPJVf26dn -uddAg1C1FVFPoOjOKmsiokdir2g9uN8jH8m5/6CTXd8IjdbkiB5iLc5q0CdgQODm -B2LwFCLT5iBc3/2YbKx3HeuTlgGpKinU48FhFDD6T/E5s4fOXLuFP3B7TkXGMU9R -ZQgHWJbieB+DtL7KcDjDvHDunbAHvaCPOv/ZxtLs4NkBjjr0zqH8QG/O6TWnkt/t -Wq6PI3IAXKFODn4vRCMJbNCGsjBOKlyCw/LdGeco9LdIs+vFx1i/Jq8BMed0erUf -2lhaJM5kuGUb +jwAwggGKAoIBgQC29xJlezkW0R0BeeRA2R6B3oJC6J8nccZnuSvA0DxLIwC2mWQb +uQVUM9Twd320pf2EQ5o61qVLj2xqmmvQsn8HOTWKpb0fjFtVEev5DG8zJIuTlgvK +1jEZWQ+Y9PlGDBVmXmnwLUJOdLd+Rb22U0yb+HEJnMMlrYexYcB+lmSuX7/g81Cd +UYTlsEA2FDBvirQDZPhxv+08HOTuwOf99QI3qI3aX1BaP9d6eh5RRzg46AZtOcCP +7JEolh3KMNCrH7zfnwE0xItokB77xeDYdkyyNxBV8Wf4h+RmsOARV4F0K525kpBF +NQ0aa8m4eqmDI3XAw95k4BP2IORmHkRcGvOVP/Dm76CQysVY4mN+n7XXDaaDHafd +gw+iTOX1pb48VCH7L+JgooiSOXRX4JC0g76arT2TG5FR+Y97KswSf1A/38KQ5cJe +GOmhkzVMhQrYMe5U+CedwEQ9sRo6Kj5+tNGrkcS/tAYVz15DnvmUU3YzDOrBgJhu +kAyjbeQ4EOyl/kUCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQwFAAOCAYEAnkTFZ1FAOGLWrlDZzmIG5txlV3erVGVMzpGCX6utnTla4cUtKJs5 +4izvWZxUlRB0DWEieDLXEZMXI/rUV3hmn2f8T8MJS4zi9nZF+XwdgrDK4f4MTpYp +mD3sUY+l4OY47ExwZzHWZS2Qox5qQ7d7nYbchCQSv6TCgA2ZCvUtSdcxK9QTP8gf +6t8hvO7kS16EdmIER/TnBg2xiEOEJVXZ8nAjqIPXmxjLi3ZifINV3Zx66/a0oLzS +x99Iua/ppiZn9Cf8zWcTUh/Uy0x3HEGf62xOU8pFjv4QDnuiiK8mWgTslxIXEpfx +wVH4kWxosIY6LuIP0eSvTK6fhjeqLADNyUTdBbPyDLR+duR9rWjzfbrJRckFzhrR +RZH63wNAt5xOFyWzWU38HL735uYBdRfDLmn9TbjTN2qJC6auMfTYA0BaBRR4zDqQ +c1TBcOyyP7UzDhWttpN2GOA5v/Dfgae96OKbgadoQoKyngxuLbl6hD/Uu18rZUO5 +C5H5LSI99S3u -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRAP/wqarLkUmEr9QLBpHdCIMwDQYJKoZIhvcNAQEMBQAw +MIIEjDCCAvSgAwIBAgIRALwWpD0DCUajjzNlO/Gt208wDQYJKoZIhvcNAQEMBQAw dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMTE4NDQxNVoXDTI1MTAwMTE4 -NDQxNVowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp +BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMjE3MTQzNloXDTI1MTAwMjE3 +MTQzNlowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEAoyNZBwWglUD+ayaMyK54T1PDnZetVXh5a3NXkgjE -rGqIk4FadN++mpzmfoXgjvx/SByXJ+W8ckWXLS/SEMeqYo7r1Z1gak4lLE0otPo/ -HmX5s+rBdD4XKNKLY96VJYszw45380rpZxEjVnFfeZL065UKhVL9wCVL9C16khey -YDRRNNoAVyb5TMiK7SSImlxDz5INYi3t/3hFJ91IQ5+cPgoXZRAa9DC1ZdRlosKv -qzI5X8MyDpJKTRYUt2eytTaF7A3azzyPBwLii+E8MIy+XK+6q4VwinET1SBQm/54 -KIA55qp2vKlVgu81IUM6GTHpiNHsCvMX7I53vYrm4nerPUVP0S4tUlHmPH970Dfh -wJOSQA63wxD5ie1SRKHuNAWsaCNzyLw1aPb11nmrxWIWncoKSC7e1OXMhDSwljlY -zXMhMQ9AZGcsk/va5C/gNQgs0nKtf3A5bbuKypbZSFP12+IRx8NUr0DiSE2GZXZu -vmCCHePUvTI6zZGKY62nP+4zAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBAJxnY1ZKsCjDwpnL58cGFeMRSIHHWLTqbdXj5Qxp1JRI -p3T4jfliNcVVgGSGhbRURYBmvqKHIFVirS1NsRAgVX4y6eHQAOfJS/6HomQuaoi4 -NJVeuYIV6icqJ/0FDrQvQE79LeZQxZjgcJ0/aboqNFzW1rl5StK8wXoTaYe7+C7t -e2Lprr4HXfVUeuVh6SGQnia7dOMjJO6J6nPULZlzipW29MUBVjrtn+t80E5LKbFa -KM7YzWPo8YTE7pw9kR5+CCtXBHoxU+El47HuBI2UkZKMdI4yniuDY/xUUTuauOiL -haOZfpUHmqk4VD1loxRBG3sxIsRsx5voH65Fmp6aZbTvYuEky1G/GdchSdWigtJ7 -wTJrcAZLrTHnjxgdVTxxmfms6EfSLPwt1JgvLTTpFzF/1m3gM6+60A1ic/PqWkQq -55jV1/VsWsoPcr7ABYVSxcCt1qP6bv3y04ZIv55uchGEEDF0hu8qqxPo/GG7E1+T -247GNg5stSj9ZHtdn1S9Yw== +AQEFAAOCAY8AMIIBigKCAYEAtMKcjEy3FBPy0sJEVUsca9rahLEx9UlFf18VBiIH +qdfx1USfpmGwjOObKmGvFISPdf7xyNWQDIDrxdINQYNO65TNT6GiU4FWJPCiJ00B +kHDNHd6WJIezj61Q8GXSzUEFP0reCCjEc/aIHKn+QNdsthObDDGeMG5HeffwjOTQ +7gSIL/xMILECG3FqOUk3MrKT1s+fs9MQ+QGllxqPGzRkv+wtz/G1njwzi8UvozhP +NmWtE/uVsZZ7cf6TupaiC3Fr2TgoHYQ0fKO4/fIFqJ/7nfYQ7hoR+FDeSe8X54yT +WWFHJyYeeraf/Tvjun9t8oRpFXK9173pk9Y0XdJNZvfwRmGhJnHqUMExBoyzZBzK ++WfAwJDDMyofMQBxj/n/WO4lMP7mhTvXZAXGUG6WxTCpj2u5cA7amjH+yfB2d/pQ +I9i6f3ddWzr+++QwLuw1BEoi3vY1zC5z6wpUq4olDyy8/Ch82FgOeWncdTjWVEoT +LBqWNG60PDQdXJqbAACllDqzAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ +KoZIhvcNAQEMBQADggGBALQl8i4Qb9uuVKQo7jDE+CfI11emIWaHydcSvZn/C9Pj +ViwEIMTPL9w8uVeVxpvT/8eEQMfkNqJQ+1gPRnYrU0IcNDcUtNkD9Qq37TZw/m/K +rfeN9YcmNXKdEhCHNXpSOk+bDNzepA2dDdQrU0a1WXthzrDtKJWTvxQKf1pp8Zri +GxXwqdz1KZttvyQwqCjHA9tR7fRjLjsP7Lc/AROB5gO1Ph/f2GBPgfj2QHxS5oyp +Eo2rIFZu7VmgD4+9C0DBwoNtur8uQMZc/cPr5r0Jd/rijG7mntJDJ4k5jr/wBIpA +4XhMIYNm5I20Cqkkd0UpB5kU38y2DOLTYSCgT4qVwKUdiaTY3IgfqVY0DLrCWbbz +CIRmYl816skvN8yH9Gg77BPOzIsc72rudt2h1w9ZDWm36Yo92dYLP6At7FIa5GnD +7TPxlBq0NWW8znJ4roYRAlr66nhXhoxytWGcLDyIQUU3CJIowH15319Bau5fAJfm +kfUFdfHcZrCdvkkBy4vk2w== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt index 8334ac1..43280f7 100644 --- a/Task_1/cert/client/col_one.crt +++ b/Task_1/cert/client/col_one.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMzCCApugAwIBAgIRANmSuZCWS0IhuM1UsGj1WCswDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MTAwMTE4NDQxN1oXDTI1 -MTAwMTE4NDQxN1owDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAy9rYzB3u+RH89Fc1sQUKoepMHywGVYiD5PPfy9SWek6rLh4d -/uCFEpHtqC2K24ERw1nlRurKMAs6aNe1EGo5DHRIQzDaS8R7XAD9dMDlzTlaK7RE -Rko/XPAQTdsOQ8vgHAvymh8T1Yy9c6wCgpaODgeRclZnhRaBI2B0hwGgtAY7Il4X -2ezXftDvK/u7Mmf13v1nlxnm+GjZM+kEQn8GXcuyNm4E+rib89ZDMNaz0OyHYr/p -wttylDEuuAwzvdd//3ZCEA2RyqsSEF3Ean2JUbWYeS/27rIvGnPFcVjCS/3jQTa0 -wLYhsKn3BnHojJF0I39SjlAUAm9CqjTEXdGFYCwB6F6XHiTpCN1wstLVb3LQ+7zr -1ZE+uiaKL5EEn7VVSUjviDVew48iP0PmKKlredFYDhD+KK1y651NUq1g5XGIquMr -pX2h43b/1RAlfZBv8u/W7AFC9h+dA+hDr1r7AgPMVE3mjecaqDMnCPgKWBcV8+q2 -wGVEsjo1d18mfglbAgMBAAGjIDAeMAwGA1UdEwEB/wQCMAAwDgYDVR0RBAcwBYID -b25lMA0GCSqGSIb3DQEBDAUAA4IBgQCVmxWY27TT3hPKZxexn0u57wxHIxlyo8kf -72VvKVcHggajWTqaIIwpUzWQ7FC39gRFudoHllM6AsBKjlMMVJ3zFpatrnf2q6BA -OvExCMc4CMFEk3KK0dwAF/lZE9uqZrbFmAMuD0BlzZbOccRzQrW0FVSQnvMGE0Ph -OuQ/IKabrEHTYXxr217Qn96no+bXSUIZbyeGi+/k5sVA67FcHWfpF2J9Qwr8DCI0 -CE+UhHH2LjAFJzD+aHyEQfRo6DRLTzoQik8SBOLtuYykrQ+egRu2nvF9etrjDjuH -RPqIlNwCScJKC10G/8pxkfk3WuRchWbihvieYR0oZPVETxE79TB/KupZoMGSZGAl -yfzxssP+5o5SqKXFdnBEmP8BbAUdGPA2oshR7pYFXadsEtoSR4SooDwSJwsUEDvA -HUBa0YqrJ2meQ38WnbEAZIRFXeRKtWEixdbn1/t+ow3CPvIDwf90z/t1KKbSKxnQ -R+U97wPhzk448RTfzkTTlRdfwViRi5Q= +MIIEMjCCApqgAwIBAgIQb4O/yUDuRWOMdh6ec7rk8TANBgkqhkiG9w0BAQwFADB6 +MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow +GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQxMDAyMTcxNDM3WhcNMjUx +MDAyMTcxNDM3WjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQClBBzNilirzXxpMHAM16DatERWOFShCAJKEmBW/+M2+Eggx+UZ +VYZGwwstABjwsPCw2bUFhMziHMyuXR9DV/4zuj4f9eGR9XSuwUch3n7MMpJ7hy3P +rEg6nS+NM/1cGQvoH6RJ/Kj7iXncTNKXVKncF5NwylUPMS99iVRsfIu601eaWTkv +1Bw4kVR/+DW7AiNjGABRW+Oex1xAWsp99c/E4DVW6X7ct6y5XgbjbbVveNH3KL8q +Z+zJxECjtTrc2suIKUxll4/i1G6Skg6PewSF7jpoPcNboBFQcpAsZ2qNATuRjfpr +f5giePMDVKDKrW/0uEiHOAKL6B7EBsBb8OrhZUwgXjAht1uCNIe7xE529pN0DzCN +l+WoCon0YrJCP84fkEBgAmMyv1SGQv+1RpRa7Z1c+1yEs58rJtdHvbhTqlAOmrqk +0snIL8HmOtA1Uqdc6bTU8ORE2JwdxDA80JI2GTEjiE98uMcBAl1R0h03633r14Dz +Kw4WKA5nbE7dMCUCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv +bmUwDQYJKoZIhvcNAQEMBQADggGBAJKH2/OZcCMlj6OQ/XrrieME6Z6r+0VuTMVS +loIfjawa6G32tldmaByswBkF4wmcpvkrHdOgGk8zh8ExHd8wlZyxduAwcg2rNMO4 +9KAEtAsRBtNczgsLq6n5Zdi/waVXaOMmMxLZ0JCP3dH0hedDo92n+ohRThH35+4X +Ueb7ecsFdyOJNOO0O98VeHOvkiUQlkTfkDvwKz6lxVXsqk0Ke5zdavBpOp9qveID +VY2AUa7PktCv/mKPC84c5sgxgHsIC4GghZZ2udFCJPFdR/s/uy2QvGetHOXMaZPC +JHLEB3OQAOsVI+PMEdc0tvN+QZK9dHZiAwP83iGHxuyRNmez+IGIoeTTTVzuJa51 +/1euwTbwU3Z3H9IKBhs3aOGCJZ2dSXe2aoci5pqbME85vFsKqRwKCHbSBBa2xinf +C/SJ7jPl5iUN4TSH9kGBYGYJ6wiBRWHyFv1FEVrJ9r5F/7Ik43yv0rmTnOCLDmXY +8vF+1wjRw8zY+GrOI18Pxd3A1FGNQQ== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key index f7bc833..a72d44f 100644 --- a/Task_1/cert/client/col_one.key +++ b/Task_1/cert/client/col_one.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt index ba8e3bc..3182e8c 100644 --- a/Task_1/cert/client/col_two.crt +++ b/Task_1/cert/client/col_two.crt @@ -1,25 +1,25 @@ -----BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQfJL287tTT9uaavWZ/8KjBzANBgkqhkiG9w0BAQwFADB6 +MIIEMjCCApqgAwIBAgIQdPN54YQjSr2xGuhcn5vNRTANBgkqhkiG9w0BAQwFADB6 MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQxMDAxMTg0NDE3WhcNMjUx -MDAxMTg0NDE3WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQDtOs1vy74QEOYHyX0NRM920YjSzB103YfKB8rNlzYHg8spgbKf -2p1GT7vKRDBAuXuKMzNPOwdNwMW+c70pcnRzGws+7rkcIruSuhUnJXzIWgZvgUM3 -1dVsjuhJOqZP+u2+Hx55tPDlGDe0G8vNWGoOCLbCbXXjxV0OznTeiQ02u9PCIfGN -iJeu621F7B2gjyjZWnD4S0tjfIPMcOrdNVsobxVYdmeiwDIcjYUqH84gf9hK2Ty6 -9F1ClnAMMVNTCA7be9ymF+AiJA8ZJiVB9KesbyNR3GSA8cvzRlGcpghn+OwvV+Zn -aI7v15/UI/4bP3zsLpjlHBt20cyrktuPM+u3n/E6Q/8Yxm8nQvwxBeFv0UPScmlk -84nv8siSbWrOE8tQYHd96Y6rqPxj5uGh8GANmL0cUpHZzqMZnikjKdvRuNe85rLt -twHRHNcww6ntTaqIuiLlWk5kaIvwwNiW0Fc5OL68SUXd7GZ8Q/jkFCmjpVUc3vI8 -HJtVydNJ4b8zsikCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 -d28wDQYJKoZIhvcNAQEMBQADggGBAIB8ARj3QFvr34iYEIj3/bJPNnUZuPwgHFN4 -WrH0OcNkZvpAPfXmP1BmXCJlo3WEYbBVusqPc7bVeI8cUg5q7o+wJCGdj+x60lao -yRSf8cPHDuLgWhyNd3zMoecpWtWz60WOMsg7DrDmoydCm7jdX10xvEUwD6zrTZYw -qRnVAb0kMUyb3isnhCmJnewECWOoDRAkZY4X5koMXCg36yCk9p1CFMF2656ML3/O -9MPTqTCIDy33VuvCmHsH1fXlKE7pMLp7NgB4OPawnI5aha+QWbjX/ZHGxUtr9Wav -zo8lqV95zWWLA/8J11yFeBbp6PvRjJgE9AXmv0XtlUVQ2jASzID6fGO0sx08CJ2B -cLgeLGsDCBHhSy/2J+vgQrEC140H5dqzPFhmX8ZKMqi6wznUguhSRqQOIk/ah0vk -fo24iMEWqLMK3Z8I2XNc9hMkideZcLtY5LwzjoxDJHLVcmBF3q61Xo/9nn+XhmyO -0yzdI7h5E9H7DRatJQ7mNLpKWYEWWA== +MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQxMDAyMTcxNDM3WhcNMjUx +MDAyMTcxNDM3WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB +jwAwggGKAoIBgQC27d7sLdslTh65WAePpRPSQUvCJVVYnAEq3O+wKpfr6ayZzkbt +F3L9h/fXe2eCfStdbEe8OafMoxyV7KfAxdGyp9wq/BG08o2v8P5VHIIl0h8jwT/I +SQpkDNo+ntafx/QZtrgLOX2HCCpOqZA9G+cfsywauMlEB66yl8bvcw5ZJCn4jSXk +mvNnFP9WtbQnsEXm7nndxiZtniAPSr+YuPz8YDhBmo+qD576zPnN7+K0VLkJFZAl +2IBD1JWfI62UIBFXVeNZpQKdtLwcwq1ZvhIveJ5uCmFiypoZt+y6rwlm/VQZbXFY +uTw+lshyykbPfg01VXDmc4HEXCvpBJvs+/d1zuelIEZntUWtKs3JNu0S1fukBVMW +les455Cc2tjLG5V5YnMm8UP0PjbWZ/mLsB+wcWFHyvQWIl3asQkXlSLR/qLOXH/f +gjr1K2hwDBw8ekP/L77Sv76KlFUeJmUic01BzeFZ3DL5MJaNfGAhdz94iy0THhbi +ioaRK4VmEQHnVv8CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 +d28wDQYJKoZIhvcNAQEMBQADggGBAECVRIHioriyBwIjFfiYRyNUsMdvDoexJx82 +xP0lK4ibLM1Ej5b1Zhfc5Ew4fHjR3+XAs6UOAP/wUIuPLXwg6HbhF++Re3qCXgow +pPPtbLQq48Q+9KRRjBTkidT8IoOMOI1mcASE8kAdItpfxcs7ZcyIfs87T9HMWe4G +x5uySy7johvOQu1qcTtqaUI+ORTqPjyaxJ5FtaGIr9zyMcQuuRvCMsjaq4IIzWql +EhjWtdIX3PRZA7Ttyuys0N6OMRlIIXH+8IwIQAS3hF/DYiDa00B9KQVHCEoI1JEt +le6eqTAG5GCjlkgK+gLdSY00Ntt88MZwxZQhyGa+xG62jJU1+i0Ui7Drt47XB2LH +dEtUFOcWZBTwH8+SpFo3VyH3N6pLQWn4uElyh12+7g5NGJaim1ZjP3qV5dmh8fgx +Mp+TpWdXvxKEczMGiauf79hOQ38YL9VY6XuTS8V8gAae1alXEizIWHzuOIIoHNe6 +CenigKe0efXI4Wj9VuQ3LDi2mCWe2g== -----END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key index c2a6edb..8427ff3 100644 --- a/Task_1/cert/client/col_two.key +++ b/Task_1/cert/client/col_two.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr index e0e9c6e..d17f872 100644 --- a/Task_1/cert/col_one.csr +++ b/Task_1/cert/col_one.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- MIIDqjCCAhICAQAwDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAy9rYzB3u+RH89Fc1sQUKoepMHywGVYiD5PPfy9SWek6rLh4d -/uCFEpHtqC2K24ERw1nlRurKMAs6aNe1EGo5DHRIQzDaS8R7XAD9dMDlzTlaK7RE -Rko/XPAQTdsOQ8vgHAvymh8T1Yy9c6wCgpaODgeRclZnhRaBI2B0hwGgtAY7Il4X -2ezXftDvK/u7Mmf13v1nlxnm+GjZM+kEQn8GXcuyNm4E+rib89ZDMNaz0OyHYr/p -wttylDEuuAwzvdd//3ZCEA2RyqsSEF3Ean2JUbWYeS/27rIvGnPFcVjCS/3jQTa0 -wLYhsKn3BnHojJF0I39SjlAUAm9CqjTEXdGFYCwB6F6XHiTpCN1wstLVb3LQ+7zr -1ZE+uiaKL5EEn7VVSUjviDVew48iP0PmKKlredFYDhD+KK1y651NUq1g5XGIquMr -pX2h43b/1RAlfZBv8u/W7AFC9h+dA+hDr1r7AgPMVE3mjecaqDMnCPgKWBcV8+q2 -wGVEsjo1d18mfglbAgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC +AY8AMIIBigKCAYEApQQczYpYq818aTBwDNeg2rREVjhUoQgCShJgVv/jNvhIIMfl +GVWGRsMLLQAY8LDwsNm1BYTM4hzMrl0fQ1f+M7o+H/XhkfV0rsFHId5+zDKSe4ct +z6xIOp0vjTP9XBkL6B+kSfyo+4l53EzSl1Sp3BeTcMpVDzEvfYlUbHyLutNXmlk5 +L9QcOJFUf/g1uwIjYxgAUVvjnsdcQFrKffXPxOA1Vul+3LesuV4G4221b3jR9yi/ +KmfsycRAo7U63NrLiClMZZeP4tRukpIOj3sEhe46aD3DW6ARUHKQLGdqjQE7kY36 +a3+YInjzA1Sgyq1v9LhIhzgCi+gexAbAW/Dq4WVMIF4wIbdbgjSHu8ROdvaTdA8w +jZflqAqJ9GKyQj/OH5BAYAJjMr9UhkL/tUaUWu2dXPtchLOfKybXR724U6pQDpq6 +pNLJyC/B5jrQNVKnXOm01PDkRNicHcQwPNCSNhkxI4hPfLjHAQJdUdIdN+t969eA +8ysOFigOZ2xO3TAlAgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDgYDVR0PAQH/BAQDAgWgMA4GA1Ud -EQQHMAWCA29uZTANBgkqhkiG9w0BAQwFAAOCAYEAkFti0AVjno7n9IbAnlVfWW4z -QHGUFviPSjh2ZnQE3PLrz/QBDyoTMz7/fPXm2NGZiEX/XC6SRnmj07dnaSidUeW7 -i1I/Feuh1IxK9Zm4zydok2cc+b9lzK0hGbhxnkVCBPgQhQOn+bnw2niEtR1qDke+ -hQkdnQ3kJsYzUk52K/oarjt+jc0gaxrMqkh9eEgINhVBSnCnCFISsYmtbSEdrw08 -+Xq4kFcSFZxHfw0QEphNv5aNMkcmzYyBtFg88BNPfYwN50BVCDB86miWHYe3sCIK -tev/OByn5jKP1ywbmIwlkJ/37WcmYI8e3QA4w+Yz6PN0f+IYIheEuK8A8rBUfoRS -E7lfsW3QH3MtK31+EYqC3xrEqwBCJHQ1abUP7DcZQky55s5iZy/JVI+VNQ47NpVD -tnzSEBCSsCYqwuekMc6ziTARZB5zDPud/59ny9UuqzhGEniY7snLfYtUUdqki8nh -EwY+FX0oUkk3c2WrdGpQdESjteIX88yBz8+9VqPf +EQQHMAWCA29uZTANBgkqhkiG9w0BAQwFAAOCAYEAACl2DUwcWUVWk5Z3/I+/tkbs +mDx7afU1Y+Fu9o/Qo/d6myraI2MuFePb8CDvNP6XpY5hm3t1ITFYKVZ90aol2DdP +R3FYf2aOF9koU0SoiIneqtduHVy32aIdSnVUgFdFeC/wkCYHFLdEyIcpFjG6E9Xj +zFvUpDLMsoVvL/Axsh/DZpUEHOXP4+vJjOpM6vTdlnDTizXNThYdH77qMA3Ofd+5 +nF1jwcYzmz49/rJd+3ob0t80HkOOv78otZ/uUdqt2N3rOqvwdGsUJezTdW5oqRC5 +bSMxDGcHAYT/zXcFetA2Ik41xTCr5x4C0VdYWy0Ui0bN8h0cPHusWVIQv/r4GmTR +WaTWy5rYtbcqdx8q8F1tzQjHnU+uJ3vj8hIkyBNMTwLx26vFlGvBik4Nz8zHOoyo +79BJYIi9SC9bvaW4HejMCA240qd2kXO9cKOLWjrlEWZ/NqZPoAA7NLWo28y0Mu4C +nuqciKs62/aB0fAn0uTY/7/tMV6ArvL3GWM819bo -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr index e7e604a..7d6bd28 100644 --- a/Task_1/cert/col_two.csr +++ b/Task_1/cert/col_two.csr @@ -1,22 +1,22 @@ -----BEGIN CERTIFICATE REQUEST----- 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 -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt index 862066c..efac4cc 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt @@ -1,26 +1,26 @@ -----BEGIN CERTIFICATE----- -MIIEXTCCAsWgAwIBAgIRAM4XPlQTbESZg/8Ny3nX1EMwDQYJKoZIhvcNAQEMBQAw +MIIEXTCCAsWgAwIBAgIRAMlrpJeJhULpkFSXCNhl5k8wDQYJKoZIhvcNAQEMBQAw ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MTAwMTE4NDQxNloXDTI1 -MTAwMTE4NDQxNlowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnC68RiSM+uOSC/k8htJe -lWVYXUo9/BJzs2yoSklPAMRzjiDVM+NExX2A1g6blcbvMJyA4ulcrHCkgpsXMV5A -MQfw7HMoSdemukU2yuBfin36Ey6t+mKjoUBiW1XtqQSWrgdPALZA0uegMhwaJzVK -QQu0R54VipBlL27gjQxesd4yQWi45+6YjHNoDHnv4ysZ/uA649Wv66azwMl8gvTv -j167Kb4b7NIxrWgADLzklqWxI+zkW9sQ4yxh4Rwr6Flh5oU4SZQ1whMvGEK28Eoe -2E/g9HvwgIFxFKGF/OV/OP+389xyHRtNobdtzdAnEtBwY9KNDbYoC+sq5mrZfUhT -5boKmgLZDQ7q7Ch5pJQCYSLNUNXjhpUf0QJArcn0S/WDqvdhiKboi6CI4YB5N1kX -lQIMoG0yjy+gw8QgyDT4JTOkjvC4zOEGAbWK9Dp+c8FLUALlYekGu4fyFjq7ymt7 -McJhXm1y8Ry8HRnTXHqC70i6Y0IT3b272HraXQgpRlUtAgMBAAGjNTAzMAwGA1Ud +GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MTAwMjE3MTQzNloXDTI1 +MTAwMjE3MTQzNlowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxpb022yB/h1iV3z1a/Dp +BaJWIRZwX9QCtH5tq7zVWvJa1AO9RDMXfiN4KEP+OJ9ropClZo+UsQu9oyE3Q7ys +N6mee1Tq8vo+WYvlkmysbBJwbbN7NhWqbE3npcIyd65Qun3LWcJM0PRKlr3wh9TS +QFzPdDpvnfudnnJE0ql1pV4DQkisZxk4Nt+OgK2s6NKsPrRDRIOz7wI8i4Y4KE3i +W8kl775AQswhNYn+0ihnGk9RSAQeYTVgOu4pWqzf+ANBzHYfazQc22Mc/fT8/QqQ +/98gadXP2oZSdNxSnTSjrvBGdnjcXshlfXl4ryZkkwykw6zIvu14bbKPHTRIyG45 +HL5saQk38v24XLepSzmi2gTByswpe98U3vN8/MVzkJ5HQJSkoz5WzpeMhtBJIW9s +toW70/PHdV4KJ6SjDZ+bLldKIY4rc3xRP7CEG7Cwi56+5dO5dUK2/RdB8QlP8Sj5 +iI9B7V8dSy7xyHTyQhdwaUMQW0VkNZcmB7P2XVRZgdmrAgMBAAGjNTAzMAwGA1Ud EwEB/wQCMAAwIwYDVR0RBBwwGoIYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1MA0G -CSqGSIb3DQEBDAUAA4IBgQAnAjcoLNtb/tcXzolw21RvT5uczceBxlp1HoYQEwIi -hBdsRm/dRkXcFe7iT5E0JMz7g65fXEy0euI5FZ6hs43YYfvzHS20hLxlrwG12/T6 -aMbM0lfQP+4MMDHzPXX8La1Xo37SewBeqlpeXl+O3fGodOCbJHy51q0CX1Gy9YrM -wikCE7QhL37jdAvlDjSTOlxVc1Q/NE4ExWA78XuVa2F5eNcxurICn+vD75NG30zJ -20vJudotbyiNazI3Sl6fUgl1vG4vHUzi0lOmWpqo/OBRJF+EYhgseLWMUEn1BP56 -i/LGCb8mMxLcfgMD0khVgvG1WqOkQC2mIk/tc8tkXpwyAk2dCe4V2kRma68DXpMP -/KKH4huYz82Thqva2y3W8eJIuow8kAQr2nB3RmmJ0CY/ZI+58I+t//EKVh2wK8SZ -Em7qLPjfy63tr+SdKNsg8y+UZWO/b8mBAjVAq+l7rcEemiaYS1yvEKUHM5aaBviL -eFnWuqEJIcRdITrhO8wta54= +CSqGSIb3DQEBDAUAA4IBgQA9csk6DhoBsFKUG5u1cZEIDwl0gsLwXBBC1cH8vMTK +qvCMmCJc9iP8ymD8tPLvYd4UShiQ3mdXFfvuYEgnDJZJLPL4PZKsrZU6vcu8ILuc +gk3zW465PYscN9vJWdd35FqXE99rOKgqloEvariM4Rz2ET3VEGN/phLSXK0zEdzV +ISJpO2Xz6/tezo/0H4rP+byNDfWsfm8bB+6z7mIlBZO5uttyEIgPA8SQR50QbUyF +dKg32y0U2b+0osayCXNB70rUG8U6h2urzmPrAxqCjhjSCe3h2QvrRTjd3UPQzlB3 +rS2EEG879aStmNLfzaJQt9jgNSpxN3Ruy5v7G72n0lxMM31Uct0UIJSey+nseXlX +tT8MnDjUa5H+fHbqkFBhb96EVJAH7AYkwRpAY0pYVZLBCQHWhZH+D/FleW4uryHk +drvO1Wetkmv4MC3Gcd5ZJpDs/B4dflOaO+8r6W9Bf/9BZ++aIvOOMZmuLs+tvCPB +y6km01hUG+Puqs3g+6UtE7k= -----END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr index 23bb0f7..5111bb5 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr @@ -1,23 +1,23 @@ -----BEGIN CERTIFICATE REQUEST----- MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAnC68RiSM+uOSC/k8htJe -lWVYXUo9/BJzs2yoSklPAMRzjiDVM+NExX2A1g6blcbvMJyA4ulcrHCkgpsXMV5A -MQfw7HMoSdemukU2yuBfin36Ey6t+mKjoUBiW1XtqQSWrgdPALZA0uegMhwaJzVK -QQu0R54VipBlL27gjQxesd4yQWi45+6YjHNoDHnv4ysZ/uA649Wv66azwMl8gvTv -j167Kb4b7NIxrWgADLzklqWxI+zkW9sQ4yxh4Rwr6Flh5oU4SZQ1whMvGEK28Eoe -2E/g9HvwgIFxFKGF/OV/OP+389xyHRtNobdtzdAnEtBwY9KNDbYoC+sq5mrZfUhT -5boKmgLZDQ7q7Ch5pJQCYSLNUNXjhpUf0QJArcn0S/WDqvdhiKboi6CI4YB5N1kX -lQIMoG0yjy+gw8QgyDT4JTOkjvC4zOEGAbWK9Dp+c8FLUALlYekGu4fyFjq7ymt7 -McJhXm1y8Ry8HRnTXHqC70i6Y0IT3b272HraXQgpRlUtAgMBAAGgbDBqBgkqhkiG +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxpb022yB/h1iV3z1a/Dp +BaJWIRZwX9QCtH5tq7zVWvJa1AO9RDMXfiN4KEP+OJ9ropClZo+UsQu9oyE3Q7ys +N6mee1Tq8vo+WYvlkmysbBJwbbN7NhWqbE3npcIyd65Qun3LWcJM0PRKlr3wh9TS +QFzPdDpvnfudnnJE0ql1pV4DQkisZxk4Nt+OgK2s6NKsPrRDRIOz7wI8i4Y4KE3i +W8kl775AQswhNYn+0ihnGk9RSAQeYTVgOu4pWqzf+ANBzHYfazQc22Mc/fT8/QqQ +/98gadXP2oZSdNxSnTSjrvBGdnjcXshlfXl4ryZkkwykw6zIvu14bbKPHTRIyG45 +HL5saQk38v24XLepSzmi2gTByswpe98U3vN8/MVzkJ5HQJSkoz5WzpeMhtBJIW9s +toW70/PHdV4KJ6SjDZ+bLldKIY4rc3xRP7CEG7Cwi56+5dO5dUK2/RdB8QlP8Sj5 +iI9B7V8dSy7xyHTyQhdwaUMQW0VkNZcmB7P2XVRZgdmrAgMBAAGgbDBqBgkqhkiG 9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAd7B/N78coCJ7JSoM3aUcq4lKHhnCvCkh -GtbN5VSvLARPfA/EPQoIIMwF/NIZFB2T9joEAXEaxWCRd47NxIZfvIJhDOjCxfpf -eo+d5MVK0PzJrJjTex1m2YButqLfl8V/fKT2meYciIUJMkd8oNAOEKT95cqpwbTP -DF6J9LZBDz9Wulkm8u6FQAHOthq3Kb5+fNw0AhYsMJKXcaFXcRuU8HKX2VLYWqk+ -qSnYxp9fuWEzE8QqelW6YX6edduirXLfsRHbAd7Xe9Eu6yJDbfE+miF3g9yclRQe -qDEEN29T/tuqS/WF1p5roVoQ4B1leV4jViUrl4FL0MihmH7Ou3Tk4RAHtOHoqg1M -n0RKA12sDO9A5jmcVcWSL/fNuaws3aT4JEvhwiXPutijxe65o7EObZaEz0vFwf1Y -8Fzha8MNykjRB0kNBfri6wHHVm1Hosur3p3ZuMynFQX9vhcgydcDHQERG8iHM71l -tuMF623nlw0L8uqOTWwp9ToZAH9f88tR +LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAQ7AGD3jrqolclpl1iJmFPl7GUMzVwYN3 +CdqZFXWh/TpUrVZlEAQIhoS5UJOA0Y6ozHCLs0plQ9M1BAcAbWAq48ha8a/xldny +r+bXxpvZjNC+ggd25Q2mAIMByzhjCku3WzH40V3H81Qwg1Hm/JfJZlemKhmNC7KQ +3aaXj5D9yPng/lDyOs5sCn9X5jOMxce4wwFj4BK6wlCMKw+2N5i8fmr+JhXEpIL3 +VIQX6gtbOgSMLPOwBQm+huHj8nkQn1xnJUMKv+Uc3yll2XpIUCiq/5gv9W+GAZjY +uwMw2uKWB6e1Gjv5NZYEmF5j6YnjPlA8Ul+65YE73Ab4VZA3gkaFupot6yi4+waw +ps9NNcEWmU2vMuKaJiZeWrc0VfAaVkmIKiiu8oAEFc+Ji7dKwhaYezsD6HLKdr0m +Wb5ZcPpBaOWpw5d4NLUHoAC3VTEx3eeSENyWEafI6g/4MDGkdIM33SCsL9XWVRRM +Xgkgl2rXtlQv9a1Et78kZ78m2JEjycYN -----END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key index 058cbe9..2244d22 100644 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key @@ -1,39 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge/gandlf_csv_adapter.py b/Task_1/fets_challenge/gandlf_csv_adapter.py index 958806d..39b9cd5 100644 --- a/Task_1/fets_challenge/gandlf_csv_adapter.py +++ b/Task_1/fets_challenge/gandlf_csv_adapter.py @@ -211,12 +211,12 @@ def extract_segmentation_csv_partitions(csv_path): df[(df['Partition_ID'] == col) & (df['TrainOrVal'] == 'val')].drop(columns=['TrainOrVal','Partition_ID']) # Prints for easy debugging - print(f"\n=== Sample of Partition {col} - Train Data ===") - transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) + # print(f"\n=== Sample of Partition {col} - Train Data ===") + # transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) + + # print(f"\n=== Sample of Partition {col} - Validation Data ===") + # transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) - print(f"\n=== Sample of Partition {col} - Validation Data ===") - transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) - return transformed_csv_dict def extract_classification_csv_partitions(csv_path): @@ -269,11 +269,11 @@ def extract_classification_csv_partitions(csv_path): transformed_csv_dict[str(col)]['train'] = pd.DataFrame(train_list) transformed_csv_dict[str(col)]['val'] = pd.DataFrame(val_list) - # Prints for easy debugging - print(f"\n=== Sample of Partition {col} - Train Data ===") - transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) + # # Prints for easy debugging + # print(f"\n=== Sample of Partition {col} - Train Data ===") + # transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) - print(f"\n=== Sample of Partition {col} - Validation Data ===") - transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) + # print(f"\n=== Sample of Partition {col} - Validation Data ===") + # transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) return transformed_csv_dict diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index e6d08e6..ceb1b85 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -32,7 +32,7 @@ task_runner : # val_csv : cla_test_val.csv device : cpu gandlf_config : - problem_type: classification + problem_type: classification #segmentation, classification # label: None # clip_mode: norm # clip_grad: 0.1 @@ -45,12 +45,15 @@ task_runner : learning_rate: 0.001 loss_function: cel metrics: - - classification_accuracy + - classification_accuracy + - recall + - precision + - f1 modality: rad model: amp: false onnx_export: false - architecture: vgg11 + architecture: densenet121 base_filters: 16 class_list: - '0' @@ -59,7 +62,7 @@ task_runner : - '3' dimension: 3 final_layer: softmax - num_channels: 4 + num_channels: 1 norm_type: instance weighted_loss: false num_epochs: 500 diff --git a/Task_1/plans/cla_plan.yaml b/Task_1/plans/cla_plan.yaml index e7c1ace..ceb1b85 100644 --- a/Task_1/plans/cla_plan.yaml +++ b/Task_1/plans/cla_plan.yaml @@ -28,75 +28,63 @@ data_loader : task_runner : template : src.fets_challenge_model.FeTSChallengeModel settings : - train_csv : cla_test_train.csv - val_csv : cla_test_val.csv + # train_csv : cla_test_train.csv + # val_csv : cla_test_val.csv device : cpu gandlf_config : - problem_type: classification - label: None - batch_size: 1 - clip_mode: norm - clip_grad: 0.1 + problem_type: classification #segmentation, classification + # label: None + # clip_mode: norm + # clip_grad: 0.1 + output_dir: '.' + + batch_size: 8 data_augmentation: {} - data_postprocessing: {} - data_preprocessing: - normalize: None - enable_padding: false + data_preprocessing: {} in_memory: false - inference_mechanism : - grid_aggregator_overlap: crop - patch_overlap: 0 learning_rate: 0.001 loss_function: cel - medcam_enabled: false - output_dir: '.' metrics: - - accuracy - - recall + - classification_accuracy + - recall + - precision + - f1 + modality: rad model: amp: false - architecture: densenet - base_filters: 32 - norm_type: batch + onnx_export: false + architecture: densenet121 + base_filters: 16 class_list: - - 0 - - 1 - - 2 - - 3 + - '0' + - '1' + - '2' + - '3' dimension: 3 final_layer: softmax - ignore_label_validation: None + num_channels: 1 + norm_type: instance + weighted_loss: false + num_epochs: 500 nested_training: testing: 1 - validation: -5 - num_epochs: 1 - optimizer: - type: sgd - parallel_compute_command: '' - patch_sampler: label + validation: -4 ## these are 4 because there is one site (i.e., Site3) that has only 4 samples. + optimizer: adam + patch_sampler: uniform patch_size: - 128 - 128 - 64 patience: 100 - pin_memory_dataloader: false - print_rgb_label_warning: true q_max_length: 100 q_num_workers: 0 q_samples_per_volume: 40 q_verbose: false - save_output: false - save_training: false - scaling_factor: 1 - scheduler: - type: triangle_modified - track_memory_usage: false - verbose: false + save_masks: false + scheduler: triangle version: maximum: 0.1.0 minimum: 0.0.14 - weighted_loss: true - modality: rad network : From a94d2b49e97773660c5ae6479be6684f340f0201 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Sun, 13 Oct 2024 16:50:09 -0400 Subject: [PATCH 14/19] classification works --- .gitignore | 2 - Task_1/FeTS_Challenge.py | 5 +- Task_1/build/lib/fets_challenge/__init__.py | 7 - .../lib/fets_challenge/checkpoint_utils.py | 51 - .../custom_aggregation_wrapper.py | 30 - Task_1/build/lib/fets_challenge/experiment.py | 593 -------- .../lib/fets_challenge/gandlf_csv_adapter.py | 214 --- Task_1/build/lib/fets_challenge/inference.py | 251 ---- .../lib/fets_challenge/spec_sens_code.py | 113 -- .../partitioning_1.csv | 1252 ----------------- .../partitioning_2.csv | 1252 ----------------- .../fets_challenge_workspace/plan/cols.yaml | 3 - .../fets_challenge_workspace/plan/data.yaml | 4 - .../fets_challenge_workspace/plan/defaults | 2 - .../fets_challenge_workspace/plan/plan.yaml | 141 -- .../fets_challenge_workspace/requirements.txt | 2 - .../fets_challenge_workspace/small_split.csv | 11 - .../fets_challenge_workspace/src/__init__.py | 10 - .../src/challenge_assigner.py | 40 - .../src/fets_challenge_model.py | 208 --- .../fets_challenge_workspace/validation.csv | 220 --- Task_1/cert/ca/root-ca.crt | 27 - Task_1/cert/ca/root-ca/db/root-ca.crl.srl | 1 - Task_1/cert/ca/root-ca/db/root-ca.crt.srl | 1 - Task_1/cert/ca/root-ca/db/root-ca.db | 0 Task_1/cert/ca/root-ca/db/root-ca.db.attr | 0 Task_1/cert/ca/root-ca/private/root-ca.key | 39 - Task_1/cert/ca/signing-ca.crt | 27 - Task_1/cert/ca/signing-ca.csr | 23 - .../cert/ca/signing-ca/db/signing-ca.crl.srl | 1 - .../cert/ca/signing-ca/db/signing-ca.crt.srl | 1 - Task_1/cert/ca/signing-ca/db/signing-ca.db | 0 .../cert/ca/signing-ca/db/signing-ca.db.attr | 0 .../cert/ca/signing-ca/private/signing-ca.key | 39 - Task_1/cert/cert_chain.crt | 54 - Task_1/cert/client/col_one.crt | 25 - Task_1/cert/client/col_one.key | 39 - Task_1/cert/client/col_two.crt | 25 - Task_1/cert/client/col_two.key | 39 - Task_1/cert/col_one.csr | 22 - Task_1/cert/col_two.csr | 22 - .../server/agg_in-ota-232347.ads.iu.edu.crt | 26 - .../server/agg_in-ota-232347.ads.iu.edu.csr | 23 - .../server/agg_in-ota-232347.ads.iu.edu.key | 39 - Task_1/fets_challenge/experiment.py | 93 +- 45 files changed, 61 insertions(+), 4916 deletions(-) delete mode 100644 .gitignore delete mode 100644 Task_1/build/lib/fets_challenge/__init__.py delete mode 100644 Task_1/build/lib/fets_challenge/checkpoint_utils.py delete mode 100644 Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py delete mode 100644 Task_1/build/lib/fets_challenge/experiment.py delete mode 100644 Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py delete mode 100644 Task_1/build/lib/fets_challenge/inference.py delete mode 100644 Task_1/build/lib/fets_challenge/spec_sens_code.py delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py delete mode 100644 Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv delete mode 100644 Task_1/cert/ca/root-ca.crt delete mode 100644 Task_1/cert/ca/root-ca/db/root-ca.crl.srl delete mode 100644 Task_1/cert/ca/root-ca/db/root-ca.crt.srl delete mode 100644 Task_1/cert/ca/root-ca/db/root-ca.db delete mode 100644 Task_1/cert/ca/root-ca/db/root-ca.db.attr delete mode 100644 Task_1/cert/ca/root-ca/private/root-ca.key delete mode 100644 Task_1/cert/ca/signing-ca.crt delete mode 100644 Task_1/cert/ca/signing-ca.csr delete mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl delete mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl delete mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.db delete mode 100644 Task_1/cert/ca/signing-ca/db/signing-ca.db.attr delete mode 100644 Task_1/cert/ca/signing-ca/private/signing-ca.key delete mode 100644 Task_1/cert/cert_chain.crt delete mode 100644 Task_1/cert/client/col_one.crt delete mode 100644 Task_1/cert/client/col_one.key delete mode 100644 Task_1/cert/client/col_two.crt delete mode 100644 Task_1/cert/client/col_two.key delete mode 100644 Task_1/cert/col_one.csr delete mode 100644 Task_1/cert/col_two.csr delete mode 100644 Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt delete mode 100644 Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr delete mode 100644 Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key diff --git a/.gitignore b/.gitignore deleted file mode 100644 index bfb58cb..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Task_1/venv/* -Task_1/fets_challenge/__pycache__/* diff --git a/Task_1/FeTS_Challenge.py b/Task_1/FeTS_Challenge.py index e78589c..bc9b0cb 100644 --- a/Task_1/FeTS_Challenge.py +++ b/Task_1/FeTS_Challenge.py @@ -518,13 +518,14 @@ def FedAvgM_Selection(local_tensors, # to those you specify immediately above. Changing the below value to False will change # this fact, excluding the three hausdorff measurements. As hausdorff distance is # expensive to compute, excluding them will speed up your experiments. -include_validation_with_hausdorff=True +include_validation_with_hausdorff=True # IF SET TO FALSE WHOLE CODE RUNS SEGMENTATION FOR SOME REASON # We encourage participants to experiment with partitioning_1 and partitioning_2, as well as to create # other partitionings to test your changes for generalization to multiple partitionings. #institution_split_csv_filename = 'partitioning_1.csv' #institution_split_csv_filename = 'partitioning_1.csv' -institution_split_csv_filename = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData/partitioning_2.csv' #'small_split.csv' +institution_split_csv_filename = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData/partitioning_2.csv' +institution_split_csv_filename = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData/sanity_partitioning.csv' # a small subset for sanity checks and debugging. Comment out to run the actual challenge partition. # change this to point to the parent directory of the data brats_training_data_parent_dir = '/home/locolinux2/datasets/MICCAI_FeTS2022_TrainingData' diff --git a/Task_1/build/lib/fets_challenge/__init__.py b/Task_1/build/lib/fets_challenge/__init__.py deleted file mode 100644 index d050e7d..0000000 --- a/Task_1/build/lib/fets_challenge/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 - -# Contributing Authors (alphabetical): -# Micah Sheller (Intel) - -from .experiment import run_challenge_experiment -from .inference import model_outputs_to_disc diff --git a/Task_1/build/lib/fets_challenge/checkpoint_utils.py b/Task_1/build/lib/fets_challenge/checkpoint_utils.py deleted file mode 100644 index 30d5706..0000000 --- a/Task_1/build/lib/fets_challenge/checkpoint_utils.py +++ /dev/null @@ -1,51 +0,0 @@ -import pandas as pd -import pickle -from pathlib import Path -from glob import glob -from sys import exit -from logging import getLogger - -logger = getLogger(__name__) - -def setup_checkpoint_folder(): - # Create checkpoint - Path("checkpoint").mkdir(parents=True, exist_ok=True) - existing_checkpoints = glob('checkpoint/*') - if len(existing_checkpoints) == 0: - checkpoint_num = 1 - else: - # Increment the existing checkpoint by 1 - checkpoint_num = sorted([int(x.replace('checkpoint/experiment_','')) for x in existing_checkpoints])[-1] + 1 - experiment_folder = f'experiment_{checkpoint_num}' - checkpoint_folder = f'checkpoint/{experiment_folder}' - Path(checkpoint_folder).mkdir(parents=True, exist_ok=False) - return experiment_folder - -def save_checkpoint(checkpoint_folder, aggregator, - collaborator_names, collaborators, - round_num, collaborator_time_stats, - total_simulated_time, best_dice, - best_dice_over_time_auc, - collaborators_chosen_each_round, - collaborator_times_per_round, - experiment_results, - summary): - """ - Save latest checkpoint - """ - # Save aggregator tensor_db - aggregator.tensor_db.tensor_db.to_pickle(f'checkpoint/{checkpoint_folder}/aggregator_tensor_db.pkl') - with open(f'checkpoint/{checkpoint_folder}/state.pkl', 'wb') as f: - pickle.dump([collaborator_names, round_num, collaborator_time_stats, total_simulated_time, - best_dice, best_dice_over_time_auc, collaborators_chosen_each_round, - collaborator_times_per_round, experiment_results, summary], f) - -def load_checkpoint(checkpoint_folder): - """ - Reload checkpoint from 'checkpoint/experiment_*' - """ - aggregator_tensor_db = pd.read_pickle(f'checkpoint/{checkpoint_folder}/aggregator_tensor_db.pkl') - with open(f'checkpoint/{checkpoint_folder}/state.pkl', 'rb') as f: - state = pickle.load(f) - - return state + [aggregator_tensor_db] diff --git a/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py b/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py deleted file mode 100644 index 63472a6..0000000 --- a/Task_1/build/lib/fets_challenge/custom_aggregation_wrapper.py +++ /dev/null @@ -1,30 +0,0 @@ -from openfl.interface.aggregation_functions.experimental import PrivilegedAggregationFunction - - -# extends the openfl agg func interface to include challenge-relevant information -class CustomAggregationWrapper(PrivilegedAggregationFunction): - def __init__(self, func): - super().__init__() - self.func = func - self.collaborators_chosen_each_round = None - self.collaborator_times_per_round = None - - def set_state_data_for_round(self, - collaborators_chosen_each_round, - collaborator_times_per_round): - self.collaborators_chosen_each_round = collaborators_chosen_each_round - self.collaborator_times_per_round = collaborator_times_per_round - - # pass-through that includes additional information from the challenge experiment wrapper - def call(self, - local_tensors, - tensor_db, - tensor_name, - fl_round, - *__): - return self.func(local_tensors, - tensor_db, - tensor_name, - fl_round, - self.collaborators_chosen_each_round, - self.collaborator_times_per_round) diff --git a/Task_1/build/lib/fets_challenge/experiment.py b/Task_1/build/lib/fets_challenge/experiment.py deleted file mode 100644 index a55bda5..0000000 --- a/Task_1/build/lib/fets_challenge/experiment.py +++ /dev/null @@ -1,593 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 - -# Contributing Authors (alphabetical): -# Patrick Foley (Intel), Micah Sheller (Intel) - -import os -import warnings -from collections import namedtuple -from copy import copy -import shutil -from logging import getLogger -from pathlib import Path - -import numpy as np -import pandas as pd -from openfl.utilities import TensorKey -from openfl.protocols import utils -import openfl.native as fx -import torch - -from .gandlf_csv_adapter import construct_fedsim_csv, extract_csv_partitions -from .custom_aggregation_wrapper import CustomAggregationWrapper -from .checkpoint_utils import setup_checkpoint_folder, save_checkpoint, load_checkpoint - -# one week -# MINUTE = 60 -# HOUR = 60 * MINUTE -# DAY = 24 * HOUR -# WEEK = 7 * DAY -MAX_SIMULATION_TIME = 7 * 24 * 60 * 60 - -## COLLABORATOR TIMING DISTRIBUTIONS -# These data are derived from the actual timing information in the real-world FeTS information -# They reflect a subset of the institutions involved. -# Tuples are (mean, stddev) in seconds - -# time to train one patient -TRAINING_TIMES = [(6.710741331207654, 0.8726112813698301), - (2.7343911917098445, 0.023976155580152165), - (3.173076923076923, 0.04154320960517865), - (6.580379746835443, 0.22461890673025595), - (3.452046783625731, 0.47136389322749656), - (6.090788461700995, 0.08541499003440205), - (3.206933911159263, 0.1927067498514361), - (3.3358208955223883, 0.2950567549663471), - (4.391304347826087, 0.37464538999161057), - (6.324805129494594, 0.1413885448869165), - (7.415133477633478, 1.1198881747151301), - (5.806410256410255, 0.029926699295169234), - (6.300204918032787, 0.24932319729777577), - (5.886317567567567, 0.018627858809133223), - (5.478184991273998, 0.04902740607167421), - (6.32440159574468, 0.15838847558954935), - (20.661918328585003, 6.085405543890793), - (3.197901325478645, 0.07049966132127056), - (6.523963730569948, 0.2533266757118492), - (2.6540077569489338, 0.025503099659276184), - (1.8025746183640918, 0.06805805332403576)] - -# time to validate one patient -VALIDATION_TIMES = [(23.129135113591072, 2.5975116854269507), - (12.965544041450777, 0.3476297824941513), - (14.782051282051283, 0.5262660449172765), - (16.444936708860762, 0.42613177203005187), - (15.728654970760235, 4.327559980390658), - (12.946098012884802, 0.2449927822869217), - (15.335950126991456, 1.1587597276712558), - (24.024875621890544, 3.087348297794285), - (38.361702127659576, 2.240113332190875), - (16.320970580839827, 0.4995108101783225), - (30.805555555555554, 3.1836337269688237), - (12.100899742930592, 0.41122386959584895), - (13.099897540983607, 0.6693132795197584), - (9.690202702702702, 0.17513593019922968), - (10.06980802792321, 0.7947848617875114), - (14.605333333333334, 0.6012305898922827), - (36.30294396961064, 9.24123672148819), - (16.9130060292851, 0.7452868131028928), - (40.244078460399706, 3.7700993678269037), - (13.161603102779575, 0.1975347910041472), - (11.222161868549701, 0.7021223062972527)] - -# time to download the model -DOWNLOAD_TIMES = [(112.42869743589742, 14.456734719659513), - (117.26870618556701, 12.549951446132013), - (13.059666666666667, 4.8700489616521185), - (47.50220338983051, 14.92128656898884), - (162.27864210526315, 32.562113378948396), - (99.46072058823529, 13.808785580783224), - (33.6347090909091, 25.00299299660141), - (216.25489393939392, 19.176465340447848), - (217.4117230769231, 20.757673955585453), - (98.38857297297298, 13.205048376808929), - (88.87509473684209, 23.152936862511545), - (66.96994262295081, 16.682497150763503), - (36.668852040816326, 13.759109844677598), - (149.31716326530614, 26.018185409516104), - (139.847, 80.04755583050091), - (54.97624444444445, 16.645170929316794)] - -# time to upload the model -UPLOAD_TIMES = [(192.28497409326425, 21.537450985376967), - (194.60103626943004, 24.194406902237056), - (20.0, 0.0), - (52.43859649122807, 5.047207127169352), - (182.82417582417582, 14.793519078918195), - (143.38059701492537, 7.910690646792151), - (30.695652173913043, 9.668122350904568), - (430.95360824742266, 54.97790476867727), - (348.3174603174603, 30.14347985347738), - (141.43715846994536, 5.271340868190727), - (158.7433155080214, 64.87526819391198), - (81.06086956521739, 7.003461202082419), - (32.60621761658031, 5.0418315093016615), - (281.5388601036269, 90.60338778706557), - (194.34065934065933, 36.6519776778435), - (66.53787878787878, 16.456280602190606)] - -logger = getLogger(__name__) -# This catches PyTorch UserWarnings for CPU -warnings.filterwarnings("ignore", category=UserWarning) - -CollaboratorTimeStats = namedtuple('CollaboratorTimeStats', - [ - 'validation_mean', - 'training_mean', - 'download_speed_mean', - 'upload_speed_mean', - 'validation_std', - 'training_std', - 'download_speed_std', - 'upload_speed_std', - ] - ) - -def gen_collaborator_time_stats(collaborator_names, seed=0xFEEDFACE): - - np.random.seed(seed) - - stats = {} - for col in collaborator_names: - ml_index = np.random.randint(len(VALIDATION_TIMES)) - validation = VALIDATION_TIMES[ml_index] - training = TRAINING_TIMES[ml_index] - net_index = np.random.randint(len(DOWNLOAD_TIMES)) - download = DOWNLOAD_TIMES[net_index] - upload = UPLOAD_TIMES[net_index] - - stats[col] = CollaboratorTimeStats(validation_mean=validation[0], - training_mean=training[0], - download_speed_mean=download[0], - upload_speed_mean=upload[0], - validation_std=validation[1], - training_std=training[1], - download_speed_std=download[1], - upload_speed_std=upload[1]) - return stats - -def compute_times_per_collaborator(collaborator_names, - training_collaborators, - epochs_per_round, - collaborator_data, - collaborator_time_stats, - round_num): - np.random.seed(round_num) - times = {} - for col in collaborator_names: - time = 0 - - # stats - stats = collaborator_time_stats[col] - - # download time - download_time = np.random.normal(loc=stats.download_speed_mean, - scale=stats.download_speed_std) - download_time = max(1, download_time) - time += download_time - - # data loader - data = collaborator_data[col] - - # validation time - data_size = data.get_valid_data_size() - validation_time_per = np.random.normal(loc=stats.validation_mean, - scale=stats.validation_std) - validation_time_per = max(1, validation_time_per) - time += data_size * validation_time_per - - # only if training - if col in training_collaborators: - # training time - data_size = data.get_train_data_size() - training_time_per = np.random.normal(loc=stats.training_mean, - scale=stats.training_std) - training_time_per = max(1, training_time_per) - - # training data size depends on the hparams - data_size *= epochs_per_round - time += data_size * training_time_per - - # if training, we also validate the locally updated model - data_size = data.get_valid_data_size() - validation_time_per = np.random.normal(loc=stats.validation_mean, - scale=stats.validation_std) - validation_time_per = max(1, validation_time_per) - time += data_size * validation_time_per - - # upload time - upload_time = np.random.normal(loc=stats.upload_speed_mean, - scale=stats.upload_speed_std) - upload_time = max(1, upload_time) - time += upload_time - - times[col] = time - return times - -def split_tensor_dict_into_floats_and_non_floats(tensor_dict): - """ - Split the tensor dictionary into float and non-floating point values. - - Splits a tensor dictionary into float and non-float values. - - Args: - tensor_dict: A dictionary of tensors - - Returns: - Two dictionaries: the first contains all of the floating point tensors - and the second contains all of the non-floating point tensors - - """ - float_dict = {} - non_float_dict = {} - for k, v in tensor_dict.items(): - if np.issubdtype(v.dtype, np.floating): - float_dict[k] = v - else: - non_float_dict[k] = v - return float_dict, non_float_dict - -def get_metric(metric, fl_round, tensor_db): - metric_name = metric - target_tags = ('metric', 'validate_agg') - return float(tensor_db.tensor_db.query("tensor_name == @metric_name and round == @fl_round and tags == @target_tags").nparray) - -def run_challenge_experiment(aggregation_function, - choose_training_collaborators, - training_hyper_parameters_for_round, - institution_split_csv_filename, - brats_training_data_parent_dir, - db_store_rounds=5, - rounds_to_train=5, - device='cpu', - save_checkpoints=True, - restore_from_checkpoint_folder=None, - include_validation_with_hausdorff=True, - use_pretrained_model=True): - - fx.init('fets_challenge_workspace') - - from sys import path, exit - - file = Path(__file__).resolve() - root = file.parent.resolve() # interface root, containing command modules - work = Path.cwd().resolve() - - path.append(str(root)) - path.insert(0, str(work)) - - # create gandlf_csv and get collaborator names - gandlf_csv_path = os.path.join(work, 'gandlf_paths.csv') - # split_csv_path = os.path.join(work, institution_split_csv_filename) - collaborator_names = construct_fedsim_csv(brats_training_data_parent_dir, - institution_split_csv_filename, - 0.8, - gandlf_csv_path) - - aggregation_wrapper = CustomAggregationWrapper(aggregation_function) - - overrides = { - 'aggregator.settings.rounds_to_train': rounds_to_train, - 'aggregator.settings.db_store_rounds': db_store_rounds, - 'tasks.train.aggregation_type': aggregation_wrapper, - 'task_runner.settings.device': device, - } - - - # Update the plan if necessary - plan = fx.update_plan(overrides) - print("****Debugging: plan is", plan) - - if not include_validation_with_hausdorff: - plan.config['task_runner']['settings']['fets_config_dict']['metrics'] = ['dice','dice_per_label'] - - # Overwrite collaborator names - plan.authorized_cols = collaborator_names - # overwrite datapath values with the collaborator name itself - for col in collaborator_names: - plan.cols_data_paths[col] = col - - # # Update the plan's data loader template for each collaborator - # correct_template = "openfl.federated.data.loader_gandlf" - - # # Modify the plan's data loader settings if needed - # plan.config['data_loader'][col] = correct_template - - # get the data loaders for each collaborator - collaborator_data_loaders = {col: copy(plan).get_data_loader(col) for col in collaborator_names} - - transformed_csv_dict = extract_csv_partitions(os.path.join(work, 'gandlf_paths.csv')) - # get the task runner, passing the first data loader - for col in collaborator_data_loaders: - #Insert logic to serialize train / val CSVs here - os.makedirs(os.path.join(work, col), exist_ok=True) - transformed_csv_dict[col]['train'].to_csv(os.path.join(work, col, 'train.csv')) - transformed_csv_dict[col]['val'].to_csv(os.path.join(work, col, 'val.csv')) - task_runner = copy(plan).get_task_runner(collaborator_data_loaders[col]) - - if use_pretrained_model: - print('Loading pretrained model...') - if device == 'cpu': - checkpoint = torch.load(f'{root}/pretrained_model/resunet_pretrained.pth',map_location=torch.device('cpu')) - task_runner.model.load_state_dict(checkpoint['model_state_dict']) - task_runner.optimizer.load_state_dict(checkpoint['optimizer_state_dict']) - else: - checkpoint = torch.load(f'{root}/pretrained_model/resunet_pretrained.pth') - task_runner.model.load_state_dict(checkpoint['model_state_dict']) - task_runner.optimizer.load_state_dict(checkpoint['optimizer_state_dict']) - - tensor_pipe = plan.get_tensor_pipe() - - # Initialize model weights - init_state_path = plan.config['aggregator']['settings']['init_state_path'] - tensor_dict, _ = split_tensor_dict_for_holdouts(logger, task_runner.get_tensor_dict(False)) - - model_snap = utils.construct_model_proto(tensor_dict=tensor_dict, - round_number=0, - tensor_pipe=tensor_pipe) - - utils.dump_proto(model_proto=model_snap, fpath=init_state_path) - - # get the aggregator, now that we have the initial weights file set up - logger.info('Creating aggregator...') - aggregator = plan.get_aggregator() - # manually override the aggregator UUID (for checkpoint resume when rounds change) - aggregator.uuid = 'aggregator' - aggregator._load_initial_tensors() - - # create our collaborators - logger.info('Creating collaborators...') - collaborators = {col: copy(plan).get_collaborator(col, task_runner=task_runner, client=aggregator) for col in collaborator_names} - - collaborator_time_stats = gen_collaborator_time_stats(plan.authorized_cols) - - collaborators_chosen_each_round = {} - collaborator_times_per_round = {} - - logger.info('Starting experiment') - - total_simulated_time = 0 - best_dice = -1.0 - best_dice_over_time_auc = 0 - - # results dataframe data - experiment_results = { - 'round':[], - 'time': [], - 'convergence_score': [], - 'round_dice': [], - 'dice_label_0': [], - 'dice_label_1': [], - 'dice_label_2': [], - 'dice_label_4': [], - } - if include_validation_with_hausdorff: - experiment_results.update({ - 'hausdorff95_label_0': [], - 'hausdorff95_label_1': [], - 'hausdorff95_label_2': [], - 'hausdorff95_label_4': [], - }) - - - if restore_from_checkpoint_folder is None: - checkpoint_folder = setup_checkpoint_folder() - logger.info(f'\nCreated experiment folder {checkpoint_folder}...') - starting_round_num = 0 - else: - if not Path(f'checkpoint/{restore_from_checkpoint_folder}').exists(): - logger.warning(f'Could not find provided checkpoint folder: {restore_from_checkpoint_folder}. Exiting...') - exit(1) - else: - logger.info(f'Attempting to load last completed round from {restore_from_checkpoint_folder}') - state = load_checkpoint(restore_from_checkpoint_folder) - checkpoint_folder = restore_from_checkpoint_folder - - [loaded_collaborator_names, starting_round_num, collaborator_time_stats, - total_simulated_time, best_dice, best_dice_over_time_auc, - collaborators_chosen_each_round, collaborator_times_per_round, - experiment_results, summary, agg_tensor_db] = state - - if loaded_collaborator_names != collaborator_names: - logger.error(f'Collaborator names found in checkpoint ({loaded_collaborator_names}) ' - f'do not match provided collaborators ({collaborator_names})') - exit(1) - - logger.info(f'Previous summary for round {starting_round_num}') - logger.info(summary) - - starting_round_num += 1 - aggregator.tensor_db.tensor_db = agg_tensor_db - aggregator.round_number = starting_round_num - - - for round_num in range(starting_round_num, rounds_to_train): - # pick collaborators to train for the round - training_collaborators = choose_training_collaborators(collaborator_names, - aggregator.tensor_db._iterate(), - round_num, - collaborators_chosen_each_round, - collaborator_times_per_round) - - logger.info('Collaborators chosen to train for round {}:\n\t{}'.format(round_num, training_collaborators)) - - # save the collaborators chosen this round - collaborators_chosen_each_round[round_num] = training_collaborators - - # get the hyper-parameters from the competitor - hparams = training_hyper_parameters_for_round(collaborator_names, - aggregator.tensor_db._iterate(), - round_num, - collaborators_chosen_each_round, - collaborator_times_per_round) - - learning_rate, epochs_per_round = hparams - - if (epochs_per_round is None): - logger.warning('Hyper-parameter function warning: function returned None for "epochs_per_round". Setting "epochs_per_round" to 1') - epochs_per_round = 1 - - hparam_message = "\n\tlearning rate: {}".format(learning_rate) - - hparam_message += "\n\tepochs_per_round: {}".format(epochs_per_round) - - logger.info("Hyper-parameters for round {}:{}".format(round_num, hparam_message)) - - # cache each tensor in the aggregator tensor_db - hparam_dict = {} - tk = TensorKey(tensor_name='learning_rate', - origin=aggregator.uuid, - round_number=round_num, - report=False, - tags=('hparam', 'model')) - hparam_dict[tk] = np.array(learning_rate) - tk = TensorKey(tensor_name='epochs_per_round', - origin=aggregator.uuid, - round_number=round_num, - report=False, - tags=('hparam', 'model')) - hparam_dict[tk] = np.array(epochs_per_round) - aggregator.tensor_db.cache_tensor(hparam_dict) - - # pre-compute the times for each collaborator - times_per_collaborator = compute_times_per_collaborator(collaborator_names, - training_collaborators, - epochs_per_round, - collaborator_data_loaders, - collaborator_time_stats, - round_num) - collaborator_times_per_round[round_num] = times_per_collaborator - - aggregator.assigner.set_training_collaborators(training_collaborators) - - # update the state in the aggregation wrapper - aggregation_wrapper.set_state_data_for_round(collaborators_chosen_each_round, collaborator_times_per_round) - - # turn the times list into a list of tuples and sort it - times_list = [(t, col) for col, t in times_per_collaborator.items()] - times_list = sorted(times_list) - - # now call each collaborator in order of time - # FIXME: this doesn't break up each task. We need this if we're doing straggler handling - for t, col in times_list: - # set the task_runner data loader - task_runner.data_loader = collaborator_data_loaders[col] - - # run the collaborator - collaborators[col].run_simulation() - - logger.info("Collaborator {} took simulated time: {} minutes".format(col, round(t / 60, 2))) - - # the round time is the max of the times_list - round_time = max([t for t, _ in times_list]) - total_simulated_time += round_time - - - # get the performace validation scores for the round - round_dice = get_metric('valid_dice', round_num, aggregator.tensor_db) - dice_label_0 = get_metric('valid_dice_per_label_0', round_num, aggregator.tensor_db) - dice_label_1 = get_metric('valid_dice_per_label_1', round_num, aggregator.tensor_db) - dice_label_2 = get_metric('valid_dice_per_label_2', round_num, aggregator.tensor_db) - dice_label_4 = get_metric('valid_dice_per_label_4', round_num, aggregator.tensor_db) - if include_validation_with_hausdorff: - hausdorff95_label_0 = get_metric('valid_hd95_per_label_0', round_num, aggregator.tensor_db) - hausdorff95_label_1 = get_metric('valid_hd95_per_label_1', round_num, aggregator.tensor_db) - hausdorff95_label_2 = get_metric('valid_hd95_per_label_2', round_num, aggregator.tensor_db) - hausdorff95_label_4 = get_metric('valid_hd95_per_label_4', round_num, aggregator.tensor_db) - - # update best score - if best_dice < round_dice: - best_dice = round_dice - # Set the weights for the final model - if round_num == 0: - # here the initial model was validated (temp model does not exist) - logger.info(f'Skipping best model saving to disk as it is a random initialization.') - elif not os.path.exists(f'checkpoint/{checkpoint_folder}/temp_model.pkl'): - raise ValueError(f'Expected temporary model at: checkpoint/{checkpoint_folder}/temp_model.pkl to exist but it was not found.') - else: - # here the temp model was the one validated - shutil.copyfile(src=f'checkpoint/{checkpoint_folder}/temp_model.pkl',dst=f'checkpoint/{checkpoint_folder}/best_model.pkl') - logger.info(f'Saved model with best average binary DICE: {best_dice} to ~/.local/workspace/checkpoint/{checkpoint_folder}/best_model.pkl') - - ## RUN VALIDATION ON INTERMEDIATE CONSENSUS MODEL - # set the task_runner data loader - # task_runner.data_loader = collaborator_data_loaders[col] - - ## CONVERGENCE METRIC COMPUTATION - # update the auc score - best_dice_over_time_auc += best_dice * round_time - - # project the auc score as remaining time * best dice - # this projection assumes that the current best score is carried forward for the entire week - projected_auc = (MAX_SIMULATION_TIME - total_simulated_time) * best_dice + best_dice_over_time_auc - projected_auc /= MAX_SIMULATION_TIME - - # End of round summary - summary = '"**** END OF ROUND {} SUMMARY *****"'.format(round_num) - summary += "\n\tSimulation Time: {} minutes".format(round(total_simulated_time / 60, 2)) - summary += "\n\t(Projected) Convergence Score: {}".format(projected_auc) - summary += "\n\tDICE Label 0: {}".format(dice_label_0) - summary += "\n\tDICE Label 1: {}".format(dice_label_1) - summary += "\n\tDICE Label 2: {}".format(dice_label_2) - summary += "\n\tDICE Label 4: {}".format(dice_label_4) - if include_validation_with_hausdorff: - summary += "\n\tHausdorff95 Label 0: {}".format(hausdorff95_label_0) - summary += "\n\tHausdorff95 Label 1: {}".format(hausdorff95_label_1) - summary += "\n\tHausdorff95 Label 2: {}".format(hausdorff95_label_2) - summary += "\n\tHausdorff95 Label 4: {}".format(hausdorff95_label_4) - - - experiment_results['round'].append(round_num) - experiment_results['time'].append(total_simulated_time) - experiment_results['convergence_score'].append(projected_auc) - experiment_results['round_dice'].append(round_dice) - experiment_results['dice_label_0'].append(dice_label_0) - experiment_results['dice_label_1'].append(dice_label_1) - experiment_results['dice_label_2'].append(dice_label_2) - experiment_results['dice_label_4'].append(dice_label_4) - if include_validation_with_hausdorff: - experiment_results['hausdorff95_label_0'].append(hausdorff95_label_0) - experiment_results['hausdorff95_label_1'].append(hausdorff95_label_1) - experiment_results['hausdorff95_label_2'].append(hausdorff95_label_2) - experiment_results['hausdorff95_label_4'].append(hausdorff95_label_4) - logger.info(summary) - - if save_checkpoints: - logger.info(f'Saving checkpoint for round {round_num}') - logger.info(f'To resume from this checkpoint, set the restore_from_checkpoint_folder parameter to \'{checkpoint_folder}\'') - save_checkpoint(checkpoint_folder, aggregator, - collaborator_names, collaborators, - round_num, collaborator_time_stats, - total_simulated_time, best_dice, - best_dice_over_time_auc, - collaborators_chosen_each_round, - collaborator_times_per_round, - experiment_results, - summary) - - # if the total_simulated_time has exceeded the maximum time, we break - # in practice, this means that the previous round's model is the last model scored, - # so a long final round should not actually benefit the competitor, since that final - # model is never globally validated - if total_simulated_time > MAX_SIMULATION_TIME: - logger.info("Simulation time exceeded. Ending Experiment") - break - - # save the most recent aggregated model in native format to be copied over as best when appropriate - # (note this model has not been validated by the collaborators yet) - task_runner.rebuild_model(round_num, aggregator.last_tensor_dict, validation=True) - task_runner.save_native(f'checkpoint/{checkpoint_folder}/temp_model.pkl') - - - - return pd.DataFrame.from_dict(experiment_results), checkpoint_folder diff --git a/Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py b/Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py deleted file mode 100644 index cafad78..0000000 --- a/Task_1/build/lib/fets_challenge/gandlf_csv_adapter.py +++ /dev/null @@ -1,214 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 - -# Contributing Authors (alphabetical): -# Brandon Edwards (Intel) -# Patrick Foley (Intel) -# Micah Sheller (Intel) - -import os - -import numpy as np -import pandas as pd - -from fets.data.base_utils import get_appropriate_file_paths_from_subject_dir - - -# some hard-coded keys -# feature stack order determines order of feature stack modes -# (so must be consistent across datasets used on a given model) -# dependency here with mode naming convention used in get_appropriate_file_paths_from_subject_dir -feature_modes = ['T1', 'T2', 'FLAIR', 'T1CE'] -label_tag = 'Label' - -# using numerical header names -numeric_header_names = {'T1': 1, - 'T2': 2, - 'FLAIR': 3, - 'T1CE': 4, - 'Label': 5} - -# used to map from numbers back to keys -numeric_header_name_to_key = {value: key for key, value in numeric_header_names.items()} - -# column names for dataframe used to create csv - -# 0 is for the subject name, 1-4 for modes and 5 for label (as above) -train_val_headers = [0, 1, 2, 3, 4, 5] -val_headers = [0, 1, 2, 3, 4] - -# hard coded samples used to train the FeTS2022 initial model -# and therefore best to keep out of split insitution validation -# set -init_train = ['FeTS2022_00159','FeTS2022_00172','FeTS2022_00187','FeTS2022_00199','FeTS2022_00211','FeTS2022_00221', \ - 'FeTS2022_00235','FeTS2022_00243','FeTS2022_00258','FeTS2022_00269','FeTS2022_00282','FeTS2022_00291', \ - 'FeTS2022_00300','FeTS2022_00311','FeTS2022_00321','FeTS2022_00332','FeTS2022_00344','FeTS2022_00353', \ - 'FeTS2022_00370','FeTS2022_00380','FeTS2022_00391','FeTS2022_00403','FeTS2022_00413','FeTS2022_00425', \ - 'FeTS2022_00440','FeTS2022_01000','FeTS2022_01038','FeTS2022_01046','FeTS2022_01054','FeTS2022_01062', \ - 'FeTS2022_01070','FeTS2022_01078','FeTS2022_01086','FeTS2022_01094','FeTS2022_01102','FeTS2022_01110', \ - 'FeTS2022_01118','FeTS2022_01126','FeTS2022_01134','FeTS2022_01205','FeTS2022_01213','FeTS2022_01221', \ - 'FeTS2022_01229','FeTS2022_01237','FeTS2022_01245','FeTS2022_01253','FeTS2022_01261','FeTS2022_01269', \ - 'FeTS2022_01277','FeTS2022_01293','FeTS2022_01307','FeTS2022_01315','FeTS2022_01323','FeTS2022_01331', \ - 'FeTS2022_01339','FeTS2022_01347','FeTS2022_01355','FeTS2022_01363','FeTS2022_01371','FeTS2022_01379', \ - 'FeTS2022_01387','FeTS2022_01395','FeTS2022_01403'] - - -def train_val_split(subdirs, percent_train, shuffle=True): - - if percent_train < 0 or percent_train >=1: - raise ValueError('Percent train must be >= 0 and < 1.') - - # record original length of subdirs - n_subdirs = len(subdirs) - if n_subdirs == 0: - raise ValueError('An empty list was provided to split.') - - train_subdirs = [subdir for subdir in subdirs if subdir in init_train] - # limit subdirs to those that do not lie in init_train - subdirs = [subdir for subdir in subdirs if subdir not in init_train] - - assert len(subdirs) + len(train_subdirs) == n_subdirs - - if shuffle: - np.random.shuffle(subdirs) - - cutpoint = int(n_subdirs * percent_train) - len(train_subdirs) - - train_subdirs = train_subdirs + subdirs[:cutpoint] - val_subdirs = subdirs[cutpoint:] - - if shuffle: - np.random.shuffle(train_subdirs) - - return train_subdirs, val_subdirs - - -def paths_dict_to_dataframe(paths_dict, train_val_headers, numeric_header_name_to_key): - - # intitialize columns - columns = {header: [] for header in train_val_headers} - columns['TrainOrVal'] = [] - columns['Partition_ID'] = [] - - for inst_name, inst_paths_dict in paths_dict.items(): - for usage in ['train', 'val']: - for key_to_fpath in inst_paths_dict[usage]: - columns['Partition_ID'].append(inst_name) - columns['TrainOrVal'].append(usage) - for header in train_val_headers: - if header == 0: - # grabbing the the data subfolder name as the subject id - columns[header].append(key_to_fpath['Subject_ID']) - else: - columns[header].append(key_to_fpath[numeric_header_name_to_key[header]]) - - return pd.DataFrame(columns, dtype=str) - - -def construct_fedsim_csv(pardir, - split_subdirs_path, - percent_train, - federated_simulation_train_val_csv_path, - training_and_validation=True): - - # read in the csv defining the subdirs per institution - split_subdirs = pd.read_csv(split_subdirs_path, dtype=str) - - if not set(['Partition_ID', 'Subject_ID']).issubset(set(split_subdirs.columns)): - raise ValueError("The provided csv at {} must at minimum contain the columns 'Partition_ID' and 'Subject_ID', but the columns are: {}".format(split_subdirs_path, list(split_subdirs.columns))) - - # sanity check that all subdirs provided in the dataframe are unique - if not split_subdirs['Subject_ID'].is_unique: - raise ValueError("Repeated references to the same data subdir were found in the 'Subject_ID' column of {}".format(split_subdirs_path)) - - train_val_specified = ('TrainOrVal' in split_subdirs.columns) - if train_val_specified: - print("Inferring train/val split using 'TrainOrVal' column of split_subdirs csv") - else: - print("No 'TrainOrVal' column found in split_subdirs csv, so performing automated split using percent_train of {}".format(percent_train)) - - - inst_names = list(split_subdirs['Partition_ID'].unique()) - - paths_dict = {inst_name: {'train': [], 'val': []} for inst_name in inst_names} - for inst_name in inst_names: - - if train_val_specified: - train_subdirs = list(split_subdirs[(split_subdirs['Partition_ID']==inst_name) & (split_subdirs['TrainOrVal']=='train')]['Subject_ID']) - val_subdirs = list(split_subdirs[(split_subdirs['Partition_ID']==inst_name) & (split_subdirs['TrainOrVal']=='val')]['Subject_ID']) - if len(train_subdirs) == 0: - raise ValueError("Train/val split specified in {} for insitution {} indicates an empty training set.".format(split_subdirs_path, inst_name)) - if len(val_subdirs) == 0: - raise ValueError("Train/val split specified in {} for insitution {} indicates an empty val set.".format(split_subdirs_path, inst_name)) - else: - subdirs = list(split_subdirs[split_subdirs['Partition_ID']==inst_name]['Subject_ID']) - train_subdirs, val_subdirs = train_val_split(subdirs=subdirs, percent_train=percent_train) - - for subdir in train_subdirs: - inner_dict = get_appropriate_file_paths_from_subject_dir(os.path.join(pardir, subdir), include_labels=True) - inner_dict['Subject_ID'] = subdir - paths_dict[inst_name]['train'].append(inner_dict) - - for subdir in val_subdirs: - inner_dict = get_appropriate_file_paths_from_subject_dir(os.path.join(pardir, subdir), include_labels=training_and_validation) - inner_dict['Subject_ID'] = subdir - paths_dict[inst_name]['val'].append(inner_dict) - - # now construct the dataframe and save it as a csv - if training_and_validation: - df = paths_dict_to_dataframe(paths_dict=paths_dict, - train_val_headers=train_val_headers, - numeric_header_name_to_key=numeric_header_name_to_key) - else: - df = construct_validation_dataframe(paths_dict=paths_dict, - val_headers=val_headers, - numeric_header_name_to_key=numeric_header_name_to_key) - return df - - df.to_csv(federated_simulation_train_val_csv_path, index=False) - return list(sorted(df.Partition_ID.unique())) - -def construct_validation_dataframe(paths_dict, val_headers, numeric_header_name_to_key): - - # intitialize columns - columns = {str(header): [] for header in val_headers} - columns['TrainOrVal'] = [] - columns['Partition_ID'] = [] - - for inst_name, inst_paths_dict in paths_dict.items(): - for usage in ['train', 'val']: - for key_to_fpath in inst_paths_dict[usage]: - columns['Partition_ID'].append(inst_name) - columns['TrainOrVal'].append(usage) - for header in val_headers: - if header == 0: - # grabbing the the data subfolder name as the subject id - columns[str(header)].append(key_to_fpath['Subject_ID']) - else: - columns[str(header)].append(key_to_fpath[numeric_header_name_to_key[header]]) - - df = pd.DataFrame(columns, dtype=str) - df = df.drop(columns=['TrainOrVal','Partition_ID']) - df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', - '2': 'Channel_1', '3': 'Channel_2', - '4': 'Channel_3'}) - return df - - - -def extract_csv_partitions(csv_path): - df = pd.read_csv(csv_path) - df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', - '2': 'Channel_1', '3': 'Channel_2', - '4': 'Channel_3', '5': 'Label'}) - cols = df['Partition_ID'].unique() - transformed_csv_dict = {} - - for col in cols: - transformed_csv_dict[str(col)] = {} - transformed_csv_dict[str(col)]['train'] = \ - df[(df['Partition_ID'] == col) & (df['TrainOrVal'] == 'train')].drop(columns=['TrainOrVal','Partition_ID']) - transformed_csv_dict[str(col)]['val'] = \ - df[(df['Partition_ID'] == col) & (df['TrainOrVal'] == 'val')].drop(columns=['TrainOrVal','Partition_ID']) - - return transformed_csv_dict - diff --git a/Task_1/build/lib/fets_challenge/inference.py b/Task_1/build/lib/fets_challenge/inference.py deleted file mode 100644 index 13f0680..0000000 --- a/Task_1/build/lib/fets_challenge/inference.py +++ /dev/null @@ -1,251 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 - -# Contributing Authors (alphabetical): -# Brandon Edwards (Intel), Patrick Foley (Intel), Micah Sheller (Intel) - -import os -from copy import copy -from logging import getLogger -from pathlib import Path - -import numpy as np -import SimpleITK as sitk - -import torch, torchio - -import openfl.native as fx -from .gandlf_csv_adapter import construct_fedsim_csv - -logger = getLogger(__name__) - -# some hard coded variables -channel_keys = ['1', '2', '3', '4'] -class_label_map = {0:0, 1:1, 2:2, 4:4} -class_list = list(np.sort(list(class_label_map.values()))) - -def nan_check(tensor, tensor_description): - tensor = tensor.cpu() - if torch.any(torch.isnan(tensor)): - raise ValueError("A " + tensor_description + " was found to have nan values.") - - -def binarize(array, threshold=0.5): - """ - Get binarized output using threshold. - """ - - if (np.amax(array) > 1.0) or (np.amin(array) < 0.0): - raise ValueError('Voxel value fed to lambda in converting to original labels was out of range.') - - # obtain binarized output - binarized = array.copy() - zero_mask = (binarized <= threshold) - binarized[zero_mask] = 0.0 - binarized[~zero_mask] = 1.0 - - return binarized - - -def get_binarized_and_belief(array, threshold=0.5): - - """ - Get binarized output using threshold and report the belief values for each of the - channels along the last axis. Belief value is a list of indices along the last axis, and is - determined by the order of how close (closest first) each binarization is from its original in this last axis - so belief should have the same shape as arrray. - Assumptions: - - array is float valued in the range [0.0, 1.0] - """ - - # check assumption above - if (np.amax(array) > 1.0) or (np.amin(array) < 0.0): - raise ValueError('Voxel value fed to lambda in converting to original labels was out of range.') - - # obtain binarized output - binarized = binarize(array=array, threshold=threshold) - - # we will sort from least to greatest, so least suspicion is what we will believe - raw_suspicion = np.absolute(array - binarized) - - belief = np.argsort(raw_suspicion, axis=-1) - - return binarized, belief - -def generate_validation_csv(data_path, validation_csv_filename, working_dir): - """ - Create the validation CSV to be consumed by the FeTSChallengeTaskRunner - """ - validation_csv_path = os.path.join(working_dir, validation_csv_filename) - validation_csv_dict = construct_fedsim_csv(data_path, - validation_csv_path, - 0.0, - 'placeholder', - training_and_validation=False) - validation_csv_dict.to_csv(os.path.join(working_dir, 'validation_paths.csv'),index=False) - -def replace_initializations(done_replacing, array, mask, replacement_value, initialization_value): - """ - Replace in array[mask] intitialization values with replacement value, - ensuring that the locations to replace all held initialization values - """ - - # sanity check - if np.any(mask) and done_replacing: - raise ValueError('Being given locations to replace and yet told that we are done replacing.') - - # check that the mask and array have the same shape - if array.shape != mask.shape: - raise ValueError('Attempting to replace using a mask shape: {} not equal to the array shape: {}'.format(mask.shape, array.shape)) - - # check that the mask only points to locations with initialized values - if np.any(array[mask] != initialization_value): - raise ValueError('Attempting to overwrite a non-initialization value.') - - array[mask] = replacement_value - - done_replacing = np.all(array!=initialization_value) - - return array, done_replacing - - -def check_subarray(array1, array2): - """ - Checks to see where array2 is a subarray of array1. - Assumptions: - - array2 has one axis and is equal in length to the last axis of array1 - """ - - # check assumption - if (len(array2.shape) != 1) or (array2.shape[0] != array1.shape[-1]): - raise ValueError('Attempting to check for subarray equality when shape assumption does not hold.') - - return np.all(array1==array2, axis=-1) - - -def convert_to_original_labels(array, threshold=0.5, initialization_value=999): - """ - array has float output in the range [0.0, 1.0]. - Last three channels are expected to correspond to ET, TC, and WT respecively. - - """ - - binarized, belief = get_binarized_and_belief(array=array, threshold=threshold) - - #sanity check - if binarized.shape != belief.shape: - raise ValueError('Sanity check did not pass.') - - # initialize with a crazy label we will be sure is gone in the end - slice_all_but_last_channel = tuple([slice(None) for _ in array.shape[:-1]] + [0]) - original_labels = initialization_value * np.ones_like(array[slice_all_but_last_channel]) - - # the outer keys correspond to the binarized values - # the inner keys correspond to the order of indices comingn from argsort(ascending) on suspicion, i.e. - # how far the binarized sigmoid outputs were from the original sigmoid outputs - # for example, (2, 1, 0) means the suspicion from least to greatest was: 'WT', 'TC', 'ET' - # (recall that the order of the last three channels is expected to be: 'ET', 'TC', and 'WT') - mapper = {(0, 0, 0): 0, - (1, 1, 1): 4, - (0, 1, 1): 1, - (0, 0, 1): 2, - (0, 1, 0): {(2, 0, 1): 0, - (2, 1, 0): 0, - (1, 0, 2): 1, - (1, 2, 0): 1, - (0, 2, 1): 0, - (0, 1, 2): 1}, - (1, 1, 0): {(2, 0, 1): 0, - (2, 1, 0): 0, - (1, 0, 2): 4, - (1, 2, 0): 4, - (0, 2, 1): 4, - (0, 1, 2): 4}, - (1, 0, 1): {(2, 0, 1): 4, - (2, 1, 0): 2, - (1, 0, 2): 2, - (1, 2, 0): 2, - (0, 2, 1): 4, - (0, 1, 2): 4}, - (1, 0, 0): {(2, 0, 1): 0, - (2, 1, 0): 0, - (1, 0, 2): 0, - (1, 2, 0): 0, - (0, 2, 1): 4, - (0, 1, 2): 4}} - - - - done_replacing = False - - for binary_key, inner in mapper.items(): - mask1 = check_subarray(array1=binarized, array2=np.array(binary_key)) - if isinstance(inner, int): - original_labels, done_replacing = replace_initializations(done_replacing=done_replacing, - array=original_labels, - mask=mask1, - replacement_value=inner, - initialization_value=initialization_value) - else: - for inner_key, inner_value in inner.items(): - mask2 = np.logical_and(mask1, check_subarray(array1=belief, array2=np.array(inner_key))) - original_labels, done_replacing = replace_initializations(done_replacing=done_replacing, - array=original_labels, - mask=mask2, - replacement_value=inner_value, - initialization_value=initialization_value) - - if not done_replacing: - raise ValueError('About to return so should have been done replacing but told otherwise.') - - return original_labels.astype(np.uint8) - - -def model_outputs_to_disc(data_path, - validation_csv, - output_path, - native_model_path, - outputtag='', - device='cpu'): - - fx.init('fets_challenge_workspace') - - from sys import path, exit - - file = Path(__file__).resolve() - root = file.parent.resolve() # interface root, containing command modules - work = Path.cwd().resolve() - - path.append(str(root)) - path.insert(0, str(work)) - - generate_validation_csv(data_path,validation_csv, working_dir=work) - - overrides = { - 'task_runner.settings.device': device, - 'task_runner.settings.val_csv': 'validation_paths.csv', - 'task_runner.settings.train_csv': None, - } - - # Update the plan if necessary - plan = fx.update_plan(overrides) - plan.config['task_runner']['settings']['fets_config_dict']['save_output'] = True - plan.config['task_runner']['settings']['fets_config_dict']['output_dir'] = output_path - - # overwrite datapath value for a single 'InferenceCol' collaborator - plan.cols_data_paths['InferenceCol'] = data_path - - # get the inference data loader - data_loader = copy(plan).get_data_loader('InferenceCol') - - # get the task runner, passing the data loader - task_runner = copy(plan).get_task_runner(data_loader) - - # Populate model weights - device = torch.device(device) - task_runner.load_native(filepath=native_model_path, map_location=device) - task_runner.opt_treatment = 'RESET' - - logger.info('Starting inference using data from {}\n'.format(data_path)) - - task_runner.inference('aggregator',-1,task_runner.get_tensor_dict(),apply='global') - logger.info(f"\nFinished generating predictions to output folder {output_path}") diff --git a/Task_1/build/lib/fets_challenge/spec_sens_code.py b/Task_1/build/lib/fets_challenge/spec_sens_code.py deleted file mode 100644 index 50d35b9..0000000 --- a/Task_1/build/lib/fets_challenge/spec_sens_code.py +++ /dev/null @@ -1,113 +0,0 @@ -import numpy as np - -def check_shapes_same(output, target): - if output.shape != target.shape: - raise ValueError('Shapes of output {} and target {} do not match.'.format(output.shape, target.shape)) - - -def check_classes_enumerated_along_correct_axis(array, axis, num_classes): - if array.shape[axis] != num_classes: - raise ValueError('The idx={} channel of array should enumerate classes, but its shape is {} and there are {} classes.'.format(axis, array.shape, num_classes)) - - -def check_is_binary_single(array): - unique_values = np.unique(array) - if not set(unique_values).issubset(set([1.0, 0.0])): - raise ValueError('The provided array is not binary as unique values are: {}'.format(unique_values)) - -def apply_threshold(array, threshold=0.5): - - over_threshold = array >= threshold - - bin_tensor = np.zeros_like(array) - bin_tensor[over_threshold] = 1 - - return bin_tensor - - -def binarize_output(output, class_list, modality, threshold=0.5, class_axis=1): - if class_list == ['4', '1||4', '1||2||4']: - check_classes_enumerated_along_correct_axis(array=output, axis=class_axis, num_classes=len(class_list)) - - slices = [slice(None) for _ in output.shape] - - # select appropriate channel for modality, and convert floats to binary using threshold - if modality == 'ET': - slices[class_axis] = 0 - binarized_output = apply_threshold(output[tuple(slices)], threshold=threshold) - elif modality == 'TC': - slices[class_axis] = 1 - binarized_output = apply_threshold(output[tuple(slices)], threshold=threshold) - elif modality == 'WT': - slices[class_axis] = 2 - binarized_output = apply_threshold(output[tuple(slices)], threshold=threshold) - else: - raise ValueError('Modality {} is not currently supported.'.format(modality)) - - else: - raise ValueError("Class list {} is not currently supported.".format(class_list)) - - check_is_binary_single(binarized_output) - - return binarized_output - - -def brats_labels(output, - target, - class_list= ['4', '1||4', '1||2||4'], - binarized=True, - **kwargs): - # take output and target and create: (output_, lable_) - # for tasks in ['enhancing', 'core', 'whole'] - # these can be binary (per-voxel) decisions (if binarized==True) or float valued - if binarized: - output_enhancing = binarize_output(output=output, - class_list=class_list, - modality='ET') - - output_core = binarize_output(output=output, - class_list=class_list, - modality='TC') - - output_whole = binarize_output(output=output, - class_list=class_list, - modality='WT') - - # We detect specific use_cases here, and force a change in the code when another is wanted. - # In all cases, we rely on the order of class_list !!! - if list(class_list) == ['4', '1||4', '1||2||4']: - # In this case we track only enhancing tumor, tumor core, and whole tumor (no background class). - - if not binarized: - - # enhancing signal is channel 0 because of known class_list with fused labels - output_enhancing = output[:,0,:,:,:] - - # core signal is channel 1 because of known class_list with fused labels - output_core = output[:,1,:,:,:] - - # whole signal is channel 2 because of known class_list with fused labels - output_whole = output[:,2,:,:,:] - - - # enhancing signal is channel 0 because of known class_list with fused labels - target_enhancing = target[:,0,:,:,:] - - # core signal is channel 1 because of known class_list with fused labels - target_core = target[:,1,:,:,:] - - # whole signal is channel 2 because of known class_list with fused labels - target_whole = target[:,2,:,:,:] - else: - raise ValueError('No implementation for this model class_list: ', class_list) - - check_shapes_same(output=output_enhancing, target=target_enhancing) - check_shapes_same(output=output_core, target=target_core) - check_shapes_same(output=output_whole, target=target_whole) - - return {'outputs': {'ET': output_enhancing, - 'TC': output_core, - 'WT': output_whole}, - 'targets': {'ET': target_enhancing, - 'TC': target_core, - 'WT': target_whole}} diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv deleted file mode 100644 index a5a8fb3..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_1.csv +++ /dev/null @@ -1,1252 +0,0 @@ -Partition_ID,Subject_ID -1,FeTS2022_01341 -1,FeTS2022_01333 -1,FeTS2022_01077 -1,FeTS2022_01054 -1,FeTS2022_00285 -1,FeTS2022_01308 -1,FeTS2022_01363 -1,FeTS2022_01091 -1,FeTS2022_01273 -1,FeTS2022_01108 -1,FeTS2022_01255 -1,FeTS2022_01301 -1,FeTS2022_00219 -1,FeTS2022_00380 -1,FeTS2022_01349 -1,FeTS2022_00251 -1,FeTS2022_01276 -1,FeTS2022_01407 -1,FeTS2022_01344 -1,FeTS2022_01405 -1,FeTS2022_00218 -1,FeTS2022_01327 -1,FeTS2022_01252 -1,FeTS2022_01132 -1,FeTS2022_01036 -1,FeTS2022_01039 -1,FeTS2022_01366 -1,FeTS2022_00262 -1,FeTS2022_01279 -1,FeTS2022_00839 -1,FeTS2022_01322 -1,FeTS2022_00389 -1,FeTS2022_00390 -1,FeTS2022_00431 -1,FeTS2022_00222 -1,FeTS2022_00373 -1,FeTS2022_00288 -1,FeTS2022_00284 -1,FeTS2022_01088 -1,FeTS2022_00311 -1,FeTS2022_00387 -1,FeTS2022_00258 -1,FeTS2022_01389 -1,FeTS2022_00321 -1,FeTS2022_01249 -1,FeTS2022_01230 -1,FeTS2022_00836 -1,FeTS2022_00348 -1,FeTS2022_01205 -1,FeTS2022_00246 -1,FeTS2022_00314 -1,FeTS2022_01404 -1,FeTS2022_01102 -1,FeTS2022_00379 -1,FeTS2022_01395 -1,FeTS2022_00155 -1,FeTS2022_00170 -1,FeTS2022_01264 -1,FeTS2022_00837 -1,FeTS2022_01372 -1,FeTS2022_00341 -1,FeTS2022_01257 -1,FeTS2022_00329 -1,FeTS2022_00425 -1,FeTS2022_01350 -1,FeTS2022_01247 -1,FeTS2022_01234 -1,FeTS2022_00331 -1,FeTS2022_01128 -1,FeTS2022_01365 -1,FeTS2022_00221 -1,FeTS2022_00298 -1,FeTS2022_00227 -1,FeTS2022_01204 -1,FeTS2022_00204 -1,FeTS2022_01399 -1,FeTS2022_00377 -1,FeTS2022_00343 -1,FeTS2022_00280 -1,FeTS2022_01347 -1,FeTS2022_00210 -1,FeTS2022_01117 -1,FeTS2022_01275 -1,FeTS2022_01034 -1,FeTS2022_00162 -1,FeTS2022_01340 -1,FeTS2022_01212 -1,FeTS2022_01220 -1,FeTS2022_00419 -1,FeTS2022_00340 -1,FeTS2022_00296 -1,FeTS2022_01208 -1,FeTS2022_01064 -1,FeTS2022_00433 -1,FeTS2022_01050 -1,FeTS2022_01278 -1,FeTS2022_00293 -1,FeTS2022_00206 -1,FeTS2022_00356 -1,FeTS2022_00376 -1,FeTS2022_00316 -1,FeTS2022_00403 -1,FeTS2022_01348 -1,FeTS2022_00192 -1,FeTS2022_00313 -1,FeTS2022_01240 -1,FeTS2022_01222 -1,FeTS2022_00344 -1,FeTS2022_00332 -1,FeTS2022_00292 -1,FeTS2022_01392 -1,FeTS2022_00220 -1,FeTS2022_00378 -1,FeTS2022_01130 -1,FeTS2022_01106 -1,FeTS2022_01295 -1,FeTS2022_01409 -1,FeTS2022_01057 -1,FeTS2022_01068 -1,FeTS2022_00320 -1,FeTS2022_00346 -1,FeTS2022_01001 -1,FeTS2022_01207 -1,FeTS2022_01137 -1,FeTS2022_01318 -1,FeTS2022_00289 -1,FeTS2022_00157 -1,FeTS2022_01224 -1,FeTS2022_01367 -1,FeTS2022_01382 -1,FeTS2022_00309 -1,FeTS2022_01008 -1,FeTS2022_01059 -1,FeTS2022_01271 -1,FeTS2022_01110 -1,FeTS2022_01398 -1,FeTS2022_01119 -1,FeTS2022_00209 -1,FeTS2022_01274 -1,FeTS2022_01124 -1,FeTS2022_00241 -1,FeTS2022_00152 -1,FeTS2022_01131 -1,FeTS2022_01353 -1,FeTS2022_00352 -1,FeTS2022_01133 -1,FeTS2022_01084 -1,FeTS2022_00441 -1,FeTS2022_01268 -1,FeTS2022_01210 -1,FeTS2022_01375 -1,FeTS2022_00236 -1,FeTS2022_01218 -1,FeTS2022_01408 -1,FeTS2022_00274 -1,FeTS2022_01118 -1,FeTS2022_01213 -1,FeTS2022_01310 -1,FeTS2022_00194 -1,FeTS2022_00392 -1,FeTS2022_00334 -1,FeTS2022_00270 -1,FeTS2022_01359 -1,FeTS2022_01364 -1,FeTS2022_01336 -1,FeTS2022_01272 -1,FeTS2022_01090 -1,FeTS2022_00412 -1,FeTS2022_00228 -1,FeTS2022_00410 -1,FeTS2022_01239 -1,FeTS2022_01010 -1,FeTS2022_01394 -1,FeTS2022_00282 -1,FeTS2022_00237 -1,FeTS2022_01390 -1,FeTS2022_00382 -1,FeTS2022_00188 -1,FeTS2022_01211 -1,FeTS2022_01376 -1,FeTS2022_01243 -1,FeTS2022_01330 -1,FeTS2022_00253 -1,FeTS2022_01329 -1,FeTS2022_01306 -1,FeTS2022_01081 -1,FeTS2022_01369 -1,FeTS2022_01048 -1,FeTS2022_00328 -1,FeTS2022_00291 -1,FeTS2022_01049 -1,FeTS2022_01263 -1,FeTS2022_00317 -1,FeTS2022_00305 -1,FeTS2022_01265 -1,FeTS2022_00238 -1,FeTS2022_00423 -1,FeTS2022_01127 -1,FeTS2022_01379 -1,FeTS2022_01258 -1,FeTS2022_00299 -1,FeTS2022_01334 -1,FeTS2022_00350 -1,FeTS2022_01109 -1,FeTS2022_01352 -1,FeTS2022_01055 -1,FeTS2022_00167 -1,FeTS2022_01354 -1,FeTS2022_01231 -1,FeTS2022_00185 -1,FeTS2022_00306 -1,FeTS2022_00171 -1,FeTS2022_01261 -1,FeTS2022_01345 -1,FeTS2022_01397 -1,FeTS2022_00399 -1,FeTS2022_01319 -1,FeTS2022_01250 -1,FeTS2022_01097 -1,FeTS2022_01229 -1,FeTS2022_01393 -1,FeTS2022_00430 -1,FeTS2022_01203 -1,FeTS2022_01309 -1,FeTS2022_01342 -1,FeTS2022_01223 -1,FeTS2022_00239 -1,FeTS2022_00275 -1,FeTS2022_00406 -1,FeTS2022_01116 -1,FeTS2022_01380 -1,FeTS2022_00214 -1,FeTS2022_00195 -1,FeTS2022_01314 -1,FeTS2022_01113 -1,FeTS2022_00193 -1,FeTS2022_01259 -1,FeTS2022_00386 -1,FeTS2022_00834 -1,FeTS2022_01227 -1,FeTS2022_01277 -1,FeTS2022_00283 -1,FeTS2022_01099 -1,FeTS2022_00212 -1,FeTS2022_00165 -1,FeTS2022_01332 -1,FeTS2022_00364 -1,FeTS2022_01129 -1,FeTS2022_00301 -1,FeTS2022_01402 -1,FeTS2022_00199 -1,FeTS2022_01066 -1,FeTS2022_01107 -1,FeTS2022_01337 -1,FeTS2022_00230 -1,FeTS2022_01114 -1,FeTS2022_01294 -1,FeTS2022_01370 -1,FeTS2022_01269 -1,FeTS2022_01043 -1,FeTS2022_00359 -1,FeTS2022_01004 -1,FeTS2022_00286 -1,FeTS2022_01038 -1,FeTS2022_00370 -1,FeTS2022_00184 -1,FeTS2022_00360 -1,FeTS2022_01123 -1,FeTS2022_01237 -1,FeTS2022_01086 -1,FeTS2022_00231 -1,FeTS2022_00353 -1,FeTS2022_01254 -1,FeTS2022_01373 -1,FeTS2022_01100 -1,FeTS2022_01214 -1,FeTS2022_01242 -1,FeTS2022_01115 -1,FeTS2022_01331 -1,FeTS2022_00391 -1,FeTS2022_01312 -1,FeTS2022_00324 -1,FeTS2022_01080 -1,FeTS2022_00371 -1,FeTS2022_01396 -1,FeTS2022_00339 -1,FeTS2022_00260 -1,FeTS2022_00243 -1,FeTS2022_00233 -1,FeTS2022_01323 -1,FeTS2022_01248 -1,FeTS2022_00263 -1,FeTS2022_00347 -1,FeTS2022_01233 -1,FeTS2022_00367 -1,FeTS2022_01051 -1,FeTS2022_01126 -1,FeTS2022_01267 -1,FeTS2022_00383 -1,FeTS2022_01357 -1,FeTS2022_00413 -1,FeTS2022_01287 -1,FeTS2022_00349 -1,FeTS2022_01244 -1,FeTS2022_01041 -1,FeTS2022_01236 -1,FeTS2022_01245 -1,FeTS2022_01383 -1,FeTS2022_00196 -1,FeTS2022_01387 -1,FeTS2022_00297 -1,FeTS2022_01103 -1,FeTS2022_01098 -1,FeTS2022_01410 -1,FeTS2022_00440 -1,FeTS2022_01305 -1,FeTS2022_01304 -1,FeTS2022_01074 -1,FeTS2022_01046 -1,FeTS2022_01226 -1,FeTS2022_01253 -1,FeTS2022_01040 -1,FeTS2022_00269 -1,FeTS2022_00310 -1,FeTS2022_01056 -1,FeTS2022_01311 -1,FeTS2022_01338 -1,FeTS2022_00166 -1,FeTS2022_00327 -1,FeTS2022_00254 -1,FeTS2022_01000 -1,FeTS2022_00259 -1,FeTS2022_01134 -1,FeTS2022_01104 -1,FeTS2022_01232 -1,FeTS2022_01286 -1,FeTS2022_01052 -1,FeTS2022_01217 -1,FeTS2022_01238 -1,FeTS2022_00154 -1,FeTS2022_00395 -1,FeTS2022_00267 -1,FeTS2022_00366 -1,FeTS2022_00351 -1,FeTS2022_00159 -1,FeTS2022_00131 -1,FeTS2022_01246 -1,FeTS2022_01060 -1,FeTS2022_01087 -1,FeTS2022_00250 -1,FeTS2022_00234 -1,FeTS2022_01058 -1,FeTS2022_00235 -1,FeTS2022_00203 -1,FeTS2022_00414 -1,FeTS2022_01285 -1,FeTS2022_01071 -1,FeTS2022_01111 -1,FeTS2022_01377 -1,FeTS2022_01355 -1,FeTS2022_01384 -1,FeTS2022_01120 -1,FeTS2022_01082 -1,FeTS2022_01076 -1,FeTS2022_01072 -1,FeTS2022_00303 -1,FeTS2022_00436 -1,FeTS2022_01361 -1,FeTS2022_01073 -1,FeTS2022_00338 -1,FeTS2022_01351 -1,FeTS2022_00273 -1,FeTS2022_00186 -1,FeTS2022_00290 -1,FeTS2022_01381 -1,FeTS2022_01083 -1,FeTS2022_00409 -1,FeTS2022_00281 -1,FeTS2022_00840 -1,FeTS2022_00407 -1,FeTS2022_01094 -1,FeTS2022_01328 -1,FeTS2022_01078 -1,FeTS2022_00312 -1,FeTS2022_01235 -1,FeTS2022_01288 -1,FeTS2022_01391 -1,FeTS2022_01215 -1,FeTS2022_00160 -1,FeTS2022_00421 -1,FeTS2022_01317 -1,FeTS2022_01216 -1,FeTS2022_00178 -1,FeTS2022_00838 -1,FeTS2022_01321 -1,FeTS2022_01037 -1,FeTS2022_00176 -1,FeTS2022_01293 -1,FeTS2022_01219 -1,FeTS2022_01260 -1,FeTS2022_01339 -1,FeTS2022_01325 -1,FeTS2022_00249 -1,FeTS2022_01241 -1,FeTS2022_00211 -1,FeTS2022_01105 -1,FeTS2022_01138 -1,FeTS2022_00261 -1,FeTS2022_01316 -1,FeTS2022_01315 -1,FeTS2022_01256 -1,FeTS2022_00191 -1,FeTS2022_01069 -1,FeTS2022_01062 -1,FeTS2022_01135 -1,FeTS2022_00207 -1,FeTS2022_00401 -1,FeTS2022_00172 -1,FeTS2022_01085 -1,FeTS2022_00247 -1,FeTS2022_01206 -1,FeTS2022_01356 -1,FeTS2022_00325 -1,FeTS2022_00429 -1,FeTS2022_01122 -1,FeTS2022_01374 -1,FeTS2022_00156 -1,FeTS2022_01075 -1,FeTS2022_01362 -1,FeTS2022_01251 -1,FeTS2022_00405 -1,FeTS2022_01047 -1,FeTS2022_00240 -1,FeTS2022_00336 -1,FeTS2022_01092 -1,FeTS2022_01403 -1,FeTS2022_01385 -1,FeTS2022_01096 -1,FeTS2022_00426 -1,FeTS2022_00201 -1,FeTS2022_01335 -1,FeTS2022_00404 -1,FeTS2022_00322 -1,FeTS2022_00294 -1,FeTS2022_01070 -1,FeTS2022_01225 -1,FeTS2022_01067 -1,FeTS2022_00375 -1,FeTS2022_00158 -1,FeTS2022_00177 -1,FeTS2022_00271 -1,FeTS2022_01388 -1,FeTS2022_01053 -1,FeTS2022_01042 -1,FeTS2022_01400 -1,FeTS2022_00183 -1,FeTS2022_01358 -1,FeTS2022_01266 -1,FeTS2022_01360 -1,FeTS2022_00304 -1,FeTS2022_01065 -1,FeTS2022_01093 -1,FeTS2022_00397 -1,FeTS2022_01262 -1,FeTS2022_00217 -1,FeTS2022_01401 -1,FeTS2022_01125 -1,FeTS2022_01406 -1,FeTS2022_01343 -1,FeTS2022_01346 -1,FeTS2022_01089 -1,FeTS2022_00216 -1,FeTS2022_01061 -1,FeTS2022_01299 -1,FeTS2022_00242 -1,FeTS2022_01112 -1,FeTS2022_00300 -1,FeTS2022_01280 -1,FeTS2022_00187 -1,FeTS2022_00318 -1,FeTS2022_01371 -1,FeTS2022_01378 -1,FeTS2022_00418 -1,FeTS2022_01121 -1,FeTS2022_01136 -1,FeTS2022_00266 -1,FeTS2022_01221 -1,FeTS2022_01307 -1,FeTS2022_01386 -1,FeTS2022_00432 -1,FeTS2022_01101 -1,FeTS2022_01228 -1,FeTS2022_01313 -1,FeTS2022_01209 -1,FeTS2022_00388 -1,FeTS2022_01270 -1,FeTS2022_01044 -1,FeTS2022_00417 -1,FeTS2022_01063 -1,FeTS2022_01368 -1,FeTS2022_00369 -1,FeTS2022_01095 -1,FeTS2022_00416 -1,FeTS2022_00400 -1,FeTS2022_01045 -1,FeTS2022_01202 -1,FeTS2022_01326 -1,FeTS2022_01079 -1,FeTS2022_00402 -1,FeTS2022_01320 -1,FeTS2022_01324 -2,FeTS2022_01412 -2,FeTS2022_01415 -2,FeTS2022_01411 -2,FeTS2022_01414 -2,FeTS2022_01413 -2,FeTS2022_01416 -3,FeTS2022_01439 -3,FeTS2022_01435 -3,FeTS2022_01434 -3,FeTS2022_01440 -3,FeTS2022_01431 -3,FeTS2022_01437 -3,FeTS2022_01436 -3,FeTS2022_01433 -3,FeTS2022_01438 -3,FeTS2022_01426 -3,FeTS2022_01427 -3,FeTS2022_01428 -3,FeTS2022_01429 -3,FeTS2022_01432 -3,FeTS2022_01430 -4,FeTS2022_01152 -4,FeTS2022_01178 -4,FeTS2022_01186 -4,FeTS2022_01184 -4,FeTS2022_01181 -4,FeTS2022_01187 -4,FeTS2022_01168 -4,FeTS2022_01196 -4,FeTS2022_01173 -4,FeTS2022_01176 -4,FeTS2022_01200 -4,FeTS2022_00565 -4,FeTS2022_01193 -4,FeTS2022_01174 -4,FeTS2022_01662 -4,FeTS2022_01660 -4,FeTS2022_01201 -4,FeTS2022_01167 -4,FeTS2022_01170 -4,FeTS2022_01179 -4,FeTS2022_01185 -4,FeTS2022_01197 -4,FeTS2022_01172 -4,FeTS2022_01189 -4,FeTS2022_00563 -4,FeTS2022_01180 -4,FeTS2022_01198 -4,FeTS2022_01183 -4,FeTS2022_01151 -4,FeTS2022_01195 -4,FeTS2022_01657 -4,FeTS2022_01194 -4,FeTS2022_01191 -4,FeTS2022_01169 -4,FeTS2022_01171 -4,FeTS2022_00561 -4,FeTS2022_01659 -4,FeTS2022_01661 -4,FeTS2022_01190 -4,FeTS2022_01188 -4,FeTS2022_01199 -4,FeTS2022_01658 -4,FeTS2022_01192 -4,FeTS2022_01175 -4,FeTS2022_01182 -4,FeTS2022_01537 -4,FeTS2022_01177 -5,FeTS2022_00102 -5,FeTS2022_00149 -5,FeTS2022_01290 -5,FeTS2022_00113 -5,FeTS2022_01009 -5,FeTS2022_01007 -5,FeTS2022_01002 -5,FeTS2022_00139 -5,FeTS2022_01292 -5,FeTS2022_00100 -5,FeTS2022_01289 -5,FeTS2022_01291 -5,FeTS2022_01005 -5,FeTS2022_01282 -5,FeTS2022_01003 -5,FeTS2022_00109 -5,FeTS2022_01283 -5,FeTS2022_00999 -5,FeTS2022_01281 -5,FeTS2022_01284 -5,FeTS2022_00151 -5,FeTS2022_00123 -6,FeTS2022_01451 -6,FeTS2022_01453 -6,FeTS2022_01452 -6,FeTS2022_00831 -6,FeTS2022_01448 -6,FeTS2022_01300 -6,FeTS2022_01443 -6,FeTS2022_00136 -6,FeTS2022_01454 -6,FeTS2022_00144 -6,FeTS2022_00121 -6,FeTS2022_01297 -6,FeTS2022_00133 -6,FeTS2022_01447 -6,FeTS2022_00142 -6,FeTS2022_01450 -6,FeTS2022_00120 -6,FeTS2022_01298 -6,FeTS2022_01449 -6,FeTS2022_01442 -6,FeTS2022_01446 -6,FeTS2022_01303 -6,FeTS2022_01296 -6,FeTS2022_00132 -6,FeTS2022_01441 -6,FeTS2022_01445 -6,FeTS2022_01302 -6,FeTS2022_00143 -6,FeTS2022_00105 -6,FeTS2022_01444 -6,FeTS2022_00147 -6,FeTS2022_01455 -6,FeTS2022_00146 -6,FeTS2022_00137 -7,FeTS2022_01459 -7,FeTS2022_01464 -7,FeTS2022_01458 -7,FeTS2022_01457 -7,FeTS2022_01461 -7,FeTS2022_01456 -7,FeTS2022_01460 -7,FeTS2022_01462 -7,FeTS2022_01466 -7,FeTS2022_01465 -7,FeTS2022_01463 -7,FeTS2022_01467 -8,FeTS2022_00140 -8,FeTS2022_01469 -8,FeTS2022_01468 -8,FeTS2022_01470 -8,FeTS2022_00104 -8,FeTS2022_00110 -8,FeTS2022_00112 -8,FeTS2022_00128 -9,FeTS2022_00134 -9,FeTS2022_00150 -9,FeTS2022_00116 -9,FeTS2022_01471 -10,FeTS2022_01472 -10,FeTS2022_00117 -10,FeTS2022_00130 -10,FeTS2022_00138 -10,FeTS2022_01473 -10,FeTS2022_00111 -10,FeTS2022_00124 -10,FeTS2022_00106 -11,FeTS2022_00122 -11,FeTS2022_00148 -11,FeTS2022_01474 -11,FeTS2022_00108 -11,FeTS2022_01144 -11,FeTS2022_00107 -11,FeTS2022_01140 -11,FeTS2022_01146 -11,FeTS2022_01145 -11,FeTS2022_01139 -11,FeTS2022_01141 -11,FeTS2022_01142 -11,FeTS2022_01143 -11,FeTS2022_01475 -12,FeTS2022_01482 -12,FeTS2022_01480 -12,FeTS2022_01485 -12,FeTS2022_01476 -12,FeTS2022_01481 -12,FeTS2022_01483 -12,FeTS2022_01486 -12,FeTS2022_01484 -12,FeTS2022_01479 -12,FeTS2022_01477 -12,FeTS2022_01478 -13,FeTS2022_01491 -13,FeTS2022_01500 -13,FeTS2022_01519 -13,FeTS2022_01516 -13,FeTS2022_01509 -13,FeTS2022_01520 -13,FeTS2022_01508 -13,FeTS2022_01503 -13,FeTS2022_01488 -13,FeTS2022_01492 -13,FeTS2022_01502 -13,FeTS2022_01493 -13,FeTS2022_01497 -13,FeTS2022_01499 -13,FeTS2022_01487 -13,FeTS2022_01505 -13,FeTS2022_01504 -13,FeTS2022_01490 -13,FeTS2022_01507 -13,FeTS2022_01510 -13,FeTS2022_01512 -13,FeTS2022_01514 -13,FeTS2022_01517 -13,FeTS2022_01501 -13,FeTS2022_01518 -13,FeTS2022_01506 -13,FeTS2022_01515 -13,FeTS2022_01511 -13,FeTS2022_01494 -13,FeTS2022_01489 -13,FeTS2022_01513 -13,FeTS2022_01496 -13,FeTS2022_01495 -13,FeTS2022_01521 -13,FeTS2022_01498 -14,FeTS2022_01522 -14,FeTS2022_01525 -14,FeTS2022_01526 -14,FeTS2022_01527 -14,FeTS2022_01524 -14,FeTS2022_01523 -15,FeTS2022_01530 -15,FeTS2022_01536 -15,FeTS2022_01535 -15,FeTS2022_01663 -15,FeTS2022_01534 -15,FeTS2022_01529 -15,FeTS2022_01531 -15,FeTS2022_01666 -15,FeTS2022_01665 -15,FeTS2022_01532 -15,FeTS2022_01664 -15,FeTS2022_01528 -15,FeTS2022_01533 -16,FeTS2022_00584 -16,FeTS2022_00567 -16,FeTS2022_00571 -16,FeTS2022_00582 -16,FeTS2022_00570 -16,FeTS2022_00594 -16,FeTS2022_00597 -16,FeTS2022_00596 -16,FeTS2022_00576 -16,FeTS2022_00572 -16,FeTS2022_00115 -16,FeTS2022_00593 -16,FeTS2022_00588 -16,FeTS2022_00598 -16,FeTS2022_00589 -16,FeTS2022_00574 -16,FeTS2022_00586 -16,FeTS2022_00579 -16,FeTS2022_00590 -16,FeTS2022_00599 -16,FeTS2022_00577 -16,FeTS2022_00575 -16,FeTS2022_00581 -16,FeTS2022_00591 -16,FeTS2022_00569 -16,FeTS2022_00587 -16,FeTS2022_00580 -16,FeTS2022_00583 -16,FeTS2022_00578 -16,FeTS2022_00568 -17,FeTS2022_01423 -17,FeTS2022_01420 -17,FeTS2022_01422 -17,FeTS2022_01417 -17,FeTS2022_01421 -17,FeTS2022_01424 -17,FeTS2022_01418 -17,FeTS2022_01425 -17,FeTS2022_01419 -18,FeTS2022_01628 -18,FeTS2022_01615 -18,FeTS2022_01035 -18,FeTS2022_00732 -18,FeTS2022_00753 -18,FeTS2022_01620 -18,FeTS2022_01637 -18,FeTS2022_01594 -18,FeTS2022_00530 -18,FeTS2022_00772 -18,FeTS2022_01580 -18,FeTS2022_00731 -18,FeTS2022_00540 -18,FeTS2022_00464 -18,FeTS2022_01622 -18,FeTS2022_01154 -18,FeTS2022_01559 -18,FeTS2022_00729 -18,FeTS2022_00708 -18,FeTS2022_00044 -18,FeTS2022_00705 -18,FeTS2022_00645 -18,FeTS2022_01640 -18,FeTS2022_00008 -18,FeTS2022_00746 -18,FeTS2022_01551 -18,FeTS2022_01610 -18,FeTS2022_00061 -18,FeTS2022_00642 -18,FeTS2022_00675 -18,FeTS2022_01651 -18,FeTS2022_00651 -18,FeTS2022_00626 -18,FeTS2022_00028 -18,FeTS2022_01557 -18,FeTS2022_01616 -18,FeTS2022_00684 -18,FeTS2022_01538 -18,FeTS2022_01647 -18,FeTS2022_00688 -18,FeTS2022_00737 -18,FeTS2022_00063 -18,FeTS2022_00758 -18,FeTS2022_01159 -18,FeTS2022_00615 -18,FeTS2022_00621 -18,FeTS2022_01543 -18,FeTS2022_01560 -18,FeTS2022_00058 -18,FeTS2022_00009 -18,FeTS2022_00544 -18,FeTS2022_01611 -18,FeTS2022_00485 -18,FeTS2022_00735 -18,FeTS2022_00659 -18,FeTS2022_00025 -18,FeTS2022_00550 -18,FeTS2022_01599 -18,FeTS2022_00636 -18,FeTS2022_01644 -18,FeTS2022_00716 -18,FeTS2022_00641 -18,FeTS2022_01624 -18,FeTS2022_00547 -18,FeTS2022_00046 -18,FeTS2022_00728 -18,FeTS2022_00045 -18,FeTS2022_00493 -18,FeTS2022_00089 -18,FeTS2022_00622 -18,FeTS2022_01643 -18,FeTS2022_00602 -18,FeTS2022_00035 -18,FeTS2022_01545 -18,FeTS2022_00014 -18,FeTS2022_01566 -18,FeTS2022_00066 -18,FeTS2022_01614 -18,FeTS2022_01591 -18,FeTS2022_00514 -18,FeTS2022_01588 -18,FeTS2022_00520 -18,FeTS2022_01556 -18,FeTS2022_00097 -18,FeTS2022_00555 -18,FeTS2022_00736 -18,FeTS2022_00639 -18,FeTS2022_00479 -18,FeTS2022_01550 -18,FeTS2022_01592 -18,FeTS2022_01626 -18,FeTS2022_00557 -18,FeTS2022_00496 -18,FeTS2022_00778 -18,FeTS2022_01561 -18,FeTS2022_00690 -18,FeTS2022_00750 -18,FeTS2022_01586 -18,FeTS2022_01549 -18,FeTS2022_01555 -18,FeTS2022_01612 -18,FeTS2022_01600 -18,FeTS2022_01629 -18,FeTS2022_01656 -18,FeTS2022_00500 -18,FeTS2022_00529 -18,FeTS2022_00628 -18,FeTS2022_00775 -18,FeTS2022_00523 -18,FeTS2022_00488 -18,FeTS2022_00518 -18,FeTS2022_00000 -18,FeTS2022_00020 -18,FeTS2022_01646 -18,FeTS2022_01638 -18,FeTS2022_00630 -18,FeTS2022_01590 -18,FeTS2022_01613 -18,FeTS2022_01571 -18,FeTS2022_00519 -18,FeTS2022_01617 -18,FeTS2022_01623 -18,FeTS2022_00691 -18,FeTS2022_01027 -18,FeTS2022_00704 -18,FeTS2022_00098 -18,FeTS2022_01558 -18,FeTS2022_00715 -18,FeTS2022_00757 -18,FeTS2022_00084 -18,FeTS2022_00692 -18,FeTS2022_00078 -18,FeTS2022_00747 -18,FeTS2022_01607 -18,FeTS2022_00751 -18,FeTS2022_00011 -18,FeTS2022_00610 -18,FeTS2022_00694 -18,FeTS2022_00026 -18,FeTS2022_00658 -18,FeTS2022_01544 -18,FeTS2022_01583 -18,FeTS2022_00680 -18,FeTS2022_01028 -18,FeTS2022_01636 -18,FeTS2022_00545 -18,FeTS2022_00072 -18,FeTS2022_00016 -18,FeTS2022_01548 -18,FeTS2022_00624 -18,FeTS2022_00676 -18,FeTS2022_00533 -18,FeTS2022_01574 -18,FeTS2022_01582 -18,FeTS2022_00085 -18,FeTS2022_00613 -18,FeTS2022_01593 -18,FeTS2022_00730 -18,FeTS2022_01585 -18,FeTS2022_00524 -18,FeTS2022_00081 -18,FeTS2022_00472 -18,FeTS2022_00478 -18,FeTS2022_00469 -18,FeTS2022_00682 -18,FeTS2022_00733 -18,FeTS2022_00723 -18,FeTS2022_00099 -18,FeTS2022_00744 -18,FeTS2022_00048 -18,FeTS2022_00480 -18,FeTS2022_00650 -18,FeTS2022_00601 -18,FeTS2022_00542 -18,FeTS2022_00667 -18,FeTS2022_00505 -18,FeTS2022_01539 -18,FeTS2022_00764 -18,FeTS2022_00506 -18,FeTS2022_01649 -18,FeTS2022_00032 -18,FeTS2022_00021 -18,FeTS2022_00685 -18,FeTS2022_00611 -18,FeTS2022_00511 -18,FeTS2022_01584 -18,FeTS2022_01635 -18,FeTS2022_00607 -18,FeTS2022_00071 -18,FeTS2022_00687 -18,FeTS2022_00767 -18,FeTS2022_00537 -18,FeTS2022_01630 -18,FeTS2022_00740 -18,FeTS2022_00525 -18,FeTS2022_00725 -18,FeTS2022_00502 -18,FeTS2022_01562 -18,FeTS2022_01577 -18,FeTS2022_01576 -18,FeTS2022_01595 -18,FeTS2022_00654 -18,FeTS2022_00090 -18,FeTS2022_01645 -18,FeTS2022_01564 -18,FeTS2022_01567 -18,FeTS2022_00703 -18,FeTS2022_00043 -18,FeTS2022_00003 -18,FeTS2022_00495 -18,FeTS2022_00017 -18,FeTS2022_00491 -18,FeTS2022_00054 -18,FeTS2022_00510 -18,FeTS2022_00618 -18,FeTS2022_00064 -18,FeTS2022_00024 -18,FeTS2022_00709 -18,FeTS2022_01653 -18,FeTS2022_01579 -18,FeTS2022_01572 -18,FeTS2022_01156 -18,FeTS2022_00707 -18,FeTS2022_01540 -18,FeTS2022_00056 -18,FeTS2022_00620 -18,FeTS2022_00470 -18,FeTS2022_00499 -18,FeTS2022_00640 -18,FeTS2022_00549 -18,FeTS2022_01601 -18,FeTS2022_00608 -18,FeTS2022_00727 -18,FeTS2022_00773 -18,FeTS2022_00504 -18,FeTS2022_01604 -18,FeTS2022_01158 -18,FeTS2022_00051 -18,FeTS2022_00768 -18,FeTS2022_01161 -18,FeTS2022_00765 -18,FeTS2022_00068 -18,FeTS2022_00551 -18,FeTS2022_01605 -18,FeTS2022_00674 -18,FeTS2022_01157 -18,FeTS2022_01631 -18,FeTS2022_00022 -18,FeTS2022_00777 -18,FeTS2022_01609 -18,FeTS2022_01633 -18,FeTS2022_01652 -18,FeTS2022_00759 -18,FeTS2022_01655 -18,FeTS2022_01639 -18,FeTS2022_01563 -18,FeTS2022_00661 -18,FeTS2022_00087 -18,FeTS2022_00030 -18,FeTS2022_00556 -18,FeTS2022_01597 -18,FeTS2022_00724 -18,FeTS2022_00096 -18,FeTS2022_00049 -18,FeTS2022_00683 -18,FeTS2022_00059 -18,FeTS2022_01596 -18,FeTS2022_00498 -18,FeTS2022_00543 -18,FeTS2022_01641 -18,FeTS2022_01542 -18,FeTS2022_00062 -18,FeTS2022_00005 -18,FeTS2022_00646 -18,FeTS2022_00088 -18,FeTS2022_00656 -18,FeTS2022_01589 -18,FeTS2022_01160 -18,FeTS2022_01547 -18,FeTS2022_01606 -18,FeTS2022_00631 -18,FeTS2022_00756 -18,FeTS2022_00619 -18,FeTS2022_00698 -18,FeTS2022_01541 -18,FeTS2022_00539 -18,FeTS2022_00053 -18,FeTS2022_01618 -18,FeTS2022_00693 -18,FeTS2022_00616 -18,FeTS2022_01642 -18,FeTS2022_01632 -18,FeTS2022_00718 -18,FeTS2022_00006 -18,FeTS2022_00466 -18,FeTS2022_01565 -18,FeTS2022_01621 -18,FeTS2022_00697 -18,FeTS2022_00689 -18,FeTS2022_00554 -18,FeTS2022_00638 -18,FeTS2022_00517 -18,FeTS2022_00019 -18,FeTS2022_01650 -18,FeTS2022_01602 -18,FeTS2022_01570 -18,FeTS2022_00655 -18,FeTS2022_00552 -18,FeTS2022_00706 -18,FeTS2022_01654 -18,FeTS2022_00481 -18,FeTS2022_00604 -18,FeTS2022_00612 -18,FeTS2022_00774 -18,FeTS2022_00625 -18,FeTS2022_00070 -18,FeTS2022_00649 -18,FeTS2022_00036 -18,FeTS2022_01546 -18,FeTS2022_00559 -18,FeTS2022_00018 -18,FeTS2022_00507 -18,FeTS2022_00760 -18,FeTS2022_01568 -18,FeTS2022_00094 -18,FeTS2022_00526 -18,FeTS2022_01575 -18,FeTS2022_00512 -18,FeTS2022_00033 -18,FeTS2022_01648 -18,FeTS2022_00052 -18,FeTS2022_01625 -18,FeTS2022_01573 -18,FeTS2022_00623 -18,FeTS2022_01153 -18,FeTS2022_00532 -18,FeTS2022_00516 -18,FeTS2022_00679 -18,FeTS2022_00468 -18,FeTS2022_00494 -18,FeTS2022_00483 -18,FeTS2022_01552 -18,FeTS2022_00606 -18,FeTS2022_00742 -18,FeTS2022_00677 -18,FeTS2022_00652 -18,FeTS2022_00074 -18,FeTS2022_00513 -18,FeTS2022_01581 -18,FeTS2022_00663 -18,FeTS2022_00734 -18,FeTS2022_01619 -18,FeTS2022_00668 -18,FeTS2022_00558 -18,FeTS2022_00002 -18,FeTS2022_01598 -18,FeTS2022_00477 -18,FeTS2022_01634 -18,FeTS2022_00501 -18,FeTS2022_01155 -18,FeTS2022_00077 -18,FeTS2022_01578 -18,FeTS2022_01569 -18,FeTS2022_01603 -18,FeTS2022_00538 -18,FeTS2022_00714 -18,FeTS2022_00031 -18,FeTS2022_01627 -18,FeTS2022_01553 -18,FeTS2022_00548 -18,FeTS2022_00739 -18,FeTS2022_00103 -18,FeTS2022_00528 -18,FeTS2022_01608 -18,FeTS2022_00095 -18,FeTS2022_00060 -18,FeTS2022_01554 -18,FeTS2022_00657 -18,FeTS2022_01587 -18,FeTS2022_00605 -18,FeTS2022_00686 -18,FeTS2022_00012 -19,FeTS2022_01166 -19,FeTS2022_01163 -19,FeTS2022_01165 -19,FeTS2022_01164 -20,FeTS2022_00444 -20,FeTS2022_01014 -20,FeTS2022_00442 -20,FeTS2022_01025 -20,FeTS2022_01024 -20,FeTS2022_00101 -20,FeTS2022_00453 -20,FeTS2022_01013 -20,FeTS2022_01011 -20,FeTS2022_00459 -20,FeTS2022_00457 -20,FeTS2022_01016 -20,FeTS2022_00448 -20,FeTS2022_01023 -20,FeTS2022_01017 -20,FeTS2022_00443 -20,FeTS2022_00455 -20,FeTS2022_00127 -20,FeTS2022_01012 -20,FeTS2022_01018 -20,FeTS2022_01022 -20,FeTS2022_00451 -20,FeTS2022_00445 -20,FeTS2022_00452 -20,FeTS2022_00454 -20,FeTS2022_01019 -20,FeTS2022_01021 -20,FeTS2022_01020 -20,FeTS2022_01026 -20,FeTS2022_00456 -20,FeTS2022_00446 -20,FeTS2022_00449 -20,FeTS2022_01015 -21,FeTS2022_00802 -21,FeTS2022_00788 -21,FeTS2022_00795 -21,FeTS2022_00820 -21,FeTS2022_00782 -21,FeTS2022_00800 -21,FeTS2022_00830 -21,FeTS2022_00824 -21,FeTS2022_00805 -21,FeTS2022_00796 -21,FeTS2022_00823 -21,FeTS2022_00828 -21,FeTS2022_00811 -21,FeTS2022_00789 -21,FeTS2022_00801 -21,FeTS2022_00780 -21,FeTS2022_00781 -21,FeTS2022_00814 -21,FeTS2022_00806 -21,FeTS2022_00810 -21,FeTS2022_00807 -21,FeTS2022_00818 -21,FeTS2022_00791 -21,FeTS2022_00787 -21,FeTS2022_00808 -21,FeTS2022_00809 -21,FeTS2022_00803 -21,FeTS2022_00816 -21,FeTS2022_00819 -21,FeTS2022_00793 -21,FeTS2022_00799 -21,FeTS2022_00797 -21,FeTS2022_00784 -21,FeTS2022_00804 -21,FeTS2022_00792 -22,FeTS2022_01031 -22,FeTS2022_01033 -22,FeTS2022_01030 -22,FeTS2022_00118 -22,FeTS2022_01029 -22,FeTS2022_00126 -22,FeTS2022_01032 -23,FeTS2022_01147 -23,FeTS2022_01149 -23,FeTS2022_01150 -23,FeTS2022_01148 -23,FeTS2022_01162 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv deleted file mode 100644 index 798f651..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/partitioning_2.csv +++ /dev/null @@ -1,1252 +0,0 @@ -Partition_ID,Subject_ID -1,FeTS2022_01341 -1,FeTS2022_01333 -1,FeTS2022_01077 -1,FeTS2022_01054 -1,FeTS2022_00285 -1,FeTS2022_01308 -1,FeTS2022_01363 -1,FeTS2022_01091 -1,FeTS2022_01273 -1,FeTS2022_01108 -1,FeTS2022_01255 -1,FeTS2022_01301 -1,FeTS2022_00219 -1,FeTS2022_00380 -1,FeTS2022_01349 -1,FeTS2022_00251 -1,FeTS2022_01276 -1,FeTS2022_01407 -1,FeTS2022_01344 -1,FeTS2022_01405 -1,FeTS2022_00218 -1,FeTS2022_01327 -1,FeTS2022_01252 -1,FeTS2022_01132 -1,FeTS2022_01036 -1,FeTS2022_01039 -1,FeTS2022_01366 -1,FeTS2022_00262 -1,FeTS2022_01279 -1,FeTS2022_00839 -1,FeTS2022_01322 -1,FeTS2022_00389 -1,FeTS2022_00390 -1,FeTS2022_00431 -1,FeTS2022_00222 -1,FeTS2022_00373 -1,FeTS2022_00288 -1,FeTS2022_00284 -1,FeTS2022_01088 -1,FeTS2022_00311 -1,FeTS2022_00387 -1,FeTS2022_00258 -1,FeTS2022_01389 -1,FeTS2022_00321 -1,FeTS2022_01249 -1,FeTS2022_01230 -1,FeTS2022_00836 -1,FeTS2022_00348 -1,FeTS2022_01205 -1,FeTS2022_00246 -1,FeTS2022_00314 -1,FeTS2022_01404 -1,FeTS2022_01102 -1,FeTS2022_00379 -1,FeTS2022_01395 -1,FeTS2022_00155 -1,FeTS2022_00170 -1,FeTS2022_01264 -1,FeTS2022_00837 -1,FeTS2022_01372 -1,FeTS2022_00341 -1,FeTS2022_01257 -1,FeTS2022_00329 -1,FeTS2022_00425 -1,FeTS2022_01350 -1,FeTS2022_01247 -1,FeTS2022_01234 -1,FeTS2022_00331 -1,FeTS2022_01128 -1,FeTS2022_01365 -1,FeTS2022_00221 -1,FeTS2022_00298 -1,FeTS2022_00227 -1,FeTS2022_01204 -1,FeTS2022_00204 -1,FeTS2022_01399 -1,FeTS2022_00377 -1,FeTS2022_00343 -1,FeTS2022_00280 -1,FeTS2022_01347 -1,FeTS2022_00210 -1,FeTS2022_01117 -1,FeTS2022_01275 -1,FeTS2022_01034 -1,FeTS2022_00162 -1,FeTS2022_01340 -1,FeTS2022_01212 -1,FeTS2022_01220 -1,FeTS2022_00419 -1,FeTS2022_00340 -1,FeTS2022_00296 -1,FeTS2022_01208 -1,FeTS2022_01064 -1,FeTS2022_00433 -1,FeTS2022_01050 -1,FeTS2022_01278 -1,FeTS2022_00293 -1,FeTS2022_00206 -1,FeTS2022_00356 -1,FeTS2022_00376 -1,FeTS2022_00316 -1,FeTS2022_00403 -1,FeTS2022_01348 -1,FeTS2022_00192 -1,FeTS2022_00313 -1,FeTS2022_01240 -1,FeTS2022_01222 -1,FeTS2022_00344 -1,FeTS2022_00332 -1,FeTS2022_00292 -1,FeTS2022_01392 -1,FeTS2022_00220 -1,FeTS2022_00378 -1,FeTS2022_01130 -1,FeTS2022_01106 -1,FeTS2022_01295 -1,FeTS2022_01409 -1,FeTS2022_01057 -1,FeTS2022_01068 -1,FeTS2022_00320 -1,FeTS2022_00346 -1,FeTS2022_01001 -1,FeTS2022_01207 -1,FeTS2022_01137 -1,FeTS2022_01318 -1,FeTS2022_00289 -1,FeTS2022_00157 -1,FeTS2022_01224 -1,FeTS2022_01367 -1,FeTS2022_01382 -1,FeTS2022_00309 -1,FeTS2022_01008 -1,FeTS2022_01059 -1,FeTS2022_01271 -1,FeTS2022_01110 -1,FeTS2022_01398 -1,FeTS2022_01119 -1,FeTS2022_00209 -1,FeTS2022_01274 -1,FeTS2022_01124 -1,FeTS2022_00241 -1,FeTS2022_00152 -1,FeTS2022_01131 -1,FeTS2022_01353 -1,FeTS2022_00352 -1,FeTS2022_01133 -1,FeTS2022_01084 -1,FeTS2022_00441 -1,FeTS2022_01268 -1,FeTS2022_01210 -1,FeTS2022_01375 -1,FeTS2022_00236 -1,FeTS2022_01218 -1,FeTS2022_01408 -1,FeTS2022_00274 -1,FeTS2022_01118 -1,FeTS2022_01213 -1,FeTS2022_01310 -1,FeTS2022_00194 -1,FeTS2022_00392 -1,FeTS2022_00334 -1,FeTS2022_00270 -1,FeTS2022_01359 -1,FeTS2022_01364 -1,FeTS2022_01336 -1,FeTS2022_01272 -1,FeTS2022_01090 -1,FeTS2022_00412 -1,FeTS2022_00228 -1,FeTS2022_00410 -2,FeTS2022_01239 -2,FeTS2022_01010 -2,FeTS2022_01394 -2,FeTS2022_00282 -2,FeTS2022_00237 -2,FeTS2022_01390 -2,FeTS2022_00382 -2,FeTS2022_00188 -2,FeTS2022_01211 -2,FeTS2022_01376 -2,FeTS2022_01243 -2,FeTS2022_01330 -2,FeTS2022_00253 -2,FeTS2022_01329 -2,FeTS2022_01306 -2,FeTS2022_01081 -2,FeTS2022_01369 -2,FeTS2022_01048 -2,FeTS2022_00328 -2,FeTS2022_00291 -2,FeTS2022_01049 -2,FeTS2022_01263 -2,FeTS2022_00317 -2,FeTS2022_00305 -2,FeTS2022_01265 -2,FeTS2022_00238 -2,FeTS2022_00423 -2,FeTS2022_01127 -2,FeTS2022_01379 -2,FeTS2022_01258 -2,FeTS2022_00299 -2,FeTS2022_01334 -2,FeTS2022_00350 -2,FeTS2022_01109 -2,FeTS2022_01352 -2,FeTS2022_01055 -2,FeTS2022_00167 -2,FeTS2022_01354 -2,FeTS2022_01231 -2,FeTS2022_00185 -2,FeTS2022_00306 -2,FeTS2022_00171 -2,FeTS2022_01261 -2,FeTS2022_01345 -2,FeTS2022_01397 -2,FeTS2022_00399 -2,FeTS2022_01319 -2,FeTS2022_01250 -2,FeTS2022_01097 -2,FeTS2022_01229 -2,FeTS2022_01393 -2,FeTS2022_00430 -2,FeTS2022_01203 -2,FeTS2022_01309 -2,FeTS2022_01342 -2,FeTS2022_01223 -2,FeTS2022_00239 -2,FeTS2022_00275 -2,FeTS2022_00406 -2,FeTS2022_01116 -2,FeTS2022_01380 -2,FeTS2022_00214 -2,FeTS2022_00195 -2,FeTS2022_01314 -2,FeTS2022_01113 -2,FeTS2022_00193 -2,FeTS2022_01259 -2,FeTS2022_00386 -2,FeTS2022_00834 -2,FeTS2022_01227 -2,FeTS2022_01277 -2,FeTS2022_00283 -2,FeTS2022_01099 -2,FeTS2022_00212 -2,FeTS2022_00165 -2,FeTS2022_01332 -2,FeTS2022_00364 -2,FeTS2022_01129 -2,FeTS2022_00301 -2,FeTS2022_01402 -2,FeTS2022_00199 -2,FeTS2022_01066 -2,FeTS2022_01107 -2,FeTS2022_01337 -2,FeTS2022_00230 -2,FeTS2022_01114 -2,FeTS2022_01294 -2,FeTS2022_01370 -2,FeTS2022_01269 -2,FeTS2022_01043 -2,FeTS2022_00359 -2,FeTS2022_01004 -2,FeTS2022_00286 -2,FeTS2022_01038 -2,FeTS2022_00370 -2,FeTS2022_00184 -2,FeTS2022_00360 -2,FeTS2022_01123 -2,FeTS2022_01237 -2,FeTS2022_01086 -2,FeTS2022_00231 -2,FeTS2022_00353 -2,FeTS2022_01254 -2,FeTS2022_01373 -2,FeTS2022_01100 -2,FeTS2022_01214 -2,FeTS2022_01242 -2,FeTS2022_01115 -2,FeTS2022_01331 -2,FeTS2022_00391 -2,FeTS2022_01312 -2,FeTS2022_00324 -2,FeTS2022_01080 -2,FeTS2022_00371 -2,FeTS2022_01396 -2,FeTS2022_00339 -2,FeTS2022_00260 -2,FeTS2022_00243 -2,FeTS2022_00233 -2,FeTS2022_01323 -2,FeTS2022_01248 -2,FeTS2022_00263 -2,FeTS2022_00347 -2,FeTS2022_01233 -2,FeTS2022_00367 -2,FeTS2022_01051 -2,FeTS2022_01126 -2,FeTS2022_01267 -2,FeTS2022_00383 -2,FeTS2022_01357 -2,FeTS2022_00413 -2,FeTS2022_01287 -2,FeTS2022_00349 -2,FeTS2022_01244 -2,FeTS2022_01041 -2,FeTS2022_01236 -2,FeTS2022_01245 -2,FeTS2022_01383 -2,FeTS2022_00196 -2,FeTS2022_01387 -2,FeTS2022_00297 -2,FeTS2022_01103 -2,FeTS2022_01098 -2,FeTS2022_01410 -2,FeTS2022_00440 -2,FeTS2022_01305 -2,FeTS2022_01304 -2,FeTS2022_01074 -2,FeTS2022_01046 -2,FeTS2022_01226 -2,FeTS2022_01253 -2,FeTS2022_01040 -2,FeTS2022_00269 -2,FeTS2022_00310 -2,FeTS2022_01056 -2,FeTS2022_01311 -2,FeTS2022_01338 -2,FeTS2022_00166 -2,FeTS2022_00327 -2,FeTS2022_00254 -2,FeTS2022_01000 -2,FeTS2022_00259 -2,FeTS2022_01134 -2,FeTS2022_01104 -2,FeTS2022_01232 -2,FeTS2022_01286 -2,FeTS2022_01052 -2,FeTS2022_01217 -2,FeTS2022_01238 -2,FeTS2022_00154 -3,FeTS2022_00395 -3,FeTS2022_00267 -3,FeTS2022_00366 -3,FeTS2022_00351 -3,FeTS2022_00159 -3,FeTS2022_00131 -3,FeTS2022_01246 -3,FeTS2022_01060 -3,FeTS2022_01087 -3,FeTS2022_00250 -3,FeTS2022_00234 -3,FeTS2022_01058 -3,FeTS2022_00235 -3,FeTS2022_00203 -3,FeTS2022_00414 -3,FeTS2022_01285 -3,FeTS2022_01071 -3,FeTS2022_01111 -3,FeTS2022_01377 -3,FeTS2022_01355 -3,FeTS2022_01384 -3,FeTS2022_01120 -3,FeTS2022_01082 -3,FeTS2022_01076 -3,FeTS2022_01072 -3,FeTS2022_00303 -3,FeTS2022_00436 -3,FeTS2022_01361 -3,FeTS2022_01073 -3,FeTS2022_00338 -3,FeTS2022_01351 -3,FeTS2022_00273 -3,FeTS2022_00186 -3,FeTS2022_00290 -3,FeTS2022_01381 -3,FeTS2022_01083 -3,FeTS2022_00409 -3,FeTS2022_00281 -3,FeTS2022_00840 -3,FeTS2022_00407 -3,FeTS2022_01094 -3,FeTS2022_01328 -3,FeTS2022_01078 -3,FeTS2022_00312 -3,FeTS2022_01235 -3,FeTS2022_01288 -3,FeTS2022_01391 -3,FeTS2022_01215 -3,FeTS2022_00160 -3,FeTS2022_00421 -3,FeTS2022_01317 -3,FeTS2022_01216 -3,FeTS2022_00178 -3,FeTS2022_00838 -3,FeTS2022_01321 -3,FeTS2022_01037 -3,FeTS2022_00176 -3,FeTS2022_01293 -3,FeTS2022_01219 -3,FeTS2022_01260 -3,FeTS2022_01339 -3,FeTS2022_01325 -3,FeTS2022_00249 -3,FeTS2022_01241 -3,FeTS2022_00211 -3,FeTS2022_01105 -3,FeTS2022_01138 -3,FeTS2022_00261 -3,FeTS2022_01316 -3,FeTS2022_01315 -3,FeTS2022_01256 -3,FeTS2022_00191 -3,FeTS2022_01069 -3,FeTS2022_01062 -3,FeTS2022_01135 -3,FeTS2022_00207 -3,FeTS2022_00401 -3,FeTS2022_00172 -3,FeTS2022_01085 -3,FeTS2022_00247 -3,FeTS2022_01206 -3,FeTS2022_01356 -3,FeTS2022_00325 -3,FeTS2022_00429 -3,FeTS2022_01122 -3,FeTS2022_01374 -3,FeTS2022_00156 -3,FeTS2022_01075 -3,FeTS2022_01362 -3,FeTS2022_01251 -3,FeTS2022_00405 -3,FeTS2022_01047 -3,FeTS2022_00240 -3,FeTS2022_00336 -3,FeTS2022_01092 -3,FeTS2022_01403 -3,FeTS2022_01385 -3,FeTS2022_01096 -3,FeTS2022_00426 -3,FeTS2022_00201 -3,FeTS2022_01335 -3,FeTS2022_00404 -3,FeTS2022_00322 -3,FeTS2022_00294 -3,FeTS2022_01070 -3,FeTS2022_01225 -3,FeTS2022_01067 -3,FeTS2022_00375 -3,FeTS2022_00158 -3,FeTS2022_00177 -3,FeTS2022_00271 -3,FeTS2022_01388 -3,FeTS2022_01053 -3,FeTS2022_01042 -3,FeTS2022_01400 -3,FeTS2022_00183 -3,FeTS2022_01358 -3,FeTS2022_01266 -3,FeTS2022_01360 -3,FeTS2022_00304 -3,FeTS2022_01065 -3,FeTS2022_01093 -3,FeTS2022_00397 -3,FeTS2022_01262 -3,FeTS2022_00217 -3,FeTS2022_01401 -3,FeTS2022_01125 -3,FeTS2022_01406 -3,FeTS2022_01343 -3,FeTS2022_01346 -3,FeTS2022_01089 -3,FeTS2022_00216 -3,FeTS2022_01061 -3,FeTS2022_01299 -3,FeTS2022_00242 -3,FeTS2022_01112 -3,FeTS2022_00300 -3,FeTS2022_01280 -3,FeTS2022_00187 -3,FeTS2022_00318 -3,FeTS2022_01371 -3,FeTS2022_01378 -3,FeTS2022_00418 -3,FeTS2022_01121 -3,FeTS2022_01136 -3,FeTS2022_00266 -3,FeTS2022_01221 -3,FeTS2022_01307 -3,FeTS2022_01386 -3,FeTS2022_00432 -3,FeTS2022_01101 -3,FeTS2022_01228 -3,FeTS2022_01313 -3,FeTS2022_01209 -3,FeTS2022_00388 -3,FeTS2022_01270 -3,FeTS2022_01044 -3,FeTS2022_00417 -3,FeTS2022_01063 -3,FeTS2022_01368 -3,FeTS2022_00369 -3,FeTS2022_01095 -3,FeTS2022_00416 -3,FeTS2022_00400 -3,FeTS2022_01045 -3,FeTS2022_01202 -3,FeTS2022_01326 -3,FeTS2022_01079 -3,FeTS2022_00402 -3,FeTS2022_01320 -3,FeTS2022_01324 -4,FeTS2022_01412 -4,FeTS2022_01415 -4,FeTS2022_01411 -4,FeTS2022_01414 -4,FeTS2022_01413 -4,FeTS2022_01416 -5,FeTS2022_01439 -5,FeTS2022_01435 -5,FeTS2022_01434 -5,FeTS2022_01440 -5,FeTS2022_01431 -5,FeTS2022_01437 -5,FeTS2022_01436 -5,FeTS2022_01433 -5,FeTS2022_01438 -5,FeTS2022_01426 -5,FeTS2022_01427 -5,FeTS2022_01428 -5,FeTS2022_01429 -5,FeTS2022_01432 -5,FeTS2022_01430 -6,FeTS2022_01152 -6,FeTS2022_01178 -6,FeTS2022_01186 -6,FeTS2022_01184 -6,FeTS2022_01181 -6,FeTS2022_01187 -6,FeTS2022_01168 -6,FeTS2022_01196 -6,FeTS2022_01173 -6,FeTS2022_01176 -6,FeTS2022_01200 -6,FeTS2022_00565 -6,FeTS2022_01193 -6,FeTS2022_01174 -6,FeTS2022_01662 -6,FeTS2022_01660 -7,FeTS2022_01201 -7,FeTS2022_01167 -7,FeTS2022_01170 -7,FeTS2022_01179 -7,FeTS2022_01185 -7,FeTS2022_01197 -7,FeTS2022_01172 -7,FeTS2022_01189 -7,FeTS2022_00563 -7,FeTS2022_01180 -7,FeTS2022_01198 -7,FeTS2022_01183 -7,FeTS2022_01151 -7,FeTS2022_01195 -7,FeTS2022_01657 -8,FeTS2022_01194 -8,FeTS2022_01191 -8,FeTS2022_01169 -8,FeTS2022_01171 -8,FeTS2022_00561 -8,FeTS2022_01659 -8,FeTS2022_01661 -8,FeTS2022_01190 -8,FeTS2022_01188 -8,FeTS2022_01199 -8,FeTS2022_01658 -8,FeTS2022_01192 -8,FeTS2022_01175 -8,FeTS2022_01182 -8,FeTS2022_01537 -8,FeTS2022_01177 -9,FeTS2022_00102 -9,FeTS2022_00149 -9,FeTS2022_01290 -9,FeTS2022_00113 -9,FeTS2022_01009 -9,FeTS2022_01007 -9,FeTS2022_01002 -9,FeTS2022_00139 -9,FeTS2022_01292 -9,FeTS2022_00100 -9,FeTS2022_01289 -9,FeTS2022_01291 -9,FeTS2022_01005 -9,FeTS2022_01282 -9,FeTS2022_01003 -9,FeTS2022_00109 -9,FeTS2022_01283 -9,FeTS2022_00999 -9,FeTS2022_01281 -9,FeTS2022_01284 -9,FeTS2022_00151 -9,FeTS2022_00123 -10,FeTS2022_01451 -10,FeTS2022_01453 -10,FeTS2022_01452 -10,FeTS2022_00831 -10,FeTS2022_01448 -10,FeTS2022_01300 -10,FeTS2022_01443 -10,FeTS2022_00136 -10,FeTS2022_01454 -10,FeTS2022_00144 -10,FeTS2022_00121 -10,FeTS2022_01297 -10,FeTS2022_00133 -10,FeTS2022_01447 -10,FeTS2022_00142 -10,FeTS2022_01450 -10,FeTS2022_00120 -10,FeTS2022_01298 -10,FeTS2022_01449 -10,FeTS2022_01442 -10,FeTS2022_01446 -10,FeTS2022_01303 -10,FeTS2022_01296 -10,FeTS2022_00132 -10,FeTS2022_01441 -10,FeTS2022_01445 -10,FeTS2022_01302 -10,FeTS2022_00143 -10,FeTS2022_00105 -10,FeTS2022_01444 -10,FeTS2022_00147 -10,FeTS2022_01455 -10,FeTS2022_00146 -10,FeTS2022_00137 -11,FeTS2022_01459 -11,FeTS2022_01464 -11,FeTS2022_01458 -11,FeTS2022_01457 -11,FeTS2022_01461 -11,FeTS2022_01456 -11,FeTS2022_01460 -11,FeTS2022_01462 -11,FeTS2022_01466 -11,FeTS2022_01465 -11,FeTS2022_01463 -11,FeTS2022_01467 -12,FeTS2022_00140 -12,FeTS2022_01469 -12,FeTS2022_01468 -12,FeTS2022_01470 -12,FeTS2022_00104 -12,FeTS2022_00110 -12,FeTS2022_00112 -12,FeTS2022_00128 -13,FeTS2022_00134 -13,FeTS2022_00150 -13,FeTS2022_00116 -13,FeTS2022_01471 -14,FeTS2022_01472 -14,FeTS2022_00117 -14,FeTS2022_00130 -14,FeTS2022_00138 -14,FeTS2022_01473 -14,FeTS2022_00111 -14,FeTS2022_00124 -14,FeTS2022_00106 -15,FeTS2022_00122 -15,FeTS2022_00148 -15,FeTS2022_01474 -15,FeTS2022_00108 -15,FeTS2022_01144 -15,FeTS2022_00107 -15,FeTS2022_01140 -15,FeTS2022_01146 -15,FeTS2022_01145 -15,FeTS2022_01139 -15,FeTS2022_01141 -15,FeTS2022_01142 -15,FeTS2022_01143 -15,FeTS2022_01475 -16,FeTS2022_01482 -16,FeTS2022_01480 -16,FeTS2022_01485 -16,FeTS2022_01476 -16,FeTS2022_01481 -16,FeTS2022_01483 -16,FeTS2022_01486 -16,FeTS2022_01484 -16,FeTS2022_01479 -16,FeTS2022_01477 -16,FeTS2022_01478 -17,FeTS2022_01491 -17,FeTS2022_01500 -17,FeTS2022_01519 -17,FeTS2022_01516 -17,FeTS2022_01509 -17,FeTS2022_01520 -17,FeTS2022_01508 -17,FeTS2022_01503 -17,FeTS2022_01488 -17,FeTS2022_01492 -17,FeTS2022_01502 -17,FeTS2022_01493 -18,FeTS2022_01497 -18,FeTS2022_01499 -18,FeTS2022_01487 -18,FeTS2022_01505 -18,FeTS2022_01504 -18,FeTS2022_01490 -18,FeTS2022_01507 -18,FeTS2022_01510 -18,FeTS2022_01512 -18,FeTS2022_01514 -18,FeTS2022_01517 -19,FeTS2022_01501 -19,FeTS2022_01518 -19,FeTS2022_01506 -19,FeTS2022_01515 -19,FeTS2022_01511 -19,FeTS2022_01494 -19,FeTS2022_01489 -19,FeTS2022_01513 -19,FeTS2022_01496 -19,FeTS2022_01495 -19,FeTS2022_01521 -19,FeTS2022_01498 -20,FeTS2022_01522 -20,FeTS2022_01525 -20,FeTS2022_01526 -20,FeTS2022_01527 -20,FeTS2022_01524 -20,FeTS2022_01523 -21,FeTS2022_01530 -21,FeTS2022_01536 -21,FeTS2022_01535 -21,FeTS2022_01663 -21,FeTS2022_01534 -21,FeTS2022_01529 -21,FeTS2022_01531 -21,FeTS2022_01666 -21,FeTS2022_01665 -21,FeTS2022_01532 -21,FeTS2022_01664 -21,FeTS2022_01528 -21,FeTS2022_01533 -22,FeTS2022_00584 -22,FeTS2022_00567 -22,FeTS2022_00571 -22,FeTS2022_00582 -22,FeTS2022_00570 -22,FeTS2022_00594 -22,FeTS2022_00597 -22,FeTS2022_00596 -22,FeTS2022_00576 -22,FeTS2022_00572 -22,FeTS2022_00115 -22,FeTS2022_00593 -22,FeTS2022_00588 -22,FeTS2022_00598 -22,FeTS2022_00589 -22,FeTS2022_00574 -22,FeTS2022_00586 -22,FeTS2022_00579 -22,FeTS2022_00590 -22,FeTS2022_00599 -22,FeTS2022_00577 -22,FeTS2022_00575 -22,FeTS2022_00581 -22,FeTS2022_00591 -22,FeTS2022_00569 -22,FeTS2022_00587 -22,FeTS2022_00580 -22,FeTS2022_00583 -22,FeTS2022_00578 -22,FeTS2022_00568 -23,FeTS2022_01423 -23,FeTS2022_01420 -23,FeTS2022_01422 -23,FeTS2022_01417 -23,FeTS2022_01421 -23,FeTS2022_01424 -23,FeTS2022_01418 -23,FeTS2022_01425 -23,FeTS2022_01419 -24,FeTS2022_01628 -24,FeTS2022_01615 -24,FeTS2022_01035 -24,FeTS2022_00732 -24,FeTS2022_00753 -24,FeTS2022_01620 -24,FeTS2022_01637 -24,FeTS2022_01594 -24,FeTS2022_00530 -24,FeTS2022_00772 -24,FeTS2022_01580 -24,FeTS2022_00731 -24,FeTS2022_00540 -24,FeTS2022_00464 -24,FeTS2022_01622 -24,FeTS2022_01154 -24,FeTS2022_01559 -24,FeTS2022_00729 -24,FeTS2022_00708 -24,FeTS2022_00044 -24,FeTS2022_00705 -24,FeTS2022_00645 -24,FeTS2022_01640 -24,FeTS2022_00008 -24,FeTS2022_00746 -24,FeTS2022_01551 -24,FeTS2022_01610 -24,FeTS2022_00061 -24,FeTS2022_00642 -24,FeTS2022_00675 -24,FeTS2022_01651 -24,FeTS2022_00651 -24,FeTS2022_00626 -24,FeTS2022_00028 -24,FeTS2022_01557 -24,FeTS2022_01616 -24,FeTS2022_00684 -24,FeTS2022_01538 -24,FeTS2022_01647 -24,FeTS2022_00688 -24,FeTS2022_00737 -24,FeTS2022_00063 -24,FeTS2022_00758 -24,FeTS2022_01159 -24,FeTS2022_00615 -24,FeTS2022_00621 -24,FeTS2022_01543 -24,FeTS2022_01560 -24,FeTS2022_00058 -24,FeTS2022_00009 -24,FeTS2022_00544 -24,FeTS2022_01611 -24,FeTS2022_00485 -24,FeTS2022_00735 -24,FeTS2022_00659 -24,FeTS2022_00025 -24,FeTS2022_00550 -24,FeTS2022_01599 -24,FeTS2022_00636 -24,FeTS2022_01644 -24,FeTS2022_00716 -24,FeTS2022_00641 -24,FeTS2022_01624 -24,FeTS2022_00547 -24,FeTS2022_00046 -24,FeTS2022_00728 -24,FeTS2022_00045 -24,FeTS2022_00493 -24,FeTS2022_00089 -24,FeTS2022_00622 -24,FeTS2022_01643 -24,FeTS2022_00602 -24,FeTS2022_00035 -24,FeTS2022_01545 -24,FeTS2022_00014 -24,FeTS2022_01566 -24,FeTS2022_00066 -24,FeTS2022_01614 -24,FeTS2022_01591 -24,FeTS2022_00514 -24,FeTS2022_01588 -24,FeTS2022_00520 -24,FeTS2022_01556 -24,FeTS2022_00097 -24,FeTS2022_00555 -24,FeTS2022_00736 -24,FeTS2022_00639 -24,FeTS2022_00479 -24,FeTS2022_01550 -24,FeTS2022_01592 -24,FeTS2022_01626 -24,FeTS2022_00557 -24,FeTS2022_00496 -24,FeTS2022_00778 -24,FeTS2022_01561 -24,FeTS2022_00690 -24,FeTS2022_00750 -24,FeTS2022_01586 -24,FeTS2022_01549 -24,FeTS2022_01555 -24,FeTS2022_01612 -24,FeTS2022_01600 -24,FeTS2022_01629 -24,FeTS2022_01656 -24,FeTS2022_00500 -24,FeTS2022_00529 -24,FeTS2022_00628 -24,FeTS2022_00775 -24,FeTS2022_00523 -24,FeTS2022_00488 -24,FeTS2022_00518 -24,FeTS2022_00000 -24,FeTS2022_00020 -24,FeTS2022_01646 -24,FeTS2022_01638 -24,FeTS2022_00630 -24,FeTS2022_01590 -24,FeTS2022_01613 -24,FeTS2022_01571 -24,FeTS2022_00519 -24,FeTS2022_01617 -24,FeTS2022_01623 -24,FeTS2022_00691 -24,FeTS2022_01027 -24,FeTS2022_00704 -24,FeTS2022_00098 -24,FeTS2022_01558 -25,FeTS2022_00715 -25,FeTS2022_00757 -25,FeTS2022_00084 -25,FeTS2022_00692 -25,FeTS2022_00078 -25,FeTS2022_00747 -25,FeTS2022_01607 -25,FeTS2022_00751 -25,FeTS2022_00011 -25,FeTS2022_00610 -25,FeTS2022_00694 -25,FeTS2022_00026 -25,FeTS2022_00658 -25,FeTS2022_01544 -25,FeTS2022_01583 -25,FeTS2022_00680 -25,FeTS2022_01028 -25,FeTS2022_01636 -25,FeTS2022_00545 -25,FeTS2022_00072 -25,FeTS2022_00016 -25,FeTS2022_01548 -25,FeTS2022_00624 -25,FeTS2022_00676 -25,FeTS2022_00533 -25,FeTS2022_01574 -25,FeTS2022_01582 -25,FeTS2022_00085 -25,FeTS2022_00613 -25,FeTS2022_01593 -25,FeTS2022_00730 -25,FeTS2022_01585 -25,FeTS2022_00524 -25,FeTS2022_00081 -25,FeTS2022_00472 -25,FeTS2022_00478 -25,FeTS2022_00469 -25,FeTS2022_00682 -25,FeTS2022_00733 -25,FeTS2022_00723 -25,FeTS2022_00099 -25,FeTS2022_00744 -25,FeTS2022_00048 -25,FeTS2022_00480 -25,FeTS2022_00650 -25,FeTS2022_00601 -25,FeTS2022_00542 -25,FeTS2022_00667 -25,FeTS2022_00505 -25,FeTS2022_01539 -25,FeTS2022_00764 -25,FeTS2022_00506 -25,FeTS2022_01649 -25,FeTS2022_00032 -25,FeTS2022_00021 -25,FeTS2022_00685 -25,FeTS2022_00611 -25,FeTS2022_00511 -25,FeTS2022_01584 -25,FeTS2022_01635 -25,FeTS2022_00607 -25,FeTS2022_00071 -25,FeTS2022_00687 -25,FeTS2022_00767 -25,FeTS2022_00537 -25,FeTS2022_01630 -25,FeTS2022_00740 -25,FeTS2022_00525 -25,FeTS2022_00725 -25,FeTS2022_00502 -25,FeTS2022_01562 -25,FeTS2022_01577 -25,FeTS2022_01576 -25,FeTS2022_01595 -25,FeTS2022_00654 -25,FeTS2022_00090 -25,FeTS2022_01645 -25,FeTS2022_01564 -25,FeTS2022_01567 -25,FeTS2022_00703 -25,FeTS2022_00043 -25,FeTS2022_00003 -25,FeTS2022_00495 -25,FeTS2022_00017 -25,FeTS2022_00491 -25,FeTS2022_00054 -25,FeTS2022_00510 -25,FeTS2022_00618 -25,FeTS2022_00064 -25,FeTS2022_00024 -25,FeTS2022_00709 -25,FeTS2022_01653 -25,FeTS2022_01579 -25,FeTS2022_01572 -25,FeTS2022_01156 -25,FeTS2022_00707 -25,FeTS2022_01540 -25,FeTS2022_00056 -25,FeTS2022_00620 -25,FeTS2022_00470 -25,FeTS2022_00499 -25,FeTS2022_00640 -25,FeTS2022_00549 -25,FeTS2022_01601 -25,FeTS2022_00608 -25,FeTS2022_00727 -25,FeTS2022_00773 -25,FeTS2022_00504 -25,FeTS2022_01604 -25,FeTS2022_01158 -25,FeTS2022_00051 -25,FeTS2022_00768 -25,FeTS2022_01161 -25,FeTS2022_00765 -25,FeTS2022_00068 -25,FeTS2022_00551 -25,FeTS2022_01605 -25,FeTS2022_00674 -25,FeTS2022_01157 -25,FeTS2022_01631 -25,FeTS2022_00022 -25,FeTS2022_00777 -25,FeTS2022_01609 -25,FeTS2022_01633 -25,FeTS2022_01652 -25,FeTS2022_00759 -25,FeTS2022_01655 -26,FeTS2022_01639 -26,FeTS2022_01563 -26,FeTS2022_00661 -26,FeTS2022_00087 -26,FeTS2022_00030 -26,FeTS2022_00556 -26,FeTS2022_01597 -26,FeTS2022_00724 -26,FeTS2022_00096 -26,FeTS2022_00049 -26,FeTS2022_00683 -26,FeTS2022_00059 -26,FeTS2022_01596 -26,FeTS2022_00498 -26,FeTS2022_00543 -26,FeTS2022_01641 -26,FeTS2022_01542 -26,FeTS2022_00062 -26,FeTS2022_00005 -26,FeTS2022_00646 -26,FeTS2022_00088 -26,FeTS2022_00656 -26,FeTS2022_01589 -26,FeTS2022_01160 -26,FeTS2022_01547 -26,FeTS2022_01606 -26,FeTS2022_00631 -26,FeTS2022_00756 -26,FeTS2022_00619 -26,FeTS2022_00698 -26,FeTS2022_01541 -26,FeTS2022_00539 -26,FeTS2022_00053 -26,FeTS2022_01618 -26,FeTS2022_00693 -26,FeTS2022_00616 -26,FeTS2022_01642 -26,FeTS2022_01632 -26,FeTS2022_00718 -26,FeTS2022_00006 -26,FeTS2022_00466 -26,FeTS2022_01565 -26,FeTS2022_01621 -26,FeTS2022_00697 -26,FeTS2022_00689 -26,FeTS2022_00554 -26,FeTS2022_00638 -26,FeTS2022_00517 -26,FeTS2022_00019 -26,FeTS2022_01650 -26,FeTS2022_01602 -26,FeTS2022_01570 -26,FeTS2022_00655 -26,FeTS2022_00552 -26,FeTS2022_00706 -26,FeTS2022_01654 -26,FeTS2022_00481 -26,FeTS2022_00604 -26,FeTS2022_00612 -26,FeTS2022_00774 -26,FeTS2022_00625 -26,FeTS2022_00070 -26,FeTS2022_00649 -26,FeTS2022_00036 -26,FeTS2022_01546 -26,FeTS2022_00559 -26,FeTS2022_00018 -26,FeTS2022_00507 -26,FeTS2022_00760 -26,FeTS2022_01568 -26,FeTS2022_00094 -26,FeTS2022_00526 -26,FeTS2022_01575 -26,FeTS2022_00512 -26,FeTS2022_00033 -26,FeTS2022_01648 -26,FeTS2022_00052 -26,FeTS2022_01625 -26,FeTS2022_01573 -26,FeTS2022_00623 -26,FeTS2022_01153 -26,FeTS2022_00532 -26,FeTS2022_00516 -26,FeTS2022_00679 -26,FeTS2022_00468 -26,FeTS2022_00494 -26,FeTS2022_00483 -26,FeTS2022_01552 -26,FeTS2022_00606 -26,FeTS2022_00742 -26,FeTS2022_00677 -26,FeTS2022_00652 -26,FeTS2022_00074 -26,FeTS2022_00513 -26,FeTS2022_01581 -26,FeTS2022_00663 -26,FeTS2022_00734 -26,FeTS2022_01619 -26,FeTS2022_00668 -26,FeTS2022_00558 -26,FeTS2022_00002 -26,FeTS2022_01598 -26,FeTS2022_00477 -26,FeTS2022_01634 -26,FeTS2022_00501 -26,FeTS2022_01155 -26,FeTS2022_00077 -26,FeTS2022_01578 -26,FeTS2022_01569 -26,FeTS2022_01603 -26,FeTS2022_00538 -26,FeTS2022_00714 -26,FeTS2022_00031 -26,FeTS2022_01627 -26,FeTS2022_01553 -26,FeTS2022_00548 -26,FeTS2022_00739 -26,FeTS2022_00103 -26,FeTS2022_00528 -26,FeTS2022_01608 -26,FeTS2022_00095 -26,FeTS2022_00060 -26,FeTS2022_01554 -26,FeTS2022_00657 -26,FeTS2022_01587 -26,FeTS2022_00605 -26,FeTS2022_00686 -26,FeTS2022_00012 -27,FeTS2022_01166 -27,FeTS2022_01163 -27,FeTS2022_01165 -27,FeTS2022_01164 -28,FeTS2022_00444 -28,FeTS2022_01014 -28,FeTS2022_00442 -28,FeTS2022_01025 -28,FeTS2022_01024 -28,FeTS2022_00101 -28,FeTS2022_00453 -28,FeTS2022_01013 -28,FeTS2022_01011 -28,FeTS2022_00459 -28,FeTS2022_00457 -28,FeTS2022_01016 -28,FeTS2022_00448 -28,FeTS2022_01023 -28,FeTS2022_01017 -28,FeTS2022_00443 -28,FeTS2022_00455 -28,FeTS2022_00127 -28,FeTS2022_01012 -28,FeTS2022_01018 -28,FeTS2022_01022 -28,FeTS2022_00451 -28,FeTS2022_00445 -28,FeTS2022_00452 -28,FeTS2022_00454 -28,FeTS2022_01019 -28,FeTS2022_01021 -28,FeTS2022_01020 -28,FeTS2022_01026 -28,FeTS2022_00456 -28,FeTS2022_00446 -28,FeTS2022_00449 -28,FeTS2022_01015 -29,FeTS2022_00802 -29,FeTS2022_00788 -29,FeTS2022_00795 -29,FeTS2022_00820 -29,FeTS2022_00782 -29,FeTS2022_00800 -29,FeTS2022_00830 -29,FeTS2022_00824 -29,FeTS2022_00805 -29,FeTS2022_00796 -29,FeTS2022_00823 -29,FeTS2022_00828 -30,FeTS2022_00811 -30,FeTS2022_00789 -30,FeTS2022_00801 -30,FeTS2022_00780 -30,FeTS2022_00781 -30,FeTS2022_00814 -30,FeTS2022_00806 -30,FeTS2022_00810 -30,FeTS2022_00807 -30,FeTS2022_00818 -30,FeTS2022_00791 -31,FeTS2022_00787 -31,FeTS2022_00808 -31,FeTS2022_00809 -31,FeTS2022_00803 -31,FeTS2022_00816 -31,FeTS2022_00819 -31,FeTS2022_00793 -31,FeTS2022_00799 -31,FeTS2022_00797 -31,FeTS2022_00784 -31,FeTS2022_00804 -31,FeTS2022_00792 -32,FeTS2022_01031 -32,FeTS2022_01033 -32,FeTS2022_01030 -32,FeTS2022_00118 -32,FeTS2022_01029 -32,FeTS2022_00126 -32,FeTS2022_01032 -33,FeTS2022_01147 -33,FeTS2022_01149 -33,FeTS2022_01150 -33,FeTS2022_01148 -33,FeTS2022_01162 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml deleted file mode 100644 index ebd5bec..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/cols.yaml +++ /dev/null @@ -1,3 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2021 - -collaborators: \ No newline at end of file diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml deleted file mode 100644 index 93c8816..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/data.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2021 - -one,1 -two,2 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults deleted file mode 100644 index fb82f9c..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/defaults +++ /dev/null @@ -1,2 +0,0 @@ -../../workspace/plan/defaults - diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml deleted file mode 100644 index 912c614..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ /dev/null @@ -1,141 +0,0 @@ -# Copyright (C) 2022 Intel Corporation -# Licensed subject to the terms of the separately executed evaluation license agreement between Intel Corporation and you. - -aggregator : - defaults : plan/defaults/aggregator.yaml - template : openfl.component.Aggregator - settings : - init_state_path : save/fets_seg_test_init.pbuf - best_state_path : save/fets_seg_test_best.pbuf - last_state_path : save/fets_seg_test_last.pbuf - rounds_to_train : 3 - write_logs : true - - -collaborator : - defaults : plan/defaults/collaborator.yaml - template : openfl.component.Collaborator - settings : - delta_updates : false - opt_treatment : RESET - -data_loader : - defaults : plan/defaults/data_loader.yaml - template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper - settings : - feature_shape : [32, 32, 32] - -task_runner : - template : src.fets_challenge_model.FeTSChallengeModel - settings : - train_csv : seg_test_train.csv - val_csv : seg_test_val.csv - device : cpu - gandlf_config : - batch_size: 1 - clip_mode: norm - clip_grad: 0.1 - data_augmentation: {} - data_postprocessing: {} - data_preprocessing: - normalize: None - enable_padding: false - in_memory: false - inference_mechanism : - grid_aggregator_overlap: crop - patch_overlap: 0 - learning_rate: 0.001 - loss_function: dc - medcam_enabled: false - output_dir: '.' - metrics: - - dice - # - dice_per_label - # - hd95_per_label - model: - amp: true - architecture: resunet - base_filters: 32 - class_list: - - 0 - - 1 - - 2 - - 4 - dimension: 3 - final_layer: softmax - ignore_label_validation: None - norm_type: instance - nested_training: - testing: 1 - validation: -5 - num_epochs: 1 - optimizer: - type: sgd - parallel_compute_command: '' - patch_sampler: label - patch_size: - - 64 - - 64 - - 64 - patience: 100 - pin_memory_dataloader: false - print_rgb_label_warning: true - q_max_length: 100 - q_num_workers: 0 - q_samples_per_volume: 40 - q_verbose: false - save_output: false - save_training: false - scaling_factor: 1 - scheduler: - type: triangle_modified - track_memory_usage: false - verbose: false - version: - maximum: 0.1.0 - minimum: 0.0.14 - weighted_loss: true - modality: rad - - -network : - defaults : plan/defaults/network.yaml - -assigner: - template : src.challenge_assigner.FeTSChallengeAssigner - settings : - training_tasks : - - aggregated_model_validation - - train - - locally_tuned_model_validation - validation_tasks : - - aggregated_model_validation - -tasks : - aggregated_model_validation: - function : validate - kwargs : - apply : global - metrics : - - valid_loss - - valid_dice - - locally_tuned_model_validation: - function : validate - kwargs : - apply: local - metrics : - - valid_loss - - valid_dice - - train: - function : train - kwargs : - metrics : - - loss - - train_dice - epochs : 1 - - -compression_pipeline : - defaults : plan/defaults/compression_pipeline.yaml diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt deleted file mode 100644 index 9a7d57c..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -torchvision -torch diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv deleted file mode 100644 index 50baaca..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/small_split.csv +++ /dev/null @@ -1,11 +0,0 @@ -Partition_ID,Subject_ID -1,FeTS2022_01341 -1,FeTS2022_01333 -1,FeTS2022_01077 -1,FeTS2022_01324 -2,FeTS2022_01412 -2,FeTS2022_01415 -2,FeTS2022_01411 -3,FeTS2022_01439 -3,FeTS2022_01435 -3,FeTS2022_01434 diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py deleted file mode 100644 index 1c5a549..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/__init__.py +++ /dev/null @@ -1,10 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2021 - -# Contributing Authors (alphabetical): -# Patrick Foley (Intel) -# Micah Sheller (Intel) - -TRAINING_HPARAMS = [ - 'epochs_per_round', - 'learning_rate', -] diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py deleted file mode 100644 index 46e847f..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py +++ /dev/null @@ -1,40 +0,0 @@ -# Provided by the FeTS Initiative (www.fets.ai) as part of the FeTS Challenge 2022 - -# Contributing Authors (alphabetical): -# Micah Sheller (Intel) - -class FeTSChallengeAssigner: - def __init__(self, tasks, authorized_cols, training_tasks, validation_tasks, **kwargs): - """Initialize.""" - self.training_collaborators = [] - self.tasks = tasks - self.training_tasks = training_tasks - self.validation_tasks = validation_tasks - self.collaborators = authorized_cols - - def set_training_collaborators(self, training_collaborators): - self.training_collaborators = training_collaborators - - - def get_tasks_for_collaborator(self, collaborator_name, round_number): - """Get tasks for the collaborator specified.""" - if collaborator_name in self.training_collaborators: - return self.training_tasks - else: - return self.validation_tasks - - def get_collaborators_for_task(self, task_name, round_number): - """Get collaborators for the task specified.""" - if task_name in self.validation_tasks: - return self.collaborators - else: - return self.training_collaborators - - def get_all_tasks_for_round(self, round_number): - return self.training_tasks - - def get_aggregation_type_for_task(self, task_name): - """Extract aggregation type from self.tasks.""" - if 'aggregation_type' not in self.tasks[task_name]: - return None - return self.tasks[task_name]['aggregation_type'] diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py deleted file mode 100644 index 66a0c82..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py +++ /dev/null @@ -1,208 +0,0 @@ -# Copyright (C) 2020-2021 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -"""GaNDLFTaskRunner module.""" - -from copy import deepcopy - -import numpy as np -import torch as pt - -from openfl.utilities.split import split_tensor_dict_for_holdouts -from openfl.utilities import TensorKey - -from openfl.federated.task.runner_gandlf import * - -from GANDLF.compute.generic import create_pytorch_objects -from GANDLF.compute.training_loop import train_network -from GANDLF.compute.forward_pass import validate_network - -from . import TRAINING_HPARAMS - -class FeTSChallengeModel(GaNDLFTaskRunner): - """FeTSChallenge Model class for Federated Learning.""" - - def validate(self, col_name, round_num, input_tensor_dict, - use_tqdm=False, **kwargs): - """Validate. - Run validation of the model on the local data. - Args: - col_name: Name of the collaborator - round_num: What round is it - input_tensor_dict: Required input tensors (for model) - use_tqdm (bool): Use tqdm to print a progress bar (Default=True) - kwargs: Key word arguments passed to GaNDLF main_run - Returns: - global_output_dict: Tensors to send back to the aggregator - local_output_dict: Tensors to maintain in the local TensorDB - """ - self.rebuild_model(round_num, input_tensor_dict, validation=True) - self.model.eval() - # self.model.to(self.device) - - epoch_valid_loss, epoch_valid_metric = validate_network(self.model, - self.data_loader.val_dataloader, - self.scheduler, - self.params, - round_num, - mode="validation") - - self.logger.info(epoch_valid_loss) - self.logger.info(epoch_valid_metric) - - origin = col_name - suffix = 'validate' - if kwargs['apply'] == 'local': - suffix += '_local' - else: - suffix += '_agg' - tags = ('metric', suffix) - - output_tensor_dict = {} - output_tensor_dict[TensorKey('valid_loss', origin, round_num, True, tags)] = np.array(epoch_valid_loss) - for k, v in epoch_valid_metric.items(): - if np.array(v).size == 1: - output_tensor_dict[TensorKey(f'valid_{k}', origin, round_num, True, tags)] = np.array(v) - else: - for idx,label in enumerate([0,1,2,4]): - output_tensor_dict[TensorKey(f'valid_{k}_{label}', origin, round_num, True, tags)] = np.array(v[idx]) - - return output_tensor_dict, {} - - def inference(self, col_name, round_num, input_tensor_dict, - use_tqdm=False, **kwargs): - """Inference. - Run inference of the model on the local data (used for final validation) - Args: - col_name: Name of the collaborator - round_num: What round is it - input_tensor_dict: Required input tensors (for model) - use_tqdm (bool): Use tqdm to print a progress bar (Default=True) - kwargs: Key word arguments passed to GaNDLF main_run - Returns: - global_output_dict: Tensors to send back to the aggregator - local_output_dict: Tensors to maintain in the local TensorDB - """ - self.rebuild_model(round_num, input_tensor_dict, validation=True) - self.model.eval() - # self.model.to(self.device) - - epoch_valid_loss, epoch_valid_metric = validate_network(self.model, - self.data_loader.val_dataloader, - self.scheduler, - self.params, - round_num, - mode="inference") - - origin = col_name - suffix = 'validate' - if kwargs['apply'] == 'local': - suffix += '_local' - else: - suffix += '_agg' - tags = ('metric', suffix) - - output_tensor_dict = {} - output_tensor_dict[TensorKey('valid_loss', origin, round_num, True, tags)] = np.array(epoch_valid_loss) - for k, v in epoch_valid_metric.items(): - if np.array(v).size == 1: - output_tensor_dict[TensorKey(f'valid_{k}', origin, round_num, True, tags)] = np.array(v) - else: - for idx,label in enumerate([0,1,2,4]): - output_tensor_dict[TensorKey(f'valid_{k}_{label}', origin, round_num, True, tags)] = np.array(v[idx]) - - return output_tensor_dict, {} - - - def train(self, col_name, round_num, input_tensor_dict, use_tqdm=False, epochs=1, **kwargs): - """Train batches. - Train the model on the requested number of batches. - Args: - col_name : Name of the collaborator - round_num : What round is it - input_tensor_dict : Required input tensors (for model) - use_tqdm (bool) : Use tqdm to print a progress bar (Default=True) - epochs : The number of epochs to train - crossfold_test : Whether or not to use cross fold trainval/test - to evaluate the quality of the model under fine tuning - (this uses a separate prameter to pass in the data and - config used) - crossfold_test_data_csv : Data csv used to define data used in crossfold test. - This csv does not itself define the folds, just - defines the total data to be used. - crossfold_val_n : number of folds to use for the train,val level of the nested crossfold. - corssfold_test_n : number of folds to use for the trainval,test level of the nested crossfold. - kwargs : Key word arguments passed to GaNDLF main_run - Returns: - global_output_dict : Tensors to send back to the aggregator - local_output_dict : Tensors to maintain in the local TensorDB - """ - - # handle the hparams - epochs_per_round = int(input_tensor_dict.pop('epochs_per_round')) - learning_rate = float(input_tensor_dict.pop('learning_rate')) - - self.rebuild_model(round_num, input_tensor_dict) - # set to "training" mode - self.model.train() - - # Set the learning rate - for group in self.optimizer.param_groups: - group['lr'] = learning_rate - - for epoch in range(epochs_per_round): - self.logger.info(f'Run {epoch} epoch of {round_num} round') - # FIXME: do we want to capture these in an array rather than simply taking the last value? - epoch_train_loss, epoch_train_metric = train_network(self.model, - self.data_loader.train_dataloader, - self.optimizer, - self.params) - - # output model tensors (Doesn't include TensorKey) - tensor_dict = self.get_tensor_dict(with_opt_vars=True) - - metric_dict = {'loss': epoch_train_loss} - for k, v in epoch_train_metric.items(): - if np.array(v).size == 1: - metric_dict[f'train_{k}'] = np.array(v) - else: - for idx,label in enumerate([0,1,2,4]): - metric_dict[f'train_{k}_{label}'] = np.array(v[idx]) - - - # Return global_tensor_dict, local_tensor_dict - # is this even pt-specific really? - global_tensor_dict, local_tensor_dict = create_tensorkey_dicts(tensor_dict, - metric_dict, - col_name, - round_num, - self.logger, - self.tensor_dict_split_fn_kwargs) - - # Update the required tensors if they need to be pulled from the - # aggregator - # TODO this logic can break if different collaborators have different - # roles between rounds. - # For example, if a collaborator only performs validation in the first - # round but training in the second, it has no way of knowing the - # optimizer state tensor names to request from the aggregator because - # these are only created after training occurs. A work around could - # involve doing a single epoch of training on random data to get the - # optimizer names, and then throwing away the model. - if self.opt_treatment == 'CONTINUE_GLOBAL': - self.initialize_tensorkeys_for_functions(with_opt_vars=True) - - # This will signal that the optimizer values are now present, - # and can be loaded when the model is rebuilt - self.train_round_completed = True - - # Return global_tensor_dict, local_tensor_dict - return global_tensor_dict, local_tensor_dict - - def get_required_tensorkeys_for_function(self, func_name, **kwargs): - required = super().get_required_tensorkeys_for_function(func_name, **kwargs) - if func_name == 'train': - round_number = required[0].round_number - for hparam in TRAINING_HPARAMS: - required.append(TensorKey(tensor_name=hparam, origin='GLOBAL', round_number=round_number, report=False, tags=('hparam', 'model'))) - return required diff --git a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv b/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv deleted file mode 100644 index d0d78f1..0000000 --- a/Task_1/build/lib/openfl-workspace/fets_challenge_workspace/validation.csv +++ /dev/null @@ -1,220 +0,0 @@ -Partition_ID,Subject_ID --1,FeTS2022_01718 --1,FeTS2022_01719 --1,FeTS2022_00573 --1,FeTS2022_00592 --1,FeTS2022_00585 --1,FeTS2022_00595 --1,FeTS2022_01678 --1,FeTS2022_01679 --1,FeTS2022_01680 --1,FeTS2022_01681 --1,FeTS2022_01682 --1,FeTS2022_01683 --1,FeTS2022_01684 --1,FeTS2022_01685 --1,FeTS2022_01686 --1,FeTS2022_00833 --1,FeTS2022_01687 --1,FeTS2022_00384 --1,FeTS2022_01688 --1,FeTS2022_01689 --1,FeTS2022_01690 --1,FeTS2022_01691 --1,FeTS2022_00434 --1,FeTS2022_00333 --1,FeTS2022_00337 --1,FeTS2022_01692 --1,FeTS2022_00229 --1,FeTS2022_01667 --1,FeTS2022_01668 --1,FeTS2022_01669 --1,FeTS2022_01670 --1,FeTS2022_01671 --1,FeTS2022_01672 --1,FeTS2022_01673 --1,FeTS2022_01674 --1,FeTS2022_01675 --1,FeTS2022_01676 --1,FeTS2022_01677 --1,FeTS2022_01720 --1,FeTS2022_01724 --1,FeTS2022_00145 --1,FeTS2022_01693 --1,FeTS2022_01006 --1,FeTS2022_01727 --1,FeTS2022_01694 --1,FeTS2022_01729 --1,FeTS2022_01695 --1,FeTS2022_00997 --1,FeTS2022_01696 --1,FeTS2022_01732 --1,FeTS2022_01697 --1,FeTS2022_01698 --1,FeTS2022_01699 --1,FeTS2022_01700 --1,FeTS2022_01701 --1,FeTS2022_01702 --1,FeTS2022_01703 --1,FeTS2022_00135 --1,FeTS2022_01704 --1,FeTS2022_01705 --1,FeTS2022_01706 --1,FeTS2022_01707 --1,FeTS2022_01708 --1,FeTS2022_01709 --1,FeTS2022_01710 --1,FeTS2022_01711 --1,FeTS2022_01712 --1,FeTS2022_01713 --1,FeTS2022_00129 --1,FeTS2022_00125 --1,FeTS2022_01714 --1,FeTS2022_00119 --1,FeTS2022_01736 --1,FeTS2022_00114 --1,FeTS2022_01738 --1,FeTS2022_00141 --1,FeTS2022_01715 --1,FeTS2022_01716 --1,FeTS2022_01717 --1,FeTS2022_01721 --1,FeTS2022_01756 --1,FeTS2022_01757 --1,FeTS2022_01758 --1,FeTS2022_01759 --1,FeTS2022_01760 --1,FeTS2022_01761 --1,FeTS2022_01762 --1,FeTS2022_01763 --1,FeTS2022_01764 --1,FeTS2022_01765 --1,FeTS2022_01766 --1,FeTS2022_01767 --1,FeTS2022_01768 --1,FeTS2022_01770 --1,FeTS2022_01769 --1,FeTS2022_01772 --1,FeTS2022_01771 --1,FeTS2022_00001 --1,FeTS2022_00013 --1,FeTS2022_00015 --1,FeTS2022_00027 --1,FeTS2022_00037 --1,FeTS2022_00047 --1,FeTS2022_00079 --1,FeTS2022_00080 --1,FeTS2022_00082 --1,FeTS2022_00091 --1,FeTS2022_01722 --1,FeTS2022_01723 --1,FeTS2022_01741 --1,FeTS2022_01725 --1,FeTS2022_01726 --1,FeTS2022_01728 --1,FeTS2022_01742 --1,FeTS2022_01743 --1,FeTS2022_01730 --1,FeTS2022_01744 --1,FeTS2022_01731 --1,FeTS2022_01733 --1,FeTS2022_01734 --1,FeTS2022_01735 --1,FeTS2022_01747 --1,FeTS2022_01737 --1,FeTS2022_01739 --1,FeTS2022_01740 --1,FeTS2022_01745 --1,FeTS2022_01746 --1,FeTS2022_01748 --1,FeTS2022_00153 --1,FeTS2022_01749 --1,FeTS2022_01750 --1,FeTS2022_01751 --1,FeTS2022_01752 --1,FeTS2022_01753 --1,FeTS2022_01754 --1,FeTS2022_01755 --1,FeTS2022_01773 --1,FeTS2022_01774 --1,FeTS2022_01775 --1,FeTS2022_01776 --1,FeTS2022_00161 --1,FeTS2022_00163 --1,FeTS2022_00174 --1,FeTS2022_00181 --1,FeTS2022_00182 --1,FeTS2022_00190 --1,FeTS2022_00200 --1,FeTS2022_00208 --1,FeTS2022_00213 --1,FeTS2022_00252 --1,FeTS2022_00256 --1,FeTS2022_00264 --1,FeTS2022_00287 --1,FeTS2022_00307 --1,FeTS2022_00323 --1,FeTS2022_00335 --1,FeTS2022_00355 --1,FeTS2022_00372 --1,FeTS2022_00381 --1,FeTS2022_00422 --1,FeTS2022_00428 --1,FeTS2022_00438 --1,FeTS2022_00447 --1,FeTS2022_00450 --1,FeTS2022_00458 --1,FeTS2022_00460 --1,FeTS2022_00462 --1,FeTS2022_00463 --1,FeTS2022_00467 --1,FeTS2022_00474 --1,FeTS2022_00489 --1,FeTS2022_00492 --1,FeTS2022_00503 --1,FeTS2022_00521 --1,FeTS2022_00535 --1,FeTS2022_00553 --1,FeTS2022_00560 --1,FeTS2022_00603 --1,FeTS2022_01777 --1,FeTS2022_01778 --1,FeTS2022_01779 --1,FeTS2022_01780 --1,FeTS2022_01781 --1,FeTS2022_01782 --1,FeTS2022_01783 --1,FeTS2022_01784 --1,FeTS2022_01785 --1,FeTS2022_01786 --1,FeTS2022_01787 --1,FeTS2022_01788 --1,FeTS2022_01789 --1,FeTS2022_01790 --1,FeTS2022_00644 --1,FeTS2022_00647 --1,FeTS2022_00662 --1,FeTS2022_00671 --1,FeTS2022_00681 --1,FeTS2022_00699 --1,FeTS2022_00702 --1,FeTS2022_00712 --1,FeTS2022_00719 --1,FeTS2022_00721 --1,FeTS2022_00749 --1,FeTS2022_00762 --1,FeTS2022_00769 --1,FeTS2022_00779 --1,FeTS2022_00821 --1,FeTS2022_00822 --1,FeTS2022_00825 --1,FeTS2022_00826 --1,FeTS2022_00829 --1,FeTS2022_01791 --1,FeTS2022_01792 --1,FeTS2022_01793 --1,FeTS2022_01794 --1,FeTS2022_01795 --1,FeTS2022_01796 --1,FeTS2022_01797 --1,FeTS2022_01798 diff --git a/Task_1/cert/ca/root-ca.crt b/Task_1/cert/ca/root-ca.crt deleted file mode 100644 index e9db85e..0000000 --- a/Task_1/cert/ca/root-ca.crt +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQW0jEQ6KxRUyDACxedeUaIDANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAyMTcxNDM2WhcNMjUxMDAyMTcx -NDM2WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu -YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC29xJlezkW0R0BeeRA2R6B3oJC6J8nccZnuSvA0DxLIwC2mWQb -uQVUM9Twd320pf2EQ5o61qVLj2xqmmvQsn8HOTWKpb0fjFtVEev5DG8zJIuTlgvK -1jEZWQ+Y9PlGDBVmXmnwLUJOdLd+Rb22U0yb+HEJnMMlrYexYcB+lmSuX7/g81Cd -UYTlsEA2FDBvirQDZPhxv+08HOTuwOf99QI3qI3aX1BaP9d6eh5RRzg46AZtOcCP -7JEolh3KMNCrH7zfnwE0xItokB77xeDYdkyyNxBV8Wf4h+RmsOARV4F0K525kpBF -NQ0aa8m4eqmDI3XAw95k4BP2IORmHkRcGvOVP/Dm76CQysVY4mN+n7XXDaaDHafd -gw+iTOX1pb48VCH7L+JgooiSOXRX4JC0g76arT2TG5FR+Y97KswSf1A/38KQ5cJe -GOmhkzVMhQrYMe5U+CedwEQ9sRo6Kj5+tNGrkcS/tAYVz15DnvmUU3YzDOrBgJhu -kAyjbeQ4EOyl/kUCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAnkTFZ1FAOGLWrlDZzmIG5txlV3erVGVMzpGCX6utnTla4cUtKJs5 -4izvWZxUlRB0DWEieDLXEZMXI/rUV3hmn2f8T8MJS4zi9nZF+XwdgrDK4f4MTpYp -mD3sUY+l4OY47ExwZzHWZS2Qox5qQ7d7nYbchCQSv6TCgA2ZCvUtSdcxK9QTP8gf -6t8hvO7kS16EdmIER/TnBg2xiEOEJVXZ8nAjqIPXmxjLi3ZifINV3Zx66/a0oLzS -x99Iua/ppiZn9Cf8zWcTUh/Uy0x3HEGf62xOU8pFjv4QDnuiiK8mWgTslxIXEpfx -wVH4kWxosIY6LuIP0eSvTK6fhjeqLADNyUTdBbPyDLR+duR9rWjzfbrJRckFzhrR -RZH63wNAt5xOFyWzWU38HL735uYBdRfDLmn9TbjTN2qJC6auMfTYA0BaBRR4zDqQ -c1TBcOyyP7UzDhWttpN2GOA5v/Dfgae96OKbgadoQoKyngxuLbl6hD/Uu18rZUO5 -C5H5LSI99S3u ------END CERTIFICATE----- diff --git a/Task_1/cert/ca/root-ca/db/root-ca.crl.srl b/Task_1/cert/ca/root-ca/db/root-ca.crl.srl deleted file mode 100644 index a616ad4..0000000 --- a/Task_1/cert/ca/root-ca/db/root-ca.crl.srl +++ /dev/null @@ -1 +0,0 @@ -01 \ No newline at end of file diff --git a/Task_1/cert/ca/root-ca/db/root-ca.crt.srl b/Task_1/cert/ca/root-ca/db/root-ca.crt.srl deleted file mode 100644 index a616ad4..0000000 --- a/Task_1/cert/ca/root-ca/db/root-ca.crt.srl +++ /dev/null @@ -1 +0,0 @@ -01 \ No newline at end of file diff --git a/Task_1/cert/ca/root-ca/db/root-ca.db b/Task_1/cert/ca/root-ca/db/root-ca.db deleted file mode 100644 index e69de29..0000000 diff --git a/Task_1/cert/ca/root-ca/db/root-ca.db.attr b/Task_1/cert/ca/root-ca/db/root-ca.db.attr deleted file mode 100644 index e69de29..0000000 diff --git a/Task_1/cert/ca/root-ca/private/root-ca.key b/Task_1/cert/ca/root-ca/private/root-ca.key deleted file mode 100644 index fb3d031..0000000 --- a/Task_1/cert/ca/root-ca/private/root-ca.key +++ /dev/null @@ -1,39 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/Task_1/cert/ca/signing-ca.crt b/Task_1/cert/ca/signing-ca.crt deleted file mode 100644 index b810204..0000000 --- a/Task_1/cert/ca/signing-ca.crt +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRALwWpD0DCUajjzNlO/Gt208wDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMjE3MTQzNloXDTI1MTAwMjE3 -MTQzNlowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs -ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEAtMKcjEy3FBPy0sJEVUsca9rahLEx9UlFf18VBiIH -qdfx1USfpmGwjOObKmGvFISPdf7xyNWQDIDrxdINQYNO65TNT6GiU4FWJPCiJ00B -kHDNHd6WJIezj61Q8GXSzUEFP0reCCjEc/aIHKn+QNdsthObDDGeMG5HeffwjOTQ -7gSIL/xMILECG3FqOUk3MrKT1s+fs9MQ+QGllxqPGzRkv+wtz/G1njwzi8UvozhP -NmWtE/uVsZZ7cf6TupaiC3Fr2TgoHYQ0fKO4/fIFqJ/7nfYQ7hoR+FDeSe8X54yT -WWFHJyYeeraf/Tvjun9t8oRpFXK9173pk9Y0XdJNZvfwRmGhJnHqUMExBoyzZBzK -+WfAwJDDMyofMQBxj/n/WO4lMP7mhTvXZAXGUG6WxTCpj2u5cA7amjH+yfB2d/pQ -I9i6f3ddWzr+++QwLuw1BEoi3vY1zC5z6wpUq4olDyy8/Ch82FgOeWncdTjWVEoT -LBqWNG60PDQdXJqbAACllDqzAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBALQl8i4Qb9uuVKQo7jDE+CfI11emIWaHydcSvZn/C9Pj -ViwEIMTPL9w8uVeVxpvT/8eEQMfkNqJQ+1gPRnYrU0IcNDcUtNkD9Qq37TZw/m/K -rfeN9YcmNXKdEhCHNXpSOk+bDNzepA2dDdQrU0a1WXthzrDtKJWTvxQKf1pp8Zri -GxXwqdz1KZttvyQwqCjHA9tR7fRjLjsP7Lc/AROB5gO1Ph/f2GBPgfj2QHxS5oyp -Eo2rIFZu7VmgD4+9C0DBwoNtur8uQMZc/cPr5r0Jd/rijG7mntJDJ4k5jr/wBIpA -4XhMIYNm5I20Cqkkd0UpB5kU38y2DOLTYSCgT4qVwKUdiaTY3IgfqVY0DLrCWbbz -CIRmYl816skvN8yH9Gg77BPOzIsc72rudt2h1w9ZDWm36Yo92dYLP6At7FIa5GnD -7TPxlBq0NWW8znJ4roYRAlr66nhXhoxytWGcLDyIQUU3CJIowH15319Bau5fAJfm -kfUFdfHcZrCdvkkBy4vk2w== ------END CERTIFICATE----- diff --git a/Task_1/cert/ca/signing-ca.csr b/Task_1/cert/ca/signing-ca.csr deleted file mode 100644 index 1b10e38..0000000 --- a/Task_1/cert/ca/signing-ca.csr +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIID4TCCAkkCAQAwejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixk -ARkWBnNpbXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoM -ClNpbXBsZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkq -hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtMKcjEy3FBPy0sJEVUsca9rahLEx9UlF -f18VBiIHqdfx1USfpmGwjOObKmGvFISPdf7xyNWQDIDrxdINQYNO65TNT6GiU4FW -JPCiJ00BkHDNHd6WJIezj61Q8GXSzUEFP0reCCjEc/aIHKn+QNdsthObDDGeMG5H -effwjOTQ7gSIL/xMILECG3FqOUk3MrKT1s+fs9MQ+QGllxqPGzRkv+wtz/G1njwz -i8UvozhPNmWtE/uVsZZ7cf6TupaiC3Fr2TgoHYQ0fKO4/fIFqJ/7nfYQ7hoR+FDe -Se8X54yTWWFHJyYeeraf/Tvjun9t8oRpFXK9173pk9Y0XdJNZvfwRmGhJnHqUMEx -BoyzZBzK+WfAwJDDMyofMQBxj/n/WO4lMP7mhTvXZAXGUG6WxTCpj2u5cA7amjH+ -yfB2d/pQI9i6f3ddWzr+++QwLuw1BEoi3vY1zC5z6wpUq4olDyy8/Ch82FgOeWnc -dTjWVEoTLBqWNG60PDQdXJqbAACllDqzAgMBAAGgIjAgBgkqhkiG9w0BCQ4xEzAR -MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggGBABmFhQ7991aBGsCn -C+mqOjdwUS5XFmclWDeHImQPXaLU0By9mKpeI0epCisXjroXmnVDxLPZ0QkJ0lW9 -ecoM5Ik/6GcFDXaheizSw+/CX7eaSB+rp1DNBehHb4r3E9qNt28ZrvoilwoE7aAC -OfiiZYHb55+DgAotOO8S0yCsxd043ZyCyXma0NmbhYVxMMW4wHZXlPZcZMPwJuP+ -ktUrqD7LJPifJEjjc2ynMfYpNo20CaI/v45D+ocIcGYov4HgZDUB1fDoCf+GqQHY -H2QwMPB6ODbCgh1ZYB/y6Ahs2E2zd+75uo8V40i9xTj6KcTIEny1rP/RjXiuZWmQ -XmutJ8999NVAX1ZpME00f6REFJeZ+TIWJUJmVsSXbqp+pciX0n4mlTMqPE9q4p9t -w5mURTUJHBPLxBJxZc1vzZb/N2XuJ3DX/lUQLiOdViFUDhBcupunFlEDS+kPHL0t -7zKMRcUWsFrXx+QnahhJphP5CSVbdUx0DJm/T0/D5FJql4f8eQ== ------END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl b/Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl deleted file mode 100644 index a616ad4..0000000 --- a/Task_1/cert/ca/signing-ca/db/signing-ca.crl.srl +++ /dev/null @@ -1 +0,0 @@ -01 \ No newline at end of file diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl b/Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl deleted file mode 100644 index a616ad4..0000000 --- a/Task_1/cert/ca/signing-ca/db/signing-ca.crt.srl +++ /dev/null @@ -1 +0,0 @@ -01 \ No newline at end of file diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.db b/Task_1/cert/ca/signing-ca/db/signing-ca.db deleted file mode 100644 index e69de29..0000000 diff --git a/Task_1/cert/ca/signing-ca/db/signing-ca.db.attr b/Task_1/cert/ca/signing-ca/db/signing-ca.db.attr deleted file mode 100644 index e69de29..0000000 diff --git a/Task_1/cert/ca/signing-ca/private/signing-ca.key b/Task_1/cert/ca/signing-ca/private/signing-ca.key deleted file mode 100644 index 41c1ff0..0000000 --- a/Task_1/cert/ca/signing-ca/private/signing-ca.key +++ /dev/null @@ -1,39 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/Task_1/cert/cert_chain.crt b/Task_1/cert/cert_chain.crt deleted file mode 100644 index d587b1b..0000000 --- a/Task_1/cert/cert_chain.crt +++ /dev/null @@ -1,54 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEhTCCAu2gAwIBAgIQW0jEQ6KxRUyDACxedeUaIDANBgkqhkiG9w0BAQwFADB0 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRcw -FQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEXMBUG -A1UECwwOU2ltcGxlIFJvb3QgQ0EwHhcNMjQxMDAyMTcxNDM2WhcNMjUxMDAyMTcx -NDM2WjB0MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2lt -cGxlMRcwFQYDVQQDDA5TaW1wbGUgUm9vdCBDQTETMBEGA1UECgwKU2ltcGxlIElu -YzEXMBUGA1UECwwOU2ltcGxlIFJvb3QgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC29xJlezkW0R0BeeRA2R6B3oJC6J8nccZnuSvA0DxLIwC2mWQb -uQVUM9Twd320pf2EQ5o61qVLj2xqmmvQsn8HOTWKpb0fjFtVEev5DG8zJIuTlgvK -1jEZWQ+Y9PlGDBVmXmnwLUJOdLd+Rb22U0yb+HEJnMMlrYexYcB+lmSuX7/g81Cd -UYTlsEA2FDBvirQDZPhxv+08HOTuwOf99QI3qI3aX1BaP9d6eh5RRzg46AZtOcCP -7JEolh3KMNCrH7zfnwE0xItokB77xeDYdkyyNxBV8Wf4h+RmsOARV4F0K525kpBF -NQ0aa8m4eqmDI3XAw95k4BP2IORmHkRcGvOVP/Dm76CQysVY4mN+n7XXDaaDHafd -gw+iTOX1pb48VCH7L+JgooiSOXRX4JC0g76arT2TG5FR+Y97KswSf1A/38KQ5cJe -GOmhkzVMhQrYMe5U+CedwEQ9sRo6Kj5+tNGrkcS/tAYVz15DnvmUU3YzDOrBgJhu -kAyjbeQ4EOyl/kUCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B -AQwFAAOCAYEAnkTFZ1FAOGLWrlDZzmIG5txlV3erVGVMzpGCX6utnTla4cUtKJs5 -4izvWZxUlRB0DWEieDLXEZMXI/rUV3hmn2f8T8MJS4zi9nZF+XwdgrDK4f4MTpYp -mD3sUY+l4OY47ExwZzHWZS2Qox5qQ7d7nYbchCQSv6TCgA2ZCvUtSdcxK9QTP8gf -6t8hvO7kS16EdmIER/TnBg2xiEOEJVXZ8nAjqIPXmxjLi3ZifINV3Zx66/a0oLzS -x99Iua/ppiZn9Cf8zWcTUh/Uy0x3HEGf62xOU8pFjv4QDnuiiK8mWgTslxIXEpfx -wVH4kWxosIY6LuIP0eSvTK6fhjeqLADNyUTdBbPyDLR+duR9rWjzfbrJRckFzhrR -RZH63wNAt5xOFyWzWU38HL735uYBdRfDLmn9TbjTN2qJC6auMfTYA0BaBRR4zDqQ -c1TBcOyyP7UzDhWttpN2GOA5v/Dfgae96OKbgadoQoKyngxuLbl6hD/Uu18rZUO5 -C5H5LSI99S3u ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEjDCCAvSgAwIBAgIRALwWpD0DCUajjzNlO/Gt208wDQYJKoZIhvcNAQEMBQAw -dDETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEX -MBUGA1UEAwwOU2ltcGxlIFJvb3QgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMxFzAV -BgNVBAsMDlNpbXBsZSBSb290IENBMB4XDTI0MTAwMjE3MTQzNloXDTI1MTAwMjE3 -MTQzNlowejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNp -bXBsZTEaMBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBs -ZSBJbmMxGjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMIIBojANBgkqhkiG9w0B -AQEFAAOCAY8AMIIBigKCAYEAtMKcjEy3FBPy0sJEVUsca9rahLEx9UlFf18VBiIH -qdfx1USfpmGwjOObKmGvFISPdf7xyNWQDIDrxdINQYNO65TNT6GiU4FWJPCiJ00B -kHDNHd6WJIezj61Q8GXSzUEFP0reCCjEc/aIHKn+QNdsthObDDGeMG5HeffwjOTQ -7gSIL/xMILECG3FqOUk3MrKT1s+fs9MQ+QGllxqPGzRkv+wtz/G1njwzi8UvozhP -NmWtE/uVsZZ7cf6TupaiC3Fr2TgoHYQ0fKO4/fIFqJ/7nfYQ7hoR+FDeSe8X54yT -WWFHJyYeeraf/Tvjun9t8oRpFXK9173pk9Y0XdJNZvfwRmGhJnHqUMExBoyzZBzK -+WfAwJDDMyofMQBxj/n/WO4lMP7mhTvXZAXGUG6WxTCpj2u5cA7amjH+yfB2d/pQ -I9i6f3ddWzr+++QwLuw1BEoi3vY1zC5z6wpUq4olDyy8/Ch82FgOeWncdTjWVEoT -LBqWNG60PDQdXJqbAACllDqzAgMBAAGjEzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJ -KoZIhvcNAQEMBQADggGBALQl8i4Qb9uuVKQo7jDE+CfI11emIWaHydcSvZn/C9Pj -ViwEIMTPL9w8uVeVxpvT/8eEQMfkNqJQ+1gPRnYrU0IcNDcUtNkD9Qq37TZw/m/K -rfeN9YcmNXKdEhCHNXpSOk+bDNzepA2dDdQrU0a1WXthzrDtKJWTvxQKf1pp8Zri -GxXwqdz1KZttvyQwqCjHA9tR7fRjLjsP7Lc/AROB5gO1Ph/f2GBPgfj2QHxS5oyp -Eo2rIFZu7VmgD4+9C0DBwoNtur8uQMZc/cPr5r0Jd/rijG7mntJDJ4k5jr/wBIpA -4XhMIYNm5I20Cqkkd0UpB5kU38y2DOLTYSCgT4qVwKUdiaTY3IgfqVY0DLrCWbbz -CIRmYl816skvN8yH9Gg77BPOzIsc72rudt2h1w9ZDWm36Yo92dYLP6At7FIa5GnD -7TPxlBq0NWW8znJ4roYRAlr66nhXhoxytWGcLDyIQUU3CJIowH15319Bau5fAJfm -kfUFdfHcZrCdvkkBy4vk2w== ------END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.crt b/Task_1/cert/client/col_one.crt deleted file mode 100644 index 43280f7..0000000 --- a/Task_1/cert/client/col_one.crt +++ /dev/null @@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQb4O/yUDuRWOMdh6ec7rk8TANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQxMDAyMTcxNDM3WhcNMjUx -MDAyMTcxNDM3WjAOMQwwCgYDVQQDDANvbmUwggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQClBBzNilirzXxpMHAM16DatERWOFShCAJKEmBW/+M2+Eggx+UZ -VYZGwwstABjwsPCw2bUFhMziHMyuXR9DV/4zuj4f9eGR9XSuwUch3n7MMpJ7hy3P -rEg6nS+NM/1cGQvoH6RJ/Kj7iXncTNKXVKncF5NwylUPMS99iVRsfIu601eaWTkv -1Bw4kVR/+DW7AiNjGABRW+Oex1xAWsp99c/E4DVW6X7ct6y5XgbjbbVveNH3KL8q -Z+zJxECjtTrc2suIKUxll4/i1G6Skg6PewSF7jpoPcNboBFQcpAsZ2qNATuRjfpr -f5giePMDVKDKrW/0uEiHOAKL6B7EBsBb8OrhZUwgXjAht1uCNIe7xE529pN0DzCN -l+WoCon0YrJCP84fkEBgAmMyv1SGQv+1RpRa7Z1c+1yEs58rJtdHvbhTqlAOmrqk -0snIL8HmOtA1Uqdc6bTU8ORE2JwdxDA80JI2GTEjiE98uMcBAl1R0h03633r14Dz -Kw4WKA5nbE7dMCUCAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggNv -bmUwDQYJKoZIhvcNAQEMBQADggGBAJKH2/OZcCMlj6OQ/XrrieME6Z6r+0VuTMVS -loIfjawa6G32tldmaByswBkF4wmcpvkrHdOgGk8zh8ExHd8wlZyxduAwcg2rNMO4 -9KAEtAsRBtNczgsLq6n5Zdi/waVXaOMmMxLZ0JCP3dH0hedDo92n+ohRThH35+4X -Ueb7ecsFdyOJNOO0O98VeHOvkiUQlkTfkDvwKz6lxVXsqk0Ke5zdavBpOp9qveID -VY2AUa7PktCv/mKPC84c5sgxgHsIC4GghZZ2udFCJPFdR/s/uy2QvGetHOXMaZPC -JHLEB3OQAOsVI+PMEdc0tvN+QZK9dHZiAwP83iGHxuyRNmez+IGIoeTTTVzuJa51 -/1euwTbwU3Z3H9IKBhs3aOGCJZ2dSXe2aoci5pqbME85vFsKqRwKCHbSBBa2xinf -C/SJ7jPl5iUN4TSH9kGBYGYJ6wiBRWHyFv1FEVrJ9r5F/7Ik43yv0rmTnOCLDmXY -8vF+1wjRw8zY+GrOI18Pxd3A1FGNQQ== ------END CERTIFICATE----- diff --git a/Task_1/cert/client/col_one.key b/Task_1/cert/client/col_one.key deleted file mode 100644 index a72d44f..0000000 --- a/Task_1/cert/client/col_one.key +++ /dev/null @@ -1,39 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIG4wIBAAKCAYEApQQczYpYq818aTBwDNeg2rREVjhUoQgCShJgVv/jNvhIIMfl -GVWGRsMLLQAY8LDwsNm1BYTM4hzMrl0fQ1f+M7o+H/XhkfV0rsFHId5+zDKSe4ct -z6xIOp0vjTP9XBkL6B+kSfyo+4l53EzSl1Sp3BeTcMpVDzEvfYlUbHyLutNXmlk5 -L9QcOJFUf/g1uwIjYxgAUVvjnsdcQFrKffXPxOA1Vul+3LesuV4G4221b3jR9yi/ -KmfsycRAo7U63NrLiClMZZeP4tRukpIOj3sEhe46aD3DW6ARUHKQLGdqjQE7kY36 -a3+YInjzA1Sgyq1v9LhIhzgCi+gexAbAW/Dq4WVMIF4wIbdbgjSHu8ROdvaTdA8w -jZflqAqJ9GKyQj/OH5BAYAJjMr9UhkL/tUaUWu2dXPtchLOfKybXR724U6pQDpq6 -pNLJyC/B5jrQNVKnXOm01PDkRNicHcQwPNCSNhkxI4hPfLjHAQJdUdIdN+t969eA -8ysOFigOZ2xO3TAlAgMBAAECggF/TuM2pScBPQZQ9K6wh5GEqgABKJAF8LGjAgqM -KfKkQuHP1kY+pJPq60Y01sI3D4w5kCTMComfxBKncA06pG6yxG5QSok2S1Yd4f2o -YrJpasslGgNy7KXDklirgyziBY+U8jftyhQy+Qe+GfIuOhs9jqUe/z6mXhRkE2bW -GWmmPy1HIgHkbZSTK5+zINspirMUlpbfA7KtfXsmm0JtZavsuP7Co1Zwu7Ma8rpB -Pz3aWyCD6tBRZ+kTw6W/Gz4n56oc7XghNYuxRBn7QG7YSiAwJrl1mF6IIUtA1kju -JY0UJBJhm9SecLDIhFgxukRgnmEl17kp6ezy9lh49eT4iNaN8g2MubHSBjoG+6IM -Htt7XBmF9lkgZpDEW4ZSDEeJnT3ciQogYi6CMlGaQr8ZmEoIXnLGgerPbwkebm4g -wWVhGH5nJLFgI5cyYsHcuFSjqrqUuCsynaYlzRMFCIQNOap/5U9wEIyAQ1kn5eNx -UaDd+oALiGk+3TBDRgpPDmePegkCgcEA2k3JiVJgPRBOr+qiNNd0xQAuonsAFTAn -NyXeLWCmPGUITIooPbw7i4schEwCkb/qWy3fm60Ro2bAg83nvF4w7zr2siYXcWPp -fNNDhL2THpBR+KduukbQkXu0552+nkIGyF3FlggCB1wihHHPdH0hNvlo2yBa9kQn -rIlVG/1laZMrFXmOxcotLovtTfIFQIR6IJWKe1Vr2xxJ5GwMIEC8ZWe0sTg23ODk -xCWxMY1omO/vzY4gAQ7G4lq5/tHbmWFDAoHBAMGCt1y3gkVLaob9RxTV8TE/F0hV -wcQPJ72ju/h4+F6wlVYUowFIKZDh4DsZ+BjSBvqatlCkt2URqFcpP1KAFhRYoix1 -9JXy5lVkMYxeLX0JNUREEshm535xTpV6NKFG3OEyXahUhRG7v4e770yCBkNUykq7 -1SydmZzfxULXl/ul2Ar69hHRYlQKsOd94muLV4MesmSahi0DZcUdmH1vaFFyhCNB -zfpeEqtyTYhKDK1iLB+/5Qywjv9ykZyBVGZ+dwKBwFYZh/tZOgvbeq13ZTJiJ/Pq -9nmu+YFh1JWzocVT8TywvG0zsFto+jM3Uq/7KqhBgTUlCqRjxikkRZm2hEeO/s3b -+6CX1XcraNOKn36jJntPgIUJxGpDs88tc1RGqv/QGsy770oVLneopxSFrsTK9Wax -R+HlCPtINj2ejKrVbkINgVie8OihrOBG3/l2Eww3M9PWJyAtuLRam+ozkzTFU4jL -NkEPYtQK/y89jn10wGRRfcsc2xKPuXFdRy5xpqL/8QKBwQCovlEhI9EQliQt1J1w -eOObexXVeRq/2itgfnBCy1JiV//RkatXSdMdSSrcvteO5U86p0EGb6yREOXII+rZ -CWK3mVbKCI4hWDAtFHL0oYdvOmFdxzLN2JZTt4C8blWIsZ+ZLO9pA1MK1Lq/JU4W -XGgTvNOueb756fBzUNrWX+RjiAouAQwlG35wJOaA51BTUa4dY95SRkFs7UKIsjcw -Yr8IDyFVEWQJyJDlOoaLq28EntA1W4PkHe6EqSZ64Hh17B8CgcEAiceUx+kYVu/z -pNj91y0Qs3bAFtAzav/P+sMC4TesbDoZnY0nsBrx9jgnZfA8s3xsTH6EU967hiF0 -5yYaXs+a7966NzAXjWBkAHyM3qNDAaPXeaHOsXtq1rKiaSD1MHwtTipCdnpp3XsN -u/g6SPdUw4sL4Kht0ezOJkuafj+Ljxx5xbeXL4KOiKPTFL++3SzrbnKiWOCiQiGZ -pmMh6467Lfu9WZ3uPEqyF56BWlA55j5zIQwWa8bsQkfTBLfseN8o ------END RSA PRIVATE KEY----- diff --git a/Task_1/cert/client/col_two.crt b/Task_1/cert/client/col_two.crt deleted file mode 100644 index 3182e8c..0000000 --- a/Task_1/cert/client/col_two.crt +++ /dev/null @@ -1,25 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEMjCCApqgAwIBAgIQdPN54YQjSr2xGuhcn5vNRTANBgkqhkiG9w0BAQwFADB6 -MRMwEQYKCZImiZPyLGQBGRYDb3JnMRYwFAYKCZImiZPyLGQBGRYGc2ltcGxlMRow -GAYDVQQDDBFTaW1wbGUgU2lnbmluZyBDQTETMBEGA1UECgwKU2ltcGxlIEluYzEa -MBgGA1UECwwRU2ltcGxlIFNpZ25pbmcgQ0EwHhcNMjQxMDAyMTcxNDM3WhcNMjUx -MDAyMTcxNDM3WjAOMQwwCgYDVQQDDAN0d28wggGiMA0GCSqGSIb3DQEBAQUAA4IB -jwAwggGKAoIBgQC27d7sLdslTh65WAePpRPSQUvCJVVYnAEq3O+wKpfr6ayZzkbt -F3L9h/fXe2eCfStdbEe8OafMoxyV7KfAxdGyp9wq/BG08o2v8P5VHIIl0h8jwT/I -SQpkDNo+ntafx/QZtrgLOX2HCCpOqZA9G+cfsywauMlEB66yl8bvcw5ZJCn4jSXk -mvNnFP9WtbQnsEXm7nndxiZtniAPSr+YuPz8YDhBmo+qD576zPnN7+K0VLkJFZAl -2IBD1JWfI62UIBFXVeNZpQKdtLwcwq1ZvhIveJ5uCmFiypoZt+y6rwlm/VQZbXFY -uTw+lshyykbPfg01VXDmc4HEXCvpBJvs+/d1zuelIEZntUWtKs3JNu0S1fukBVMW -les455Cc2tjLG5V5YnMm8UP0PjbWZ/mLsB+wcWFHyvQWIl3asQkXlSLR/qLOXH/f -gjr1K2hwDBw8ekP/L77Sv76KlFUeJmUic01BzeFZ3DL5MJaNfGAhdz94iy0THhbi -ioaRK4VmEQHnVv8CAwEAAaMgMB4wDAYDVR0TAQH/BAIwADAOBgNVHREEBzAFggN0 -d28wDQYJKoZIhvcNAQEMBQADggGBAECVRIHioriyBwIjFfiYRyNUsMdvDoexJx82 -xP0lK4ibLM1Ej5b1Zhfc5Ew4fHjR3+XAs6UOAP/wUIuPLXwg6HbhF++Re3qCXgow -pPPtbLQq48Q+9KRRjBTkidT8IoOMOI1mcASE8kAdItpfxcs7ZcyIfs87T9HMWe4G -x5uySy7johvOQu1qcTtqaUI+ORTqPjyaxJ5FtaGIr9zyMcQuuRvCMsjaq4IIzWql -EhjWtdIX3PRZA7Ttyuys0N6OMRlIIXH+8IwIQAS3hF/DYiDa00B9KQVHCEoI1JEt -le6eqTAG5GCjlkgK+gLdSY00Ntt88MZwxZQhyGa+xG62jJU1+i0Ui7Drt47XB2LH -dEtUFOcWZBTwH8+SpFo3VyH3N6pLQWn4uElyh12+7g5NGJaim1ZjP3qV5dmh8fgx -Mp+TpWdXvxKEczMGiauf79hOQ38YL9VY6XuTS8V8gAae1alXEizIWHzuOIIoHNe6 -CenigKe0efXI4Wj9VuQ3LDi2mCWe2g== ------END CERTIFICATE----- diff --git a/Task_1/cert/client/col_two.key b/Task_1/cert/client/col_two.key deleted file mode 100644 index 8427ff3..0000000 --- a/Task_1/cert/client/col_two.key +++ /dev/null @@ -1,39 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/Task_1/cert/col_one.csr b/Task_1/cert/col_one.csr deleted file mode 100644 index d17f872..0000000 --- a/Task_1/cert/col_one.csr +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIDqjCCAhICAQAwDjEMMAoGA1UEAwwDb25lMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEApQQczYpYq818aTBwDNeg2rREVjhUoQgCShJgVv/jNvhIIMfl -GVWGRsMLLQAY8LDwsNm1BYTM4hzMrl0fQ1f+M7o+H/XhkfV0rsFHId5+zDKSe4ct -z6xIOp0vjTP9XBkL6B+kSfyo+4l53EzSl1Sp3BeTcMpVDzEvfYlUbHyLutNXmlk5 -L9QcOJFUf/g1uwIjYxgAUVvjnsdcQFrKffXPxOA1Vul+3LesuV4G4221b3jR9yi/ -KmfsycRAo7U63NrLiClMZZeP4tRukpIOj3sEhe46aD3DW6ARUHKQLGdqjQE7kY36 -a3+YInjzA1Sgyq1v9LhIhzgCi+gexAbAW/Dq4WVMIF4wIbdbgjSHu8ROdvaTdA8w -jZflqAqJ9GKyQj/OH5BAYAJjMr9UhkL/tUaUWu2dXPtchLOfKybXR724U6pQDpq6 -pNLJyC/B5jrQNVKnXOm01PDkRNicHcQwPNCSNhkxI4hPfLjHAQJdUdIdN+t969eA -8ysOFigOZ2xO3TAlAgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC -MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDgYDVR0PAQH/BAQDAgWgMA4GA1Ud -EQQHMAWCA29uZTANBgkqhkiG9w0BAQwFAAOCAYEAACl2DUwcWUVWk5Z3/I+/tkbs -mDx7afU1Y+Fu9o/Qo/d6myraI2MuFePb8CDvNP6XpY5hm3t1ITFYKVZ90aol2DdP -R3FYf2aOF9koU0SoiIneqtduHVy32aIdSnVUgFdFeC/wkCYHFLdEyIcpFjG6E9Xj -zFvUpDLMsoVvL/Axsh/DZpUEHOXP4+vJjOpM6vTdlnDTizXNThYdH77qMA3Ofd+5 -nF1jwcYzmz49/rJd+3ob0t80HkOOv78otZ/uUdqt2N3rOqvwdGsUJezTdW5oqRC5 -bSMxDGcHAYT/zXcFetA2Ik41xTCr5x4C0VdYWy0Ui0bN8h0cPHusWVIQv/r4GmTR -WaTWy5rYtbcqdx8q8F1tzQjHnU+uJ3vj8hIkyBNMTwLx26vFlGvBik4Nz8zHOoyo -79BJYIi9SC9bvaW4HejMCA240qd2kXO9cKOLWjrlEWZ/NqZPoAA7NLWo28y0Mu4C -nuqciKs62/aB0fAn0uTY/7/tMV6ArvL3GWM819bo ------END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/col_two.csr b/Task_1/cert/col_two.csr deleted file mode 100644 index 7d6bd28..0000000 --- a/Task_1/cert/col_two.csr +++ /dev/null @@ -1,22 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIDqjCCAhICAQAwDjEMMAoGA1UEAwwDdHdvMIIBojANBgkqhkiG9w0BAQEFAAOC -AY8AMIIBigKCAYEAtu3e7C3bJU4euVgHj6UT0kFLwiVVWJwBKtzvsCqX6+msmc5G -7Rdy/Yf313tngn0rXWxHvDmnzKMcleynwMXRsqfcKvwRtPKNr/D+VRyCJdIfI8E/ -yEkKZAzaPp7Wn8f0Gba4Czl9hwgqTqmQPRvnH7MsGrjJRAeuspfG73MOWSQp+I0l -5JrzZxT/VrW0J7BF5u553cYmbZ4gD0q/mLj8/GA4QZqPqg+e+sz5ze/itFS5CRWQ -JdiAQ9SVnyOtlCARV1XjWaUCnbS8HMKtWb4SL3iebgphYsqaGbfsuq8JZv1UGW1x -WLk8PpbIcspGz34NNVVw5nOBxFwr6QSb7Pv3dc7npSBGZ7VFrSrNyTbtEtX7pAVT -FpXrOOeQnNrYyxuVeWJzJvFD9D421mf5i7AfsHFhR8r0FiJd2rEJF5Ui0f6izlx/ -34I69StocAwcPHpD/y++0r++ipRVHiZlInNNQc3hWdwy+TCWjXxgIXc/eIstEx4W -4oqGkSuFZhEB51b/AgMBAAGgVzBVBgkqhkiG9w0BCQ4xSDBGMAwGA1UdEwEB/wQC -MAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDgYDVR0PAQH/BAQDAgWgMA4GA1Ud -EQQHMAWCA3R3bzANBgkqhkiG9w0BAQwFAAOCAYEAESdtWfsUXvJLuOZCcupSewPg -rmjDSBcNiGfVoWmZk0wH2u8gqh8iw8t7+IesN8m4c4P1yQkQVnvUZn+r7B4Ny0lK -2VMKs29NWBvLZ7tEHu0pimVDM2lqvdjNPA4iKBjWvrfBdDJa0TZo5C3/SJteYjgf -c05SN1aLJk6MzlcP1MV+3ol8TWmYHTGpdgwC6n9oy5Ahl4+Z+pyYa7x6JF6oY/GB -ZCqrlU5QAnWOpRfeuxuGJRekMyTXmkYiheyY7bukyfZY3P8EgCn/u0Kp61aFmJkT -wST+J+TsmbL5ba1fG+hAYUaN8V2hTP0aKwu7SNVoKWBGa0OOsVlM1hZu3E3Q1um3 -e/SQht4hVmXWvDlMdvZqSX0mDGFSAZel+U6ecgbslWFChDncbvxOEqbd87zjJ5/+ -we/CefwRsEzQolrts4FRD2YMNzUwMKhfy9j34eL+ETOszNa2BR3v0IwZjXwVdkgl -jS/DcmKfRaDu0yhwxJgA9+idJJucQl0OhxwhFX+Z ------END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt deleted file mode 100644 index efac4cc..0000000 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.crt +++ /dev/null @@ -1,26 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIEXTCCAsWgAwIBAgIRAMlrpJeJhULpkFSXCNhl5k8wDQYJKoZIhvcNAQEMBQAw -ejETMBEGCgmSJomT8ixkARkWA29yZzEWMBQGCgmSJomT8ixkARkWBnNpbXBsZTEa -MBgGA1UEAwwRU2ltcGxlIFNpZ25pbmcgQ0ExEzARBgNVBAoMClNpbXBsZSBJbmMx -GjAYBgNVBAsMEVNpbXBsZSBTaWduaW5nIENBMB4XDTI0MTAwMjE3MTQzNloXDTI1 -MTAwMjE3MTQzNlowIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxpb022yB/h1iV3z1a/Dp -BaJWIRZwX9QCtH5tq7zVWvJa1AO9RDMXfiN4KEP+OJ9ropClZo+UsQu9oyE3Q7ys -N6mee1Tq8vo+WYvlkmysbBJwbbN7NhWqbE3npcIyd65Qun3LWcJM0PRKlr3wh9TS -QFzPdDpvnfudnnJE0ql1pV4DQkisZxk4Nt+OgK2s6NKsPrRDRIOz7wI8i4Y4KE3i -W8kl775AQswhNYn+0ihnGk9RSAQeYTVgOu4pWqzf+ANBzHYfazQc22Mc/fT8/QqQ -/98gadXP2oZSdNxSnTSjrvBGdnjcXshlfXl4ryZkkwykw6zIvu14bbKPHTRIyG45 -HL5saQk38v24XLepSzmi2gTByswpe98U3vN8/MVzkJ5HQJSkoz5WzpeMhtBJIW9s -toW70/PHdV4KJ6SjDZ+bLldKIY4rc3xRP7CEG7Cwi56+5dO5dUK2/RdB8QlP8Sj5 -iI9B7V8dSy7xyHTyQhdwaUMQW0VkNZcmB7P2XVRZgdmrAgMBAAGjNTAzMAwGA1Ud -EwEB/wQCMAAwIwYDVR0RBBwwGoIYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1MA0G -CSqGSIb3DQEBDAUAA4IBgQA9csk6DhoBsFKUG5u1cZEIDwl0gsLwXBBC1cH8vMTK -qvCMmCJc9iP8ymD8tPLvYd4UShiQ3mdXFfvuYEgnDJZJLPL4PZKsrZU6vcu8ILuc -gk3zW465PYscN9vJWdd35FqXE99rOKgqloEvariM4Rz2ET3VEGN/phLSXK0zEdzV -ISJpO2Xz6/tezo/0H4rP+byNDfWsfm8bB+6z7mIlBZO5uttyEIgPA8SQR50QbUyF -dKg32y0U2b+0osayCXNB70rUG8U6h2urzmPrAxqCjhjSCe3h2QvrRTjd3UPQzlB3 -rS2EEG879aStmNLfzaJQt9jgNSpxN3Ruy5v7G72n0lxMM31Uct0UIJSey+nseXlX -tT8MnDjUa5H+fHbqkFBhb96EVJAH7AYkwRpAY0pYVZLBCQHWhZH+D/FleW4uryHk -drvO1Wetkmv4MC3Gcd5ZJpDs/B4dflOaO+8r6W9Bf/9BZ++aIvOOMZmuLs+tvCPB -y6km01hUG+Puqs3g+6UtE7k= ------END CERTIFICATE----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr deleted file mode 100644 index 5111bb5..0000000 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.csr +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIID1DCCAjwCAQAwIzEhMB8GA1UEAwwYaW4tb3RhLTIzMjM0Ny5hZHMuaXUuZWR1 -MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAxpb022yB/h1iV3z1a/Dp -BaJWIRZwX9QCtH5tq7zVWvJa1AO9RDMXfiN4KEP+OJ9ropClZo+UsQu9oyE3Q7ys -N6mee1Tq8vo+WYvlkmysbBJwbbN7NhWqbE3npcIyd65Qun3LWcJM0PRKlr3wh9TS -QFzPdDpvnfudnnJE0ql1pV4DQkisZxk4Nt+OgK2s6NKsPrRDRIOz7wI8i4Y4KE3i -W8kl775AQswhNYn+0ihnGk9RSAQeYTVgOu4pWqzf+ANBzHYfazQc22Mc/fT8/QqQ -/98gadXP2oZSdNxSnTSjrvBGdnjcXshlfXl4ryZkkwykw6zIvu14bbKPHTRIyG45 -HL5saQk38v24XLepSzmi2gTByswpe98U3vN8/MVzkJ5HQJSkoz5WzpeMhtBJIW9s -toW70/PHdV4KJ6SjDZ+bLldKIY4rc3xRP7CEG7Cwi56+5dO5dUK2/RdB8QlP8Sj5 -iI9B7V8dSy7xyHTyQhdwaUMQW0VkNZcmB7P2XVRZgdmrAgMBAAGgbDBqBgkqhkiG -9w0BCQ4xXTBbMAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEw -DgYDVR0PAQH/BAQDAgWgMCMGA1UdEQQcMBqCGGluLW90YS0yMzIzNDcuYWRzLml1 -LmVkdTANBgkqhkiG9w0BAQwFAAOCAYEAQ7AGD3jrqolclpl1iJmFPl7GUMzVwYN3 -CdqZFXWh/TpUrVZlEAQIhoS5UJOA0Y6ozHCLs0plQ9M1BAcAbWAq48ha8a/xldny -r+bXxpvZjNC+ggd25Q2mAIMByzhjCku3WzH40V3H81Qwg1Hm/JfJZlemKhmNC7KQ -3aaXj5D9yPng/lDyOs5sCn9X5jOMxce4wwFj4BK6wlCMKw+2N5i8fmr+JhXEpIL3 -VIQX6gtbOgSMLPOwBQm+huHj8nkQn1xnJUMKv+Uc3yll2XpIUCiq/5gv9W+GAZjY -uwMw2uKWB6e1Gjv5NZYEmF5j6YnjPlA8Ul+65YE73Ab4VZA3gkaFupot6yi4+waw -ps9NNcEWmU2vMuKaJiZeWrc0VfAaVkmIKiiu8oAEFc+Ji7dKwhaYezsD6HLKdr0m -Wb5ZcPpBaOWpw5d4NLUHoAC3VTEx3eeSENyWEafI6g/4MDGkdIM33SCsL9XWVRRM -Xgkgl2rXtlQv9a1Et78kZ78m2JEjycYN ------END CERTIFICATE REQUEST----- diff --git a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key b/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key deleted file mode 100644 index 2244d22..0000000 --- a/Task_1/cert/server/agg_in-ota-232347.ads.iu.edu.key +++ /dev/null @@ -1,39 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -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 ------END RSA PRIVATE KEY----- diff --git a/Task_1/fets_challenge/experiment.py b/Task_1/fets_challenge/experiment.py index bbb91f9..4b9c5e7 100644 --- a/Task_1/fets_challenge/experiment.py +++ b/Task_1/fets_challenge/experiment.py @@ -4,6 +4,7 @@ # Patrick Foley (Intel), Micah Sheller (Intel) import os +from sys import path, exit import warnings from collections import namedtuple from copy import copy @@ -258,8 +259,6 @@ def run_challenge_experiment(aggregation_function, fx.init('fets_challenge_workspace') - from sys import path, exit - file = Path(__file__).resolve() root = file.parent.resolve() # interface root, containing command modules work = Path.cwd().resolve() @@ -365,15 +364,15 @@ def run_challenge_experiment(aggregation_function, logger.info('Starting experiment') total_simulated_time = 0 - best_dice = -1.0 - best_dice_over_time_auc = 0 + best_score = -1.0 + best_score_over_time_auc = 0 # results dataframe data experiment_results = { 'round':[], 'time': [], 'convergence_score': [], - 'round_dice': [], + 'round_score': [], # 'dice_label_0': [], # 'dice_label_1': [], # 'dice_label_2': [], @@ -402,7 +401,7 @@ def run_challenge_experiment(aggregation_function, checkpoint_folder = restore_from_checkpoint_folder [loaded_collaborator_names, starting_round_num, collaborator_time_stats, - total_simulated_time, best_dice, best_dice_over_time_auc, + total_simulated_time, best_score, best_score_over_time_auc, collaborators_chosen_each_round, collaborator_times_per_round, experiment_results, summary, agg_tensor_db] = state @@ -440,6 +439,7 @@ def run_challenge_experiment(aggregation_function, collaborator_times_per_round) learning_rate, epochs_per_round = hparams + # learning_rate, epochs_per_round, _ = hparams #IrfanKhan if (epochs_per_round is None): logger.warning('Hyper-parameter function warning: function returned None for "epochs_per_round". Setting "epochs_per_round" to 1') @@ -502,30 +502,53 @@ def run_challenge_experiment(aggregation_function, # get the performace validation scores for the round - round_dice = get_metric('valid_dice', round_num, aggregator.tensor_db) - # dice_label_0 = get_metric('valid_dice_per_label_0', round_num, aggregator.tensor_db) - # dice_label_1 = get_metric('valid_dice_per_label_1', round_num, aggregator.tensor_db) - # dice_label_2 = get_metric('valid_dice_per_label_2', round_num, aggregator.tensor_db) - # dice_label_4 = get_metric('valid_dice_per_label_4', round_num, aggregator.tensor_db) - # if include_validation_with_hausdorff: - # hausdorff95_label_0 = get_metric('valid_hd95_per_label_0', round_num, aggregator.tensor_db) - # hausdorff95_label_1 = get_metric('valid_hd95_per_label_1', round_num, aggregator.tensor_db) - # hausdorff95_label_2 = get_metric('valid_hd95_per_label_2', round_num, aggregator.tensor_db) - # hausdorff95_label_4 = get_metric('valid_hd95_per_label_4', round_num, aggregator.tensor_db) - - # update best score - if best_dice < round_dice: - best_dice = round_dice - # Set the weights for the final model - if round_num == 0: - # here the initial model was validated (temp model does not exist) - logger.info(f'Skipping best model saving to disk as it is a random initialization.') - elif not os.path.exists(f'checkpoint/{checkpoint_folder}/temp_model.pkl'): - raise ValueError(f'Expected temporary model at: checkpoint/{checkpoint_folder}/temp_model.pkl to exist but it was not found.') - else: - # here the temp model was the one validated - shutil.copyfile(src=f'checkpoint/{checkpoint_folder}/temp_model.pkl',dst=f'checkpoint/{checkpoint_folder}/best_model.pkl') - logger.info(f'Saved model with best average binary DICE: {best_dice} to ~/.local/workspace/checkpoint/{checkpoint_folder}/best_model.pkl') + if plan.config['task_runner']['settings']['gandlf_config']['problem_type'] == 'segmentation': + round_dice = get_metric('valid_dice', round_num, aggregator.tensor_db) + # dice_label_0 = get_metric('valid_dice_per_label_0', round_num, aggregator.tensor_db) + # dice_label_1 = get_metric('valid_dice_per_label_1', round_num, aggregator.tensor_db) + # dice_label_2 = get_metric('valid_dice_per_label_2', round_num, aggregator.tensor_db) + # dice_label_4 = get_metric('valid_dice_per_label_4', round_num, aggregator.tensor_db) + # if include_validation_with_hausdorff: + # hausdorff95_label_0 = get_metric('valid_hd95_per_label_0', round_num, aggregator.tensor_db) + # hausdorff95_label_1 = get_metric('valid_hd95_per_label_1', round_num, aggregator.tensor_db) + # hausdorff95_label_2 = get_metric('valid_hd95_per_label_2', round_num, aggregator.tensor_db) + # hausdorff95_label_4 = get_metric('valid_hd95_per_label_4', round_num, aggregator.tensor_db) + + # update best score + if best_score < round_dice: + best_score = round_dice + # Set the weights for the final model + if round_num == 0: + # here the initial model was validated (temp model does not exist) + logger.info(f'Skipping best model saving to disk as it is a random initialization.') + elif not os.path.exists(f'checkpoint/{checkpoint_folder}/temp_model.pkl'): + raise ValueError(f'Expected temporary model at: checkpoint/{checkpoint_folder}/temp_model.pkl to exist but it was not found.') + else: + # here the temp model was the one validated + shutil.copyfile(src=f'checkpoint/{checkpoint_folder}/temp_model.pkl',dst=f'checkpoint/{checkpoint_folder}/best_model.pkl') + logger.info(f'Saved model with best average binary DICE: {best_score} to ~/.local/workspace/checkpoint/{checkpoint_folder}/best_model.pkl') + + round_score = round_dice + + if plan.config['task_runner']['settings']['gandlf_config']['problem_type'] == 'classification': + round_f1 = get_metric('valid_f1', round_num, aggregator.tensor_db) + + # update best score + if best_score < round_f1: + best_score = round_f1 + # Set the weights for the final model + if round_num == 0: + # here the initial model was validated (temp model does not exist) + logger.info(f'Skipping best model saving to disk as it is a random initialization.') + elif not os.path.exists(f'checkpoint/{checkpoint_folder}/temp_model.pkl'): + raise ValueError(f'Expected temporary model at: checkpoint/{checkpoint_folder}/temp_model.pkl to exist but it was not found.') + else: + # here the temp model was the one validated + shutil.copyfile(src=f'checkpoint/{checkpoint_folder}/temp_model.pkl', dst=f'checkpoint/{checkpoint_folder}/best_model.pkl') + logger.info(f'Saved model with best average binary F1: {best_score} to ~/.local/workspace/checkpoint/{checkpoint_folder}/best_model.pkl') + + round_score = round_f1 + ## RUN VALIDATION ON INTERMEDIATE CONSENSUS MODEL # set the task_runner data loader @@ -533,11 +556,11 @@ def run_challenge_experiment(aggregation_function, ## CONVERGENCE METRIC COMPUTATION # update the auc score - best_dice_over_time_auc += best_dice * round_time + best_score_over_time_auc += best_score * round_time # project the auc score as remaining time * best dice # this projection assumes that the current best score is carried forward for the entire week - projected_auc = (MAX_SIMULATION_TIME - total_simulated_time) * best_dice + best_dice_over_time_auc + projected_auc = (MAX_SIMULATION_TIME - total_simulated_time) * best_score + best_score_over_time_auc projected_auc /= MAX_SIMULATION_TIME # End of round summary @@ -558,7 +581,7 @@ def run_challenge_experiment(aggregation_function, experiment_results['round'].append(round_num) experiment_results['time'].append(total_simulated_time) experiment_results['convergence_score'].append(projected_auc) - experiment_results['round_dice'].append(round_dice) + experiment_results['round_score'].append(round_score) # experiment_results['dice_label_0'].append(dice_label_0) # experiment_results['dice_label_1'].append(dice_label_1) # experiment_results['dice_label_2'].append(dice_label_2) @@ -576,8 +599,8 @@ def run_challenge_experiment(aggregation_function, save_checkpoint(checkpoint_folder, aggregator, collaborator_names, collaborators, round_num, collaborator_time_stats, - total_simulated_time, best_dice, - best_dice_over_time_auc, + total_simulated_time, best_score, + best_score_over_time_auc, collaborators_chosen_each_round, collaborator_times_per_round, experiment_results, From e0f0891820f446c07033af2ec40cb11d6067d368 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Thu, 31 Oct 2024 23:22:38 -0400 Subject: [PATCH 15/19] generate_Preds for classification is functional --- Task_1/fets_challenge/gandlf_csv_adapter.py | 60 +++++++++++++++++---- Task_1/fets_challenge/inference.py | 8 +-- Task_1/generate_predictions.py | 10 ++-- Task_1/utils/inspect_pickled_model.py | 22 ++++++++ Task_2/README.md | 1 + 5 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 Task_1/utils/inspect_pickled_model.py create mode 100644 Task_2/README.md diff --git a/Task_1/fets_challenge/gandlf_csv_adapter.py b/Task_1/fets_challenge/gandlf_csv_adapter.py index 39b9cd5..59c60d6 100644 --- a/Task_1/fets_challenge/gandlf_csv_adapter.py +++ b/Task_1/fets_challenge/gandlf_csv_adapter.py @@ -108,6 +108,7 @@ def construct_fedsim_csv(pardir, split_subdirs_path, percent_train, federated_simulation_train_val_csv_path, + problem_type, training_and_validation=True): # read in the csv defining the subdirs per institution @@ -159,15 +160,56 @@ def construct_fedsim_csv(pardir, train_val_headers=train_val_headers, numeric_header_name_to_key=numeric_header_name_to_key) else: - df = construct_validation_dataframe(paths_dict=paths_dict, - val_headers=val_headers, - numeric_header_name_to_key=numeric_header_name_to_key) + if problem_type == "classification": + df = construct_validation_dataframe_classification(paths_dict=paths_dict, + val_headers=val_headers, + numeric_header_name_to_key=numeric_header_name_to_key) + elif problem_type == "segmentation": + df = construct_validation_dataframe_segmentation(paths_dict=paths_dict, + val_headers=val_headers, + numeric_header_name_to_key=numeric_header_name_to_key) return df df.to_csv(federated_simulation_train_val_csv_path, index=False) return list(sorted(df.Partition_ID.unique())) -def construct_validation_dataframe(paths_dict, val_headers, numeric_header_name_to_key): + +def construct_validation_dataframe_classification(paths_dict, val_headers, numeric_header_name_to_key): + # Define a mapping for channel labels + channel_label_mapping = { + 'Channel_0': 0, # t1 + 'Channel_1': 1, # t2 + 'Channel_2': 2, # flair + 'Channel_3': 3 # t1ce + } + + # Initialize list to store rows in the new format + rows = [] + + for inst_name, inst_paths_dict in paths_dict.items(): + for usage in ['train', 'val']: + for key_to_fpath in inst_paths_dict[usage]: + subject_id = key_to_fpath['Subject_ID'] + + # Iterate through each channel to create a separate row for each + for header in val_headers: + if header != 0: # Skip SubjectID, as it's handled separately + channel_key = f"Channel_{header - 1}" # Map header to 'Channel_0', 'Channel_1', etc. + channel_path = key_to_fpath[numeric_header_name_to_key[header]] + value_to_predict = channel_label_mapping[channel_key] + + # Append a row with the final headers format + rows.append({ + 'SubjectID': subject_id, + 'Channel': channel_path, + 'ValueToPredict': value_to_predict + }) + + # Convert the list of rows into a DataFrame + df = pd.DataFrame(rows, dtype=str) + return df + +def construct_validation_dataframe_segmentation(paths_dict, val_headers, numeric_header_name_to_key): # intitialize columns columns = {str(header): [] for header in val_headers} @@ -193,8 +235,6 @@ def construct_validation_dataframe(paths_dict, val_headers, numeric_header_name_ '4': 'Channel_3'}) return df - - def extract_segmentation_csv_partitions(csv_path): df = pd.read_csv(csv_path) df = df.rename(columns={'0': 'SubjectID', '1': 'Channel_0', @@ -270,10 +310,10 @@ def extract_classification_csv_partitions(csv_path): transformed_csv_dict[str(col)]['val'] = pd.DataFrame(val_list) # # Prints for easy debugging - # print(f"\n=== Sample of Partition {col} - Train Data ===") - # transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) + print(f"\n=== Sample of Partition {col} - Train Data ===") + transformed_csv_dict[str(col)]['train'].head(10).to_csv(sys.stdout, index=False) - # print(f"\n=== Sample of Partition {col} - Validation Data ===") - # transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) + print(f"\n=== Sample of Partition {col} - Validation Data ===") + transformed_csv_dict[str(col)]['val'].head(10).to_csv(sys.stdout, index=False) return transformed_csv_dict diff --git a/Task_1/fets_challenge/inference.py b/Task_1/fets_challenge/inference.py index 732fa5c..560bbf6 100644 --- a/Task_1/fets_challenge/inference.py +++ b/Task_1/fets_challenge/inference.py @@ -71,7 +71,7 @@ def get_binarized_and_belief(array, threshold=0.5): return binarized, belief -def generate_validation_csv(data_path, validation_csv_filename, working_dir): +def generate_validation_csv(data_path, validation_csv_filename, working_dir, problem_type): """ Create the validation CSV to be consumed by the FeTSChallengeTaskRunner """ @@ -80,7 +80,8 @@ def generate_validation_csv(data_path, validation_csv_filename, working_dir): validation_csv_path, 0.0, 'placeholder', - training_and_validation=False) + training_and_validation=False, + problem_type=problem_type) os.makedirs(os.path.join(working_dir, 'inference_col'), exist_ok=True) validation_csv_dict.to_csv(os.path.join(working_dir, 'inference_col', 'valid.csv'),index=False) @@ -205,6 +206,7 @@ def model_outputs_to_disc(data_path, validation_csv, output_path, native_model_path, + problem_type, outputtag='', device='cpu'): @@ -219,7 +221,7 @@ def model_outputs_to_disc(data_path, path.append(str(root)) path.insert(0, str(work)) - generate_validation_csv(data_path,validation_csv, working_dir=work) + generate_validation_csv(data_path,validation_csv, working_dir=work, problem_type=problem_type) overrides = { 'task_runner.settings.device': device, diff --git a/Task_1/generate_predictions.py b/Task_1/generate_predictions.py index 872a62a..de7d9b7 100644 --- a/Task_1/generate_predictions.py +++ b/Task_1/generate_predictions.py @@ -12,7 +12,7 @@ from pathlib import Path import os from sys import path -from fets_challenge.gandlf_csv_adapter import construct_fedsim_csv, extract_csv_partitions +# from fets_challenge.gandlf_csv_adapter import construct_fedsim_csv, extract_classification_csv_partitions device='cpu' @@ -21,15 +21,16 @@ # you will need to specify the correct experiment folder and the parent directory for # the data you want to run inference over -checkpoint_folder='experiment_1' +checkpoint_folder='experiment_109' +print(f"inference for {checkpoint_folder}") #data_path = -data_path = '/raid/datasets/FeTS22/MICCAI_FeTS2022_ValidationData' +data_path = '/home/locolinux2/datasets/RSNA_ASNR_MICCAI_BraTS2021_TestingData' # you can keep these the same if you wish best_model_path = os.path.join(home, '.local/workspace/checkpoint', checkpoint_folder, 'best_model.pkl') outputs_path = os.path.join(home, '.local/workspace/checkpoint', checkpoint_folder, 'model_outputs') -validation_csv_filename='validation.csv' +validation_csv_filename='final_test.csv' # Using this best model, we can now produce NIfTI files for model outputs @@ -39,5 +40,6 @@ validation_csv=validation_csv_filename, output_path=outputs_path, native_model_path=best_model_path, + problem_type='classification', outputtag='', device=device) diff --git a/Task_1/utils/inspect_pickled_model.py b/Task_1/utils/inspect_pickled_model.py new file mode 100644 index 0000000..0151014 --- /dev/null +++ b/Task_1/utils/inspect_pickled_model.py @@ -0,0 +1,22 @@ +import pickle + +# Path to the pickle file +pickle_file_path = '/home/locolinux2/.local/workspace/checkpoint/experiment_109/best_model.pkl' + +# Function to load and inspect the pickle file +def load_pickle(file_path): + try: + with open(file_path, 'rb') as f: + model_data = pickle.load(f) + print("Pickle file loaded successfully.") + return model_data + except Exception as e: + print(f"Error loading pickle file: {e}") + return None + +# Load the model +model_data = load_pickle(pickle_file_path) + +# Inspect the model (print relevant information) +if model_data: + print("Model Data: ", model_data) diff --git a/Task_2/README.md b/Task_2/README.md new file mode 100644 index 0000000..556ca80 --- /dev/null +++ b/Task_2/README.md @@ -0,0 +1 @@ +Task 2 is still available on this link: https://github.com/FeTS-AI/Challenge/tree/2022/Task_2 \ No newline at end of file From 368029fa93d63d0f990284f97dd9eb18bf52331d Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Wed, 6 Nov 2024 15:22:39 -0500 Subject: [PATCH 16/19] removed egg-info --- Task_1/fets_challenge.egg-info/PKG-INFO | 115 ------------------ Task_1/fets_challenge.egg-info/SOURCES.txt | 29 ----- .../dependency_links.txt | 1 - Task_1/fets_challenge.egg-info/requires.txt | 3 - Task_1/fets_challenge.egg-info/top_level.txt | 2 - 5 files changed, 150 deletions(-) delete mode 100644 Task_1/fets_challenge.egg-info/PKG-INFO delete mode 100644 Task_1/fets_challenge.egg-info/SOURCES.txt delete mode 100644 Task_1/fets_challenge.egg-info/dependency_links.txt delete mode 100644 Task_1/fets_challenge.egg-info/requires.txt delete mode 100644 Task_1/fets_challenge.egg-info/top_level.txt diff --git a/Task_1/fets_challenge.egg-info/PKG-INFO b/Task_1/fets_challenge.egg-info/PKG-INFO deleted file mode 100644 index 0566eb6..0000000 --- a/Task_1/fets_challenge.egg-info/PKG-INFO +++ /dev/null @@ -1,115 +0,0 @@ -Metadata-Version: 2.1 -Name: fets_challenge -Version: 2.0 -Summary: FeTS Challenge Part 1 -Home-page: https://github.com/FETS-AI/Challenge -Author: Sarthak Pati and Ujjwal Baid and Maximilian Zenk and Brandon Edwards and Micah Sheller and G. Anthony Reina and Patrick Foley and Alexey Gruzdev and Jason Martin and Shadi Albarqouni and Yong Chen and Russell Taki Shinohara and Annika Reinke and David Zimmerer and John B. Freymann and Justin S. Kirby and Christos Davatzikos and Rivka R. Colen and Aikaterini Kotrotsou and Daniel Marcus and Mikhail Milchenko and Arash Nazer and Hassan Fathallah-Shaykh and Roland Wiest Andras Jakab and Marc-Andre Weber and Abhishek Mahajan and Lena Maier-Hein and Jens Kleesiek and Bjoern Menze and Klaus Maier-Hein and Spyridon Bakas -Classifier: Environment :: Console -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence -Classifier: Topic :: Scientific/Engineering :: Image Recognition -Classifier: License :: OSI Approved :: FETS UI License -Classifier: Programming Language :: Python :: 3 -Requires-Python: >=3.9 -Description-Content-Type: text/markdown -License-File: LICENSE -Requires-Dist: openfl@ git+https://github.com/securefederatedai/openfl.git@kta-intel/fets-2024-patch-1 -Requires-Dist: GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.1.0 -Requires-Dist: fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge - -# FeTS 2024+ Challenge Task 1 -Task 1 (**"Federated Training"**) aims at effective weight aggregation methods for the creation of a consensus model given a pre-defined segmentation algorithm for training, while also (optionally) accounting for network outages. - -Please ask any additional questions in our discussion pages on our github site and we will try to update this README.md as we identify confusions/gaps in our explanations and instructions. - -## Getting started - -### System requirements - -1. [Git](https://git-scm.com/downloads) -2. [Git LFS](https://github.com/git-lfs/git-lfs#downloading) -2. Python with virtual environment management system: we recommend using [Anaconda](https://www.anaconda.com/products/individual). -3. **Windows- Only**: Pickle5 requires Microsoft C++ 14.0 or greater from the [C++ build tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/). -> * _Note: if you run into ```UnicodeDecodeError``` during installation, trying pinning ```openfl @ git+https://github.com/intel/openfl.git@v1.4``` in [setup.py](https://github.com/FeTS-AI/Challenge/blob/main/Task_1/setup.py#L31)_ -4. Use CUDA 11 for your installation as CUDA 12 is not compatible with this codebase. - -### Instructions --- IMPORTANT - -1. Register for the FeTS 2022 Challenge [here](https://www.synapse.org/#!Synapse:syn28546456/wiki/617093) and submit a data request. -2. ```git clone https://github.com/FETS-AI/Challenge.git``` -3. ```cd Challenge/Task_1``` -4. ```git lfs pull``` -5. Create virtual environment (python 3.9): using Anaconda, a new environment can be created and activated using the following commands: - ```sh - ## create venv in specific path - conda create -p ./venv python=3.9 -y - conda activate ./venv - ``` -6. ```pip install --upgrade pip``` -7. Install Pytorch (2.3.1) for your system: - ```pip install torch==2.3.1 torchvision==0.18.1``` -*Note all previous versions of pytorch can be found in these instructions:[https://pytorch.org/get-started/previous-versions/](https://pytorch.org/get-started/previous-versions/) -8. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) -9. ```pip install .``` -> * _Note: if you run into ```ERROR: Failed building wheel for SimpleITK```, try running ```pip install SimpleITK --only-binary :all:``` then rerunning ```pip install .```_ -10. ```python FeTS_Challenge.py``` -> * _Note: if you run into ```ImportError: /home/locolinux/FETS2024/fets2024env/bin/../lib/libstdc++.so.6: version GLIBCXX_3.4.30' not found (required by /home/locolinux/FETS2024/fets2024env/lib/python3.7/site-packages/SimpleITK/_SimpleITK.so)```, try installing a previous version of SimpleITK (version 2.2.0 works) -11. All lower-level details are in the [FeTS Challenge python file](./FeTS_Challenge.py) -12. To view intermediate results with TensorBoard during training, you can run the following command: ```tensorboard --logdir ~/.local/workspace/logs/tensorboard``` - -## Time to Convergence Metric (formerly "communication cost") -Along with the typical DICE and Hausdorff metrics, we include a "time to convergence metric" intended to encourage solutions that converge to good scores quickly in terms of time. We simulate the time taken to run each round so that competitors don't need to be concerned with runtime optimizations such as compiled vs. interpreted code, and so that final scoring will not depend on the hardware used. This simulated time is computed in the experiment.py file and provided in the metrics output of the experiment execution. - -The time to convergence metric will be computed as the area under the validation learning curve over 1 week of simulated time where the horizontal axis measures simulated runtime and the vertical axis measures the current best score, computed as the average of enhancing tumor, tumor core, and whole tumor DICE scores over the validation split of the training data. - -You can find the code for the "time to convergence metric" in the experiment.py file by searching for ## CONVERGENCE METRIC COMPUTATION. - -### How Simulated Time is computed -The simulated time is stochastic, and computed per collaborator, per round, with the round time equaling the greatest round time of all collaborators in the round. - -A given collaborator's round time is computed as the sum of: -- The simulated time taken to download the shared model -- The simulated time taken to validate the shared model -- The simulated time taken to train the model (if training) -- The simulated time taken to validate that collaborator's trained model (if training) -- The simulated time taken to upload that collaborator's model update (if training) - -During the experiment, to generate these simulated times, we first assign each collaborator four normal distrubitions representing: -1. download speed -2. upload speed -3. training speed -4. validation speed - -We then draw from the appropriate distribution when generating one of the times listed above (at each round). - -We assign these network and compute distributions by drawing uniform-randomly from lists of normal distributions created using timing information collected from a subset of the 50+ participants in the May FeTS initiative training of this same model. In this way, the statistics used to simulate timing information come from timing information collected over an actual federation of hospitals that trained this exact model. In particular, for each actual hospital in our subset, we collected: -1. The mean and stdev seconds to download the model -2. The mean and stdev seconds to train a batch -3. The mean and stdev seconds to validate a batch -4. The mean and stdev seconds to upload the model. - -For a given collaborator, these normal distributions are constant throughout the experiment. Again, each possible timing distribution is based on actual timing information from a subset of the hospitals in the FeTS intitiative. You can find these distributions in the experiment.py file (search for ## COLLABORATOR TIMING DISTRIBUTIONS), as well as the random seed used to ensure reproducibility. - -### Use in Ranking - -For ranking of multidimensional outcomes (or metrics), for each team, we will compute the summation of their ranks across the average of the **7** metrics (i.e., time to convergence, and Dice & Hausdorff from 3 regions of interest) described as a univariate overall summary measure. This measure will decide the overall ranking for each specific team. Notably, since all teams are ranked per patient, whereas the communication cost is only accounted once for the complete training phase, the communication cost **will be weighted** according to the number of testing subjects in order to give it **equal importance** to the quality of the tumor segmentations. - - -## Data Partitioning and Sharding -The FeTS 2022 data release consists of a training set and two CSV files - each providing information for how to partition the training data into non-IID institutional subsets. The release will contain subfolders for single patient records whose names have the format `FeTS2022_###`, and two CSV files: -- **partitioning_1.csv** -- **partitioning_2.csv** - -Each of the partitioning CSV files has two columns, `Partition_ID` and `Subject_ID`. The Subject_ID column exhausts of the patient records contained in the release. The InstitutionName column provides an integer identifier indicating to which institution the record should be assigned. The path to a partition CSV can be provided as the value of the parameter ```institution_split_csv_filename``` to the jupyter notebook function run_challenge_experiment to specify the institutional split used when running experimental federated training on your custom federation logic. A description of each of these split CSVs is provided in Table 1. We encourage participants to create and explore training performance for other non-IID splits of the training data to help in developing generalizable customizations to the federated logic that will perform well during the validation and testing phase. A third CSV is hidden from participants and defines a test partitioning to be used in the challenge testing phase. This hidden partitioning (also described in Table 1) is another refinement of the institution split, having similar difficulty level to the institution tumor size split in our own experiments using the default customization functions. - -Table 1: Information for partitionings provided in the FeTS 2022 data release as well as the hidden partitioning not provided in the release (to be used in the competition testing phase). - -| Split name | CSV filename | Description | Number of institutions | -|-------------------------------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------| -| Institution Split | partitioning_1.csv | Split of FeTS 2022 training data by originating institution. | 23 | -| Institution Tumor Size Split | partitioning_2.csv | Refinement of the institution split by tumor size, further splitting the larger institutions according to whether a record’s tumor size fell above or below the mean size for that institution. | 33 | -| Test Split | - not provided - | Undisclosed refinement of the institution split. | Hidden from participants | - - - diff --git a/Task_1/fets_challenge.egg-info/SOURCES.txt b/Task_1/fets_challenge.egg-info/SOURCES.txt deleted file mode 100644 index d39e899..0000000 --- a/Task_1/fets_challenge.egg-info/SOURCES.txt +++ /dev/null @@ -1,29 +0,0 @@ -LICENSE -MANIFEST.in -README.md -setup.py -fets_challenge/__init__.py -fets_challenge/checkpoint_utils.py -fets_challenge/custom_aggregation_wrapper.py -fets_challenge/experiment.py -fets_challenge/gandlf_csv_adapter.py -fets_challenge/inference.py -fets_challenge/spec_sens_code.py -fets_challenge.egg-info/PKG-INFO -fets_challenge.egg-info/SOURCES.txt -fets_challenge.egg-info/dependency_links.txt -fets_challenge.egg-info/requires.txt -fets_challenge.egg-info/top_level.txt -openfl-workspace/fets_challenge_workspace/partitioning_1.csv -openfl-workspace/fets_challenge_workspace/partitioning_2.csv -openfl-workspace/fets_challenge_workspace/requirements.txt -openfl-workspace/fets_challenge_workspace/small_split.csv -openfl-workspace/fets_challenge_workspace/smaller_split.csv -openfl-workspace/fets_challenge_workspace/validation.csv -openfl-workspace/fets_challenge_workspace/plan/cols.yaml -openfl-workspace/fets_challenge_workspace/plan/data.yaml -openfl-workspace/fets_challenge_workspace/plan/defaults -openfl-workspace/fets_challenge_workspace/plan/plan.yaml -openfl-workspace/fets_challenge_workspace/src/__init__.py -openfl-workspace/fets_challenge_workspace/src/challenge_assigner.py -openfl-workspace/fets_challenge_workspace/src/fets_challenge_model.py \ No newline at end of file diff --git a/Task_1/fets_challenge.egg-info/dependency_links.txt b/Task_1/fets_challenge.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/Task_1/fets_challenge.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Task_1/fets_challenge.egg-info/requires.txt b/Task_1/fets_challenge.egg-info/requires.txt deleted file mode 100644 index 72ddcc1..0000000 --- a/Task_1/fets_challenge.egg-info/requires.txt +++ /dev/null @@ -1,3 +0,0 @@ -openfl@ git+https://github.com/securefederatedai/openfl.git@kta-intel/fets-2024-patch-1 -GANDLF@ git+https://github.com/CBICA/GaNDLF.git@0.1.0 -fets@ git+https://github.com/FETS-AI/Algorithms.git@fets_challenge diff --git a/Task_1/fets_challenge.egg-info/top_level.txt b/Task_1/fets_challenge.egg-info/top_level.txt deleted file mode 100644 index 7ad31f7..0000000 --- a/Task_1/fets_challenge.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -fets_challenge -openfl-workspace From 558b398d4715917de49cb9fff7565dd928903cfc Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Thu, 7 Nov 2024 13:28:35 -0500 Subject: [PATCH 17/19] default to segmentation --- Task_1/generate_predictions.py | 45 ----------- .../fets_challenge_workspace/plan/plan.yaml | 81 +++++++++++-------- 2 files changed, 46 insertions(+), 80 deletions(-) delete mode 100644 Task_1/generate_predictions.py diff --git a/Task_1/generate_predictions.py b/Task_1/generate_predictions.py deleted file mode 100644 index de7d9b7..0000000 --- a/Task_1/generate_predictions.py +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -# # FeTS Challenge -# -# Contributing Authors (alphabetical order): -# - Brandon Edwards (Intel) -# - Patrick Foley (Intel) -# - Micah Sheller (Intel) - -from fets_challenge import model_outputs_to_disc -from pathlib import Path -import os -from sys import path -# from fets_challenge.gandlf_csv_adapter import construct_fedsim_csv, extract_classification_csv_partitions - -device='cpu' - -# infer participant home folder -home = str(Path.home()) - -# you will need to specify the correct experiment folder and the parent directory for -# the data you want to run inference over -checkpoint_folder='experiment_109' -print(f"inference for {checkpoint_folder}") -#data_path = -data_path = '/home/locolinux2/datasets/RSNA_ASNR_MICCAI_BraTS2021_TestingData' - -# you can keep these the same if you wish -best_model_path = os.path.join(home, '.local/workspace/checkpoint', checkpoint_folder, 'best_model.pkl') -outputs_path = os.path.join(home, '.local/workspace/checkpoint', checkpoint_folder, 'model_outputs') - -validation_csv_filename='final_test.csv' - - -# Using this best model, we can now produce NIfTI files for model outputs -# using a provided data directory - -model_outputs_to_disc(data_path=data_path, - validation_csv=validation_csv_filename, - output_path=outputs_path, - native_model_path=best_model_path, - problem_type='classification', - outputtag='', - device=device) diff --git a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml index ceb1b85..912c614 100644 --- a/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml +++ b/Task_1/openfl-workspace/fets_challenge_workspace/plan/plan.yaml @@ -23,68 +23,79 @@ data_loader : defaults : plan/defaults/data_loader.yaml template : openfl.federated.data.loader_gandlf.GaNDLFDataLoaderWrapper settings : - feature_shape : [128,128,64] #[32,32,32] + feature_shape : [32, 32, 32] task_runner : template : src.fets_challenge_model.FeTSChallengeModel settings : - # train_csv : cla_test_train.csv - # val_csv : cla_test_val.csv + train_csv : seg_test_train.csv + val_csv : seg_test_val.csv device : cpu gandlf_config : - problem_type: classification #segmentation, classification - # label: None - # clip_mode: norm - # clip_grad: 0.1 - output_dir: '.' - - batch_size: 8 + batch_size: 1 + clip_mode: norm + clip_grad: 0.1 data_augmentation: {} - data_preprocessing: {} + data_postprocessing: {} + data_preprocessing: + normalize: None + enable_padding: false in_memory: false + inference_mechanism : + grid_aggregator_overlap: crop + patch_overlap: 0 learning_rate: 0.001 - loss_function: cel + loss_function: dc + medcam_enabled: false + output_dir: '.' metrics: - - classification_accuracy - - recall - - precision - - f1 - modality: rad + - dice + # - dice_per_label + # - hd95_per_label model: - amp: false - onnx_export: false - architecture: densenet121 - base_filters: 16 + amp: true + architecture: resunet + base_filters: 32 class_list: - - '0' - - '1' - - '2' - - '3' + - 0 + - 1 + - 2 + - 4 dimension: 3 final_layer: softmax - num_channels: 1 + ignore_label_validation: None norm_type: instance - weighted_loss: false - num_epochs: 500 nested_training: testing: 1 - validation: -4 ## these are 4 because there is one site (i.e., Site3) that has only 4 samples. - optimizer: adam - patch_sampler: uniform + validation: -5 + num_epochs: 1 + optimizer: + type: sgd + parallel_compute_command: '' + patch_sampler: label patch_size: - - 128 - - 128 + - 64 + - 64 - 64 patience: 100 + pin_memory_dataloader: false + print_rgb_label_warning: true q_max_length: 100 q_num_workers: 0 q_samples_per_volume: 40 q_verbose: false - save_masks: false - scheduler: triangle + save_output: false + save_training: false + scaling_factor: 1 + scheduler: + type: triangle_modified + track_memory_usage: false + verbose: false version: maximum: 0.1.0 minimum: 0.0.14 + weighted_loss: true + modality: rad network : From 999a051cb15dd1e4e2fc1f9d2134da0bd7e1e724 Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Fri, 8 Nov 2024 16:14:00 -0500 Subject: [PATCH 18/19] Update Task_1/README.md Co-authored-by: Sarthak Pati --- Task_1/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Task_1/README.md b/Task_1/README.md index 168f753..d6798a4 100644 --- a/Task_1/README.md +++ b/Task_1/README.md @@ -29,7 +29,7 @@ Please ask any additional questions in our discussion pages on our github site a 6. ```pip install --upgrade pip``` 7. Install Pytorch (2.3.1) for your system: ```pip install torch==2.3.1 torchvision==0.18.1``` -*Note all previous versions of pytorch can be found in these instructions:[https://pytorch.org/get-started/previous-versions/](https://pytorch.org/get-started/previous-versions/) +*Note all previous versions of pytorch can be found in [this link](https://pytorch.org/get-started/previous-versions/#v231). 8. Set the environment variable `SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True` (to avoid sklearn deprecation error) 9. ```pip install .``` > * _Note: if you run into ```ERROR: Failed building wheel for SimpleITK```, try running ```pip install SimpleITK --only-binary :all:``` then rerunning ```pip install .```_ From 9c8e985f69caefabc43da5e6927ef043c21f7d1a Mon Sep 17 00:00:00 2001 From: Akis Linardos Date: Fri, 8 Nov 2024 16:18:15 -0500 Subject: [PATCH 19/19] committed gitignore --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59ad75f --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +Task_1/venv/* +Task_1/my_code +Task_1/ucb_r* +Task_1/fets_challenge/__pycache__/* +*pycache* +Task_1/cert*