From 28629aa16846678786bcbd2a0ec467a39a9d8ecc Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 1 Dec 2022 15:47:26 +0100 Subject: [PATCH 01/24] fix: Train features json - WIP fixing a bug within CAPICE in correlation to the train features json Closes #118 Closes #139 --- src/molgenis/capice/main_capice.py | 10 ++++-- src/molgenis/capice/main_predict.py | 2 +- src/molgenis/capice/main_train.py | 4 +-- .../capice/utilities/manual_vep_processor.py | 35 ++++++++++++++++--- 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index bcd9ec95..f3893164 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -65,13 +65,17 @@ def _load_file(self, additional_required_features: list = None): return input_file @staticmethod - def process(loaded_data): + def process(loaded_data, process_json: dict | None = None, + return_features_origin: bool = False): """ Function to process the VEP features to CAPICE features. """ processor = ManualVEPProcessor() - processed_data = processor.process(dataset=loaded_data) - return processed_data + processed_data = processor.process(dataset=loaded_data, process_json=process_json) + if return_features_origin: + return processed_data, processor.get_feature_process_outputs() + else: + return processed_data def preprocess(self, loaded_data, model_features=None): """ diff --git a/src/molgenis/capice/main_predict.py b/src/molgenis/capice/main_predict.py index a45e0422..a381cd44 100644 --- a/src/molgenis/capice/main_predict.py +++ b/src/molgenis/capice/main_predict.py @@ -33,7 +33,7 @@ def run(self): capice_data = self.apply_suggested_class(predicted_data=capice_data) self._export(dataset=capice_data, output=self.output) - def process(self, loaded_data): + def process(self, loaded_data, process_json: dict | None = None): """ Function to process the VEP file to a CAPICE file """ diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index d05115ab..02b3c9c4 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -22,7 +22,7 @@ def __init__(self, input_path, json_path, test_split, output_path, output_given, # Impute JSON. self.json_path = json_path - self.log.debug('Input impute JSON confirmed: %s', self.json_path) + self.log.debug('Input model features JSON confirmed: %s', self.json_path) # Train test size. self.train_test_size = test_split @@ -54,9 +54,9 @@ def run(self): order to create new CAPICE models. """ data = self._load_file(additional_required_features=self.additional_required) - data = self.process(loaded_data=data) with open(self.json_path, 'rt') as impute_values_file: json_dict = json.load(impute_values_file) + data = self.process(loaded_data=data, process_json=json_dict) self._validate_impute_complete(data, json_dict) processed_data = self.preprocess(loaded_data=data) diff --git a/src/molgenis/capice/utilities/manual_vep_processor.py b/src/molgenis/capice/utilities/manual_vep_processor.py index 45cc8487..d98cd30e 100644 --- a/src/molgenis/capice/utilities/manual_vep_processor.py +++ b/src/molgenis/capice/utilities/manual_vep_processor.py @@ -15,22 +15,37 @@ class ManualVEPProcessor: def __init__(self): self.log = Logger().logger + self.feature_processing_outputs = {} - def process(self, dataset: pd.DataFrame): + def process(self, dataset: pd.DataFrame, process_json: dict | None = None) -> pd.DataFrame: """ Callable method for the ManualVEPProcessor to start processing. Loads all the VEP processors dynamically from /src/main/python/vep. - :param dataset: pandas.DataFrame: loaded pandas dataframe of the user - provided input TSV. - :return: pandas.DataFrame: dataframe with processed features + + Args: + dataset: The input dataset over which the VEP features should be processed. + process_json: The input train_features json. + + Returns: + pandas.DataFrame: The input dataset, processed on the consequences + """ self.log.info('Starting manual VEP feature processing.') vep_annotators = self._load_vep_processors() + if process_json is None: + processable_features = dataset.columns + else: + processable_features = process_json.keys() dropping_columns = [] n_feats_processed = 0 for processor in vep_annotators: - if processor.name in dataset.columns and processor.usable: + if ( + processor.name in dataset.columns and + processor.name in processable_features and + processor.usable + ): self.log.debug('Processing: %s', processor.name) + self.feature_processing_outputs[processor.name] = processor.columns dataset = processor.process(dataset) if processor.drop and processor.name not in dropping_columns: dropping_columns.append(processor.name) @@ -43,6 +58,16 @@ def process(self, dataset: pd.DataFrame): self.log.debug('Processed %d features.', n_feats_processed) return dataset + def get_feature_process_outputs(self) -> dict: + """ + Getter for the dictionary containing the VEP feature (key) and + the features that are processed out of that VEP feature (value) + + Returns: + dict: VEP feature (key) and the features that origin from it (value) + """ + return self.feature_processing_outputs + def _load_vep_processors(self): location = os.path.join(get_project_root_dir(), 'vep') self.log.debug('Loading modules at %s', location) From 76120bcc900df8bf0aefafc7d00d98042dd18b1c Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Tue, 6 Dec 2022 08:29:16 +0100 Subject: [PATCH 02/24] - Progress made --- src/molgenis/capice/main_capice.py | 34 ++++++++--------- src/molgenis/capice/main_predict.py | 15 ++++++-- src/molgenis/capice/main_train.py | 38 +++++++++++-------- .../capice/utilities/manual_vep_processor.py | 36 +++++++++++------- src/molgenis/capice/utilities/preprocessor.py | 19 ++++------ .../capice/validators/model_validator.py | 2 +- tests/capice/utilities/test_predict.py | 4 +- tests/capice/utilities/test_predictor.py | 2 +- tests/capice/utilities/test_preprocessing.py | 4 +- 9 files changed, 87 insertions(+), 67 deletions(-) diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index f3893164..169d9508 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -1,11 +1,14 @@ +import typing from abc import ABC, abstractmethod + +import pandas as pd + from molgenis.capice.core.logger import Logger from molgenis.capice.utilities.enums import Column from molgenis.capice.core.capice_manager import CapiceManager from molgenis.capice.utilities.input_parser import InputParser from molgenis.capice.core.capice_exporter import CapiceExporter from molgenis.capice.utilities.preprocessor import PreProcessor -from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor from molgenis.capice.utilities.load_file_postprocessor import LoadFilePostProcessor from molgenis.capice.validators.post_file_parse_validator import PostFileParseValidator @@ -65,26 +68,19 @@ def _load_file(self, additional_required_features: list = None): return input_file @staticmethod - def process(loaded_data, process_json: dict | None = None, - return_features_origin: bool = False): - """ - Function to process the VEP features to CAPICE features. - """ - processor = ManualVEPProcessor() - processed_data = processor.process(dataset=loaded_data, process_json=process_json) - if return_features_origin: - return processed_data, processor.get_feature_process_outputs() - else: - return processed_data - - def preprocess(self, loaded_data, model_features=None): + @abstractmethod + def process(loaded_data, process_features: typing.Collection): + pass + + def preprocess(self, loaded_data, input_features: list, train: bool = False): """ Function to perform the preprocessing of the loaded data to convert categorical columns. :param loaded_data: Pandas dataframe of the imputed CAPICE data - :param model_features: list (default None), a list containing all - the features present within a model file. When set to None, - PreProcessor will activate the train protocol. + :param input_features: list, a list containing either all the features present within a + model file (in case train=False) or a list containing all the features that the user + supplied in the train_features.json (in case train=True). + :param train: bool, whenever the train protocol should be started or not. Note: please adjust self.exclude_features: to include all of the features that the preprocessor should NOT process. @@ -93,7 +89,9 @@ def preprocess(self, loaded_data, model_features=None): """ preprocessor = PreProcessor( exclude_features=self.exclude_features, - model_features=model_features) + input_features=input_features, + train=train + ) capice_data = preprocessor.preprocess(loaded_data) return capice_data diff --git a/src/molgenis/capice/main_predict.py b/src/molgenis/capice/main_predict.py index a381cd44..04c4cf00 100644 --- a/src/molgenis/capice/main_predict.py +++ b/src/molgenis/capice/main_predict.py @@ -1,7 +1,12 @@ +import typing + +import pandas as pd + from molgenis.capice.main_capice import Main from molgenis.capice.utilities.enums import Column from molgenis.capice.utilities.predictor import Predictor from molgenis.capice.utilities.class_suggestor import ClassSuggestor +from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor from molgenis.capice.validators.post_vep_processing_validator import PostVEPProcessingValidator @@ -26,18 +31,20 @@ def run(self): Column.id_source.value, Column.feature.value, Column.feature_type.value]) - capice_data = self.process(loaded_data=capice_data) + capice_data = self.process(loaded_data=capice_data, + process_features=self.model.input_features) capice_data = self.preprocess(loaded_data=capice_data, - model_features=self.model.get_booster().feature_names) + input_features=self.model.get_booster().feature_names) capice_data = self.predict(loaded_data=capice_data) capice_data = self.apply_suggested_class(predicted_data=capice_data) self._export(dataset=capice_data, output=self.output) - def process(self, loaded_data, process_json: dict | None = None): + def process(self, loaded_data, process_features: typing.Collection) -> pd.DataFrame: """ Function to process the VEP file to a CAPICE file """ - processed_data = super().process(loaded_data) + processor = ManualVEPProcessor() + processed_data = processor.process(loaded_data, process_features) validator = PostVEPProcessingValidator(self.model) validator.validate_features_present(processed_data) return processed_data diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 02b3c9c4..9e43bfb2 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -1,4 +1,5 @@ import json +import typing import pandas as pd import xgboost as xgb @@ -9,6 +10,7 @@ from molgenis.capice import __version__ from molgenis.capice.utilities.enums import TrainEnums from molgenis.capice.core.capice_exporter import CapiceExporter +from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor class CapiceTrain(Main): @@ -55,28 +57,34 @@ def run(self): """ data = self._load_file(additional_required_features=self.additional_required) with open(self.json_path, 'rt') as impute_values_file: - json_dict = json.load(impute_values_file) - data = self.process(loaded_data=data, process_json=json_dict) - self._validate_impute_complete(data, json_dict) + train_features = list(json.load(impute_values_file).keys()) + data, vep_input, vep_output = self.process( + loaded_data=data, + process_features=train_features + ) + self._validate_vep_processing_complete(data, train_features) - processed_data = self.preprocess(loaded_data=data) - self._get_processed_features(dataset=processed_data, impute_keys=json_dict.keys()) + processed_data = self.preprocess(loaded_data=data, input_features=train_features, + train=True) + self._get_processed_features(dataset=processed_data, train_features=train_features) processed_train, processed_test = self.split_data(dataset=processed_data, test_size=self.train_test_size) model = self.train(test_set=processed_test, train_set=processed_train) - setattr(model, "model_features", list(json_dict.keys())) + setattr(model, "input_features", train_features) setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) - def _validate_impute_complete(self, dataset, json_dict): - """ + @staticmethod + def process(loaded_data, process_features: typing.Collection) -> (pd.DataFrame, list, list): + processor = ManualVEPProcessor() + processed_data = processor.process(loaded_data, process_features) + process_inputs = processor.get_feature_process_inputs() + process_outputs = processor.get_feature_process_outputs() + return processed_data, process_inputs, process_outputs - :param pd.DataFrame dataset: - :param dict json_dict: - :return: - """ + def _validate_vep_processing_complete(self, dataset, train_features): missing = [] - for key in json_dict.keys(): + for key in train_features: if key not in dataset.columns: missing.append(key) @@ -98,14 +106,14 @@ def split_data(self, dataset, test_size: float): random_state=self.split_random_state) return train, test - def _get_processed_features(self, dataset: pd.DataFrame, impute_keys): + def _get_processed_features(self, dataset: pd.DataFrame, train_features): """ Function to save the columns of a dataset that have been processed and thus are an output column of the CADD annotation. :param dataset: pandas.DataFrame """ for column in dataset.columns: - for feature in impute_keys: + for feature in train_features: if (column == feature or column.startswith(feature)) and \ column not in self.processed_features: self.processed_features.append(column) diff --git a/src/molgenis/capice/utilities/manual_vep_processor.py b/src/molgenis/capice/utilities/manual_vep_processor.py index d98cd30e..c4608ba3 100644 --- a/src/molgenis/capice/utilities/manual_vep_processor.py +++ b/src/molgenis/capice/utilities/manual_vep_processor.py @@ -1,4 +1,5 @@ import os +import typing import pandas as pd @@ -15,16 +16,18 @@ class ManualVEPProcessor: def __init__(self): self.log = Logger().logger - self.feature_processing_outputs = {} + self.feature_processing_inputs = [] + self.feature_processing_outputs = [] - def process(self, dataset: pd.DataFrame, process_json: dict | None = None) -> pd.DataFrame: + def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> pd.DataFrame: """ Callable method for the ManualVEPProcessor to start processing. Loads all the VEP processors dynamically from /src/main/python/vep. Args: dataset: The input dataset over which the VEP features should be processed. - process_json: The input train_features json. + process_features: A collection of all input features that should be used in either + training or predicting over which VEP processing should happen. Returns: pandas.DataFrame: The input dataset, processed on the consequences @@ -32,20 +35,17 @@ def process(self, dataset: pd.DataFrame, process_json: dict | None = None) -> pd """ self.log.info('Starting manual VEP feature processing.') vep_annotators = self._load_vep_processors() - if process_json is None: - processable_features = dataset.columns - else: - processable_features = process_json.keys() dropping_columns = [] n_feats_processed = 0 for processor in vep_annotators: if ( processor.name in dataset.columns and - processor.name in processable_features and + processor.name in process_features and processor.usable ): self.log.debug('Processing: %s', processor.name) - self.feature_processing_outputs[processor.name] = processor.columns + self.feature_processing_inputs.append(processor.name) + self.feature_processing_inputs.extend(processor.columns) dataset = processor.process(dataset) if processor.drop and processor.name not in dropping_columns: dropping_columns.append(processor.name) @@ -58,13 +58,23 @@ def process(self, dataset: pd.DataFrame, process_json: dict | None = None) -> pd self.log.debug('Processed %d features.', n_feats_processed) return dataset - def get_feature_process_outputs(self) -> dict: + def get_feature_process_inputs(self) -> list: """ - Getter for the dictionary containing the VEP feature (key) and - the features that are processed out of that VEP feature (value) + Getter for the list containing the input VEP features that have been processed by one + of the processors available in the ManualVEPProcessor. Returns: - dict: VEP feature (key) and the features that origin from it (value) + list: Input VEP processing features + """ + return self.feature_processing_inputs + + def get_feature_process_outputs(self) -> list: + """ + Getter for the list containing the processed VEP features as output of the + ManualVEPProcessor. + + Returns: + list: Output VEP processed features """ return self.feature_processing_outputs diff --git a/src/molgenis/capice/utilities/preprocessor.py b/src/molgenis/capice/utilities/preprocessor.py index 42bd45a9..b0fb2124 100644 --- a/src/molgenis/capice/utilities/preprocessor.py +++ b/src/molgenis/capice/utilities/preprocessor.py @@ -13,39 +13,36 @@ class PreProcessor: categorical columns. """ - def __init__(self, exclude_features: list, model_features: list = None): + def __init__(self, exclude_features: list, input_features: list, train: bool = False): """ :param exclude_features: list, all the features that the preprocessor should not process. Features that are already excluded include: chr_pos_ref_alt, chr and pos. - :param model_features: list (default None), a list containing all - the features present within a model file. + :param input_features: list, a list containing either all the features present within a + model file (in case train=False) or a list containing all the features that the user + supplied in the train_features.json (in case train=True). + :param train: bool, whenever the train protocol should be started or not. """ self.log = Logger().logger self.manager = CapiceManager() self.log.info('Preprocessor started.') - self.train = False + self.train = train self.exclude_features = [ Column.chr_pos_ref_alt.value, Column.chr.value, Column.pos.value ] self.exclude_features += exclude_features - self.model_features = model_features + self.model_features = input_features self.objects = [] - def _is_train(self): - if self.model_features is None: - self.train = True - def preprocess(self, dataset: pd.DataFrame): """ Callable function for the preprocessor to start preprocessing. :param dataset: unprocessed pandas DataFrame :return: processed pandas Dataframe """ - self._is_train() dataset = self._create_preservation_col(dataset) self._get_categorical_columns(dataset) processed_dataset = self._process_objects(dataset) @@ -75,7 +72,7 @@ def _get_categorical_columns(self, dataset: pd.DataFrame): :param dataset: pandas DataFrame """ for feature in dataset.select_dtypes(include=["O"]).columns: - if feature not in self.exclude_features: + if feature not in self.exclude_features and feature in self.model_features: self.objects.append(feature) self.log.debug('Converting the categorical columns: %s.', ', '.join(self.objects)) diff --git a/src/molgenis/capice/validators/model_validator.py b/src/molgenis/capice/validators/model_validator.py index 5ef1dae2..c87f9c93 100644 --- a/src/molgenis/capice/validators/model_validator.py +++ b/src/molgenis/capice/validators/model_validator.py @@ -16,7 +16,7 @@ def validate_has_required_attributes(model): Function to validate if the required attributes CAPICE_version, impute_values and predict_proba are present. """ - required_attributes = ['CAPICE_version', 'model_features', 'predict_proba'] + required_attributes = ['CAPICE_version', 'input_features', 'predict_proba'] for attribute in required_attributes: if attribute not in dir(model): raise AttributeError(f'Unable to locate attribute {attribute} in model file!') diff --git a/tests/capice/utilities/test_predict.py b/tests/capice/utilities/test_predict.py index a9262dce..a4dd7486 100644 --- a/tests/capice/utilities/test_predict.py +++ b/tests/capice/utilities/test_predict.py @@ -27,7 +27,7 @@ def test_unit_prediction(self): self.main.preprocess( self.main.process( self.main._load_file() - ), model_features=self.model.get_booster().feature_names + ), input_features=self.model.get_booster().feature_names ) ) @@ -41,7 +41,7 @@ def test_component_prediction(self): self.main.preprocess( self.main.process( self.main._load_file() - ), model_features=self.model.get_booster().feature_names + ), input_features=self.model.get_booster().feature_names ) ) # Combined sum of the prediction score should be higher than 0 diff --git a/tests/capice/utilities/test_predictor.py b/tests/capice/utilities/test_predictor.py index d031b9ed..e51db4af 100644 --- a/tests/capice/utilities/test_predictor.py +++ b/tests/capice/utilities/test_predictor.py @@ -16,7 +16,7 @@ def setUpClass(cls): cls.dataset = main.preprocess( main.process( main._load_file() - ), model_features=model.get_booster().feature_names + ), input_features=model.get_booster().feature_names ) def test_predict(self): diff --git a/tests/capice/utilities/test_preprocessing.py b/tests/capice/utilities/test_preprocessing.py index 2c1f38c6..c60eaf9d 100644 --- a/tests/capice/utilities/test_preprocessing.py +++ b/tests/capice/utilities/test_preprocessing.py @@ -26,7 +26,7 @@ def test_unit_preprocessing_file(self): self.main.preprocess( loaded_data=self.main.process( self.main._load_file() - ), model_features=self.model.get_booster().feature_names + ), input_features=self.model.get_booster().feature_names ) def test_component_preprocessing(self): @@ -41,7 +41,7 @@ def test_component_preprocessing(self): processed_file = self.main.preprocess( self.main.process( self.main._load_file() - ), model_features=self.model.get_booster().feature_names + ), input_features=self.model.get_booster().feature_names ) model_features = self.model.get_booster().feature_names processed_columns = processed_file.columns From 7ec081241cc880d243096a96395668860696b706 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Tue, 6 Dec 2022 16:39:11 +0100 Subject: [PATCH 03/24] Progress made. Still figuring out how to do this optimally. --- src/molgenis/capice/main_predict.py | 2 +- src/molgenis/capice/main_train.py | 37 ++++++++++++++++--- .../capice/validators/model_validator.py | 2 +- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/molgenis/capice/main_predict.py b/src/molgenis/capice/main_predict.py index 04c4cf00..eb34124c 100644 --- a/src/molgenis/capice/main_predict.py +++ b/src/molgenis/capice/main_predict.py @@ -32,7 +32,7 @@ def run(self): Column.feature.value, Column.feature_type.value]) capice_data = self.process(loaded_data=capice_data, - process_features=self.model.input_features) + process_features=self.model.vep_features) capice_data = self.preprocess(loaded_data=capice_data, input_features=self.model.get_booster().feature_names) capice_data = self.predict(loaded_data=capice_data) diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 9e43bfb2..5b2a2354 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -58,19 +58,36 @@ def run(self): data = self._load_file(additional_required_features=self.additional_required) with open(self.json_path, 'rt') as impute_values_file: train_features = list(json.load(impute_values_file).keys()) + + # Grantham, oAA, Consequence in train_features + + self._validate_features_present(data, train_features) + data, vep_input, vep_output = self.process( loaded_data=data, process_features=train_features ) - self._validate_vep_processing_complete(data, train_features) - processed_data = self.preprocess(loaded_data=data, input_features=train_features, + # vep_input: [oAA, Consequence] + # vep_output: [oAA, nAA, is_frameshift_variant, is_intron_variant, ...] + + processable_features = self._reset_train_features(train_features, vep_input, vep_output) + + # processable_features: [Grantham, oAA, nAA, is_frameshift_variant, is_intron_variant, ...] + + processed_data = self.preprocess(loaded_data=data, input_features=processable_features, train=True) + + # columns processed: [oAA_x, oAA_y, oAA_z, nAA..., Grantham, is_frameshift variant, ...] + self._get_processed_features(dataset=processed_data, train_features=train_features) + + # self.processed_features: [oAA, nAA, Grantham, is_frameshift_variant, ...] + processed_train, processed_test = self.split_data(dataset=processed_data, test_size=self.train_test_size) model = self.train(test_set=processed_test, train_set=processed_train) - setattr(model, "input_features", train_features) + setattr(model, "vep_features", vep_input) setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) @@ -82,17 +99,27 @@ def process(loaded_data, process_features: typing.Collection) -> (pd.DataFrame, process_outputs = processor.get_feature_process_outputs() return processed_data, process_inputs, process_outputs - def _validate_vep_processing_complete(self, dataset, train_features): + def _validate_features_present(self, dataset, train_features): missing = [] for key in train_features: if key not in dataset.columns: missing.append(key) if len(missing) > 0: - error_message = 'Impute file missing needed columns for input file: %s' + error_message = 'Train features file missing needed columns for input file: %s' self.log.critical(error_message, missing) raise ValueError(error_message % missing) + @staticmethod + def _reset_train_features(input_train_features: list, input_vep_features: list, + output_vep_features: list): + return_list = [] + for feature in input_train_features: + if feature not in input_vep_features: + return_list.append(feature) + return_list.extend(output_vep_features) + return return_list + def split_data(self, dataset, test_size: float): """ Function to split any given dataset into 2 datasets using the test_size diff --git a/src/molgenis/capice/validators/model_validator.py b/src/molgenis/capice/validators/model_validator.py index 74de1b29..be9d0327 100644 --- a/src/molgenis/capice/validators/model_validator.py +++ b/src/molgenis/capice/validators/model_validator.py @@ -8,7 +8,7 @@ def validate_has_required_attributes(model): Function to validate if the required attributes CAPICE_version, impute_values and predict_proba are present. """ - required_attributes = ['CAPICE_version', 'input_features', 'predict_proba'] + required_attributes = ['CAPICE_version', 'vep_features', 'predict_proba'] for attribute in required_attributes: if attribute not in dir(model): raise AttributeError(f'Unable to locate attribute {attribute} in model file!') From e88e411913d63e1de99f10bdfabadc8f5b94847f Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 7 Dec 2022 15:56:20 +0100 Subject: [PATCH 04/24] Further progression made. Fixed bug where a "ValueError" would be raised if only variants were supplied that are synonymous. Closes: #150 --- resources/train_features.json | 57 ++++--------------------- src/molgenis/capice/main_train.py | 49 +++++++++++++++++----- src/molgenis/capice/vep/amino_acids.py | 8 +++- tests/capice/test_main_train.py | 58 ++++++++++++++++++++++++++ tests/capice/vep/test_amino_acids.py | 8 ++++ 5 files changed, 118 insertions(+), 62 deletions(-) diff --git a/resources/train_features.json b/resources/train_features.json index 6fa0312a..6df5d6f9 100644 --- a/resources/train_features.json +++ b/resources/train_features.json @@ -1,54 +1,13 @@ { - "PolyPhenCat": null, - "PolyPhenVal": null, - "cDNApos": null, - "relcDNApos": null, - "SIFTcat": null, - "SIFTval": null, - "protPos": null, - "relProtPos": null, - "oAA": null, - "nAA": null, - "CDSpos": null, - "relCDSpos": null, + "PolyPhen": null, + "SIFT": null, + "cDNA_position": null, + "CDS_position": null, + "Protein_position": null, + "Amino_acids": null, "ref": null, "alt": null, - "is_regulatory_region_variant": null, - "is_regulatory_region_ablation": null, - "is_regulatory_region_amplification": null, - "is_missense_variant": null, - "is_intron_variant": null, - "is_upstream_gene_variant": null, - "is_downstream_gene_variant": null, - "is_synonymous_variant": null, - "is_TF_binding_site_variant": null, - "is_splice_donor_variant": null, - "is_coding_sequence_variant": null, - "is_splice_region_variant": null, - "is_stop_gained": null, - "is_splice_acceptor_variant": null, - "is_frameshift_variant": null, - "is_3_prime_UTR_variant": null, - "is_inframe_insertion": null, - "is_inframe_deletion": null, - "is_5_prime_UTR_variant": null, - "is_start_lost": null, - "is_non_coding_transcript_exon_variant": null, - "is_non_coding_transcript_variant": null, - "is_TFBS_ablation": null, - "is_TFBS_amplification": null, - "is_protein_altering_variant": null, - "is_stop_lost": null, - "is_stop_retained_variant": null, - "is_transcript_ablation": null, - "is_intergenic_variant": null, - "is_start_retained_variant": null, - "is_transcript_amplification": null, - "is_incomplete_terminal_codon_variant": null, - "is_mature_miRNA_variant": null, - "is_NMD_transcript_variant": null, - "is_feature_elongation": null, - "is_feature_truncation": null, + "Consequence": null, "SpliceAI_pred_DP_AG": null, "SpliceAI_pred_DP_AL": null, "SpliceAI_pred_DP_DG": null, @@ -57,8 +16,6 @@ "SpliceAI_pred_DS_AL": null, "SpliceAI_pred_DS_DG": null, "SpliceAI_pred_DS_DL": null, - "Type": null, - "Length": null, "Grantham": null, "phyloP": null } \ No newline at end of file diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 5b2a2354..8ea47f63 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -1,6 +1,7 @@ import json import typing +import numpy as np import pandas as pd import xgboost as xgb from scipy import stats @@ -59,7 +60,9 @@ def run(self): with open(self.json_path, 'rt') as impute_values_file: train_features = list(json.load(impute_values_file).keys()) - # Grantham, oAA, Consequence in train_features + # train_features = [Grantham, oAA, Consequence] + + self._validate_train_features_duplicates(train_features) self._validate_features_present(data, train_features) @@ -68,19 +71,25 @@ def run(self): process_features=train_features ) - # vep_input: [oAA, Consequence] + # vep_input: [oAA, Consequence, ref] # vep_output: [oAA, nAA, is_frameshift_variant, is_intron_variant, ...] - processable_features = self._reset_train_features(train_features, vep_input, vep_output) + processable_features = self._reset_train_features( + train_features, + vep_input, + vep_output, + data.columns + ) - # processable_features: [Grantham, oAA, nAA, is_frameshift_variant, is_intron_variant, ...] + # processable_features: [Grantham, ref, oAA, nAA, is_frameshift_variant, is_intron_variant, + # ...] processed_data = self.preprocess(loaded_data=data, input_features=processable_features, train=True) # columns processed: [oAA_x, oAA_y, oAA_z, nAA..., Grantham, is_frameshift variant, ...] - self._get_processed_features(dataset=processed_data, train_features=train_features) + self._get_processed_features(dataset=processed_data, train_features=processable_features) # self.processed_features: [oAA, nAA, Grantham, is_frameshift_variant, ...] @@ -92,14 +101,15 @@ def run(self): self.exporter.export_capice_model(model=model) @staticmethod - def process(loaded_data, process_features: typing.Collection) -> (pd.DataFrame, list, list): + def process(loaded_data, process_features: typing.Collection) -> (pd.DataFrame, list[str], + list[str]): processor = ManualVEPProcessor() processed_data = processor.process(loaded_data, process_features) process_inputs = processor.get_feature_process_inputs() process_outputs = processor.get_feature_process_outputs() return processed_data, process_inputs, process_outputs - def _validate_features_present(self, dataset, train_features): + def _validate_features_present(self, dataset, train_features) -> None: missing = [] for key in train_features: if key not in dataset.columns: @@ -110,13 +120,32 @@ def _validate_features_present(self, dataset, train_features): self.log.critical(error_message, missing) raise ValueError(error_message % missing) + def _validate_train_features_duplicates(self, input_train_features: list): + values, counts = np.unique(input_train_features, return_counts=True) + if counts[counts > 1]: + error_message = 'Detected duplicate features in user supplied train features: %s' + duplicates = ', '.join(values[counts > 1]) + self.log.critical(error_message, duplicates) + raise KeyError(error_message % duplicates) + @staticmethod - def _reset_train_features(input_train_features: list, input_vep_features: list, - output_vep_features: list): + def _reset_train_features( + input_train_features: list, + input_vep_features: list, + output_vep_features: list, + vep_processed_dataframe_columns: pd.DataFrame.columns + ) -> list[str]: return_list = [] + # Adds the VEP input features to which the processor has property drop = False + for feature in input_vep_features: + if feature in vep_processed_dataframe_columns: + return_list.append(feature) + # Adds back the user input features, but avoiding adding duplicates and + # avoiding the features that had property drop = True for feature in input_train_features: - if feature not in input_vep_features: + if feature not in return_list and feature not in input_vep_features: return_list.append(feature) + # Extending the features with the VEP processors output features return_list.extend(output_vep_features) return return_list diff --git a/src/molgenis/capice/vep/amino_acids.py b/src/molgenis/capice/vep/amino_acids.py index a1a3289f..c2c987f6 100644 --- a/src/molgenis/capice/vep/amino_acids.py +++ b/src/molgenis/capice/vep/amino_acids.py @@ -23,6 +23,10 @@ def naa(self): return self.columns[1] def _process(self, dataframe: pd.DataFrame): - dataframe[self.columns] = dataframe[self.name].str.split('/', expand=True) - dataframe[self.naa].fillna(dataframe[self.oaa], inplace=True) + if dataframe[self.name].str.contains('/', regex=False).any(): + dataframe[self.columns] = dataframe[self.name].str.split('/', expand=True) + dataframe[self.naa].fillna(dataframe[self.oaa], inplace=True) + else: + dataframe[self.oaa] = dataframe[self.name] + dataframe[self.naa] = dataframe[self.oaa] return dataframe diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index 7ff65313..b46a1c9b 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -42,6 +42,64 @@ def setUp(self): self.main.cross_validate = 2 self.main.n_iterations = 2 + def test_validate_train_features_duplicates_fail(self): + test_features = ['foo', 'bar', 'baz', 'foo'] + with self.assertRaises(KeyError) as e: + self.main._validate_train_features_duplicates(test_features) + # Double quotes since KeyError still adds single quotes to the error.exception + self.assertEqual( + "'Detected duplicate features in user supplied train features: foo'", + str(e.exception) + ) + + def test_validate_train_features_duplicates_pass(self): + test_features = ['foo', 'bar', 'baz'] + self.main._validate_train_features_duplicates(test_features) + + def test_component_reset_train_features(self): + user_input = ['ref', 'Amino_acids', 'foo'] + vep_inputs = ['ref', 'Amino_acids'] + vep_outputs = ['oAA', 'nAA'] + dataset = pd.DataFrame( + columns=['ref', 'oAA', 'nAA', 'foo'] + ) + observed = self.main._reset_train_features( + user_input, vep_inputs, vep_outputs, dataset.columns) + # Set because order is not important + self.assertSetEqual(set(observed), {'ref', 'oAA', 'nAA', 'foo'}) + + def test_integration_reset_train_features(self): + with open(self.main.json_path, 'rt') as fh: + user_input = list(json.load(fh).keys()) + self.main._validate_train_features_duplicates(user_input) + data = self.main._load_file(additional_required_features=self.main.additional_required) + self.main._validate_features_present(data, user_input) + data_processed, vep_input, vep_output = self.main.process(data, user_input) + observed = self.main._reset_train_features(user_input, vep_input, vep_output, + data_processed.columns) + expected = [ + 'PolyPhenCat', 'PolyPhenVal', 'cDNApos', 'relcDNApos', 'SIFTcat', 'SIFTval', + 'protPos', 'relProtPos', 'oAA', 'nAA', 'CDSpos', 'relCDSpos', 'ref', 'alt', + 'is_regulatory_region_variant', 'is_regulatory_region_ablation', + 'is_regulatory_region_amplification', 'is_missense_variant', 'is_intron_variant', + 'is_upstream_gene_variant', 'is_downstream_gene_variant', 'is_synonymous_variant', + 'is_TF_binding_site_variant', 'is_splice_donor_variant', 'is_coding_sequence_variant', + 'is_splice_region_variant', 'is_stop_gained', 'is_splice_acceptor_variant', + 'is_splice_donor_5th_base_variant', 'is_splice_donor_region_variant', + 'is_splice_polypyrimidine_tract_variant', 'is_frameshift_variant', + 'is_3_prime_UTR_variant', 'is_inframe_insertion', + 'is_inframe_deletion', 'is_5_prime_UTR_variant', 'is_start_lost', + 'is_non_coding_transcript_exon_variant', 'is_non_coding_transcript_variant', + 'is_TFBS_ablation', 'is_TFBS_amplification', 'is_protein_altering_variant', + 'is_stop_lost', 'is_stop_retained_variant', 'is_transcript_ablation', + 'is_intergenic_variant', 'is_start_retained_variant', 'is_transcript_amplification', + 'is_incomplete_terminal_codon_variant', 'is_mature_miRNA_variant', + 'is_NMD_transcript_variant', 'is_feature_elongation', 'is_feature_truncation', + 'SpliceAI_pred_DP_AG', 'SpliceAI_pred_DP_AL', 'SpliceAI_pred_DP_DG', + 'SpliceAI_pred_DP_DL', 'SpliceAI_pred_DS_AG', 'SpliceAI_pred_DS_AL', + 'SpliceAI_pred_DS_DG', 'SpliceAI_pred_DS_DL', 'Type', 'Length', 'Grantham', 'phyloP'] + self.assertSetEqual(set(observed), set(expected)) + def test_integration_training(self): """ Integration test for the full training part of CAPICE. diff --git a/tests/capice/vep/test_amino_acids.py b/tests/capice/vep/test_amino_acids.py index b7b3ba53..49f7b989 100644 --- a/tests/capice/vep/test_amino_acids.py +++ b/tests/capice/vep/test_amino_acids.py @@ -19,6 +19,14 @@ def test_process(self): 'nAA': ['G', 'C', 'C']}) pd.testing.assert_frame_equal(expected, observed) + def test_process_no_alt(self): + dataframe = pd.DataFrame({'Amino_acids': ['A', 'R', 'G']}) + observed = self.aa.process(dataframe) + expected = pd.DataFrame({'Amino_acids': ['A', 'R', 'G'], + 'oAA': ['A', 'R', 'G'], + 'nAA': ['A', 'R', 'G']}) + pd.testing.assert_frame_equal(expected, observed) + if __name__ == '__main__': unittest.main() From fa599ff391e3a83eb3c1fe25257b17bbb92ed297 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 7 Dec 2022 16:11:25 +0100 Subject: [PATCH 05/24] WIP making "Consequence" VEP processor support non-coding variants only --- src/molgenis/capice/vep/consequence.py | 18 ++++++++++-------- tests/capice/vep/test_consequence.py | 14 ++++++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/molgenis/capice/vep/consequence.py b/src/molgenis/capice/vep/consequence.py index c3a780fc..3d26b2a8 100644 --- a/src/molgenis/capice/vep/consequence.py +++ b/src/molgenis/capice/vep/consequence.py @@ -61,14 +61,16 @@ def columns(self): ] def _process(self, dataframe: pd.DataFrame): - splitted_consequence = dataframe[self.name].str.split('&', expand=True) - raw_consequences = [] - for consequence in self.columns: - current_consequence = consequence.split('is_')[1] - dataframe[consequence] = np.where( - np.isin(splitted_consequence, current_consequence).any(axis=1), 1, 0 - ) - raw_consequences.append(current_consequence) + if dataframe[self.name].str.contains('&', regex=False).any(): + splitted_consequence = dataframe[self.name].str.split('&', expand=True) + raw_consequences = [] + for consequence in self.columns: + current_consequence = consequence.split('is_')[1] + dataframe[consequence] = np.where( + np.isin(splitted_consequence, current_consequence).any(axis=1), 1, 0 + ) + raw_consequences.append(current_consequence) + self._validate_consequences(splitted_consequence, raw_consequences) return dataframe diff --git a/tests/capice/vep/test_consequence.py b/tests/capice/vep/test_consequence.py index 05c72719..eb482954 100644 --- a/tests/capice/vep/test_consequence.py +++ b/tests/capice/vep/test_consequence.py @@ -73,6 +73,20 @@ def test_consequence(self): pd.testing.assert_frame_equal(observerd.sort_index(axis=1), expected.sort_index( axis=1), check_dtype=False) + def test_non_coding(self): + data = pd.DataFrame({ + 'variants': ['variant_1', 'variant_2', 'variant_3'], + 'Consequence': [np.nan, np.nan, np.nan] + }) + columns = data.columns + expected = pd.concat([data, self.expected_data], axis=1) + observed = Consequence().process(data) + self.assertFalse(observed[observed.columns.difference(columns)].isnull().values.any()) + pd.testing.assert_frame_equal( + observed.sort_index(axis=1), + expected.sort_index(axis=1) + ) + def test_consequence_warning(self): """ Tests that when a consequence is encountered that is not present within the processor From 26ab4d2a9ae14b999b94d9a67a374c675f01e0ad Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 8 Dec 2022 08:07:22 +0100 Subject: [PATCH 06/24] Fixed non-coding support for Consequence. --- src/molgenis/capice/vep/consequence.py | 21 ++++++++++++--------- src/molgenis/capice/vep/template.py | 6 +++++- tests/capice/vep/test_consequence.py | 7 ++++++- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/molgenis/capice/vep/consequence.py b/src/molgenis/capice/vep/consequence.py index 3d26b2a8..4a0d530e 100644 --- a/src/molgenis/capice/vep/consequence.py +++ b/src/molgenis/capice/vep/consequence.py @@ -60,16 +60,19 @@ def columns(self): 'is_splice_polypyrimidine_tract_variant' ] + @staticmethod + def _fillna(): + return 0 + def _process(self, dataframe: pd.DataFrame): - if dataframe[self.name].str.contains('&', regex=False).any(): - splitted_consequence = dataframe[self.name].str.split('&', expand=True) - raw_consequences = [] - for consequence in self.columns: - current_consequence = consequence.split('is_')[1] - dataframe[consequence] = np.where( - np.isin(splitted_consequence, current_consequence).any(axis=1), 1, 0 - ) - raw_consequences.append(current_consequence) + splitted_consequence = dataframe[self.name].str.split('&', expand=True) + raw_consequences = [] + for consequence in self.columns: + current_consequence = consequence.split('is_')[1] + dataframe[consequence] = np.where( + np.isin(splitted_consequence, current_consequence).any(axis=1), 1, 0 + ) + raw_consequences.append(current_consequence) self._validate_consequences(splitted_consequence, raw_consequences) return dataframe diff --git a/src/molgenis/capice/vep/template.py b/src/molgenis/capice/vep/template.py index 9fe59eb2..8aca90c7 100644 --- a/src/molgenis/capice/vep/template.py +++ b/src/molgenis/capice/vep/template.py @@ -37,9 +37,13 @@ def usable(self, value=False): def drop(self): return True + @staticmethod + def _fillna(): + return np.nan + def process(self, dataframe: pd.DataFrame): if dataframe[self.name].isnull().all(): - dataframe[self.columns] = np.nan + dataframe[self.columns] = self._fillna() return dataframe else: return self._process(dataframe) diff --git a/tests/capice/vep/test_consequence.py b/tests/capice/vep/test_consequence.py index eb482954..ea7a7b8e 100644 --- a/tests/capice/vep/test_consequence.py +++ b/tests/capice/vep/test_consequence.py @@ -79,7 +79,12 @@ def test_non_coding(self): 'Consequence': [np.nan, np.nan, np.nan] }) columns = data.columns - expected = pd.concat([data, self.expected_data], axis=1) + expected_altered = self.expected_data.copy(deep=True) + # Easier to locate the ones in self.expected_data than to hardcode a new one + expected_altered.loc[1, 'is_start_lost'] = 0 + expected_altered.loc[0, 'is_stop_lost'] = 0 + expected_altered.loc[0, 'is_transcript_ablation'] = 0 + expected = pd.concat([data, expected_altered], axis=1) observed = Consequence().process(data) self.assertFalse(observed[observed.columns.difference(columns)].isnull().values.any()) pd.testing.assert_frame_equal( From 2adc8a9cdc5615af773ab35cdf8f5d8647d44b0f Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 8 Dec 2022 08:17:48 +0100 Subject: [PATCH 07/24] - Added test for getters in manual_vep_processor.py - Fixed bug in manual_vep_processor.py where the inputs getter would incorrectly output the outputs too --- .../capice/utilities/manual_vep_processor.py | 2 +- .../utilities/test_manual_vep_processor.py | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/molgenis/capice/utilities/manual_vep_processor.py b/src/molgenis/capice/utilities/manual_vep_processor.py index c4608ba3..b3c2618b 100644 --- a/src/molgenis/capice/utilities/manual_vep_processor.py +++ b/src/molgenis/capice/utilities/manual_vep_processor.py @@ -45,7 +45,7 @@ def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> ): self.log.debug('Processing: %s', processor.name) self.feature_processing_inputs.append(processor.name) - self.feature_processing_inputs.extend(processor.columns) + self.feature_processing_outputs.extend(processor.columns) dataset = processor.process(dataset) if processor.drop and processor.name not in dropping_columns: dropping_columns.append(processor.name) diff --git a/tests/capice/utilities/test_manual_vep_processor.py b/tests/capice/utilities/test_manual_vep_processor.py index 1399970e..c80ebacb 100644 --- a/tests/capice/utilities/test_manual_vep_processor.py +++ b/tests/capice/utilities/test_manual_vep_processor.py @@ -151,6 +151,32 @@ def test_bug_attributeerror_template_sift_polyphen(self): # Testing for expected dataframe columns, since it processes more. pd.testing.assert_frame_equal(expected_dataframe, out_dataframe[expected_dataframe.columns]) + @staticmethod + def prepare_getter_tests(): + data = pd.DataFrame( + { + 'ref': ['A', 'C'], + 'alt': ['T', 'G'], + 'PolyPhen': [0.08, 0.98] + } + ) + user_input = ['ref', 'PolyPhen'] + annotator = ManualVEPProcessor() + annotator.process(data, user_input) + return annotator + + def test_getter_vep_input(self): + annotator = self.prepare_getter_tests() + observed = annotator.get_feature_process_inputs() + expected = {'ref', 'PolyPhen'} + self.assertSetEqual(set(observed), expected) + + def test_getter_vep_output(self): + annotator = self.prepare_getter_tests() + observed = annotator.get_feature_process_outputs() + expected = {'Length', 'Type', 'PolyPhenCat', 'PolyPhenVal'} + self.assertSetEqual(set(observed), expected) + if __name__ == '__main__': unittest.main() From 52d2296ea42f5018f88625eb4a53575af4a76fcc Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 8 Dec 2022 08:26:11 +0100 Subject: [PATCH 08/24] Replaced "model_features" attribute with "vep_features" attribute --- tests/resources/xgb_booster_poc.ubj | Bin 422703 -> 421446 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/resources/xgb_booster_poc.ubj b/tests/resources/xgb_booster_poc.ubj index d82d8d63f53f6d44669e0e62c764564d4a12502b..7c8d0cd4e9e2979a59455fa20a898f95496d8b2b 100644 GIT binary patch delta 176 zcmZ4gO!C+r$qBodIO;dKz>eT zKt^gFh#llZra1|`+ z!7AdOr!@{-EPvfYKU}HW!Pxv0P0Ch^UzfYF}hMVOSRFO-K;d!WOuG5@5mi8-=c!6-z~hA_UU?ia(+9v7b{E4*RJ2k z$-uL#^gx3rK2d_A90``yH#+}J2qYXQ_8^Od5>s3~!LYorcdXY35%B|(dq<}0e{iqg z2>Z=!zlj}^Mr{pS?7^~^kTi;GxTFtf8JL#(fD;uP??~@N#WXd37S9qMxG#!V8@FC} YTW`9pbK2Ilo!7Rm?ZT&S>*8Jb1B5Db;Q#;t From e86934181011abb69422594f94fa578c4481366c Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 8 Dec 2022 09:10:25 +0100 Subject: [PATCH 09/24] WIP fixing tests --- src/molgenis/capice/main_explain.py | 9 +++++++++ src/molgenis/capice/main_train.py | 1 + .../capice/validators/model_validator.py | 2 +- .../post_vep_processing_validator.py | 6 +++--- tests/capice/test_main_train.py | 8 +++++--- tests/resources/xgb_booster_poc.ubj | Bin 421446 -> 422720 bytes 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/molgenis/capice/main_explain.py b/src/molgenis/capice/main_explain.py index ec043ea2..9f80f6a5 100644 --- a/src/molgenis/capice/main_explain.py +++ b/src/molgenis/capice/main_explain.py @@ -1,4 +1,6 @@ import os +import typing + import pandas as pd import xgboost as xgb @@ -14,6 +16,13 @@ def __init__(self, model, output_path, output_given): self.output = output_path self.log = Logger().logger + @staticmethod + def process(loaded_data, process_features: typing.Collection): + """ + Since it is an abstract method, but not used. + """ + pass + def run(self): gain_importances = self._extract_features_importances_gain(self.model) total_gain_importances = self._extract_features_importances_total_gain(self.model) diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 8ea47f63..463ddb96 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -97,6 +97,7 @@ def run(self): test_size=self.train_test_size) model = self.train(test_set=processed_test, train_set=processed_train) setattr(model, "vep_features", vep_input) + setattr(model, "vep_outputs", vep_output) setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) diff --git a/src/molgenis/capice/validators/model_validator.py b/src/molgenis/capice/validators/model_validator.py index be9d0327..72d27cb8 100644 --- a/src/molgenis/capice/validators/model_validator.py +++ b/src/molgenis/capice/validators/model_validator.py @@ -8,7 +8,7 @@ def validate_has_required_attributes(model): Function to validate if the required attributes CAPICE_version, impute_values and predict_proba are present. """ - required_attributes = ['CAPICE_version', 'vep_features', 'predict_proba'] + required_attributes = ['CAPICE_version', 'vep_features', 'vep_outputs', 'predict_proba'] for attribute in required_attributes: if attribute not in dir(model): raise AttributeError(f'Unable to locate attribute {attribute} in model file!') diff --git a/src/molgenis/capice/validators/post_vep_processing_validator.py b/src/molgenis/capice/validators/post_vep_processing_validator.py index 738fdf8e..e81a3af2 100644 --- a/src/molgenis/capice/validators/post_vep_processing_validator.py +++ b/src/molgenis/capice/validators/post_vep_processing_validator.py @@ -9,11 +9,11 @@ def __init__(self, model): def validate_features_present(self, datafile): """ - Validator to see if all features within the model impute values are - presently processed. + Validator to see if all features that should be present after the + ManualVEPProcessor are present. """ column_utils = ColumnUtils() - column_utils.set_specified_columns(self.model.model_features) + column_utils.set_specified_columns(self.model.vep_outputs) features_not_present = column_utils.get_missing_diff_with(datafile.columns) if len(features_not_present) > 0: error_message = 'Detected required feature(s) %s not ' \ diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index b9b1bf71..25fd4ad3 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -245,10 +245,12 @@ def test_full_processed_features(self): 'Other_feature': ['foo', 'bar'] } ) - processed_data = self.main.process(loaded_dataset) with open(self.main.json_path, 'rt') as fh: - features = json.load(fh).keys() - self.main._get_processed_features(processed_data, features) + features = list(json.load(fh).keys()) + processed_data, vep_input, vep_output = self.main.process(loaded_dataset, features) + resetted_features = self.main._reset_train_features( + features, vep_input, vep_output, processed_data.columns) + self.main._get_processed_features(processed_data, resetted_features) self.assertSetEqual( {'ref', 'alt', 'Length', 'Type', 'PolyPhenVal', 'PolyPhenCat'}, set(self.main.processed_features) diff --git a/tests/resources/xgb_booster_poc.ubj b/tests/resources/xgb_booster_poc.ubj index 7c8d0cd4e9e2979a59455fa20a898f95496d8b2b..9bd2c274f3ba058c81c49dc98b7b0e46a12107d0 100644 GIT binary patch delta 1015 zcmZ`&zl#$=6z0xT5=|BqT`qSDN6_vHK@P+&UI-{Lgv)AUF-|rwn}OXo!^~`Ct1T>S zh5auC3oAh^tgQV5tnDrAo!!|iyQ>zDc|Ski``(*xKL%fa4&Hsyy~P|5QN8C z#99p>oxB{*d6>*Mfag>XPfsfI1r2j^3K-~3uKDBHNN|;_62h9bcrx*PTb!#~TPP&g z^D2E_S$o6m*VWqxIgC+mWvACVm66g&glx?W8snI!FhwG!6rcjKrIJxBnlx^PT5@bT zW1+MJ8j%37U9jS>@&8ekAjhXk#ADUM^d@AspLaqvOv$TKDwx0F}51XuelgA4}mtlQD*4N%#cHKF?S)aRtpE`#Y z9v$~inPIjG(kzYn^&ztl&cLRAcaE*{+qt`=ETTG=VD95$HmX;dfo9LfL`#awmrS%7 zU4t!zkYi9EWEapf#>NRYmVB1#4O!B^4ziIXAut!*>Z;5T=EI4^ER~s~g1k?^(IOv> ra#qkjULqhj&&P}M_jSzoE37we_pRIAGqP{wl92-=mp{4PEBE0KU9eSM delta 44 ucmX@`O!C+r$qBodIO;d Date: Thu, 8 Dec 2022 09:37:16 +0100 Subject: [PATCH 10/24] WIP fixing tests --- tests/capice/utilities/test_manual_vep_processor.py | 6 ++++-- tests/capice/utilities/test_predict.py | 4 ++-- tests/capice/utilities/test_predictor.py | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tests/capice/utilities/test_manual_vep_processor.py b/tests/capice/utilities/test_manual_vep_processor.py index c80ebacb..70c7c429 100644 --- a/tests/capice/utilities/test_manual_vep_processor.py +++ b/tests/capice/utilities/test_manual_vep_processor.py @@ -35,6 +35,8 @@ def setUpClass(cls) -> None: } ) cls.annotator = ManualVEPProcessor() + cls.user_input_features = ['ref', 'PolyPhen', 'SIFT', 'Consequence', 'cDNA_position', + 'CDS_position', 'Protein_position', 'Amino_acids'] def setUp(self) -> None: print('Testing case:') @@ -112,7 +114,7 @@ def test_component_annotator(self): expected_processed_columns ], axis=1 ) - outcome = self.annotator.process(self.dataset) + outcome = self.annotator.process(self.dataset, self.user_input_features) # if numpy.array dtype not given, # then the type will be determined as the minimum type required to hold the # objects in the sequence. this minimal type is system dependent. @@ -147,7 +149,7 @@ def test_bug_attributeerror_template_sift_polyphen(self): } ) annotator = ManualVEPProcessor() - out_dataframe = annotator.process(bugged_dataframe) + out_dataframe = annotator.process(bugged_dataframe, self.user_input_features) # Testing for expected dataframe columns, since it processes more. pd.testing.assert_frame_equal(expected_dataframe, out_dataframe[expected_dataframe.columns]) diff --git a/tests/capice/utilities/test_predict.py b/tests/capice/utilities/test_predict.py index a4dd7486..613c9fe9 100644 --- a/tests/capice/utilities/test_predict.py +++ b/tests/capice/utilities/test_predict.py @@ -26,7 +26,7 @@ def test_unit_prediction(self): self.main.predict( self.main.preprocess( self.main.process( - self.main._load_file() + self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names ) ) @@ -40,7 +40,7 @@ def test_component_prediction(self): prediction = self.main.predict( self.main.preprocess( self.main.process( - self.main._load_file() + self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names ) ) diff --git a/tests/capice/utilities/test_predictor.py b/tests/capice/utilities/test_predictor.py index e51db4af..495c35f2 100644 --- a/tests/capice/utilities/test_predictor.py +++ b/tests/capice/utilities/test_predictor.py @@ -15,7 +15,7 @@ def setUpClass(cls): cls.predictor = Predictor(model) cls.dataset = main.preprocess( main.process( - main._load_file() + main._load_file(), process_features=model.vep_features ), input_features=model.get_booster().feature_names ) From b79d66aca96fdd3f7ae5421f3077a93a79b10a3b Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 8 Dec 2022 10:27:01 +0100 Subject: [PATCH 11/24] Finalized fixing tests --- tests/capice/utilities/test_preprocessing.py | 97 +++++++++++++------- tests/capice/utilities/test_preprocessor.py | 11 +-- 2 files changed, 69 insertions(+), 39 deletions(-) diff --git a/tests/capice/utilities/test_preprocessing.py b/tests/capice/utilities/test_preprocessing.py index c60eaf9d..442636b6 100644 --- a/tests/capice/utilities/test_preprocessing.py +++ b/tests/capice/utilities/test_preprocessing.py @@ -1,6 +1,10 @@ import unittest +import numpy as np +import pandas as pd + from tests.capice.test_templates import set_up_impute_preprocess, teardown +from molgenis.capice.utilities.preprocessor import PreProcessor class TestPreprocessing(unittest.TestCase): @@ -25,7 +29,7 @@ def test_unit_preprocessing_file(self): print('Preprocessing (unit) (file)') self.main.preprocess( loaded_data=self.main.process( - self.main._load_file() + self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names ) @@ -40,7 +44,7 @@ def test_component_preprocessing(self): print('Preprocessing (component)') processed_file = self.main.preprocess( self.main.process( - self.main._load_file() + self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names ) model_features = self.model.get_booster().feature_names @@ -54,41 +58,68 @@ def test_component_preprocessing(self): 0 ) - def test_component_preprocessing_train(self): + def test_preprocessing_train(self): """ Component test for the preprocessing part with train=True. """ - print('Preprocessing (train) (component)') - preprocessed_file = self.main.preprocess( - self.main.process( - self.main._load_file() - ) + data = pd.DataFrame( + { + 'foo': ['a', 'b', 'c', np.nan, np.nan, np.nan], + 'bar': ['a', np.nan, np.nan, np.nan, np.nan, np.nan], + 'baz': ['a', 'b', 'c', 'd', 'e', 'f'], + 'feature_1': [1, 2, 3, 4, np.nan, np.nan], + 'feature_excluded': [1, 2, 3, 4, np.nan, np.nan], + 'chr': [1, 2, 3, 4, 5, 6], + 'pos': [100, 200, 300, 400, 500, 600], + 'ref': ['A', 'T', 'A', 'T', 'A', 'T'], + 'alt': ['G', 'C', 'G', 'C', 'G', 'C'] + } ) - - # Test if all columns matching, - # or starting with features within the imputing - # file are not classified objects. - impute_features = self.model.model_features - processed_columns = preprocessed_file.columns - present_features = 1 - # Should be one, since the for loop quits before - # it can finish the last add_one - test_features = [] - add_one = False - for feature in impute_features: - if add_one: - present_features += 1 - add_one = False - for processed_feature in processed_columns: - if processed_feature.startswith(feature): - add_one = True - test_features.append(processed_feature) - # Test if all impute features are present - self.assertEqual(len(impute_features), present_features) - # Test if no columns are still objects. - self.assertEqual( - len(preprocessed_file[test_features].select_dtypes(include=["O"]).columns), - 0 + user_input_features = ['foo', 'bar', 'baz', 'feature_1'] + processor = PreProcessor( + exclude_features=['feature_excluded'], input_features=user_input_features, train=True + ) + observed = processor.preprocess(data) + expected = pd.DataFrame( + { + 'foo_a': [1, 0, 0, 0, 0, 0], + 'foo_b': [0, 1, 0, 0, 0, 0], + 'foo_c': [0, 0, 1, 0, 0, 0], + 'foo_other': [0, 0, 0, 1, 1, 1], + 'bar_a': [1, 0, 0, 0, 0, 0], + 'bar_other': [0, 1, 1, 1, 1, 1], + 'baz_a': [1, 0, 0, 0, 0, 0], + 'baz_b': [0, 1, 0, 0, 0, 0], + 'baz_c': [0, 0, 1, 0, 0, 0], + 'baz_d': [0, 0, 0, 1, 0, 0], + 'baz_e': [0, 0, 0, 0, 1, 0], + 'baz_other': [0, 0, 0, 0, 0, 1], + 'ref_A': [1, 0, 1, 0, 1, 0], + 'ref_T': [0, 1, 0, 1, 0, 1], + 'alt_G': [1, 0, 1, 0, 1, 0], + 'alt_C': [0, 1, 0, 1, 0, 1], + 'feature_1': [1, 2, 3, 4, np.nan, np.nan], + 'feature_excluded': [1, 2, 3, 4, np.nan, np.nan], + 'chr': [1, 2, 3, 4, 5, 6], + 'pos': [100, 200, 300, 400, 500, 600], + 'chr_pos_ref_alt': [ + '1_VeryUniqueCAPICESeparator_100_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '2_VeryUniqueCAPICESeparator_200_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_C', + '3_VeryUniqueCAPICESeparator_300_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '4_VeryUniqueCAPICESeparator_400_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_C', + '5_VeryUniqueCAPICESeparator_500_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '6_VeryUniqueCAPICESeparator_600_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_C', + ] + } + ) + pd.testing.assert_frame_equal( + observed.sort_index(axis=1), expected.sort_index(axis=1), check_dtype=False ) diff --git a/tests/capice/utilities/test_preprocessor.py b/tests/capice/utilities/test_preprocessor.py index bdbfa92d..29eb088f 100644 --- a/tests/capice/utilities/test_preprocessor.py +++ b/tests/capice/utilities/test_preprocessor.py @@ -13,7 +13,7 @@ class TestPreprocessor(unittest.TestCase): @classmethod def setUp(cls): print('Setting up.') - cls.preprocessor = PreProcessor([]) + cls.preprocessor = PreProcessor([], []) def test__create_preservation_col(self): input_data_frame = pd.DataFrame( @@ -35,17 +35,16 @@ def test__create_preservation_col(self): pd.testing.assert_frame_equal(expected_output, actual_output) - def test__is_train(self): + def test_is_train(self): self.assertEqual(False, self.preprocessor.train) - self.preprocessor._is_train() - self.assertEqual(True, self.preprocessor.train) def test__get_categorical_columns(self): + preprocessor = PreProcessor([], ['ref', 'alt']) input_data_frame = pd.DataFrame( {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], 'alt': ['G', 'A', 'T']}) - self.preprocessor._get_categorical_columns(input_data_frame) - self.assertEqual(['ref', 'alt'], self.preprocessor.objects) + preprocessor._get_categorical_columns(input_data_frame) + self.assertEqual(['ref', 'alt'], preprocessor.objects) def test__process_objects_train_false(self): self.preprocessor.objects = ['ref', 'alt', 'blaat'] From 3385aa94988c0f6a68d1be4da635f731234e766c Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 8 Dec 2022 10:29:50 +0100 Subject: [PATCH 12/24] Fixed numpy deprecation warning --- src/molgenis/capice/main_train.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 463ddb96..f4582088 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -123,7 +123,7 @@ def _validate_features_present(self, dataset, train_features) -> None: def _validate_train_features_duplicates(self, input_train_features: list): values, counts = np.unique(input_train_features, return_counts=True) - if counts[counts > 1]: + if counts[counts > 1].any(): error_message = 'Detected duplicate features in user supplied train features: %s' duplicates = ', '.join(values[counts > 1]) self.log.critical(error_message, duplicates) From eb2a8fcd06d84a441f7e346dbf8b88e3a4d2a406 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Tue, 13 Dec 2022 14:24:15 +0100 Subject: [PATCH 13/24] - fixed flake8 unused import statement - fixed flake8 trailing whitespace --- src/molgenis/capice/main_capice.py | 2 -- tests/capice/test_main_train.py | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index 78c491e1..39efb380 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -1,8 +1,6 @@ import typing from abc import ABC, abstractmethod -import pandas as pd - from molgenis.capice.core.logger import Logger from molgenis.capice.utilities.enums import Column from molgenis.capice.core.capice_manager import CapiceManager diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index 25fd4ad3..2e4c6dfc 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -86,7 +86,7 @@ def test_integration_reset_train_features(self): 'is_TF_binding_site_variant', 'is_splice_donor_variant', 'is_coding_sequence_variant', 'is_splice_region_variant', 'is_stop_gained', 'is_splice_acceptor_variant', 'is_splice_donor_5th_base_variant', 'is_splice_donor_region_variant', - 'is_splice_polypyrimidine_tract_variant', 'is_frameshift_variant', + 'is_splice_polypyrimidine_tract_variant', 'is_frameshift_variant', 'is_3_prime_UTR_variant', 'is_inframe_insertion', 'is_inframe_deletion', 'is_5_prime_UTR_variant', 'is_start_lost', 'is_non_coding_transcript_exon_variant', 'is_non_coding_transcript_variant', From 5ae65292b49f40642eabe0d5412051861f79ea3c Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 14 Dec 2022 11:51:50 +0100 Subject: [PATCH 14/24] - Refactored preprocessor.py to categorical_processor.py - With refactor: massively decreased complexity - Test now passes with REF and REFSEQ - Test now passes with feature_x_foo_bar (underscore in feature value) --- resources/train_features.json | 4 +- src/molgenis/capice/main_capice.py | 32 +-- src/molgenis/capice/main_predict.py | 15 +- src/molgenis/capice/main_train.py | 64 +++--- .../capice/utilities/categorical_processor.py | 154 ++++++++++++++ src/molgenis/capice/utilities/enums.py | 4 +- .../utilities/load_file_postprocessor.py | 4 +- src/molgenis/capice/utilities/preprocessor.py | 191 ------------------ .../capice/validators/model_validator.py | 3 +- tests/capice/test_main_train.py | 100 ++++++++- tests/capice/utilities/test_predict.py | 4 +- tests/capice/utilities/test_predictor.py | 2 +- tests/capice/utilities/test_preprocessing.py | 10 +- tests/capice/utilities/test_preprocessor.py | 6 +- 14 files changed, 312 insertions(+), 281 deletions(-) create mode 100644 src/molgenis/capice/utilities/categorical_processor.py delete mode 100644 src/molgenis/capice/utilities/preprocessor.py diff --git a/resources/train_features.json b/resources/train_features.json index 6df5d6f9..160a6d1a 100644 --- a/resources/train_features.json +++ b/resources/train_features.json @@ -5,8 +5,8 @@ "CDS_position": null, "Protein_position": null, "Amino_acids": null, - "ref": null, - "alt": null, + "REF": null, + "ALT": null, "Consequence": null, "SpliceAI_pred_DP_AG": null, "SpliceAI_pred_DP_AL": null, diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index 39efb380..a8d674d3 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -6,7 +6,7 @@ from molgenis.capice.core.capice_manager import CapiceManager from molgenis.capice.utilities.input_parser import InputParser from molgenis.capice.core.capice_exporter import CapiceExporter -from molgenis.capice.utilities.preprocessor import PreProcessor +from molgenis.capice.utilities.categorical_processor import CategoricalProcessor from molgenis.capice.utilities.load_file_postprocessor import LoadFilePostProcessor from molgenis.capice.validators.post_file_parse_validator import PostFileParseValidator @@ -70,28 +70,16 @@ def _load_file(self, additional_required_features: list = None): def process(loaded_data, process_features: typing.Collection): pass - def preprocess(self, loaded_data, input_features: list, train: bool = False): - """ - Function to perform the preprocessing of the loaded data to convert - categorical columns. - :param loaded_data: Pandas dataframe of the imputed CAPICE data - :param input_features: list, a list containing either all the features present within a - model file (in case train=False) or a list containing all the features that the user - supplied in the train_features.json (in case train=True). - :param train: bool, whenever the train protocol should be started or not. - - Note: please adjust self.exclude_features: to include all of the - features that the preprocessor should NOT process. - Features chr_pos_ref_alt, chr and pos are hardcoded and - thus do not have to be included. - """ - preprocessor = PreProcessor( - exclude_features=self.exclude_features, - input_features=input_features, - train=train + @staticmethod + def categorical_process(loaded_data, processing_features: dict | None, train_features: list | + None): + processor = CategoricalProcessor() + capice_data, processed_features = processor.process( + loaded_data, + processable_features=train_features, + predetermined_features=processing_features ) - capice_data = preprocessor.preprocess(loaded_data) - return capice_data + return capice_data, processed_features def _export(self, dataset, output): """ diff --git a/src/molgenis/capice/main_predict.py b/src/molgenis/capice/main_predict.py index 279cbdf6..f81d4acd 100644 --- a/src/molgenis/capice/main_predict.py +++ b/src/molgenis/capice/main_predict.py @@ -13,7 +13,7 @@ class CapicePredict(Main): """ Predict class of CAPICE to call the different modules to impute, - preprocess and eventually predict a score over a CAPICE annotated file. + process and eventually predict a score over a CAPICE annotated file. """ def __init__(self, input_path, model, output_path, output_given): @@ -31,10 +31,15 @@ def run(self): Column.id_source.value, Column.feature.value, Column.feature_type.value]) - capice_data = self.process(loaded_data=capice_data, - process_features=self.model.vep_features) - capice_data = self.preprocess(loaded_data=capice_data, - input_features=self.model.get_booster().feature_names) + capice_data = self.process( + loaded_data=capice_data, + process_features=self.model.vep_features + ) + capice_data = self.categorical_process( + loaded_data=capice_data, + processing_features=self.model.processable_features, + train_features=None + )[0] capice_data = self.predict(loaded_data=capice_data) capice_data = self.apply_suggested_class(predicted_data=capice_data) self._export(dataset=capice_data, output=self.output) diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index bcb39c1c..c3256572 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -48,7 +48,7 @@ def __init__(self, input_path, json_path, test_split, output_path, output_given, self.random_state = 45 self.split_random_state = 4 self.model_random_state = 0 - self.processed_features = [] + self.train_features = [] self.loglevel = self.manager.loglevel self.exporter = CapiceExporter(file_path=self.output, output_given=self.output_given) @@ -61,8 +61,6 @@ def run(self): with open(self.json_path, 'rt') as impute_values_file: train_features = list(json.load(impute_values_file).keys()) - # train_features = [Grantham, oAA, Consequence] - self._validate_train_features_duplicates(train_features) self._validate_features_present(data, train_features) @@ -72,33 +70,27 @@ def run(self): process_features=train_features ) - # vep_input: [oAA, Consequence, ref] - # vep_output: [oAA, nAA, is_frameshift_variant, is_intron_variant, ...] - - processable_features = self._reset_train_features( + processable_features = self._reset_processing_features( train_features, vep_input, vep_output, data.columns ) - # processable_features: [Grantham, ref, oAA, nAA, is_frameshift_variant, is_intron_variant, - # ...] - - processed_data = self.preprocess(loaded_data=data, input_features=processable_features, - train=True) - - # columns processed: [oAA_x, oAA_y, oAA_z, nAA..., Grantham, is_frameshift variant, ...] - - self._get_processed_features(dataset=processed_data, train_features=processable_features) + processed_data, processed_features = self.categorical_process( + loaded_data=data, + train_features=processable_features, + processing_features=None + ) - # self.processed_features: [oAA, nAA, Grantham, is_frameshift_variant, ...] + self._set_train_features(processable_features, processed_features) processed_train, processed_test = self.split_data(dataset=processed_data, test_size=self.train_test_size) model = self.train(test_set=processed_test, train_set=processed_train) setattr(model, "vep_features", vep_input) setattr(model, "vep_outputs", vep_output) + setattr(model, "processable_features", processed_features) setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) @@ -131,7 +123,7 @@ def _validate_train_features_duplicates(self, input_train_features: list): raise KeyError(error_message % duplicates) @staticmethod - def _reset_train_features( + def _reset_processing_features( input_train_features: list, input_vep_features: list, output_vep_features: list, @@ -151,6 +143,21 @@ def _reset_train_features( return_list.extend(output_vep_features) return return_list + def _set_train_features(self, processable_features: list, processed_features: dict) -> \ + None: + train_features = [] + for feature in processable_features: + if feature not in processed_features.keys(): + train_features.append(feature) + for feature_name, features in processed_features.items(): + for feature in features: + train_features.append(f'{feature_name}_{feature}') + self.log.info( + 'The following features have been selected for training: %s', + ', '.join(train_features) + ) + self.train_features = train_features + def split_data(self, dataset, test_size: float): """ Function to split any given dataset into 2 datasets using the test_size @@ -164,23 +171,6 @@ def split_data(self, dataset, test_size: float): random_state=self.split_random_state) return train, test - def _get_processed_features(self, dataset: pd.DataFrame, train_features): - """ - Function to save the columns of a dataset that have been processed and - thus are an output column of the CADD annotation. - :param dataset: pandas.DataFrame - """ - for column in dataset.columns: - for feature in train_features: - if (column == feature or column.startswith(feature)) and \ - column not in self.processed_features: - self.processed_features.append(column) - self.log.info( - 'The following features have been selected for training: %s', ', '.join( - self.processed_features - ) - ) - def _set_verbosity_from_log_level(self): """ Uses loglevel to set verbosity and xg boost verbosity @@ -206,7 +196,7 @@ def _create_eval_set(self, xgb_version, test_set): :return: a list with tuple with pandas Dataframe, pandas Series and possibly "test" eval_set """ - eval_data = [test_set[self.processed_features], + eval_data = [test_set[self.train_features], test_set[TrainEnums.binarized_label.value]] if int(xgb_version.split('.')[0]) < 1: eval_data.append('test') @@ -265,7 +255,7 @@ def train(self, test_set: pd.DataFrame, train_set: pd.DataFrame): eval_set = self._create_eval_set(xgb.__version__, test_set) self.log.info('Random search starting, please hold.') - randomised_search_cv.fit(train_set[self.processed_features], + randomised_search_cv.fit(train_set[self.train_features], train_set[TrainEnums.binarized_label.value], eval_set=eval_set, verbose=xgb_verbosity, diff --git a/src/molgenis/capice/utilities/categorical_processor.py b/src/molgenis/capice/utilities/categorical_processor.py new file mode 100644 index 00000000..389ade0f --- /dev/null +++ b/src/molgenis/capice/utilities/categorical_processor.py @@ -0,0 +1,154 @@ +import numpy as np +import pandas as pd + +from molgenis.capice.core.logger import Logger +from molgenis.capice.core.capice_manager import CapiceManager +from molgenis.capice.utilities.enums import Column, UniqueSeparator + + +class CategoricalProcessor: + """ + Class to process the data before predicting or training to separate + categorical columns. + """ + + def __init__(self): + self.log = Logger().logger + self.manager = CapiceManager() + + def process( + self, + dataset: pd.DataFrame, + processable_features: list | None = None, + predetermined_features: dict[str] | None = None + ) -> (pd.DataFrame, dict): + """ + Callable method of CategoricalProcessor to start processing the categorical columns + of dataset according to either processable_features (in case of train) or + predetermined_features (in case of predict). + + Args: + dataset: + The dataset over which the categorical features should be processed. + processable_features: + list of processable train features that this module limits to. + If used in predict: set to None. + predetermined_features: + Dictionary of features as they are put into the CategoricalProcessor (key) and + the features they should end up being (values). + If used in train: set to None. + Returns: + processed_dataset: + Dataset with all "Other" dtype columns processed to new columns that have either + 0 or 1 depending on if that sample had the categorical feature or not. + processing_features: + Dictionary containing the columns (key) and the columns they turned into as + output (values). + Raises: + ValueError: + ValueError is raised when both processable_features and predetermined_features + are set to None. + """ + self.log.info('Starting processing categorical columns.') + self._validate_one_feature_list_present(processable_features, predetermined_features) + self._create_preservation_col(dataset) + if predetermined_features is None: + processing_features = self._get_categorical_columns(dataset, processable_features) + else: + processing_features = predetermined_features + + processed_dataset = self._get_dummies(dataset, processing_features) + + self.log.info('Successfully processed categorical data.') + return processed_dataset, processing_features + + def _validate_one_feature_list_present( + self, + processable_features: list | None, + predetermined_features: dict[list] | None + ) -> None: + if processable_features is None and predetermined_features is None: + error_message = 'Both processable_features and predetermined_features are not supplied!' + self.log.critical(error_message) + raise ValueError(error_message) + + @staticmethod + def _create_preservation_col(dataset: pd.DataFrame) -> None: + """ + Function to create the chr_pos_ref_alt column so that it doesn't get + lost in preprocessing. + :param dataset: unprocessed pandas DataFrame + :return: unprocessed pandas DataFrame + containing column 'chr_pos_ref_alt' + """ + dataset[Column.chr_pos_ref_alt.value] = dataset[ + [Column.chr.value, Column.pos.value, Column.ref.value, Column.alt.value] + ].astype(str).agg(UniqueSeparator.unique_separator.value.join, axis=1) + + def _get_categorical_columns(self, dataset: pd.DataFrame, processable_features: list) -> dict: + """ + Method for when the predetermined_features is None, usually in case of train, + to determine the top 5 features that should be used for pandas.get_dummies(). + Loops through the "Object" dtype features in dataset, and if the feature is in the + processable_features list it will obtain the most common values of the feature. + """ + processing_features = {} + for feature in dataset.select_dtypes(include=["O"]).columns: + if feature in processable_features: + self.log.debug('Converting the categorical column: %s', feature) + processing_features[feature] = self._process_object(dataset[feature]) + return processing_features + + def _process_object(self, feature_column: pd.Series) -> list: + """ + Method to call the top X categories method with return number 5 + """ + top_categories = self._get_top_n_cats(feature_column, return_num=5) + return top_categories + + def _get_top_n_cats(self, column: pd.Series, return_num: int) -> list: + """ + Function for when a training file is preprocessed to get the top + return_num quantity values within a categorical column. + Some converting is done for the logger to be able to print them. + :param column: pandas Series + :param return_num: integer + :return: pandas Series + """ + value_counts = column.value_counts().index[:return_num].values + printable_value_counts = [] + for value in value_counts: + if not isinstance(value, str): + value = str(value) + printable_value_counts.append(value) + message = 'For feature: %s saved the following values: %s' + self.log.info(message, column.name, ', '.join(printable_value_counts)) + return list(value_counts) + + def _get_dummies(self, dataset: pd.DataFrame, processing_features: dict) -> pd.DataFrame: + """ + Method to call the pandas.get_dummies() method to convert categorical into multiple columns + of 0 and 1. + """ + for feature, feature_values in processing_features.items(): + self._set_other_values(dataset, feature, feature_values) + processed_dataset = pd.get_dummies(dataset, columns=processing_features.keys()) + return processed_dataset + + def _set_other_values(self, dataset: pd.DataFrame, feature_name: str, feature_values: list) -> \ + None: + """ + Method to set all other entries within a column to "other" if they are not in + feature_values list. + """ + self.log.debug( + 'Converting %d features for feature: %s : %s', + len(feature_values), + feature_name, + ", ".join(feature_values) + ) + dataset[feature_name] = np.where( + dataset[feature_name].isin(feature_values), + dataset[feature_name], + 'other' + ) diff --git a/src/molgenis/capice/utilities/enums.py b/src/molgenis/capice/utilities/enums.py index 88244e64..239b47a9 100644 --- a/src/molgenis/capice/utilities/enums.py +++ b/src/molgenis/capice/utilities/enums.py @@ -8,8 +8,8 @@ class Column(Enum): chr_pos_ref_alt = 'chr_pos_ref_alt' chr = 'chr' pos = 'pos' - ref = 'ref' - alt = 'alt' + ref = 'REF' + alt = 'ALT' gene_name = 'gene_name' gene_id = 'gene_id' id_source = 'id_source' diff --git a/src/molgenis/capice/utilities/load_file_postprocessor.py b/src/molgenis/capice/utilities/load_file_postprocessor.py index 9f3b5366..6218794e 100644 --- a/src/molgenis/capice/utilities/load_file_postprocessor.py +++ b/src/molgenis/capice/utilities/load_file_postprocessor.py @@ -33,8 +33,8 @@ def _col_renamer(self): self.dataset.rename( columns={'CHROM': Column.chr.value, 'POS': Column.pos.value, - 'REF': Column.ref.value, - 'ALT': Column.alt.value, + # 'REF': Column.ref.value, + # 'ALT': Column.alt.value, 'Gene': Column.gene_id.value, 'SYMBOL_SOURCE': Column.id_source.value, 'Feature': Column.feature.value, diff --git a/src/molgenis/capice/utilities/preprocessor.py b/src/molgenis/capice/utilities/preprocessor.py deleted file mode 100644 index b0fb2124..00000000 --- a/src/molgenis/capice/utilities/preprocessor.py +++ /dev/null @@ -1,191 +0,0 @@ -import numpy as np -import pandas as pd - -from molgenis.capice.core.logger import Logger -from molgenis.capice.core.capice_manager import CapiceManager -from molgenis.capice.utilities.enums import Column, UniqueSeparator -from molgenis.capice.utilities.column_utils import ColumnUtils - - -class PreProcessor: - """ - Class to preprocess the data before predicting or training to separate - categorical columns. - """ - - def __init__(self, exclude_features: list, input_features: list, train: bool = False): - """ - :param exclude_features: list, - all the features that the preprocessor should not process. - Features that are already excluded include: - chr_pos_ref_alt, chr and pos. - :param input_features: list, a list containing either all the features present within a - model file (in case train=False) or a list containing all the features that the user - supplied in the train_features.json (in case train=True). - :param train: bool, whenever the train protocol should be started or not. - """ - self.log = Logger().logger - self.manager = CapiceManager() - self.log.info('Preprocessor started.') - self.train = train - self.exclude_features = [ - Column.chr_pos_ref_alt.value, - Column.chr.value, - Column.pos.value - ] - self.exclude_features += exclude_features - self.model_features = input_features - self.objects = [] - - def preprocess(self, dataset: pd.DataFrame): - """ - Callable function for the preprocessor to start preprocessing. - :param dataset: unprocessed pandas DataFrame - :return: processed pandas Dataframe - """ - dataset = self._create_preservation_col(dataset) - self._get_categorical_columns(dataset) - processed_dataset = self._process_objects(dataset) - if not self.train: - processed_dataset = self._ensure_columns_present(processed_dataset) - self.log.info('Successfully preprocessed data.') - return processed_dataset - - @staticmethod - def _create_preservation_col(dataset): - """ - Function to create the chr_pos_ref_alt column so that it doesn't get - lost in preprocessing. - :param dataset: unprocessed pandas DataFrame - :return: unprocessed pandas DataFrame - containing column 'chr_pos_ref_alt' - """ - dataset[Column.chr_pos_ref_alt.value] = dataset[ - [Column.chr.value, Column.pos.value, Column.ref.value, Column.alt.value] - ].astype(str).agg(UniqueSeparator.unique_separator.value.join, axis=1) - return dataset - - def _get_categorical_columns(self, dataset: pd.DataFrame): - """ - Function to get the categorical columns that are within the supplied - annotation features of the imputing file. - :param dataset: pandas DataFrame - """ - for feature in dataset.select_dtypes(include=["O"]).columns: - if feature not in self.exclude_features and feature in self.model_features: - self.objects.append(feature) - self.log.debug('Converting the categorical columns: %s.', ', '.join(self.objects)) - - def _process_objects(self, dataset: pd.DataFrame): - """ - (If train) will create a dictionary telling the processor how many - categories are within a certain column. - If not train: Will look up each annotation feature from the impute file - within the columns of the datafile (either in full name or the column - starts with the feature from the impute file). - This dictionary is then passed to the actual processor. - :param dataset: unprocessed pandas DataFrame - :return: processed pandas DataFrame - """ - annotation_feats_dict = {} - if self.train: - hardcoded_features = [Column.ref.value, Column.alt.value] - for feature in hardcoded_features: - annotation_feats_dict[feature] = 5 - self.log.info('Training protocol, creating new categorical conversion identifiers.') - for feat in self.objects: - if feat not in annotation_feats_dict.keys(): - annotation_feats_dict[feat] = 5 - else: - for feature in self.objects: - annotation_feats_dict = self._process_objects_no_train( - feature=feature, - annotation_features_dict=annotation_feats_dict - ) - processed_data = self._process_categorical_vars( - dataset=dataset, - annotation_feats_dict=annotation_feats_dict - ) - return processed_data - - def _process_objects_no_train(self, feature: str, annotation_features_dict: dict): - for model_feature in self.model_features: - if model_feature.startswith(feature): - extension = model_feature.split(''.join([feature, '_']))[-1] - if feature in annotation_features_dict.keys(): - annotation_features_dict[feature].append(extension) - else: - annotation_features_dict[feature] = [extension] - return annotation_features_dict - - def _process_categorical_vars(self, dataset: pd.DataFrame, annotation_feats_dict: dict): - """ - Processor of categorical columns. Will create new columns based on the - quantity of a value within a column. - :param dataset: unprocessed pandas DataFrame - :param annotation_feats_dict: - dictionary that is to contain the levels for each categorical - feature - :return: processed pandas DataFrame - """ - if self.train: - for annotation_feature in annotation_feats_dict.keys(): - feature_names = self._get_top_n_cats( - column=dataset[annotation_feature], - return_num=annotation_feats_dict[annotation_feature] - ) - dataset[annotation_feature] = np.where( - dataset[annotation_feature].isin(feature_names), - dataset[annotation_feature], - 'other' - ) - else: - for annotation_feature in annotation_feats_dict.keys(): - feature_names = annotation_feats_dict[annotation_feature] - self.log.debug('For feature: %s loaded %s levels: %s', - annotation_feature, - len(feature_names), - feature_names - ) - dataset[annotation_feature] = np.where( - dataset[annotation_feature].isin(feature_names), - dataset[annotation_feature], - 'other' - ) - dataset = pd.get_dummies(dataset, columns=list(annotation_feats_dict.keys())) - - return dataset - - def _get_top_n_cats(self, column: pd.Series, return_num: int): - """ - Function for when a training file is preprocessed to get the top - return_num quantity values within a categorical column. - Some converting is done for the logger to be able to print them. - :param column: pandas Series - :param return_num: integer - :return: pandas Series - """ - value_counts = column.value_counts().index[:return_num].values - printable_value_counts = [] - for value in value_counts: - if not isinstance(value, str): - value = str(value) - printable_value_counts.append(value) - message = 'For feature: %s saved the following values: %s' - self.log.info(message, column.name, ', '.join(printable_value_counts)) - return value_counts - - def _ensure_columns_present(self, dataset): - """ - Function to ensure that for the prediction all prediction columns - are present. If a columns is not present, add it with a full - columns of NaN. - """ - column_utils = ColumnUtils() - column_utils.set_specified_columns(self.model_features) - missing = column_utils.get_missing_diff_with(dataset.columns) - for feature in missing: - message = 'Detected column %s not present in columns. Adding full column of NaN' - self.log.debug(message, feature) - dataset[feature] = np.nan - return dataset diff --git a/src/molgenis/capice/validators/model_validator.py b/src/molgenis/capice/validators/model_validator.py index 9462339f..acc3378d 100644 --- a/src/molgenis/capice/validators/model_validator.py +++ b/src/molgenis/capice/validators/model_validator.py @@ -5,7 +5,8 @@ def validate_has_required_attributes(model): Function to validate if the required attributes CAPICE_version, impute_values and predict_proba are present. """ - required_attributes = ['CAPICE_version', 'vep_features', 'vep_outputs', 'predict_proba'] + required_attributes = ['CAPICE_version', 'vep_features', 'vep_outputs', + 'processable_features', 'predict_proba'] for attribute in required_attributes: if attribute not in dir(model): raise AttributeError(f'Unable to locate attribute {attribute} in model file!') diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index 2e4c6dfc..2877ffcf 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -57,16 +57,16 @@ def test_validate_train_features_duplicates_pass(self): self.main._validate_train_features_duplicates(test_features) def test_component_reset_train_features(self): - user_input = ['ref', 'Amino_acids', 'foo'] - vep_inputs = ['ref', 'Amino_acids'] + user_input = ['REF', 'Amino_acids', 'foo'] + vep_inputs = ['REF', 'Amino_acids'] vep_outputs = ['oAA', 'nAA'] dataset = pd.DataFrame( - columns=['ref', 'oAA', 'nAA', 'foo'] + columns=['REF', 'oAA', 'nAA', 'foo'] ) observed = self.main._reset_train_features( user_input, vep_inputs, vep_outputs, dataset.columns) # Set because order is not important - self.assertSetEqual(set(observed), {'ref', 'oAA', 'nAA', 'foo'}) + self.assertSetEqual(set(observed), {'REF', 'oAA', 'nAA', 'foo'}) def test_integration_reset_train_features(self): with open(self.main.json_path, 'rt') as fh: @@ -79,7 +79,7 @@ def test_integration_reset_train_features(self): data_processed.columns) expected = [ 'PolyPhenCat', 'PolyPhenVal', 'cDNApos', 'relcDNApos', 'SIFTcat', 'SIFTval', - 'protPos', 'relProtPos', 'oAA', 'nAA', 'CDSpos', 'relCDSpos', 'ref', 'alt', + 'protPos', 'relProtPos', 'oAA', 'nAA', 'CDSpos', 'relCDSpos', 'REF', 'ALT', 'is_regulatory_region_variant', 'is_regulatory_region_ablation', 'is_regulatory_region_amplification', 'is_missense_variant', 'is_intron_variant', 'is_upstream_gene_variant', 'is_downstream_gene_variant', 'is_synonymous_variant', @@ -238,8 +238,8 @@ def test_processed_features(self): def test_full_processed_features(self): loaded_dataset = pd.DataFrame( { - 'ref': ['C', 'GC'], - 'alt': ['A', 'G'], + 'REF': ['C', 'GC'], + 'ALT': ['A', 'G'], 'PolyPhen': [0.1, 0.01], 'Sift': [0.1, 0.01], 'Other_feature': ['foo', 'bar'] @@ -252,10 +252,94 @@ def test_full_processed_features(self): features, vep_input, vep_output, processed_data.columns) self.main._get_processed_features(processed_data, resetted_features) self.assertSetEqual( - {'ref', 'alt', 'Length', 'Type', 'PolyPhenVal', 'PolyPhenCat'}, + {'REF', 'ALT', 'Length', 'Type', 'PolyPhenVal', 'PolyPhenCat'}, set(self.main.processed_features) ) + def test_component_feature_selection(self): + test_case = pd.DataFrame( + { + 'chr': [1, 2, 3], + 'pos': [1, 2, 3], + 'REF': ['A', 'AT', 'ATCG'], + 'ALT': ['C', 'G', 'ATGCAB'], + 'REFSEQ_MATCH': ['foo', 'bar', 'baz'], # Included because of REF, can cause issues + 'ALTERNATIVE_FEATURE': ['foo', 'bar', 'baz'], + 'feature_1': ['foo_bar', 'bar', 'baz'] + } + ) + user_input = ['REF', 'ALT', 'Type', 'Length', 'feature_1'] + processed_data, vep_input, vep_output = self.main.process(test_case, user_input) + self.assertSetEqual( + set(vep_input), + {'REF'} + ) + self.assertSetEqual( + set(vep_output), + {'Type', 'Length'} + ) + processable_features = self.main._reset_processing_features( + user_input, vep_input, vep_output, processed_data.columns + ) + self.assertSetEqual( + set(processable_features), + {'REF', 'ALT', 'Type', 'Length', 'feature_1'} + ) + fully_processed_data, processed_features = self.main.categorical_process( + processed_data, train_features=processable_features, processing_features=None + ) + # Test to see if REF is successfully processed + self.assertIn( + 'REF_A', + fully_processed_data.columns + ) + # Test to see if REFSEQ is successfully skipped + self.assertNotIn( + 'REFSEQ_MATCH_foo', + fully_processed_data.columns + ) + # Another test to see if feature_1 is successfully processed + self.assertIn( + 'feature_1_foo_bar', + fully_processed_data.columns + ) + # Test to see if category A is successfully saved for REF + self.assertIn( + 'A', + processed_features['REF'] + ) + + self.main._set_train_features( + processable_features, processed_features + ) + + # Test to see if REF_A is successfully inserted into the final training features + self.assertIn( + 'REF_A', + self.main.train_features + ) + + # Test to see if REFSEQ_MATCH_foo is successfully skipped + self.assertNotIn( + 'REFSEQ_MATCH_foo', + self.main.train_features + ) + # Test to see if multiple underscores also get successfully inserted + self.assertIn( + 'feature_1_foo_bar', + self.main.train_features + ) + self.assertSetEqual( + set(self.main.train_features), + { + 'REF_A', 'REF_AT', 'REF_ATCG', + 'ALT_C', 'ALT_G', 'ALT_ATGCAB', + 'Type_DELINS', 'Type_SNV', + 'Length', + 'feature_1_foo_bar', 'feature_1_bar', 'feature_1_baz' + } + ) + if __name__ == '__main__': unittest.main() diff --git a/tests/capice/utilities/test_predict.py b/tests/capice/utilities/test_predict.py index 613c9fe9..5d1b5e73 100644 --- a/tests/capice/utilities/test_predict.py +++ b/tests/capice/utilities/test_predict.py @@ -24,7 +24,7 @@ def test_unit_prediction(self): """ print('Prediction (unit)') self.main.predict( - self.main.preprocess( + self.main.process( self.main.process( self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names @@ -38,7 +38,7 @@ def test_component_prediction(self): """ print('Prediction (component)') prediction = self.main.predict( - self.main.preprocess( + self.main.process( self.main.process( self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names diff --git a/tests/capice/utilities/test_predictor.py b/tests/capice/utilities/test_predictor.py index 99bf5d80..e341433d 100644 --- a/tests/capice/utilities/test_predictor.py +++ b/tests/capice/utilities/test_predictor.py @@ -10,7 +10,7 @@ def setUpClass(cls): print('Setting up.') main, model = set_up_impute_preprocess() cls.predictor = Predictor(model) - cls.dataset = main.preprocess( + cls.dataset = main.process( main.process( main._load_file(), process_features=model.vep_features ), input_features=model.get_booster().feature_names diff --git a/tests/capice/utilities/test_preprocessing.py b/tests/capice/utilities/test_preprocessing.py index 442636b6..c645ae64 100644 --- a/tests/capice/utilities/test_preprocessing.py +++ b/tests/capice/utilities/test_preprocessing.py @@ -4,7 +4,7 @@ import pandas as pd from tests.capice.test_templates import set_up_impute_preprocess, teardown -from molgenis.capice.utilities.preprocessor import PreProcessor +from molgenis.capice.utilities.categorical_processor import CategoricalProcessor class TestPreprocessing(unittest.TestCase): @@ -27,7 +27,7 @@ def test_unit_preprocessing_file(self): the file header information. """ print('Preprocessing (unit) (file)') - self.main.preprocess( + self.main.process( loaded_data=self.main.process( self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names @@ -42,7 +42,7 @@ def test_component_preprocessing(self): considered categorical. """ print('Preprocessing (component)') - processed_file = self.main.preprocess( + processed_file = self.main.process( self.main.process( self.main._load_file(), process_features=self.model.vep_features ), input_features=self.model.get_booster().feature_names @@ -76,10 +76,10 @@ def test_preprocessing_train(self): } ) user_input_features = ['foo', 'bar', 'baz', 'feature_1'] - processor = PreProcessor( + processor = CategoricalProcessor( exclude_features=['feature_excluded'], input_features=user_input_features, train=True ) - observed = processor.preprocess(data) + observed = processor.process(data) expected = pd.DataFrame( { 'foo_a': [1, 0, 0, 0, 0, 0], diff --git a/tests/capice/utilities/test_preprocessor.py b/tests/capice/utilities/test_preprocessor.py index 29eb088f..50b145a7 100644 --- a/tests/capice/utilities/test_preprocessor.py +++ b/tests/capice/utilities/test_preprocessor.py @@ -2,7 +2,7 @@ import pandas as pd -from molgenis.capice.utilities.preprocessor import PreProcessor +from molgenis.capice.utilities.categorical_processor import CategoricalProcessor def get_uint8_array(values_list): @@ -13,7 +13,7 @@ class TestPreprocessor(unittest.TestCase): @classmethod def setUp(cls): print('Setting up.') - cls.preprocessor = PreProcessor([], []) + cls.preprocessor = CategoricalProcessor([], []) def test__create_preservation_col(self): input_data_frame = pd.DataFrame( @@ -39,7 +39,7 @@ def test_is_train(self): self.assertEqual(False, self.preprocessor.train) def test__get_categorical_columns(self): - preprocessor = PreProcessor([], ['ref', 'alt']) + preprocessor = CategoricalProcessor([], ['ref', 'alt']) input_data_frame = pd.DataFrame( {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], 'alt': ['G', 'A', 'T']}) From 1a26865f121afeb51ae1679f2c34cdde9fe0663d Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 14 Dec 2022 11:59:51 +0100 Subject: [PATCH 15/24] - Fixed tests in test_main_train.py --- tests/capice/test_main_train.py | 48 +++++++-------------------------- 1 file changed, 9 insertions(+), 39 deletions(-) diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index 2877ffcf..0c0a2916 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -63,7 +63,7 @@ def test_component_reset_train_features(self): dataset = pd.DataFrame( columns=['REF', 'oAA', 'nAA', 'foo'] ) - observed = self.main._reset_train_features( + observed = self.main._reset_processing_features( user_input, vep_inputs, vep_outputs, dataset.columns) # Set because order is not important self.assertSetEqual(set(observed), {'REF', 'oAA', 'nAA', 'foo'}) @@ -75,7 +75,7 @@ def test_integration_reset_train_features(self): data = self.main._load_file(additional_required_features=self.main.additional_required) self.main._validate_features_present(data, user_input) data_processed, vep_input, vep_output = self.main.process(data, user_input) - observed = self.main._reset_train_features(user_input, vep_input, vep_output, + observed = self.main._reset_processing_features(user_input, vep_input, vep_output, data_processed.columns) expected = [ 'PolyPhenCat', 'PolyPhenVal', 'cDNApos', 'relcDNApos', 'SIFTcat', 'SIFTval', @@ -172,7 +172,7 @@ def test__set_eval_set_test(self): "test" """ processed_features = ['feat1', 'feat2'] - self.main.processed_features = processed_features + self.main.train_features = processed_features test_set = pd.DataFrame(data={ 'binarized_label': [0, 1, 0], 'feat1': [1, 0, 0], @@ -194,7 +194,7 @@ def test__set_eval_set(self): (length should be 2, as "test" shouldn't be included) """ processed_features = ['feat1', 'feat2'] - self.main.processed_features = processed_features + self.main.train_features = processed_features test_set = pd.DataFrame(data={ 'binarized_label': [0, 1, 0], 'feat1': [1, 0, 0], @@ -207,53 +207,23 @@ def test__set_eval_set(self): pd.testing.assert_series_equal(test_set['binarized_label'], eval_set[0][1]) self.assertEqual(2, len(eval_set[0])) - def test_processed_features(self): - with open( - os.path.join( - _project_root_directory, 'tests', 'resources', 'features_test.json' - ), 'rt' - ) as fh: - features = json.load(fh) - dataset = pd.DataFrame( - { - 'unused_feature_1': [1, 2, 3], - 'feature_1': ['foo', 'bar', 'baz'], - 'unused_feature_2': [3, 4, 5], - 'feature_foobarbaz': ['bar', 'baz', 'foo'], - 'feature_3_cat1': [10, 20, 30], - 'feature_3_cat2': [10, 20, 30], - 'feature_3_cat3': [10, 20, 30] - } - ) - self.main._get_processed_features(dataset, features.keys()) - self.assertSetEqual( - {'feature_1', - 'feature_foobarbaz', - 'feature_3_cat1', - 'feature_3_cat2', - 'feature_3_cat3'}, - set(self.main.processed_features) - ) - def test_full_processed_features(self): loaded_dataset = pd.DataFrame( { 'REF': ['C', 'GC'], 'ALT': ['A', 'G'], 'PolyPhen': [0.1, 0.01], - 'Sift': [0.1, 0.01], + 'SIFT': [0.1, 0.01], 'Other_feature': ['foo', 'bar'] } ) - with open(self.main.json_path, 'rt') as fh: - features = list(json.load(fh).keys()) + features = ['REF', 'ALT', 'PolyPhen', 'SIFT'] processed_data, vep_input, vep_output = self.main.process(loaded_dataset, features) - resetted_features = self.main._reset_train_features( + resetted_features = self.main._reset_processing_features( features, vep_input, vep_output, processed_data.columns) - self.main._get_processed_features(processed_data, resetted_features) self.assertSetEqual( - {'REF', 'ALT', 'Length', 'Type', 'PolyPhenVal', 'PolyPhenCat'}, - set(self.main.processed_features) + {'REF', 'ALT', 'Length', 'Type', 'PolyPhenVal', 'PolyPhenCat', 'SIFTval', 'SIFTcat'}, + set(resetted_features) ) def test_component_feature_selection(self): From a4d44ff738ec593a878a7b3ad59a5dcb9fc20285 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 14 Dec 2022 12:16:49 +0100 Subject: [PATCH 16/24] - Fixed bug that would not take "other" category features as train_features --- .../capice/utilities/categorical_processor.py | 14 +++++------ tests/capice/utilities/test_preprocessor.py | 24 ++++++++++++++++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/molgenis/capice/utilities/categorical_processor.py b/src/molgenis/capice/utilities/categorical_processor.py index 389ade0f..e8d740a2 100644 --- a/src/molgenis/capice/utilities/categorical_processor.py +++ b/src/molgenis/capice/utilities/categorical_processor.py @@ -115,15 +115,13 @@ def _get_top_n_cats(self, column: pd.Series, return_num: int) -> list: :param return_num: integer :return: pandas Series """ - value_counts = column.value_counts().index[:return_num].values - printable_value_counts = [] - for value in value_counts: - if not isinstance(value, str): - value = str(value) - printable_value_counts.append(value) + counts = column.value_counts().index + value_counts = list(counts[:return_num]) + if len(counts) > return_num: + value_counts.append('other') message = 'For feature: %s saved the following values: %s' - self.log.info(message, column.name, ', '.join(printable_value_counts)) - return list(value_counts) + self.log.info(message, column.name, ', '.join(value_counts)) + return value_counts def _get_dummies(self, dataset: pd.DataFrame, processing_features: dict) -> pd.DataFrame: """ diff --git a/tests/capice/utilities/test_preprocessor.py b/tests/capice/utilities/test_preprocessor.py index 50b145a7..3fcf4788 100644 --- a/tests/capice/utilities/test_preprocessor.py +++ b/tests/capice/utilities/test_preprocessor.py @@ -13,7 +13,29 @@ class TestPreprocessor(unittest.TestCase): @classmethod def setUp(cls): print('Setting up.') - cls.preprocessor = CategoricalProcessor([], []) + cls.preprocessor = CategoricalProcessor() + + def test_creation_other(self): + test_case = pd.DataFrame( + { + 'chr': [1, 2, 3, 4, 5, 6], + 'pos': [1, 2, 3, 4, 5, 6], + 'REF': [1, 2, 3, 4, 5, 6], + 'ALT': [1, 2, 3, 4, 5, 6], + 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz', 'last'] + } + ) + observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ + 'foo']) + self.assertIn( + 'foo', + observed_dict.keys() + ) + self.assertIn( + 'other', + observed_dict['foo'] + ) + self.assertIn('foo_other', observed_df.columns) def test__create_preservation_col(self): input_data_frame = pd.DataFrame( From d1114db4896881a8aed3819ded857192da0065a7 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 14 Dec 2022 12:17:50 +0100 Subject: [PATCH 17/24] - Added test for including the notin other category. --- tests/capice/utilities/test_preprocessor.py | 22 +++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tests/capice/utilities/test_preprocessor.py b/tests/capice/utilities/test_preprocessor.py index 3fcf4788..15c2e01d 100644 --- a/tests/capice/utilities/test_preprocessor.py +++ b/tests/capice/utilities/test_preprocessor.py @@ -37,6 +37,28 @@ def test_creation_other(self): ) self.assertIn('foo_other', observed_df.columns) + def test_creation_other_notin(self): + test_case = pd.DataFrame( + { + 'chr': [1, 2, 3, 4, 5], + 'pos': [1, 2, 3, 4, 5], + 'REF': [1, 2, 3, 4, 5], + 'ALT': [1, 2, 3, 4, 5], + 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz'] + } + ) + observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ + 'foo']) + self.assertIn( + 'foo', + observed_dict.keys() + ) + self.assertNotIn( + 'other', + observed_dict['foo'] + ) + self.assertNotIn('foo_other', observed_df.columns) + def test__create_preservation_col(self): input_data_frame = pd.DataFrame( {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], From f27c687ee45938c90094e76ef4fa1d4cbaefb83a Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Wed, 14 Dec 2022 13:32:48 +0100 Subject: [PATCH 18/24] - Changed manual_vep_processor.py output vep_features to directory instead of 2 lists. - Updated poc testing model. --- src/molgenis/capice/main_train.py | 25 +++++++-------- .../capice/utilities/manual_vep_processor.py | 30 +++++++----------- .../capice/validators/model_validator.py | 2 +- tests/capice/test_main_train.py | 30 ++++++++++-------- tests/resources/xgb_booster_poc.ubj | Bin 422720 -> 363040 bytes 5 files changed, 41 insertions(+), 46 deletions(-) diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index c3256572..baadcf3d 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -65,15 +65,14 @@ def run(self): self._validate_features_present(data, train_features) - data, vep_input, vep_output = self.process( + data, vep_processed = self.process( loaded_data=data, process_features=train_features ) processable_features = self._reset_processing_features( train_features, - vep_input, - vep_output, + vep_processed, data.columns ) @@ -88,8 +87,7 @@ def run(self): processed_train, processed_test = self.split_data(dataset=processed_data, test_size=self.train_test_size) model = self.train(test_set=processed_test, train_set=processed_train) - setattr(model, "vep_features", vep_input) - setattr(model, "vep_outputs", vep_output) + setattr(model, "vep_features", list(vep_processed.keys())) setattr(model, "processable_features", processed_features) setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) @@ -99,9 +97,8 @@ def process(loaded_data, process_features: typing.Collection) -> (pd.DataFrame, list[str]): processor = ManualVEPProcessor() processed_data = processor.process(loaded_data, process_features) - process_inputs = processor.get_feature_process_inputs() - process_outputs = processor.get_feature_process_outputs() - return processed_data, process_inputs, process_outputs + processed = processor.get_feature_processes() + return processed_data, processed def _validate_features_present(self, dataset, train_features) -> None: missing = [] @@ -125,22 +122,24 @@ def _validate_train_features_duplicates(self, input_train_features: list): @staticmethod def _reset_processing_features( input_train_features: list, - input_vep_features: list, - output_vep_features: list, + vep_processed: dict, vep_processed_dataframe_columns: pd.DataFrame.columns ) -> list[str]: return_list = [] # Adds the VEP input features to which the processor has property drop = False - for feature in input_vep_features: + for feature in vep_processed.keys(): if feature in vep_processed_dataframe_columns: return_list.append(feature) # Adds back the user input features, but avoiding adding duplicates and # avoiding the features that had property drop = True for feature in input_train_features: - if feature not in return_list and feature not in input_vep_features: + if feature not in return_list and feature not in vep_processed.keys(): return_list.append(feature) # Extending the features with the VEP processors output features - return_list.extend(output_vep_features) + for features in vep_processed.values(): + for feature in features: + if feature not in return_list: + return_list.append(feature) return return_list def _set_train_features(self, processable_features: list, processed_features: dict) -> \ diff --git a/src/molgenis/capice/utilities/manual_vep_processor.py b/src/molgenis/capice/utilities/manual_vep_processor.py index b3c2618b..59736ba0 100644 --- a/src/molgenis/capice/utilities/manual_vep_processor.py +++ b/src/molgenis/capice/utilities/manual_vep_processor.py @@ -16,8 +16,7 @@ class ManualVEPProcessor: def __init__(self): self.log = Logger().logger - self.feature_processing_inputs = [] - self.feature_processing_outputs = [] + self.feature_processing_tracker = {} def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> pd.DataFrame: """ @@ -44,8 +43,7 @@ def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> processor.usable ): self.log.debug('Processing: %s', processor.name) - self.feature_processing_inputs.append(processor.name) - self.feature_processing_outputs.extend(processor.columns) + self._add_feature_tracking(processor.name, processor.columns) dataset = processor.process(dataset) if processor.drop and processor.name not in dropping_columns: dropping_columns.append(processor.name) @@ -58,25 +56,21 @@ def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> self.log.debug('Processed %d features.', n_feats_processed) return dataset - def get_feature_process_inputs(self) -> list: - """ - Getter for the list containing the input VEP features that have been processed by one - of the processors available in the ManualVEPProcessor. - - Returns: - list: Input VEP processing features - """ - return self.feature_processing_inputs + def _add_feature_tracking(self, processor_name: str, processor_features: list): + if processor_name not in self.feature_processing_tracker.keys(): + self.feature_processing_tracker[processor_name] = processor_features + else: + self.feature_processing_tracker[processor_name].extend(processor_features) - def get_feature_process_outputs(self) -> list: + def get_feature_processes(self) -> dict: """ - Getter for the list containing the processed VEP features as output of the - ManualVEPProcessor. + Getter for the dictionary containing all the processed features and their output features. Returns: - list: Output VEP processed features + dict: + Input VEP processing features (key) and their output features (values) """ - return self.feature_processing_outputs + return self.feature_processing_tracker def _load_vep_processors(self): location = os.path.join(get_project_root_dir(), 'vep') diff --git a/src/molgenis/capice/validators/model_validator.py b/src/molgenis/capice/validators/model_validator.py index acc3378d..bb641641 100644 --- a/src/molgenis/capice/validators/model_validator.py +++ b/src/molgenis/capice/validators/model_validator.py @@ -5,7 +5,7 @@ def validate_has_required_attributes(model): Function to validate if the required attributes CAPICE_version, impute_values and predict_proba are present. """ - required_attributes = ['CAPICE_version', 'vep_features', 'vep_outputs', + required_attributes = ['CAPICE_version', 'vep_features', 'processable_features', 'predict_proba'] for attribute in required_attributes: if attribute not in dir(model): diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index 0c0a2916..a3557133 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -58,15 +58,17 @@ def test_validate_train_features_duplicates_pass(self): def test_component_reset_train_features(self): user_input = ['REF', 'Amino_acids', 'foo'] - vep_inputs = ['REF', 'Amino_acids'] - vep_outputs = ['oAA', 'nAA'] + vep_processed = { + 'REF': ['Type', 'Length'], + 'Amino_acids': ['oAA', 'nAA'] + } dataset = pd.DataFrame( columns=['REF', 'oAA', 'nAA', 'foo'] ) observed = self.main._reset_processing_features( - user_input, vep_inputs, vep_outputs, dataset.columns) + user_input, vep_processed, dataset.columns) # Set because order is not important - self.assertSetEqual(set(observed), {'REF', 'oAA', 'nAA', 'foo'}) + self.assertSetEqual(set(observed), {'REF', 'oAA', 'nAA', 'foo', 'Type', 'Length'}) def test_integration_reset_train_features(self): with open(self.main.json_path, 'rt') as fh: @@ -74,8 +76,8 @@ def test_integration_reset_train_features(self): self.main._validate_train_features_duplicates(user_input) data = self.main._load_file(additional_required_features=self.main.additional_required) self.main._validate_features_present(data, user_input) - data_processed, vep_input, vep_output = self.main.process(data, user_input) - observed = self.main._reset_processing_features(user_input, vep_input, vep_output, + data_processed, vep_processed = self.main.process(data, user_input) + observed = self.main._reset_processing_features(user_input, vep_processed, data_processed.columns) expected = [ 'PolyPhenCat', 'PolyPhenVal', 'cDNApos', 'relcDNApos', 'SIFTcat', 'SIFTval', @@ -218,9 +220,9 @@ def test_full_processed_features(self): } ) features = ['REF', 'ALT', 'PolyPhen', 'SIFT'] - processed_data, vep_input, vep_output = self.main.process(loaded_dataset, features) + processed_data, vep_processed = self.main.process(loaded_dataset, features) resetted_features = self.main._reset_processing_features( - features, vep_input, vep_output, processed_data.columns) + features, vep_processed, processed_data.columns) self.assertSetEqual( {'REF', 'ALT', 'Length', 'Type', 'PolyPhenVal', 'PolyPhenCat', 'SIFTval', 'SIFTcat'}, set(resetted_features) @@ -239,17 +241,17 @@ def test_component_feature_selection(self): } ) user_input = ['REF', 'ALT', 'Type', 'Length', 'feature_1'] - processed_data, vep_input, vep_output = self.main.process(test_case, user_input) - self.assertSetEqual( - set(vep_input), - {'REF'} + processed_data, vep_processed = self.main.process(test_case, user_input) + self.assertIn( + 'REF', + vep_processed ) self.assertSetEqual( - set(vep_output), + set(vep_processed['REF']), {'Type', 'Length'} ) processable_features = self.main._reset_processing_features( - user_input, vep_input, vep_output, processed_data.columns + user_input, vep_processed, processed_data.columns ) self.assertSetEqual( set(processable_features), diff --git a/tests/resources/xgb_booster_poc.ubj b/tests/resources/xgb_booster_poc.ubj index 9bd2c274f3ba058c81c49dc98b7b0e46a12107d0..81ad180e5203f95f37ea63bc0f5eca364bdc1b01 100644 GIT binary patch literal 363040 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 z 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

PD)j3oZ@p`jzG#XOL6!1{ZiYT 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 a-6FWR!}>)G3aloVSse+9o$`KhQVQG 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

rmk-`&x*EW`&Gqz)%<_KwCQ0$n$ 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�_clkb1O8 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

r85e?aN0L@7I0I4H{?kcG3 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 literal 363040 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 z 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

PD)j3oZ@p`jzG#XOL6!1{ZiYT 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 a-6FWR!}>)G3al Date: Thu, 15 Dec 2022 10:24:42 +0100 Subject: [PATCH 20/24] - Finalized --- src/molgenis/capice/main_capice.py | 5 +- .../utilities/load_file_postprocessor.py | 2 - .../utilities/test_categorical_processor.py | 227 ++++++++++++++++++ .../utilities/test_file_postprocessor.py | 4 +- .../utilities/test_load_file_postprocessor.py | 4 +- .../utilities/test_manual_vep_processor.py | 52 ++-- tests/capice/utilities/test_predict.py | 16 +- tests/capice/utilities/test_predictor.py | 8 +- tests/capice/utilities/test_preprocessing.py | 127 ---------- tests/capice/utilities/test_preprocessor.py | 162 ------------- .../test_post_file_parse_validator.py | 6 +- .../test_post_vep_processing_validator.py | 12 +- tests/capice/vep/test_length.py | 8 +- tests/capice/vep/test_type.py | 8 +- 14 files changed, 293 insertions(+), 348 deletions(-) create mode 100644 tests/capice/utilities/test_categorical_processor.py delete mode 100644 tests/capice/utilities/test_preprocessing.py delete mode 100644 tests/capice/utilities/test_preprocessor.py diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index a8d674d3..0eaea4d7 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -71,8 +71,9 @@ def process(loaded_data, process_features: typing.Collection): pass @staticmethod - def categorical_process(loaded_data, processing_features: dict | None, train_features: list | - None): + def categorical_process(loaded_data, + processing_features: dict | None = None, + train_features: list | None = None): processor = CategoricalProcessor() capice_data, processed_features = processor.process( loaded_data, diff --git a/src/molgenis/capice/utilities/load_file_postprocessor.py b/src/molgenis/capice/utilities/load_file_postprocessor.py index 6218794e..251026a8 100644 --- a/src/molgenis/capice/utilities/load_file_postprocessor.py +++ b/src/molgenis/capice/utilities/load_file_postprocessor.py @@ -33,8 +33,6 @@ def _col_renamer(self): self.dataset.rename( columns={'CHROM': Column.chr.value, 'POS': Column.pos.value, - # 'REF': Column.ref.value, - # 'ALT': Column.alt.value, 'Gene': Column.gene_id.value, 'SYMBOL_SOURCE': Column.id_source.value, 'Feature': Column.feature.value, diff --git a/tests/capice/utilities/test_categorical_processor.py b/tests/capice/utilities/test_categorical_processor.py new file mode 100644 index 00000000..c9cb26b2 --- /dev/null +++ b/tests/capice/utilities/test_categorical_processor.py @@ -0,0 +1,227 @@ +import unittest + +import numpy as np +import pandas as pd + +from molgenis.capice.utilities.enums import Column +from tests.capice.test_templates import set_up_impute_preprocess, teardown +from molgenis.capice.utilities.categorical_processor import CategoricalProcessor + + +class TestCategoricalProcessor(unittest.TestCase): + @classmethod + def setUp(cls): + cls.preprocessor = CategoricalProcessor() + cls.chr_pos_ref_alt_testcase = pd.DataFrame( + { + 'chr': [1, 2, 3, 4, 5], + 'pos': [1, 2, 3, 4, 5], + 'REF': [1, 2, 3, 4, 5], + 'ALT': [1, 2, 3, 4, 5] + } + ) + cls.main, cls.model = set_up_impute_preprocess() + + @classmethod + def tearDownClass(cls) -> None: + teardown() + + def test_unit_preprocessing_file(self): + """ + Unit test for the preprocessor to see if the preprocessor works just + the file header information. + """ + print('Preprocessing (unit) (file)') + self.main.categorical_process( + loaded_data=self.main.process( + self.main._load_file() + ), processing_features=self.model.processable_features + ) + + def test_component_preprocessing(self): + """ + component test for preprocessing. All columns within the CADD + features should be processed. Furthermore, + within all processed columns, + there should not be 1 or more column that is still + considered categorical. + """ + print('Preprocessing (component)') + processed_file = self.main.categorical_process( + loaded_data=self.main.process( + self.main._load_file() + ), processing_features=self.model.processable_features + )[0] + model_features = self.model.get_booster().feature_names + processed_columns = processed_file.columns + for feature in model_features: + # Check if all model features are present before predicting + self.assertIn(feature, processed_columns) + # Check if none of the processed columns can be marked as categorical + self.assertEqual( + len(processed_file[model_features].select_dtypes(include=["O"]).columns), + 0 + ) + + def test_preprocessing_train(self): + """ + Component test for the preprocessing part with train=True. + """ + data = pd.DataFrame( + { + 'foo': ['a', 'b', 'c', np.nan, np.nan, np.nan], + 'bar': ['a', np.nan, np.nan, np.nan, np.nan, np.nan], + 'baz': ['a', 'b', 'c', 'd', 'e', 'f'], + 'feature_1': [1, 2, 3, 4, np.nan, np.nan], + 'feature_excluded': [1, 2, 3, 4, np.nan, np.nan], + 'chr': [1, 2, 3, 4, 5, 6], + 'pos': [100, 200, 300, 400, 500, 600], + 'REF': ['A', 'T', 'A', 'T', 'A', 'T'], + 'ALT': ['G', 'C', 'G', 'C', 'G', 'C'] + } + ) + user_input_features = ['foo', 'bar', 'baz', 'feature_1'] + processor = CategoricalProcessor() + observed = processor.process(data, processable_features=user_input_features)[0] + expected = pd.DataFrame( + { + 'foo_a': [1, 0, 0, 0, 0, 0], + 'foo_b': [0, 1, 0, 0, 0, 0], + 'foo_c': [0, 0, 1, 0, 0, 0], + 'foo_other_CAPICE_value': [0, 0, 0, 1, 1, 1], + 'bar_a': [1, 0, 0, 0, 0, 0], + 'bar_other_CAPICE_value': [0, 1, 1, 1, 1, 1], + 'baz_a': [1, 0, 0, 0, 0, 0], + 'baz_b': [0, 1, 0, 0, 0, 0], + 'baz_c': [0, 0, 1, 0, 0, 0], + 'baz_d': [0, 0, 0, 1, 0, 0], + 'baz_e': [0, 0, 0, 0, 1, 0], + 'baz_other_CAPICE_value': [0, 0, 0, 0, 0, 1], + 'REF': ['A', 'T', 'A', 'T', 'A', 'T'], + 'ALT': ['G', 'C', 'G', 'C', 'G', 'C'], + 'feature_1': [1, 2, 3, 4, np.nan, np.nan], + 'feature_excluded': [1, 2, 3, 4, np.nan, np.nan], + 'chr': [1, 2, 3, 4, 5, 6], + 'pos': [100, 200, 300, 400, 500, 600], + 'chr_pos_ref_alt': [ + '1_VeryUniqueCAPICESeparator_100_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '2_VeryUniqueCAPICESeparator_200_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_C', + '3_VeryUniqueCAPICESeparator_300_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '4_VeryUniqueCAPICESeparator_400_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_C', + '5_VeryUniqueCAPICESeparator_500_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '6_VeryUniqueCAPICESeparator_600_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_C', + ] + } + ) + pd.testing.assert_frame_equal( + observed.sort_index(axis=1), expected.sort_index(axis=1), check_dtype=False + ) + + def test_creation_other(self): + test_case = pd.concat( + [ + self.chr_pos_ref_alt_testcase, + pd.DataFrame( + { + 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz', 'last'] + } + ) + ], axis=1 + ) + observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ + 'foo']) + self.assertIn( + 'foo', + observed_dict.keys() + ) + self.assertIn( + Column.other.value, + observed_dict['foo'] + ) + self.assertIn('foo_other_CAPICE_value', observed_df.columns) + + def test_creation_other_notin(self): + test_case = pd.concat( + [ + self.chr_pos_ref_alt_testcase, + pd.DataFrame( + { + 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz'] + } + ) + ], axis=1 + ) + observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ + 'foo']) + self.assertIn( + 'foo', + observed_dict.keys() + ) + self.assertNotIn( + 'other', + observed_dict['foo'] + ) + self.assertNotIn('foo_other', observed_df.columns) + + def test_other_in_top_5(self): + # Tests that, if "other" occurs in the top 5 categories, only this "other" feature gets + # sampled and no other sample get sampled into the "other" category. + test_case = pd.concat( + [ + self.chr_pos_ref_alt_testcase, + pd.DataFrame( + { + 'foo': ['other', 'other', 'foo', 'bar', 'baz', 'foobar', 'foobaz'] + } + ) + ], axis=1 + ) + observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ + 'foo']) + test_series = observed_df['foo_other'] + self.assertFalse(test_series[test_series > 0].size > 2, + msg=f'Actual size: {test_series[test_series > 0].size}') + self.assertIn( + 'foo_other_CAPICE_value', + observed_df.columns + ) + + def test__create_preservation_col(self): + input_data_frame = pd.DataFrame( + {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'REF': ['A', 'T', 'C'], + 'ALT': ['G', 'A', 'T']}) + expected_output = pd.DataFrame( + {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'REF': ['A', 'T', 'C'], + 'ALT': ['G', 'A', 'T'], + 'chr_pos_ref_alt': + ['1_VeryUniqueCAPICESeparator_123_VeryUniqueCAPICESeparator_' + 'A_VeryUniqueCAPICESeparator_G', + '2_VeryUniqueCAPICESeparator_456_VeryUniqueCAPICESeparator_' + 'T_VeryUniqueCAPICESeparator_A', + '4_VeryUniqueCAPICESeparator_789_VeryUniqueCAPICESeparator_' + 'C_VeryUniqueCAPICESeparator_T'] + } + ) + self.preprocessor._create_preservation_col(input_data_frame) + + pd.testing.assert_frame_equal(expected_output, input_data_frame) + + def test__get_categorical_columns(self): + preprocessor = CategoricalProcessor() + input_data_frame = pd.DataFrame( + {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'REF': ['A', 'T', 'C'], + 'ALT': ['G', 'A', 'T']}) + features = preprocessor._get_categorical_columns(input_data_frame, processable_features=[ + 'REF', 'ALT']) + self.assertIn('REF', features.keys()) + self.assertIn('ALT', features.keys()) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/capice/utilities/test_file_postprocessor.py b/tests/capice/utilities/test_file_postprocessor.py index 257f9d73..0c8698ed 100644 --- a/tests/capice/utilities/test_file_postprocessor.py +++ b/tests/capice/utilities/test_file_postprocessor.py @@ -45,8 +45,8 @@ def test_load_file_pre_processor(self): { "chr": [1, 2, 3], "pos": [100, 200, 300], - "ref": ['A', 'T', 'G'], - "alt": ['T', 'G', 'A'], + "REF": ['A', 'T', 'G'], + "ALT": ['T', 'G', 'A'], "id_source": ['foo', 'foo', 'bar'], "feature": ['bar', 'bar', 'buz'], "gene_name": ['g1', 'g2', 'g3'], diff --git a/tests/capice/utilities/test_load_file_postprocessor.py b/tests/capice/utilities/test_load_file_postprocessor.py index c0af6215..76558199 100644 --- a/tests/capice/utilities/test_load_file_postprocessor.py +++ b/tests/capice/utilities/test_load_file_postprocessor.py @@ -32,8 +32,8 @@ def test_process(self): { 'chr': [1], 'pos': [123], - 'ref': ['A'], - 'alt': ['G'], + 'REF': ['A'], + 'ALT': ['G'], 'gene_id': [123], 'id_source': ['hgnc'], 'feature': ['NM1.123'], diff --git a/tests/capice/utilities/test_manual_vep_processor.py b/tests/capice/utilities/test_manual_vep_processor.py index b18412a6..461bc421 100644 --- a/tests/capice/utilities/test_manual_vep_processor.py +++ b/tests/capice/utilities/test_manual_vep_processor.py @@ -17,8 +17,8 @@ def setUpClass(cls) -> None: { 'chr': {0: '1', 1: '1'}, 'pos': {0: 1, 1: 10042538}, - 'ref': {0: 'C', 1: 'C'}, - 'alt': {0: 'T', 1: 'T'}, + 'REF': {0: 'C', 1: 'C'}, + 'ALT': {0: 'T', 1: 'T'}, 'Consequence': {0: 'missense_variant', 1: 'downstream_gene_variant'}, 'gene_name': {0: 'NMNAT1', 1: 'NMNAT1'}, 'SourceID': {0: 'HGNC', 1: 'HGNC'}, @@ -36,7 +36,7 @@ def setUpClass(cls) -> None: } ) cls.annotator = ManualVEPProcessor() - cls.user_input_features = ['ref', 'PolyPhen', 'SIFT', 'Consequence', 'cDNA_position', + cls.user_input_features = ['REF', 'PolyPhen', 'SIFT', 'Consequence', 'cDNA_position', 'CDS_position', 'Protein_position', 'Amino_acids'] def setUp(self) -> None: @@ -101,8 +101,8 @@ def test_component_annotator(self): [ 'chr', 'pos', - 'ref', - 'alt', + 'REF', + 'ALT', 'gene_name', 'SourceID', 'HGNC_ID', @@ -130,8 +130,8 @@ def test_bug_attributeerror_template_sift_polyphen(self): { 'chr': ['1', '2'], 'pos': [100, 200], - 'ref': ['A', 'GCC'], - 'alt': ['C', 'C'], + 'REF': ['A', 'GCC'], + 'ALT': ['C', 'C'], 'SIFT': [np.nan, np.nan], 'PolyPhen': [np.nan, np.nan] } @@ -141,8 +141,8 @@ def test_bug_attributeerror_template_sift_polyphen(self): { 'chr': ['1', '2'], 'pos': [100, 200], - 'ref': ['A', 'GCC'], - 'alt': ['C', 'C'], + 'REF': ['A', 'GCC'], + 'ALT': ['C', 'C'], 'SIFTcat': [np.nan, np.nan], 'SIFTval': [np.nan, np.nan], 'PolyPhenCat': [np.nan, np.nan], @@ -158,27 +158,35 @@ def test_bug_attributeerror_template_sift_polyphen(self): def prepare_getter_tests(): data = pd.DataFrame( { - 'ref': ['A', 'C'], - 'alt': ['T', 'G'], + 'REF': ['A', 'C'], + 'ALT': ['T', 'G'], 'PolyPhen': [0.08, 0.98] } ) - user_input = ['ref', 'PolyPhen'] + user_input = ['REF', 'PolyPhen'] annotator = ManualVEPProcessor() annotator.process(data, user_input) return annotator def test_getter_vep_input(self): - annotator = self.prepare_getter_tests() - observed = annotator.get_feature_process_inputs() - expected = {'ref', 'PolyPhen'} - self.assertSetEqual(set(observed), expected) - - def test_getter_vep_output(self): - annotator = self.prepare_getter_tests() - observed = annotator.get_feature_process_outputs() - expected = {'Length', 'Type', 'PolyPhenCat', 'PolyPhenVal'} - self.assertSetEqual(set(observed), expected) + data = pd.DataFrame( + { + 'REF': ['A', 'C'], + 'ALT': ['T', 'G'], + 'PolyPhen': [0.08, 0.98] + } + ) + user_input = ['REF', 'PolyPhen'] + annotator = ManualVEPProcessor() + annotator.process(data, user_input) + observed = annotator.get_feature_processes() + expected_keys = ['REF', 'PolyPhen'] + expected_values = ['Type', 'Length', 'PolyPhenCat', 'PolyPhenVal'] + for input_feature in observed.keys(): + self.assertIn(input_feature, expected_keys) + for output_features in observed.values(): + for feature in output_features: + self.assertIn(feature, expected_values) if __name__ == '__main__': diff --git a/tests/capice/utilities/test_predict.py b/tests/capice/utilities/test_predict.py index 5d1b5e73..deea00d2 100644 --- a/tests/capice/utilities/test_predict.py +++ b/tests/capice/utilities/test_predict.py @@ -24,11 +24,11 @@ def test_unit_prediction(self): """ print('Prediction (unit)') self.main.predict( - self.main.process( + self.main.categorical_process( self.main.process( - self.main._load_file(), process_features=self.model.vep_features - ), input_features=self.model.get_booster().feature_names - ) + self.main._load_file() + ), processing_features=self.model.processable_features + )[0] ) def test_component_prediction(self): @@ -38,11 +38,11 @@ def test_component_prediction(self): """ print('Prediction (component)') prediction = self.main.predict( - self.main.process( + self.main.categorical_process( self.main.process( - self.main._load_file(), process_features=self.model.vep_features - ), input_features=self.model.get_booster().feature_names - ) + self.main._load_file() + ), processing_features=self.model.processable_features + )[0] ) # Combined sum of the prediction score should be higher than 0 self.assertGreater(prediction[Column.score.value].sum(), 0) diff --git a/tests/capice/utilities/test_predictor.py b/tests/capice/utilities/test_predictor.py index e341433d..7e74dde8 100644 --- a/tests/capice/utilities/test_predictor.py +++ b/tests/capice/utilities/test_predictor.py @@ -10,11 +10,11 @@ def setUpClass(cls): print('Setting up.') main, model = set_up_impute_preprocess() cls.predictor = Predictor(model) - cls.dataset = main.process( + cls.dataset = main.categorical_process( main.process( - main._load_file(), process_features=model.vep_features - ), input_features=model.get_booster().feature_names - ) + main._load_file() + ), processing_features=model.processable_features + )[0] def test_predict(self): observed = self.predictor.predict(self.dataset) diff --git a/tests/capice/utilities/test_preprocessing.py b/tests/capice/utilities/test_preprocessing.py deleted file mode 100644 index c645ae64..00000000 --- a/tests/capice/utilities/test_preprocessing.py +++ /dev/null @@ -1,127 +0,0 @@ -import unittest - -import numpy as np -import pandas as pd - -from tests.capice.test_templates import set_up_impute_preprocess, teardown -from molgenis.capice.utilities.categorical_processor import CategoricalProcessor - - -class TestPreprocessing(unittest.TestCase): - @classmethod - def setUpClass(cls): - print('Setting up.') - cls.main, cls.model = set_up_impute_preprocess() - - @classmethod - def tearDownClass(cls): - print('Tearing down.') - teardown() - - def setUp(self): - print('Testing case:') - - def test_unit_preprocessing_file(self): - """ - Unit test for the preprocessor to see if the preprocessor works just - the file header information. - """ - print('Preprocessing (unit) (file)') - self.main.process( - loaded_data=self.main.process( - self.main._load_file(), process_features=self.model.vep_features - ), input_features=self.model.get_booster().feature_names - ) - - def test_component_preprocessing(self): - """ - component test for preprocessing. All columns within the CADD - features should be processed. Furthermore, - within all processed columns, - there should not be 1 or more column that is still - considered categorical. - """ - print('Preprocessing (component)') - processed_file = self.main.process( - self.main.process( - self.main._load_file(), process_features=self.model.vep_features - ), input_features=self.model.get_booster().feature_names - ) - model_features = self.model.get_booster().feature_names - processed_columns = processed_file.columns - for feature in model_features: - # Check if all model features are present before predicting - self.assertIn(feature, processed_columns) - # Check if none of the processed columns can be marked as categorical - self.assertEqual( - len(processed_file[model_features].select_dtypes(include=["O"]).columns), - 0 - ) - - def test_preprocessing_train(self): - """ - Component test for the preprocessing part with train=True. - """ - data = pd.DataFrame( - { - 'foo': ['a', 'b', 'c', np.nan, np.nan, np.nan], - 'bar': ['a', np.nan, np.nan, np.nan, np.nan, np.nan], - 'baz': ['a', 'b', 'c', 'd', 'e', 'f'], - 'feature_1': [1, 2, 3, 4, np.nan, np.nan], - 'feature_excluded': [1, 2, 3, 4, np.nan, np.nan], - 'chr': [1, 2, 3, 4, 5, 6], - 'pos': [100, 200, 300, 400, 500, 600], - 'ref': ['A', 'T', 'A', 'T', 'A', 'T'], - 'alt': ['G', 'C', 'G', 'C', 'G', 'C'] - } - ) - user_input_features = ['foo', 'bar', 'baz', 'feature_1'] - processor = CategoricalProcessor( - exclude_features=['feature_excluded'], input_features=user_input_features, train=True - ) - observed = processor.process(data) - expected = pd.DataFrame( - { - 'foo_a': [1, 0, 0, 0, 0, 0], - 'foo_b': [0, 1, 0, 0, 0, 0], - 'foo_c': [0, 0, 1, 0, 0, 0], - 'foo_other': [0, 0, 0, 1, 1, 1], - 'bar_a': [1, 0, 0, 0, 0, 0], - 'bar_other': [0, 1, 1, 1, 1, 1], - 'baz_a': [1, 0, 0, 0, 0, 0], - 'baz_b': [0, 1, 0, 0, 0, 0], - 'baz_c': [0, 0, 1, 0, 0, 0], - 'baz_d': [0, 0, 0, 1, 0, 0], - 'baz_e': [0, 0, 0, 0, 1, 0], - 'baz_other': [0, 0, 0, 0, 0, 1], - 'ref_A': [1, 0, 1, 0, 1, 0], - 'ref_T': [0, 1, 0, 1, 0, 1], - 'alt_G': [1, 0, 1, 0, 1, 0], - 'alt_C': [0, 1, 0, 1, 0, 1], - 'feature_1': [1, 2, 3, 4, np.nan, np.nan], - 'feature_excluded': [1, 2, 3, 4, np.nan, np.nan], - 'chr': [1, 2, 3, 4, 5, 6], - 'pos': [100, 200, 300, 400, 500, 600], - 'chr_pos_ref_alt': [ - '1_VeryUniqueCAPICESeparator_100_VeryUniqueCAPICESeparator_' - 'A_VeryUniqueCAPICESeparator_G', - '2_VeryUniqueCAPICESeparator_200_VeryUniqueCAPICESeparator_' - 'T_VeryUniqueCAPICESeparator_C', - '3_VeryUniqueCAPICESeparator_300_VeryUniqueCAPICESeparator_' - 'A_VeryUniqueCAPICESeparator_G', - '4_VeryUniqueCAPICESeparator_400_VeryUniqueCAPICESeparator_' - 'T_VeryUniqueCAPICESeparator_C', - '5_VeryUniqueCAPICESeparator_500_VeryUniqueCAPICESeparator_' - 'A_VeryUniqueCAPICESeparator_G', - '6_VeryUniqueCAPICESeparator_600_VeryUniqueCAPICESeparator_' - 'T_VeryUniqueCAPICESeparator_C', - ] - } - ) - pd.testing.assert_frame_equal( - observed.sort_index(axis=1), expected.sort_index(axis=1), check_dtype=False - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/capice/utilities/test_preprocessor.py b/tests/capice/utilities/test_preprocessor.py deleted file mode 100644 index 01139975..00000000 --- a/tests/capice/utilities/test_preprocessor.py +++ /dev/null @@ -1,162 +0,0 @@ -import unittest - -import pandas as pd - -from molgenis.capice.utilities.enums import Column -from molgenis.capice.utilities.categorical_processor import CategoricalProcessor - - -def get_uint8_array(values_list): - return pd.array(values_list, dtype='uint8') - - -class TestPreprocessor(unittest.TestCase): - @classmethod - def setUp(cls): - print('Setting up.') - cls.preprocessor = CategoricalProcessor() - cls.chr_pos_ref_alt_testcase = pd.DataFrame( - { - 'chr': [1, 2, 3, 4, 5], - 'pos': [1, 2, 3, 4, 5], - 'REF': [1, 2, 3, 4, 5], - 'ALT': [1, 2, 3, 4, 5] - } - ) - - def test_creation_other(self): - test_case = pd.concat( - [ - self.chr_pos_ref_alt_testcase, - pd.DataFrame( - { - 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz', 'last'] - } - ) - ], axis=1 - ) - observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ - 'foo']) - self.assertIn( - 'foo', - observed_dict.keys() - ) - self.assertIn( - Column.other.value, - observed_dict['foo'] - ) - self.assertIn('foo_other_CAPICE_value', observed_df.columns) - - def test_creation_other_notin(self): - test_case = pd.concat( - [ - self.chr_pos_ref_alt_testcase, - pd.DataFrame( - { - 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz'] - } - ) - ], axis=1 - ) - observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ - 'foo']) - self.assertIn( - 'foo', - observed_dict.keys() - ) - self.assertNotIn( - 'other', - observed_dict['foo'] - ) - self.assertNotIn('foo_other', observed_df.columns) - - def test_other_in_top_5(self): - # Tests that, if "other" occurs in the top 5 categories, only this "other" feature gets - # sampled and no other sample get sampled into the "other" category. - test_case = pd.concat( - [ - self.chr_pos_ref_alt_testcase, - pd.DataFrame( - { - 'foo': ['other', 'other', 'foo', 'bar', 'baz', 'foobar', 'foobaz'] - } - ) - ], axis=1 - ) - observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ - 'foo']) - test_series = observed_df['foo_other'] - self.assertFalse(test_series[test_series > 0].size > 2, - msg=f'Actual size: {test_series[test_series > 0].size}') - self.assertIn( - 'foo_other_CAPICE_value', - observed_df.columns - ) - - def test__create_preservation_col(self): - input_data_frame = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], - 'alt': ['G', 'A', 'T']}) - expected_output = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], - 'alt': ['G', 'A', 'T'], - 'chr_pos_ref_alt': - ['1_VeryUniqueCAPICESeparator_123_VeryUniqueCAPICESeparator_' - 'A_VeryUniqueCAPICESeparator_G', - '2_VeryUniqueCAPICESeparator_456_VeryUniqueCAPICESeparator_' - 'T_VeryUniqueCAPICESeparator_A', - '4_VeryUniqueCAPICESeparator_789_VeryUniqueCAPICESeparator_' - 'C_VeryUniqueCAPICESeparator_T'] - } - ) - actual_output = self.preprocessor._create_preservation_col(input_data_frame) - - pd.testing.assert_frame_equal(expected_output, actual_output) - - def test_is_train(self): - self.assertEqual(False, self.preprocessor.train) - - def test__get_categorical_columns(self): - preprocessor = CategoricalProcessor([], ['ref', 'alt']) - input_data_frame = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], - 'alt': ['G', 'A', 'T']}) - preprocessor._get_categorical_columns(input_data_frame) - self.assertEqual(['ref', 'alt'], preprocessor.objects) - - def test__process_objects_train_false(self): - self.preprocessor.objects = ['ref', 'alt', 'blaat'] - self.preprocessor.model_features = ['blaat_something'] - input_data_frame = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], - 'alt': ['G', 'A', 'T'], 'blaat': ['some', 'value', 'something']}) - - expected = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], - 'alt': ['G', 'A', 'T'], - 'blaat_other': get_uint8_array([1, 1, 0]), - 'blaat_something': get_uint8_array([0, 0, 1]) - }) - observed = self.preprocessor._process_objects(input_data_frame) - pd.testing.assert_frame_equal(expected, observed) - - def test__process_objects_train_true(self): - self.preprocessor.train = True - self.preprocessor.objects = ['ref', 'alt', 'blaat'] - self.preprocessor.model_features = ['blaat_something'] - input_data_frame = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], - 'alt': ['G', 'A', 'T'], 'blaat': ['some', 'value', 'here']}) - expected = pd.DataFrame( - {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref_A': get_uint8_array([1, 0, 0]), - 'ref_C': get_uint8_array([0, 0, 1]), 'ref_T': get_uint8_array([0, 1, 0]), - 'alt_A': get_uint8_array([0, 1, 0]), 'alt_G': get_uint8_array([1, 0, 0]), - 'alt_T': get_uint8_array([0, 0, 1]), 'blaat_here': get_uint8_array([0, 0, 1]), - 'blaat_some': get_uint8_array([1, 0, 0]), - 'blaat_value': get_uint8_array([0, 1, 0])}) - observed = self.preprocessor._process_objects(input_data_frame) - pd.testing.assert_frame_equal(expected, observed) - - -if __name__ == '__main__': - unittest.main() diff --git a/tests/capice/validators/test_post_file_parse_validator.py b/tests/capice/validators/test_post_file_parse_validator.py index adecb669..ae3e57b7 100644 --- a/tests/capice/validators/test_post_file_parse_validator.py +++ b/tests/capice/validators/test_post_file_parse_validator.py @@ -14,8 +14,8 @@ def setUpClass(cls) -> None: { 'chr': [1, 2], 'pos': [100, 200], - 'ref': ['A', 'A'], - 'alt': ['T', 'T'], + 'REF': ['A', 'A'], + 'ALT': ['T', 'T'], 'feat1': ['foo', 'bar'] } ) @@ -62,7 +62,7 @@ def test_validation_incorrect_required_columns_preset_required(self): self.assertRaises( KeyError, self.validator.validate_minimally_required_columns, - self.dataset.drop(columns='ref'), + self.dataset.drop(columns='REF'), additional_required_features='feat1' ) diff --git a/tests/capice/validators/test_post_vep_processing_validator.py b/tests/capice/validators/test_post_vep_processing_validator.py index 06b05aaf..44d8fb8b 100644 --- a/tests/capice/validators/test_post_vep_processing_validator.py +++ b/tests/capice/validators/test_post_vep_processing_validator.py @@ -14,14 +14,13 @@ def setUpClass(cls) -> None: { 'chr': [1, 2], 'pos': [100, 200], - 'ref': ['A', 'A'], - 'alt': ['T', 'T'], + 'REF': ['A', 'A'], + 'ALT': ['T', 'T'], 'feat1': ['foo', 'bar'] } ) - cls.validator = PostVEPProcessingValidator( - load_model(ResourceFile.XGB_BOOSTER_POC_UBJ.value) - ) + cls.validator = PostVEPProcessingValidator() + cls.model = load_model(ResourceFile.XGB_BOOSTER_POC_UBJ.value) @classmethod def tearDownClass(cls) -> None: @@ -33,7 +32,8 @@ def test_validate_features_present_incorrect(self): self.assertRaises( KeyError, self.validator.validate_features_present, - self.dataset + self.dataset, + self.model.vep_features.values() ) diff --git a/tests/capice/vep/test_length.py b/tests/capice/vep/test_length.py index f41fc484..f10c6437 100644 --- a/tests/capice/vep/test_length.py +++ b/tests/capice/vep/test_length.py @@ -13,12 +13,12 @@ def setUpClass(cls): def test_process(self): dataframe = pd.DataFrame({ - 'ref': ['ATAG', 'A', 'C', 'AC'], - 'alt': ['A', 'ATG', 'A', 'GT']}) + 'REF': ['ATAG', 'A', 'C', 'AC'], + 'ALT': ['A', 'ATG', 'A', 'GT']}) observed = self.length.process(dataframe) expected = pd.DataFrame({ - 'ref': ['ATAG', 'A', 'C', 'AC'], - 'alt': ['A', 'ATG', 'A', 'GT'], + 'REF': ['ATAG', 'A', 'C', 'AC'], + 'ALT': ['A', 'ATG', 'A', 'GT'], 'Length': [3, 2, 0, 0]}) pd.testing.assert_frame_equal(expected, observed) diff --git a/tests/capice/vep/test_type.py b/tests/capice/vep/test_type.py index cf8cccc2..e7aaa74c 100644 --- a/tests/capice/vep/test_type.py +++ b/tests/capice/vep/test_type.py @@ -12,12 +12,12 @@ def setUpClass(cls): cls.type = type.Type() def test_process(self): - input_data_frame = pd.DataFrame({'ref': ['C', 'CA', 'CA', 'C', 'CA', 'CA'], - 'alt': ['G', 'GCC', 'GG', 'CG', 'G', 'C']}) + input_data_frame = pd.DataFrame({'REF': ['C', 'CA', 'CA', 'C', 'CA', 'CA'], + 'ALT': ['G', 'GCC', 'GG', 'CG', 'G', 'C']}) actual_output = self.type.process(input_data_frame) expected_output = pd.DataFrame({ - 'ref': ['C', 'CA', 'CA', 'C', 'CA', 'CA'], - 'alt': ['G', 'GCC', 'GG', 'CG', 'G', 'C'], + 'REF': ['C', 'CA', 'CA', 'C', 'CA', 'CA'], + 'ALT': ['G', 'GCC', 'GG', 'CG', 'G', 'C'], 'Type': ['SNV', 'DELINS', 'DELINS', 'INS', 'DELINS', 'DEL']}) pd.testing.assert_frame_equal(actual_output, expected_output) From deb167479e387e1bb182bad0ea134311ad4e2b02 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Thu, 15 Dec 2022 10:47:22 +0100 Subject: [PATCH 21/24] - Some flake8 and mypy upgrades --- src/molgenis/capice/main_capice.py | 2 +- src/molgenis/capice/main_train.py | 5 +++-- src/molgenis/capice/utilities/categorical_processor.py | 8 ++++---- .../capice/validators/post_file_parse_validator.py | 4 ++-- src/molgenis/capice/validators/predict_validator.py | 1 + src/molgenis/capice/validators/property_type_validator.py | 5 ++++- tests/capice/test_main_train.py | 5 +++-- 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index 0eaea4d7..28034dc3 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -45,7 +45,7 @@ def __init__(self, input_path, output_path, output_given): def run(self): pass - def _load_file(self, additional_required_features: list = None): + def _load_file(self, additional_required_features: list | None = None): """ Function to load the input TSV file into main :return: pandas DataFrame diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 95a2d275..92126383 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -93,8 +93,9 @@ def run(self): self.exporter.export_capice_model(model=model) @staticmethod - def process(loaded_data, process_features: typing.Collection) -> (pd.DataFrame, list[str], - list[str]): + def process(loaded_data, process_features: typing.Collection) -> tuple[ + pd.DataFrame, dict[str, list] + ]: processor = ManualVEPProcessor() processed_data = processor.process(loaded_data, process_features) processed = processor.get_feature_processes() diff --git a/src/molgenis/capice/utilities/categorical_processor.py b/src/molgenis/capice/utilities/categorical_processor.py index 9e2414f6..dd4152d8 100644 --- a/src/molgenis/capice/utilities/categorical_processor.py +++ b/src/molgenis/capice/utilities/categorical_processor.py @@ -1,4 +1,4 @@ -import typing +from typing import Tuple import numpy as np import pandas as pd @@ -23,8 +23,8 @@ def process( self, dataset: pd.DataFrame, processable_features: list | None = None, - predetermined_features: dict[str] | None = None - ) -> (pd.DataFrame, dict): + predetermined_features: dict[str, list] | None = None + ) -> Tuple[pd.DataFrame, dict[str, list]]: """ Callable method of CategoricalProcessor to start processing the categorical columns of dataset according to either processable_features (in case of train) or @@ -70,7 +70,7 @@ def process( def _validate_one_feature_list_present( self, processable_features: list | None, - predetermined_features: dict[list] | None + predetermined_features: dict[str, list] | None ) -> None: if processable_features is None and predetermined_features is None: error_message = 'Both processable_features and predetermined_features are not supplied!' diff --git a/src/molgenis/capice/validators/post_file_parse_validator.py b/src/molgenis/capice/validators/post_file_parse_validator.py index 78fdab67..27ef95e7 100644 --- a/src/molgenis/capice/validators/post_file_parse_validator.py +++ b/src/molgenis/capice/validators/post_file_parse_validator.py @@ -14,7 +14,7 @@ def validate_n_columns(self, dataset): Validator to make sure that at least 4 columns are loaded (chr, pos, ref, alt). Does NOT check for the names of these columns! """ - if isinstance(dataset, pd.Series) or not dataset.shape[1] >= 4: + if isinstance(dataset, pd.Series) or dataset.shape[1] < 4: error_message = 'Loaded dataset does NOT have enough features! ' \ 'Is there a header present that does not start ' \ 'with ##?' @@ -31,7 +31,7 @@ def validate_variants_present(self, dataset): raise ValueError(error_message) def validate_minimally_required_columns( - self, dataset, additional_required_features: list = None + self, dataset, additional_required_features: list | None = None ): """ Validator for both predict and train to check if the very least columns diff --git a/src/molgenis/capice/validators/predict_validator.py b/src/molgenis/capice/validators/predict_validator.py index 62eeb516..ce9554e6 100644 --- a/src/molgenis/capice/validators/predict_validator.py +++ b/src/molgenis/capice/validators/predict_validator.py @@ -3,6 +3,7 @@ from molgenis.capice.core.logger import Logger + class PredictValidator: def __init__(self): self.log = Logger().logger diff --git a/src/molgenis/capice/validators/property_type_validator.py b/src/molgenis/capice/validators/property_type_validator.py index 1a1271e8..dae9765c 100644 --- a/src/molgenis/capice/validators/property_type_validator.py +++ b/src/molgenis/capice/validators/property_type_validator.py @@ -1,5 +1,8 @@ +from typing import Any + + class PropertyTypeValidator: - def validate_property(self, value: any, expected_type: any, include_none: bool = False): + def validate_property(self, value: Any, expected_type: Any, include_none: bool = False): """ Logger method to raise a TypeError when a Property is not set correctly. diff --git a/tests/capice/test_main_train.py b/tests/capice/test_main_train.py index a3557133..73ad8284 100644 --- a/tests/capice/test_main_train.py +++ b/tests/capice/test_main_train.py @@ -77,8 +77,9 @@ def test_integration_reset_train_features(self): data = self.main._load_file(additional_required_features=self.main.additional_required) self.main._validate_features_present(data, user_input) data_processed, vep_processed = self.main.process(data, user_input) - observed = self.main._reset_processing_features(user_input, vep_processed, - data_processed.columns) + observed = self.main._reset_processing_features( + user_input, vep_processed, data_processed.columns + ) expected = [ 'PolyPhenCat', 'PolyPhenVal', 'cDNApos', 'relcDNApos', 'SIFTcat', 'SIFTval', 'protPos', 'relProtPos', 'oAA', 'nAA', 'CDSpos', 'relCDSpos', 'REF', 'ALT', From 3d144812ed1133d6c4228e79b702bb7496e622ab Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Fri, 16 Dec 2022 09:51:09 +0100 Subject: [PATCH 22/24] - Processed PR feedback --- src/molgenis/capice/main_capice.py | 49 ++++++++++++++++--- src/molgenis/capice/main_explain.py | 8 --- src/molgenis/capice/main_predict.py | 19 ++----- src/molgenis/capice/main_train.py | 28 ++++------- src/molgenis/capice/utilities/__init__.py | 29 +++++++++++ .../capice/utilities/categorical_processor.py | 4 +- .../capice/utilities/manual_vep_processor.py | 7 ++- .../post_vep_processing_validator.py | 12 ++--- .../capice/validators/predict_validator.py | 4 +- .../validators/property_type_validator.py | 5 +- .../utilities/test_categorical_processor.py | 8 +-- tests/capice/utilities/test_predict.py | 8 +-- tests/capice/utilities/test_predictor.py | 4 +- 13 files changed, 106 insertions(+), 79 deletions(-) diff --git a/src/molgenis/capice/main_capice.py b/src/molgenis/capice/main_capice.py index 28034dc3..d71d0c3b 100644 --- a/src/molgenis/capice/main_capice.py +++ b/src/molgenis/capice/main_capice.py @@ -1,11 +1,14 @@ -import typing +import os from abc import ABC, abstractmethod +import pandas as pd + from molgenis.capice.core.logger import Logger from molgenis.capice.utilities.enums import Column from molgenis.capice.core.capice_manager import CapiceManager from molgenis.capice.utilities.input_parser import InputParser from molgenis.capice.core.capice_exporter import CapiceExporter +from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor from molgenis.capice.utilities.categorical_processor import CategoricalProcessor from molgenis.capice.utilities.load_file_postprocessor import LoadFilePostProcessor from molgenis.capice.validators.post_file_parse_validator import PostFileParseValidator @@ -66,13 +69,45 @@ def _load_file(self, additional_required_features: list | None = None): return input_file @staticmethod - @abstractmethod - def process(loaded_data, process_features: typing.Collection): - pass + def process(loaded_data: pd.DataFrame, process_features: list[str]) -> tuple[ + pd.DataFrame, dict[str, list[str]] + ]: + # Returns might look funky, but Google pydoc does not support multiple return statements. + """ + Function to call the ManualVEPProcessor over loaded_data using the supplied + process_features list. + + Args: + loaded_data: + The pandas dataframe over which the VEP features should be processed. + + process_features: + List containing either all input features, possibly containing VEP features (in + the case of train) or already all input features that can be VEP processed (in + case of predict). + + Returns: + tuple: + Tuple [0] containing: The output dataframe containing all VEP processed features + according to process_features. Depending on the property "drop" will drop the + feature present in process_features from the columns of the output dataframe. + Tuple [1] containing: The output dictionary containing the VEP feature (key) + and the derivative features that originate from said VEP feature (value). + The property "drop" is of no influence here. + """ + processor = ManualVEPProcessor() + processed_data = processor.process(loaded_data, process_features) + processed_features = processor.get_feature_processes() + # No validation, since that is specific to predict. + # Also predict doesn't technically need processed_features, but within predict the first + # argument in the tuple can just be indexed. + # Still returning both is relevant, in case we want to validate the processed_features in + # the future for predict. + return processed_data, processed_features @staticmethod - def categorical_process(loaded_data, - processing_features: dict | None = None, + def categorical_process(loaded_data: pd.DataFrame, + processing_features: dict[str, list[str]] | None = None, train_features: list | None = None): processor = CategoricalProcessor() capice_data, processed_features = processor.process( @@ -82,7 +117,7 @@ def categorical_process(loaded_data, ) return capice_data, processed_features - def _export(self, dataset, output): + def _export(self, dataset: pd.DataFrame, output: os.PathLike): """ Function to prepare the data to be exported """ diff --git a/src/molgenis/capice/main_explain.py b/src/molgenis/capice/main_explain.py index 9f80f6a5..7fd134aa 100644 --- a/src/molgenis/capice/main_explain.py +++ b/src/molgenis/capice/main_explain.py @@ -1,5 +1,4 @@ import os -import typing import pandas as pd import xgboost as xgb @@ -16,13 +15,6 @@ def __init__(self, model, output_path, output_given): self.output = output_path self.log = Logger().logger - @staticmethod - def process(loaded_data, process_features: typing.Collection): - """ - Since it is an abstract method, but not used. - """ - pass - def run(self): gain_importances = self._extract_features_importances_gain(self.model) total_gain_importances = self._extract_features_importances_total_gain(self.model) diff --git a/src/molgenis/capice/main_predict.py b/src/molgenis/capice/main_predict.py index d26e7bb0..1c376c56 100644 --- a/src/molgenis/capice/main_predict.py +++ b/src/molgenis/capice/main_predict.py @@ -1,11 +1,8 @@ -import pandas as pd - from molgenis.capice.main_capice import Main from molgenis.capice.utilities.enums import Column from molgenis.capice.utilities.predictor import Predictor from molgenis.capice.utilities.class_suggestor import ClassSuggestor from molgenis.capice.validators.predict_validator import PredictValidator -from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor from molgenis.capice.validators.post_vep_processing_validator import PostVEPProcessingValidator @@ -31,7 +28,11 @@ def run(self): Column.feature.value, Column.feature_type.value]) capice_data = self.process( - loaded_data=capice_data + loaded_data=capice_data, + process_features=list(self.model.vep_features.keys()) + )[0] + PostVEPProcessingValidator().validate_features_present( + capice_data, self.model.vep_features.values() ) capice_data = self.categorical_process( loaded_data=capice_data, @@ -42,16 +43,6 @@ def run(self): capice_data = self.apply_suggested_class(predicted_data=capice_data) self._export(dataset=capice_data, output=self.output) - def process(self, loaded_data) -> pd.DataFrame: - """ - Function to process the VEP file to a CAPICE file - """ - processor = ManualVEPProcessor() - processed_data = processor.process(loaded_data, self.model.vep_features.keys()) - validator = PostVEPProcessingValidator() - validator.validate_features_present(processed_data, self.model.vep_features.values()) - return processed_data - def predict(self, loaded_data): """ Function to call the correct model to predict CAPICE scores diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index 92126383..5b20653d 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -1,5 +1,4 @@ import json -import typing import numpy as np import pandas as pd @@ -9,9 +8,9 @@ from molgenis.capice.main_capice import Main from molgenis.capice import __version__ +from molgenis.capice.utilities import check_if_in_list from molgenis.capice.utilities.enums import TrainEnums from molgenis.capice.core.capice_exporter import CapiceExporter -from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor class CapiceTrain(Main): @@ -92,15 +91,6 @@ def run(self): setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) - @staticmethod - def process(loaded_data, process_features: typing.Collection) -> tuple[ - pd.DataFrame, dict[str, list] - ]: - processor = ManualVEPProcessor() - processed_data = processor.process(loaded_data, process_features) - processed = processor.get_feature_processes() - return processed_data, processed - def _validate_features_present(self, dataset, train_features) -> None: missing = [] for key in train_features: @@ -126,21 +116,21 @@ def _reset_processing_features( vep_processed: dict, vep_processed_dataframe_columns: pd.DataFrame.columns ) -> list[str]: - return_list = [] + feature_list = [] # Adds the VEP input features to which the processor has property drop = False for feature in vep_processed.keys(): if feature in vep_processed_dataframe_columns: - return_list.append(feature) + feature_list.append(feature) # Adds back the user input features, but avoiding adding duplicates and # avoiding the features that had property drop = True for feature in input_train_features: - if feature not in return_list and feature not in vep_processed.keys(): - return_list.append(feature) + if feature not in feature_list and feature not in vep_processed.keys(): + feature_list.append(feature) # Extending the features with the VEP processors output features - for features in vep_processed.values(): - for feature in features: - if feature not in return_list: - return_list.append(feature) + # Has to be new list otherwise features from feature_list go missing + return_list = check_if_in_list(vep_processed.values(), feature_list) + # Merging back with feature_list + return_list.extend(feature_list) return return_list def _set_train_features(self, processable_features: list, processed_features: dict) -> \ diff --git a/src/molgenis/capice/utilities/__init__.py b/src/molgenis/capice/utilities/__init__.py index 605e46f2..71fd86b7 100644 --- a/src/molgenis/capice/utilities/__init__.py +++ b/src/molgenis/capice/utilities/__init__.py @@ -1,6 +1,7 @@ import functools import warnings from pathlib import Path +from collections.abc import Iterable def get_project_root_dir(): @@ -23,3 +24,31 @@ def new_func(*args, **kwargs): return func(*args, **kwargs) return new_func + + +def check_if_in_list(list_of_lists: list[list[object]], to_check_list: Iterable): + """ + Checks if the item within a list within a list of object value (can be int, str, float, + etc.) is within the to_check_list. If False: add to return list. If True: do not add to + return list. + + Args: + list_of_lists: + List containing lists of values (object). + These values are each independently checked if they are within the to_check_list. + If False: add to return list. If true: do not add to return list. + to_check_list: + Iterable over which the individual items of the list_of_lists should be checked. + + Returns: + list: + A single list containing all individual items of list_of_lists that did not occur in + to_check_list. + + """ + return_list = [] + for items in list_of_lists: + for item in items: + if item not in to_check_list: + return_list.append(item) + return return_list diff --git a/src/molgenis/capice/utilities/categorical_processor.py b/src/molgenis/capice/utilities/categorical_processor.py index dd4152d8..c6ac9b45 100644 --- a/src/molgenis/capice/utilities/categorical_processor.py +++ b/src/molgenis/capice/utilities/categorical_processor.py @@ -1,5 +1,3 @@ -from typing import Tuple - import numpy as np import pandas as pd @@ -24,7 +22,7 @@ def process( dataset: pd.DataFrame, processable_features: list | None = None, predetermined_features: dict[str, list] | None = None - ) -> Tuple[pd.DataFrame, dict[str, list]]: + ) -> tuple[pd.DataFrame, dict[str, list]]: """ Callable method of CategoricalProcessor to start processing the categorical columns of dataset according to either processable_features (in case of train) or diff --git a/src/molgenis/capice/utilities/manual_vep_processor.py b/src/molgenis/capice/utilities/manual_vep_processor.py index 59736ba0..b168cdd7 100644 --- a/src/molgenis/capice/utilities/manual_vep_processor.py +++ b/src/molgenis/capice/utilities/manual_vep_processor.py @@ -1,5 +1,4 @@ import os -import typing import pandas as pd @@ -18,7 +17,7 @@ def __init__(self): self.log = Logger().logger self.feature_processing_tracker = {} - def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> pd.DataFrame: + def process(self, dataset: pd.DataFrame, process_features: list[str]) -> pd.DataFrame: """ Callable method for the ManualVEPProcessor to start processing. Loads all the VEP processors dynamically from /src/main/python/vep. @@ -56,13 +55,13 @@ def process(self, dataset: pd.DataFrame, process_features: typing.Container) -> self.log.debug('Processed %d features.', n_feats_processed) return dataset - def _add_feature_tracking(self, processor_name: str, processor_features: list): + def _add_feature_tracking(self, processor_name: str, processor_features: list[str]): if processor_name not in self.feature_processing_tracker.keys(): self.feature_processing_tracker[processor_name] = processor_features else: self.feature_processing_tracker[processor_name].extend(processor_features) - def get_feature_processes(self) -> dict: + def get_feature_processes(self) -> dict[str, list[str]]: """ Getter for the dictionary containing all the processed features and their output features. diff --git a/src/molgenis/capice/validators/post_vep_processing_validator.py b/src/molgenis/capice/validators/post_vep_processing_validator.py index 316c5701..712dfec7 100644 --- a/src/molgenis/capice/validators/post_vep_processing_validator.py +++ b/src/molgenis/capice/validators/post_vep_processing_validator.py @@ -1,15 +1,15 @@ -from typing import Iterable - import pandas as pd from molgenis.capice.core.logger import Logger +from molgenis.capice.utilities import check_if_in_list class PostVEPProcessingValidator: def __init__(self): self.log = Logger().logger - def validate_features_present(self, datafile: pd.DataFrame, vep_features: Iterable) -> None: + def validate_features_present(self, datafile: pd.DataFrame, vep_features: list[list[str]]) -> \ + None: """ Validator to see if all features that should be present after the ManualVEPProcessor are present. @@ -23,11 +23,7 @@ def validate_features_present(self, datafile: pd.DataFrame, vep_features: Iterab KeyError: Raises KeyError when output VEP feature is not present within datafile. """ - features_not_present = [] - for features in vep_features: - for feature in features: - if feature not in datafile.columns: - features_not_present.append(feature) + features_not_present = check_if_in_list(vep_features, datafile.columns) if len(features_not_present) > 0: error_message = 'Detected required feature(s) %s not ' \ 'present within VEP processed input file!' diff --git a/src/molgenis/capice/validators/predict_validator.py b/src/molgenis/capice/validators/predict_validator.py index ce9554e6..e164ad11 100644 --- a/src/molgenis/capice/validators/predict_validator.py +++ b/src/molgenis/capice/validators/predict_validator.py @@ -1,5 +1,5 @@ import pandas as pd -import xgboost +import xgboost as xgb from molgenis.capice.core.logger import Logger @@ -8,7 +8,7 @@ class PredictValidator: def __init__(self): self.log = Logger().logger - def validate_data_predict_ready(self, dataset: pd.DataFrame, model: xgboost.XGBClassifier) ->\ + def validate_data_predict_ready(self, dataset: pd.DataFrame, model: xgb.XGBClassifier) ->\ None: """ Validates if dataset is predict ready according to the feature names in model diff --git a/src/molgenis/capice/validators/property_type_validator.py b/src/molgenis/capice/validators/property_type_validator.py index dae9765c..615682c5 100644 --- a/src/molgenis/capice/validators/property_type_validator.py +++ b/src/molgenis/capice/validators/property_type_validator.py @@ -1,8 +1,5 @@ -from typing import Any - - class PropertyTypeValidator: - def validate_property(self, value: Any, expected_type: Any, include_none: bool = False): + def validate_property(self, value: object, expected_type: type, include_none: bool = False): """ Logger method to raise a TypeError when a Property is not set correctly. diff --git a/tests/capice/utilities/test_categorical_processor.py b/tests/capice/utilities/test_categorical_processor.py index c9cb26b2..fc885078 100644 --- a/tests/capice/utilities/test_categorical_processor.py +++ b/tests/capice/utilities/test_categorical_processor.py @@ -34,8 +34,8 @@ def test_unit_preprocessing_file(self): print('Preprocessing (unit) (file)') self.main.categorical_process( loaded_data=self.main.process( - self.main._load_file() - ), processing_features=self.model.processable_features + self.main._load_file(), process_features=self.model.vep_features.keys() + )[0], processing_features=self.model.processable_features ) def test_component_preprocessing(self): @@ -49,8 +49,8 @@ def test_component_preprocessing(self): print('Preprocessing (component)') processed_file = self.main.categorical_process( loaded_data=self.main.process( - self.main._load_file() - ), processing_features=self.model.processable_features + self.main._load_file(), process_features=self.model.vep_features.keys() + )[0], processing_features=self.model.processable_features )[0] model_features = self.model.get_booster().feature_names processed_columns = processed_file.columns diff --git a/tests/capice/utilities/test_predict.py b/tests/capice/utilities/test_predict.py index deea00d2..304b9efb 100644 --- a/tests/capice/utilities/test_predict.py +++ b/tests/capice/utilities/test_predict.py @@ -26,8 +26,8 @@ def test_unit_prediction(self): self.main.predict( self.main.categorical_process( self.main.process( - self.main._load_file() - ), processing_features=self.model.processable_features + self.main._load_file(), process_features=self.model.vep_features.keys() + )[0], processing_features=self.model.processable_features )[0] ) @@ -40,8 +40,8 @@ def test_component_prediction(self): prediction = self.main.predict( self.main.categorical_process( self.main.process( - self.main._load_file() - ), processing_features=self.model.processable_features + self.main._load_file(), process_features=self.model.vep_features.keys() + )[0], processing_features=self.model.processable_features )[0] ) # Combined sum of the prediction score should be higher than 0 diff --git a/tests/capice/utilities/test_predictor.py b/tests/capice/utilities/test_predictor.py index 7e74dde8..3958c637 100644 --- a/tests/capice/utilities/test_predictor.py +++ b/tests/capice/utilities/test_predictor.py @@ -12,8 +12,8 @@ def setUpClass(cls): cls.predictor = Predictor(model) cls.dataset = main.categorical_process( main.process( - main._load_file() - ), processing_features=model.processable_features + main._load_file(), process_features=model.vep_features.keys() + )[0], processing_features=model.processable_features )[0] def test_predict(self): From aede9bec685cf44506f407cdf046c4a91850713c Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Fri, 16 Dec 2022 10:08:47 +0100 Subject: [PATCH 23/24] - Small correction to test --- tests/capice/utilities/test_categorical_processor.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/capice/utilities/test_categorical_processor.py b/tests/capice/utilities/test_categorical_processor.py index fc885078..dbb811fc 100644 --- a/tests/capice/utilities/test_categorical_processor.py +++ b/tests/capice/utilities/test_categorical_processor.py @@ -164,10 +164,10 @@ def test_creation_other_notin(self): observed_dict.keys() ) self.assertNotIn( - 'other', + Column.other.value, observed_dict['foo'] ) - self.assertNotIn('foo_other', observed_df.columns) + self.assertNotIn('foo_other_CAPICE_value', observed_df.columns) def test_other_in_top_5(self): # Tests that, if "other" occurs in the top 5 categories, only this "other" feature gets From 75dbec3b4dab96248c9c2246bbf6da5aa96f2317 Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Fri, 16 Dec 2022 10:34:06 +0100 Subject: [PATCH 24/24] - Small QoL update to test_categorical_processor.py - Processed mypy feedback - Processed flake8 feedback --- src/molgenis/capice/cli/args_handler_parent.py | 1 + src/molgenis/capice/cli/args_handler_predict.py | 3 ++- .../capice/utilities/categorical_processor.py | 12 +++++++++--- src/molgenis/capice/utilities/dynamic_loader.py | 7 ++++--- .../capice/validators/input_validator.py | 2 +- .../capice/validators/predict_validator.py | 2 +- .../capice/validators/version_validator.py | 12 +++++++----- .../utilities/test_categorical_processor.py | 16 ++++++++++------ 8 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/molgenis/capice/cli/args_handler_parent.py b/src/molgenis/capice/cli/args_handler_parent.py index 0abbf389..a0ba0fc9 100644 --- a/src/molgenis/capice/cli/args_handler_parent.py +++ b/src/molgenis/capice/cli/args_handler_parent.py @@ -119,6 +119,7 @@ def _retrieve_argument_from_list(self, return self._single_argument_retriever(arg, arg_name, has_default) except IOError as e: self.parser.error(e) + return None @staticmethod def _single_argument_retriever(arg: list | None, diff --git a/src/molgenis/capice/cli/args_handler_predict.py b/src/molgenis/capice/cli/args_handler_predict.py index 8389ec4b..df8c19e8 100644 --- a/src/molgenis/capice/cli/args_handler_predict.py +++ b/src/molgenis/capice/cli/args_handler_predict.py @@ -20,7 +20,8 @@ def _extension(self): @property def _model_extension(self) -> tuple[str]: - return '.json', '.ubj' + # Ignore because the amount of values of tuple does not matter. + return '.json', '.ubj' # type: ignore def _model_extension_str(self) -> str: return self._join_extensions(self._model_extension) diff --git a/src/molgenis/capice/utilities/categorical_processor.py b/src/molgenis/capice/utilities/categorical_processor.py index c6ac9b45..a9d8f85b 100644 --- a/src/molgenis/capice/utilities/categorical_processor.py +++ b/src/molgenis/capice/utilities/categorical_processor.py @@ -20,7 +20,7 @@ def __init__(self): def process( self, dataset: pd.DataFrame, - processable_features: list | None = None, + processable_features: list[str] | None = None, predetermined_features: dict[str, list] | None = None ) -> tuple[pd.DataFrame, dict[str, list]]: """ @@ -54,7 +54,12 @@ def process( self._validate_one_feature_list_present(processable_features, predetermined_features) self._create_preservation_col(dataset) if predetermined_features is None: - processing_features = self._get_categorical_columns(dataset, processable_features) + # Type ignore, else mypy takes issue with Typing since processable_features can be + # None, so it is considered Optional[list[str]] instead of list[str]. + processing_features = self._get_categorical_columns( + dataset, + processable_features # type: ignore + ) else: processing_features = predetermined_features @@ -88,7 +93,8 @@ def _create_preservation_col(dataset: pd.DataFrame) -> None: [Column.chr.value, Column.pos.value, Column.ref.value, Column.alt.value] ].astype(str).agg(UniqueSeparator.unique_separator.value.join, axis=1) - def _get_categorical_columns(self, dataset: pd.DataFrame, processable_features: list) -> dict: + def _get_categorical_columns(self, dataset: pd.DataFrame, + processable_features: list[str]) -> dict[str, list]: """ Method for when the predetermined_features is None, usually in case of train, to determine the top 5 features that should be used for pandas.get_dummies(). diff --git a/src/molgenis/capice/utilities/dynamic_loader.py b/src/molgenis/capice/utilities/dynamic_loader.py index cfa98da6..3f707510 100644 --- a/src/molgenis/capice/utilities/dynamic_loader.py +++ b/src/molgenis/capice/utilities/dynamic_loader.py @@ -21,7 +21,7 @@ def __init__(self, required_attributes: list, path): self.path = path self._check_dir_exists() self.required_attributes = required_attributes - self.modules = {} + self.modules: dict[str, object] = {} def load_manual_annotators(self): """ @@ -82,14 +82,15 @@ def _load_modules_from_path(path): modules.append(module) return modules - def _import(self, usable_modules: list): + def _import(self, usable_modules: list[str]) -> dict[str, object]: """ Function to dynamically load in the modules using the import_module library. :param usable_modules: list of absolute paths to potential modules :return: list of usable modules """ - return_modules = {} + # For some reason, mypy wants this line to be Typed instead of the method. + return_modules: dict[str, object] = {} for module in usable_modules: name = os.path.basename(module).split('.py')[0] spec = util.spec_from_file_location(name=name, location=module) diff --git a/src/molgenis/capice/validators/input_validator.py b/src/molgenis/capice/validators/input_validator.py index 9c4051bc..0078f195 100644 --- a/src/molgenis/capice/validators/input_validator.py +++ b/src/molgenis/capice/validators/input_validator.py @@ -16,7 +16,7 @@ def validate_input_path(input_path: os.PathLike, extension: tuple[str]): """ if not os.path.exists(input_path): raise FileNotFoundError(f'{input_path} does not exist!') - if not (input_path.endswith(extension)): + if not str(input_path).endswith(extension): raise IOError(f'{input_path} does not match required extension: ' f'{", ".join(extension)}') diff --git a/src/molgenis/capice/validators/predict_validator.py b/src/molgenis/capice/validators/predict_validator.py index e164ad11..18c8a74e 100644 --- a/src/molgenis/capice/validators/predict_validator.py +++ b/src/molgenis/capice/validators/predict_validator.py @@ -23,7 +23,7 @@ def validate_data_predict_ready(self, dataset: pd.DataFrame, model: xgb.XGBClass Raised when a required predict feature is missing from dataset. """ missing = [] - for feature in model.get_booster().feature_names: + for feature in model.get_booster().feature_names: # type: ignore if feature not in dataset.columns: missing.append(feature) if len(missing) > 0: diff --git a/src/molgenis/capice/validators/version_validator.py b/src/molgenis/capice/validators/version_validator.py index 958f2053..55e0b1d0 100644 --- a/src/molgenis/capice/validators/version_validator.py +++ b/src/molgenis/capice/validators/version_validator.py @@ -79,16 +79,18 @@ def validate_versions_compatible(self, capice_version: str, model_version: str): ValueError Raised when the model and framework versions are not compatible. """ + # All mypy ignores here are because attributes are not found. capice = match(self.regex, capice_version) model = match(self.regex, model_version) - if capice.group('major') != model.group('major'): + if capice.group('major') != model.group('major'): # type: ignore raise ValueError( - f'CAPICE major version {capice.string} does not match with the model ' - f'{model.string}!' + f'CAPICE major version {capice.string} ' # type: ignore + f'does not match with the model ' + f'{model.string}!' # type: ignore ) - if capice.group('prerelease') or model.group('prerelease'): - self._validate_prerelease(capice, model) + if capice.group('prerelease') or model.group('prerelease'): # type: ignore + self._validate_prerelease(capice, model) # type: ignore @staticmethod def _validate_prerelease(capice_version: re.Match, diff --git a/tests/capice/utilities/test_categorical_processor.py b/tests/capice/utilities/test_categorical_processor.py index dbb811fc..baa89410 100644 --- a/tests/capice/utilities/test_categorical_processor.py +++ b/tests/capice/utilities/test_categorical_processor.py @@ -26,6 +26,10 @@ def setUp(cls): def tearDownClass(cls) -> None: teardown() + @staticmethod + def creat_other_column(value: str) -> str: + return '_'.join([value, Column.other.value]) + def test_unit_preprocessing_file(self): """ Unit test for the preprocessor to see if the preprocessor works just @@ -88,15 +92,15 @@ def test_preprocessing_train(self): 'foo_a': [1, 0, 0, 0, 0, 0], 'foo_b': [0, 1, 0, 0, 0, 0], 'foo_c': [0, 0, 1, 0, 0, 0], - 'foo_other_CAPICE_value': [0, 0, 0, 1, 1, 1], + self.creat_other_column('foo'): [0, 0, 0, 1, 1, 1], 'bar_a': [1, 0, 0, 0, 0, 0], - 'bar_other_CAPICE_value': [0, 1, 1, 1, 1, 1], + self.creat_other_column('bar'): [0, 1, 1, 1, 1, 1], 'baz_a': [1, 0, 0, 0, 0, 0], 'baz_b': [0, 1, 0, 0, 0, 0], 'baz_c': [0, 0, 1, 0, 0, 0], 'baz_d': [0, 0, 0, 1, 0, 0], 'baz_e': [0, 0, 0, 0, 1, 0], - 'baz_other_CAPICE_value': [0, 0, 0, 0, 0, 1], + self.creat_other_column('baz'): [0, 0, 0, 0, 0, 1], 'REF': ['A', 'T', 'A', 'T', 'A', 'T'], 'ALT': ['G', 'C', 'G', 'C', 'G', 'C'], 'feature_1': [1, 2, 3, 4, np.nan, np.nan], @@ -144,7 +148,7 @@ def test_creation_other(self): Column.other.value, observed_dict['foo'] ) - self.assertIn('foo_other_CAPICE_value', observed_df.columns) + self.assertIn(self.creat_other_column('foo'), observed_df.columns) def test_creation_other_notin(self): test_case = pd.concat( @@ -167,7 +171,7 @@ def test_creation_other_notin(self): Column.other.value, observed_dict['foo'] ) - self.assertNotIn('foo_other_CAPICE_value', observed_df.columns) + self.assertNotIn(self.creat_other_column('foo'), observed_df.columns) def test_other_in_top_5(self): # Tests that, if "other" occurs in the top 5 categories, only this "other" feature gets @@ -188,7 +192,7 @@ def test_other_in_top_5(self): self.assertFalse(test_series[test_series > 0].size > 2, msg=f'Actual size: {test_series[test_series > 0].size}') self.assertIn( - 'foo_other_CAPICE_value', + self.creat_other_column('foo'), observed_df.columns )

fP-tg7y<&ub+rkcb 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⪚9P!w)5i}kO7fX)Hg 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 Date: Thu, 15 Dec 2022 08:59:06 +0100 Subject: [PATCH 19/24] - Majority of bugs now fixed. --- src/molgenis/capice/main_predict.py | 16 ++-- src/molgenis/capice/main_train.py | 2 +- .../capice/utilities/categorical_processor.py | 22 +++++- src/molgenis/capice/utilities/enums.py | 1 + .../post_vep_processing_validator.py | 27 +++++-- .../capice/validators/predict_validator.py | 31 ++++++++ tests/capice/utilities/test_preprocessor.py | 70 +++++++++++++----- tests/resources/xgb_booster_poc.ubj | Bin 363040 -> 151436 bytes 8 files changed, 133 insertions(+), 36 deletions(-) create mode 100644 src/molgenis/capice/validators/predict_validator.py diff --git a/src/molgenis/capice/main_predict.py b/src/molgenis/capice/main_predict.py index f81d4acd..d26e7bb0 100644 --- a/src/molgenis/capice/main_predict.py +++ b/src/molgenis/capice/main_predict.py @@ -1,11 +1,10 @@ -import typing - import pandas as pd from molgenis.capice.main_capice import Main from molgenis.capice.utilities.enums import Column from molgenis.capice.utilities.predictor import Predictor from molgenis.capice.utilities.class_suggestor import ClassSuggestor +from molgenis.capice.validators.predict_validator import PredictValidator from molgenis.capice.utilities.manual_vep_processor import ManualVEPProcessor from molgenis.capice.validators.post_vep_processing_validator import PostVEPProcessingValidator @@ -32,8 +31,7 @@ def run(self): Column.feature.value, Column.feature_type.value]) capice_data = self.process( - loaded_data=capice_data, - process_features=self.model.vep_features + loaded_data=capice_data ) capice_data = self.categorical_process( loaded_data=capice_data, @@ -44,14 +42,14 @@ def run(self): capice_data = self.apply_suggested_class(predicted_data=capice_data) self._export(dataset=capice_data, output=self.output) - def process(self, loaded_data, process_features: typing.Collection) -> pd.DataFrame: + def process(self, loaded_data) -> pd.DataFrame: """ Function to process the VEP file to a CAPICE file """ processor = ManualVEPProcessor() - processed_data = processor.process(loaded_data, process_features) - validator = PostVEPProcessingValidator(self.model) - validator.validate_features_present(processed_data) + processed_data = processor.process(loaded_data, self.model.vep_features.keys()) + validator = PostVEPProcessingValidator() + validator.validate_features_present(processed_data, self.model.vep_features.values()) return processed_data def predict(self, loaded_data): @@ -59,6 +57,8 @@ def predict(self, loaded_data): Function to call the correct model to predict CAPICE scores :return: pandas DataFrame """ + validator = PredictValidator() + validator.validate_data_predict_ready(loaded_data, self.model) predictor = Predictor(self.model) capice_data = predictor.predict(loaded_data) return capice_data diff --git a/src/molgenis/capice/main_train.py b/src/molgenis/capice/main_train.py index baadcf3d..95a2d275 100644 --- a/src/molgenis/capice/main_train.py +++ b/src/molgenis/capice/main_train.py @@ -87,7 +87,7 @@ def run(self): processed_train, processed_test = self.split_data(dataset=processed_data, test_size=self.train_test_size) model = self.train(test_set=processed_test, train_set=processed_train) - setattr(model, "vep_features", list(vep_processed.keys())) + setattr(model, "vep_features", vep_processed) setattr(model, "processable_features", processed_features) setattr(model, 'CAPICE_version', __version__) self.exporter.export_capice_model(model=model) diff --git a/src/molgenis/capice/utilities/categorical_processor.py b/src/molgenis/capice/utilities/categorical_processor.py index e8d740a2..9e2414f6 100644 --- a/src/molgenis/capice/utilities/categorical_processor.py +++ b/src/molgenis/capice/utilities/categorical_processor.py @@ -1,8 +1,11 @@ +import typing + import numpy as np import pandas as pd from molgenis.capice.core.logger import Logger from molgenis.capice.core.capice_manager import CapiceManager +from molgenis.capice.utilities.column_utils import ColumnUtils from molgenis.capice.utilities.enums import Column, UniqueSeparator @@ -59,6 +62,8 @@ def process( processed_dataset = self._get_dummies(dataset, processing_features) + self._ensure_columns_present(processed_dataset, processing_features) + self.log.info('Successfully processed categorical data.') return processed_dataset, processing_features @@ -118,7 +123,7 @@ def _get_top_n_cats(self, column: pd.Series, return_num: int) -> list: counts = column.value_counts().index value_counts = list(counts[:return_num]) if len(counts) > return_num: - value_counts.append('other') + value_counts.append(Column.other.value) message = 'For feature: %s saved the following values: %s' self.log.info(message, column.name, ', '.join(value_counts)) return value_counts @@ -148,5 +153,18 @@ def _set_other_values(self, dataset: pd.DataFrame, feature_name: str, feature_va dataset[feature_name] = np.where( dataset[feature_name].isin(feature_values), dataset[feature_name], - 'other' + Column.other.value ) + + def _ensure_columns_present(self, dataset: pd.DataFrame, categorical_out_columns: dict) -> None: + merged_columns = [] + for main_feature, derivative_features in categorical_out_columns.items(): + for feature in derivative_features: + merged_columns.append(f'{main_feature}_{feature}') + column_utils = ColumnUtils() + column_utils.set_specified_columns(merged_columns) + missing = column_utils.get_missing_diff_with(dataset.columns) + for feature in missing: + message = 'Detected column %s not present in columns. Adding full column on NaN' + self.log.debug(message, feature) + dataset[feature] = np.nan diff --git a/src/molgenis/capice/utilities/enums.py b/src/molgenis/capice/utilities/enums.py index 239b47a9..1cb84d22 100644 --- a/src/molgenis/capice/utilities/enums.py +++ b/src/molgenis/capice/utilities/enums.py @@ -17,6 +17,7 @@ class Column(Enum): feature_type = 'feature_type' score = 'score' suggested_class = 'suggested_class' + other = 'other_CAPICE_value' class OutputClasses(Enum): diff --git a/src/molgenis/capice/validators/post_vep_processing_validator.py b/src/molgenis/capice/validators/post_vep_processing_validator.py index e81a3af2..316c5701 100644 --- a/src/molgenis/capice/validators/post_vep_processing_validator.py +++ b/src/molgenis/capice/validators/post_vep_processing_validator.py @@ -1,20 +1,33 @@ +from typing import Iterable + +import pandas as pd + from molgenis.capice.core.logger import Logger -from molgenis.capice.utilities.column_utils import ColumnUtils class PostVEPProcessingValidator: - def __init__(self, model): - self.model = model + def __init__(self): self.log = Logger().logger - def validate_features_present(self, datafile): + def validate_features_present(self, datafile: pd.DataFrame, vep_features: Iterable) -> None: """ Validator to see if all features that should be present after the ManualVEPProcessor are present. + Args: + datafile: + Pandas Dataframe over which the feature presence validation should happen. + vep_features: + List of lists of expected output ManualVEPProcesing features as saved in the + model.vep_features.values() + Raises: + KeyError: + Raises KeyError when output VEP feature is not present within datafile. """ - column_utils = ColumnUtils() - column_utils.set_specified_columns(self.model.vep_outputs) - features_not_present = column_utils.get_missing_diff_with(datafile.columns) + features_not_present = [] + for features in vep_features: + for feature in features: + if feature not in datafile.columns: + features_not_present.append(feature) if len(features_not_present) > 0: error_message = 'Detected required feature(s) %s not ' \ 'present within VEP processed input file!' diff --git a/src/molgenis/capice/validators/predict_validator.py b/src/molgenis/capice/validators/predict_validator.py new file mode 100644 index 00000000..62eeb516 --- /dev/null +++ b/src/molgenis/capice/validators/predict_validator.py @@ -0,0 +1,31 @@ +import pandas as pd +import xgboost + +from molgenis.capice.core.logger import Logger + +class PredictValidator: + def __init__(self): + self.log = Logger().logger + + def validate_data_predict_ready(self, dataset: pd.DataFrame, model: xgboost.XGBClassifier) ->\ + None: + """ + Validates if dataset is predict ready according to the feature names in model + + Args: + dataset: + The dataset that is supposed to be predict ready. + model: + The custom CAPICE xgboost.XGBClassifier. + Raises: + KeyError: + Raised when a required predict feature is missing from dataset. + """ + missing = [] + for feature in model.get_booster().feature_names: + if feature not in dataset.columns: + missing.append(feature) + if len(missing) > 0: + error_message = 'Missing required predict column(s): %s' + self.log.critical(error_message, ', '.join(missing)) + raise KeyError(error_message, ', '.join(missing)) diff --git a/tests/capice/utilities/test_preprocessor.py b/tests/capice/utilities/test_preprocessor.py index 15c2e01d..01139975 100644 --- a/tests/capice/utilities/test_preprocessor.py +++ b/tests/capice/utilities/test_preprocessor.py @@ -2,6 +2,7 @@ import pandas as pd +from molgenis.capice.utilities.enums import Column from molgenis.capice.utilities.categorical_processor import CategoricalProcessor @@ -14,17 +15,26 @@ class TestPreprocessor(unittest.TestCase): def setUp(cls): print('Setting up.') cls.preprocessor = CategoricalProcessor() - - def test_creation_other(self): - test_case = pd.DataFrame( + cls.chr_pos_ref_alt_testcase = pd.DataFrame( { - 'chr': [1, 2, 3, 4, 5, 6], - 'pos': [1, 2, 3, 4, 5, 6], - 'REF': [1, 2, 3, 4, 5, 6], - 'ALT': [1, 2, 3, 4, 5, 6], - 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz', 'last'] + 'chr': [1, 2, 3, 4, 5], + 'pos': [1, 2, 3, 4, 5], + 'REF': [1, 2, 3, 4, 5], + 'ALT': [1, 2, 3, 4, 5] } ) + + def test_creation_other(self): + test_case = pd.concat( + [ + self.chr_pos_ref_alt_testcase, + pd.DataFrame( + { + 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz', 'last'] + } + ) + ], axis=1 + ) observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ 'foo']) self.assertIn( @@ -32,20 +42,21 @@ def test_creation_other(self): observed_dict.keys() ) self.assertIn( - 'other', + Column.other.value, observed_dict['foo'] ) - self.assertIn('foo_other', observed_df.columns) + self.assertIn('foo_other_CAPICE_value', observed_df.columns) def test_creation_other_notin(self): - test_case = pd.DataFrame( - { - 'chr': [1, 2, 3, 4, 5], - 'pos': [1, 2, 3, 4, 5], - 'REF': [1, 2, 3, 4, 5], - 'ALT': [1, 2, 3, 4, 5], - 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz'] - } + test_case = pd.concat( + [ + self.chr_pos_ref_alt_testcase, + pd.DataFrame( + { + 'foo': ['bar', 'baz', 'barz', 'foobar', 'foobaz'] + } + ) + ], axis=1 ) observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ 'foo']) @@ -59,6 +70,29 @@ def test_creation_other_notin(self): ) self.assertNotIn('foo_other', observed_df.columns) + def test_other_in_top_5(self): + # Tests that, if "other" occurs in the top 5 categories, only this "other" feature gets + # sampled and no other sample get sampled into the "other" category. + test_case = pd.concat( + [ + self.chr_pos_ref_alt_testcase, + pd.DataFrame( + { + 'foo': ['other', 'other', 'foo', 'bar', 'baz', 'foobar', 'foobaz'] + } + ) + ], axis=1 + ) + observed_df, observed_dict = self.preprocessor.process(test_case, processable_features=[ + 'foo']) + test_series = observed_df['foo_other'] + self.assertFalse(test_series[test_series > 0].size > 2, + msg=f'Actual size: {test_series[test_series > 0].size}') + self.assertIn( + 'foo_other_CAPICE_value', + observed_df.columns + ) + def test__create_preservation_col(self): input_data_frame = pd.DataFrame( {'chr': [1, 2, 4], 'pos': [123, 456, 789], 'ref': ['A', 'T', 'C'], diff --git a/tests/resources/xgb_booster_poc.ubj b/tests/resources/xgb_booster_poc.ubj index 81ad180e5203f95f37ea63bc0f5eca364bdc1b01..324341a2bbb143e704c0ba9e7c5cab06d9a8480e 100644 GIT binary patch literal 151436 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