From 19825bf364bd58fbfbfde5ade33dd3d5a6584ac0 Mon Sep 17 00:00:00 2001 From: Sander van den Hoek Date: Mon, 17 Jan 2022 15:19:22 +0100 Subject: [PATCH 1/2] Removed code not containing validation figures. --- README.md | 341 ------------------ new_model_validator/README.md | 3 - new_model_validator/__init__.py | 0 new_model_validator/compare_models.ipynb | 78 ---- new_model_validator/main.py | 44 --- new_model_validator/src/__init__.py | 0 new_model_validator/src/main/__init__.py | 0 .../src/main/command_line_parser.py | 53 --- .../src/main/consequence_auc.py | 62 ---- new_model_validator/src/main/global_auc.py | 39 -- .../src/main/validators/__init__.py | 0 .../src/main/validators/data_validator.py | 10 - .../src/main/validators/input_validator.py | 20 - setup.py | 30 -- train_data_creator/README.md | 95 ----- train_data_creator/__init__.py | 0 train_data_creator/main.py | 62 ---- train_data_creator/src/__init__.py | 0 train_data_creator/src/main/__init__.py | 0 .../src/main/command_line_parser.py | 46 --- .../src/main/data_preprocessor.py | 184 ---------- .../src/main/duplicate_processor.py | 11 - train_data_creator/src/main/exporter.py | 72 ---- .../src/main/sample_weighter.py | 15 - train_data_creator/src/main/split_datasets.py | 32 -- train_data_creator/src/main/utilities.py | 43 --- .../src/main/validators/__init__.py | 0 .../src/main/validators/dataset_validator.py | 19 - .../src/main/validators/input_validator.py | 25 -- train_data_creator/test/__init__.py | 0 .../test/resources/hashtag_file.txt | 14 - .../test/resources/smol_clinvar.vcf.gz | Bin 3069 -> 0 bytes .../test/resources/smol_vkgl.tsv.gz | Bin 2929 -> 0 bytes .../test/test_data_processor.py | 336 ----------------- .../test/test_duplicate_processor.py | 42 --- train_data_creator/test/test_exporter.py | 41 --- .../test/test_sample_weighter.py | 31 -- .../test/test_split_datasets.py | 39 -- train_data_creator/test/test_utilities.py | 79 ---- .../test/validators/__init__.py | 0 .../test/validators/test_dataset_validator.py | 52 --- .../test/validators/test_input_validator.py | 60 --- utility_scripts/liftover_variants.sh | 118 ------ utility_scripts/run_train.sh | 144 -------- utility_scripts/run_vep.sh | 147 -------- utility_scripts/vep_to_tsv.sh | 131 ------- 46 files changed, 2518 deletions(-) delete mode 100644 README.md delete mode 100644 new_model_validator/README.md delete mode 100644 new_model_validator/__init__.py delete mode 100644 new_model_validator/compare_models.ipynb delete mode 100755 new_model_validator/main.py delete mode 100644 new_model_validator/src/__init__.py delete mode 100644 new_model_validator/src/main/__init__.py delete mode 100644 new_model_validator/src/main/command_line_parser.py delete mode 100644 new_model_validator/src/main/consequence_auc.py delete mode 100644 new_model_validator/src/main/global_auc.py delete mode 100644 new_model_validator/src/main/validators/__init__.py delete mode 100644 new_model_validator/src/main/validators/data_validator.py delete mode 100644 new_model_validator/src/main/validators/input_validator.py delete mode 100644 setup.py delete mode 100644 train_data_creator/README.md delete mode 100644 train_data_creator/__init__.py delete mode 100755 train_data_creator/main.py delete mode 100644 train_data_creator/src/__init__.py delete mode 100644 train_data_creator/src/main/__init__.py delete mode 100644 train_data_creator/src/main/command_line_parser.py delete mode 100644 train_data_creator/src/main/data_preprocessor.py delete mode 100644 train_data_creator/src/main/duplicate_processor.py delete mode 100644 train_data_creator/src/main/exporter.py delete mode 100644 train_data_creator/src/main/sample_weighter.py delete mode 100644 train_data_creator/src/main/split_datasets.py delete mode 100644 train_data_creator/src/main/utilities.py delete mode 100644 train_data_creator/src/main/validators/__init__.py delete mode 100644 train_data_creator/src/main/validators/dataset_validator.py delete mode 100644 train_data_creator/src/main/validators/input_validator.py delete mode 100644 train_data_creator/test/__init__.py delete mode 100644 train_data_creator/test/resources/hashtag_file.txt delete mode 100755 train_data_creator/test/resources/smol_clinvar.vcf.gz delete mode 100644 train_data_creator/test/resources/smol_vkgl.tsv.gz delete mode 100644 train_data_creator/test/test_data_processor.py delete mode 100644 train_data_creator/test/test_duplicate_processor.py delete mode 100644 train_data_creator/test/test_exporter.py delete mode 100644 train_data_creator/test/test_sample_weighter.py delete mode 100644 train_data_creator/test/test_split_datasets.py delete mode 100644 train_data_creator/test/test_utilities.py delete mode 100644 train_data_creator/test/validators/__init__.py delete mode 100644 train_data_creator/test/validators/test_dataset_validator.py delete mode 100644 train_data_creator/test/validators/test_input_validator.py delete mode 100755 utility_scripts/liftover_variants.sh delete mode 100644 utility_scripts/run_train.sh delete mode 100755 utility_scripts/run_vep.sh delete mode 100755 utility_scripts/vep_to_tsv.sh diff --git a/README.md b/README.md deleted file mode 100644 index bafc835..0000000 --- a/README.md +++ /dev/null @@ -1,341 +0,0 @@ -# capice-resources - -Repository for resource files for CAPICE and updating CAPICE model. It contains serveral modules listed below. Each -module contains their own README (if applicable) describing how to use them. - -## Installation - -Install should be as easy as `pip install .`. If not, please refer to manual install of the virtual environment and the -required packages defined within setup.py. - -## Modules: - -### validation - -Validation is not really a module, but more a folder to contain plots of supporting evidence of a model's performance -per GitHub release. - -### train_data_creator - -The module train_data_creator is here to create new CAPICE train-test and validation datasets. For more information, -refer to the readme within the module. - -### new_model_validator (**currently still WIP**) - -WIP till CAPICE 3.0.0 is released, then newer generation CAPICE models can be compared with each other with relative -ease. - -### utility_scripts - -utility_scripts contains a couple of bash scripts for ease of use, which include but are not limited to lifting over -variants to GRCh38, running VEP104 and converting a VEP output VCF to TSV. These scripts could be used, mostly on the -GCC Gearshift cluster, but are not at all fully required except for the vep_to_tsv.sh. The vep_to_tsv.sh converts the -VEP output VCF back to TSV with all required columns (added features or removed features still require manual handling). - -## Usage - -### TLDR - -_(For a more detailed explanation on creating the train-test and validation datasets, please see the REAMDE in -train_data_creator)_ - -1. Make new CAPICE release, containing added or removed processors and/or code changes supporting a new model. -2. Download latest non-public VKGL (GCC cluster /apps/data/VKGL) - and [Clinvar](https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh37/) datasets. -3. Use train_data_creator to create a train-test and validation VCFs. -4. Make capice-resources GitHub release. -5. Attach both train-test and validation VCFs to capice-resources release. -6. Use GCC cluster to annotate the VCF files (optional addition when comparing an XGBoost 0.71.1 model to a new model: upload the validation.vcf to CADD1.4-GRCh37 for annotation). -7. Lift over not-annotated VCFs to GRCh38. -8. VEP annotate GRCh38 VCFs (optional addition when comparing an XGBoost 0.71.1 model to a new model: upload the validation.vcf to CADD1.4-GRCh38 for annotation). -9. (Optional when new feature is introduced or removed) Add (or remove) feature to pre_header in bash - script `vep_to_tsv.sh`. -10. Convert VEP annotated VCFs back to TSV. -11. Process TSV (GRCh37): -12. Dropping duplicates (duplicated over all columns). -13. Dropping variants without genes. -14. Dropping variants where the genes from ID and SYMBOL mismatch. -15. Add back binarized_label and sample_weight from ID. -16. Drop variants without binarized_label (sample_weight is not necessary). -17. Drop variants that do not have a binarized_label of either 0.0 or 1.0. -18. Drop variants that do not have a sample_weight of 0.8, 0.9 or 1.0. -19. Drop the ID and (if present) gnomAD_AF columns. -20. Export to TSV. -21. Repeat for validation (GRCh37). -22. Repeat for train-test and validation (GRCh38), __but__ additionally process the chromosome column to have the column - only contain 1 through 22, X, Y and MT. -23. Update imputing JSON accordingly to the newly features added and/or removed. -24. Train new model with processed train-test TSV. -25. Attach new models to CAPICE release. -26. Use new model to generate CAPICE results file of the validation TSV. -27. Use old model to generate CAPICE results file of the same validation TSV. -28. Merge old results with new results, in combination with their true original binarized label and Consequence (true original label and Consequence can be obtained from the VEP output VCF/TSV, combination of the ID column and Consequence column). -29. Plot global AUC comparison between old and new results and violinplot comparison between old and new scores. -30. Repeat step 23 but for each and every Consequence. -31. Export plots to the validation directory, following the release structure. - -## Making train-test and validation VCF files - -Download the latest non-public VKGL (GCC /apps/data/VKGL/GRCh37/vkgl_consensus_*.tsv) -and [Clinvar](https://ftp.ncbi.nlm.nih.gov/pub/clinvar/vcf_GRCh37/) datasets and simply supply them to main.py within -train_data_creator. For further details, use `python3 main.py -h` or refer to the README in the train_data_creator -module. - -## VEP - -VEP is used to add annotations to the train-test and validation files. The following command is a good representation of what VEP command should be called: -```commandline -vep --input_file *path to your input file* --format vcf --output_file *path to your output file* --vcf --compress_output gzip --regulatory --sift s --polyphen s --domains --numbers --canonical --symbol --shift_3prime 1 --allele_number --no_stats --offline --cache --dir_cache */path/to/cache/104* --species "homo_sapiens" --assembly *GRCh37 or GRCh38* --refseq --use_given_ref --exclude_predicted --use_given_ref --flag_pick_allele --force_overwrite --fork 4 --dont_skip --allow_non_variant --per_gene -``` -_(--input_file, --output_file and --assembly have to be manually altered)_ - -_Command can vary based on the training features._ - -**Comparing an XGBoost 0.72.1 (CAPICE 2.0.0 or lower) to a new XGBoost 1.4.2 model, upload the validation.vcf.gz to [CADD](https://cadd.gs.washington.edu/score) for annotation.** (set "INCLUDE ANNOTATIONS" to True) - -## Post-VEP processing - -First convert the VEP output VCF back to TSV using the `vep_to_tsv.sh` _(Note: pre_header must be altered according to the new features or removed features)_. -**WARNING: Drop all columns that are not wanted within training, such as the ID column.** This step can be performed for all train-test and validation VCFs for both GRCh37 and 38. - -### GRCh37 - -Then process the TSV to remove duplicates and variants that are not really within the initial train-test or validation datasets, as following: - -```python -import pandas as pd - -x = pd.read_csv('/path/to/vep_converted.tsv.gz', sep='\t', na_values='.') - -# Dropping full on duplicates -x.drop_duplicates(inplace=True) - -# Dropping the variants that are intergenic -x.drop(index=x[x['%SYMBOL'].isnull()].index, inplace=True) - -# Making sure that the label is representative for the gene it was originally for -x.drop(index=x[x['%SYMBOL'] != x['%ID'].str.split('_', expand=True)[4]].index, inplace=True) - -# Make sure that you've followed the instructions and the binarized label should be on the 6th element of ID -x['binarized_label'] = x['%ID'].str.split('_', expand=True)[5].astype(float) - -# Make sure that sample_weight is the last element in ID -x['sample_weight'] = x['%ID'].str.split('_', expand=True)[6].astype(float) - -# Drop everything that doesn't have a binarized_label, also drop unused columns -x.drop(index=x[x['binarized_label'].isnull()].index, columns=['%ID'], inplace=True) - -# CAPICE 3.0.0-beta1 iteration 1 and 2, and beta 2 iteration 1 contains a bug that causes a binarized label to become 2. Dropping it. -x.drop(index=x[~x['binarized_label'].isin([0.0, 1.0])].index, inplace=True) - -# Also do the same for the sample weights (WARNING: these have to match the initially set sample weights as displayed in the one table at the start of the README.md) -x.drop(index=x[~x['sample_weight'].isin([0.8, 0.9, 1.0])].index, inplace=True) - -x.to_csv('/path/to/vep_converted_processed.tsv.gz', sep='\t', index=False, compression='gzip', na_rep='.') - -# (optional) show statistics on your dataset -x[['binarized_label', 'sample_weight']].value_counts() -``` - -Now your TSV is ready for training. - -### GRCh38 - -GRCh38 requires a bit more processing, specifically on the chromosome column, as following: - -```python - -import numpy as np -import pandas as pd - -# Reading in data -x = pd.read_csv('/path/to/vep_converted_grch38.tsv.gz', sep='\t', na_values='.') - -# Drop duplicate entries -x.drop_duplicates(inplace=True) - -# Dropping the variants that are intergenic -x.drop(index=x[x['%SYMBOL'].isnull()].index, inplace=True) - -# Cleaning the TSV chromosomes -x['%CHROM'] = x['%CHROM'].str.split('chr', expand=True)[1] -y = np.append(np.arange(1, 23).astype(str), ['X', 'Y', 'MT']) -x.drop(x[~x['%CHROM'].isin(y)].index, inplace=True) - -# Cleaning up mismatched genes -x.drop(index=x[x['%ID'].str.split('_', expand=True)[4] != x['%SYMBOL']].index, inplace=True) - -# Make sure that you've followed the instructions and the binarized label should be on the 6th element of ID -x['binarized_label'] = x['%ID'].str.split('_', expand=True)[5].astype(float) - -# Make sure that sample_weight is the last element in ID -x['sample_weight'] = x['%ID'].str.split('_', expand=True)[6].astype(float) - -# Drop everything that doesn't have a binarized_label, also drop unused columns -x.drop(index=x[x['binarized_label'].isnull()].index, columns=['%ID'], inplace=True) - -# CAPICE 3.0.0-beta1 iteration 1 and 2, and beta 2 iteration 1 contains a bug that causes a binarized label to become 2. Dropping it. -x.drop(index=x[~x['binarized_label'].isin([0.0, 1.0])].index, inplace=True) - -# Also do the same for the sample weights (WARNING: these have to match the initially set sample weights as displayed in the one table at the start of the README.md) -x.drop(index=x[~x['sample_weight'].isin([0.8, 0.9, 1.0])].index, inplace=True) - -x.to_csv('/path/to/vep_converted_grch38_processed.tsv.gz', sep='\t', index=False, compression='gzip', na_rep='.') - -# (optional) show statistics on your dataset -x[['binarized_label', 'sample_weight']].value_counts() -``` -## Training - -Before the training module of CAPICE can be called, make sure your impute JSON used within training is up to date on your newly added and/or removed features. - -Training a new model is rather easy, but takes quite a bit of time. It is recommended to start a slurm job on the GCC cluster and to let it run overnight. - -The training module can be activated with the following command: - -`python3 capice.py -v train -i /path/to/processed/train_test.tsv.gz -m /path/to/up/to/date/impute.json -o /path/to/output.pickle.dat` - -_(Make sure that your (virtual) environment contains the right Python version and packages.)_ - -## Generating results - -### XGBoost 0.90 vs XGBoost 1.4.2 models - -By now, you should already have a CADD 1.4 annotated output file for "old" CAPICE to score. -Get the CAPICE result file for both old generation and new generation. -I prefer to use CAPICE 1.3.1 for "old" CAPICE. For "new" CAPICE, use your latest release, as the model file will try and match the -version to the CAPICE version. - -### XGBoost 1.4.2 vs XGBoost 1.4.2 models - -Work in Progress - -## Validate - -The 2 old and new result files have to be merged back together, combined with their true original binarized_label and the variant Consequence. -Both binarized_label and Consequence can be found in the VEP output VCF or TSV (if it still contains the ID column). - -Clean up the variants that can't be merged with their true binarized_label or to their new label. - -Then use matplotlib (or seaborn, or whatever) to plot the "old" AUC vs the "new" AUC, combined with Violinplots of the distribution of the score values of the old model, new model and their true labels. -Do the same on a per Consequence level. - -Comparing an "old" model (generated with CAPICE 1.3.1) to a new model (CAPICE-3.0.0-beta1) will look something like this: - -```python3 -from matplotlib import pyplot as plt -from sklearn.metrics import roc_auc_score -import pandas as pd -import math - -# Reading in data -cadd = pd.read_csv('/path/to/old_capice_output.txt', sep='\t') -original_labels = pd.read_csv('/path/to/vep_output_validation.tsv.gz', sep='\t') -vep = pd.read_csv('/path/to/new_capice_output.tsv.gz', sep='\t') - -# Making merge column -cadd['ID'] = cadd[['chr_pos_ref_alt', 'GeneName']].astype(str).agg('_'.join, axis=1) -vep['ID'] = vep[['chr', 'pos', 'ref', 'alt', 'gene_name']].astype(str).agg('_'.join, axis=1) - -# Getting the true original labels -original_labels['binarized_label'] = original_labels['%ID'].str.split('_', expand=True)[5].astype(float) -original_labels['ID'] = original_labels['%ID'].str.split('_', expand=True)[:5].astype(str).agg('_'.join, axis=1) - -# Preparing all datasets -vep = vep[['ID', 'score']] -vep._is_copy = None -vep.rename(columns={'score': 'score_new'}, inplace=True) -cadd.rename(columns={'probabilities': 'score_old'}) -original_labels = original_labels[['ID', 'binarized_label']] -original_labels._is_copy = None - -# Merging -merge = cadd.merge(original_labels, on='ID', how='left') -merge.drop(index=merge[merge['binarized_label'].isnull()].index, inplace=True) -merge = merge.merge(vep, on='ID', how='left') -merge.drop(index=merge[merge['score_new'].isnull()].index, inplace=True) - -# Preparing plots -consequences = merge['Consequence'].unique() -ncols = 4 -nrows = math.ceil((consequences.size / ncols) + 1) -index = 1 -fig_auc = plt.figure(figsize=(20, 40)) -fig_auc.suptitle('Old model vs new model AUC comparison.') -fig_vio = plt.figure(figsize=(20, 40)) -fig_vio.suptitle('Old model vs new model score distributions.') - -# Calculating global AUC -auc_old = round(roc_auc_score(merge['binarized_label'], merge['score_old']), 4) -auc_new = round(roc_auc_score(merge['binarized_label'], merge['score_new']), 4) - -# Plotting global AUC -ax_auc = fig_auc.add_subplot(nrows, ncols, index) -ax_auc.bar(1, auc_old, color='red', label=f'Old: {auc_old}') -ax_auc.bar(2, auc_new, color='blue', label=f'New: {auc_new}') -ax_auc.set_title('Global') -ax_auc.set_xticks([1, 2], ['Old', 'New']) -ax_auc.set_xlim(0.0, 3.0) -ax_auc.set_ylim(0.0, 1.0) - -# Plotting Violinplot for global -ax_vio = fig_vio.add_subplot(nrows, ncols, index) -ax_vio.violinplot(merge[['score_old', 'binarized_label', 'score_new']]) -ax_vio.set_title('Global') -ax_vio.set_xticks([1, 2, 3], ['Old', 'True', 'New']) -ax_vio.set_xlim(0.0, 4.0) -ax_vio.set_ylim(0.0, 1.0) - -# Global plots have been made, now for each consequence -index = 2 -for consequence in consequences: - print(f'Currently processing: {consequence}') - # Subsetting - subset = merge[merge['Consequence'] == consequence] - - # Calculating - # Try except because when an consequence is encountered with only 1 label, roc_auc_score will throw an error - try: - auc_old = round(roc_auc_score(subset['binarized_label'], subset['score_old']), 4) - except ValueError: - print(f'For consequence {consequence}, AUC old could not be calculated.') - continue - try: - auc_new = round(roc_auc_score(subset['binarized_label'], subset['score_new']), 4) - except ValueError: - print(f'For consequence {consequence}, AUC new could not be calculated.') - continue - - # Plotting auc - ax_auc = fig_auc.add_subplot(nrows, ncols, index) - ax_auc.bar(1, auc_old, color='red', label=f'Old: {auc_old}') - ax_auc.bar(2, auc_new, color='blue', label=f'New: {auc_new}') - ax_auc.set_title(consequence) - ax_auc.set_xticks([1, 2], ['Old', 'New']) - ax_auc.set_xlim(0.0, 3.0) - ax_auc.set_ylim(0.0, 1.0) - - # Plotting Violinplot for global - ax_vio = fig_vio.add_subplot(nrows, ncols, index) - ax_vio.violinplot(subset[['score_old', 'binarized_label', 'score_new']]) - ax_vio.set_title(consequence) - ax_vio.set_xticks([1, 2, 3], ['Old', 'True', 'New']) - ax_vio.set_xlim(0.0, 4.0) - ax_vio.set_ylim(0.0, 1.0) - - index += 1 - -fig_auc.savefig('/path/to/save/directory/aucs.png') -fig_vio.savefig('/path/to/save/directory/violins.png') -``` - -Compare the results of Old vs New and discus within the team, decide on next steps. - - -## Common issues - -- Training with my generated dataset causes warning ValueError: multiclass format is not supported, resulting in average - CV performance of NaN. - -This one is a bit tricky, but it comes down with a bug somewhere within creating the ID column. One of the binarized -labels is set to 2, origin is unknown. Is fixed as per CAPICE 3.0.0-beta2. \ No newline at end of file diff --git a/new_model_validator/README.md b/new_model_validator/README.md deleted file mode 100644 index 02cc19b..0000000 --- a/new_model_validator/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# New Model Validator - -DO NOT USE, Work In Progress diff --git a/new_model_validator/__init__.py b/new_model_validator/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/new_model_validator/compare_models.ipynb b/new_model_validator/compare_models.ipynb deleted file mode 100644 index 5be3648..0000000 --- a/new_model_validator/compare_models.ipynb +++ /dev/null @@ -1,78 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "outputs": [ - { - "data": { - "text/plain": "", - "text/html": "" - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# Setting notebook to maximum screen width.\n", - "\n", - "from IPython.core.display import display, HTML\n", - "display(HTML(\"\"))" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": true, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "# Imports\n", - "\n", - "import pandas as pd\n", - "from matplotlib import pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "source": [ - "TODO: neem non-coding (geen gen symbool) mee in de type variant vergelijking (als mogelijk)\n", - "#" - ], - "metadata": { - "collapsed": false - } - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.6" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} \ No newline at end of file diff --git a/new_model_validator/main.py b/new_model_validator/main.py deleted file mode 100755 index 6944441..0000000 --- a/new_model_validator/main.py +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env python3 - -import pickle - -import pandas as pd - -from src.main.global_auc import GlobalAUC -from src.main.consequence_auc import ConsequenceAUC -from src.main.command_line_parser import CommandLineParser -from src.main.validators.data_validator import DataValidator -from src.main.validators.input_validator import InputValidator - -def main(): - print('Parsing command line.') - clp = CommandLineParser() - input_old_model = clp.get_argument('input_old_model_data') - input_new_model = clp.get_argument('input_new_model_data') - output = clp.get_argument('output') - - print('Validating input arguments.') - validator = InputValidator() - validator.validate_data(input_old_model) - validator.validate_data(input_new_model) - validator.validate_output(output) - print('Arguments passed.') - - print('Loading data.') - old_data = pd.read_csv(input_old_model, sep='\t') - new_data = pd.read_csv(input_new_model, sep='\t') - - print('Validating data.') - validator = DataValidator() - validator.validate_capice_data(old_data) - validator.validate_capice_data(new_data) - - print('Plotting results.') - module = GlobalAUC(input_old_model, input_new_model, output) - module.compare(old_data, new_data) - module = ConsequenceAUC(input_old_model, input_new_model, output) - module.compare(old_data, new_data) - - -if __name__ == '__main__': - main() diff --git a/new_model_validator/src/__init__.py b/new_model_validator/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/new_model_validator/src/main/__init__.py b/new_model_validator/src/main/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/new_model_validator/src/main/command_line_parser.py b/new_model_validator/src/main/command_line_parser.py deleted file mode 100644 index 51ae2de..0000000 --- a/new_model_validator/src/main/command_line_parser.py +++ /dev/null @@ -1,53 +0,0 @@ -import argparse - - -class CommandLineParser: - def __init__(self): - parser = self._create_argument_parser() - self.arguments = parser.parse_args() - - def _create_argument_parser(self): - parser = argparse.ArgumentParser( - prog='Compare models', - description='Final stage of creating a new CAPICE models to see how the model performs' - 'compared to the last generation of published CAPICE models.' - ) - required = parser.add_argument_group('Required arguments') - - required.add_argument( - '-i_old', - '--input_old_model_data', - nargs=1, - type=str, - required=True, - help='The merged output validation data model of the old (last generation) published ' - 'CAPICE model. Merged with their true binarized labels and consequence.' - ) - - required.add_argument( - '-i_new', - '--input_new_model_data', - nargs=1, - type=str, - required=True, - help='The merged output validation data model of the new CAPICE model. ' - 'Merged with their true binarized labels and consequence.' - ) - - required.add_argument( - '-o', - '--output', - nargs=1, - type=str, - required=True, - help='The output directory of where the generated pictures should be placed.' - ) - - return parser - - def get_argument(self, argument): - value = None - if self.arguments is not None and argument in self.arguments: - # Element 0 since the arguments are packed in a list - value = getattr(self.arguments, argument)[0] - return value diff --git a/new_model_validator/src/main/consequence_auc.py b/new_model_validator/src/main/consequence_auc.py deleted file mode 100644 index 21806cc..0000000 --- a/new_model_validator/src/main/consequence_auc.py +++ /dev/null @@ -1,62 +0,0 @@ -import os -import math - -import numpy as np -import pandas as pd -from matplotlib import pyplot as plt -from sklearn.metrics import roc_auc_score - - -class ConsequenceAUC: - def __init__(self, old_model_path, new_model_path, output): - self.old = os.path.abspath(old_model_path) - self.new = os.path.abspath(new_model_path) - self.output = output - self.rounding = 4 - - def compare(self, old_model_data: pd.DataFrame, new_model_data: pd.DataFrame): - consequences = list(old_model_data['Consequence'].unique()) - ncols = 4 - n_consequences = len(consequences) - if n_consequences <= ncols: - row_cols = (1, ncols) - else: - row_cols = (math.ceil(n_consequences / ncols), ncols) - index = 1 - plt.figure(figsize=(20, 40)) - for n, consequence in enumerate(consequences): - if consequence not in list(new_model_data['Consequence'].unique()): - continue - subset_old = old_model_data[old_model_data['Consequence'] == consequence] - try: - auc_old = roc_auc_score( - y_true=subset_old['binarized_label'], - y_score=subset_old['score'] - ) - except ValueError: - auc_old = np.nan - subset_new = new_model_data[new_model_data['Consequence'] == consequence] - try: - auc_new = roc_auc_score( - y_true=subset_new['binarized_label'], - y_score=subset_new['score'] - ) - except ValueError: - auc_new = np.nan - ax = plt.subplot(row_cols[0], row_cols[1], index) - ax.bar(1, auc_old, label=f'Old AUC: {round(auc_old, self.rounding)}', color='red') - ax.bar(2, auc_new, label=f'New AUC: {round(auc_new, self.rounding)}', color='blue') - ax.set_xlim(0.0, 3.0) - ax.set_ylim(0.0, 1.0) - title = '\n'.join(consequence.split('&')) - ax.set_title(f'{title}') - ax.legend(loc='lower right') - ax.set_xticks([1, 2], ['Old', 'New']) - index += 1 - plt.suptitle( - f'AUC per consequence plots, comparing old with new.\n' - f'Old: {self.old}\n' - f'New: {self.new}\n') - plt.tight_layout(pad=2.0) - export_path = os.path.join(self.output, 'consequences.png') - plt.savefig(export_path) diff --git a/new_model_validator/src/main/global_auc.py b/new_model_validator/src/main/global_auc.py deleted file mode 100644 index 837fa05..0000000 --- a/new_model_validator/src/main/global_auc.py +++ /dev/null @@ -1,39 +0,0 @@ -import os - -import pandas as pd -from matplotlib import pyplot as plt -from sklearn.metrics import roc_curve, auc - - -class GlobalAUC: - def __init__(self, old_model_data_path, new_model_data_path, output): - self.old = os.path.abspath(old_model_data_path) - self.new = os.path.abspath(new_model_data_path) - self.output = output - self.rounding = 4 - - def compare(self, old_model_data: pd.DataFrame, new_model_data: pd.DataFrame): - fpr_old, tpr_old, _ = roc_curve( - y_true=old_model_data['binarized_label'], - y_score=old_model_data['score'] - ) - auc_old = round(auc(fpr_old, tpr_old), self.rounding) - - fpr_new, tpr_new, _ = roc_curve( - y_true=new_model_data['binarized_label'], - y_score=new_model_data['score'] - ) - auc_new = round(auc(fpr_new, tpr_new), self.rounding) - - fig, axes = plt.subplots(1, 1, figsize=(20, 8)) - axes.plot(fpr_old, tpr_old, color='red', label=f'Old (AUC={auc_old})') - axes.plot(fpr_new, tpr_new, color='blue', label=f'New (AUC={auc_new})') - axes.set_xlim([0.0, 1.05]) - axes.set_ylim([0.0, 1.05]) - axes.set_xlabel('False Positive Rate') - axes.set_ylabel('True Positive Rate') - axes.legend(loc='lower right') - fig.suptitle('Global AUC comparison between old and new models.') - axes.set_title(f'Old: {self.old}\nNew: {self.new}') - export_path = os.path.join(self.output, 'global_auc.png') - plt.savefig(export_path) diff --git a/new_model_validator/src/main/validators/__init__.py b/new_model_validator/src/main/validators/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/new_model_validator/src/main/validators/data_validator.py b/new_model_validator/src/main/validators/data_validator.py deleted file mode 100644 index 4ffef83..0000000 --- a/new_model_validator/src/main/validators/data_validator.py +++ /dev/null @@ -1,10 +0,0 @@ -import pandas as pd - - -class DataValidator: - @staticmethod - def validate_capice_data(data: pd.DataFrame): - required_columns = ['score', 'binarized_label', 'Consequence'] - for column in required_columns: - if column not in data.columns: - raise KeyError(f'Required column {column} not found in dataset.') diff --git a/new_model_validator/src/main/validators/input_validator.py b/new_model_validator/src/main/validators/input_validator.py deleted file mode 100644 index 9724bc2..0000000 --- a/new_model_validator/src/main/validators/input_validator.py +++ /dev/null @@ -1,20 +0,0 @@ -import os - - -class InputValidator: - def validate_data(self, file_path): - self._validate_file_exist(file_path) - if not file_path.endswith('.tsv.gz'): - raise FileNotFoundError(f'File {file_path} is not a pickled model file!') - - @staticmethod - def validate_output(output_path): - if not os.path.isdir(output_path): - raise OSError('Given output argument is not a directory!') - if not os.access(output_path, os.W_OK): - raise OSError('Given output directory is not writable!') - - @staticmethod - def _validate_file_exist(path): - if not os.path.isfile(path): - raise FileNotFoundError(f'File {path} not found!') diff --git a/setup.py b/setup.py deleted file mode 100644 index abc00e8..0000000 --- a/setup.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python3 - -from setuptools import setup -with open('README.md', 'r', encoding='utf-8') as fh: - long_description = fh.read() - -setup( - name='capice-resources', - version='1.0.0-dev', - url='https://capice.molgeniscloud.org/', - license='LGPL-3.0', - author='Molgenis', - author_email='molgenis-support@umcg.nl', - description='Resource files for CAPICE to train new CAPICE models', - long_description=long_description, - classifiers=[ - 'Development Status :: 4 - Beta', - 'License :: LGPL-3.0', - 'Programming Language :: Python :: 3.9', - 'Programming Language :: Python :: 3.10' - ], - python_requires='>=3.9.*', - install_requires=[ - 'pandas==1.3.4', - 'numpy==1.21.4', - 'matplotlib==3.5.1', - 'xgboost==1.4.2', - 'scikit-learn==1.0.2' - ] -) diff --git a/train_data_creator/README.md b/train_data_creator/README.md deleted file mode 100644 index d83e46d..0000000 --- a/train_data_creator/README.md +++ /dev/null @@ -1,95 +0,0 @@ -# Train data creator - -###### Resource module for CAPICE to create new train-test and validation datasets - -## Usage - -`python3 main.py -iv path/to/vkgl_consensus.tsv.gz -ic path/to/clinvar.vcf.gz -o path/to/existing/output/directory` - -_Note: -iv needs to be the non-public VKGL, public will throw an FileNotFoundError_ - -## Theory - -(data_preprocessor.py) - -Step 1 is to load in the different type datasets, which is not all that easy. - -VCF files have headers that can't be directly parsed into VCF. The amount of lines are obtained and provided to the -pandas parser. - -The VKGL TSV is easier to parse since that doesn't require extra skips. - -After that the files are validated. - -For VKGL the file follows the following path: - -- Correcting the TSV to VCF-like column names. -- Correcting the consensus-classification of "Classified by one lab" to the actual classification of the lab (also - setting the amount of labs for that variant to 1 for review status). -- Ordering according to VCF standards. -- Applying the ClinVar review status to their Gold Star Description. -- Equalizing the (likely) benign and (likely) pathogenic (also VUS) classifications (and dropping everything else). -- Applying a binarized label (0.0 for (likely) benign and 1.0 for (likely) pathogenic). - -For ClinVar the file follows the following (similar) path: - -- (Before the file gets even loaded) obtaining the amount of header lines -- Obtaining the classification from the INFO field. -- Obtaining the gene from the INFO field. -- Obtaining the review status from the INFO field. -- Equalizing the (likely) benign and (likely) pathogenic (also VUS) classifications (and dropping everything else). -- Applying a binarized label (0.0 for (likely) benign and 1.0 for (likely) pathogenic). - -After that, both files are equal in terms of columns, column types and variables within the columns. - -(main.py) - -Both datasets are merged, with the column "source" indicating their true origin and the originally loaded datasets are -deleted to preserve RAM usage. - -(duplicate_processor.py) - -Once merged, duplicates have to be removed since it is possible that VKGL samples are present within ClinVar. Duplicates -are dropped if all of the following columns are duplicates: - -- CHROM -- POS -- REF -- ALT -- gene -- class - -Since the keep in pandas.DataFrame.drop_duplicates() is not defined, the first duplicate will remain present while the -rest are dropped. -_Note: it might be possible that duplicate variants are still present with conflicting classes, since those do not count -as duplicates. We don't think this will be an issue due to the amount of samples._ - -Now that we have an assembled large dataset, we can start building the train-test and validation datasets. __But be fore -we can do that__, it is useful to apply the sample weights already. Sample weights is what tells XGBoost (and other -machine learning algorithms) how well it should trust the particular sample. As of current, the following ClinVar Gold -Star ratings are used to apply the following sample weights: - -| Gold star rating | Sample weight | -|:----------------:|:-------------:| -| 0 | Removed | -| 1 | 0.8 | -| 2 | 0.9 | -| 3 | 1.0 | -| 4 | 1.0 | - -Now that sample weights have been mapped and applied, the large dataset can be split into the train-test and validation -datasets. - -(split_datasets.py) - -The most important part about the splitting of the large dataset into the train-test and validation datasets is that the -validation dataset is of high quality. This is done by randomly sampling 20% of high quality pathogenic variants (review -score 2 or higher / originated from VKGL). Then the same amount of high quality benign variants (same requirements) is -sampled. - -To remove the randomly sampled validation dataset variants from the train-test dataset, the validation variants are -added back to the train-test dataset and then the drop_duplicates() pandas method is called with the keep parameter set -to False, this means that any and all duplicates are thrown away. - -This results in the train-test and validation datasets, -that are exported to the output argument after adding a pseudo-vcf header and pseudo-vcf columns (and merging critical information to the ID column). diff --git a/train_data_creator/__init__.py b/train_data_creator/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/train_data_creator/main.py b/train_data_creator/main.py deleted file mode 100755 index 6cb805f..0000000 --- a/train_data_creator/main.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python3 - -import gc - -from src.main.exporter import Exporter -from src.main.split_datasets import SplitDatasets -from src.main.sample_weighter import SampleWeighter -from src.main.data_preprocessor import VKGL, ClinVar -from src.main.utilities import correct_order_vcf_notation -from src.main.command_line_parser import CommandLineParser -from src.main.duplicate_processor import DuplicateProcessor -from src.main.validators.input_validator import InputValidator - - -def main(): - # Parse command line - print('Parsing command line arguments.') - clp = CommandLineParser() - input_vkgl = clp.get_argument('input_vkgl')[0] - input_clinvar = clp.get_argument('input_clinvar')[0] - output = clp.get_argument('output')[0] - # Validate - print('Validating input arguments.') - validator = InputValidator() - validator.validate_vkgl(input_vkgl) - validator.validate_clinvar(input_clinvar) - validator.validate_output(output) - # Parse - print('Parsing VKGL.') - vkgl = VKGL().parse(input_vkgl) - print('Parsing ClinVar.') - clinvar = ClinVar().parse(input_clinvar) - - # Combine - print('Combining ClinVar and VKGL') - data = vkgl.append(clinvar, ignore_index=True) - - # Freeing up memory - del vkgl, clinvar - gc.collect() - - # Dropping duplicates - data = DuplicateProcessor().process(data) - - # Applying sample weight - data = SampleWeighter().apply_sample_weight(data) - - # Deviding into train-test and validation - train_test, validation = SplitDatasets().split(data) - - # Freeing up memory - del data - gc.collect() - - # Exporting - exporter = Exporter(output) - exporter.export_validation_dataset(correct_order_vcf_notation(validation)) - exporter.export_train_test_dataset(train_test) - - -if __name__ == '__main__': - main() diff --git a/train_data_creator/src/__init__.py b/train_data_creator/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/train_data_creator/src/main/__init__.py b/train_data_creator/src/main/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/train_data_creator/src/main/command_line_parser.py b/train_data_creator/src/main/command_line_parser.py deleted file mode 100644 index d0db5ce..0000000 --- a/train_data_creator/src/main/command_line_parser.py +++ /dev/null @@ -1,46 +0,0 @@ -import argparse - - -class CommandLineParser: - def __init__(self): - parser = self._create_argument_parser() - self.arguments = parser.parse_args() - - def _create_argument_parser(self): - parser = argparse.ArgumentParser( - prog='Train-data-creator', - description='Creator of CAPICE train/test and validation datasets.' - ) - required = parser.add_argument_group('Required arguments') - - required.add_argument( - '-iv', - '--input_vkgl', - nargs=1, - type=str, - required=True, - help='Input location of the VKGL dataset (consensus, not public)' - ) - required.add_argument( - '-ic', - '--input_clinvar', - nargs=1, - type=str, - required=True, - help='Input location of the ClinVar dataset.' - ) - required.add_argument( - '-o', - '--output', - nargs=1, - type=str, - required=True, - help='Output directory where the files should be placed.' - ) - return parser - - def get_argument(self, argument_key): - value = None - if self.arguments is not None and argument_key in self.arguments: - value = getattr(self.arguments, argument_key) - return value diff --git a/train_data_creator/src/main/data_preprocessor.py b/train_data_creator/src/main/data_preprocessor.py deleted file mode 100644 index dbf2e38..0000000 --- a/train_data_creator/src/main/data_preprocessor.py +++ /dev/null @@ -1,184 +0,0 @@ -import gzip -import pandas as pd - -from src.main.utilities import correct_order_vcf_notation, columns_of_interest, \ - equalize_class, apply_binarized_label -from src.main.validators.dataset_validator import DatasetValidator - - -class VKGL: - def __init__(self): - self.validator = DatasetValidator() - - def parse(self, file_location): - data = pd.read_csv(file_location, sep='\t') - self.validator.validate_vkgl(data) - data = self._correct_column_names(data) - data = self._correct_single_consensus(data) - data = correct_order_vcf_notation(data) - data = self._apply_review_status(data) - data['source'] = 'VKGL' - data = data[columns_of_interest] - data = equalize_class( - data, - equalize_dict={ - 'Likely benign': 'LB', - 'Benign': 'B', - '(Likely) benign': 'LB', - 'Pathogenic': 'P', - 'Likely pathogenic': 'LP', - '(Likely) pathogenic': 'LP' - } - ) - data = apply_binarized_label(data) - data.reset_index(drop=True, inplace=True) - return data - - @staticmethod - def _apply_review_status(data: pd.DataFrame): - print('Applying review status.') - data['review'] = 2 - data.loc[data[data['labs'] == 1].index, 'review'] = 1 - return data - - @staticmethod - def _correct_single_consensus(data: pd.DataFrame): - print('Correcting single consensus.') - lab_concensi = [] - for col in data.columns: - if col.endswith('_link'): - lab_concensi.append(col.split('_link')[0]) - for lab in lab_concensi: - data[lab].fillna('', inplace=True) - # The true amount of labs doesn't matter, as long as it is at least 2 - data['labs'] = 2 - # Grabbing the variants that only have 1 lab supporting the consensus - data.loc[ - data[ - data[ - 'class' - ] == 'Classified by one lab' - ].index, - 'labs' - ] = 1 - # Correcting consensus - data.loc[ - data[ - data[ - 'class' - ] == 'Classified by one lab' - ].index, - 'class' - ] = data[lab_concensi].astype(str).agg(''.join, axis=1) - return data - - @staticmethod - def _correct_column_names(data: pd.DataFrame): - print('Correcting column names.') - data.rename( - columns={ - 'chromosome': '#CHROM', - 'start': 'POS', - 'ref': 'REF', - 'alt': 'ALT', - 'consensus_classification': 'class' - }, inplace=True - ) - return data - - -class ClinVar: - def __init__(self): - self.validator = DatasetValidator() - - def parse(self, file_location): - skiprows = self._get_n_header(file_location) - data = pd.read_csv(file_location, sep='\t', skiprows=skiprows) - self.validator.validate_clinvar(data) - data = self._obtain_class(data) - data = self._obtain_gene(data) - data = self._obtain_review(data) - data['source'] = 'ClinVar' - data = data[columns_of_interest] - data = equalize_class( - data, - equalize_dict={ - 'Uncertain_significance': 'VUS', - 'Likely_benign': 'LB', - 'Benign': 'B', - 'Pathogenic': 'P', - 'Likely_pathogenic': 'LP', - 'Benign/Likely_benign': 'LB', - 'Pathogenic/Likely_pathogenic': 'LP' - } - ) - data = apply_binarized_label(data) - data.reset_index(drop=True, inplace=True) - return data - - @staticmethod - def _get_n_header(file_location): - print('Obtaining amount of skip rows.') - n_skip = 0 - if file_location.endswith('.gz'): - file_conn = gzip.open(file_location, 'rt') - else: - file_conn = open(file_location, 'rt') - for line in file_conn: - if line.strip().startswith('##'): - n_skip += 1 - else: - break - file_conn.close() - print(f'Total skip rows: {n_skip}') - return n_skip - - @staticmethod - def _obtain_gene(data): - print('Obtaining gene.') - data['gene'] = data['INFO'].str.split( - 'GENEINFO=', expand=True - )[1].str.split(':', expand=True)[0] - return data - - @staticmethod - def _obtain_class(data): - print('Obtaining class.') - data['class'] = data['INFO'].str.split( - 'CLNSIG=', expand=True - )[1].str.split(';', expand=True)[0] - return data - - @staticmethod - def _obtain_review(data): - print('Obtaining review.') - # Dict with Gold stars matching the ClinVar review status - # Conflicting -1 because we dont want those - stars = { - 'criteria_provided,_conflicting_interpretations': -1, - 'no_assertion_provided': 0, - 'no_assertion_criteria_provided': 0, - 'criteria_provided,_single_submitter': 1, - 'criteria_provided,_multiple_submitters,_no_conflicts': 2, - 'reviewed_by_expert_panel': 3, - 'practice_guideline': 4 - } - - # Isolating column - data['review'] = data['INFO'].str.split( - 'CLNREVSTAT=', expand=True - )[1].str.split(';', expand=True)[0] - - # Dropping uninteresting review status - for status in data['review'].unique(): - if status not in stars.keys(): - data.drop(index=data[data['review'] == status].index, inplace=True) - - # Mapping to Gold Stars values - for key, value in stars.items(): - data.loc[data[data['review'] == key].index, 'review'] = value - data['review'] = data['review'].astype(int) - - # Droppin - data.drop(data[data['review'] < 1].index, inplace=True) - return data diff --git a/train_data_creator/src/main/duplicate_processor.py b/train_data_creator/src/main/duplicate_processor.py deleted file mode 100644 index 0402ec2..0000000 --- a/train_data_creator/src/main/duplicate_processor.py +++ /dev/null @@ -1,11 +0,0 @@ -import pandas as pd - - -class DuplicateProcessor: - @staticmethod - def process(data: pd.DataFrame): - print('Dropping duplicates.') - data.drop_duplicates( - subset=['#CHROM', 'POS', 'REF', 'ALT', 'gene', 'class'], inplace=True - ) - return data diff --git a/train_data_creator/src/main/exporter.py b/train_data_creator/src/main/exporter.py deleted file mode 100644 index e6ee1a3..0000000 --- a/train_data_creator/src/main/exporter.py +++ /dev/null @@ -1,72 +0,0 @@ -import os -import gzip -import pandas as pd - - -class Exporter: - def __init__(self, output): - self.output = output - self.vcf_header = [ - '##fileformat=VCFv4.2', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##contig=', - '##fileDate=20200320' - ] - - def export_validation_dataset(self, data: pd.DataFrame): - self._export(data, dataset_type='validation') - - def export_train_test_dataset(self, data: pd.DataFrame): - self._export(data, dataset_type='train_test') - - def _export(self, data: pd.DataFrame, dataset_type: str): - export_loc = os.path.join(self.output, dataset_type + '.vcf.gz') - with gzip.open(export_loc, 'wt') as pseudo_vcf: - for line in self.vcf_header: - pseudo_vcf.write(f'{line}\n') - - # Adding required columns - data['QUAL'] = '.' - data['FILTER'] = 'PASS' - data['INFO'] = '.' - - # Making sure that the variant can be mapped back after VEP - print(data) - data['ID'] = data[ - [ - '#CHROM', - 'POS', - 'REF', - 'ALT', - 'gene', - 'binarized_label', - 'sample_weight' - ] - ].astype(str).agg('_'.join, axis=1) - data[ - ['#CHROM', 'POS', 'ID', 'REF', 'ALT', 'QUAL', 'FILTER', 'INFO'] - ].to_csv(export_loc, mode='a', sep='\t', index=False, compression='gzip', na_rep='.') - print(f'Export to {export_loc} successful.') diff --git a/train_data_creator/src/main/sample_weighter.py b/train_data_creator/src/main/sample_weighter.py deleted file mode 100644 index 9d7a264..0000000 --- a/train_data_creator/src/main/sample_weighter.py +++ /dev/null @@ -1,15 +0,0 @@ -import pandas as pd - - -class SampleWeighter: - @staticmethod - def apply_sample_weight(dataset: pd.DataFrame): - print('Applying sample weights') - sample_weights = { - 4: 1.0, - 3: 1.0, - 2: 0.9, - 1: 0.8 - } - dataset['sample_weight'] = dataset['review'].map(sample_weights) - return dataset diff --git a/train_data_creator/src/main/split_datasets.py b/train_data_creator/src/main/split_datasets.py deleted file mode 100644 index 8c5ae1d..0000000 --- a/train_data_creator/src/main/split_datasets.py +++ /dev/null @@ -1,32 +0,0 @@ -import gc - -import pandas as pd - - -class SplitDatasets: - def __init__(self): - self.frac = 0.4 - - def split(self, data: pd.DataFrame): - print('Splitting into validation and training.') - pathogenic_set = data[data['binarized_label'] > 0] - print(f'Amount of pathogenic variants:{pathogenic_set.shape[0]}') - benign_set = data[data['binarized_label'] < 1] - print(f'Amount of benign variants:{benign_set.shape[0]}') - validation = pathogenic_set[pathogenic_set['sample_weight'] >= 0.8].sample(frac=self.frac) - print(f'Sampled: {validation.shape[0]} high confidence pathogenic variants.') - validation = validation.append( - benign_set[ - benign_set['sample_weight'] >= 0.8].sample(n=validation.shape[0]), ignore_index=True - ) - print(f'Validation dataset made, number of samples: {validation.shape[0]}') - del pathogenic_set, benign_set - gc.collect() - - # Creating train_test dataset - train_test = data.copy(deep=True) - train_test = train_test.append(validation, ignore_index=True) - train_test.drop_duplicates(keep=False, inplace=True) - print(f'Train dataset made, number of samples: {train_test.shape[0]}') - - return train_test, validation diff --git a/train_data_creator/src/main/utilities.py b/train_data_creator/src/main/utilities.py deleted file mode 100644 index acbfb02..0000000 --- a/train_data_creator/src/main/utilities.py +++ /dev/null @@ -1,43 +0,0 @@ -from pathlib import Path - -import numpy as np -import pandas as pd - - -def correct_order_vcf_notation(pseudo_vcf: pd.DataFrame): - print('Ordering (pseudo_)VCF') - pseudo_vcf['order'] = pseudo_vcf['#CHROM'] - pseudo_vcf.loc[pseudo_vcf[pseudo_vcf['order'] == 'X'].index, 'order'] = 23 - pseudo_vcf.loc[pseudo_vcf[pseudo_vcf['order'] == 'Y'].index, 'order'] = 24 - pseudo_vcf.loc[pseudo_vcf[pseudo_vcf['order'] == 'MT'].index, 'order'] = 25 - pseudo_vcf['order'] = pseudo_vcf['order'].astype(int) - pseudo_vcf.sort_values(by=['order', 'POS'], inplace=True) - pseudo_vcf.drop(columns='order', inplace=True) - pseudo_vcf.reset_index(drop=True, inplace=True) - return pseudo_vcf - - -columns_of_interest = ['#CHROM', 'POS', 'REF', 'ALT', 'gene', 'class', 'review', 'source'] - - -def equalize_class(data: pd.DataFrame, equalize_dict: dict): - print('Equalizing classes.') - # Drop the classes that we are not interested in. - for c in data['class'].unique(): - if c not in equalize_dict.keys(): - data.drop(index=data[data['class'] == c].index, inplace=True) - for key, value in equalize_dict.items(): - data.loc[data[data['class'] == key].index, 'class'] = value - return data - - -def apply_binarized_label(data: pd.DataFrame): - print('Applying binarized label.') - data['binarized_label'] = np.nan - data.loc[data[data['class'].isin(['LB', 'B'])].index, 'binarized_label'] = 0 - data.loc[data[data['class'].isin(['LP', 'P'])].index, 'binarized_label'] = 1 - data.drop(index=data[data['binarized_label'].isnull()].index, inplace=True) - return data - - -project_root_dir = Path(__file__).parent.parent.parent diff --git a/train_data_creator/src/main/validators/__init__.py b/train_data_creator/src/main/validators/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/train_data_creator/src/main/validators/dataset_validator.py b/train_data_creator/src/main/validators/dataset_validator.py deleted file mode 100644 index 8ea5801..0000000 --- a/train_data_creator/src/main/validators/dataset_validator.py +++ /dev/null @@ -1,19 +0,0 @@ -import pandas as pd - - -class DatasetValidator: - def validate_vkgl(self, vkgl_dataset: pd.DataFrame): - columns_specific_to_vkgl = ['consensus_classification', 'chromosome', 'start'] - self._validate_dataset(vkgl_dataset, columns_specific_to_vkgl, 'VKGL') - - def validate_clinvar(self, clinvar_dataset: pd.DataFrame): - columns_specific_to_clinvar = ['#CHROM', 'POS', 'REF', 'ALT', 'INFO'] - self._validate_dataset(clinvar_dataset, columns_specific_to_clinvar, 'ClinVar') - - @staticmethod - def _validate_dataset(dataset: pd.DataFrame, columns_required: list, data_source: str): - for column in columns_required: - if column not in dataset.columns: - raise KeyError( - f'Input {data_source} dataset is not consensus, missing column: {column}' - ) diff --git a/train_data_creator/src/main/validators/input_validator.py b/train_data_creator/src/main/validators/input_validator.py deleted file mode 100644 index 2423394..0000000 --- a/train_data_creator/src/main/validators/input_validator.py +++ /dev/null @@ -1,25 +0,0 @@ -import os - - -class InputValidator: - def validate_vkgl(self, input_path): - self._validate_file_exist(input_path, 'VKGL') - if not input_path.endswith('.tsv.gz'): - raise FileNotFoundError('Input VKGL is not the gzipped consensus tsv!') - - def validate_clinvar(self, input_path): - self._validate_file_exist(input_path, 'ClinVar') - if not input_path.endswith(('.vcf', '.vcf.gz')): - raise FileNotFoundError('Input ClinVar is not a (gzipped) vcf!') - - @staticmethod - def _validate_file_exist(input_path, file_type): - if not os.path.isfile(input_path): - raise FileNotFoundError(f'Input for {file_type}: {input_path} is not a file!') - - @staticmethod - def validate_output(output_path): - if not os.path.isdir(output_path): - raise OSError('Given output path does not exist!') - if not os.access(output_path, os.W_OK): - raise OSError('Output path is not writable!') diff --git a/train_data_creator/test/__init__.py b/train_data_creator/test/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/train_data_creator/test/resources/hashtag_file.txt b/train_data_creator/test/resources/hashtag_file.txt deleted file mode 100644 index f9cff31..0000000 --- a/train_data_creator/test/resources/hashtag_file.txt +++ /dev/null @@ -1,14 +0,0 @@ -## This file should provide a sum of 14 in the test specific to counting double hashtag lines -## -## -## -## -## -## -## -## -## -## -## -## -## diff --git a/train_data_creator/test/resources/smol_clinvar.vcf.gz b/train_data_creator/test/resources/smol_clinvar.vcf.gz deleted file mode 100755 index ed343ff9ef05c09e50a0152712b649bebf3aec46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3069 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 LXOsrlTw(wKev%lf diff --git a/train_data_creator/test/resources/smol_vkgl.tsv.gz b/train_data_creator/test/resources/smol_vkgl.tsv.gz deleted file mode 100644 index 205af82c718267c2d7515b07867e6c8d47544251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2929 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 baWT9{{}glh9{>OV|NjF3{xgCij5+`S^thMS diff --git a/train_data_creator/test/test_data_processor.py b/train_data_creator/test/test_data_processor.py deleted file mode 100644 index 5608e2a..0000000 --- a/train_data_creator/test/test_data_processor.py +++ /dev/null @@ -1,336 +0,0 @@ -import os -import unittest - -import numpy as np -import pandas as pd - -from train_data_creator.src.main.utilities import project_root_dir -from train_data_creator.src.main.data_preprocessor import VKGL, ClinVar - - -class TestDataProcessor(unittest.TestCase): - __chrom__ = '#CHROM' - - @classmethod - def setUpClass(cls) -> None: - cls.vkgl = os.path.join(project_root_dir, 'test', 'resources', 'smol_vkgl.tsv.gz') - cls.clinvar = os.path.join(project_root_dir, 'test', 'resources', 'smol_clinvar.vcf.gz') - cls.dataset = pd.DataFrame( - { - 'INFO': [ - 'SOMEVALUE=1003;CLNSIG=VUS;SOMEOTHERVALUE=103438;' - 'CLNREVSTAT=no_assertion_provided;GENEINFO=foo:10051', - 'SOMEVALUE=1243;CLNSIG=Likely_pathogenic;SOMEOTHERVALUE=8864389;' - 'CLNREVSTAT=reviewed_by_expert_panel;GENEINFO=baz:509709' - ] - } - ) - - def test_vkgl(self): - vkgl = VKGL() - observed = vkgl.parse(self.vkgl) - expected = pd.DataFrame( - {self.__chrom__: {0: 2, 1: 2, 2: 2, 3: 7, 4: 7, 5: 7, 6: 7, 7: 10, - 8: 11, 9: 11, 10: 11, 11: 11, 12: 11, 13: 11, - 14: 11, 15: 12, 16: 13, 17: 13, 18: 13, 19: 13, - 20: 13, 21: 13, 22: 13, 23: 13, 24: 13, 25: 13, - 26: 13, 27: 13, 28: 13, 29: 13, 30: 13, 31: 13, - 32: 13, 33: 13, 34: 13, 35: 13, 36: 14, 37: 16, - 38: 17, 39: 17, 40: 17, 41: 17, 42: 17, 43: 17, - 44: 17, 45: 17, 46: 17, 47: 17, 48: 17, 49: 17, - 50: 17, 51: 17, 52: 17, 53: 17, 54: 17, 55: 17, - 56: 17, 57: 17, 58: 17, 59: 17, 60: 19}, - 'POS': {0: 47600591, 1: 47614114, 2: 47698179, 3: 6026708, - 4: 6029452, 5: 6043386, 6: 124475296, 7: 89623860, - 8: 108119615, 9: 108119615, 10: 108121410, - 11: 108178738, 12: 108183385, 13: 108188266, - 14: 108202260, 15: 133249166, 16: 32900363, - 17: 32900930, 18: 32910891, 19: 32911703, - 20: 32912007, 21: 32913055, 22: 32913196, - 23: 32913609, 24: 32913760, 25: 32914196, - 26: 32914349, 27: 32914489, 28: 32914815, - 29: 32915135, 30: 32929360, 31: 32937429, - 32: 32944628, 33: 32971235, 34: 32972380, - 35: 32972695, 36: 65550984, 37: 68771372, - 38: 7578457, 39: 41209068, 40: 41215954, - 41: 41226601, 42: 41228668, 43: 41243190, - 44: 41244122, 45: 41244481, 46: 41245136, - 47: 41245237, 48: 41245900, 49: 41246092, - 50: 41246483, 51: 41249263, 52: 41251752, - 53: 41256074, 54: 41256266, 55: 41258361, - 56: 56780540, 57: 56801451, 58: 59924505, - 59: 59926423, 60: 11169097}, - 'REF': {0: 'T', 1: 'A', 2: 'A', 3: 'C', 4: 'GCTGA', 5: 'G', - 6: 'TAAACA', 7: 'CT', 8: 'CAA', 9: 'CA', 10: 'CT', - 11: 'G', 12: 'G', 13: 'AT', 14: 'A', 15: 'C', - 16: 'C', 17: 'A', 18: 'G', 19: 'C', 20: 'C', - 21: 'A', 22: 'G', 23: 'A', 24: 'A', 25: 'G', - 26: 'G', 27: 'G', 28: 'G', 29: 'TACTC', 30: 'T', - 31: 'G', 32: 'G', 33: 'G', 34: 'G', 35: 'A', - 36: 'C', 37: 'C', 38: 'C', 39: 'C', 40: 'A', - 41: 'G', 42: 'C', 43: 'T', 44: 'T', 45: 'C', - 46: 'C', 47: 'A', 48: 'T', 49: 'A', 50: 'C', - 51: 'G', 52: 'G', 53: 'CA', 54: 'T', 55: 'T', - 56: 'G', 57: 'C', 58: 'A', 59: 'A', 60: 'G'}, - 'ALT': {0: 'A', 1: 'G', 2: 'G', 3: 'A', 4: 'G', 5: 'A', - 6: 'T', 7: 'C', 8: 'C', 9: 'C', 10: 'C', 11: 'A', - 12: 'A', 13: 'A', 14: 'G', 15: 'T', 16: 'CT', - 17: 'G', 18: 'A', 19: 'T', 20: 'T', 21: 'G', - 22: 'C', 23: 'C', 24: 'G', 25: 'A', 26: 'T', - 27: 'A', 28: 'A', 29: 'T', 30: 'G', 31: 'A', - 32: 'A', 33: 'A', 34: 'A', 35: 'G', 36: 'T', - 37: 'T', 38: 'T', 39: 'T', 40: 'G', 41: 'C', - 42: 'T', 43: 'G', 44: 'C', 45: 'T', 46: 'G', - 47: 'G', 48: 'G', 49: 'G', 50: 'T', 51: 'A', - 52: 'T', 53: 'C', 54: 'C', 55: 'C', 56: 'T', - 57: 'T', 58: 'G', 59: 'G', 60: 'A'}, - 'gene': {0: 'EPCAM', 1: 'EPCAM', 2: 'MSH2', 3: 'PMS2', - 4: 'PMS2', 5: 'PMS2', 6: 'POT1', 7: 'PTEN', - 8: 'ATM', 9: 'ATM', 10: 'ATM', 11: 'ATM', - 12: 'ATM', 13: 'ATM', 14: 'ATM', 15: 'POLE', - 16: 'BRCA2', 17: 'BRCA2', 18: 'BRCA2', - 19: 'BRCA2', 20: 'BRCA2', 21: 'BRCA2', - 22: 'BRCA2', 23: 'BRCA2', 24: 'BRCA2', - 25: 'BRCA2', 26: 'BRCA2', 27: 'BRCA2', - 28: 'BRCA2', 29: 'BRCA2', 30: 'BRCA2', - 31: 'BRCA2', 32: 'BRCA2', 33: 'BRCA2', - 34: 'BRCA2', 35: 'BRCA2', 36: 'MAX', 37: 'CDH1', - 38: 'TP53', 39: 'BRCA1', 40: 'BRCA1', 41: 'BRCA1', - 42: 'BRCA1', 43: 'BRCA1', 44: 'BRCA1', - 45: 'BRCA1', 46: 'BRCA1', 47: 'BRCA1', - 48: 'BRCA1', 49: 'BRCA1', 50: 'BRCA1', - 51: 'BRCA1', 52: 'BRCA1', 53: 'BRCA1', - 54: 'BRCA1', 55: 'BRCA1', 56: 'RAD51C', - 57: 'RAD51C', 58: 'BRIP1', 59: 'BRIP1', - 60: 'SMARCA4'}, - 'class': {0: 'LB', 1: 'LB', 2: 'LB', 3: 'LB', 4: 'P', - 5: 'LB', 6: 'LB', 7: 'LB', 8: 'B', 9: 'LB', - 10: 'LB', 11: 'LB', 12: 'LB', 13: 'LB', 14: 'LB', - 15: 'LB', 16: 'LB', 17: 'LB', 18: 'LB', 19: 'LB', - 20: 'LB', 21: 'LB', 22: 'LB', 23: 'LB', 24: 'LB', - 25: 'LB', 26: 'LP', 27: 'LB', 28: 'LB', 29: 'LP', - 30: 'LB', 31: 'LB', 32: 'LB', 33: 'LB', 34: 'LB', - 35: 'LB', 36: 'LB', 37: 'LB', 38: 'LP', 39: 'LP', - 40: 'LP', 41: 'LB', 42: 'LB', 43: 'LB', 44: 'LB', - 45: 'LB', 46: 'LB', 47: 'LB', 48: 'LB', 49: 'LB', - 50: 'LB', 51: 'LB', 52: 'LB', 53: 'LB', 54: 'LB', - 55: 'LB', 56: 'LB', 57: 'LP', 58: 'LB', 59: 'B', - 60: 'LB'}, - 'review': {0: 2, 1: 1, 2: 2, 3: 2, 4: 1, 5: 2, 6: 2, 7: 2, - 8: 1, 9: 2, 10: 2, 11: 2, 12: 1, 13: 2, 14: 1, - 15: 1, 16: 2, 17: 1, 18: 2, 19: 1, 20: 2, 21: 2, - 22: 1, 23: 2, 24: 2, 25: 2, 26: 2, 27: 1, 28: 2, - 29: 2, 30: 2, 31: 2, 32: 2, 33: 1, 34: 2, 35: 2, - 36: 1, 37: 2, 38: 2, 39: 2, 40: 2, 41: 2, 42: 1, - 43: 2, 44: 2, 45: 1, 46: 2, 47: 2, 48: 2, 49: 2, - 50: 2, 51: 2, 52: 1, 53: 2, 54: 2, 55: 1, 56: 2, - 57: 2, 58: 2, 59: 1, 60: 1}, - 'source': {0: 'VKGL', 1: 'VKGL', 2: 'VKGL', 3: 'VKGL', - 4: 'VKGL', 5: 'VKGL', 6: 'VKGL', 7: 'VKGL', - 8: 'VKGL', 9: 'VKGL', 10: 'VKGL', 11: 'VKGL', - 12: 'VKGL', 13: 'VKGL', 14: 'VKGL', 15: 'VKGL', - 16: 'VKGL', 17: 'VKGL', 18: 'VKGL', 19: 'VKGL', - 20: 'VKGL', 21: 'VKGL', 22: 'VKGL', 23: 'VKGL', - 24: 'VKGL', 25: 'VKGL', 26: 'VKGL', 27: 'VKGL', - 28: 'VKGL', 29: 'VKGL', 30: 'VKGL', 31: 'VKGL', - 32: 'VKGL', 33: 'VKGL', 34: 'VKGL', 35: 'VKGL', - 36: 'VKGL', 37: 'VKGL', 38: 'VKGL', 39: 'VKGL', - 40: 'VKGL', 41: 'VKGL', 42: 'VKGL', 43: 'VKGL', - 44: 'VKGL', 45: 'VKGL', 46: 'VKGL', 47: 'VKGL', - 48: 'VKGL', 49: 'VKGL', 50: 'VKGL', 51: 'VKGL', - 52: 'VKGL', 53: 'VKGL', 54: 'VKGL', 55: 'VKGL', - 56: 'VKGL', 57: 'VKGL', 58: 'VKGL', 59: 'VKGL', - 60: 'VKGL'}, - 'binarized_label': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 1.0, - 5: 0.0, 6: 0.0, 7: 0.0, 8: 0.0, 9: 0.0, - 10: 0.0, 11: 0.0, 12: 0.0, 13: 0.0, - 14: 0.0, 15: 0.0, 16: 0.0, 17: 0.0, - 18: 0.0, 19: 0.0, 20: 0.0, 21: 0.0, - 22: 0.0, 23: 0.0, 24: 0.0, 25: 0.0, - 26: 1.0, 27: 0.0, 28: 0.0, 29: 1.0, - 30: 0.0, 31: 0.0, 32: 0.0, 33: 0.0, - 34: 0.0, 35: 0.0, 36: 0.0, 37: 0.0, - 38: 1.0, 39: 1.0, 40: 1.0, 41: 0.0, - 42: 0.0, 43: 0.0, 44: 0.0, 45: 0.0, - 46: 0.0, 47: 0.0, 48: 0.0, 49: 0.0, - 50: 0.0, 51: 0.0, 52: 0.0, 53: 0.0, - 54: 0.0, 55: 0.0, 56: 0.0, 57: 1.0, - 58: 0.0, 59: 0.0, 60: 0.0}}) - pd.testing.assert_frame_equal(observed, expected) - - def test_clinvar(self): - clinvar = ClinVar() - observed = clinvar.parse(self.clinvar) - expected = pd.DataFrame( - {self.__chrom__: {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1, 10: 1, 11: 1, - 12: 1, 13: 1, 14: 1, 15: 1, 16: 1, 17: 1, 18: 1, 19: 1, 20: 1, 21: 1, 22: 1, - 23: 1, 24: 1, 25: 1, 26: 1, 27: 1, 28: 1, 29: 1, 30: 1, 31: 1, 32: 1, 33: 1, - 34: 1, 35: 1, 36: 1, 37: 1, 38: 1, 39: 1, 40: 1, 41: 1, 42: 1, 43: 1}, - 'POS': {0: 865519, 1: 865545, 2: 865567, 3: 865579, 4: 865584, 5: 865625, 6: 865627, - 7: 865628, 8: 865662, 9: 865665, 10: 865694, 11: 865700, 12: 865705, - 13: 865723, 14: 865726, 15: 866404, 16: 866422, 17: 866431, 18: 866438, - 19: 866461, 20: 866478, 21: 871143, 22: 871143, 23: 871146, 24: 871155, - 25: 871158, 26: 871159, 27: 871173, 28: 871176, 29: 871192, 30: 871206, - 31: 871215, 32: 871215, 33: 871219, 34: 871229, 35: 871230, 36: 871239, - 37: 871252, 38: 874410, 39: 874415, 40: 874416, 41: 874451, 42: 874456, - 43: 874457}, - 'REF': {0: 'C', 1: 'G', 2: 'C', 3: 'C', 4: 'G', 5: 'G', 6: 'T', 7: 'G', 8: 'G', 9: 'G', - 10: 'C', 11: 'C', 12: 'C', 13: 'G', 14: 'C', 15: 'C', 16: 'C', 17: 'C', - 18: 'G', 19: 'G', 20: 'C', 21: 'G', 22: 'G', 23: 'C', 24: 'G', 25: 'C', - 26: 'G', 27: 'C', 28: 'C', 29: 'C', 30: 'C', 31: 'C', 32: 'C', 33: 'C', - 34: 'G', 35: 'C', 36: 'C', 37: 'C', 38: 'C', 39: 'C', 40: 'G', 41: 'C', - 42: 'G', 43: 'T'}, - 'ALT': {0: 'T', 1: 'A', 2: 'T', 3: 'T', 4: 'A', 5: 'A', 6: 'C', 7: 'A', 8: 'A', 9: 'A', - 10: 'T', 11: 'T', 12: 'T', 13: 'T', 14: 'G', 15: 'T', 16: 'T', 17: 'T', - 18: 'A', 19: 'A', 20: 'T', 21: 'A', 22: 'T', 23: 'T', 24: 'A', 25: 'T', - 26: 'A', 27: 'T', 28: 'T', 29: 'T', 30: 'T', 31: 'G', 32: 'T', 33: 'T', - 34: 'C', 35: 'T', 36: 'T', 37: 'T', 38: 'T', 39: 'T', 40: 'A', 41: 'T', - 42: 'A', 43: 'C'}, - 'gene': {0: 'SAMD11', 1: 'SAMD11', 2: 'SAMD11', 3: 'SAMD11', 4: 'SAMD11', 5: 'SAMD11', - 6: 'SAMD11', 7: 'SAMD11', 8: 'SAMD11', 9: 'SAMD11', 10: 'SAMD11', - 11: 'SAMD11', 12: 'SAMD11', 13: 'SAMD11', 14: 'SAMD11', 15: 'SAMD11', - 16: 'SAMD11', 17: 'SAMD11', 18: 'SAMD11', 19: 'SAMD11', 20: 'SAMD11', - 21: 'SAMD11', 22: 'SAMD11', 23: 'SAMD11', 24: 'SAMD11', 25: 'SAMD11', - 26: 'SAMD11', 27: 'SAMD11', 28: 'SAMD11', 29: 'SAMD11', 30: 'SAMD11', - 31: 'SAMD11', 32: 'SAMD11', 33: 'SAMD11', 34: 'SAMD11', 35: 'SAMD11', - 36: 'SAMD11', 37: 'SAMD11', 38: 'SAMD11', 39: 'SAMD11', 40: 'SAMD11', - 41: 'SAMD11', 42: 'SAMD11', 43: 'SAMD11'}, - 'class': {0: 'LB', 1: 'B', 2: 'LB', 3: 'LB', 4: 'B', 5: 'LB', 6: 'LB', 7: 'LB', - 8: 'LB', 9: 'B', 10: 'B', 11: 'LB', 12: 'B', 13: 'LB', 14: 'LB', 15: 'LB', - 16: 'B', 17: 'LB', 18: 'LB', 19: 'LB', 20: 'LB', 21: 'LB', 22: 'LB', 23: 'B', - 24: 'LB', 25: 'LB', 26: 'B', 27: 'LB', 28: 'B', 29: 'LB', 30: 'LB', 31: 'B', - 32: 'B', 33: 'LB', 34: 'LB', 35: 'LB', 36: 'B', 37: 'LB', 38: 'LB', 39: 'B', - 40: 'LB', 41: 'LB', 42: 'LB', 43: 'LB'}, - 'review': {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1, 10: 1, 11: 1, - 12: 1, 13: 1, 14: 1, 15: 1, 16: 1, 17: 1, 18: 1, 19: 1, 20: 1, 21: 1, 22: 1, - 23: 1, 24: 1, 25: 1, 26: 1, 27: 1, 28: 1, 29: 1, 30: 1, 31: 1, 32: 1, 33: 1, - 34: 1, 35: 1, 36: 1, 37: 1, 38: 1, 39: 1, 40: 1, 41: 1, 42: 1, 43: 1}, - 'source': {0: 'ClinVar', 1: 'ClinVar', 2: 'ClinVar', 3: 'ClinVar', 4: 'ClinVar', - 5: 'ClinVar', 6: 'ClinVar', 7: 'ClinVar', 8: 'ClinVar', 9: 'ClinVar', - 10: 'ClinVar', 11: 'ClinVar', 12: 'ClinVar', 13: 'ClinVar', 14: 'ClinVar', - 15: 'ClinVar', 16: 'ClinVar', 17: 'ClinVar', 18: 'ClinVar', 19: 'ClinVar', - 20: 'ClinVar', 21: 'ClinVar', 22: 'ClinVar', 23: 'ClinVar', 24: 'ClinVar', - 25: 'ClinVar', 26: 'ClinVar', 27: 'ClinVar', 28: 'ClinVar', 29: 'ClinVar', - 30: 'ClinVar', 31: 'ClinVar', 32: 'ClinVar', 33: 'ClinVar', 34: 'ClinVar', - 35: 'ClinVar', 36: 'ClinVar', 37: 'ClinVar', 38: 'ClinVar', 39: 'ClinVar', - 40: 'ClinVar', 41: 'ClinVar', 42: 'ClinVar', 43: 'ClinVar'}, - 'binarized_label': {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0, 5: 0.0, 6: 0.0, 7: 0.0, - 8: 0.0, 9: 0.0, 10: 0.0, 11: 0.0, 12: 0.0, 13: 0.0, 14: 0.0, - 15: 0.0, 16: 0.0, 17: 0.0, 18: 0.0, 19: 0.0, 20: 0.0, 21: 0.0, - 22: 0.0, 23: 0.0, 24: 0.0, 25: 0.0, 26: 0.0, 27: 0.0, 28: 0.0, - 29: 0.0, 30: 0.0, 31: 0.0, 32: 0.0, 33: 0.0, 34: 0.0, 35: 0.0, - 36: 0.0, 37: 0.0, 38: 0.0, 39: 0.0, 40: 0.0, 41: 0.0, 42: 0.0, - 43: 0.0}} - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_vgkl__apply_review_status(self): - dataset = pd.DataFrame( - { - 'labs': [1, 2, 3, 4, 1] - } - ) - observed = VKGL()._apply_review_status(dataset) - expected = pd.DataFrame( - { - 'labs': [1, 2, 3, 4, 1], - 'review': [1, 2, 2, 2, 1] - } - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_vkgl__correct_single_consensus(self): - one_lab = 'Classified by one lab' - link_column = ['A_link', 'Some_other_link', 'A_third_link', 'A_forth_link'] - likely_benign = '(Likely) Benign' - dataset = pd.DataFrame( - { - 'foo': [np.nan, likely_benign, np.nan, np.nan], - 'foo_link': link_column, - 'bar': ['Benign', np.nan, np.nan, np.nan], - 'bar_link': link_column, - 'baz': [np.nan, np.nan, 'Pathogenic', np.nan], - 'baz_link': link_column, - 'class': [one_lab, one_lab, one_lab, 'foo'] - } - ) - observed = VKGL()._correct_single_consensus(dataset) - expected = pd.DataFrame( - { - 'foo': ['', likely_benign, '', ''], - 'foo_link': link_column, - 'bar': ['Benign', '', '', ''], - 'bar_link': link_column, - 'baz': ['', '', 'Pathogenic', ''], - 'baz_link': link_column, - 'class': ['Benign', likely_benign, 'Pathogenic', 'foo'], - 'labs': [1, 1, 1, 2] - } - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_vkgl__correct_column_names(self): - dataset = pd.DataFrame( - columns=['chromosome', 'start', 'ref', 'alt', 'consensus_classification', 'foo', 'bar'] - ) - observed = VKGL()._correct_column_names(dataset) - expected = pd.DataFrame( - columns=[self.__chrom__, 'POS', 'REF', 'ALT', 'class', 'foo', 'bar'] - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_clinvar__get_n_header(self): - file = os.path.join(project_root_dir, 'test', 'resources', 'hashtag_file.txt') - observed = ClinVar()._get_n_header(file) - self.assertEqual(observed, 14) - - def test_clinvar__obtain_class(self): - copy_dataset = self.dataset.copy(deep=True) - observed = ClinVar()._obtain_class(copy_dataset) - expected = pd.concat( - [ - self.dataset, - pd.DataFrame( - { - 'class': ['VUS', 'Likely_pathogenic'] - } - ) - ], axis=1 - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_clinvar__obtain_gene(self): - copy_dataset = self.dataset.copy(deep=True) - observed = ClinVar()._obtain_gene(copy_dataset) - expected = pd.concat( - [ - self.dataset, - pd.DataFrame( - { - 'gene': ['foo', 'baz'] - } - ) - ], axis=1 - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_clinvar__obtain_review(self): - copy_dataset = self.dataset.copy(deep=True) - observed = ClinVar()._obtain_review(copy_dataset) - expected = pd.concat( - [ - self.dataset, - pd.DataFrame( - { - 'review': [0, 3] - } - ) - ], axis=1 - ) - # Required since review status 0 get dropped - expected.drop(index=expected[expected['review'] == 0].index, inplace=True) - pd.testing.assert_frame_equal(observed, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/test_duplicate_processor.py b/train_data_creator/test/test_duplicate_processor.py deleted file mode 100644 index 8320540..0000000 --- a/train_data_creator/test/test_duplicate_processor.py +++ /dev/null @@ -1,42 +0,0 @@ -import unittest - -import pandas as pd - -from src.main.duplicate_processor import DuplicateProcessor - - -class TestDuplicateProcessor(unittest.TestCase): - def test_duplicate_processor(self): - dataset = pd.DataFrame( - { - '#CHROM': [1, 1, 2], - 'POS': [100, 100, 200], - 'REF': ['A', 'A', 'G'], - 'ALT': ['T', 'T', 'C'], - 'gene': ['foo', 'foo', 'bar'], - 'class': ['LP', 'LP', 'LB'], - 'review': [2, 3, 1], - 'source': ['ClinVar', 'VKGL', 'VKGL'], - 'binarized_label': [1.0, 1.0, 0.0] - } - ) - processor = DuplicateProcessor() - observed = processor.process(dataset) - expected = pd.DataFrame( - { - '#CHROM': [1, 2], - 'POS': [100, 200], - 'REF': ['A', 'G'], - 'ALT': ['T', 'C'], - 'gene': ['foo', 'bar'], - 'class': ['LP', 'LB'], - 'review': [2, 1], - 'source': ['ClinVar', 'VKGL'], - 'binarized_label': [1.0, 0.0] - }, index=[0, 2] - ) - pd.testing.assert_frame_equal(observed, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/test_exporter.py b/train_data_creator/test/test_exporter.py deleted file mode 100644 index cf3b107..0000000 --- a/train_data_creator/test/test_exporter.py +++ /dev/null @@ -1,41 +0,0 @@ -import os -import unittest - -import pandas as pd - -from src.main.exporter import Exporter -from src.main.utilities import project_root_dir - - -class TestExporter(unittest.TestCase): - __test_dir__ = os.path.join(project_root_dir, '.test_dir') - - @classmethod - def tearDownClass(cls) -> None: - for file in os.listdir(cls.__test_dir__): - os.remove(os.path.join(cls.__test_dir__, file)) - os.rmdir(cls.__test_dir__) - - def test_exporter(self): - if not os.path.isdir(self.__test_dir__): - os.makedirs(self.__test_dir__) - exporter = Exporter(self.__test_dir__) - some_data = pd.DataFrame( - { - '#CHROM': [1, 2, 3], - 'POS': [100, 200, 300], - 'REF': ['A', 'A', 'A'], - 'ALT': ['C', 'C', 'C'], - 'gene': ['very', 'hot', 'fuzz'], - 'binarized_label': [1, 2, 3], - 'sample_weight': [0.8, 0.9, 1.0] - } - ) - exporter.export_train_test_dataset(some_data) - self.assertIn('train_test.vcf.gz', os.listdir(self.__test_dir__)) - exporter.export_validation_dataset(some_data) - self.assertIn('validation.vcf.gz', os.listdir(self.__test_dir__)) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/test_sample_weighter.py b/train_data_creator/test/test_sample_weighter.py deleted file mode 100644 index 4b382d8..0000000 --- a/train_data_creator/test/test_sample_weighter.py +++ /dev/null @@ -1,31 +0,0 @@ -import unittest - -import pandas as pd - -from src.main.sample_weighter import SampleWeighter - - -class TestSampleWeighter(unittest.TestCase): - def test_sample_weighter(self): - dataset = pd.DataFrame( - { - 'review': [3, 4, 1, 2] - } - ) - copy_dataset = dataset.copy(deep=True) - observed = SampleWeighter().apply_sample_weight(dataset) - expected = pd.concat( - [ - copy_dataset, - pd.DataFrame( - { - 'sample_weight': [1.0, 1.0, 0.8, 0.9] - } - ) - ], axis=1 - ) - pd.testing.assert_frame_equal(observed, expected) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/test_split_datasets.py b/train_data_creator/test/test_split_datasets.py deleted file mode 100644 index 412afe7..0000000 --- a/train_data_creator/test/test_split_datasets.py +++ /dev/null @@ -1,39 +0,0 @@ -import unittest - -import pandas as pd - -from src.main.split_datasets import SplitDatasets - - -class TestSplitDatasets(unittest.TestCase): - def test_split(self): - dataset = pd.DataFrame( - { - '#CHROM': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'], - 'POS': [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000], - 'REF': ['A', 'A', 'G', 'C', 'A', 'A', 'G', 'C', 'T', 'CG'], - 'ALT': ['T', 'T', 'C', 'G', 'T', 'T', 'C', 'G', 'A', 'AT'], - 'source': [ - 'VKGL', 'VKGL', 'ClinVar', 'VKGL', 'VKGL', 'ClinVar', 'ClinVar', 'ClinVar', - 'ClinVar', 'VKGL' - ], - 'review': [2, 2, 1, 2, 2, 2, 3, 2, 1, 2], - 'sample_weight': [0.8, 0.8, 0.6, 0.8, 0.8, 0.8, 0.9, 0.8, 0.6, 0.8], - 'binarized_label': [1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0] - } - ) - splitter = SplitDatasets() - observed_train, observed_validation = splitter.split(dataset) - self.assertEqual( - observed_validation[observed_validation['binarized_label'] == 1.0].shape[0], - observed_validation[observed_validation['binarized_label'] == 0.0].shape[0] - ) - self.assertGreater( - observed_validation['review'].min(), 1 - ) - for row in observed_validation.iterrows(): - self.assertNotIn(observed_train.values.tolist(), row[1].values.tolist()) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/test_utilities.py b/train_data_creator/test/test_utilities.py deleted file mode 100644 index 047a001..0000000 --- a/train_data_creator/test/test_utilities.py +++ /dev/null @@ -1,79 +0,0 @@ -import unittest - -import pandas as pd - -from src.main.utilities import correct_order_vcf_notation, equalize_class, apply_binarized_label - - -class TestUtilities(unittest.TestCase): - @classmethod - def setUpClass(cls) -> None: - cls.dataset = pd.DataFrame( - { - '#CHROM': ['1', '2', '3', '4', '6', '7', '5', '8', '9'], - 'POS': [100, 200, 300, 600, 700, 400, 500, 800, 900], - 'REF': ['A', 'A', 'G', 'C', 'A', 'A', 'G', 'C', 'T'], - 'ALT': ['T', 'T', 'C', 'G', 'T', 'T', 'C', 'G', 'A'], - 'source': [ - 'VKGL', 'VKGL', 'ClinVar', 'VKGL', 'VKGL', 'ClinVar', 'ClinVar', 'ClinVar', - 'ClinVar' - ], - 'review': [2, 2, 1, 2, 2, 2, 3, 2, 1], - 'binarized_label': [1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0, 0.0] - } - ) - cls.class_dataset = pd.DataFrame( - { - 'class': ['(Likely) Benign', 'LB', 'foo', 'Pathogenic'] - } - ) - cls.equalize_dict = {'(Likely) Benign': 'LB', 'Pathogenic': 'P'} - - def test_order(self): - observed = correct_order_vcf_notation(self.dataset) - expected = pd.DataFrame( - { - '#CHROM': ['1', '2', '3', '4', '5', '6', '7', '8', '9'], - 'POS': [100, 200, 300, 600, 500, 700, 400, 800, 900], - 'REF': ['A', 'A', 'G', 'C', 'G', 'A', 'A', 'C', 'T'], - 'ALT': ['T', 'T', 'C', 'G', 'C', 'T', 'T', 'G', 'A'], - 'source': [ - 'VKGL', 'VKGL', 'ClinVar', 'VKGL', 'ClinVar', 'VKGL', 'ClinVar', 'ClinVar', - 'ClinVar' - ], - 'review': [2, 2, 1, 2, 3, 2, 2, 2, 1], - 'binarized_label': [1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0] - } - ) - pd.testing.assert_frame_equal(observed, expected) - - def test_equalize(self): - observed = equalize_class( - self.class_dataset, equalize_dict=self.equalize_dict - ) - expected = pd.DataFrame( - { - 'class': ['LB', 'P'] - } - ) - pd.testing.assert_frame_equal( - observed.reset_index(drop=True), expected.reset_index(drop=True) - ) - - def test_apply_binarized_label(self): - copy_class_dataset = self.class_dataset.copy(deep=True) - equalized = equalize_class(copy_class_dataset, self.equalize_dict) - observed = apply_binarized_label(equalized) - expected = pd.DataFrame( - { - 'class': ['LB', 'P'], - 'binarized_label': [0.0, 1.0] - } - ) - pd.testing.assert_frame_equal( - observed.reset_index(drop=True), expected.reset_index(drop=True) - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/validators/__init__.py b/train_data_creator/test/validators/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/train_data_creator/test/validators/test_dataset_validator.py b/train_data_creator/test/validators/test_dataset_validator.py deleted file mode 100644 index 5e5db6d..0000000 --- a/train_data_creator/test/validators/test_dataset_validator.py +++ /dev/null @@ -1,52 +0,0 @@ -import os -import unittest - -import pandas as pd - -from train_data_creator.src.main.utilities import project_root_dir -from train_data_creator.src.main.validators.dataset_validator import DatasetValidator - - -class TestDatasetValidator(unittest.TestCase): - @classmethod - def setUpClass(cls) -> None: - cls.vkgl = pd.read_csv( - os.path.join(project_root_dir, 'test', 'resources', 'smol_vkgl.tsv.gz'), - sep='\t' - ) - cls.clinvar = pd.read_csv( - os.path.join(project_root_dir, 'test', 'resources', 'smol_clinvar.vcf.gz'), - sep='\t', - skiprows=27 - ) - cls.validator = DatasetValidator() - - def test_validate_vkgl_corr(self): - self.validator.validate_vkgl(self.vkgl) - - def test_validate_clinvar_corr(self): - self.validator.validate_clinvar(self.clinvar) - - def test_validate_vkgl_incorr(self): - # Mimicking what happens when the public consensus is used. - self.assertRaises( - KeyError, - self.validator.validate_vkgl, - self.vkgl.rename(columns={'consensus_classification': 'classification'}) - ) - - def test_validate_clinvar_incorr(self): - # Mimicking what happens when the amount of comment lines are incorrect. - self.assertRaises( - KeyError, - self.validator.validate_clinvar, - pd.read_csv( - os.path.join(project_root_dir, 'test', 'resources', 'smol_clinvar.vcf.gz'), - sep='\t', - skiprows=26 - ) - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/train_data_creator/test/validators/test_input_validator.py b/train_data_creator/test/validators/test_input_validator.py deleted file mode 100644 index fdd1c12..0000000 --- a/train_data_creator/test/validators/test_input_validator.py +++ /dev/null @@ -1,60 +0,0 @@ -import os -import unittest - -from train_data_creator.src.main.utilities import project_root_dir -from train_data_creator.src.main.validators.input_validator import InputValidator - - -class TestInputValidator(unittest.TestCase): - @classmethod - def setUpClass(cls) -> None: - cls.validator = InputValidator() - - def test_vkgl_corr(self): - input_path = os.path.join(project_root_dir, 'test', 'resources', 'smol_vkgl.tsv.gz') - self.validator.validate_vkgl(input_path) - - def test_clinvar_corr(self): - input_path = os.path.join(project_root_dir, 'test', 'resources', 'smol_clinvar.vcf.gz') - self.validator.validate_clinvar(input_path) - - def test_output(self): - output_path = project_root_dir - self.validator.validate_output(output_path) - - def test_vkgl_incorr(self): - input_path = os.path.join(project_root_dir, 'test', 'resources', 'smol_clinvar.vcf.gz') - self.assertRaises( - FileNotFoundError, - self.validator.validate_vkgl, - input_path - ) - - def test_clinvar_incorr(self): - input_path = os.path.join(project_root_dir, 'test', 'resources', 'smol_vkgl.tsv.gz') - self.assertRaises( - FileNotFoundError, - self.validator.validate_clinvar, - input_path - ) - - def test__validate_file_exist(self): - input_path = os.path.join(project_root_dir, 'test', 'resources', 'not_a_file.tsv.gz') - self.assertRaises( - FileNotFoundError, - self.validator._validate_file_exist, - input_path, - 'VKGL' - ) - - def test_output_not_directory(self): - output = os.path.join(project_root_dir, 'not_a_directory') - self.assertRaises( - OSError, - self.validator.validate_output, - output - ) - - -if __name__ == '__main__': - unittest.main() diff --git a/utility_scripts/liftover_variants.sh b/utility_scripts/liftover_variants.sh deleted file mode 100755 index 5d82f4b..0000000 --- a/utility_scripts/liftover_variants.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/bin/bash -#SBATCH --job-name=liftover_variants -#SBATCH --time=05:00:00 -#SBATCH --cpus-per-task=4 -#SBATCH --mem=20gb -#SBATCH --nodes=1 - -set -e - -errcho() { echo "$@" 1>&2; } - -readonly USAGE="Easy bash script to convert a GRCh37 VCF to GRCh38 VCF -Usage: -liftover_variants.sh -i -o --i required: the GRCh37 input VCF --o required: the GRCh38 output VCF path+filename (except extension!) - -Example: -bash liftover_variants.sh -i /path/to/GRCh37.vcf -o /path/to/GRCh38 - -Requirements: -Picard -EasyBuild -" - -main() { - digestCommandLine "$@" - runLiftover -} - -digestCommandLine() { - while getopts i:o:h flag - do - case "${flag}" in - i) input=${OPTARG};; - o) output=${OPTARG};; - h) - echo "${USAGE}" - exit;; - /?) - errcho "Error: invalid option" - echo "${USAGE}" - exit 1;; - esac - done - - validateCommandLine - - echo "CLA passed" -} - -validateCommandLine() { - local valid_command_line=true - if [ -z "${input}" ] - then - valid_command_line=false - errcho "input file not set" - else - if [ ! -f "${input}" ] - then - valid_command_line=false - errcho "input file does not exist" - fi - fi - - if [ -z "${output}" ] - then - valid_command_line=false - errcho "output not set" - fi - - if [ "${valid_command_line}" == false ]; - then - errcho 'exiting.' - exit 1 - fi -} - - -runLiftover() { - local output="${output}.vcf" - local rejected="${output}_rejected.vcf" - local input="${input}" - - local args=() - - args+=("/apps/software/picard/2.20.5-Java-11-LTS/picard.jar" "LiftoverVcf") - args+=("I=${input}") - args+=("O=${output}") - args+=("CHAIN=/apps/data/GRC/b37ToHg38.over.chain") - args+=("REJECT=${rejected}") - args+=("R=/apps/data/GRC/GCA_000001405.15/GCA_000001405.15_GRCh38_full_plus_hs38d1_analysis_set.fna.gz") - - echo "Loading Picard" - - module load picard - - echo "Running Picard" - - java -jar "${args[@]}" - - echo "Gzipping outputs" - - gzip "${output}" - gzip "${rejected}" - - echo "Removing indexing file if made" - if [ -f "${output}.vcf.idx" ] - then - rm "${output}.vcf.idx" - echo "Indexing file removed" - fi - - echo "Done" -} - -main "$@" - diff --git a/utility_scripts/run_train.sh b/utility_scripts/run_train.sh deleted file mode 100644 index a4aca2d..0000000 --- a/utility_scripts/run_train.sh +++ /dev/null @@ -1,144 +0,0 @@ -#!/bin/bash -#SBATCH --job-name=Train_CAPICE_model -#SBATCH --time=2-00:59:00 -#SBATCH --cpus-per-task=8 -#SBATCH --mem=10gb -#SBATCH --nodes=1 - -set -e - -errcho() { echo "$@" 1>&2; } - -readonly USAGE="Easy bash script to run the CAPICE train protocol on GCC cluster -Usage: -run_train.sh -i -o --i required: the training input TSV --o required: the output path and .pickle.dat filename - -Example: -bash run_train.sh -i train_input.tsv.gz -o capice_versionX.pickle.dat - -Requirements: -- Python 3.9 -- (virtual) environment with CAPICE modules installed -- CAPICE repository clone / easybuild install -- EasyBuild -" - -main() { - digestCommandLine "$@" - runVep -} - -digestCommandLine() { - while getopts i:o:a:h flag - do - case "${flag}" in - i) input=${OPTARG};; - o) output=${OPTARG};; - h) - echo "${USAGE}" - exit;; - /?) - errcho "Error: invalid option" - echo "${USAGE}" - exit 1;; - esac - done - - validateCommandLine - - echo "CLA passed" -} - -validateCommandLine() { - local valid_command_line=true - if [ -z "${input}" ] - then - valid_command_line=false - errcho "Input file not set!" - else - if [ ! -f "${input}" ] - then - valid_command_line=false - errcho "Input file does not exist!" - else - if [[ "${input}" != *.tsv.gz && "${input}" != *.tsv ]] - then - valid_command_line=false - errcho "Input file must be a (gzipped) TSV!" - fi - fi - fi - - if [ -z "${output}" ] - then - valid_command_line=false - errcho "output not set" - else - if [ "${output}" != *.pickle.dat ] - then - valid_command_line=false - errcho "Output must have the extension .pickle.dat !" - fi - fi - - if [ "${valid_command_line}" == false ]; - then - errcho 'Exiting.' - exit 1 - fi -} - - -runTrain() { - local output="${output}" - local input="${input}" - local assembly="${assembly}" - - local args=() - - args+=("--input_file" "${input}") - args+=("--format" "vcf") - args+=("--output_file" "${output}") - args+=("--vcf") - args+=("--compress_output" "gzip") - args+=("--regulatory") - args+=("--sift" "s") - args+=("--polyphen" "s") - args+=("--domains") - args+=("--numbers") - args+=("--canonical") - args+=("--symbol") - args+=("--shift_3prime" "1") - args+=("--allele_number") - args+=("--no_stats") - args+=("--offline") - args+=("--cache") - args+=("--dir_cache" "/apps/data/Ensembl/VEP/104") - args+=("--species" "homo_sapiens") - args+=("--assembly" "${assembly}") - args+=("--refseq") - args+=("--use_given_ref") - args+=("--exclude_predicted") - args+=("--flag_pick_allele") - args+=("--force_overwrite") - args+=("--fork" "4") - args+=("--af_gnomad") - args+=("--pubmed") - args+=("--dont_skip") - args+=("--allow_non_variant") - args+=("--per_gene") - - echo "Loading VEP" - - module load VEP/104.2-foss-2018b-Perl-5.28.0 - - echo "Running VEP" - - vep "${args[@]}" - - echo "Done" -} - -main "$@" \ No newline at end of file diff --git a/utility_scripts/run_vep.sh b/utility_scripts/run_vep.sh deleted file mode 100755 index f396ff8..0000000 --- a/utility_scripts/run_vep.sh +++ /dev/null @@ -1,147 +0,0 @@ -#!/bin/bash -#SBATCH --job-name=run_vep -#SBATCH --time=01:00:00 -#SBATCH --cpus-per-task=4 -#SBATCH --mem=8gb -#SBATCH --nodes=1 - -set -e - -errcho() { echo "$@" 1>&2; } - -readonly USAGE="Easy bash script to run VEP on the GCC cluster -Usage: -run_vep.sh -i -o --i required: the VEP input VCF --a required: the GRCh assembly --o required: the VEP output VCF filename and path - -Example: -bash run_vep.sh -i vep_input.vcf -o vep_output.vcf.gz - -Requirements: -VEP -EasyBuild -" - -main() { - digestCommandLine "$@" - runVep -} - -digestCommandLine() { - while getopts i:o:a:h flag - do - case "${flag}" in - i) input=${OPTARG};; - o) output=${OPTARG};; - a) assembly=${OPTARG};; - h) - echo "${USAGE}" - exit;; - /?) - errcho "Error: invalid option" - echo "${USAGE}" - exit 1;; - esac - done - - validateCommandLine - - echo "CLA passed" -} - -validateCommandLine() { - local valid_command_line=true - if [ -z "${input}" ] - then - valid_command_line=false - errcho "input file not set" - else - if [ ! -f "${input}" ] - then - valid_command_line=false - errcho "input file does not exist" - fi - fi - - if [ -z "${assembly}" ] - then - valid_command_line=false - errcho "assembly not set" - else - if [ "${assembly}" != "GRCh37" ] - then - if [ "${assembly}" != "GRCh38" ] - then - valid_command_line=false - errcho "assembly is not set to GRCh37 or GRCh38" - fi - fi - fi - - if [ -z "${output}" ] - then - valid_command_line=false - errcho "output not set" - fi - - if [ "${valid_command_line}" == false ]; - then - errcho 'exiting.' - exit 1 - fi -} - - -runVep() { - local output="${output}" - local input="${input}" - local assembly="${assembly}" - - local args=() - - args+=("--input_file" "${input}") - args+=("--format" "vcf") - args+=("--output_file" "${output}") - args+=("--vcf") - args+=("--compress_output" "gzip") - args+=("--regulatory") - args+=("--sift" "s") - args+=("--polyphen" "s") - args+=("--domains") - args+=("--numbers") - args+=("--canonical") - args+=("--symbol") - args+=("--shift_3prime" "1") - args+=("--allele_number") - args+=("--no_stats") - args+=("--offline") - args+=("--cache") - args+=("--dir_cache" "/apps/data/Ensembl/VEP/104") - args+=("--species" "homo_sapiens") - args+=("--assembly" "${assembly}") - args+=("--refseq") - args+=("--use_given_ref") - args+=("--exclude_predicted") - args+=("--flag_pick_allele") - args+=("--force_overwrite") - args+=("--fork" "4") - args+=("--af_gnomad") - args+=("--pubmed") - args+=("--dont_skip") - args+=("--allow_non_variant") - args+=("--per_gene") - - echo "Loading VEP" - - module load VEP/104.2-foss-2018b-Perl-5.28.0 - - echo "Running VEP" - - vep "${args[@]}" - - echo "Done" -} - -main "$@" diff --git a/utility_scripts/vep_to_tsv.sh b/utility_scripts/vep_to_tsv.sh deleted file mode 100755 index f305dea..0000000 --- a/utility_scripts/vep_to_tsv.sh +++ /dev/null @@ -1,131 +0,0 @@ -#!/bin/bash - -# Stops script if any error occurs. -set -e - -# Defines error echo. -errcho() { echo "$@" 1>&2; } - -# Usage. -readonly USAGE="Slightly modified version of the CAPICE supplied VEP VCF output to CAPICE TSV converter - -The modification is that also the ID column and the gnomad allele frequency are exported. - -Usage: -convert_vep_to_tsv_capice.sh -i -o --i required: The VEP output VCF --o required: The directory and output filename for the CAPICE .tsv.gz - -Example: -bash convert_vep_vcf_to_tsv_capice.sh -i vep_out.vcf -o capice_in.tsv.gz - -Requirements: -BCFTools -" - -main() { - digestCommandLine "$@" - processFile -} - -digestCommandLine() { - while getopts i:o:h flag - do - case "${flag}" in - i) input=${OPTARG};; - o) output=${OPTARG};; - h) - echo "${USAGE}" - exit;; - \?) - errcho "Error: invalid option" - echo "${USAGE}" - exit 1;; - esac - done - - validateCommandLine -} - -validateCommandLine() { - local valid_command_line=true - - # Validate if variable is set & not empty. - if [ -z "${input}" ] - then - valid_command_line=false - errcho "input file not set/empty" - else - # Validate if input file exists. - if [ ! -f "${input}" ] - then - valid_command_line=false - errcho "input file does not exist" - else - # Validate allowed input filetype. - case $(file --mime-type -b "${input}") in - text/plain);; - application/*gzip);; - *) - valid_command_line=false - errcho "input file has invalid type (plain text/gzip allowed)";; - esac - fi - fi - - # Validate if variable is set & not empty. - if [ -z "${output}" ] - then - valid_command_line=false - errcho "output file not set/empty" - else - # Validates proper output filename. - if [[ "${output}" != *.tsv.gz ]] - then - valid_command_line=false - errcho "output filename must end with '.tsv.gz'" - else - # Validates if output doesn't file already exist. - if [ -f "${output}" ] - then - valid_command_line=false - errcho "output file already exists" - fi - fi - fi - - # If a the command line arguments are invalid, exits with code 1. - if [[ "${valid_command_line}" == false ]]; then errcho "Exiting."; exit 1; fi -} - -processFile() { - local output="${output%.gz}" # Strips '.gz' to better work with code below. - local output_tmp="${output}.tmp" - - local -r pre_header="%CHROM\t%POS\t%ID\t%REF\t%ALT\t%Consequence\t%SYMBOL\t%SYMBOL_SOURCE\t%HGNC_ID\t%Feature\t%cDNA_position\t%CDS_position\t%Protein_position\t%Amino_acids\t%STRAND\t%SIFT\t%PolyPhen\t%DOMAINS\t%MOTIF_NAME\t%HIGH_INF_POS\t%MOTIF_SCORE_CHANGE\t%EXON\t%INTRON" - - local format="${pre_header}\n" - - local args=() - args+=("+split-vep") - args+=("-d") - args+=("-f" "${format}") - args+=("-o" "${output_tmp}") - args+=("${input}") - - echo "Starting BCFTools." - - bcftools "${args[@]}" - - echo "BCFTools finished, building output file." - - echo -e "${pre_header}" | cat - "${output_tmp}" > "${output}" && rm "${output_tmp}" - - echo "Output file ready, gzipping." - - gzip "${output}" - - echo "Done." -} - -main "$@" From 43f7d39010b10491451b4d3615611421320ecd7d Mon Sep 17 00:00:00 2001 From: SietsmaRJ Date: Tue, 18 Jan 2022 11:12:41 +0100 Subject: [PATCH 2/2] - Added figures for model beta2 --- validation/beta2/iteration_1/aucs.png | Bin 0 -> 157064 bytes validation/beta2/iteration_1/violins.png | Bin 0 -> 198784 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 validation/beta2/iteration_1/aucs.png create mode 100644 validation/beta2/iteration_1/violins.png diff --git a/validation/beta2/iteration_1/aucs.png b/validation/beta2/iteration_1/aucs.png new file mode 100644 index 0000000000000000000000000000000000000000..5a1e98ec97a47b567c0904247d50d089e6daff71 GIT binary patch literal 157064 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 literal 0 HcmV?d00001 diff --git a/validation/beta2/iteration_1/violins.png b/validation/beta2/iteration_1/violins.png new file mode 100644 index 0000000000000000000000000000000000000000..c95e70f95cda5b135755915314b073a5ebba1f8f GIT binary patch literal 198784 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 DmSU;^ literal 0 HcmV?d00001