From bd57e008e841b38fb7f272331d65b8555a1225b0 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 4 Mar 2025 16:07:07 -0500 Subject: [PATCH 01/93] set up project structure --- Dockerfile | 0 data/example.vcf | 0 requirements.txt | 0 scripts/annotate.py | 27 +++++++++++++++++++++++++++ scripts/train_model.py | 24 ++++++++++++++++++++++++ setup.py | 21 +++++++++++++++++++++ 6 files changed, 72 insertions(+) create mode 100644 Dockerfile create mode 100644 data/example.vcf create mode 100644 requirements.txt create mode 100644 scripts/annotate.py create mode 100644 scripts/train_model.py create mode 100644 setup.py diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/data/example.vcf b/data/example.vcf new file mode 100644 index 0000000..e69de29 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/scripts/annotate.py b/scripts/annotate.py new file mode 100644 index 0000000..285ef79 --- /dev/null +++ b/scripts/annotate.py @@ -0,0 +1,27 @@ +import os +import subprocess + +def annotate_with_annovar(input_vcf, output_prefix, annovar_path, db_path): + cmd = [ + f"{annovar_path}/table_annovar.pl", + input_vcf, + db_path, + "--buildver hg19", + "--out", output_prefix, + "--remove", + "--protocol refGene,cytoBand,dbnsfp35a", + "--operation g,r,f", + "--nastring ." + ] + subprocess.run(" ".join(cmd), shell=True, check=True) + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("--vcf", required=True, help="Input VCF file") + parser.add_argument("--out", required=True, help="Output prefix") + parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") + parser.add_argument("--db", required=True, help="Path to ANNOVAR database") + args = parser.parse_args() + + annotate_with_annovar(args.vcf, args.out, args.annovar, args.db) diff --git a/scripts/train_model.py b/scripts/train_model.py new file mode 100644 index 0000000..b64cf14 --- /dev/null +++ b/scripts/train_model.py @@ -0,0 +1,24 @@ +import pandas as pd +from sklearn.model_selection import train_test_split +from sklearn.ensemble import RandomForestClassifier +from sklearn.metrics import accuracy_score + +def train_model(data_path): + data = pd.read_csv(data_path) + X = data.drop(columns=["label"]) + y = data["label"] + + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) + model = RandomForestClassifier(n_estimators=100) + model.fit(X_train, y_train) + + y_pred = model.predict(X_test) + print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}") + +if __name__ == "__main__": + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("--data", required=True, help="Path to CSV dataset") + args = parser.parse_args() + + train_model(args.data) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..ac27eef --- /dev/null +++ b/setup.py @@ -0,0 +1,21 @@ +from setuptools import setup, find_packages + +setup( + name="ContextScore", + version="0.1.0", + packages=find_packages(), + install_requires=[ + "numpy", + "pandas", + "scikit-learn", + "matplotlib", + "seaborn", + ], + entry_points={ + "console_scripts": [ + "annotate-svs=scripts.annotate_svs:main", + "train-model=scripts.train_model:main", + "predict=scripts.predict:main", + ] + }, +) From b58db8f284e5e2422cfae82b6544c96c4e9de01d Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 13 Mar 2025 20:55:52 -0400 Subject: [PATCH 02/93] work on train model --- .gitignore | 10 + contextscore/__init__.py | 0 contextscore/__main__.py | 25 +++ {scripts => contextscore}/annotate.py | 0 contextscore/extract_features.py | 158 ++++++++++++++ contextscore/train_model.py | 293 ++++++++++++++++++++++++++ scripts/train_model.py | 24 --- 7 files changed, 486 insertions(+), 24 deletions(-) create mode 100644 contextscore/__init__.py create mode 100644 contextscore/__main__.py rename {scripts => contextscore}/annotate.py (100%) create mode 100644 contextscore/extract_features.py create mode 100644 contextscore/train_model.py delete mode 100644 scripts/train_model.py diff --git a/.gitignore b/.gitignore index 15201ac..f7fc91c 100644 --- a/.gitignore +++ b/.gitignore @@ -169,3 +169,13 @@ cython_debug/ # PyPI configuration file .pypirc + +# Ignore the output/ folder +output/ +scripts/ + +# VS Code settings +.vscode/launch.json + +# Testing scripts +linktoscripts diff --git a/contextscore/__init__.py b/contextscore/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/contextscore/__main__.py b/contextscore/__main__.py new file mode 100644 index 0000000..9aada5f --- /dev/null +++ b/contextscore/__main__.py @@ -0,0 +1,25 @@ +import sys +import subprocess + +def main(vcf_file, annovar_path, annovar_db_path): + # Construct the command to run the contextscore module + command = [annovar_path, 'contextscore', vcf_file, '-db', annovar_db_path] + + # Run the command + try: + result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + print(result.stdout.decode()) + except subprocess.CalledProcessError as e: + print(f"Error running contextscore: {e.stderr.decode()}", file=sys.stderr) + +if __name__ == "__main__": + if len(sys.argv) != 4: + print("Usage: python __main__.py ") + sys.exit(1) + + vcf_file = sys.argv[1] + annovar_path = sys.argv[2] + annovar_db_path = sys.argv[3] + + main(vcf_file, annovar_path, annovar_db_path) + \ No newline at end of file diff --git a/scripts/annotate.py b/contextscore/annotate.py similarity index 100% rename from scripts/annotate.py rename to contextscore/annotate.py diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py new file mode 100644 index 0000000..02a0c26 --- /dev/null +++ b/contextscore/extract_features.py @@ -0,0 +1,158 @@ +""" +extract_features.py: Extract features from the input VCF file. + +Usage: + extract_features.py + +Arguments: + Path to the input VCF file. + +Output: + A dataframe with a column for each feature. +""" + +import os +import sys +import logging +import numpy as np +import pandas as pd + +import joblib +import seaborn as sb +import matplotlib.pyplot as plt + +# data = joblib.load("test.jl") +# p = sb.countplot(data=data[data["state"] == 'tp'], x="szbin", hue="svtype", hue_order=["DEL", "INS"]) +# plt.xticks(rotation=45, ha='right') +# p.set(title="True Positives by svtype and szbin") + +def read_vcf(filepath): + """Read in the VCF file.""" + vcf_df = pd.read_csv(filepath, sep='\t', comment='#', header=None, usecols=[0, 1, 7], \ + names=['CHROM', 'POS', 'INFO'], \ + dtype={'CHROM': str, 'POS': np.int64, 'INFO': str}) + return vcf_df + +def extract_features(input_vcf): + """Extract the features from the VCF file's data.""" + # Read in the VCF file. + vcf_df = read_vcf(input_vcf) + + # Extract the read and clipped base support from the INFO column. + read_support = vcf_df['INFO'].str.extract(r'SUPPORT=(\d+)', expand=False).astype(np.int32) + + # Check if any read depths are missing. + if read_support.isnull().values.any(): + logging.error('Read support is missing.') + sys.exit(1) + + clipped_bases = vcf_df['INFO'].str.extract(r'CLIPSUP=(\d+)', expand=False).astype(np.int32) + + # Check if any clipped bases are missing. + if clipped_bases.isnull().values.any(): + logging.error('Clipped bases is missing.') + sys.exit(1) + + # Get the array of chromosome names. + chrom = vcf_df['CHROM'] + + # Create a key to map the chromosome names to a unique integer. + + # First, get all unique chromosome names. + chrom_unique = chrom.unique() + + # Next, create a dictionary to map the chromosome names to integers. + chrom_dict = {chrom: i for i, chrom in enumerate(chrom_unique)} + + # Finally, map the chromosome names to integers. + chrom = chrom.map(chrom_dict) + + + # Check if any chromosome names are missing. + if chrom.isnull().values.any(): + logging.error('Chromosome name is missing.') + sys.exit(1) + else: + # Print space-separated chromosome names. + logging.info('Chromosomes: ' + ' '.join(chrom.unique().astype(str))) + + # Get the start and end positions. + start = vcf_df['POS'] + + # Check if any start positions are missing. + if start.isnull().values.any(): + logging.error('Start position is missing.') + sys.exit(1) + + # Get the SV length from the INFO column. + sv_length = vcf_df['INFO'].str.extract(r'SVLEN=(-?\d+)', expand=False).astype(np.int32) + + # Check if any SV lengths are missing. + if sv_length.isnull().values.any(): + logging.error('SV length is missing.') + sys.exit(1) + + # Get the SV type from the INFO column. + sv_type = vcf_df['INFO'].str.extract(r'SVTYPE=(\w+)', expand=False) + + # If INFO/REPTYPE=DUP, then the SV type is a duplication. + sv_type[vcf_df['INFO'].str.contains('REPTYPE=DUP')] = 'DUP' + + # Convert the SV type to integers. + sv_type = sv_type.replace('DEL', '0') + sv_type = sv_type.replace('DUP', '1') + sv_type = sv_type.replace('INV', '2') + sv_type = sv_type.replace('INS', '3') + sv_type = sv_type.replace('BND', '4') + sv_type = sv_type.astype(np.int32) + + # Check if any SV types are missing. + if sv_type.isnull().values.any(): + logging.error('SV type is missing.') + sys.exit(1) + + # Loop through the columns and check if any values are missing for all of + # the feature arrays. + for col in [chrom, start, sv_length, sv_type, read_support, clipped_bases]: + if col.isnull().values.all(): + logging.error('All values are missing for a feature.') + logging.error(col) + sys.exit(1) + + # Print the first 4 rows of the features. + logging.info('Features:') + logging.info(pd.DataFrame({'chrom': chrom.head(4), 'start': start.head(4), 'sv_length': sv_length.head(4), \ + 'sv_type': sv_type.head(4), 'read_support': read_support.head(4), \ + 'clipped_bases': clipped_bases.head(4)})) + + # Check that all features have the same length. + if not all(len(col) == len(chrom) for col in [start, sv_length, sv_type, read_support, clipped_bases]): + logging.error('Features do not have the same length.') + + # Print the length of each feature. + logging.error('Chromosomes: ' + str(len(chrom))) + logging.error('Start positions: ' + str(len(start))) + logging.error('SV lengths: ' + str(len(sv_length))) + logging.error('SV types: ' + str(len(sv_type))) + logging.error('Read support: ' + str(len(read_support))) + logging.error('Clipped bases: ' + str(len(clipped_bases))) + + sys.exit(1) + + # Create a dataframe of the features. + features = pd.DataFrame({'chrom': chrom, 'start': start, 'sv_length': sv_length, 'sv_type': sv_type, \ + 'read_support': read_support, 'clipped_bases': clipped_bases}) + + # Check if any features are missing. + if features.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = features[features.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Return the features. + return features diff --git a/contextscore/train_model.py b/contextscore/train_model.py new file mode 100644 index 0000000..59d28f0 --- /dev/null +++ b/contextscore/train_model.py @@ -0,0 +1,293 @@ +""" +train_model.py - Train the binary classification model. + +This script trains the binary classification model using the true positive and +false positive data. The true positive data is obtained from a benchmarking +dataset. The false positive data is obtained from running the caller on data +that is known to be negative for SVs. This data can be obtained by running the +caller on a normal sample with known SVs accounted for in the reference genome. + +For example for HG002, the true positive data is obtained from the Genome in a +Bottle benchmarking dataset, and the false positive data is obtained from +running the caller on the HG002 normal sample and extracting the SV calls that +are not in the benchmarking dataset. This can be repeated for other samples such +as HG001 and HG005 as long as the known SVs are accounted for. + +In the HG002 SV v0.6 dataset, there are low-confidence regions which +are excluded from the true positive data. Thus, we must include true SVs from +other publicly available normal samples with information from complex regions, +such as those aligned to CHM13. + +The model is trained using logistic regression. The features are the LRR and +BAF values. The labels are 1 for true positives and 0 for false positives. + +The model is saved to the output directory as a pickle file. + +Usage: + python train_model.py + + + true_positives_filepath: Path to the VCF of true positive SV calls obtained + from a benchmarking dataset. + false_positives_filepath: Path to the VCF of false positive SV calls + obtained from running the caller on data that is known to be negative + for SVs. This data can be obtained by running the caller on a normal + sample with known SVs accounted for in the reference genome. + + output_directory: Path to the output directory. + +Output: + model.pkl: The binary classification model. + +Example: + python train_model.py data/sv_scoring_dataset/true_positives.vcf + sv_scoring_dataset/false_positives.vcf data/sv_scoring_dataset/model +""" + +import os +import sys +import logging +import numpy as np +import joblib +import pandas as pd +from sklearn.linear_model import LogisticRegression +import matplotlib.pyplot as plt + +from extract_features import extract_features + +# Set up the logger. +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + + +def train(tp_files, fp_files): + """Train the binary classification model.""" + + # Extract the features from the VCF files. + logging.info('Extracting features from the true positive VCF file.') + + # Set up the dataframe with all the features. + feature_cols=[ + "label", + "chrom", + "start", + "sv_length", + "sv_type", + "cluster_size", + "hmm_llh", + "segdup", + "repeatregions", + "telomere", + "centromere", + "fragile_site", + "conserved_region" + ] + tp_data = pd.DataFrame(columns=feature_cols) + for tp_file in tp_files: + # Extract the features from the true positive VCF file. + tp_data = pd.concat([tp_data, extract_features(tp_file)], ignore_index=True) + logging.info('Extracted features from %s', tp_file) + + # Check if the true positive data is empty. + if tp_data.empty: + logging.error('True positive data is empty.') + sys.exit(1) + + for fp_file in fp_files: + logging.info('Extracting features from the false positive VCF file.') + # Extract the features from the false positive VCF file. + fp_data = extract_features(fp_file) + logging.info('Extracted features from %s', fp_file) + + # Check if the false positive data is empty. + if fp_data.empty: + logging.error('False positive data is empty.') + sys.exit(1) + + + + # Check if any features are missing. + if tp_data.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = tp_data[tp_data.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + logging.info('Extracting features from the false positive VCF file.') + fp_data = extract_features(false_positives_filepath) + + # Check if any features are missing. + if fp_data.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = fp_data[fp_data.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Add the labels. + tp_data['label'] = 1 + fp_data['label'] = 0 + + # Print the number of true positives and false positives. + logging.info('Number of true labels: %d', tp_data.shape[0]) + logging.info('Number of false labels: %d', fp_data.shape[0]) + + # Combine the true positive and false positive data. + data = pd.concat([tp_data, fp_data]) + + # Get the features and labels. + features = data[["chrom", "start", "sv_length", "sv_type", "read_support", "clipped_bases"]] + labels = data["label"] + + # Check if any features are missing. + if features.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = features[features.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Check if any labels are missing. + if labels.isnull().values.any(): + logging.error('Labels are missing.') + sys.exit(1) + + # Train the model. + model = LogisticRegression() + model.fit(features, labels) + + # Return the model. + return model + +# Run the program. +def run(tp_dir, fp_dir, output_directory, annovar_path, db_path): + """Train the binary classification model.""" + logging.info('Getting the true positive and false positive VCF files.') + + # Get all *.jl files in the true positive directory. + tp_files = [os.path.join(tp_dir, f) for f in os.listdir(tp_dir) if f.endswith('.jl')] + # Get all *.jl files in the false positive directory. + fp_files = [os.path.join(fp_dir, f) for f in os.listdir(fp_dir) if f.endswith('.jl')] + + # Check if the true positive and false positive directories are empty. + if not tp_files: + logging.error('No true positive VCF files found in the directory.') + return + + if not fp_files: + logging.error('No false positive VCF files found in the directory.') + return + + # Print the files. + logging.info('True positive VCF files:') + for file in tp_files: + logging.info(file) + + logging.info('False positive VCF files:') + for file in fp_files: + logging.info(file) + + logging.info('Output directory: %s', output_directory) + logging.info('ANNOVAR path: %s', annovar_path) + logging.info('ANNOVAR database path: %s', db_path) + + # Check if the output directory exists. + if not os.path.exists(output_directory): + logging.info('Creating the output directory.') + os.makedirs(output_directory) + + model = train(tp_files, fp_files) + + logging.info('Model failed successfully!') + + # logging.info('Training the model.') + # # Train the model using the true positive and false positive VCF files. + # model = train(true_positives_files, false_positives_files) + # logging.info('Model trained successfully.') + # # Save the model to the output directory. + # model_path = os.path.join(output_directory, "model.pkl") + # logging.info('Saving the model to %s', model_path) + # joblib.dump(model, model_path) + # logging.info('Model saved successfully.') + + # # Print the model. + # logging.info('Model: %s', model) + + # # Print the model coefficients. + # logging.info('Model coefficients: %s', model.coef_) + + # # Print the model intercept. + # logging.info('Model intercept: %s', model.intercept_) + + # # Print the model score. + # logging.info('Model score: %s', model.score(features, labels)) + + # # Print the model accuracy. + # logging.info('Model accuracy: %s', model.score(features, labels)) + + # # Print the model precision. + # logging.info('Model precision: %s', model.score(features, labels)) + + # # Print the model recall. + # logging.info('Model recall: %s', model.score(features, labels)) + + # # Print the model F1 score. + # logging.info('Model F1 score: %s', model.score(features, labels)) + + # Check if the output directory is empty. + # Train the model. + # model = train(true_positives_filepath, false_positives_filepath) + + # # Create the output directory if it does not exist. + # if not os.path.exists(output_directory): + # os.makedirs(output_directory) + + # # Save the model + # model_path = os.path.join(output_directory, "model.pkl") + # joblib.dump(model, model_path) + + # # Print the model. + # print(model) + + # Return the model. + # return model + + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("--tpdir", required=True, help="Directory containing benchmark VCF files of real SVs (true positives and false negatives)") + parser.add_argument("--fpdir", required=True, help="Directory containing false positive VCF files from running the caller on normal samples") + parser.add_argument("--outdir", required=True, help="Output directory") + parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") + parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") + args = parser.parse_args() + # Get the command line arguments. + # if len(sys.argv) != 4: + # logging.error('Usage: python train_model.py \n') + # sys.exit(1) + + # # Input VCF of true positive SV calls obtained from a benchmarking dataset. + # tp_filepath = sys.argv[1] + + # # Input VCF of false positive SV calls obtained from running the caller on + # # data that is known to be negative for SVs. This data can be obtained by + # # running the caller on a normal sample with known SVs accounted for in the + # # reference genome. + # fp_filepath = sys.argv[2] + # output_dir = sys.argv[3] + + # Run the program. + logging.info('Training the model...') + run(args.tpdir, args.fpdir, args.outdir, args.annovar, args.annovar_db) + # run(tp_filepath, fp_filepath, output_dir) + logging.info('done.') diff --git a/scripts/train_model.py b/scripts/train_model.py deleted file mode 100644 index b64cf14..0000000 --- a/scripts/train_model.py +++ /dev/null @@ -1,24 +0,0 @@ -import pandas as pd -from sklearn.model_selection import train_test_split -from sklearn.ensemble import RandomForestClassifier -from sklearn.metrics import accuracy_score - -def train_model(data_path): - data = pd.read_csv(data_path) - X = data.drop(columns=["label"]) - y = data["label"] - - X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) - model = RandomForestClassifier(n_estimators=100) - model.fit(X_train, y_train) - - y_pred = model.predict(X_test) - print(f"Accuracy: {accuracy_score(y_test, y_pred):.2f}") - -if __name__ == "__main__": - import argparse - parser = argparse.ArgumentParser() - parser.add_argument("--data", required=True, help="Path to CSV dataset") - args = parser.parse_args() - - train_model(args.data) From cb9bac17ecce0d586629d2d97d0ddd4892b431e1 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 16 Mar 2025 19:09:18 -0400 Subject: [PATCH 03/93] work on annotations --- contextscore/train_model.py | 176 ++++++++++++++++++++++++++++-------- 1 file changed, 140 insertions(+), 36 deletions(-) diff --git a/contextscore/train_model.py b/contextscore/train_model.py index 59d28f0..c19f84e 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -46,6 +46,7 @@ import os import sys +import subprocess import logging import numpy as np import joblib @@ -58,7 +59,6 @@ # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') - def train(tp_files, fp_files): """Train the binary classification model.""" @@ -103,8 +103,6 @@ def train(tp_files, fp_files): logging.error('False positive data is empty.') sys.exit(1) - - # Check if any features are missing. if tp_data.isnull().values.any(): logging.error('Features are missing.') @@ -168,46 +166,151 @@ def train(tp_files, fp_files): # Return the model. return model +def bed_to_annovar_input(bed_file): + """Convert the BED file to ANNOVAR input format.""" + output_file = bed_file.replace('.bed', '.avinput') + logging.info('Converting the BED file to ANNOVAR input format.') + + # Read the BED file using pandas (first line is the header with the column names). + df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) + logging.info('Number of rows in the BED file: %d', df.shape[0]) + logging.info('First 5 rows of the BED file:\n%s', df.head()) + + # The ANNOVAR input format requires the following columns: + # 1. Chromosome + # 2. Start position + # 3. End position + # 4. Reference allele + # 5. Alternate allele + # We will use the first three columns from the BED file and add two dummy + # columns for the reference and alternate alleles (0, and -) since gnomAD does not + # provide the sequence information for the SVs. + + # Create a new dataframe with the required columns. + annovar_df = pd.DataFrame() + annovar_df['chrom'] = df['CHROM'] + annovar_df['start'] = df['POS'] + annovar_df['end'] = df['END'] + annovar_df['ref'] = '0' + annovar_df['alt'] = '-' + + # Save the tab-delimited dataframe to a file. + logging.info('Saving the ANNOVAR input file to %s', output_file) + annovar_df.to_csv(output_file, sep='\t', index=False, header=False) + logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) + logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) + logging.info('Saved the ANNOVAR input file to %s', output_file) + + return output_file + +# def annotate_with_annovar(annovar_input, output_prefix, annovar_path, db_path): +# cmd = [ +# f"{annovar_path}/table_annovar.pl", +# annovar_input, +# db_path, +# "--buildver hg19", +# "--out", output_prefix, +# "--remove", +# "--protocol refGene,cytoBand,dbnsfp35a", +# "--operation g,r,f", +# "--nastring ." +# ] +# subprocess.run(" ".join(cmd), shell=True, check=True) + +def download_annovar_db(annovar_path, db_path, db_name, buildver): + """Download the ANNOVAR database if it does not exist.""" + logging.info('Downloading the database' + db_name) + cmd = [ + f"{annovar_path}/annotate_variation.pl", + "-buildver", buildver, + "-downdb", db_name, + db_path + ] + + # Run the command to download the database. + logging.info('Running the command to download the database: %s', " ".join(cmd)) + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error downloading the database: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + logging.info('Downloaded the database %s successfully.', db_name) + +def annotate_segdup(annovar_input, annovar_path, db_path, output_dir): + """Annotate segmental duplications using ANNOVAR.""" + logging.info('Annotating segmental duplications using ANNOVAR.') + + annotations_dir = os.path.join(output_dir, 'segdup') + logging.info('Creating the output directory for segmental duplications: %s', annotations_dir) + cmd = [ + f"{annovar_path}/table_annovar.pl", + annovar_input, + db_path, + "--buildver hg38", + "--out", annotations_dir, + "--remove", + "--protocol genomicSuperDups", + "--operation r", + "--nastring .", + "-polish" + ] + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error annotating segmental duplications: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Completed annotating segmental duplications using ANNOVAR.') + # Run the program. -def run(tp_dir, fp_dir, output_directory, annovar_path, db_path): +def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): """Train the binary classification model.""" + buildver = 'hg38' + logging.info('Getting the true positive and false positive VCF files.') - # Get all *.jl files in the true positive directory. - tp_files = [os.path.join(tp_dir, f) for f in os.listdir(tp_dir) if f.endswith('.jl')] - # Get all *.jl files in the false positive directory. - fp_files = [os.path.join(fp_dir, f) for f in os.listdir(fp_dir) if f.endswith('.jl')] - - # Check if the true positive and false positive directories are empty. - if not tp_files: - logging.error('No true positive VCF files found in the directory.') - return + # Convert the BED files to ANNOVAR input format. + logging.info('Converting the true positive BED file to ANNOVAR input format.') + true_positives_file = bed_to_annovar_input(tp_bed) + + logging.info('Converting the false positive BED file to ANNOVAR input format.') + false_positives_file = bed_to_annovar_input(fp_bed) + + # Set up annotations + training_datasets = [true_positives_file, false_positives_file] - if not fp_files: - logging.error('No false positive VCF files found in the directory.') - return - # Print the files. - logging.info('True positive VCF files:') - for file in tp_files: - logging.info(file) + # Download the segmental duplication database + download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildver) + + logging.info('Annotating true positive segmental duplications using ANNOVAR.') + annotate_segdup(true_positives_file, annovar_path, db_path, output_directory_annovar) + segdup_annotation= os.path.join(output_directory_annovar, 'segdup.' + buildver + '_multianno.txt') + + # Check if the annotation file exists. + if not os.path.exists(segdup_annotation): + logging.error('Annotation file does not exist: %s', segdup_annotation) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Successfully annotated segmental duplications to file: %s', segdup_annotation) + - logging.info('False positive VCF files:') - for file in fp_files: - logging.info(file) - logging.info('Output directory: %s', output_directory) - logging.info('ANNOVAR path: %s', annovar_path) - logging.info('ANNOVAR database path: %s', db_path) + # logging.info('Output directory: %s', output_directory) + # logging.info('ANNOVAR path: %s', annovar_path) + # logging.info('ANNOVAR database path: %s', db_path) - # Check if the output directory exists. - if not os.path.exists(output_directory): - logging.info('Creating the output directory.') - os.makedirs(output_directory) + # # Check if the output directory exists. + # if not os.path.exists(output_directory): + # logging.info('Creating the output directory.') + # os.makedirs(output_directory) - model = train(tp_files, fp_files) + # model = train(tp_files, fp_files) - logging.info('Model failed successfully!') + logging.info('All complete!') # logging.info('Training the model.') # # Train the model using the true positive and false positive VCF files. @@ -265,9 +368,10 @@ def run(tp_dir, fp_dir, output_directory, annovar_path, db_path): if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() - parser.add_argument("--tpdir", required=True, help="Directory containing benchmark VCF files of real SVs (true positives and false negatives)") - parser.add_argument("--fpdir", required=True, help="Directory containing false positive VCF files from running the caller on normal samples") - parser.add_argument("--outdir", required=True, help="Output directory") + parser.add_argument("--tpbed", required=True, help="Directory containing benchmark VCF files of real SVs (true positives and false negatives)") + parser.add_argument("--fpbed", required=True, help="Directory containing false positive VCF files from running the caller on normal samples") + parser.add_argument("--outdiranno", required=True, help="Output directory for saving the ANNOVAR annotations") + parser.add_argument("--outdir", required=True, help="Output directory for saving the model") parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") args = parser.parse_args() @@ -288,6 +392,6 @@ def run(tp_dir, fp_dir, output_directory, annovar_path, db_path): # Run the program. logging.info('Training the model...') - run(args.tpdir, args.fpdir, args.outdir, args.annovar, args.annovar_db) + run(args.tpbed, args.fpbed, args.outdir, args.outdiranno, args.annovar, args.annovar_db) # run(tp_filepath, fp_filepath, output_dir) logging.info('done.') From 05c09919e55adad75027962ea78901a4d6f660f8 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 16 Mar 2025 20:14:26 -0400 Subject: [PATCH 04/93] add fragile sites --- contextscore/train_model.py | 147 +++++++++++++++++++++++++++++++++--- 1 file changed, 138 insertions(+), 9 deletions(-) diff --git a/contextscore/train_model.py b/contextscore/train_model.py index c19f84e..b6938cd 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -264,9 +264,80 @@ def annotate_segdup(annovar_input, annovar_path, db_path, output_dir): logging.info('Completed annotating segmental duplications using ANNOVAR.') +def annotate(annovar_input, annovar_path, db_path, output_dir): + """Annotate regions.""" + logging.info('Annotating regions using ANNOVAR.') + + annotations_dir = os.path.join(output_dir, 'regions') + logging.info('Creating the output directory: %s', annotations_dir) + cmd = [ + f"{annovar_path}/table_annovar.pl", + annovar_input, + db_path, + "--buildver hg38", + "--out", annotations_dir, + "--remove", + "--protocol genomicSuperDups,phastConsElements46way,cytoBand", + "--operation r,r,r", + "--nastring .", + "-polish" + ] + # "--protocol genomicSuperDups", + + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error annotating: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Completed annotations.') + +def annotate_bed(annovar_input, annovar_path, db_path, output_dir, bed_file): + """Annotate from the BED file using ANNOVAR.""" + # Use the example: annotate_variation.pl ex1.hg18.avinput humandb/ -bedfile hg18_SureSelect_All_Exon_G3362_with_names.bed -dbtype bed -regionanno -out ex1 + logging.info('Annotating from the BED file using ANNOVAR.') + + annotations_dir = os.path.join(output_dir, 'bed') + logging.info('Creating the output directory: %s', annotations_dir) + cmd = [ + f"{annovar_path}/annotate_variation.pl", + annovar_input, + db_path, + "-buildver hg38", + "-bedfile", bed_file, + "-dbtype bed", + "-regionanno", + "-out", annotations_dir + ] + # cmd = [ + # f"{annovar_path}/table_annovar.pl", + # annovar_input, + # db_path, + # "--buildver hg38", + # "--out", annotations_dir, + # "--remove", + # "--protocol fragileSites", + # "--operation r", + # "--nastring .", + # "-polish" + # ] + + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error annotating from the BED file: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Completed annotating from the BED file using ANNOVAR.') + logging.info('Output directory: %s', annotations_dir) + # Run the program. def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): """Train the binary classification model.""" + + # TODO: Make this an input parameter. buildver = 'hg38' logging.info('Getting the true positive and false positive VCF files.') @@ -278,25 +349,83 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Converting the false positive BED file to ANNOVAR input format.') false_positives_file = bed_to_annovar_input(fp_bed) - # Set up annotations - training_datasets = [true_positives_file, false_positives_file] - + + # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). + # https://webs.iiitd.edu.in/raghava/humcfs/download.html + # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ + # fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + # fragile_sites_bed = + # "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + # fragile_sites_bed = + # "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + fragile_sites_bed = "fragileSites.bed" + logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) + if not os.path.exists(fragile_sites_bed): + logging.error('Fragile sites BED file does not exist: %s', fragile_sites_bed) + + logging.info('Annotating fragile sites in true positives.') + tp_fs_dir = os.path.join(output_directory_annovar, 'TP_FS') + if not os.path.exists(tp_fs_dir): + os.makedirs(tp_fs_dir) + + annotate_bed(true_positives_file, annovar_path, db_path, tp_fs_dir, fragile_sites_bed) + + logging.info('Annotating fragile sites in false positives.') + fp_fs_dir = os.path.join(output_directory_annovar, 'FP_FS') + if not os.path.exists(fp_fs_dir): + os.makedirs(fp_fs_dir) + + annotate_bed(false_positives_file, annovar_path, db_path, fp_fs_dir, fragile_sites_bed) + + # --------------------------------------- + # Region-based annotation using ANNOVAR databases. + + # genomicSuperDups is the segmental duplication database. + # phastConsElements46way is the conservation database. + # cytoBand is used to annotate the centromere and telomere regions. # Download the segmental duplication database download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildver) - logging.info('Annotating true positive segmental duplications using ANNOVAR.') - annotate_segdup(true_positives_file, annovar_path, db_path, output_directory_annovar) - segdup_annotation= os.path.join(output_directory_annovar, 'segdup.' + buildver + '_multianno.txt') + # Download the conservation database + download_annovar_db(annovar_path, db_path, "phastConsElements46way", buildver) + + # Download the cytoband database + download_annovar_db(annovar_path, db_path, "cytoBand", buildver) + + logging.info('Annotating true positivess using ANNOVAR.') + tp_anno_dir = os.path.join(output_directory_annovar, 'TP') + if not os.path.exists(tp_anno_dir): + os.makedirs(tp_anno_dir) + + annotate(true_positives_file, annovar_path, db_path, tp_anno_dir) + tp_annotation = os.path.join(tp_anno_dir, 'regions.' + buildver + '_multianno.txt') + + # Check if the annotation file exists. + if not os.path.exists(tp_annotation): + logging.error('Annotation file does not exist: %s', tp_annotation) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Successfully annotated true positives to file: %s', tp_annotation) + + logging.info('Annotating false positives using ANNOVAR.') + fp_anno_dir = os.path.join(output_directory_annovar, 'FP') + if not os.path.exists(fp_anno_dir): + os.makedirs(fp_anno_dir) + annotate(false_positives_file, annovar_path, db_path, fp_anno_dir) + fp_annotation = os.path.join(fp_anno_dir, 'regions.' + buildver + '_multianno.txt') # Check if the annotation file exists. - if not os.path.exists(segdup_annotation): - logging.error('Annotation file does not exist: %s', segdup_annotation) + if not os.path.exists(fp_annotation): + logging.error('Annotation file does not exist: %s', fp_annotation) logging.error('Please check the ANNOVAR path and database path.') sys.exit(1) - logging.info('Successfully annotated segmental duplications to file: %s', segdup_annotation) + logging.info('Successfully annotated false positives to file: %s', fp_annotation) + # BELOW IS A WIP + # ------------------------------- # logging.info('Output directory: %s', output_directory) From f8619f6888ee37ca002ea2224e0893d829e9bcad Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 17 Mar 2025 14:21:32 -0400 Subject: [PATCH 05/93] work on annotations --- contextscore/train_model.py | 72 +++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/contextscore/train_model.py b/contextscore/train_model.py index b6938cd..a92ee8b 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -219,14 +219,15 @@ def bed_to_annovar_input(bed_file): def download_annovar_db(annovar_path, db_path, db_name, buildver): """Download the ANNOVAR database if it does not exist.""" - logging.info('Downloading the database' + db_name) + logging.info('Downloading the database:' + db_name) cmd = [ f"{annovar_path}/annotate_variation.pl", "-buildver", buildver, "-downdb", db_name, db_path ] - + # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ + # Run the command to download the database. logging.info('Running the command to download the database: %s', " ".join(cmd)) try: @@ -237,33 +238,6 @@ def download_annovar_db(annovar_path, db_path, db_name, buildver): sys.exit(1) logging.info('Downloaded the database %s successfully.', db_name) -def annotate_segdup(annovar_input, annovar_path, db_path, output_dir): - """Annotate segmental duplications using ANNOVAR.""" - logging.info('Annotating segmental duplications using ANNOVAR.') - - annotations_dir = os.path.join(output_dir, 'segdup') - logging.info('Creating the output directory for segmental duplications: %s', annotations_dir) - cmd = [ - f"{annovar_path}/table_annovar.pl", - annovar_input, - db_path, - "--buildver hg38", - "--out", annotations_dir, - "--remove", - "--protocol genomicSuperDups", - "--operation r", - "--nastring .", - "-polish" - ] - try: - subprocess.run(" ".join(cmd), shell=True, check=True) - except subprocess.CalledProcessError as e: - logging.error('Error annotating segmental duplications: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - - logging.info('Completed annotating segmental duplications using ANNOVAR.') - def annotate(annovar_input, annovar_path, db_path, output_dir): """Annotate regions.""" logging.info('Annotating regions using ANNOVAR.') @@ -277,8 +251,8 @@ def annotate(annovar_input, annovar_path, db_path, output_dir): "--buildver hg38", "--out", annotations_dir, "--remove", - "--protocol genomicSuperDups,phastConsElements46way,cytoBand", - "--operation r,r,r", + "--protocol genomicSuperDups,cytoBand", + "--operation r,r", "--nastring .", "-polish" ] @@ -360,8 +334,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" fragile_sites_bed = "fragileSites.bed" logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) - if not os.path.exists(fragile_sites_bed): - logging.error('Fragile sites BED file does not exist: %s', fragile_sites_bed) logging.info('Annotating fragile sites in true positives.') tp_fs_dir = os.path.join(output_directory_annovar, 'TP_FS') @@ -369,6 +341,13 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path os.makedirs(tp_fs_dir) annotate_bed(true_positives_file, annovar_path, db_path, tp_fs_dir, fragile_sites_bed) + # Output is bed.hg38_bed + tp_fs_annotation = os.path.join(tp_fs_dir, 'bed.hg38_bed') + if not os.path.exists(tp_fs_annotation): + logging.error('Annotation file does not exist: %s', tp_fs_annotation) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + logging.info('Successfully annotated true positives to file: %s', tp_fs_annotation) logging.info('Annotating fragile sites in false positives.') fp_fs_dir = os.path.join(output_directory_annovar, 'FP_FS') @@ -376,6 +355,29 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path os.makedirs(fp_fs_dir) annotate_bed(false_positives_file, annovar_path, db_path, fp_fs_dir, fragile_sites_bed) + # Output is bed.hg38_bed + fp_fs_annotation = os.path.join(fp_fs_dir, 'bed.hg38_bed') + if not os.path.exists(fp_fs_annotation): + logging.error('Annotation file does not exist: %s', fp_fs_annotation) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + logging.info('Successfully annotated false positives to file: %s', fp_fs_annotation) + + # --------------------------------------- + # Annotate conserved regions using a UCSC Table Browser BED file for + # phastCons100way + phastCons_bed = "phastCons100wayHG38_fixed.bed" + logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) + + logging.info('Annotating conserved regions in true positives.') + tp_cr_dir = os.path.join(output_directory_annovar, 'TP_CR') + if not os.path.exists(tp_cr_dir): + os.makedirs(tp_cr_dir) + annotate_bed(true_positives_file, annovar_path, db_path, tp_cr_dir, phastCons_bed) + # Output is bed.hg38_bed + tp_cr_annotation = os.path.join(tp_cr_dir, 'bed.hg38_bed') + if not os.path.exists(tp_cr_annotation): + logging.error('Annotation file does not exist: %s', tp_cr_annotation) # --------------------------------------- # Region-based annotation using ANNOVAR databases. @@ -388,7 +390,7 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildver) # Download the conservation database - download_annovar_db(annovar_path, db_path, "phastConsElements46way", buildver) + # download_annovar_db(annovar_path, db_path, "phastConsElements46way", buildver) # Download the cytoband database download_annovar_db(annovar_path, db_path, "cytoBand", buildver) @@ -424,6 +426,8 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Successfully annotated false positives to file: %s', fp_annotation) + # Now + # BELOW IS A WIP # ------------------------------- From 3c131d5fc3fadd5f8c66cb477d4641b1646d5739 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 17 Mar 2025 15:31:09 -0400 Subject: [PATCH 06/93] update annotations --- contextscore/train_model.py | 42 +++++++++++++------------------------ 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/contextscore/train_model.py b/contextscore/train_model.py index a92ee8b..6e997de 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -203,20 +203,6 @@ def bed_to_annovar_input(bed_file): return output_file -# def annotate_with_annovar(annovar_input, output_prefix, annovar_path, db_path): -# cmd = [ -# f"{annovar_path}/table_annovar.pl", -# annovar_input, -# db_path, -# "--buildver hg19", -# "--out", output_prefix, -# "--remove", -# "--protocol refGene,cytoBand,dbnsfp35a", -# "--operation g,r,f", -# "--nastring ." -# ] -# subprocess.run(" ".join(cmd), shell=True, check=True) - def download_annovar_db(annovar_path, db_path, db_name, buildver): """Download the ANNOVAR database if it does not exist.""" logging.info('Downloading the database:' + db_name) @@ -284,18 +270,6 @@ def annotate_bed(annovar_input, annovar_path, db_path, output_dir, bed_file): "-regionanno", "-out", annotations_dir ] - # cmd = [ - # f"{annovar_path}/table_annovar.pl", - # annovar_input, - # db_path, - # "--buildver hg38", - # "--out", annotations_dir, - # "--remove", - # "--protocol fragileSites", - # "--operation r", - # "--nastring .", - # "-polish" - # ] try: subprocess.run(" ".join(cmd), shell=True, check=True) @@ -426,7 +400,21 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Successfully annotated false positives to file: %s', fp_annotation) - # Now + # Now extract features into a combined dataframe. + columns = [ + "label", + "chrom", + "start", + "sv_length", + "sv_type", + "segdup", + "telomere", + "centromere", + "fragile_site", + "conserved_region" + ] + + # BELOW IS A WIP # ------------------------------- From e4ce34fc38e8e23e4398c2d56481d4bc2eeb8dfc Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 27 Mar 2025 20:51:13 -0400 Subject: [PATCH 07/93] cytoband annotations --- contextscore/train_model.py | 61 +- data/hg38_cytoband.txt | 1550 +++++++++++++++++++++++++++++++++++ 2 files changed, 1609 insertions(+), 2 deletions(-) create mode 100644 data/hg38_cytoband.txt diff --git a/contextscore/train_model.py b/contextscore/train_model.py index 6e997de..72bba8e 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -59,6 +59,32 @@ # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +def read_cytoband_file(cytoband_file): + """Get the centromere and telomere regions for each chromosome.""" + cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) + chrom_dict = {} + for chrom in cytobands['chrom'].unique(): + chrom_df = cytobands[cytobands['chrom'] == chrom] + # First and last bands are the telomeres. + # First telomere: + chrom_dict[chrom] = { + 'telomerep': chrom_df.iloc[0]['name'], + 'telomereq': chrom_df.iloc[-1]['name'] + } + + # Identify the 2 centromeres for p and q (contain "acen"). + centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] + centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] + if not centromere_p.empty: + chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] + if not centromere_q.empty: + chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] + + # print("Chromosome:", chrom) + # print(chrom_dict[chrom]) + + return chrom_dict + def train(tp_files, fp_files): """Train the binary classification model.""" @@ -81,6 +107,7 @@ def train(tp_files, fp_files): "fragile_site", "conserved_region" ] + tp_data = pd.DataFrame(columns=feature_cols) for tp_file in tp_files: # Extract the features from the true positive VCF file. @@ -285,6 +312,11 @@ def annotate_bed(annovar_input, annovar_path, db_path, output_dir, bed_file): def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): """Train the binary classification model.""" + # Set up a dictionary for each chromosome, mapping the cytoband to the + # centromere and telomere regions. + cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. + chrom_dict = read_cytoband_file(cytoband_file) + # TODO: Make this an input parameter. buildver = 'hg38' @@ -297,6 +329,12 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Converting the false positive BED file to ANNOVAR input format.') false_positives_file = bed_to_annovar_input(fp_bed) + # HPRC tracks: + # https://genome.ucsc.edu/cgi-bin/hgTracks?hgsid=2497626981_YO5LtOenyXcMHylL5pvsY90WzIkJ&c=chr6&hgTracksConfigPage=configure&hgtgroup_hprc_close=0#hprcGroup + # Current error with hprc90way Multiple Alignment download from UCSC (https://genome.ucsc.edu/cgi-bin/hgTables): + # Can't start query: + # select bin,chrom,chromStart,chromEnd,extFile,offset,score from hprc90way where chrom='chr1' + # mySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'offset,score from hprc90way where chrom='chr1'' at line 1 (profile=, host=localhost, db=hg38) # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). # https://webs.iiitd.edu.in/raghava/humcfs/download.html @@ -353,6 +391,22 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path if not os.path.exists(tp_cr_annotation): logging.error('Annotation file does not exist: %s', tp_cr_annotation) + # --------------------------------------- + # Annotate simple repeats using a UCSC Table Browser BED file for + # simpleRepeat + simpleRepeat_bed = "simpleRepeatsHG38_fixed.bed" + logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) + + logging.info('Annotating simple repeats in true positives.') + tp_sr_dir = os.path.join(output_directory_annovar, 'TP_SR') + if not os.path.exists(tp_sr_dir): + os.makedirs(tp_sr_dir) + annotate_bed(true_positives_file, annovar_path, db_path, tp_sr_dir, simpleRepeat_bed) + # Output is bed.hg38_bed + tp_sr_annotation = os.path.join(tp_sr_dir, 'bed.hg38_bed') + if not os.path.exists(tp_sr_annotation): + logging.error('Annotation file does not exist: %s', tp_sr_annotation) + # --------------------------------------- # Region-based annotation using ANNOVAR databases. @@ -414,8 +468,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path "conserved_region" ] - - # BELOW IS A WIP # ------------------------------- @@ -495,6 +547,11 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path parser.add_argument("--outdir", required=True, help="Output directory for saving the model") parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") + + # Add flag for whether to train the genomic context model. If not specified, + # the default is False (train the model using SV caller features). + parser.add_argument("--train_genomic_context", action="store_true", help="Train the genomic context model", default=False) + args = parser.parse_args() # Get the command line arguments. # if len(sys.argv) != 4: diff --git a/data/hg38_cytoband.txt b/data/hg38_cytoband.txt new file mode 100644 index 0000000..4d17d9c --- /dev/null +++ b/data/hg38_cytoband.txt @@ -0,0 +1,1550 @@ +#chrom chromStart chromEnd name gieStain +chr1 0 2300000 p36.33 gneg +chr1 2300000 5300000 p36.32 gpos25 +chr1 5300000 7100000 p36.31 gneg +chr1 7100000 9100000 p36.23 gpos25 +chr1 9100000 12500000 p36.22 gneg +chr1 12500000 15900000 p36.21 gpos50 +chr1 15900000 20100000 p36.13 gneg +chr1 20100000 23600000 p36.12 gpos25 +chr1 23600000 27600000 p36.11 gneg +chr1 27600000 29900000 p35.3 gpos25 +chr1 29900000 32300000 p35.2 gneg +chr1 32300000 34300000 p35.1 gpos25 +chr1 34300000 39600000 p34.3 gneg +chr1 39600000 43700000 p34.2 gpos25 +chr1 43700000 46300000 p34.1 gneg +chr1 46300000 50200000 p33 gpos75 +chr1 50200000 55600000 p32.3 gneg +chr1 55600000 58500000 p32.2 gpos50 +chr1 58500000 60800000 p32.1 gneg +chr1 60800000 68500000 p31.3 gpos50 +chr1 68500000 69300000 p31.2 gneg +chr1 69300000 84400000 p31.1 gpos100 +chr1 84400000 87900000 p22.3 gneg +chr1 87900000 91500000 p22.2 gpos75 +chr1 91500000 94300000 p22.1 gneg +chr1 94300000 99300000 p21.3 gpos75 +chr1 99300000 101800000 p21.2 gneg +chr1 101800000 106700000 p21.1 gpos100 +chr1 106700000 111200000 p13.3 gneg +chr1 111200000 115500000 p13.2 gpos50 +chr1 115500000 117200000 p13.1 gneg +chr1 117200000 120400000 p12 gpos50 +chr1 120400000 121700000 p11.2 gneg +chr1 121700000 123400000 p11.1 acen +chr1 123400000 125100000 q11 acen +chr1 125100000 143200000 q12 gvar +chr1 143200000 147500000 q21.1 gneg +chr1 147500000 150600000 q21.2 gpos50 +chr1 150600000 155100000 q21.3 gneg +chr1 155100000 156600000 q22 gpos50 +chr1 156600000 159100000 q23.1 gneg +chr1 159100000 160500000 q23.2 gpos50 +chr1 160500000 165500000 q23.3 gneg +chr1 165500000 167200000 q24.1 gpos50 +chr1 167200000 170900000 q24.2 gneg +chr1 170900000 173000000 q24.3 gpos75 +chr1 173000000 176100000 q25.1 gneg +chr1 176100000 180300000 q25.2 gpos50 +chr1 180300000 185800000 q25.3 gneg +chr1 185800000 190800000 q31.1 gpos100 +chr1 190800000 193800000 q31.2 gneg +chr1 193800000 198700000 q31.3 gpos100 +chr1 198700000 207100000 q32.1 gneg +chr1 207100000 211300000 q32.2 gpos25 +chr1 211300000 214400000 q32.3 gneg +chr1 214400000 223900000 q41 gpos100 +chr1 223900000 224400000 q42.11 gneg +chr1 224400000 226800000 q42.12 gpos25 +chr1 226800000 230500000 q42.13 gneg +chr1 230500000 234600000 q42.2 gpos50 +chr1 234600000 236400000 q42.3 gneg +chr1 236400000 243500000 q43 gpos75 +chr1 243500000 248956422 q44 gneg +chr2 0 4400000 p25.3 gneg +chr2 4400000 6900000 p25.2 gpos50 +chr2 6900000 12000000 p25.1 gneg +chr2 12000000 16500000 p24.3 gpos75 +chr2 16500000 19000000 p24.2 gneg +chr2 19000000 23800000 p24.1 gpos75 +chr2 23800000 27700000 p23.3 gneg +chr2 27700000 29800000 p23.2 gpos25 +chr2 29800000 31800000 p23.1 gneg +chr2 31800000 36300000 p22.3 gpos75 +chr2 36300000 38300000 p22.2 gneg +chr2 38300000 41500000 p22.1 gpos50 +chr2 41500000 47500000 p21 gneg +chr2 47500000 52600000 p16.3 gpos100 +chr2 52600000 54700000 p16.2 gneg +chr2 54700000 61000000 p16.1 gpos100 +chr2 61000000 63900000 p15 gneg +chr2 63900000 68400000 p14 gpos50 +chr2 68400000 71300000 p13.3 gneg +chr2 71300000 73300000 p13.2 gpos50 +chr2 73300000 74800000 p13.1 gneg +chr2 74800000 83100000 p12 gpos100 +chr2 83100000 91800000 p11.2 gneg +chr2 91800000 93900000 p11.1 acen +chr2 93900000 96000000 q11.1 acen +chr2 96000000 102100000 q11.2 gneg +chr2 102100000 105300000 q12.1 gpos50 +chr2 105300000 106700000 q12.2 gneg +chr2 106700000 108700000 q12.3 gpos25 +chr2 108700000 112200000 q13 gneg +chr2 112200000 118100000 q14.1 gpos50 +chr2 118100000 121600000 q14.2 gneg +chr2 121600000 129100000 q14.3 gpos50 +chr2 129100000 131700000 q21.1 gneg +chr2 131700000 134300000 q21.2 gpos25 +chr2 134300000 136100000 q21.3 gneg +chr2 136100000 141500000 q22.1 gpos100 +chr2 141500000 143400000 q22.2 gneg +chr2 143400000 147900000 q22.3 gpos100 +chr2 147900000 149000000 q23.1 gneg +chr2 149000000 149600000 q23.2 gpos25 +chr2 149600000 154000000 q23.3 gneg +chr2 154000000 158900000 q24.1 gpos75 +chr2 158900000 162900000 q24.2 gneg +chr2 162900000 168900000 q24.3 gpos75 +chr2 168900000 177100000 q31.1 gneg +chr2 177100000 179700000 q31.2 gpos50 +chr2 179700000 182100000 q31.3 gneg +chr2 182100000 188500000 q32.1 gpos75 +chr2 188500000 191100000 q32.2 gneg +chr2 191100000 196600000 q32.3 gpos75 +chr2 196600000 202500000 q33.1 gneg +chr2 202500000 204100000 q33.2 gpos50 +chr2 204100000 208200000 q33.3 gneg +chr2 208200000 214500000 q34 gpos100 +chr2 214500000 220700000 q35 gneg +chr2 220700000 224300000 q36.1 gpos75 +chr2 224300000 225200000 q36.2 gneg +chr2 225200000 230100000 q36.3 gpos100 +chr2 230100000 234700000 q37.1 gneg +chr2 234700000 236400000 q37.2 gpos50 +chr2 236400000 242193529 q37.3 gneg +chr3 0 2800000 p26.3 gpos50 +chr3 2800000 4000000 p26.2 gneg +chr3 4000000 8100000 p26.1 gpos50 +chr3 8100000 11600000 p25.3 gneg +chr3 11600000 13200000 p25.2 gpos25 +chr3 13200000 16300000 p25.1 gneg +chr3 16300000 23800000 p24.3 gpos100 +chr3 23800000 26300000 p24.2 gneg +chr3 26300000 30800000 p24.1 gpos75 +chr3 30800000 32000000 p23 gneg +chr3 32000000 36400000 p22.3 gpos50 +chr3 36400000 39300000 p22.2 gneg +chr3 39300000 43600000 p22.1 gpos75 +chr3 43600000 44100000 p21.33 gneg +chr3 44100000 44200000 p21.32 gpos50 +chr3 44200000 50600000 p21.31 gneg +chr3 50600000 52300000 p21.2 gpos25 +chr3 52300000 54400000 p21.1 gneg +chr3 54400000 58600000 p14.3 gpos50 +chr3 58600000 63800000 p14.2 gneg +chr3 63800000 69700000 p14.1 gpos50 +chr3 69700000 74100000 p13 gneg +chr3 74100000 79800000 p12.3 gpos75 +chr3 79800000 83500000 p12.2 gneg +chr3 83500000 87100000 p12.1 gpos75 +chr3 87100000 87800000 p11.2 gneg +chr3 87800000 90900000 p11.1 acen +chr3 90900000 94000000 q11.1 acen +chr3 94000000 98600000 q11.2 gvar +chr3 98600000 100300000 q12.1 gneg +chr3 100300000 101200000 q12.2 gpos25 +chr3 101200000 103100000 q12.3 gneg +chr3 103100000 106500000 q13.11 gpos75 +chr3 106500000 108200000 q13.12 gneg +chr3 108200000 111600000 q13.13 gpos50 +chr3 111600000 113700000 q13.2 gneg +chr3 113700000 117600000 q13.31 gpos75 +chr3 117600000 119300000 q13.32 gneg +chr3 119300000 122200000 q13.33 gpos75 +chr3 122200000 124100000 q21.1 gneg +chr3 124100000 126100000 q21.2 gpos25 +chr3 126100000 129500000 q21.3 gneg +chr3 129500000 134000000 q22.1 gpos25 +chr3 134000000 136000000 q22.2 gneg +chr3 136000000 139000000 q22.3 gpos25 +chr3 139000000 143100000 q23 gneg +chr3 143100000 149200000 q24 gpos100 +chr3 149200000 152300000 q25.1 gneg +chr3 152300000 155300000 q25.2 gpos50 +chr3 155300000 157300000 q25.31 gneg +chr3 157300000 159300000 q25.32 gpos50 +chr3 159300000 161000000 q25.33 gneg +chr3 161000000 167900000 q26.1 gpos100 +chr3 167900000 171200000 q26.2 gneg +chr3 171200000 176000000 q26.31 gpos75 +chr3 176000000 179300000 q26.32 gneg +chr3 179300000 183000000 q26.33 gpos75 +chr3 183000000 184800000 q27.1 gneg +chr3 184800000 186300000 q27.2 gpos25 +chr3 186300000 188200000 q27.3 gneg +chr3 188200000 192600000 q28 gpos75 +chr3 192600000 198295559 q29 gneg +chr4 0 4500000 p16.3 gneg +chr4 4500000 6000000 p16.2 gpos25 +chr4 6000000 11300000 p16.1 gneg +chr4 11300000 15000000 p15.33 gpos50 +chr4 15000000 17700000 p15.32 gneg +chr4 17700000 21300000 p15.31 gpos75 +chr4 21300000 27700000 p15.2 gneg +chr4 27700000 35800000 p15.1 gpos100 +chr4 35800000 41200000 p14 gneg +chr4 41200000 44600000 p13 gpos50 +chr4 44600000 48200000 p12 gneg +chr4 48200000 50000000 p11 acen +chr4 50000000 51800000 q11 acen +chr4 51800000 58500000 q12 gneg +chr4 58500000 65500000 q13.1 gpos100 +chr4 65500000 69400000 q13.2 gneg +chr4 69400000 75300000 q13.3 gpos75 +chr4 75300000 78000000 q21.1 gneg +chr4 78000000 81500000 q21.21 gpos50 +chr4 81500000 83200000 q21.22 gneg +chr4 83200000 86000000 q21.23 gpos25 +chr4 86000000 87100000 q21.3 gneg +chr4 87100000 92800000 q22.1 gpos75 +chr4 92800000 94200000 q22.2 gneg +chr4 94200000 97900000 q22.3 gpos75 +chr4 97900000 100100000 q23 gneg +chr4 100100000 106700000 q24 gpos50 +chr4 106700000 113200000 q25 gneg +chr4 113200000 119900000 q26 gpos75 +chr4 119900000 122800000 q27 gneg +chr4 122800000 127900000 q28.1 gpos50 +chr4 127900000 130100000 q28.2 gneg +chr4 130100000 138500000 q28.3 gpos100 +chr4 138500000 140600000 q31.1 gneg +chr4 140600000 145900000 q31.21 gpos25 +chr4 145900000 147500000 q31.22 gneg +chr4 147500000 150200000 q31.23 gpos25 +chr4 150200000 154600000 q31.3 gneg +chr4 154600000 160800000 q32.1 gpos100 +chr4 160800000 163600000 q32.2 gneg +chr4 163600000 169200000 q32.3 gpos100 +chr4 169200000 171000000 q33 gneg +chr4 171000000 175400000 q34.1 gpos75 +chr4 175400000 176600000 q34.2 gneg +chr4 176600000 182300000 q34.3 gpos100 +chr4 182300000 186200000 q35.1 gneg +chr4 186200000 190214555 q35.2 gpos25 +chr5 0 4400000 p15.33 gneg +chr5 4400000 6300000 p15.32 gpos25 +chr5 6300000 9900000 p15.31 gneg +chr5 9900000 15000000 p15.2 gpos50 +chr5 15000000 18400000 p15.1 gneg +chr5 18400000 23300000 p14.3 gpos100 +chr5 23300000 24600000 p14.2 gneg +chr5 24600000 28900000 p14.1 gpos100 +chr5 28900000 33800000 p13.3 gneg +chr5 33800000 38400000 p13.2 gpos25 +chr5 38400000 42500000 p13.1 gneg +chr5 42500000 46100000 p12 gpos50 +chr5 46100000 48800000 p11 acen +chr5 48800000 51400000 q11.1 acen +chr5 51400000 59600000 q11.2 gneg +chr5 59600000 63600000 q12.1 gpos75 +chr5 63600000 63900000 q12.2 gneg +chr5 63900000 67400000 q12.3 gpos75 +chr5 67400000 69100000 q13.1 gneg +chr5 69100000 74000000 q13.2 gpos50 +chr5 74000000 77600000 q13.3 gneg +chr5 77600000 82100000 q14.1 gpos50 +chr5 82100000 83500000 q14.2 gneg +chr5 83500000 93000000 q14.3 gpos100 +chr5 93000000 98900000 q15 gneg +chr5 98900000 103400000 q21.1 gpos100 +chr5 103400000 105100000 q21.2 gneg +chr5 105100000 110200000 q21.3 gpos100 +chr5 110200000 112200000 q22.1 gneg +chr5 112200000 113800000 q22.2 gpos50 +chr5 113800000 115900000 q22.3 gneg +chr5 115900000 122100000 q23.1 gpos100 +chr5 122100000 127900000 q23.2 gneg +chr5 127900000 131200000 q23.3 gpos100 +chr5 131200000 136900000 q31.1 gneg +chr5 136900000 140100000 q31.2 gpos25 +chr5 140100000 145100000 q31.3 gneg +chr5 145100000 150400000 q32 gpos75 +chr5 150400000 153300000 q33.1 gneg +chr5 153300000 156300000 q33.2 gpos50 +chr5 156300000 160500000 q33.3 gneg +chr5 160500000 169000000 q34 gpos100 +chr5 169000000 173300000 q35.1 gneg +chr5 173300000 177100000 q35.2 gpos25 +chr5 177100000 181538259 q35.3 gneg +chr6 0 2300000 p25.3 gneg +chr6 2300000 4200000 p25.2 gpos25 +chr6 4200000 7100000 p25.1 gneg +chr6 7100000 10600000 p24.3 gpos50 +chr6 10600000 11600000 p24.2 gneg +chr6 11600000 13400000 p24.1 gpos25 +chr6 13400000 15200000 p23 gneg +chr6 15200000 25200000 p22.3 gpos75 +chr6 25200000 27100000 p22.2 gneg +chr6 27100000 30500000 p22.1 gpos50 +chr6 30500000 32100000 p21.33 gneg +chr6 32100000 33500000 p21.32 gpos25 +chr6 33500000 36600000 p21.31 gneg +chr6 36600000 40500000 p21.2 gpos25 +chr6 40500000 46200000 p21.1 gneg +chr6 46200000 51800000 p12.3 gpos100 +chr6 51800000 53000000 p12.2 gneg +chr6 53000000 57200000 p12.1 gpos100 +chr6 57200000 58500000 p11.2 gneg +chr6 58500000 59800000 p11.1 acen +chr6 59800000 62600000 q11.1 acen +chr6 62600000 62700000 q11.2 gneg +chr6 62700000 69200000 q12 gpos100 +chr6 69200000 75200000 q13 gneg +chr6 75200000 83200000 q14.1 gpos50 +chr6 83200000 84200000 q14.2 gneg +chr6 84200000 87300000 q14.3 gpos50 +chr6 87300000 92500000 q15 gneg +chr6 92500000 98900000 q16.1 gpos100 +chr6 98900000 100000000 q16.2 gneg +chr6 100000000 105000000 q16.3 gpos100 +chr6 105000000 114200000 q21 gneg +chr6 114200000 117900000 q22.1 gpos75 +chr6 117900000 118100000 q22.2 gneg +chr6 118100000 125800000 q22.31 gpos100 +chr6 125800000 126800000 q22.32 gneg +chr6 126800000 130000000 q22.33 gpos75 +chr6 130000000 130900000 q23.1 gneg +chr6 130900000 134700000 q23.2 gpos50 +chr6 134700000 138300000 q23.3 gneg +chr6 138300000 142200000 q24.1 gpos75 +chr6 142200000 145100000 q24.2 gneg +chr6 145100000 148500000 q24.3 gpos75 +chr6 148500000 152100000 q25.1 gneg +chr6 152100000 155200000 q25.2 gpos50 +chr6 155200000 160600000 q25.3 gneg +chr6 160600000 164100000 q26 gpos50 +chr6 164100000 170805979 q27 gneg +chr7 0 2800000 p22.3 gneg +chr7 2800000 4500000 p22.2 gpos25 +chr7 4500000 7200000 p22.1 gneg +chr7 7200000 13700000 p21.3 gpos100 +chr7 13700000 16500000 p21.2 gneg +chr7 16500000 20900000 p21.1 gpos100 +chr7 20900000 25500000 p15.3 gneg +chr7 25500000 27900000 p15.2 gpos50 +chr7 27900000 28800000 p15.1 gneg +chr7 28800000 34900000 p14.3 gpos75 +chr7 34900000 37100000 p14.2 gneg +chr7 37100000 43300000 p14.1 gpos75 +chr7 43300000 45400000 p13 gneg +chr7 45400000 49000000 p12.3 gpos75 +chr7 49000000 50500000 p12.2 gneg +chr7 50500000 53900000 p12.1 gpos75 +chr7 53900000 58100000 p11.2 gneg +chr7 58100000 60100000 p11.1 acen +chr7 60100000 62100000 q11.1 acen +chr7 62100000 67500000 q11.21 gneg +chr7 67500000 72700000 q11.22 gpos50 +chr7 72700000 77900000 q11.23 gneg +chr7 77900000 86700000 q21.11 gpos100 +chr7 86700000 88500000 q21.12 gneg +chr7 88500000 91500000 q21.13 gpos75 +chr7 91500000 93300000 q21.2 gneg +chr7 93300000 98400000 q21.3 gpos75 +chr7 98400000 104200000 q22.1 gneg +chr7 104200000 104900000 q22.2 gpos50 +chr7 104900000 107800000 q22.3 gneg +chr7 107800000 115000000 q31.1 gpos75 +chr7 115000000 117700000 q31.2 gneg +chr7 117700000 121400000 q31.31 gpos75 +chr7 121400000 124100000 q31.32 gneg +chr7 124100000 127500000 q31.33 gpos75 +chr7 127500000 129600000 q32.1 gneg +chr7 129600000 130800000 q32.2 gpos25 +chr7 130800000 132900000 q32.3 gneg +chr7 132900000 138500000 q33 gpos50 +chr7 138500000 143400000 q34 gneg +chr7 143400000 148200000 q35 gpos75 +chr7 148200000 152800000 q36.1 gneg +chr7 152800000 155200000 q36.2 gpos25 +chr7 155200000 159345973 q36.3 gneg +chr8 0 2300000 p23.3 gneg +chr8 2300000 6300000 p23.2 gpos75 +chr8 6300000 12800000 p23.1 gneg +chr8 12800000 19200000 p22 gpos100 +chr8 19200000 23500000 p21.3 gneg +chr8 23500000 27500000 p21.2 gpos50 +chr8 27500000 29000000 p21.1 gneg +chr8 29000000 36700000 p12 gpos75 +chr8 36700000 38500000 p11.23 gneg +chr8 38500000 39900000 p11.22 gpos25 +chr8 39900000 43200000 p11.21 gneg +chr8 43200000 45200000 p11.1 acen +chr8 45200000 47200000 q11.1 acen +chr8 47200000 51300000 q11.21 gneg +chr8 51300000 51700000 q11.22 gpos75 +chr8 51700000 54600000 q11.23 gneg +chr8 54600000 60600000 q12.1 gpos50 +chr8 60600000 61300000 q12.2 gneg +chr8 61300000 65100000 q12.3 gpos50 +chr8 65100000 67100000 q13.1 gneg +chr8 67100000 69600000 q13.2 gpos50 +chr8 69600000 72000000 q13.3 gneg +chr8 72000000 74600000 q21.11 gpos100 +chr8 74600000 74700000 q21.12 gneg +chr8 74700000 83500000 q21.13 gpos75 +chr8 83500000 85900000 q21.2 gneg +chr8 85900000 92300000 q21.3 gpos100 +chr8 92300000 97900000 q22.1 gneg +chr8 97900000 100500000 q22.2 gpos25 +chr8 100500000 105100000 q22.3 gneg +chr8 105100000 109500000 q23.1 gpos75 +chr8 109500000 111100000 q23.2 gneg +chr8 111100000 116700000 q23.3 gpos100 +chr8 116700000 118300000 q24.11 gneg +chr8 118300000 121500000 q24.12 gpos50 +chr8 121500000 126300000 q24.13 gneg +chr8 126300000 130400000 q24.21 gpos50 +chr8 130400000 135400000 q24.22 gneg +chr8 135400000 138900000 q24.23 gpos75 +chr8 138900000 145138636 q24.3 gneg +chr9 0 2200000 p24.3 gneg +chr9 2200000 4600000 p24.2 gpos25 +chr9 4600000 9000000 p24.1 gneg +chr9 9000000 14200000 p23 gpos75 +chr9 14200000 16600000 p22.3 gneg +chr9 16600000 18500000 p22.2 gpos25 +chr9 18500000 19900000 p22.1 gneg +chr9 19900000 25600000 p21.3 gpos100 +chr9 25600000 28000000 p21.2 gneg +chr9 28000000 33200000 p21.1 gpos100 +chr9 33200000 36300000 p13.3 gneg +chr9 36300000 37900000 p13.2 gpos25 +chr9 37900000 39000000 p13.1 gneg +chr9 39000000 40000000 p12 gpos50 +chr9 40000000 42200000 p11.2 gneg +chr9 42200000 43000000 p11.1 acen +chr9 43000000 45500000 q11 acen +chr9 45500000 61500000 q12 gvar +chr9 61500000 65000000 q13 gneg +chr9 65000000 69300000 q21.11 gpos25 +chr9 69300000 71300000 q21.12 gneg +chr9 71300000 76600000 q21.13 gpos50 +chr9 76600000 78500000 q21.2 gneg +chr9 78500000 81500000 q21.31 gpos50 +chr9 81500000 84300000 q21.32 gneg +chr9 84300000 87800000 q21.33 gpos50 +chr9 87800000 89200000 q22.1 gneg +chr9 89200000 91200000 q22.2 gpos25 +chr9 91200000 93900000 q22.31 gneg +chr9 93900000 96500000 q22.32 gpos25 +chr9 96500000 99800000 q22.33 gneg +chr9 99800000 105400000 q31.1 gpos100 +chr9 105400000 108500000 q31.2 gneg +chr9 108500000 112100000 q31.3 gpos25 +chr9 112100000 114900000 q32 gneg +chr9 114900000 119800000 q33.1 gpos75 +chr9 119800000 123100000 q33.2 gneg +chr9 123100000 127500000 q33.3 gpos25 +chr9 127500000 130600000 q34.11 gneg +chr9 130600000 131100000 q34.12 gpos25 +chr9 131100000 133100000 q34.13 gneg +chr9 133100000 134500000 q34.2 gpos25 +chr9 134500000 138394717 q34.3 gneg +chrM 0 16569 gneg +chrX 0 4400000 p22.33 gneg +chrX 4400000 6100000 p22.32 gpos50 +chrX 6100000 9600000 p22.31 gneg +chrX 9600000 17400000 p22.2 gpos50 +chrX 17400000 19200000 p22.13 gneg +chrX 19200000 21900000 p22.12 gpos50 +chrX 21900000 24900000 p22.11 gneg +chrX 24900000 29300000 p21.3 gpos100 +chrX 29300000 31500000 p21.2 gneg +chrX 31500000 37800000 p21.1 gpos100 +chrX 37800000 42500000 p11.4 gneg +chrX 42500000 47600000 p11.3 gpos75 +chrX 47600000 50100000 p11.23 gneg +chrX 50100000 54800000 p11.22 gpos25 +chrX 54800000 58100000 p11.21 gneg +chrX 58100000 61000000 p11.1 acen +chrX 61000000 63800000 q11.1 acen +chrX 63800000 65400000 q11.2 gneg +chrX 65400000 68500000 q12 gpos50 +chrX 68500000 73000000 q13.1 gneg +chrX 73000000 74700000 q13.2 gpos50 +chrX 74700000 76800000 q13.3 gneg +chrX 76800000 85400000 q21.1 gpos100 +chrX 85400000 87000000 q21.2 gneg +chrX 87000000 92700000 q21.31 gpos100 +chrX 92700000 94300000 q21.32 gneg +chrX 94300000 99100000 q21.33 gpos75 +chrX 99100000 103300000 q22.1 gneg +chrX 103300000 104500000 q22.2 gpos50 +chrX 104500000 109400000 q22.3 gneg +chrX 109400000 117400000 q23 gpos75 +chrX 117400000 121800000 q24 gneg +chrX 121800000 129500000 q25 gpos100 +chrX 129500000 131300000 q26.1 gneg +chrX 131300000 134500000 q26.2 gpos25 +chrX 134500000 138900000 q26.3 gneg +chrX 138900000 141200000 q27.1 gpos75 +chrX 141200000 143000000 q27.2 gneg +chrX 143000000 148000000 q27.3 gpos100 +chrX 148000000 156040895 q28 gneg +chrY 0 300000 p11.32 gneg +chrY 300000 600000 p11.31 gpos50 +chrY 600000 10300000 p11.2 gneg +chrY 10300000 10400000 p11.1 acen +chrY 10400000 10600000 q11.1 acen +chrY 10600000 12400000 q11.21 gneg +chrY 12400000 17100000 q11.221 gpos50 +chrY 17100000 19600000 q11.222 gneg +chrY 19600000 23800000 q11.223 gpos50 +chrY 23800000 26600000 q11.23 gneg +chrY 26600000 57227415 q12 gvar +chr10 0 3000000 p15.3 gneg +chr10 3000000 3800000 p15.2 gpos25 +chr10 3800000 6600000 p15.1 gneg +chr10 6600000 12200000 p14 gpos75 +chr10 12200000 17300000 p13 gneg +chr10 17300000 18300000 p12.33 gpos75 +chr10 18300000 18400000 p12.32 gneg +chr10 18400000 22300000 p12.31 gpos75 +chr10 22300000 24300000 p12.2 gneg +chr10 24300000 29300000 p12.1 gpos50 +chr10 29300000 31100000 p11.23 gneg +chr10 31100000 34200000 p11.22 gpos25 +chr10 34200000 38000000 p11.21 gneg +chr10 38000000 39800000 p11.1 acen +chr10 39800000 41600000 q11.1 acen +chr10 41600000 45500000 q11.21 gneg +chr10 45500000 48600000 q11.22 gpos25 +chr10 48600000 51100000 q11.23 gneg +chr10 51100000 59400000 q21.1 gpos100 +chr10 59400000 62800000 q21.2 gneg +chr10 62800000 68800000 q21.3 gpos100 +chr10 68800000 73100000 q22.1 gneg +chr10 73100000 75900000 q22.2 gpos50 +chr10 75900000 80300000 q22.3 gneg +chr10 80300000 86100000 q23.1 gpos100 +chr10 86100000 87700000 q23.2 gneg +chr10 87700000 91100000 q23.31 gpos75 +chr10 91100000 92300000 q23.32 gneg +chr10 92300000 95300000 q23.33 gpos50 +chr10 95300000 97500000 q24.1 gneg +chr10 97500000 100100000 q24.2 gpos50 +chr10 100100000 101200000 q24.31 gneg +chr10 101200000 103100000 q24.32 gpos25 +chr10 103100000 104000000 q24.33 gneg +chr10 104000000 110100000 q25.1 gpos100 +chr10 110100000 113100000 q25.2 gneg +chr10 113100000 117300000 q25.3 gpos75 +chr10 117300000 119900000 q26.11 gneg +chr10 119900000 121400000 q26.12 gpos50 +chr10 121400000 125700000 q26.13 gneg +chr10 125700000 128800000 q26.2 gpos50 +chr10 128800000 133797422 q26.3 gneg +chr11 0 2800000 p15.5 gneg +chr11 2800000 11700000 p15.4 gpos50 +chr11 11700000 13800000 p15.3 gneg +chr11 13800000 16900000 p15.2 gpos50 +chr11 16900000 22000000 p15.1 gneg +chr11 22000000 26200000 p14.3 gpos100 +chr11 26200000 27200000 p14.2 gneg +chr11 27200000 31000000 p14.1 gpos75 +chr11 31000000 36400000 p13 gneg +chr11 36400000 43400000 p12 gpos100 +chr11 43400000 48800000 p11.2 gneg +chr11 48800000 51000000 p11.12 gpos75 +chr11 51000000 53400000 p11.11 acen +chr11 53400000 55800000 q11 acen +chr11 55800000 60100000 q12.1 gpos75 +chr11 60100000 61900000 q12.2 gneg +chr11 61900000 63600000 q12.3 gpos25 +chr11 63600000 66100000 q13.1 gneg +chr11 66100000 68700000 q13.2 gpos25 +chr11 68700000 70500000 q13.3 gneg +chr11 70500000 75500000 q13.4 gpos50 +chr11 75500000 77400000 q13.5 gneg +chr11 77400000 85900000 q14.1 gpos100 +chr11 85900000 88600000 q14.2 gneg +chr11 88600000 93000000 q14.3 gpos100 +chr11 93000000 97400000 q21 gneg +chr11 97400000 102300000 q22.1 gpos100 +chr11 102300000 103000000 q22.2 gneg +chr11 103000000 110600000 q22.3 gpos100 +chr11 110600000 112700000 q23.1 gneg +chr11 112700000 114600000 q23.2 gpos50 +chr11 114600000 121300000 q23.3 gneg +chr11 121300000 124000000 q24.1 gpos50 +chr11 124000000 127900000 q24.2 gneg +chr11 127900000 130900000 q24.3 gpos50 +chr11 130900000 135086622 q25 gneg +chr12 0 3200000 p13.33 gneg +chr12 3200000 5300000 p13.32 gpos25 +chr12 5300000 10000000 p13.31 gneg +chr12 10000000 12600000 p13.2 gpos75 +chr12 12600000 14600000 p13.1 gneg +chr12 14600000 19800000 p12.3 gpos100 +chr12 19800000 21100000 p12.2 gneg +chr12 21100000 26300000 p12.1 gpos100 +chr12 26300000 27600000 p11.23 gneg +chr12 27600000 30500000 p11.22 gpos50 +chr12 30500000 33200000 p11.21 gneg +chr12 33200000 35500000 p11.1 acen +chr12 35500000 37800000 q11 acen +chr12 37800000 46000000 q12 gpos100 +chr12 46000000 48700000 q13.11 gneg +chr12 48700000 51100000 q13.12 gpos25 +chr12 51100000 54500000 q13.13 gneg +chr12 54500000 56200000 q13.2 gpos25 +chr12 56200000 57700000 q13.3 gneg +chr12 57700000 62700000 q14.1 gpos75 +chr12 62700000 64700000 q14.2 gneg +chr12 64700000 67300000 q14.3 gpos50 +chr12 67300000 71100000 q15 gneg +chr12 71100000 75300000 q21.1 gpos75 +chr12 75300000 79900000 q21.2 gneg +chr12 79900000 86300000 q21.31 gpos100 +chr12 86300000 88600000 q21.32 gneg +chr12 88600000 92200000 q21.33 gpos100 +chr12 92200000 95800000 q22 gneg +chr12 95800000 101200000 q23.1 gpos75 +chr12 101200000 103500000 q23.2 gneg +chr12 103500000 108600000 q23.3 gpos50 +chr12 108600000 111300000 q24.11 gneg +chr12 111300000 111900000 q24.12 gpos25 +chr12 111900000 113900000 q24.13 gneg +chr12 113900000 116400000 q24.21 gpos50 +chr12 116400000 117700000 q24.22 gneg +chr12 117700000 120300000 q24.23 gpos50 +chr12 120300000 125400000 q24.31 gneg +chr12 125400000 128700000 q24.32 gpos50 +chr12 128700000 133275309 q24.33 gneg +chr13 0 4600000 p13 gvar +chr13 4600000 10100000 p12 stalk +chr13 10100000 16500000 p11.2 gvar +chr13 16500000 17700000 p11.1 acen +chr13 17700000 18900000 q11 acen +chr13 18900000 22600000 q12.11 gneg +chr13 22600000 24900000 q12.12 gpos25 +chr13 24900000 27200000 q12.13 gneg +chr13 27200000 28300000 q12.2 gpos25 +chr13 28300000 31600000 q12.3 gneg +chr13 31600000 33400000 q13.1 gpos50 +chr13 33400000 34900000 q13.2 gneg +chr13 34900000 39500000 q13.3 gpos75 +chr13 39500000 44600000 q14.11 gneg +chr13 44600000 45200000 q14.12 gpos25 +chr13 45200000 46700000 q14.13 gneg +chr13 46700000 50300000 q14.2 gpos50 +chr13 50300000 54700000 q14.3 gneg +chr13 54700000 59000000 q21.1 gpos100 +chr13 59000000 61800000 q21.2 gneg +chr13 61800000 65200000 q21.31 gpos75 +chr13 65200000 68100000 q21.32 gneg +chr13 68100000 72800000 q21.33 gpos100 +chr13 72800000 74900000 q22.1 gneg +chr13 74900000 76700000 q22.2 gpos50 +chr13 76700000 78500000 q22.3 gneg +chr13 78500000 87100000 q31.1 gpos100 +chr13 87100000 89400000 q31.2 gneg +chr13 89400000 94400000 q31.3 gpos100 +chr13 94400000 97500000 q32.1 gneg +chr13 97500000 98700000 q32.2 gpos25 +chr13 98700000 101100000 q32.3 gneg +chr13 101100000 104200000 q33.1 gpos100 +chr13 104200000 106400000 q33.2 gneg +chr13 106400000 109600000 q33.3 gpos100 +chr13 109600000 114364328 q34 gneg +chr14 0 3600000 p13 gvar +chr14 3600000 8000000 p12 stalk +chr14 8000000 16100000 p11.2 gvar +chr14 16100000 17200000 p11.1 acen +chr14 17200000 18200000 q11.1 acen +chr14 18200000 24100000 q11.2 gneg +chr14 24100000 32900000 q12 gpos100 +chr14 32900000 34800000 q13.1 gneg +chr14 34800000 36100000 q13.2 gpos50 +chr14 36100000 37400000 q13.3 gneg +chr14 37400000 43000000 q21.1 gpos100 +chr14 43000000 46700000 q21.2 gneg +chr14 46700000 50400000 q21.3 gpos100 +chr14 50400000 53600000 q22.1 gneg +chr14 53600000 55000000 q22.2 gpos25 +chr14 55000000 57600000 q22.3 gneg +chr14 57600000 61600000 q23.1 gpos75 +chr14 61600000 64300000 q23.2 gneg +chr14 64300000 67400000 q23.3 gpos50 +chr14 67400000 69800000 q24.1 gneg +chr14 69800000 73300000 q24.2 gpos50 +chr14 73300000 78800000 q24.3 gneg +chr14 78800000 83100000 q31.1 gpos100 +chr14 83100000 84400000 q31.2 gneg +chr14 84400000 89300000 q31.3 gpos100 +chr14 89300000 91400000 q32.11 gneg +chr14 91400000 94200000 q32.12 gpos25 +chr14 94200000 95800000 q32.13 gneg +chr14 95800000 100900000 q32.2 gpos50 +chr14 100900000 102700000 q32.31 gneg +chr14 102700000 103500000 q32.32 gpos50 +chr14 103500000 107043718 q32.33 gneg +chr15 0 4200000 p13 gvar +chr15 4200000 9700000 p12 stalk +chr15 9700000 17500000 p11.2 gvar +chr15 17500000 19000000 p11.1 acen +chr15 19000000 20500000 q11.1 acen +chr15 20500000 25500000 q11.2 gneg +chr15 25500000 27800000 q12 gpos50 +chr15 27800000 30000000 q13.1 gneg +chr15 30000000 30900000 q13.2 gpos50 +chr15 30900000 33400000 q13.3 gneg +chr15 33400000 39800000 q14 gpos75 +chr15 39800000 42500000 q15.1 gneg +chr15 42500000 43300000 q15.2 gpos25 +chr15 43300000 44500000 q15.3 gneg +chr15 44500000 49200000 q21.1 gpos75 +chr15 49200000 52600000 q21.2 gneg +chr15 52600000 58800000 q21.3 gpos75 +chr15 58800000 59000000 q22.1 gneg +chr15 59000000 63400000 q22.2 gpos25 +chr15 63400000 66900000 q22.31 gneg +chr15 66900000 67000000 q22.32 gpos25 +chr15 67000000 67200000 q22.33 gneg +chr15 67200000 72400000 q23 gpos25 +chr15 72400000 74900000 q24.1 gneg +chr15 74900000 76300000 q24.2 gpos25 +chr15 76300000 78000000 q24.3 gneg +chr15 78000000 81400000 q25.1 gpos50 +chr15 81400000 84700000 q25.2 gneg +chr15 84700000 88500000 q25.3 gpos50 +chr15 88500000 93800000 q26.1 gneg +chr15 93800000 98000000 q26.2 gpos50 +chr15 98000000 101991189 q26.3 gneg +chr16 0 7800000 p13.3 gneg +chr16 7800000 10400000 p13.2 gpos50 +chr16 10400000 12500000 p13.13 gneg +chr16 12500000 14700000 p13.12 gpos50 +chr16 14700000 16700000 p13.11 gneg +chr16 16700000 21200000 p12.3 gpos50 +chr16 21200000 24200000 p12.2 gneg +chr16 24200000 28500000 p12.1 gpos50 +chr16 28500000 35300000 p11.2 gneg +chr16 35300000 36800000 p11.1 acen +chr16 36800000 38400000 q11.1 acen +chr16 38400000 47000000 q11.2 gvar +chr16 47000000 52600000 q12.1 gneg +chr16 52600000 56000000 q12.2 gpos50 +chr16 56000000 57300000 q13 gneg +chr16 57300000 66600000 q21 gpos100 +chr16 66600000 70800000 q22.1 gneg +chr16 70800000 72800000 q22.2 gpos50 +chr16 72800000 74100000 q22.3 gneg +chr16 74100000 79200000 q23.1 gpos75 +chr16 79200000 81600000 q23.2 gneg +chr16 81600000 84100000 q23.3 gpos50 +chr16 84100000 87000000 q24.1 gneg +chr16 87000000 88700000 q24.2 gpos25 +chr16 88700000 90338345 q24.3 gneg +chr17 0 3400000 p13.3 gneg +chr17 3400000 6500000 p13.2 gpos50 +chr17 6500000 10800000 p13.1 gneg +chr17 10800000 16100000 p12 gpos75 +chr17 16100000 22700000 p11.2 gneg +chr17 22700000 25100000 p11.1 acen +chr17 25100000 27400000 q11.1 acen +chr17 27400000 33500000 q11.2 gneg +chr17 33500000 39800000 q12 gpos50 +chr17 39800000 40200000 q21.1 gneg +chr17 40200000 42800000 q21.2 gpos25 +chr17 42800000 46800000 q21.31 gneg +chr17 46800000 49300000 q21.32 gpos25 +chr17 49300000 52100000 q21.33 gneg +chr17 52100000 59500000 q22 gpos75 +chr17 59500000 60200000 q23.1 gneg +chr17 60200000 63100000 q23.2 gpos75 +chr17 63100000 64600000 q23.3 gneg +chr17 64600000 66200000 q24.1 gpos50 +chr17 66200000 69100000 q24.2 gneg +chr17 69100000 72900000 q24.3 gpos75 +chr17 72900000 76800000 q25.1 gneg +chr17 76800000 77200000 q25.2 gpos25 +chr17 77200000 83257441 q25.3 gneg +chr18 0 2900000 p11.32 gneg +chr18 2900000 7200000 p11.31 gpos50 +chr18 7200000 8500000 p11.23 gneg +chr18 8500000 10900000 p11.22 gpos25 +chr18 10900000 15400000 p11.21 gneg +chr18 15400000 18500000 p11.1 acen +chr18 18500000 21500000 q11.1 acen +chr18 21500000 27500000 q11.2 gneg +chr18 27500000 35100000 q12.1 gpos100 +chr18 35100000 39500000 q12.2 gneg +chr18 39500000 45900000 q12.3 gpos75 +chr18 45900000 50700000 q21.1 gneg +chr18 50700000 56200000 q21.2 gpos75 +chr18 56200000 58600000 q21.31 gneg +chr18 58600000 61300000 q21.32 gpos50 +chr18 61300000 63900000 q21.33 gneg +chr18 63900000 69100000 q22.1 gpos100 +chr18 69100000 71000000 q22.2 gneg +chr18 71000000 75400000 q22.3 gpos25 +chr18 75400000 80373285 q23 gneg +chr19 0 6900000 p13.3 gneg +chr19 6900000 12600000 p13.2 gpos25 +chr19 12600000 13800000 p13.13 gneg +chr19 13800000 16100000 p13.12 gpos25 +chr19 16100000 19900000 p13.11 gneg +chr19 19900000 24200000 p12 gvar +chr19 24200000 26200000 p11 acen +chr19 26200000 28100000 q11 acen +chr19 28100000 31900000 q12 gvar +chr19 31900000 35100000 q13.11 gneg +chr19 35100000 37800000 q13.12 gpos25 +chr19 37800000 38200000 q13.13 gneg +chr19 38200000 42900000 q13.2 gpos25 +chr19 42900000 44700000 q13.31 gneg +chr19 44700000 47500000 q13.32 gpos25 +chr19 47500000 50900000 q13.33 gneg +chr19 50900000 53100000 q13.41 gpos25 +chr19 53100000 55800000 q13.42 gneg +chr19 55800000 58617616 q13.43 gpos25 +chr20 0 5100000 p13 gneg +chr20 5100000 9200000 p12.3 gpos75 +chr20 9200000 12000000 p12.2 gneg +chr20 12000000 17900000 p12.1 gpos75 +chr20 17900000 21300000 p11.23 gneg +chr20 21300000 22300000 p11.22 gpos25 +chr20 22300000 25700000 p11.21 gneg +chr20 25700000 28100000 p11.1 acen +chr20 28100000 30400000 q11.1 acen +chr20 30400000 33500000 q11.21 gneg +chr20 33500000 35800000 q11.22 gpos25 +chr20 35800000 39000000 q11.23 gneg +chr20 39000000 43100000 q12 gpos75 +chr20 43100000 43500000 q13.11 gneg +chr20 43500000 47800000 q13.12 gpos25 +chr20 47800000 51200000 q13.13 gneg +chr20 51200000 56400000 q13.2 gpos75 +chr20 56400000 57800000 q13.31 gneg +chr20 57800000 59700000 q13.32 gpos50 +chr20 59700000 64444167 q13.33 gneg +chr21 0 3100000 p13 gvar +chr21 3100000 7000000 p12 stalk +chr21 7000000 10900000 p11.2 gvar +chr21 10900000 12000000 p11.1 acen +chr21 12000000 13000000 q11.1 acen +chr21 13000000 15000000 q11.2 gneg +chr21 15000000 22600000 q21.1 gpos100 +chr21 22600000 25500000 q21.2 gneg +chr21 25500000 30200000 q21.3 gpos75 +chr21 30200000 34400000 q22.11 gneg +chr21 34400000 36400000 q22.12 gpos50 +chr21 36400000 38300000 q22.13 gneg +chr21 38300000 41200000 q22.2 gpos50 +chr21 41200000 46709983 q22.3 gneg +chr22 0 4300000 p13 gvar +chr22 4300000 9400000 p12 stalk +chr22 9400000 13700000 p11.2 gvar +chr22 13700000 15000000 p11.1 acen +chr22 15000000 17400000 q11.1 acen +chr22 17400000 21700000 q11.21 gneg +chr22 21700000 23100000 q11.22 gpos25 +chr22 23100000 25500000 q11.23 gneg +chr22 25500000 29200000 q12.1 gpos50 +chr22 29200000 31800000 q12.2 gneg +chr22 31800000 37200000 q12.3 gpos50 +chr22 37200000 40600000 q13.1 gneg +chr22 40600000 43800000 q13.2 gpos50 +chr22 43800000 48100000 q13.31 gneg +chr22 48100000 49100000 q13.32 gpos50 +chr22 49100000 50818468 q13.33 gneg +chrUn_GL000195v1 0 182896 gneg +chrUn_GL000213v1 0 164239 gneg +chrUn_GL000214v1 0 137718 gneg +chrUn_GL000216v2 0 176608 gneg +chrUn_GL000218v1 0 161147 gneg +chrUn_GL000219v1 0 179198 gneg +chrUn_GL000220v1 0 161802 gneg +chrUn_GL000224v1 0 179693 gneg +chrUn_GL000226v1 0 15008 gneg +chrUn_KI270302v1 0 2274 gneg +chrUn_KI270303v1 0 1942 gneg +chrUn_KI270304v1 0 2165 gneg +chrUn_KI270305v1 0 1472 gneg +chrUn_KI270310v1 0 1201 gneg +chrUn_KI270311v1 0 12399 gneg +chrUn_KI270312v1 0 998 gneg +chrUn_KI270315v1 0 2276 gneg +chrUn_KI270316v1 0 1444 gneg +chrUn_KI270317v1 0 37690 gneg +chrUn_KI270320v1 0 4416 gneg +chrUn_KI270322v1 0 21476 gneg +chrUn_KI270329v1 0 1040 gneg +chrUn_KI270330v1 0 1652 gneg +chrUn_KI270333v1 0 2699 gneg +chrUn_KI270334v1 0 1368 gneg +chrUn_KI270335v1 0 1048 gneg +chrUn_KI270336v1 0 1026 gneg +chrUn_KI270337v1 0 1121 gneg +chrUn_KI270338v1 0 1428 gneg +chrUn_KI270340v1 0 1428 gneg +chrUn_KI270362v1 0 3530 gneg +chrUn_KI270363v1 0 1803 gneg +chrUn_KI270364v1 0 2855 gneg +chrUn_KI270366v1 0 8320 gneg +chrUn_KI270371v1 0 2805 gneg +chrUn_KI270372v1 0 1650 gneg +chrUn_KI270373v1 0 1451 gneg +chrUn_KI270374v1 0 2656 gneg +chrUn_KI270375v1 0 2378 gneg +chrUn_KI270376v1 0 1136 gneg +chrUn_KI270378v1 0 1048 gneg +chrUn_KI270379v1 0 1045 gneg +chrUn_KI270381v1 0 1930 gneg +chrUn_KI270382v1 0 4215 gneg +chrUn_KI270383v1 0 1750 gneg +chrUn_KI270384v1 0 1658 gneg +chrUn_KI270385v1 0 990 gneg +chrUn_KI270386v1 0 1788 gneg +chrUn_KI270387v1 0 1537 gneg +chrUn_KI270388v1 0 1216 gneg +chrUn_KI270389v1 0 1298 gneg +chrUn_KI270390v1 0 2387 gneg +chrUn_KI270391v1 0 1484 gneg +chrUn_KI270392v1 0 971 gneg +chrUn_KI270393v1 0 1308 gneg +chrUn_KI270394v1 0 970 gneg +chrUn_KI270395v1 0 1143 gneg +chrUn_KI270396v1 0 1880 gneg +chrUn_KI270411v1 0 2646 gneg +chrUn_KI270412v1 0 1179 gneg +chrUn_KI270414v1 0 2489 gneg +chrUn_KI270417v1 0 2043 gneg +chrUn_KI270418v1 0 2145 gneg +chrUn_KI270419v1 0 1029 gneg +chrUn_KI270420v1 0 2321 gneg +chrUn_KI270422v1 0 1445 gneg +chrUn_KI270423v1 0 981 gneg +chrUn_KI270424v1 0 2140 gneg +chrUn_KI270425v1 0 1884 gneg +chrUn_KI270429v1 0 1361 gneg +chrUn_KI270435v1 0 92983 gneg +chrUn_KI270438v1 0 112505 gneg +chrUn_KI270442v1 0 392061 gneg +chrUn_KI270448v1 0 7992 gneg +chrUn_KI270465v1 0 1774 gneg +chrUn_KI270466v1 0 1233 gneg +chrUn_KI270467v1 0 3920 gneg +chrUn_KI270468v1 0 4055 gneg +chrUn_KI270507v1 0 5353 gneg +chrUn_KI270508v1 0 1951 gneg +chrUn_KI270509v1 0 2318 gneg +chrUn_KI270510v1 0 2415 gneg +chrUn_KI270511v1 0 8127 gneg +chrUn_KI270512v1 0 22689 gneg +chrUn_KI270515v1 0 6361 gneg +chrUn_KI270516v1 0 1300 gneg +chrUn_KI270517v1 0 3253 gneg +chrUn_KI270518v1 0 2186 gneg +chrUn_KI270519v1 0 138126 gneg +chrUn_KI270521v1 0 7642 gneg +chrUn_KI270522v1 0 5674 gneg +chrUn_KI270528v1 0 2983 gneg +chrUn_KI270529v1 0 1899 gneg +chrUn_KI270530v1 0 2168 gneg +chrUn_KI270538v1 0 91309 gneg +chrUn_KI270539v1 0 993 gneg +chrUn_KI270544v1 0 1202 gneg +chrUn_KI270548v1 0 1599 gneg +chrUn_KI270579v1 0 31033 gneg +chrUn_KI270580v1 0 1553 gneg +chrUn_KI270581v1 0 7046 gneg +chrUn_KI270582v1 0 6504 gneg +chrUn_KI270583v1 0 1400 gneg +chrUn_KI270584v1 0 4513 gneg +chrUn_KI270587v1 0 2969 gneg +chrUn_KI270588v1 0 6158 gneg +chrUn_KI270589v1 0 44474 gneg +chrUn_KI270590v1 0 4685 gneg +chrUn_KI270591v1 0 5796 gneg +chrUn_KI270593v1 0 3041 gneg +chrUn_KI270741v1 0 157432 gneg +chrUn_KI270742v1 0 186739 gneg +chrUn_KI270743v1 0 210658 gneg +chrUn_KI270744v1 0 168472 gneg +chrUn_KI270745v1 0 41891 gneg +chrUn_KI270746v1 0 66486 gneg +chrUn_KI270747v1 0 198735 gneg +chrUn_KI270748v1 0 93321 gneg +chrUn_KI270749v1 0 158759 gneg +chrUn_KI270750v1 0 148850 gneg +chrUn_KI270751v1 0 150742 gneg +chrUn_KI270752v1 0 27745 gneg +chrUn_KI270753v1 0 62944 gneg +chrUn_KI270754v1 0 40191 gneg +chrUn_KI270755v1 0 36723 gneg +chrUn_KI270756v1 0 79590 gneg +chrUn_KI270757v1 0 71251 gneg +chr1_GL383518v1_alt 0 182439 gneg +chr1_GL383519v1_alt 0 110268 gneg +chr1_GL383520v2_alt 0 366580 gneg +chr1_KI270759v1_alt 0 425601 gneg +chr1_KI270760v1_alt 0 109528 gneg +chr1_KI270761v1_alt 0 165834 gneg +chr1_KI270762v1_alt 0 354444 gneg +chr1_KI270763v1_alt 0 911658 gneg +chr1_KI270764v1_alt 0 50258 gneg +chr1_KI270765v1_alt 0 185285 gneg +chr1_KI270766v1_alt 0 256271 gneg +chr1_KI270892v1_alt 0 162212 gneg +chr1_KN196472v1_fix 0 186494 gneg +chr1_KN196473v1_fix 0 166200 gneg +chr1_KN196474v1_fix 0 122022 gneg +chr1_KN538360v1_fix 0 460100 gneg +chr1_KN538361v1_fix 0 305542 gneg +chr1_KQ031383v1_fix 0 467143 gneg +chr1_KQ458382v1_alt 0 141019 gneg +chr1_KQ458383v1_alt 0 349938 gneg +chr1_KQ458384v1_alt 0 212205 gneg +chr1_KQ983255v1_alt 0 278659 gneg +chr1_KV880763v1_alt 0 551020 gneg +chr1_KZ208904v1_alt 0 166136 gneg +chr1_KZ208905v1_alt 0 140355 gneg +chr1_KZ208906v1_fix 0 330031 gneg +chr1_KZ559100v1_fix 0 44955 gneg +chr1_MU273330v1_alt 0 516764 gneg +chr1_MU273331v1_alt 0 847441 gneg +chr1_MU273332v1_alt 0 335159 gneg +chr1_MU273333v1_fix 0 1572686 gneg +chr1_MU273334v1_fix 0 210426 gneg +chr1_MU273335v1_fix 0 211934 gneg +chr1_MU273336v1_fix 0 250447 gneg +chr2_GL383521v1_alt 0 143390 gneg +chr2_GL383522v1_alt 0 123821 gneg +chr2_GL582966v2_alt 0 96131 gneg +chr2_KI270767v1_alt 0 161578 gneg +chr2_KI270768v1_alt 0 110099 gneg +chr2_KI270769v1_alt 0 120616 gneg +chr2_KI270770v1_alt 0 136240 gneg +chr2_KI270771v1_alt 0 110395 gneg +chr2_KI270772v1_alt 0 133041 gneg +chr2_KI270773v1_alt 0 70887 gneg +chr2_KI270774v1_alt 0 223625 gneg +chr2_KI270775v1_alt 0 138019 gneg +chr2_KI270776v1_alt 0 174166 gneg +chr2_KI270893v1_alt 0 161218 gneg +chr2_KI270894v1_alt 0 214158 gneg +chr2_KN538362v1_fix 0 208149 gneg +chr2_KN538363v1_fix 0 365499 gneg +chr2_KQ031384v1_fix 0 481245 gneg +chr2_KQ983256v1_alt 0 535088 gneg +chr2_KZ208907v1_alt 0 181658 gneg +chr2_KZ208908v1_alt 0 140361 gneg +chr2_ML143341v1_fix 0 145975 gneg +chr2_ML143342v1_fix 0 84043 gneg +chr2_MU273337v1_alt 0 431782 gneg +chr2_MU273338v1_alt 0 535251 gneg +chr2_MU273339v1_alt 0 500581 gneg +chr2_MU273340v1_alt 0 284971 gneg +chr2_MU273341v1_fix 0 120381 gneg +chr2_MU273342v1_fix 0 955087 gneg +chr2_MU273343v1_fix 0 489404 gneg +chr2_MU273344v1_fix 0 244725 gneg +chr2_MU273345v1_fix 0 174385 gneg +chr3_GL383526v1_alt 0 180671 gneg +chr3_JH636055v2_alt 0 173151 gneg +chr3_KI270777v1_alt 0 173649 gneg +chr3_KI270778v1_alt 0 248252 gneg +chr3_KI270779v1_alt 0 205312 gneg +chr3_KI270780v1_alt 0 224108 gneg +chr3_KI270781v1_alt 0 113034 gneg +chr3_KI270782v1_alt 0 162429 gneg +chr3_KI270783v1_alt 0 109187 gneg +chr3_KI270784v1_alt 0 184404 gneg +chr3_KI270895v1_alt 0 162896 gneg +chr3_KI270924v1_alt 0 166540 gneg +chr3_KI270934v1_alt 0 163458 gneg +chr3_KI270935v1_alt 0 197351 gneg +chr3_KI270936v1_alt 0 164170 gneg +chr3_KI270937v1_alt 0 165607 gneg +chr3_KN196475v1_fix 0 451168 gneg +chr3_KN196476v1_fix 0 305979 gneg +chr3_KN538364v1_fix 0 415308 gneg +chr3_KQ031385v1_fix 0 373699 gneg +chr3_KQ031386v1_fix 0 165718 gneg +chr3_KV766192v1_fix 0 411654 gneg +chr3_KZ208909v1_alt 0 175849 gneg +chr3_KZ559101v1_alt 0 164041 gneg +chr3_KZ559102v1_alt 0 197752 gneg +chr3_KZ559103v1_alt 0 302885 gneg +chr3_KZ559104v1_fix 0 105527 gneg +chr3_KZ559105v1_alt 0 195063 gneg +chr3_ML143343v1_alt 0 215443 gneg +chr3_MU273346v1_fix 0 469342 gneg +chr3_MU273347v1_fix 0 301310 gneg +chr3_MU273348v1_fix 0 475876 gneg +chr4_GL000257v2_alt 0 586476 gneg +chr4_GL383527v1_alt 0 164536 gneg +chr4_GL383528v1_alt 0 376187 gneg +chr4_KI270785v1_alt 0 119912 gneg +chr4_KI270786v1_alt 0 244096 gneg +chr4_KI270787v1_alt 0 111943 gneg +chr4_KI270788v1_alt 0 158965 gneg +chr4_KI270789v1_alt 0 205944 gneg +chr4_KI270790v1_alt 0 220246 gneg +chr4_KI270896v1_alt 0 378547 gneg +chr4_KI270925v1_alt 0 555799 gneg +chr4_KQ090013v1_alt 0 90922 gneg +chr4_KQ090014v1_alt 0 163749 gneg +chr4_KQ090015v1_alt 0 236512 gneg +chr4_KQ983257v1_fix 0 230434 gneg +chr4_KQ983258v1_alt 0 205407 gneg +chr4_KV766193v1_alt 0 420675 gneg +chr4_ML143344v1_fix 0 235734 gneg +chr4_ML143345v1_fix 0 341066 gneg +chr4_ML143346v1_fix 0 53476 gneg +chr4_ML143347v1_fix 0 176674 gneg +chr4_ML143348v1_fix 0 125549 gneg +chr4_ML143349v1_fix 0 276109 gneg +chr4_MU273349v1_alt 0 308682 gneg +chr4_MU273350v1_fix 0 113364 gneg +chr4_MU273351v1_fix 0 205691 gneg +chr5_GL339449v2_alt 0 1612928 gneg +chr5_GL383530v1_alt 0 101241 gneg +chr5_GL383531v1_alt 0 173459 gneg +chr5_GL383532v1_alt 0 82728 gneg +chr5_GL949742v1_alt 0 226852 gneg +chr5_KI270791v1_alt 0 195710 gneg +chr5_KI270792v1_alt 0 179043 gneg +chr5_KI270793v1_alt 0 126136 gneg +chr5_KI270794v1_alt 0 164558 gneg +chr5_KI270795v1_alt 0 131892 gneg +chr5_KI270796v1_alt 0 172708 gneg +chr5_KI270897v1_alt 0 1144418 gneg +chr5_KI270898v1_alt 0 130957 gneg +chr5_KN196477v1_alt 0 139087 gneg +chr5_KV575243v1_alt 0 362221 gneg +chr5_KV575244v1_fix 0 673059 gneg +chr5_KZ208910v1_alt 0 135987 gneg +chr5_ML143350v1_fix 0 89956 gneg +chr5_MU273352v1_fix 0 34400 gneg +chr5_MU273353v1_fix 0 208405 gneg +chr5_MU273354v1_fix 0 2101585 gneg +chr5_MU273355v1_fix 0 508332 gneg +chr5_MU273356v1_alt 0 302485 gneg +chr6_GL000250v2_alt 0 4672374 gneg +chr6_GL000251v2_alt 0 4795265 gneg +chr6_GL000252v2_alt 0 4604811 gneg +chr6_GL000253v2_alt 0 4677643 gneg +chr6_GL000254v2_alt 0 4827813 gneg +chr6_GL000255v2_alt 0 4606388 gneg +chr6_GL000256v2_alt 0 4929269 gneg +chr6_GL383533v1_alt 0 124736 gneg +chr6_KB021644v2_alt 0 185823 gneg +chr6_KI270758v1_alt 0 76752 gneg +chr6_KI270797v1_alt 0 197536 gneg +chr6_KI270798v1_alt 0 271782 gneg +chr6_KI270799v1_alt 0 152148 gneg +chr6_KI270800v1_alt 0 175808 gneg +chr6_KI270801v1_alt 0 870480 gneg +chr6_KI270802v1_alt 0 75005 gneg +chr6_KN196478v1_fix 0 268330 gneg +chr6_KQ031387v1_fix 0 320750 gneg +chr6_KQ090016v1_fix 0 245716 gneg +chr6_KQ090017v1_alt 0 82315 gneg +chr6_KV766194v1_fix 0 139427 gneg +chr6_KZ208911v1_fix 0 242796 gneg +chr6_ML143351v1_fix 0 73265 gneg +chr6_MU273357v1_alt 0 383128 gneg +chr7_GL383534v2_alt 0 119183 gneg +chr7_KI270803v1_alt 0 1111570 gneg +chr7_KI270804v1_alt 0 157952 gneg +chr7_KI270805v1_alt 0 209988 gneg +chr7_KI270806v1_alt 0 158166 gneg +chr7_KI270807v1_alt 0 126434 gneg +chr7_KI270808v1_alt 0 271455 gneg +chr7_KI270809v1_alt 0 209586 gneg +chr7_KI270899v1_alt 0 190869 gneg +chr7_KQ031388v1_fix 0 179932 gneg +chr7_KV880764v1_fix 0 142129 gneg +chr7_KV880765v1_fix 0 468267 gneg +chr7_KZ208912v1_fix 0 589656 gneg +chr7_KZ208913v1_alt 0 680662 gneg +chr7_KZ559106v1_alt 0 172555 gneg +chr7_ML143352v1_fix 0 254759 gneg +chr7_MU273358v1_alt 0 464417 gneg +chr8_KI270810v1_alt 0 374415 gneg +chr8_KI270811v1_alt 0 292436 gneg +chr8_KI270812v1_alt 0 282736 gneg +chr8_KI270813v1_alt 0 300230 gneg +chr8_KI270814v1_alt 0 141812 gneg +chr8_KI270815v1_alt 0 132244 gneg +chr8_KI270816v1_alt 0 305841 gneg +chr8_KI270817v1_alt 0 158983 gneg +chr8_KI270818v1_alt 0 145606 gneg +chr8_KI270819v1_alt 0 133535 gneg +chr8_KI270820v1_alt 0 36640 gneg +chr8_KI270821v1_alt 0 985506 gneg +chr8_KI270822v1_alt 0 624492 gneg +chr8_KI270900v1_alt 0 318687 gneg +chr8_KI270901v1_alt 0 136959 gneg +chr8_KI270926v1_alt 0 229282 gneg +chr8_KV880766v1_fix 0 156998 gneg +chr8_KV880767v1_fix 0 265876 gneg +chr8_KZ208914v1_fix 0 165120 gneg +chr8_KZ208915v1_fix 0 6367528 gneg +chr8_KZ559107v1_alt 0 103072 gneg +chr8_MU273359v1_fix 0 150302 gneg +chr8_MU273360v1_fix 0 39290 gneg +chr8_MU273361v1_fix 0 106905 gneg +chr8_MU273362v1_fix 0 429744 gneg +chr8_MU273363v1_fix 0 207371 gneg +chr9_GL383539v1_alt 0 162988 gneg +chr9_GL383540v1_alt 0 71551 gneg +chr9_GL383541v1_alt 0 171286 gneg +chr9_GL383542v1_alt 0 60032 gneg +chr9_KI270823v1_alt 0 439082 gneg +chr9_KN196479v1_fix 0 330164 gneg +chr9_KQ090018v1_alt 0 163882 gneg +chr9_KQ090019v1_alt 0 134099 gneg +chr9_ML143353v1_fix 0 25408 gneg +chr9_MU273364v1_fix 0 340717 gneg +chr9_MU273365v1_fix 0 482250 gneg +chr9_MU273366v1_fix 0 569668 gneg +chrX_KI270880v1_alt 0 284869 gneg +chrX_KI270881v1_alt 0 144206 gneg +chrX_KI270913v1_alt 0 274009 gneg +chrX_KV766199v1_alt 0 188004 gneg +chrX_ML143381v1_fix 0 403128 gneg +chrX_ML143382v1_fix 0 28824 gneg +chrX_ML143383v1_fix 0 68192 gneg +chrX_ML143384v1_fix 0 14678 gneg +chrX_ML143385v1_fix 0 17435 gneg +chrX_MU273393v1_fix 0 68810 gneg +chrX_MU273394v1_fix 0 140567 gneg +chrX_MU273395v1_alt 0 619716 gneg +chrX_MU273396v1_alt 0 294119 gneg +chrX_MU273397v1_alt 0 330493 gneg +chrY_KN196487v1_fix 0 101150 gneg +chrY_KZ208923v1_fix 0 48370 gneg +chrY_KZ208924v1_fix 0 209722 gneg +chrY_MU273398v1_fix 0 865743 gneg +chr10_GL383545v1_alt 0 179254 gneg +chr10_GL383546v1_alt 0 309802 gneg +chr10_KI270824v1_alt 0 181496 gneg +chr10_KI270825v1_alt 0 188315 gneg +chr10_KN196480v1_fix 0 277797 gneg +chr10_KN538365v1_fix 0 14347 gneg +chr10_KN538366v1_fix 0 85284 gneg +chr10_KN538367v1_fix 0 420164 gneg +chr10_KQ090020v1_alt 0 185507 gneg +chr10_KQ090021v1_fix 0 264545 gneg +chr10_ML143354v1_fix 0 454963 gneg +chr10_ML143355v1_fix 0 292944 gneg +chr10_MU273367v1_fix 0 196262 gneg +chr11_GL383547v1_alt 0 154407 gneg +chr11_JH159136v1_alt 0 200998 gneg +chr11_JH159137v1_alt 0 191409 gneg +chr11_KI270826v1_alt 0 186169 gneg +chr11_KI270827v1_alt 0 67707 gneg +chr11_KI270829v1_alt 0 204059 gneg +chr11_KI270830v1_alt 0 177092 gneg +chr11_KI270831v1_alt 0 296895 gneg +chr11_KI270832v1_alt 0 210133 gneg +chr11_KI270902v1_alt 0 106711 gneg +chr11_KI270903v1_alt 0 214625 gneg +chr11_KI270927v1_alt 0 218612 gneg +chr11_KN196481v1_fix 0 108875 gneg +chr11_KN538368v1_alt 0 203552 gneg +chr11_KQ090022v1_fix 0 181958 gneg +chr11_KQ759759v1_fix 0 196940 gneg +chr11_KQ759759v2_fix 0 204999 gneg +chr11_KV766195v1_fix 0 140877 gneg +chr11_KZ559108v1_fix 0 305244 gneg +chr11_KZ559109v1_fix 0 279644 gneg +chr11_KZ559110v1_alt 0 301637 gneg +chr11_KZ559111v1_alt 0 181167 gneg +chr11_ML143356v1_fix 0 45257 gneg +chr11_ML143357v1_fix 0 165419 gneg +chr11_ML143358v1_fix 0 270122 gneg +chr11_ML143359v1_fix 0 217075 gneg +chr11_ML143360v1_fix 0 170928 gneg +chr11_MU273368v1_alt 0 261194 gneg +chr11_MU273369v1_fix 0 434831 gneg +chr11_MU273370v1_fix 0 344606 gneg +chr11_MU273371v1_fix 0 122722 gneg +chr12_GL383549v1_alt 0 120804 gneg +chr12_GL383550v2_alt 0 169178 gneg +chr12_GL383551v1_alt 0 184319 gneg +chr12_GL383552v1_alt 0 138655 gneg +chr12_GL383553v2_alt 0 152874 gneg +chr12_GL877875v1_alt 0 167313 gneg +chr12_GL877876v1_alt 0 408271 gneg +chr12_KI270833v1_alt 0 76061 gneg +chr12_KI270834v1_alt 0 119498 gneg +chr12_KI270835v1_alt 0 238139 gneg +chr12_KI270836v1_alt 0 56134 gneg +chr12_KI270837v1_alt 0 40090 gneg +chr12_KI270904v1_alt 0 572349 gneg +chr12_KN196482v1_fix 0 211377 gneg +chr12_KN538369v1_fix 0 541038 gneg +chr12_KN538370v1_fix 0 86533 gneg +chr12_KQ090023v1_alt 0 109323 gneg +chr12_KQ759760v1_fix 0 315610 gneg +chr12_KZ208916v1_fix 0 1046838 gneg +chr12_KZ208917v1_fix 0 64689 gneg +chr12_KZ208918v1_alt 0 174808 gneg +chr12_KZ559112v1_alt 0 154139 gneg +chr12_ML143361v1_fix 0 297568 gneg +chr12_ML143362v1_fix 0 192531 gneg +chr12_MU273372v1_fix 0 104537 gneg +chr13_KI270838v1_alt 0 306913 gneg +chr13_KI270839v1_alt 0 180306 gneg +chr13_KI270840v1_alt 0 191684 gneg +chr13_KI270841v1_alt 0 169134 gneg +chr13_KI270842v1_alt 0 37287 gneg +chr13_KI270843v1_alt 0 103832 gneg +chr13_KN196483v1_fix 0 35455 gneg +chr13_KN538371v1_fix 0 206320 gneg +chr13_KN538372v1_fix 0 356766 gneg +chr13_KN538373v1_fix 0 148762 gneg +chr13_KQ090024v1_alt 0 168146 gneg +chr13_KQ090025v1_alt 0 123480 gneg +chr13_ML143363v1_fix 0 7309 gneg +chr13_ML143364v1_fix 0 158944 gneg +chr13_ML143365v1_fix 0 65394 gneg +chr13_ML143366v1_fix 0 409912 gneg +chr14_KI270844v1_alt 0 322166 gneg +chr14_KI270845v1_alt 0 180703 gneg +chr14_KI270846v1_alt 0 1351393 gneg +chr14_KI270847v1_alt 0 1511111 gneg +chr14_KZ208919v1_alt 0 171798 gneg +chr14_KZ208920v1_fix 0 690932 gneg +chr14_ML143367v1_fix 0 399183 gneg +chr14_ML143368v1_alt 0 264228 gneg +chr14_MU273373v1_fix 0 722645 gneg +chr15_GL383554v1_alt 0 296527 gneg +chr15_GL383555v2_alt 0 388773 gneg +chr15_KI270848v1_alt 0 327382 gneg +chr15_KI270849v1_alt 0 244917 gneg +chr15_KI270850v1_alt 0 430880 gneg +chr15_KI270851v1_alt 0 263054 gneg +chr15_KI270852v1_alt 0 478999 gneg +chr15_KI270905v1_alt 0 5161414 gneg +chr15_KI270906v1_alt 0 196384 gneg +chr15_KN538374v1_fix 0 4998962 gneg +chr15_KQ031389v1_alt 0 2365364 gneg +chr15_ML143369v1_fix 0 97763 gneg +chr15_ML143370v1_fix 0 369264 gneg +chr15_ML143371v1_fix 0 5500449 gneg +chr15_ML143372v1_fix 0 396515 gneg +chr15_MU273374v1_fix 0 1154574 gneg +chr15_MU273375v1_alt 0 204007 gneg +chr16_GL383556v1_alt 0 192462 gneg +chr16_GL383557v1_alt 0 89672 gneg +chr16_KI270853v1_alt 0 2659700 gneg +chr16_KI270854v1_alt 0 134193 gneg +chr16_KI270855v1_alt 0 232857 gneg +chr16_KI270856v1_alt 0 63982 gneg +chr16_KQ031390v1_alt 0 169136 gneg +chr16_KQ090026v1_alt 0 59016 gneg +chr16_KQ090027v1_alt 0 267463 gneg +chr16_KV880768v1_fix 0 1927115 gneg +chr16_KZ208921v1_alt 0 78609 gneg +chr16_KZ559113v1_fix 0 480415 gneg +chr16_ML143373v1_fix 0 270967 gneg +chr16_MU273376v1_fix 0 87715 gneg +chr16_MU273377v1_fix 0 334997 gneg +chr17_GL000258v2_alt 0 1821992 gneg +chr17_GL383563v3_alt 0 375691 gneg +chr17_GL383564v2_alt 0 133151 gneg +chr17_GL383565v1_alt 0 223995 gneg +chr17_GL383566v1_alt 0 90219 gneg +chr17_JH159146v1_alt 0 278131 gneg +chr17_JH159147v1_alt 0 70345 gneg +chr17_JH159148v1_alt 0 88070 gneg +chr17_KI270857v1_alt 0 2877074 gneg +chr17_KI270858v1_alt 0 235827 gneg +chr17_KI270859v1_alt 0 108763 gneg +chr17_KI270860v1_alt 0 178921 gneg +chr17_KI270861v1_alt 0 196688 gneg +chr17_KI270862v1_alt 0 391357 gneg +chr17_KI270907v1_alt 0 137721 gneg +chr17_KI270908v1_alt 0 1423190 gneg +chr17_KI270909v1_alt 0 325800 gneg +chr17_KI270910v1_alt 0 157099 gneg +chr17_KV575245v1_fix 0 154723 gneg +chr17_KV766196v1_fix 0 281919 gneg +chr17_KV766197v1_alt 0 246895 gneg +chr17_KV766198v1_alt 0 276292 gneg +chr17_KZ559114v1_alt 0 116753 gneg +chr17_ML143374v1_fix 0 137908 gneg +chr17_ML143375v1_fix 0 56695 gneg +chr17_MU273378v1_alt 0 372839 gneg +chr17_MU273379v1_fix 0 234878 gneg +chr17_MU273380v1_fix 0 538541 gneg +chr17_MU273381v1_fix 0 144689 gneg +chr17_MU273382v1_fix 0 187626 gneg +chr17_MU273383v1_fix 0 172609 gneg +chr18_GL383567v1_alt 0 289831 gneg +chr18_GL383568v1_alt 0 104552 gneg +chr18_GL383569v1_alt 0 167950 gneg +chr18_GL383570v1_alt 0 164789 gneg +chr18_GL383571v1_alt 0 198278 gneg +chr18_GL383572v1_alt 0 159547 gneg +chr18_KI270863v1_alt 0 167999 gneg +chr18_KI270864v1_alt 0 111737 gneg +chr18_KI270911v1_alt 0 157710 gneg +chr18_KI270912v1_alt 0 174061 gneg +chr18_KQ090028v1_fix 0 407387 gneg +chr18_KQ458385v1_alt 0 205101 gneg +chr18_KZ208922v1_fix 0 93070 gneg +chr18_KZ559115v1_fix 0 230843 gneg +chr18_KZ559116v1_alt 0 163186 gneg +chr19_GL000209v2_alt 0 177381 gneg +chr19_GL383573v1_alt 0 385657 gneg +chr19_GL383574v1_alt 0 155864 gneg +chr19_GL383575v2_alt 0 170222 gneg +chr19_GL383576v1_alt 0 188024 gneg +chr19_GL949746v1_alt 0 987716 gneg +chr19_GL949747v2_alt 0 729520 gneg +chr19_GL949748v2_alt 0 1064304 gneg +chr19_GL949749v2_alt 0 1091841 gneg +chr19_GL949750v2_alt 0 1066390 gneg +chr19_GL949751v2_alt 0 1002683 gneg +chr19_GL949752v1_alt 0 987100 gneg +chr19_GL949753v2_alt 0 796479 gneg +chr19_KI270865v1_alt 0 52969 gneg +chr19_KI270866v1_alt 0 43156 gneg +chr19_KI270867v1_alt 0 233762 gneg +chr19_KI270868v1_alt 0 61734 gneg +chr19_KI270882v1_alt 0 248807 gneg +chr19_KI270883v1_alt 0 170399 gneg +chr19_KI270884v1_alt 0 157053 gneg +chr19_KI270885v1_alt 0 171027 gneg +chr19_KI270886v1_alt 0 204239 gneg +chr19_KI270887v1_alt 0 209512 gneg +chr19_KI270888v1_alt 0 155532 gneg +chr19_KI270889v1_alt 0 170698 gneg +chr19_KI270890v1_alt 0 184499 gneg +chr19_KI270891v1_alt 0 170680 gneg +chr19_KI270914v1_alt 0 205194 gneg +chr19_KI270915v1_alt 0 170665 gneg +chr19_KI270916v1_alt 0 184516 gneg +chr19_KI270917v1_alt 0 190932 gneg +chr19_KI270918v1_alt 0 123111 gneg +chr19_KI270919v1_alt 0 170701 gneg +chr19_KI270920v1_alt 0 198005 gneg +chr19_KI270921v1_alt 0 282224 gneg +chr19_KI270922v1_alt 0 187935 gneg +chr19_KI270923v1_alt 0 189352 gneg +chr19_KI270929v1_alt 0 186203 gneg +chr19_KI270930v1_alt 0 200773 gneg +chr19_KI270931v1_alt 0 170148 gneg +chr19_KI270932v1_alt 0 215732 gneg +chr19_KI270933v1_alt 0 170537 gneg +chr19_KI270938v1_alt 0 1066800 gneg +chr19_KN196484v1_fix 0 370917 gneg +chr19_KQ458386v1_fix 0 405389 gneg +chr19_KV575246v1_alt 0 163926 gneg +chr19_KV575247v1_alt 0 170206 gneg +chr19_KV575248v1_alt 0 168131 gneg +chr19_KV575249v1_alt 0 293522 gneg +chr19_KV575250v1_alt 0 241058 gneg +chr19_KV575251v1_alt 0 159285 gneg +chr19_KV575252v1_alt 0 178197 gneg +chr19_KV575253v1_alt 0 166713 gneg +chr19_KV575254v1_alt 0 99845 gneg +chr19_KV575255v1_alt 0 161095 gneg +chr19_KV575256v1_alt 0 223118 gneg +chr19_KV575257v1_alt 0 100553 gneg +chr19_KV575258v1_alt 0 156965 gneg +chr19_KV575259v1_alt 0 171263 gneg +chr19_KV575260v1_alt 0 145691 gneg +chr19_ML143376v1_fix 0 493165 gneg +chr19_MU273384v1_fix 0 333754 gneg +chr19_MU273385v1_fix 0 137818 gneg +chr19_MU273386v1_fix 0 226166 gneg +chr19_MU273387v1_alt 0 89211 gneg +chr20_GL383577v2_alt 0 128386 gneg +chr20_KI270869v1_alt 0 118774 gneg +chr20_KI270870v1_alt 0 183433 gneg +chr20_KI270871v1_alt 0 58661 gneg +chr20_MU273388v1_fix 0 273725 gneg +chr20_MU273389v1_fix 0 355731 gneg +chr21_GL383578v2_alt 0 63917 gneg +chr21_GL383579v2_alt 0 201197 gneg +chr21_GL383580v2_alt 0 74653 gneg +chr21_GL383581v2_alt 0 116689 gneg +chr21_KI270872v1_alt 0 82692 gneg +chr21_KI270873v1_alt 0 143900 gneg +chr21_KI270874v1_alt 0 166743 gneg +chr21_ML143377v1_fix 0 519485 gneg +chr21_MU273390v1_fix 0 336752 gneg +chr21_MU273391v1_fix 0 1020778 gneg +chr21_MU273392v1_fix 0 189707 gneg +chr22_GL383582v2_alt 0 162811 gneg +chr22_GL383583v2_alt 0 96924 gneg +chr22_KB663609v1_alt 0 74013 gneg +chr22_KI270875v1_alt 0 259914 gneg +chr22_KI270876v1_alt 0 263666 gneg +chr22_KI270877v1_alt 0 101331 gneg +chr22_KI270878v1_alt 0 186262 gneg +chr22_KI270879v1_alt 0 304135 gneg +chr22_KI270928v1_alt 0 176103 gneg +chr22_KN196485v1_alt 0 156562 gneg +chr22_KN196486v1_alt 0 153027 gneg +chr22_KQ458387v1_alt 0 155930 gneg +chr22_KQ458388v1_alt 0 174749 gneg +chr22_KQ759761v1_alt 0 145162 gneg +chr22_KQ759762v1_fix 0 101037 gneg +chr22_KQ759762v2_fix 0 101040 gneg +chr22_ML143378v1_fix 0 461303 gneg +chr22_ML143379v1_fix 0 12295 gneg +chr22_ML143380v1_fix 0 412368 gneg +chr1_KI270706v1_random 0 175055 gneg +chr1_KI270707v1_random 0 32032 gneg +chr1_KI270708v1_random 0 127682 gneg +chr1_KI270709v1_random 0 66860 gneg +chr1_KI270710v1_random 0 40176 gneg +chr1_KI270711v1_random 0 42210 gneg +chr1_KI270712v1_random 0 176043 gneg +chr1_KI270713v1_random 0 40745 gneg +chr1_KI270714v1_random 0 41717 gneg +chr2_KI270715v1_random 0 161471 gneg +chr2_KI270716v1_random 0 153799 gneg +chr3_GL000221v1_random 0 155397 gneg +chr4_GL000008v2_random 0 209709 gneg +chr5_GL000208v1_random 0 92689 gneg +chr9_KI270717v1_random 0 40062 gneg +chr9_KI270718v1_random 0 38054 gneg +chr9_KI270719v1_random 0 176845 gneg +chr9_KI270720v1_random 0 39050 gneg +chrY_KI270740v1_random 0 37240 gneg +chr11_KI270721v1_random 0 100316 gneg +chr14_GL000009v2_random 0 201709 gneg +chr14_GL000194v1_random 0 191469 gneg +chr14_GL000225v1_random 0 211173 gneg +chr14_KI270722v1_random 0 194050 gneg +chr14_KI270723v1_random 0 38115 gneg +chr14_KI270724v1_random 0 39555 gneg +chr14_KI270725v1_random 0 172810 gneg +chr14_KI270726v1_random 0 43739 gneg +chr15_KI270727v1_random 0 448248 gneg +chr16_KI270728v1_random 0 1872759 gneg +chr17_GL000205v2_random 0 185591 gneg +chr17_KI270729v1_random 0 280839 gneg +chr17_KI270730v1_random 0 112551 gneg +chr22_KI270731v1_random 0 150754 gneg +chr22_KI270732v1_random 0 41543 gneg +chr22_KI270733v1_random 0 179772 gneg +chr22_KI270734v1_random 0 165050 gneg +chr22_KI270735v1_random 0 42811 gneg +chr22_KI270736v1_random 0 181920 gneg +chr22_KI270737v1_random 0 103838 gneg +chr22_KI270738v1_random 0 99375 gneg +chr22_KI270739v1_random 0 73985 gneg From bcc296f0bc2189fdb45928e9633ca0c0248464b3 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Fri, 28 Mar 2025 16:22:43 -0400 Subject: [PATCH 08/93] update annotations --- contextscore/download_tables.py | 63 ++++++++++++ contextscore/train_model.py | 171 ++++++++++++++++++-------------- 2 files changed, 160 insertions(+), 74 deletions(-) create mode 100644 contextscore/download_tables.py diff --git a/contextscore/download_tables.py b/contextscore/download_tables.py new file mode 100644 index 0000000..b82fee7 --- /dev/null +++ b/contextscore/download_tables.py @@ -0,0 +1,63 @@ +import pandas as pd +import pymysql + +def download_ucsc(table_name: str, + genome_version: str = "hg38", + output_file: str = "ucsc_table.bed") -> None: + """ + Downloads the UCSC Simple Repeats table and saves it as a BED file for use with BEDTools. + Note: This function requires access to the UCSC MySQL database. + """ + print("Downloading UCSC " + table_name + " table for " + genome_version + "...") + # Connect to UCSC MySQL database + conn = pymysql.connect(host="genome-mysql.soe.ucsc.edu", + user="genome", + password="", + database="hg38") # Change to the desired genome version (e.g., hg19, mm10) + + # Query the simpleRepeat table + # query = "SELECT * FROM simpleRepeat;" # Adjust query as needed + query = f""" + SELECT + chrom AS chr, + chromStart AS start, + chromEnd AS end, + name + FROM + {table_name} + WHERE + chrom IS NOT NULL AND + chromStart IS NOT NULL AND + chromEnd IS NOT NULL + AND + chromStart >= 0 AND + chromEnd > chromStart + AND + chromStart < chromEnd; + """ + df = pd.read_sql(query, conn) + + # Close connection + conn.close() + + # Save as BED file for BEDTools + df.to_csv(output_file, sep="\t", index=False, header=False) + # df.to_csv("simple_repeats_test.bed", sep="\t", index=False, header=False) + + print("Downloaded UCSC " + table_name + " table for " + genome_version + " and saved as " + output_file) + +if __name__ == "__main__": + # Download the UCSC Simple Repeats table for hg38 and save as + # "simple_repeats_hg38.bed" + simple_repeat_file = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" + download_ucsc(table_name="simpleRepeat", + genome_version="hg38", + output_file=simple_repeat_file) + + # Download the UCSC phastCons100way table for hg38 and save as + # "phastCons100way_hg38.bed" + phastcons_file = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" + download_ucsc(table_name="phastCons100way", + genome_version="hg38", + output_file=phastcons_file) + diff --git a/contextscore/train_model.py b/contextscore/train_model.py index 72bba8e..b4337ea 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -50,6 +50,7 @@ import logging import numpy as np import joblib +import pybedtools # For annotating BED files. import pandas as pd from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt @@ -280,33 +281,53 @@ def annotate(annovar_input, annovar_path, db_path, output_dir): logging.info('Completed annotations.') -def annotate_bed(annovar_input, annovar_path, db_path, output_dir, bed_file): - """Annotate from the BED file using ANNOVAR.""" - # Use the example: annotate_variation.pl ex1.hg18.avinput humandb/ -bedfile hg18_SureSelect_All_Exon_G3362_with_names.bed -dbtype bed -regionanno -out ex1 - logging.info('Annotating from the BED file using ANNOVAR.') +def annotate_bed(input_bed, table_bed): + """Annotate a BED file using bedtools.""" + logging.info('Input BED file: %s', input_bed) + logging.info('Table BED file: %s', table_bed) - annotations_dir = os.path.join(output_dir, 'bed') - logging.info('Creating the output directory: %s', annotations_dir) - cmd = [ - f"{annovar_path}/annotate_variation.pl", - annovar_input, - db_path, - "-buildver hg38", - "-bedfile", bed_file, - "-dbtype bed", - "-regionanno", - "-out", annotations_dir - ] + input_bed = pybedtools.BedTool(input_bed) + input_count = input_bed.count() + + table_bed = pybedtools.BedTool(table_bed) + table_count = table_bed.count() + + # logging.info('Input BED file:\n%s', input_bed) + # logging.info('Table BED file:\n%s', table_bed) + + # Perform the annotation using bedtools intersect. + logging.info('Annotating the BED file using bedtools intersect.') + annotated_bed = input_bed.intersect(table_bed, wa=True, wb=True) + df = annotated_bed.to_dataframe( + names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], + usecols=[0, 1, 2, 3, 4, 5, 6], # Only keep the relevant columns. + ) + + # Print first 5 rows of the annotated dataframe. + logging.info('Annotated BED dataframe:\n%s', df.head()) + anno_count = df.shape[0] + logging.info('Number of rows in the input BED file: %d', input_count) + logging.info('Number of rows in the table BED file: %d', table_count) + logging.info('Number of rows in the annotated BED dataframe: %d', anno_count) + logging.info("Annotated " + str(anno_count) + " rows from the input BED file with " + str(table_count) + " rows from the table BED file (Percentage: %.2f%%)" % ((anno_count / input_count) * 100)) + + # Save the annotated dataframe to a new file. + # output_file = "Test_annotated.bed" # You can change this to your desired output file name. + # logging.info('Saving the annotated BED dataframe to %s', output_file) + # df.to_csv(output_file, sep='\t', index=False, header=True) + # logging.info('Saved the annotated BED dataframe to %s', output_file) + + return df + +def add_annotations(df, annotation_file): + """Add annotations to the dataframe from the ANNOVAR output file.""" + logging.info('Adding annotations from: %s', annotation_file) + + # Read the annotation file into a dataframe. + anno_df = pd.read_csv(annotation_file, sep='\t', header=None, names=["chrom", "start", "end", "annotation"], comment='#') + logging.info('Annotation dataframe:\n%s', anno_df.head()) - try: - subprocess.run(" ".join(cmd), shell=True, check=True) - except subprocess.CalledProcessError as e: - logging.error('Error annotating from the BED file: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - logging.info('Completed annotating from the BED file using ANNOVAR.') - logging.info('Output directory: %s', annotations_dir) # Run the program. def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): @@ -339,73 +360,40 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). # https://webs.iiitd.edu.in/raghava/humcfs/download.html # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ - # fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" - # fragile_sites_bed = - # "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" - # fragile_sites_bed = - # "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" - fragile_sites_bed = "fragileSites.bed" + fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) logging.info('Annotating fragile sites in true positives.') - tp_fs_dir = os.path.join(output_directory_annovar, 'TP_FS') - if not os.path.exists(tp_fs_dir): - os.makedirs(tp_fs_dir) - - annotate_bed(true_positives_file, annovar_path, db_path, tp_fs_dir, fragile_sites_bed) - # Output is bed.hg38_bed - tp_fs_annotation = os.path.join(tp_fs_dir, 'bed.hg38_bed') - if not os.path.exists(tp_fs_annotation): - logging.error('Annotation file does not exist: %s', tp_fs_annotation) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - logging.info('Successfully annotated true positives to file: %s', tp_fs_annotation) + tp_fragile_sites_df = annotate_bed(tp_bed, fragile_sites_bed) logging.info('Annotating fragile sites in false positives.') - fp_fs_dir = os.path.join(output_directory_annovar, 'FP_FS') - if not os.path.exists(fp_fs_dir): - os.makedirs(fp_fs_dir) - - annotate_bed(false_positives_file, annovar_path, db_path, fp_fs_dir, fragile_sites_bed) - # Output is bed.hg38_bed - fp_fs_annotation = os.path.join(fp_fs_dir, 'bed.hg38_bed') - if not os.path.exists(fp_fs_annotation): - logging.error('Annotation file does not exist: %s', fp_fs_annotation) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - logging.info('Successfully annotated false positives to file: %s', fp_fs_annotation) + fp_fragile_sites_df = annotate_bed(fp_bed, fragile_sites_bed) # --------------------------------------- # Annotate conserved regions using a UCSC Table Browser BED file for # phastCons100way - phastCons_bed = "phastCons100wayHG38_fixed.bed" + # phastCons_bed = "phastCons100wayHG38_fixed.bed" + phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) logging.info('Annotating conserved regions in true positives.') - tp_cr_dir = os.path.join(output_directory_annovar, 'TP_CR') - if not os.path.exists(tp_cr_dir): - os.makedirs(tp_cr_dir) - annotate_bed(true_positives_file, annovar_path, db_path, tp_cr_dir, phastCons_bed) - # Output is bed.hg38_bed - tp_cr_annotation = os.path.join(tp_cr_dir, 'bed.hg38_bed') - if not os.path.exists(tp_cr_annotation): - logging.error('Annotation file does not exist: %s', tp_cr_annotation) + tp_cons_df = annotate_bed(tp_bed, phastCons_bed) + + logging.info('Annotating conserved regions in false positives.') + fp_cons_df = annotate_bed(fp_bed, phastCons_bed) # --------------------------------------- # Annotate simple repeats using a UCSC Table Browser BED file for # simpleRepeat - simpleRepeat_bed = "simpleRepeatsHG38_fixed.bed" + # simpleRepeat_bed = "simpleRepeatsHG38_fixed.bed" + simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) logging.info('Annotating simple repeats in true positives.') - tp_sr_dir = os.path.join(output_directory_annovar, 'TP_SR') - if not os.path.exists(tp_sr_dir): - os.makedirs(tp_sr_dir) - annotate_bed(true_positives_file, annovar_path, db_path, tp_sr_dir, simpleRepeat_bed) - # Output is bed.hg38_bed - tp_sr_annotation = os.path.join(tp_sr_dir, 'bed.hg38_bed') - if not os.path.exists(tp_sr_annotation): - logging.error('Annotation file does not exist: %s', tp_sr_annotation) + tp_sr_df = annotate_bed(tp_bed, simpleRepeat_bed) + + logging.info('Annotating simple repeats in false positives.') + fp_sr_df = annotate_bed(fp_bed, simpleRepeat_bed) # --------------------------------------- # Region-based annotation using ANNOVAR databases. @@ -423,7 +411,7 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Download the cytoband database download_annovar_db(annovar_path, db_path, "cytoBand", buildver) - logging.info('Annotating true positivess using ANNOVAR.') + logging.info('Annotating true positives using ANNOVAR.') tp_anno_dir = os.path.join(output_directory_annovar, 'TP') if not os.path.exists(tp_anno_dir): os.makedirs(tp_anno_dir) @@ -468,10 +456,45 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path "conserved_region" ] + # Read the true positive input into a dataframe. + logging.info('Reading the true positive input file: %s', true_positives_file) + tp_df = pd.read_csv(true_positives_file, sep='\t', header=None, names=["chrom", "start", "end"], usecols=[0, 1, 2]) + + # Check if the true positive dataframe is empty. + if tp_df.empty: + logging.error('True positive dataframe is empty.') + sys.exit(1) + + logging.info('True positive dataframe:\n%s', tp_df.head()) + + # Read the false positive input into a dataframe. + logging.info('Reading the false positive input file: %s', false_positives_file) + fp_df = pd.read_csv(false_positives_file, sep='\t', header=None, names=["chrom", "start", "end"], usecols=[0, 1, 2]) + + # Check if the false positive dataframe is empty. + if fp_df.empty: + logging.error('False positive dataframe is empty.') + sys.exit(1) + + # Read the annovar output into a dataframe. + logging.info('Reading the true positive annotation file: %s', tp_annotation) + tp_anno_df = pd.read_csv(tp_annotation, sep='\t', header=None, comment='#') + logging.info('True positive annotation dataframe:\n%s', tp_anno_df.head()) + + logging.info('Reading the false positive annotation file: %s', fp_annotation) + fp_anno_df = pd.read_csv(fp_annotation, sep='\t', header=None, comment='#') + logging.info('False positive annotation dataframe:\n%s', fp_anno_df.head()) + + return + + # Add columns for the segmental duplication, telomere, centromere, fragile site, + # and conserved region annotations. + + + # BELOW IS A WIP # ------------------------------- - # logging.info('Output directory: %s', output_directory) # logging.info('ANNOVAR path: %s', annovar_path) # logging.info('ANNOVAR database path: %s', db_path) From f9a07764f1d89b405689832f96e91887a3d363de Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Fri, 28 Mar 2025 21:40:33 -0400 Subject: [PATCH 09/93] work on features --- contextscore/train_model.py | 139 +++++++++++++++++++++++++++++++++--- 1 file changed, 128 insertions(+), 11 deletions(-) diff --git a/contextscore/train_model.py b/contextscore/train_model.py index b4337ea..f92bc57 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -86,6 +86,32 @@ def read_cytoband_file(cytoband_file): return chrom_dict +def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): + """Check if the cytoband is a telomere or centromere.""" + if chrom not in chrom_dict: + return False, False # Not in any region. + + is_telomere = False + is_centromere = False + # Check if the cytoband is a telomere. + try: + if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: + is_telomere = True + except TypeError: + # Handle the case where telomerep is not defined. + logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) + logging.warning('Cytoband: %s', cytoband) + logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) + is_telomere = False + if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: + is_telomere = True + if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: + is_centromere = True + if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: + is_centromere = True + + return is_telomere, is_centromere + def train(tp_files, fp_files): """Train the binary classification model.""" @@ -364,10 +390,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) logging.info('Annotating fragile sites in true positives.') - tp_fragile_sites_df = annotate_bed(tp_bed, fragile_sites_bed) + # tp_fragile_sites_df = annotate_bed(tp_bed, fragile_sites_bed) logging.info('Annotating fragile sites in false positives.') - fp_fragile_sites_df = annotate_bed(fp_bed, fragile_sites_bed) + # fp_fragile_sites_df = annotate_bed(fp_bed, fragile_sites_bed) # --------------------------------------- # Annotate conserved regions using a UCSC Table Browser BED file for @@ -377,10 +403,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) logging.info('Annotating conserved regions in true positives.') - tp_cons_df = annotate_bed(tp_bed, phastCons_bed) + # tp_cons_df = annotate_bed(tp_bed, phastCons_bed) logging.info('Annotating conserved regions in false positives.') - fp_cons_df = annotate_bed(fp_bed, phastCons_bed) + # fp_cons_df = annotate_bed(fp_bed, phastCons_bed) # --------------------------------------- # Annotate simple repeats using a UCSC Table Browser BED file for @@ -390,10 +416,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) logging.info('Annotating simple repeats in true positives.') - tp_sr_df = annotate_bed(tp_bed, simpleRepeat_bed) + # tp_sr_df = annotate_bed(tp_bed, simpleRepeat_bed) logging.info('Annotating simple repeats in false positives.') - fp_sr_df = annotate_bed(fp_bed, simpleRepeat_bed) + # fp_sr_df = annotate_bed(fp_bed, simpleRepeat_bed) # --------------------------------------- # Region-based annotation using ANNOVAR databases. @@ -405,9 +431,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Download the segmental duplication database download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildver) - # Download the conservation database - # download_annovar_db(annovar_path, db_path, "phastConsElements46way", buildver) - # Download the cytoband database download_annovar_db(annovar_path, db_path, "cytoBand", buildver) @@ -478,13 +501,107 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Read the annovar output into a dataframe. logging.info('Reading the true positive annotation file: %s', tp_annotation) - tp_anno_df = pd.read_csv(tp_annotation, sep='\t', header=None, comment='#') + tp_anno_df = pd.read_csv(tp_annotation, sep='\t', header=0, comment='#') + logging.info('True positive annotation header:\n%s', tp_anno_df.columns) logging.info('True positive annotation dataframe:\n%s', tp_anno_df.head()) + # Save the cytobands as a tsv file for debugging. + tp_anno_output = 'tp_annotation_debug.tsv' + logging.info('Saving the true positive annotation dataframe to %s', tp_anno_output) + + # Get the unique cytoband annotations. + # cyto_df = tp_anno_df['cytoBand'].drop_duplicates() + # cyto_df.to_csv(tp_anno_output, sep='\t', index=False, header=True) + segdup_df = tp_anno_df['genomicSuperDups'].drop_duplicates() + + # Sort the segmental duplication dataframe. + segdup_df = segdup_df.sort_values() + segdup_df.to_csv(tp_anno_output, sep='\t', index=False, header=True) + # tp_anno_df.to_csv(tp_anno_output, sep='\t', index=False, header=True) + logging.info('Saved the true positive annotation dataframe to %s', tp_anno_output) + logging.info('Reading the false positive annotation file: %s', fp_annotation) - fp_anno_df = pd.read_csv(fp_annotation, sep='\t', header=None, comment='#') + fp_anno_df = pd.read_csv(fp_annotation, sep='\t', header=0, comment='#') + logging.info('False positive annotation header:\n%s', fp_anno_df.columns) logging.info('False positive annotation dataframe:\n%s', fp_anno_df.head()) + # Add a telomere and centromere column, and set to true/false using the + # cytoband dictionary. + tp_df['telomere'] = False + tp_df['centromere'] = False + tp_df['segdup'] = False + tp_df['fragile_site'] = False + tp_df['conserved_region'] = False + fp_df['telomere'] = False + fp_df['centromere'] = False + fp_df['segdup'] = False + fp_df['fragile_site'] = False + fp_df['conserved_region'] = False + logging.info('Adding telomere and centromere annotations to true positives.') + for index, row in tp_df.iterrows(): + chrom = row['chrom'] + start = row['start'] + end = row['end'] + + # Get all corresponding rows with the same chromosome and start/end positions. + matching_rows = tp_anno_df[(tp_anno_df['Chr'] == chrom) & (tp_anno_df['Start'] == start) & (tp_anno_df['End'] == end)] + if matching_rows.empty: + logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + continue # Skip if no matching annotation is found. + + # Check if any rows have the annotation for segmental duplication. + segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. + if segdup: + # Get the value after Score= + max_score = 0 + for score in matching_rows['genomicSuperDups']: + if score.startswith('Score='): + try: + logging.debug('Parsing Score from: %s', score) + score_value = score.split('Score=')[1] + # Split after comma if there are multiple values. + if ';' in score_value: + score_value = score_value.split(';')[0] + score_value = float(score_value) # Convert to float. + logging.debug('Score found: %.2f', score_value) + + # Keep track of the maximum score found. + # This is useful if there are multiple annotations for the same region. + # We want to keep the maximum score found. + if score_value > max_score: + max_score = score_value + + except (IndexError, ValueError): + logging.warning('Could not parse Score from: %s', score) + + # logging.info('Segmental duplication found for index %d: Chromosome: %s, Start: %d, End: %d, Max Score: %.2f', index, chrom, start, end, max_score) + + tp_df.at[index, 'segdup'] = max_score + else: + logging.info('No segmental duplication found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + + # Check if the region is a telomere or centromere. + cytoband = matching_rows['cytoBand'].dropna().unique() + if cytoband.size > 0: + # Get the first cytoband annotation (if multiple are present). + cytoband = cytoband[0] # Take the first one if there are multiple. + # logging.info('Cytoband found for index %d: Chromosome: %s, Start: + # %d, End: %d, Cytoband: %s', index, chrom, start, end, cytoband) + + # Check if the cytoband is a telomere or centromere. + is_telomere, is_centromere = get_cytoband_is_c_t(chrom_dict, chrom, cytoband) + # if is_telomere: + # logging.info('Telomere found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + # if is_centromere: + # logging.info('Centromere found for index %d: Chromosome: %s, + # Start: %d, End: %d', index, chrom, start, end) + + # Update the telomere and centromere columns. + tp_df.at[index, 'telomere'] = is_telomere + tp_df.at[index, 'centromere'] = is_centromere + # else: + # logging.info('No cytoband found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + return # Add columns for the segmental duplication, telomere, centromere, fragile site, From b1f5cecbc277fe172f8e954a7ff004372a4a59aa Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 29 Mar 2025 13:40:12 -0400 Subject: [PATCH 10/93] work on features --- contextscore/train_model.py | 271 +++++++++++++++++++++++------------- 1 file changed, 173 insertions(+), 98 deletions(-) diff --git a/contextscore/train_model.py b/contextscore/train_model.py index f92bc57..c206efb 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_model.py @@ -354,6 +354,61 @@ def add_annotations(df, annotation_file): logging.info('Annotation dataframe:\n%s', anno_df.head()) +def add_telomere_centromere_segdup(input_df, anno_df, cytoband_dict): + """Add telomere, centromere, and segmental duplication annotations to the input dataframe.""" + for index, row in input_df.iterrows(): + chrom = row['chrom'] + start = row['start'] + end = row['end'] + + # Get all corresponding rows with the same chromosome and start/end positions. + matching_rows = anno_df[(anno_df['Chr'] == chrom) & (anno_df['Start'] == start) & (anno_df['End'] == end)] + if matching_rows.empty: + logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + continue # Skip if no matching annotation is found. + + # Check if any rows have the annotation for segmental duplication. + segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. + if segdup: + # Get the value after Score= + max_score = 0 + score_found = False + for score in matching_rows['genomicSuperDups']: + if score == '.': + continue + + # Check if the score starts with 'Score='. + elif score.startswith('Score='): + score_found = True + try: + score_value = score.split('Score=')[1] + if ';' in score_value: + score_value = score_value.split(';')[0] + score_value = float(score_value) # Convert to float. + + # Keep track of the maximum score found. + if score_value > max_score: + max_score = score_value + + except (IndexError, ValueError): + logging.warning('Could not parse Score from: %s', score) + + if score_found: + input_df.at[index, 'segdup'] = max_score + + # Check if the region is a telomere or centromere. + cytoband = matching_rows['cytoBand'].dropna().unique() + if cytoband.size > 0: + # Get the first cytoband annotation (if multiple are present). + cytoband = cytoband[0] # Take the first one if there are multiple. + + # Check if the cytoband is a telomere or centromere. + is_telomere, is_centromere = get_cytoband_is_c_t(cytoband_dict, chrom, cytoband) + + # Update the telomere and centromere columns. + input_df.at[index, 'telomere'] = is_telomere + input_df.at[index, 'centromere'] = is_centromere + # Run the program. def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): @@ -362,7 +417,7 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Set up a dictionary for each chromosome, mapping the cytoband to the # centromere and telomere regions. cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. - chrom_dict = read_cytoband_file(cytoband_file) + cytoband_dict = read_cytoband_file(cytoband_file) # TODO: Make this an input parameter. buildver = 'hg38' @@ -390,10 +445,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) logging.info('Annotating fragile sites in true positives.') - # tp_fragile_sites_df = annotate_bed(tp_bed, fragile_sites_bed) + tp_fragile_sites_df = annotate_bed(tp_bed, fragile_sites_bed) logging.info('Annotating fragile sites in false positives.') - # fp_fragile_sites_df = annotate_bed(fp_bed, fragile_sites_bed) + fp_fragile_sites_df = annotate_bed(fp_bed, fragile_sites_bed) # --------------------------------------- # Annotate conserved regions using a UCSC Table Browser BED file for @@ -403,10 +458,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) logging.info('Annotating conserved regions in true positives.') - # tp_cons_df = annotate_bed(tp_bed, phastCons_bed) + tp_cons_df = annotate_bed(tp_bed, phastCons_bed) logging.info('Annotating conserved regions in false positives.') - # fp_cons_df = annotate_bed(fp_bed, phastCons_bed) + fp_cons_df = annotate_bed(fp_bed, phastCons_bed) # --------------------------------------- # Annotate simple repeats using a UCSC Table Browser BED file for @@ -416,10 +471,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) logging.info('Annotating simple repeats in true positives.') - # tp_sr_df = annotate_bed(tp_bed, simpleRepeat_bed) + tp_sr_df = annotate_bed(tp_bed, simpleRepeat_bed) logging.info('Annotating simple repeats in false positives.') - # fp_sr_df = annotate_bed(fp_bed, simpleRepeat_bed) + fp_sr_df = annotate_bed(fp_bed, simpleRepeat_bed) # --------------------------------------- # Region-based annotation using ANNOVAR databases. @@ -465,20 +520,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Successfully annotated false positives to file: %s', fp_annotation) - # Now extract features into a combined dataframe. - columns = [ - "label", - "chrom", - "start", - "sv_length", - "sv_type", - "segdup", - "telomere", - "centromere", - "fragile_site", - "conserved_region" - ] - # Read the true positive input into a dataframe. logging.info('Reading the true positive input file: %s', true_positives_file) tp_df = pd.read_csv(true_positives_file, sep='\t', header=None, names=["chrom", "start", "end"], usecols=[0, 1, 2]) @@ -505,103 +546,137 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('True positive annotation header:\n%s', tp_anno_df.columns) logging.info('True positive annotation dataframe:\n%s', tp_anno_df.head()) - # Save the cytobands as a tsv file for debugging. - tp_anno_output = 'tp_annotation_debug.tsv' - logging.info('Saving the true positive annotation dataframe to %s', tp_anno_output) - - # Get the unique cytoband annotations. - # cyto_df = tp_anno_df['cytoBand'].drop_duplicates() - # cyto_df.to_csv(tp_anno_output, sep='\t', index=False, header=True) - segdup_df = tp_anno_df['genomicSuperDups'].drop_duplicates() - - # Sort the segmental duplication dataframe. - segdup_df = segdup_df.sort_values() - segdup_df.to_csv(tp_anno_output, sep='\t', index=False, header=True) - # tp_anno_df.to_csv(tp_anno_output, sep='\t', index=False, header=True) - logging.info('Saved the true positive annotation dataframe to %s', tp_anno_output) - logging.info('Reading the false positive annotation file: %s', fp_annotation) fp_anno_df = pd.read_csv(fp_annotation, sep='\t', header=0, comment='#') logging.info('False positive annotation header:\n%s', fp_anno_df.columns) logging.info('False positive annotation dataframe:\n%s', fp_anno_df.head()) - # Add a telomere and centromere column, and set to true/false using the - # cytoband dictionary. + # Add the labels to the dataframes. + tp_df['label'] = 1 tp_df['telomere'] = False tp_df['centromere'] = False tp_df['segdup'] = False tp_df['fragile_site'] = False tp_df['conserved_region'] = False + tp_df['simple_repeat'] = False + + fp_df['label'] = 0 fp_df['telomere'] = False fp_df['centromere'] = False fp_df['segdup'] = False fp_df['fragile_site'] = False fp_df['conserved_region'] = False - logging.info('Adding telomere and centromere annotations to true positives.') - for index, row in tp_df.iterrows(): - chrom = row['chrom'] - start = row['start'] - end = row['end'] + fp_df['simple_repeat'] = False - # Get all corresponding rows with the same chromosome and start/end positions. - matching_rows = tp_anno_df[(tp_anno_df['Chr'] == chrom) & (tp_anno_df['Start'] == start) & (tp_anno_df['End'] == end)] - if matching_rows.empty: - logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - continue # Skip if no matching annotation is found. + logging.info('Adding telomere, centromere, and segmental duplication annotations to true positives.') + add_telomere_centromere_segdup(tp_df, tp_anno_df, cytoband_dict) - # Check if any rows have the annotation for segmental duplication. - segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. - if segdup: - # Get the value after Score= - max_score = 0 - for score in matching_rows['genomicSuperDups']: - if score.startswith('Score='): - try: - logging.debug('Parsing Score from: %s', score) - score_value = score.split('Score=')[1] - # Split after comma if there are multiple values. - if ';' in score_value: - score_value = score_value.split(';')[0] - score_value = float(score_value) # Convert to float. - logging.debug('Score found: %.2f', score_value) - - # Keep track of the maximum score found. - # This is useful if there are multiple annotations for the same region. - # We want to keep the maximum score found. - if score_value > max_score: - max_score = score_value - - except (IndexError, ValueError): - logging.warning('Could not parse Score from: %s', score) + logging.info('Adding telomere, centromere, and segmental duplication annotations to false positives.') + add_telomere_centromere_segdup(fp_df, fp_anno_df, cytoband_dict) - # logging.info('Segmental duplication found for index %d: Chromosome: %s, Start: %d, End: %d, Max Score: %.2f', index, chrom, start, end, max_score) - - tp_df.at[index, 'segdup'] = max_score - else: - logging.info('No segmental duplication found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - - # Check if the region is a telomere or centromere. - cytoband = matching_rows['cytoBand'].dropna().unique() - if cytoband.size > 0: - # Get the first cytoband annotation (if multiple are present). - cytoband = cytoband[0] # Take the first one if there are multiple. - # logging.info('Cytoband found for index %d: Chromosome: %s, Start: - # %d, End: %d, Cytoband: %s', index, chrom, start, end, cytoband) + # Add the fragile site and conserved region annotations + logging.info('Adding fragile site annotations to true positives.') + tp_df['fragile_site'] = tp_df.merge(tp_fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Updated df:\n%s', tp_df.head()) + + logging.info('Adding fragile site annotations to false positives.') + fp_df['fragile_site'] = fp_df.merge(fp_fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + logging.info('Updated df:\n%s', fp_df.head()) + + # Save the fragile site df to a file. + # tp_fragile_output = 'fragile_sites.tsv' + # logging.info('Saving the fragile site dataframe to %s', tp_fragile_output) + # tp_fragile_sites_df.to_csv(tp_fragile_output, sep='\t', index=False, header=True) + + # Add the conserved region annotations. + logging.info('Adding conserved region annotations to true positives.') + tp_df['conserved_region'] = tp_df.merge(tp_cons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Adding conserved region annotations to false positives.') + fp_df['conserved_region'] = fp_df.merge(fp_cons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + # Add the simple repeat annotations. + logging.info('Adding simple repeat annotations to true positives.') + tp_df['simple_repeat'] = tp_df.merge(tp_sr_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Adding simple repeat annotations to false positives.') + fp_df['simple_repeat'] = fp_df.merge(fp_sr_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + # Print a tab-delimited table with the number of rows in each category. + logging.info('True positives:') + logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions') + logging.info('%d\t%d\t%d\t%d\t%d\t%d', tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum()) + + logging.info('False positives:') + logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions') + logging.info('%d\t%d\t%d\t%d\t%d\t%d', fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum()) + + # Save the same table to a file. + annot_summary = 'TrainingAnnotationsSummary.tsv' + logging.info('Saving the true positive summary to %s', tp_output) + with open(annot_summary, 'w') as f: + f.write('True Positives\n') + f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\n') + f.write('%d\t%d\t%d\t%d\t%d\t%d\n' % (tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum())) + f.write('\n') + f.write('False Positives\n') + f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\n') + f.write('%d\t%d\t%d\t%d\t%d\t%d\n' % (fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum())) + + logging.info('Saved the summary to %s', annot_summary) + # for index, row in tp_df.iterrows(): + # chrom = row['chrom'] + # start = row['start'] + # end = row['end'] + + # # Get all corresponding rows with the same chromosome and start/end positions. + # matching_rows = tp_anno_df[(tp_anno_df['Chr'] == chrom) & (tp_anno_df['Start'] == start) & (tp_anno_df['End'] == end)] + # if matching_rows.empty: + # logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + # continue # Skip if no matching annotation is found. + + # # Check if any rows have the annotation for segmental duplication. + # segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. + # if segdup: + # # Get the value after Score= + # max_score = 0 + # score_found = False + # for score in matching_rows['genomicSuperDups']: + # if score == '.': + # continue + + # # Check if the score starts with 'Score='. + # elif score.startswith('Score='): + # score_found = True + # try: + # score_value = score.split('Score=')[1] + # if ';' in score_value: + # score_value = score_value.split(';')[0] + # score_value = float(score_value) # Convert to float. + + # # Keep track of the maximum score found. + # if score_value > max_score: + # max_score = score_value + + # except (IndexError, ValueError): + # logging.warning('Could not parse Score from: %s', score) + + # if score_found: + # tp_df.at[index, 'segdup'] = max_score + + # # Check if the region is a telomere or centromere. + # cytoband = matching_rows['cytoBand'].dropna().unique() + # if cytoband.size > 0: + # # Get the first cytoband annotation (if multiple are present). + # cytoband = cytoband[0] # Take the first one if there are multiple. - # Check if the cytoband is a telomere or centromere. - is_telomere, is_centromere = get_cytoband_is_c_t(chrom_dict, chrom, cytoband) - # if is_telomere: - # logging.info('Telomere found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - # if is_centromere: - # logging.info('Centromere found for index %d: Chromosome: %s, - # Start: %d, End: %d', index, chrom, start, end) + # # Check if the cytoband is a telomere or centromere. + # is_telomere, is_centromere = get_cytoband_is_c_t(chrom_dict, chrom, cytoband) - # Update the telomere and centromere columns. - tp_df.at[index, 'telomere'] = is_telomere - tp_df.at[index, 'centromere'] = is_centromere - # else: - # logging.info('No cytoband found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - + # # Update the telomere and centromere columns. + # tp_df.at[index, 'telomere'] = is_telomere + # tp_df.at[index, 'centromere'] = is_centromere return # Add columns for the segmental duplication, telomere, centromere, fragile site, From 309a1404ef643380879dd0161c55fbcdee8de8f3 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 1 Apr 2025 11:51:33 -0400 Subject: [PATCH 11/93] update df --- contextscore/TrainingAnnotationsSummary.tsv | 2 + contextscore/extract_features.py | 35 +- contextscore/predict.py | 78 ++++ contextscore/score_vcf.py | 114 +++++ contextscore/train_caller_model.py | 178 ++++++++ ...in_model.py => train_region_anno_model.py} | 416 ++++-------------- 6 files changed, 489 insertions(+), 334 deletions(-) create mode 100644 contextscore/TrainingAnnotationsSummary.tsv create mode 100644 contextscore/predict.py create mode 100644 contextscore/score_vcf.py create mode 100644 contextscore/train_caller_model.py rename contextscore/{train_model.py => train_region_anno_model.py} (70%) diff --git a/contextscore/TrainingAnnotationsSummary.tsv b/contextscore/TrainingAnnotationsSummary.tsv new file mode 100644 index 0000000..2c78f0d --- /dev/null +++ b/contextscore/TrainingAnnotationsSummary.tsv @@ -0,0 +1,2 @@ +True Positives +Total Fragile Sites Telomeres Centromeres Segmental Duplications Conserved Regions diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 02a0c26..f9282c0 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -28,9 +28,9 @@ def read_vcf(filepath): """Read in the VCF file.""" - vcf_df = pd.read_csv(filepath, sep='\t', comment='#', header=None, usecols=[0, 1, 7], \ - names=['CHROM', 'POS', 'INFO'], \ - dtype={'CHROM': str, 'POS': np.int64, 'INFO': str}) + vcf_df = pd.read_csv(filepath, sep='\t', comment='#', header=None, usecols=[0, 1, 7, 8], \ + names=['CHROM', 'POS', 'INFO', 'FORMAT'], \ + dtype={'CHROM': str, 'POS': np.int64, 'INFO': str, 'FORMAT': str}) return vcf_df def extract_features(input_vcf): @@ -38,20 +38,27 @@ def extract_features(input_vcf): # Read in the VCF file. vcf_df = read_vcf(input_vcf) - # Extract the read and clipped base support from the INFO column. - read_support = vcf_df['INFO'].str.extract(r'SUPPORT=(\d+)', expand=False).astype(np.int32) + # Extract the alignment type (string) from the INFO column. + aln_type = vcf_df['INFO'].str.extract(r'ALN=(\w+)', expand=False) - # Check if any read depths are missing. - if read_support.isnull().values.any(): - logging.error('Read support is missing.') - sys.exit(1) + # Extract the cluster size from the INFO column. + cluster_size = vcf_df['INFO'].str.extract(r'CLUSTER=(\d+)', expand=False).astype(np.int32) - clipped_bases = vcf_df['INFO'].str.extract(r'CLIPSUP=(\d+)', expand=False).astype(np.int32) + # Set 0 cluster size to nan. + cluster_size[cluster_size == 0] = np.nan - # Check if any clipped bases are missing. - if clipped_bases.isnull().values.any(): - logging.error('Clipped bases is missing.') - sys.exit(1) + # Extract GT from the FORMAT column. + gt = vcf_df['FORMAT'].str.extract(r'GT=(\d+)', expand=False).astype(np.int32) + + # Set ./. GT to nan. + gt[gt == './.'] = np.nan + + # Check if any GT values are missing. + if gt.isnull().values.any(): + logging.info('Number of missing GT values: ' + str(gt.isnull().sum())) + + # Extract DP from the FORMAT column. + dp = vcf_df['FORMAT'].str.extract(r'DP=(\d+)', expand=False).astype(np.int32) # Get the array of chromosome names. chrom = vcf_df['CHROM'] diff --git a/contextscore/predict.py b/contextscore/predict.py new file mode 100644 index 0000000..70d186e --- /dev/null +++ b/contextscore/predict.py @@ -0,0 +1,78 @@ +""" +scoring_model.py: Score the structural variants using the binary classification +model. + +Usage: + scoring_model.py + +Arguments: + Path to the input VCF file. + Path to the model file. +""" + +import os +import sys +import logging +import numpy as np +import joblib +import pandas as pd + +import matplotlib.pyplot as plt + +from extract_features import extract_features + + +def score(model, input_vcf, output_vcf): + """Score the structural variants using the binary classification model. + + Args: + model (str): Path to the model file. + input_vcf (str): Path to the input VCF file. + output_vcf (str): Path to the output VCF file. + """ + # Load the model + clf = joblib.load(model) + + # Extract the features from the VCF file + X = extract_features(input_vcf) + + # Predict the labels and get the probabilities + y_pred = clf.predict_proba(X) + + # logging.info('Predicted labels:\n%s', y_pred) + + # Plot a histogram of the probabilities + plt.hist(y_pred[:, 1], bins=20) + plt.xlabel('Probability') + plt.ylabel('Count') + + # # Save the plot to the input VCF file's directory + # output_dir = os.path.dirname(output_vcf) + # output_filepath = os.path.join(output_dir, 'probabilities.png') + # plt.savefig(output_filepath) + # logging.info('Saved the plot of the probabilities to %s.', output_filepath) + + # Save the plot to the working directory + plt.savefig('output/probabilities.png') + + +if __name__ == '__main__': + + # Model file + model = sys.argv[1] + + # Input VCF file to score + input_vcf = sys.argv[2] + + # Output VCF file + output_vcf = sys.argv[3] + + # Set up the logger + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s %(levelname)s: %(message)s', + datefmt='%Y-%m-%d %H:%M:%S') + + # Score the structural variants + score(model, input_vcf, output_vcf) + \ No newline at end of file diff --git a/contextscore/score_vcf.py b/contextscore/score_vcf.py new file mode 100644 index 0000000..95a81a2 --- /dev/null +++ b/contextscore/score_vcf.py @@ -0,0 +1,114 @@ +""" +score_vcf.py - Score structural variants in a VCF file using a binary classification model. + +This script prioritizes structural variants in a VCF file by scoring them using +a binary classification model. The model is trained using a VCF file of true +positive structural variants and a VCF file of false positive structural +variants. The model is trained using the following features extracted from the +VCF files: chromosome, start position, structural variant length, structural +variant type, read support, and clipped bases. The model is a logistic +regression model. + +Usage: + python score_vcf.py + +Arguments: + model_path: str + Path to the trained model file. + vcf_filepath: str + Path to the VCF file to score. + +Example: + python score_vcf.py model.pkl structural_variants.vcf + +""" + +import os +import sys +import logging +import numpy as np +import joblib +import pandas as pd +from sklearn.linear_model import LogisticRegression +import matplotlib.pyplot as plt + +from extract_features import extract_features + + +# Set up the logger. +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + + +def score(region_model_path, caller_model_path, vcf_filepath, output_vcf): + """Load the model and VCF file and score the structural variants.""" + # Load the VCF file. + logging.info('Extracting features from the VCF file.') + features = extract_features(vcf_filepath) + + # Load the model. + logging.info('Loading the region-based model.') + region_model = joblib.load(region_model_path) + + logging.info('Loading the caller-based model.') + caller_model = joblib.load(caller_model_path) + + # Score the structural variants separately using the region-based and + # caller-based models. + logging.info('Scoring the structural variants using the region-based model.') + y_region = region_model.predict_proba(features)[:, 1] # index 0=negative, 1=positive probabilities + y_caller = caller_model.predict_proba(features)[:, 1] # index 0=negative, 1=positive probabilities + + # Compute the confidence scores. + conf_region = np.abs(y_region - 0.5) + conf_caller = np.abs(y_caller - 0.5) + + # Normalize the confidence scores to get the weights (higher confidence = + # higher weight) + # (weights sum to 1) + weights_region = conf_region / (conf_region + conf_caller) + weights_caller = conf_caller / (conf_region + conf_caller) + + # Handle NaN values in the weights when conf=0 (0.5 SV prediction from both models), equal weight (0.5) for both models + weights_region = np.nan_to_num(weights_region, nan=0.5) + weights_caller = np.nan_to_num(weights_caller, nan=0.5) + + # Combine the scores from the two models using the weights. + P_final = (weights_region * y_region + weights_caller * y_caller) + + # Second approach: Model performance-based weights. + # auc_region = 0.85 # Performance of Model 1 + # auc_caller = 0.75 # Performance of Model 2 + + # w1 = auc_region / (auc_region + auc_caller) + # w2 = auc_caller / (auc_region + auc_caller) + + # P_final = w1 * y_region + w2 * y_caller + + # Plot a histogram of the scores. + logging.info('Plotting the distribution of scores.') + plt.hist(scores) + plt.xlabel('Score') + plt.ylabel('Frequency') + plt.title('Distribution of Scores') + + # Save the plot as a PNG file. + output_png = "scores.png" + plt.tight_layout() + plt.savefig(output_png) + logging.info('Saved the plot as %s.', output_png) + + +if __name__ == '__main__': + # Get the command line arguments. + if len(sys.argv) != 4: + logging.error('Usage: python score_vcf.py \n') + sys.exit(1) + + # Get the model path and VCF file path. + model_path = sys.argv[1] + vcf_filepath = sys.argv[2] + output_vcf = sys.argv[3] + + # Run the program. + score(model_path, vcf_filepath, output_vcf) + logging.info('done.') diff --git a/contextscore/train_caller_model.py b/contextscore/train_caller_model.py new file mode 100644 index 0000000..20a50cb --- /dev/null +++ b/contextscore/train_caller_model.py @@ -0,0 +1,178 @@ +""" +train_model.py - Train the binary classification model. + +This script trains the binary classification model using the true positive and +false positive data. The true positive data is obtained from a benchmarking +dataset. The false positive data is obtained from running the caller on data +that is known to be negative for SVs. This data can be obtained by running the +caller on a normal sample with known SVs accounted for in the reference genome. + +For example for HG002, the true positive data is obtained from the Genome in a +Bottle benchmarking dataset, and the false positive data is obtained from +running the caller on the HG002 normal sample and extracting the SV calls that +are not in the benchmarking dataset. This can be repeated for other samples such +as HG001 and HG005 as long as the known SVs are accounted for. + +In the HG002 SV v0.6 dataset, there are low-confidence regions which +are excluded from the true positive data. Thus, we must include true SVs from +other publicly available normal samples with information from complex regions, +such as those aligned to CHM13. + +The model is trained using logistic regression. The features are the LRR and +BAF values. The labels are 1 for true positives and 0 for false positives. + +The model is saved to the output directory as a pickle file. + +Usage: + python train_model.py + + + true_positives_filepath: Path to the VCF of true positive SV calls obtained + from a benchmarking dataset. + false_positives_filepath: Path to the VCF of false positive SV calls + obtained from running the caller on data that is known to be negative + for SVs. This data can be obtained by running the caller on a normal + sample with known SVs accounted for in the reference genome. + + output_directory: Path to the output directory. + +Output: + model.pkl: The binary classification model. + +Example: + python train_model.py data/sv_scoring_dataset/true_positives.vcf + sv_scoring_dataset/false_positives.vcf data/sv_scoring_dataset/model +""" + +import os +import sys +import logging +import numpy as np +import joblib +import pandas as pd +from sklearn.linear_model import LogisticRegression +import matplotlib.pyplot as plt + +from extract_features import extract_features + +# Set up the logger. +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + + +def train(true_positives_filepath, false_positives_filepath): + """Train the binary classification model.""" + + # Extract the features from the VCF files. + logging.info('Extracting features from the true positive VCF file.') + tp_data = extract_features(true_positives_filepath) + + # Check if any features are missing. + if tp_data.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = tp_data[tp_data.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + logging.info('Extracting features from the false positive VCF file.') + fp_data = extract_features(false_positives_filepath) + + # Check if any features are missing. + if fp_data.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = fp_data[fp_data.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Add the labels. + tp_data['label'] = 1 + fp_data['label'] = 0 + + # Print the number of true positives and false positives. + logging.info('Number of true labels: %d', tp_data.shape[0]) + logging.info('Number of false labels: %d', fp_data.shape[0]) + + # Combine the true positive and false positive data. + data = pd.concat([tp_data, fp_data]) + + # Get the features and labels. + features = data[["chrom", "start", "sv_length", "sv_type", "read_depth", "hmm_llh"]] + labels = data["label"] + + # Check if any features are missing. + if features.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = features[features.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Check if any labels are missing. + if labels.isnull().values.any(): + logging.error('Labels are missing.') + sys.exit(1) + + # Train the model. + model = LogisticRegression() + model.fit(features, labels) + + # Return the model. + return model + +# Run the program. +def run(true_positives_filepath, false_positives_filepath, output_directory): + """Run the program.""" + # Train the model. + model = train(true_positives_filepath, false_positives_filepath) + + # Create the output directory if it does not exist. + if not os.path.exists(output_directory): + os.makedirs(output_directory) + + # Save the model + model_path = os.path.join(output_directory, "model.pkl") + joblib.dump(model, model_path) + + # Print the model. + print(model) + + # Return the model. + # return model + + +if __name__ == '__main__': + # Get the command line arguments. + # if len(sys.argv) != 4: + # logging.error('Usage: python train_model.py \n') + # sys.exit(1) + + # # Input VCF of true positive SV calls obtained from a benchmarking dataset. + # tp_filepath = sys.argv[1] + + # # Input VCF of false positive SV calls obtained from running the caller on + # # data that is known to be negative for SVs. This data can be obtained by + # # running the caller on a normal sample with known SVs accounted for in the + # # reference genome. + # fp_filepath = sys.argv[2] + # output_dir = sys.argv[3] + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('--tpvcf', type=str, required=True, help='Path to the VCF of true positive SV calls obtained from a benchmarking dataset.') + parser.add_argument('--fpvcf', type=str, required=True, help='Path to the VCF of false positive SV calls obtained from running the caller on data that is known to be negative for SVs.') + parser.add_argument('--outdir', type=str, required=True, help='Path to the output directory.') + args = parser.parse_args() + + # Run the program. + logging.info('Training the model...') + run(args.tpvcf, args.fpvcf, args.outdir) + logging.info('done.') diff --git a/contextscore/train_model.py b/contextscore/train_region_anno_model.py similarity index 70% rename from contextscore/train_model.py rename to contextscore/train_region_anno_model.py index c206efb..e36bb9b 100644 --- a/contextscore/train_model.py +++ b/contextscore/train_region_anno_model.py @@ -112,113 +112,6 @@ def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): return is_telomere, is_centromere -def train(tp_files, fp_files): - """Train the binary classification model.""" - - # Extract the features from the VCF files. - logging.info('Extracting features from the true positive VCF file.') - - # Set up the dataframe with all the features. - feature_cols=[ - "label", - "chrom", - "start", - "sv_length", - "sv_type", - "cluster_size", - "hmm_llh", - "segdup", - "repeatregions", - "telomere", - "centromere", - "fragile_site", - "conserved_region" - ] - - tp_data = pd.DataFrame(columns=feature_cols) - for tp_file in tp_files: - # Extract the features from the true positive VCF file. - tp_data = pd.concat([tp_data, extract_features(tp_file)], ignore_index=True) - logging.info('Extracted features from %s', tp_file) - - # Check if the true positive data is empty. - if tp_data.empty: - logging.error('True positive data is empty.') - sys.exit(1) - - for fp_file in fp_files: - logging.info('Extracting features from the false positive VCF file.') - # Extract the features from the false positive VCF file. - fp_data = extract_features(fp_file) - logging.info('Extracted features from %s', fp_file) - - # Check if the false positive data is empty. - if fp_data.empty: - logging.error('False positive data is empty.') - sys.exit(1) - - # Check if any features are missing. - if tp_data.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = tp_data[tp_data.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - logging.info('Extracting features from the false positive VCF file.') - fp_data = extract_features(false_positives_filepath) - - # Check if any features are missing. - if fp_data.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = fp_data[fp_data.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - # Add the labels. - tp_data['label'] = 1 - fp_data['label'] = 0 - - # Print the number of true positives and false positives. - logging.info('Number of true labels: %d', tp_data.shape[0]) - logging.info('Number of false labels: %d', fp_data.shape[0]) - - # Combine the true positive and false positive data. - data = pd.concat([tp_data, fp_data]) - - # Get the features and labels. - features = data[["chrom", "start", "sv_length", "sv_type", "read_support", "clipped_bases"]] - labels = data["label"] - - # Check if any features are missing. - if features.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = features[features.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - # Check if any labels are missing. - if labels.isnull().values.any(): - logging.error('Labels are missing.') - sys.exit(1) - - # Train the model. - model = LogisticRegression() - model.fit(features, labels) - - # Return the model. - return model def bed_to_annovar_input(bed_file): """Convert the BED file to ANNOVAR input format.""" @@ -318,9 +211,6 @@ def annotate_bed(input_bed, table_bed): table_bed = pybedtools.BedTool(table_bed) table_count = table_bed.count() - # logging.info('Input BED file:\n%s', input_bed) - # logging.info('Table BED file:\n%s', table_bed) - # Perform the annotation using bedtools intersect. logging.info('Annotating the BED file using bedtools intersect.') annotated_bed = input_bed.intersect(table_bed, wa=True, wb=True) @@ -337,12 +227,6 @@ def annotate_bed(input_bed, table_bed): logging.info('Number of rows in the annotated BED dataframe: %d', anno_count) logging.info("Annotated " + str(anno_count) + " rows from the input BED file with " + str(table_count) + " rows from the table BED file (Percentage: %.2f%%)" % ((anno_count / input_count) * 100)) - # Save the annotated dataframe to a new file. - # output_file = "Test_annotated.bed" # You can change this to your desired output file name. - # logging.info('Saving the annotated BED dataframe to %s', output_file) - # df.to_csv(output_file, sep='\t', index=False, header=True) - # logging.info('Saved the annotated BED dataframe to %s', output_file) - return df def add_annotations(df, annotation_file): @@ -355,59 +239,91 @@ def add_annotations(df, annotation_file): def add_telomere_centromere_segdup(input_df, anno_df, cytoband_dict): - """Add telomere, centromere, and segmental duplication annotations to the input dataframe.""" - for index, row in input_df.iterrows(): - chrom = row['chrom'] - start = row['start'] - end = row['end'] - - # Get all corresponding rows with the same chromosome and start/end positions. - matching_rows = anno_df[(anno_df['Chr'] == chrom) & (anno_df['Start'] == start) & (anno_df['End'] == end)] - if matching_rows.empty: - logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - continue # Skip if no matching annotation is found. - - # Check if any rows have the annotation for segmental duplication. - segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. - if segdup: - # Get the value after Score= - max_score = 0 - score_found = False - for score in matching_rows['genomicSuperDups']: - if score == '.': - continue - - # Check if the score starts with 'Score='. - elif score.startswith('Score='): - score_found = True - try: - score_value = score.split('Score=')[1] - if ';' in score_value: - score_value = score_value.split(';')[0] - score_value = float(score_value) # Convert to float. - - # Keep track of the maximum score found. - if score_value > max_score: - max_score = score_value - - except (IndexError, ValueError): - logging.warning('Could not parse Score from: %s', score) - - if score_found: - input_df.at[index, 'segdup'] = max_score - - # Check if the region is a telomere or centromere. - cytoband = matching_rows['cytoBand'].dropna().unique() - if cytoband.size > 0: - # Get the first cytoband annotation (if multiple are present). - cytoband = cytoband[0] # Take the first one if there are multiple. + """Add telomere, centromere, and segmental duplication annotations to the + input dataframe.""" + + # Merge the input dataframe with the annotation dataframe + logging.info('Merging the input dataframe with the annotation dataframe.') + merged_df = input_df.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') + logging.info('Merged dataframe:\n%s', merged_df.head()) + + # Extract segmental duplication scores + def extract_max_score(score_series): + """Extract and return the maximum Score= value from a series.""" + scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) + return scores.max() if not scores.empty else np.nan + + # Get the maximum score for segmental duplications. + merged_df['segdup'] = extract_max_score(merged_df['genomicSuperDups']) + + # Determine centromere and telomere regions using vectorized operations. + def get_cyto_info(row): + """Get telomere and centromere information for a row.""" + if pd.notna(row['cytoBand']): + return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) + return (np.nan, np.nan) + + merged_df[['telomere', 'centromere']] = merged_df.apply(get_cyto_info, axis=1, result_type='expand') + + # Select only necessary columns for the final output. + final_cols = list(input_df.columns) + ['segdup', 'telomere', 'centromere'] + final_df = merged_df[final_cols] + logging.info('Final dataframe:\n%s', final_df.head()) + + return final_df + + # for index, row in input_df.iterrows(): + # chrom = row['chrom'] + # start = row['start'] + # end = row['end'] + + # # Get all corresponding rows with the same chromosome and start/end positions. + # matching_rows = anno_df[(anno_df['Chr'] == chrom) & (anno_df['Start'] == start) & (anno_df['End'] == end)] + # if matching_rows.empty: + # logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) + # continue # Skip if no matching annotation is found. + + # # Check if any rows have the annotation for segmental duplication. + # segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. + # if segdup: + # # Get the value after Score= + # max_score = 0 + # score_found = False + # for score in matching_rows['genomicSuperDups']: + # if score == '.': + # continue + + # # Check if the score starts with 'Score='. + # elif score.startswith('Score='): + # score_found = True + # try: + # score_value = score.split('Score=')[1] + # if ';' in score_value: + # score_value = score_value.split(';')[0] + # score_value = float(score_value) # Convert to float. + + # # Keep track of the maximum score found. + # if score_value > max_score: + # max_score = score_value + + # except (IndexError, ValueError): + # logging.warning('Could not parse Score from: %s', score) + + # if score_found: + # input_df.at[index, 'segdup'] = max_score + + # # Check if the region is a telomere or centromere. + # cytoband = matching_rows['cytoBand'].dropna().unique() + # if cytoband.size > 0: + # # Get the first cytoband annotation (if multiple are present). + # cytoband = cytoband[0] # Take the first one if there are multiple. - # Check if the cytoband is a telomere or centromere. - is_telomere, is_centromere = get_cytoband_is_c_t(cytoband_dict, chrom, cytoband) + # # Check if the cytoband is a telomere or centromere. + # is_telomere, is_centromere = get_cytoband_is_c_t(cytoband_dict, chrom, cytoband) - # Update the telomere and centromere columns. - input_df.at[index, 'telomere'] = is_telomere - input_df.at[index, 'centromere'] = is_centromere + # # Update the telomere and centromere columns. + # input_df.at[index, 'telomere'] = is_telomere + # input_df.at[index, 'centromere'] = is_centromere # Run the program. @@ -453,7 +369,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # --------------------------------------- # Annotate conserved regions using a UCSC Table Browser BED file for # phastCons100way - # phastCons_bed = "phastCons100wayHG38_fixed.bed" phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) @@ -466,7 +381,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # --------------------------------------- # Annotate simple repeats using a UCSC Table Browser BED file for # simpleRepeat - # simpleRepeat_bed = "simpleRepeatsHG38_fixed.bed" simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) @@ -569,10 +483,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path fp_df['simple_repeat'] = False logging.info('Adding telomere, centromere, and segmental duplication annotations to true positives.') - add_telomere_centromere_segdup(tp_df, tp_anno_df, cytoband_dict) + tp_df = add_telomere_centromere_segdup(tp_df, tp_anno_df, cytoband_dict) logging.info('Adding telomere, centromere, and segmental duplication annotations to false positives.') - add_telomere_centromere_segdup(fp_df, fp_anno_df, cytoband_dict) + fp_df = add_telomere_centromere_segdup(fp_df, fp_anno_df, cytoband_dict) # Add the fragile site and conserved region annotations logging.info('Adding fragile site annotations to true positives.') @@ -584,11 +498,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path fp_df['fragile_site'] = fp_df.merge(fp_fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() logging.info('Updated df:\n%s', fp_df.head()) - # Save the fragile site df to a file. - # tp_fragile_output = 'fragile_sites.tsv' - # logging.info('Saving the fragile site dataframe to %s', tp_fragile_output) - # tp_fragile_sites_df.to_csv(tp_fragile_output, sep='\t', index=False, header=True) - # Add the conserved region annotations. logging.info('Adding conserved region annotations to true positives.') tp_df['conserved_region'] = tp_df.merge(tp_cons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() @@ -603,6 +512,16 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Adding simple repeat annotations to false positives.') fp_df['simple_repeat'] = fp_df.merge(fp_sr_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + # Check if the annotations were added correctly. + logging.info('True positive dataframe after adding annotations:\n%s', tp_df.head()) + logging.info('TP fragile sites: %d', tp_df['fragile_site'].sum()) + logging.info('TP telomeres: %d', tp_df['telomere'].sum()) + logging.info('TP centromeres: %d', tp_df['centromere'].sum()) + logging.info('TP segmental duplications: %d', tp_df['segdup'].sum()) + logging.info('TP conserved regions: %d', tp_df['conserved_region'].sum()) + logging.info('TP simple repeats: %d', tp_df['simple_repeat'].sum()) + + # Print a tab-delimited table with the number of rows in each category. logging.info('True positives:') logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions') @@ -614,7 +533,7 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Save the same table to a file. annot_summary = 'TrainingAnnotationsSummary.tsv' - logging.info('Saving the true positive summary to %s', tp_output) + logging.info('Saving the true positive summary to %s', annot_summary) with open(annot_summary, 'w') as f: f.write('True Positives\n') f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\n') @@ -625,133 +544,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path f.write('%d\t%d\t%d\t%d\t%d\t%d\n' % (fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum())) logging.info('Saved the summary to %s', annot_summary) - # for index, row in tp_df.iterrows(): - # chrom = row['chrom'] - # start = row['start'] - # end = row['end'] - - # # Get all corresponding rows with the same chromosome and start/end positions. - # matching_rows = tp_anno_df[(tp_anno_df['Chr'] == chrom) & (tp_anno_df['Start'] == start) & (tp_anno_df['End'] == end)] - # if matching_rows.empty: - # logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - # continue # Skip if no matching annotation is found. - - # # Check if any rows have the annotation for segmental duplication. - # segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. - # if segdup: - # # Get the value after Score= - # max_score = 0 - # score_found = False - # for score in matching_rows['genomicSuperDups']: - # if score == '.': - # continue - - # # Check if the score starts with 'Score='. - # elif score.startswith('Score='): - # score_found = True - # try: - # score_value = score.split('Score=')[1] - # if ';' in score_value: - # score_value = score_value.split(';')[0] - # score_value = float(score_value) # Convert to float. - - # # Keep track of the maximum score found. - # if score_value > max_score: - # max_score = score_value - - # except (IndexError, ValueError): - # logging.warning('Could not parse Score from: %s', score) - - # if score_found: - # tp_df.at[index, 'segdup'] = max_score - - # # Check if the region is a telomere or centromere. - # cytoband = matching_rows['cytoBand'].dropna().unique() - # if cytoband.size > 0: - # # Get the first cytoband annotation (if multiple are present). - # cytoband = cytoband[0] # Take the first one if there are multiple. - - # # Check if the cytoband is a telomere or centromere. - # is_telomere, is_centromere = get_cytoband_is_c_t(chrom_dict, chrom, cytoband) - - # # Update the telomere and centromere columns. - # tp_df.at[index, 'telomere'] = is_telomere - # tp_df.at[index, 'centromere'] = is_centromere - return - - # Add columns for the segmental duplication, telomere, centromere, fragile site, - # and conserved region annotations. - - - - # BELOW IS A WIP - # ------------------------------- - - # logging.info('Output directory: %s', output_directory) - # logging.info('ANNOVAR path: %s', annovar_path) - # logging.info('ANNOVAR database path: %s', db_path) - - # # Check if the output directory exists. - # if not os.path.exists(output_directory): - # logging.info('Creating the output directory.') - # os.makedirs(output_directory) - - # model = train(tp_files, fp_files) - - logging.info('All complete!') - - # logging.info('Training the model.') - # # Train the model using the true positive and false positive VCF files. - # model = train(true_positives_files, false_positives_files) - # logging.info('Model trained successfully.') - # # Save the model to the output directory. - # model_path = os.path.join(output_directory, "model.pkl") - # logging.info('Saving the model to %s', model_path) - # joblib.dump(model, model_path) - # logging.info('Model saved successfully.') - - # # Print the model. - # logging.info('Model: %s', model) - - # # Print the model coefficients. - # logging.info('Model coefficients: %s', model.coef_) - - # # Print the model intercept. - # logging.info('Model intercept: %s', model.intercept_) - - # # Print the model score. - # logging.info('Model score: %s', model.score(features, labels)) - - # # Print the model accuracy. - # logging.info('Model accuracy: %s', model.score(features, labels)) - - # # Print the model precision. - # logging.info('Model precision: %s', model.score(features, labels)) - - # # Print the model recall. - # logging.info('Model recall: %s', model.score(features, labels)) - - # # Print the model F1 score. - # logging.info('Model F1 score: %s', model.score(features, labels)) - - # Check if the output directory is empty. - # Train the model. - # model = train(true_positives_filepath, false_positives_filepath) - - # # Create the output directory if it does not exist. - # if not os.path.exists(output_directory): - # os.makedirs(output_directory) - - # # Save the model - # model_path = os.path.join(output_directory, "model.pkl") - # joblib.dump(model, model_path) - - # # Print the model. - # print(model) - - # Return the model. - # return model - if __name__ == '__main__': import argparse @@ -766,25 +558,9 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Add flag for whether to train the genomic context model. If not specified, # the default is False (train the model using SV caller features). parser.add_argument("--train_genomic_context", action="store_true", help="Train the genomic context model", default=False) - args = parser.parse_args() - # Get the command line arguments. - # if len(sys.argv) != 4: - # logging.error('Usage: python train_model.py \n') - # sys.exit(1) - - # # Input VCF of true positive SV calls obtained from a benchmarking dataset. - # tp_filepath = sys.argv[1] - - # # Input VCF of false positive SV calls obtained from running the caller on - # # data that is known to be negative for SVs. This data can be obtained by - # # running the caller on a normal sample with known SVs accounted for in the - # # reference genome. - # fp_filepath = sys.argv[2] - # output_dir = sys.argv[3] # Run the program. logging.info('Training the model...') run(args.tpbed, args.fpbed, args.outdir, args.outdiranno, args.annovar, args.annovar_db) - # run(tp_filepath, fp_filepath, output_dir) logging.info('done.') From 4ee6b81e319184eea42812fe10ec5bf36a78d4ea Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 1 Apr 2025 16:33:40 -0400 Subject: [PATCH 12/93] fix annotations --- contextscore/train_region_anno_model.py | 181 ++++++++++++------------ 1 file changed, 92 insertions(+), 89 deletions(-) diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py index e36bb9b..221f52b 100644 --- a/contextscore/train_region_anno_model.py +++ b/contextscore/train_region_anno_model.py @@ -50,7 +50,8 @@ import logging import numpy as np import joblib -import pybedtools # For annotating BED files. +from io import StringIO +# import pybedtools # For annotating BED files. import pandas as pd from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt @@ -200,34 +201,85 @@ def annotate(annovar_input, annovar_path, db_path, output_dir): logging.info('Completed annotations.') -def annotate_bed(input_bed, table_bed): - """Annotate a BED file using bedtools.""" - logging.info('Input BED file: %s', input_bed) - logging.info('Table BED file: %s', table_bed) +def run_bedtools_intersect(input_bed, table_bed): + """Run bedtools intersect to annotate the BED file.""" + # Check if bedtools is installed. + try: + subprocess.run(["bedtools", "--version"], check=True) + except subprocess.CalledProcessError: + logging.error('bedtools is not installed. Please install bedtools.') + sys.exit(1) + + # Check if the input BED file exists. + if not os.path.exists(input_bed): + logging.error('Input BED file does not exist: %s', input_bed) + sys.exit(1) + + # Check if the table BED file exists. + if not os.path.exists(table_bed): + logging.error('Table BED file does not exist: %s', table_bed) + sys.exit(1) + + # Run bedtools intersect to annotate the BED file. + cmd = [ + "bedtools", "intersect", + "-a", input_bed, + "-b", table_bed, + "-wa", "-wb" + ] + logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) + try: + result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) + + # Parse the output of bedtools intersect into a pandas DataFrame. + logging.info('Parsing the output of bedtools intersect.') + annotated_bed = pd.read_csv( + StringIO(result.stdout), + sep='\t', + header=None, + names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], + usecols=[0, 1, 2, 3, 4, 5, 6] + ) - input_bed = pybedtools.BedTool(input_bed) - input_count = input_bed.count() + # Print the first few rows of the annotated BED file. + logging.info('Annotated BED file:\n%s', annotated_bed.head()) - table_bed = pybedtools.BedTool(table_bed) - table_count = table_bed.count() + return annotated_bed - # Perform the annotation using bedtools intersect. - logging.info('Annotating the BED file using bedtools intersect.') - annotated_bed = input_bed.intersect(table_bed, wa=True, wb=True) - df = annotated_bed.to_dataframe( - names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], - usecols=[0, 1, 2, 3, 4, 5, 6], # Only keep the relevant columns. - ) + except subprocess.CalledProcessError as e: + logging.error('Error annotating the BED file: %s', e) + logging.error('Please check the input and table BED files.') + sys.exit(1) + + +# def run_bedtools_intersect(input_bed, table_bed): +# """Annotate a BED file using bedtools.""" +# logging.info('Input BED file: %s', input_bed) +# logging.info('Table BED file: %s', table_bed) + +# input_bed = pybedtools.BedTool(input_bed) +# input_count = input_bed.count() + +# table_bed = pybedtools.BedTool(table_bed) +# table_count = table_bed.count() + +# # Perform the annotation using bedtools intersect. +# logging.info('Annotating the BED file using bedtools intersect.') +# annotated_bed = input_bed.intersect(table_bed, wa=True, wb=True) +# df = annotated_bed.to_dataframe( +# names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], +# usecols=[0, 1, 2, 3, 4, 5, 6], # Only keep the relevant columns. +# ) - # Print first 5 rows of the annotated dataframe. - logging.info('Annotated BED dataframe:\n%s', df.head()) - anno_count = df.shape[0] - logging.info('Number of rows in the input BED file: %d', input_count) - logging.info('Number of rows in the table BED file: %d', table_count) - logging.info('Number of rows in the annotated BED dataframe: %d', anno_count) - logging.info("Annotated " + str(anno_count) + " rows from the input BED file with " + str(table_count) + " rows from the table BED file (Percentage: %.2f%%)" % ((anno_count / input_count) * 100)) +# # Print first 5 rows of the annotated dataframe. +# logging.info('Annotated BED dataframe:\n%s', df.head()) +# anno_count = df.shape[0] +# logging.info('Number of rows in the input BED file: %d', input_count) +# logging.info('Number of rows in the table BED file: %d', table_count) +# logging.info('Number of rows in the annotated BED dataframe: %d', anno_count) +# logging.info("Annotated " + str(anno_count) + " rows from the input BED file with " + str(table_count) + " rows from the table BED file (Percentage: %.2f%%)" % ((anno_count / input_count) * 100)) - return df +# return df def add_annotations(df, annotation_file): """Add annotations to the dataframe from the ANNOVAR output file.""" @@ -272,59 +324,6 @@ def get_cyto_info(row): return final_df - # for index, row in input_df.iterrows(): - # chrom = row['chrom'] - # start = row['start'] - # end = row['end'] - - # # Get all corresponding rows with the same chromosome and start/end positions. - # matching_rows = anno_df[(anno_df['Chr'] == chrom) & (anno_df['Start'] == start) & (anno_df['End'] == end)] - # if matching_rows.empty: - # logging.warning('No matching annotation found for index %d: Chromosome: %s, Start: %d, End: %d', index, chrom, start, end) - # continue # Skip if no matching annotation is found. - - # # Check if any rows have the annotation for segmental duplication. - # segdup = matching_rows['genomicSuperDups'].dropna().any() # Check if any value is not NaN. - # if segdup: - # # Get the value after Score= - # max_score = 0 - # score_found = False - # for score in matching_rows['genomicSuperDups']: - # if score == '.': - # continue - - # # Check if the score starts with 'Score='. - # elif score.startswith('Score='): - # score_found = True - # try: - # score_value = score.split('Score=')[1] - # if ';' in score_value: - # score_value = score_value.split(';')[0] - # score_value = float(score_value) # Convert to float. - - # # Keep track of the maximum score found. - # if score_value > max_score: - # max_score = score_value - - # except (IndexError, ValueError): - # logging.warning('Could not parse Score from: %s', score) - - # if score_found: - # input_df.at[index, 'segdup'] = max_score - - # # Check if the region is a telomere or centromere. - # cytoband = matching_rows['cytoBand'].dropna().unique() - # if cytoband.size > 0: - # # Get the first cytoband annotation (if multiple are present). - # cytoband = cytoband[0] # Take the first one if there are multiple. - - # # Check if the cytoband is a telomere or centromere. - # is_telomere, is_centromere = get_cytoband_is_c_t(cytoband_dict, chrom, cytoband) - - # # Update the telomere and centromere columns. - # input_df.at[index, 'telomere'] = is_telomere - # input_df.at[index, 'centromere'] = is_centromere - # Run the program. def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): @@ -361,10 +360,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) logging.info('Annotating fragile sites in true positives.') - tp_fragile_sites_df = annotate_bed(tp_bed, fragile_sites_bed) + tp_fragile_sites_df = run_bedtools_intersect(tp_bed, fragile_sites_bed) logging.info('Annotating fragile sites in false positives.') - fp_fragile_sites_df = annotate_bed(fp_bed, fragile_sites_bed) + fp_fragile_sites_df = run_bedtools_intersect(fp_bed, fragile_sites_bed) # --------------------------------------- # Annotate conserved regions using a UCSC Table Browser BED file for @@ -373,10 +372,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) logging.info('Annotating conserved regions in true positives.') - tp_cons_df = annotate_bed(tp_bed, phastCons_bed) + tp_cons_df = run_bedtools_intersect(tp_bed, phastCons_bed) logging.info('Annotating conserved regions in false positives.') - fp_cons_df = annotate_bed(fp_bed, phastCons_bed) + fp_cons_df = run_bedtools_intersect(fp_bed, phastCons_bed) # --------------------------------------- # Annotate simple repeats using a UCSC Table Browser BED file for @@ -385,10 +384,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) logging.info('Annotating simple repeats in true positives.') - tp_sr_df = annotate_bed(tp_bed, simpleRepeat_bed) + tp_sr_df = run_bedtools_intersect(tp_bed, simpleRepeat_bed) logging.info('Annotating simple repeats in false positives.') - fp_sr_df = annotate_bed(fp_bed, simpleRepeat_bed) + fp_sr_df = run_bedtools_intersect(fp_bed, simpleRepeat_bed) # --------------------------------------- # Region-based annotation using ANNOVAR databases. @@ -467,17 +466,17 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Add the labels to the dataframes. tp_df['label'] = 1 - tp_df['telomere'] = False - tp_df['centromere'] = False - tp_df['segdup'] = False + # tp_df['telomere'] = False + # tp_df['centromere'] = False + # tp_df['segdup'] = False tp_df['fragile_site'] = False tp_df['conserved_region'] = False tp_df['simple_repeat'] = False fp_df['label'] = 0 - fp_df['telomere'] = False - fp_df['centromere'] = False - fp_df['segdup'] = False + # fp_df['telomere'] = False + # fp_df['centromere'] = False + # fp_df['segdup'] = False fp_df['fragile_site'] = False fp_df['conserved_region'] = False fp_df['simple_repeat'] = False @@ -515,6 +514,10 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Check if the annotations were added correctly. logging.info('True positive dataframe after adding annotations:\n%s', tp_df.head()) logging.info('TP fragile sites: %d', tp_df['fragile_site'].sum()) + + # Print the first 10 telomeres values + logging.info('[TEST] TP telomeres:\n%s', tp_df['telomere'].head(10)) + logging.info('TP telomeres: %d', tp_df['telomere'].sum()) logging.info('TP centromeres: %d', tp_df['centromere'].sum()) logging.info('TP segmental duplications: %d', tp_df['segdup'].sum()) From 4bb1f54b3f39a10e82e5a84361fe2b7c30355ca2 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 1 Apr 2025 16:46:27 -0400 Subject: [PATCH 13/93] remove test code --- contextscore/train_region_anno_model.py | 47 +------------------------ 1 file changed, 1 insertion(+), 46 deletions(-) diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py index 221f52b..e1b11f0 100644 --- a/contextscore/train_region_anno_model.py +++ b/contextscore/train_region_anno_model.py @@ -252,35 +252,6 @@ def run_bedtools_intersect(input_bed, table_bed): sys.exit(1) -# def run_bedtools_intersect(input_bed, table_bed): -# """Annotate a BED file using bedtools.""" -# logging.info('Input BED file: %s', input_bed) -# logging.info('Table BED file: %s', table_bed) - -# input_bed = pybedtools.BedTool(input_bed) -# input_count = input_bed.count() - -# table_bed = pybedtools.BedTool(table_bed) -# table_count = table_bed.count() - -# # Perform the annotation using bedtools intersect. -# logging.info('Annotating the BED file using bedtools intersect.') -# annotated_bed = input_bed.intersect(table_bed, wa=True, wb=True) -# df = annotated_bed.to_dataframe( -# names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], -# usecols=[0, 1, 2, 3, 4, 5, 6], # Only keep the relevant columns. -# ) - -# # Print first 5 rows of the annotated dataframe. -# logging.info('Annotated BED dataframe:\n%s', df.head()) -# anno_count = df.shape[0] -# logging.info('Number of rows in the input BED file: %d', input_count) -# logging.info('Number of rows in the table BED file: %d', table_count) -# logging.info('Number of rows in the annotated BED dataframe: %d', anno_count) -# logging.info("Annotated " + str(anno_count) + " rows from the input BED file with " + str(table_count) + " rows from the table BED file (Percentage: %.2f%%)" % ((anno_count / input_count) * 100)) - -# return df - def add_annotations(df, annotation_file): """Add annotations to the dataframe from the ANNOVAR output file.""" logging.info('Adding annotations from: %s', annotation_file) @@ -466,17 +437,11 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path # Add the labels to the dataframes. tp_df['label'] = 1 - # tp_df['telomere'] = False - # tp_df['centromere'] = False - # tp_df['segdup'] = False tp_df['fragile_site'] = False tp_df['conserved_region'] = False tp_df['simple_repeat'] = False fp_df['label'] = 0 - # fp_df['telomere'] = False - # fp_df['centromere'] = False - # fp_df['segdup'] = False fp_df['fragile_site'] = False fp_df['conserved_region'] = False fp_df['simple_repeat'] = False @@ -515,16 +480,6 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('True positive dataframe after adding annotations:\n%s', tp_df.head()) logging.info('TP fragile sites: %d', tp_df['fragile_site'].sum()) - # Print the first 10 telomeres values - logging.info('[TEST] TP telomeres:\n%s', tp_df['telomere'].head(10)) - - logging.info('TP telomeres: %d', tp_df['telomere'].sum()) - logging.info('TP centromeres: %d', tp_df['centromere'].sum()) - logging.info('TP segmental duplications: %d', tp_df['segdup'].sum()) - logging.info('TP conserved regions: %d', tp_df['conserved_region'].sum()) - logging.info('TP simple repeats: %d', tp_df['simple_repeat'].sum()) - - # Print a tab-delimited table with the number of rows in each category. logging.info('True positives:') logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions') @@ -535,7 +490,7 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('%d\t%d\t%d\t%d\t%d\t%d', fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum()) # Save the same table to a file. - annot_summary = 'TrainingAnnotationsSummary.tsv' + annot_summary = 'linktoscripts/TrainingAnnotationsSummary.tsv' logging.info('Saving the true positive summary to %s', annot_summary) with open(annot_summary, 'w') as f: f.write('True Positives\n') From e4e472837fa2bea6bee4f75a3b312f1f21924e84 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Wed, 2 Apr 2025 15:09:57 -0400 Subject: [PATCH 14/93] model training --- contextscore/train_caller_model.py | 4 + contextscore/train_region_anno_model.py | 108 +++++++++++++++++++++++- 2 files changed, 111 insertions(+), 1 deletion(-) diff --git a/contextscore/train_caller_model.py b/contextscore/train_caller_model.py index 20a50cb..3f806cb 100644 --- a/contextscore/train_caller_model.py +++ b/contextscore/train_caller_model.py @@ -53,6 +53,10 @@ from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt +from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report +import matplotlib.pyplot as plt +import seaborn as sns + from extract_features import extract_features # Set up the logger. diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py index e1b11f0..1debf7b 100644 --- a/contextscore/train_region_anno_model.py +++ b/contextscore/train_region_anno_model.py @@ -56,6 +56,10 @@ from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt +from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report +import matplotlib.pyplot as plt +import seaborn as sns + from extract_features import extract_features # Set up the logger. @@ -490,7 +494,7 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('%d\t%d\t%d\t%d\t%d\t%d', fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum()) # Save the same table to a file. - annot_summary = 'linktoscripts/TrainingAnnotationsSummary.tsv' + annot_summary = os.path.join(output_directory, 'annotation_summary.txt') logging.info('Saving the true positive summary to %s', annot_summary) with open(annot_summary, 'w') as f: f.write('True Positives\n') @@ -503,6 +507,108 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Saved the summary to %s', annot_summary) + # Combine the true positive and false positive data. + logging.info('Combining the true positive and false positive data.') + data = pd.concat([tp_df, fp_df]) + logging.info('Combined dataframe:\n%s', data.head()) + + # Create a dictionary to map the chromosome names to integer values. + logging.info('Creating a dictionary to map the chromosome names to integer values.') + chrom_dict = {chrom: i for i, chrom in enumerate(data['chrom'].unique())} + # Map the chromosome names to integer values. + data['chrom'] = data['chrom'].map(chrom_dict) + logging.info('Mapped chromosome names to integer values:\n%s', data.head()) + + # Save this map to a file using joblib. + chrom_map_path = os.path.join(output_directory, 'chrom_map.pkl') + logging.info('Saving the chromosome map to %s', chrom_map_path) + joblib.dump(chrom_dict, chrom_map_path) + logging.info('Saved the chromosome map to %s', chrom_map_path) + + # Get the features and labels. + features = data[["chrom", "start", "end", "label", "fragile_site", "conserved_region", "simple_repeat", "telomere", "centromere", "segdup"]] + labels = data["label"] + + # Train the model. + logging.info('Training the model.') + model = LogisticRegression() + model.fit(features, labels) + + # Get predicted probabilities. + logging.info('Getting predicted probabilities.') + y_pred = model.predict(features) + y_prob = model.predict_proba(features)[:, 1] + + # Get the ROC curve. + fpr, tpr, thresholds = roc_curve(labels, y_prob) + roc_auc = auc(fpr, tpr) + + # Plot the ROC curve. + plt.figure() + plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('Receiver Operating Characteristic') + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, 'roc_curve.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + + # Get the precision-recall curve. + precision, recall, thresholds = precision_recall_curve(labels, y_prob) + pr_auc = auc(recall, precision) + + # Plot the precision-recall curve. + plt.figure() + plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) + plt.xlabel('Recall') + plt.ylabel('Precision') + plt.title('Precision-Recall Curve') + plt.legend(loc='lower left') + # Save the plot to the output directory. + pr_plot_path = os.path.join(output_directory, 'precision_recall_curve.png') + plt.savefig(pr_plot_path) + plt.close() + logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) + + # Get the confusion matrix. + cm = confusion_matrix(labels, y_pred) + logging.info('Confusion matrix:\n%s', cm) + + # Plot the confusion matrix using seaborn. + plt.figure() + sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + plt.xlabel('Predicted') + plt.ylabel('True') + plt.title('Confusion Matrix') + # Save the plot to the output directory. + cm_plot_path = os.path.join(output_directory, 'confusion_matrix.png') + plt.savefig(cm_plot_path) + plt.close() + logging.info('Saved the confusion matrix to %s', cm_plot_path) + + # Print the classification report. + logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + + # Save the report to a file. + report_path = os.path.join(output_directory, 'classification_report.txt') + with open(report_path, 'w') as f: + f.write(classification_report(labels, y_pred)) + + logging.info('Saved the classification report to %s', report_path) + + # Save the model. + model_path = os.path.join(output_directory, "anno_model.pkl") + logging.info('Saving the model to %s', model_path) + joblib.dump(model, model_path) + logging.info('Saved the model to %s', model_path) + + if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() From c3169da13484a2084754675edf2acbe144c6a9c0 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Wed, 2 Apr 2025 21:06:27 -0400 Subject: [PATCH 15/93] test multiple models --- contextscore/train_region_anno_model.py | 235 +++++++++++++++--------- 1 file changed, 144 insertions(+), 91 deletions(-) diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py index 1debf7b..dc62eaf 100644 --- a/contextscore/train_region_anno_model.py +++ b/contextscore/train_region_anno_model.py @@ -53,7 +53,12 @@ from io import StringIO # import pybedtools # For annotating BED files. import pandas as pd + from sklearn.linear_model import LogisticRegression +from sklearn.ensemble import RandomForestClassifier +from xgboost import XGBClassifier +from sklearn.svm import SVC + import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report @@ -70,6 +75,11 @@ def read_cytoband_file(cytoband_file): cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) chrom_dict = {} for chrom in cytobands['chrom'].unique(): + + # Skip chrM + if chrom == 'chrM': + continue + chrom_df = cytobands[cytobands['chrom'] == chrom] # First and last bands are the telomeres. # First telomere: @@ -314,13 +324,13 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Getting the true positive and false positive VCF files.') + logging.info('Converting the false positive BED file to ANNOVAR input format.') + false_positives_file = bed_to_annovar_input(fp_bed) + # Convert the BED files to ANNOVAR input format. logging.info('Converting the true positive BED file to ANNOVAR input format.') true_positives_file = bed_to_annovar_input(tp_bed) - logging.info('Converting the false positive BED file to ANNOVAR input format.') - false_positives_file = bed_to_annovar_input(fp_bed) - # HPRC tracks: # https://genome.ucsc.edu/cgi-bin/hgTracks?hgsid=2497626981_YO5LtOenyXcMHylL5pvsY90WzIkJ&c=chr6&hgTracksConfigPage=configure&hgtgroup_hprc_close=0#hprcGroup # Current error with hprc90way Multiple Alignment download from UCSC (https://genome.ucsc.edu/cgi-bin/hgTables): @@ -480,44 +490,64 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Adding simple repeat annotations to false positives.') fp_df['simple_repeat'] = fp_df.merge(fp_sr_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + # Drop NaN values from the dataframes. + logging.info('Dropping NaN values from the dataframes.') + tp_df.dropna(inplace=True) + fp_df.dropna(inplace=True) + + logging.info('Number of NaN values in the true positive dataframe: %d', tp_df.isna().sum().sum()) + logging.info('Number of NaN values in the false positive dataframe: %d', fp_df.isna().sum().sum()) + # Check if the annotations were added correctly. logging.info('True positive dataframe after adding annotations:\n%s', tp_df.head()) logging.info('TP fragile sites: %d', tp_df['fragile_site'].sum()) # Print a tab-delimited table with the number of rows in each category. logging.info('True positives:') - logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions') - logging.info('%d\t%d\t%d\t%d\t%d\t%d', tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum()) + logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats') + logging.info('%d\t%d\t%d\t%d\t%d\t%d\t%d', tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum(), tp_df['simple_repeat'].sum()) logging.info('False positives:') - logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions') - logging.info('%d\t%d\t%d\t%d\t%d\t%d', fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum()) + logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats') + logging.info('%d\t%d\t%d\t%d\t%d\t%d\t%d', fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum(), fp_df['simple_repeat'].sum()) # Save the same table to a file. annot_summary = os.path.join(output_directory, 'annotation_summary.txt') logging.info('Saving the true positive summary to %s', annot_summary) with open(annot_summary, 'w') as f: f.write('True Positives\n') - f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\n') - f.write('%d\t%d\t%d\t%d\t%d\t%d\n' % (tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum())) + f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats\n') + f.write('%d\t%d\t%d\t%d\t%d\t%d\t%d\n' % (tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum(), tp_df['simple_repeat'].sum())) f.write('\n') f.write('False Positives\n') - f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\n') - f.write('%d\t%d\t%d\t%d\t%d\t%d\n' % (fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum())) + f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats\n') + f.write('%d\t%d\t%d\t%d\t%d\t%d\t%d\n' % (fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum(), fp_df['simple_repeat'].sum())) logging.info('Saved the summary to %s', annot_summary) + # Balance the dataset by undersampling the true positives. + logging.info('Balancing the TP dataset by undersampling the true positives (count=%d) to match the false positives (count=%d).', tp_df.shape[0], fp_df.shape[0]) + tp_df = tp_df.sample(n=fp_df.shape[0], random_state=42) + logging.info('Number of NaN values in the true positive dataframe after undersampling: %d', tp_df.isna().sum().sum()) + # Combine the true positive and false positive data. logging.info('Combining the true positive and false positive data.') data = pd.concat([tp_df, fp_df]) logging.info('Combined dataframe:\n%s', data.head()) + logging.info('Number of NaN values in the combined dataframe: %d', data.isna().sum().sum()) + + # Load the chromosome to integer mapping. + chrom_map_path = "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + # logging.info('Loading the chromosome map from %s', chrom_map_path) + # chrom_dict = joblib.load(chrom_map_path) + # logging.info('Loaded the chromosome map from %s', chrom_map_path) + # logging.info('Chromosome map:\n%s', chrom_dict) + # Create a dictionary to map the chromosome names to integer values. logging.info('Creating a dictionary to map the chromosome names to integer values.') chrom_dict = {chrom: i for i, chrom in enumerate(data['chrom'].unique())} - # Map the chromosome names to integer values. - data['chrom'] = data['chrom'].map(chrom_dict) - logging.info('Mapped chromosome names to integer values:\n%s', data.head()) + logging.info('Chromosome map:\n%s', chrom_dict) # Save this map to a file using joblib. chrom_map_path = os.path.join(output_directory, 'chrom_map.pkl') @@ -525,88 +555,111 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path joblib.dump(chrom_dict, chrom_map_path) logging.info('Saved the chromosome map to %s', chrom_map_path) + # Map the chromosome names to integer values. + data['chrom'] = data['chrom'].map(chrom_dict) + logging.info('Mapped chromosome names to integer values:\n%s', data.head()) + + logging.info('Number of NaN values in the combined dataframe after mapping chromosomes: %d', data.isna().sum().sum()) + # Get the features and labels. - features = data[["chrom", "start", "end", "label", "fragile_site", "conserved_region", "simple_repeat", "telomere", "centromere", "segdup"]] + # features = data[["chrom", "start", "end", "label", "fragile_site", + # "conserved_region", "simple_repeat", "telomere", "centromere", "segdup"]] + # Get all columns except the label. + features = data.drop(columns=["label"]) + logging.info('Features columns:\n%s', features.columns) + + # Print number of NaN values in the features dataframe. + logging.info('Number of NaN values in the features dataframe: %d', features.isna().sum().sum()) + labels = data["label"] - # Train the model. - logging.info('Training the model.') - model = LogisticRegression() - model.fit(features, labels) - - # Get predicted probabilities. - logging.info('Getting predicted probabilities.') - y_pred = model.predict(features) - y_prob = model.predict_proba(features)[:, 1] - - # Get the ROC curve. - fpr, tpr, thresholds = roc_curve(labels, y_prob) - roc_auc = auc(fpr, tpr) - - # Plot the ROC curve. - plt.figure() - plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - plt.title('Receiver Operating Characteristic') - plt.legend(loc='lower right') - # Save the plot to the output directory. - roc_plot_path = os.path.join(output_directory, 'roc_curve.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) - - # Get the precision-recall curve. - precision, recall, thresholds = precision_recall_curve(labels, y_prob) - pr_auc = auc(recall, precision) - - # Plot the precision-recall curve. - plt.figure() - plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) - plt.xlabel('Recall') - plt.ylabel('Precision') - plt.title('Precision-Recall Curve') - plt.legend(loc='lower left') - # Save the plot to the output directory. - pr_plot_path = os.path.join(output_directory, 'precision_recall_curve.png') - plt.savefig(pr_plot_path) - plt.close() - logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) - - # Get the confusion matrix. - cm = confusion_matrix(labels, y_pred) - logging.info('Confusion matrix:\n%s', cm) - - # Plot the confusion matrix using seaborn. - plt.figure() - sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') - plt.xlabel('Predicted') - plt.ylabel('True') - plt.title('Confusion Matrix') - # Save the plot to the output directory. - cm_plot_path = os.path.join(output_directory, 'confusion_matrix.png') - plt.savefig(cm_plot_path) - plt.close() - logging.info('Saved the confusion matrix to %s', cm_plot_path) - - # Print the classification report. - logging.info('Classification report:\n%s', classification_report(labels, y_pred)) - - # Save the report to a file. - report_path = os.path.join(output_directory, 'classification_report.txt') - with open(report_path, 'w') as f: - f.write(classification_report(labels, y_pred)) - - logging.info('Saved the classification report to %s', report_path) + # Train different models. + models = { + "Logistic Regression": LogisticRegression(), + "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), + "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) + } + for model_name, model in models.items(): + logging.info('Training the %s model.', model_name) + # logging.info('Training the model.') + # # model = LogisticRegression() + # model = RandomForestClassifier(n_estimators=100, random_state=42) + model.fit(features, labels) + + # Get predicted probabilities. + logging.info('Getting predicted probabilities.') + y_pred = model.predict(features) + y_prob = model.predict_proba(features)[:, 1] + + # Get the ROC curve. + fpr, tpr, thresholds = roc_curve(labels, y_prob) + roc_auc = auc(fpr, tpr) + + # Plot the ROC curve. + plt.figure() + plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('Receiver Operating Characteristic') + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + + # Get the precision-recall curve. + precision, recall, thresholds = precision_recall_curve(labels, y_prob) + pr_auc = auc(recall, precision) + + # Plot the precision-recall curve. + plt.figure() + plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) + plt.xlabel('Recall') + plt.ylabel('Precision') + plt.title('Precision-Recall Curve') + plt.legend(loc='lower left') + # Save the plot to the output directory. + pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') + plt.savefig(pr_plot_path) + plt.close() + logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) + + # Get the confusion matrix. + cm = confusion_matrix(labels, y_pred) + logging.info('Confusion matrix:\n%s', cm) + + # Plot the confusion matrix using seaborn. + plt.figure() + sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + plt.xlabel('Predicted') + plt.ylabel('True') + plt.title('Confusion Matrix') + # Save the plot to the output directory. + cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') + plt.savefig(cm_plot_path) + plt.close() + logging.info('Saved the confusion matrix to %s', cm_plot_path) + + # Print the classification report. + logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + + # Save the report to a file. + report_path = os.path.join(output_directory, model_name + '_classification_report.txt') + with open(report_path, 'w') as f: + f.write(classification_report(labels, y_pred)) + + logging.info('Saved the classification report to %s', report_path) # Save the model. - model_path = os.path.join(output_directory, "anno_model.pkl") - logging.info('Saving the model to %s', model_path) - joblib.dump(model, model_path) - logging.info('Saved the model to %s', model_path) + # model_path = os.path.join(output_directory, "anno_model.pkl") + # logging.info('Saving the model to %s', model_path) + # joblib.dump(model, model_path) + # logging.info('Saved the model to %s', model_path) if __name__ == '__main__': From 8744fe0804d6e3bdcb3026a43030d2d9a37a4ebc Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 3 Apr 2025 14:25:21 -0400 Subject: [PATCH 16/93] caller model update --- contextscore/train_caller_model.py | 253 ++++++++++++++++++++---- contextscore/train_region_anno_model.py | 7 +- 2 files changed, 218 insertions(+), 42 deletions(-) diff --git a/contextscore/train_caller_model.py b/contextscore/train_caller_model.py index 3f806cb..c7ebfbb 100644 --- a/contextscore/train_caller_model.py +++ b/contextscore/train_caller_model.py @@ -51,24 +51,120 @@ import joblib import pandas as pd from sklearn.linear_model import LogisticRegression +from sklearn.ensemble import RandomForestClassifier +from xgboost import XGBClassifier +from sklearn.svm import SVC + import matplotlib.pyplot as plt from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report import matplotlib.pyplot as plt import seaborn as sns -from extract_features import extract_features +# from extract_features import extract_features # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +def extract_features(input_bed): + """Extract the features from the BED file, columns are in the first row: + chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size + """ + logging.info('Extracting features from the BED file %s', input_bed) + + # Load a dictionary mapping chromosome names to numbers. + chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + chrom_dict = joblib.load(chrom_dict_path) + + # Read in the BED file. + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size'], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32}) + + # Print the number of NaN values + logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) + + # Map the chromosome names to numbers. + bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) + + # Print the number of NaN values + logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of alignment types to numbers. + # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", + # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" + aln_type_map = { + 'CIGARINS': 0, + 'CIGARDEL': 1, + 'CIGARCLIP': 2, + 'SPLIT': 3, + 'SPLITDIST1': 4, + 'SPLITDIST2': 5, + 'SPLITINV': 6, + 'SUPPINV': 7, + 'HMM': 8, + 'UNKNOWN': 9 + } + + # Map the alignment types to numbers. + bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + + # Print the number of NaN values + logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of SV types to numbers. + # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" + sv_type_map = { + 'DEL': 0, + 'DUP': 1, + 'INV': 2, + 'INS': 3, + 'BND': 4, + 'UNKNOWN': 5 + } + + # Map the SV types to numbers. + bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) + + # Print the number of NaN values + logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of genotypes to numbers. + # Genotypes are: "0/0", "0/1", "1/1", "./." + genotype_map = { + '0/0': 0, + '0/1': 1, + '1/1': 2, + './.': 3 + } + + # Map the genotypes to numbers. + bed_df['genotype'] = bed_df['genotype'].map(genotype_map) + + # Print the number of NaN values + logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) + + # Check if any features are missing. + if bed_df.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = bed_df[bed_df.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Return the features. + return bed_df -def train(true_positives_filepath, false_positives_filepath): + +def train(tp_bed, fp_bed, output_directory): """Train the binary classification model.""" # Extract the features from the VCF files. - logging.info('Extracting features from the true positive VCF file.') - tp_data = extract_features(true_positives_filepath) + logging.info('Extracting features from the true positive file %s', tp_bed) + tp_data = extract_features(tp_bed) # Check if any features are missing. if tp_data.isnull().values.any(): @@ -81,8 +177,8 @@ def train(true_positives_filepath, false_positives_filepath): logging.error(missing_features) sys.exit(1) - logging.info('Extracting features from the false positive VCF file.') - fp_data = extract_features(false_positives_filepath) + logging.info('Extracting features from the false positive file %s', fp_bed) + fp_data = extract_features(fp_bed) # Check if any features are missing. if fp_data.isnull().values.any(): @@ -103,52 +199,127 @@ def train(true_positives_filepath, false_positives_filepath): logging.info('Number of true labels: %d', tp_data.shape[0]) logging.info('Number of false labels: %d', fp_data.shape[0]) + # Drop NaN values from the data. + logging.info('Dropping NaN values from the data.') + tp_data.dropna(inplace=True) + fp_data.dropna(inplace=True) + + # Balance the dataset by undersampling the true positives. + logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) + tp_data = tp_data.sample(fp_data.shape[0], random_state=42) + # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data]) # Get the features and labels. - features = data[["chrom", "start", "sv_length", "sv_type", "read_depth", "hmm_llh"]] + features = data.drop(columns=['label']) labels = data["label"] - # Check if any features are missing. - if features.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = features[features.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - # Check if any labels are missing. - if labels.isnull().values.any(): - logging.error('Labels are missing.') - sys.exit(1) + # Train different models. + models = { + "Logistic Regression": LogisticRegression(), + "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), + "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) + } + + for model_name, model in models.items(): + logging.info('Training the %s model.', model_name) + # logging.info('Training the model.') + # # model = LogisticRegression() + # model = RandomForestClassifier(n_estimators=100, random_state=42) + model.fit(features, labels) + + # Get predicted probabilities. + logging.info('Getting predicted probabilities.') + y_pred = model.predict(features) + y_prob = model.predict_proba(features)[:, 1] + + # Get the ROC curve. + fpr, tpr, thresholds = roc_curve(labels, y_prob) + roc_auc = auc(fpr, tpr) + + # Plot the ROC curve. + plt.figure() + plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('Receiver Operating Characteristic') + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + + # Get the precision-recall curve. + precision, recall, thresholds = precision_recall_curve(labels, y_prob) + pr_auc = auc(recall, precision) + + # Plot the precision-recall curve. + plt.figure() + plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) + plt.xlabel('Recall') + plt.ylabel('Precision') + plt.title('Precision-Recall Curve') + plt.legend(loc='lower left') + # Save the plot to the output directory. + pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') + plt.savefig(pr_plot_path) + plt.close() + logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) + + # Get the confusion matrix. + cm = confusion_matrix(labels, y_pred) + logging.info('Confusion matrix:\n%s', cm) + + # Plot the confusion matrix using seaborn. + plt.figure() + sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + plt.xlabel('Predicted') + plt.ylabel('True') + plt.title('Confusion Matrix') + # Save the plot to the output directory. + cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') + plt.savefig(cm_plot_path) + plt.close() + logging.info('Saved the confusion matrix to %s', cm_plot_path) + + # Print the classification report. + logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + + # Save the report to a file. + report_path = os.path.join(output_directory, model_name + '_classification_report.txt') + with open(report_path, 'w') as f: + f.write(classification_report(labels, y_pred)) + + logging.info('Saved the classification report to %s', report_path) + + # Save the model. + model_path = os.path.join(output_directory, model_name + '_caller_model.pkl') + logging.info('Saving the model to %s', model_path) + joblib.dump(model, model_path) + logging.info('Saved the model to %s', model_path) - # Train the model. - model = LogisticRegression() - model.fit(features, labels) - - # Return the model. - return model # Run the program. -def run(true_positives_filepath, false_positives_filepath, output_directory): +def run(tp_bed, fp_bed, output_directory): """Run the program.""" # Train the model. - model = train(true_positives_filepath, false_positives_filepath) - + train(tp_bed, fp_bed, output_directory) # Create the output directory if it does not exist. - if not os.path.exists(output_directory): - os.makedirs(output_directory) + # if not os.path.exists(output_directory): + # os.makedirs(output_directory) - # Save the model - model_path = os.path.join(output_directory, "model.pkl") - joblib.dump(model, model_path) + # # Save the model + # model_path = os.path.join(output_directory, "model.pkl") + # joblib.dump(model, model_path) - # Print the model. - print(model) + # # Print the model. + # print(model) # Return the model. # return model @@ -171,12 +342,12 @@ def run(true_positives_filepath, false_positives_filepath, output_directory): # output_dir = sys.argv[3] import argparse parser = argparse.ArgumentParser() - parser.add_argument('--tpvcf', type=str, required=True, help='Path to the VCF of true positive SV calls obtained from a benchmarking dataset.') - parser.add_argument('--fpvcf', type=str, required=True, help='Path to the VCF of false positive SV calls obtained from running the caller on data that is known to be negative for SVs.') + parser.add_argument('--tpbed', type=str, required=True, help='Path to the VCF of true positive SV calls obtained from a benchmarking dataset.') + parser.add_argument('--fpbed', type=str, required=True, help='Path to the VCF of false positive SV calls obtained from running the caller on data that is known to be negative for SVs.') parser.add_argument('--outdir', type=str, required=True, help='Path to the output directory.') args = parser.parse_args() # Run the program. logging.info('Training the model...') - run(args.tpvcf, args.fpvcf, args.outdir) + run(args.tpbed, args.fpbed, args.outdir) logging.info('done.') diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py index dc62eaf..c5ed431 100644 --- a/contextscore/train_region_anno_model.py +++ b/contextscore/train_region_anno_model.py @@ -65,7 +65,6 @@ import matplotlib.pyplot as plt import seaborn as sns -from extract_features import extract_features # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') @@ -655,6 +654,12 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path logging.info('Saved the classification report to %s', report_path) + # Save the model. + model_path = os.path.join(output_directory, model_name + '_genome_model.pkl') + logging.info('Saving the model to %s', model_path) + joblib.dump(model, model_path) + logging.info('Saved the model to %s', model_path) + # Save the model. # model_path = os.path.join(output_directory, "anno_model.pkl") # logging.info('Saving the model to %s', model_path) From c08b339f0e7c2c98af69514019f6b039fa2cc37d Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 3 Apr 2025 15:48:03 -0400 Subject: [PATCH 17/93] cross validation --- contextscore/train_caller_model.py | 12 ++++++++++++ contextscore/train_region_anno_model.py | 13 +++++++++++++ 2 files changed, 25 insertions(+) diff --git a/contextscore/train_caller_model.py b/contextscore/train_caller_model.py index c7ebfbb..c472be6 100644 --- a/contextscore/train_caller_model.py +++ b/contextscore/train_caller_model.py @@ -223,6 +223,10 @@ def train(tp_bed, fp_bed, output_directory): "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) } + # models = { + # "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + # } + for model_name, model in models.items(): logging.info('Training the %s model.', model_name) # logging.info('Training the model.') @@ -304,6 +308,14 @@ def train(tp_bed, fp_bed, output_directory): joblib.dump(model, model_path) logging.info('Saved the model to %s', model_path) + # Run cross-validation by splitting the data into 5 folds and training + # the model on each fold. + from sklearn.model_selection import cross_val_score + logging.info('Running cross-validation.') + scores = cross_val_score(model, features, labels, cv=5) + logging.info('Cross-validation scores: %s', scores) + logging.info('Mean cross-validation score: %f', scores.mean()) + # Run the program. def run(tp_bed, fp_bed, output_directory): diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py index c5ed431..4663be4 100644 --- a/contextscore/train_region_anno_model.py +++ b/contextscore/train_region_anno_model.py @@ -579,6 +579,11 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) } + + # models = { + # "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + # } + for model_name, model in models.items(): logging.info('Training the %s model.', model_name) # logging.info('Training the model.') @@ -660,6 +665,14 @@ def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path joblib.dump(model, model_path) logging.info('Saved the model to %s', model_path) + # Run cross-validation by splitting the data into 5 folds and training + # the model on each fold. + logging.info('Running cross-validation.') + from sklearn.model_selection import cross_val_score + scores = cross_val_score(model, features, labels, cv=5) + logging.info('Cross-validation scores: %s', scores) + logging.info('Mean cross-validation score: %f', scores.mean()) + # Save the model. # model_path = os.path.join(output_directory, "anno_model.pkl") # logging.info('Saving the model to %s', model_path) From 98a1777ccd3bace2d812e9e96e92dbd999c6782c Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 3 Apr 2025 23:01:57 -0400 Subject: [PATCH 18/93] update training model --- contextscore/train_full_model.py | 693 +++++++++++++++++++++++++++++++ 1 file changed, 693 insertions(+) create mode 100644 contextscore/train_full_model.py diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py new file mode 100644 index 0000000..665a92b --- /dev/null +++ b/contextscore/train_full_model.py @@ -0,0 +1,693 @@ +""" +train_model.py - Train the binary classification model. + +This script trains the binary classification model using the true positive and +false positive data. The true positive data is obtained from a benchmarking +dataset. The false positive data is obtained from running the caller on data +that is known to be negative for SVs. This data can be obtained by running the +caller on a normal sample with known SVs accounted for in the reference genome. + +For example for HG002, the true positive data is obtained from the Genome in a +Bottle benchmarking dataset, and the false positive data is obtained from +running the caller on the HG002 normal sample and extracting the SV calls that +are not in the benchmarking dataset. This can be repeated for other samples such +as HG001 and HG005 as long as the known SVs are accounted for. + +In the HG002 SV v0.6 dataset, there are low-confidence regions which +are excluded from the true positive data. Thus, we must include true SVs from +other publicly available normal samples with information from complex regions, +such as those aligned to CHM13. + +The model is trained using logistic regression. The features are the LRR and +BAF values. The labels are 1 for true positives and 0 for false positives. + +The model is saved to the output directory as a pickle file. + +Usage: + python train_model.py + + + true_positives_filepath: Path to the VCF of true positive SV calls obtained + from a benchmarking dataset. + false_positives_filepath: Path to the VCF of false positive SV calls + obtained from running the caller on data that is known to be negative + for SVs. This data can be obtained by running the caller on a normal + sample with known SVs accounted for in the reference genome. + + output_directory: Path to the output directory. + +Output: + model.pkl: The binary classification model. + +Example: + python train_model.py data/sv_scoring_dataset/true_positives.vcf + sv_scoring_dataset/false_positives.vcf data/sv_scoring_dataset/model +""" + +import os +import sys +import subprocess +import logging +import numpy as np +import joblib +import pandas as pd +from io import StringIO + +from sklearn.linear_model import LogisticRegression +from sklearn.ensemble import RandomForestClassifier +from xgboost import XGBClassifier +from sklearn.svm import SVC + +import matplotlib.pyplot as plt + +from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report +import matplotlib.pyplot as plt +import seaborn as sns + +# from extract_features import extract_features + +# Set up the logger. +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + +def read_cytoband_file(cytoband_file): + """Get the centromere and telomere regions for each chromosome.""" + cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) + chrom_dict = {} + for chrom in cytobands['chrom'].unique(): + + # Skip chrM + if chrom == 'chrM': + continue + + chrom_df = cytobands[cytobands['chrom'] == chrom] + # First and last bands are the telomeres. + # First telomere: + chrom_dict[chrom] = { + 'telomerep': chrom_df.iloc[0]['name'], + 'telomereq': chrom_df.iloc[-1]['name'] + } + + # Identify the 2 centromeres for p and q (contain "acen"). + centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] + centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] + if not centromere_p.empty: + chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] + if not centromere_q.empty: + chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] + + # print("Chromosome:", chrom) + # print(chrom_dict[chrom]) + + return chrom_dict + +def extract_features(input_bed): + """Extract the features from the BED file, columns are in the first row: + chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size + """ + logging.info('Extracting features from the BED file %s', input_bed) + + # Load a dictionary mapping chromosome names to numbers. + # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + # chrom_dict = joblib.load(chrom_dict_path) + + # Read in the BED file. + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size'], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32}) + + # # Print the number of NaN values + # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) + + # # Map the chromosome names to numbers. + # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) + + # # Print the number of NaN values + # logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of alignment types to numbers. + # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", + # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" + aln_type_map = { + 'CIGARINS': 0, + 'CIGARDEL': 1, + 'CIGARCLIP': 2, + 'SPLIT': 3, + 'SPLITDIST1': 4, + 'SPLITDIST2': 5, + 'SPLITINV': 6, + 'SUPPINV': 7, + 'HMM': 8, + 'UNKNOWN': 9 + } + + # Map the alignment types to numbers. + bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + + # Print the number of NaN values + logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of SV types to numbers. + # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" + sv_type_map = { + 'DEL': 0, + 'DUP': 1, + 'INV': 2, + 'INS': 3, + 'BND': 4, + 'UNKNOWN': 5 + } + + # Map the SV types to numbers. + bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) + + # Print the number of NaN values + logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of genotypes to numbers. + # Genotypes are: "0/0", "0/1", "1/1", "./." + genotype_map = { + '0/0': 0, + '0/1': 1, + '1/1': 2, + './.': 3 + } + + # Map the genotypes to numbers. + bed_df['genotype'] = bed_df['genotype'].map(genotype_map) + + # Print the number of NaN values + logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) + + # Check if any features are missing. + if bed_df.isnull().values.any(): + logging.error('Features are missing.') + + # Get the rows with missing features. + missing_features = bed_df[bed_df.isnull().any(axis=1)] + + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) + + # Return the features. + return bed_df + + +def run_bedtools_intersect(input_bed, table_bed): + """Run bedtools intersect to annotate the BED file.""" + # Check if bedtools is installed. + try: + subprocess.run(["bedtools", "--version"], check=True) + except subprocess.CalledProcessError: + logging.error('bedtools is not installed. Please install bedtools.') + sys.exit(1) + + # Check if the input BED file exists. + if not os.path.exists(input_bed): + logging.error('Input BED file does not exist: %s', input_bed) + sys.exit(1) + + # Check if the table BED file exists. + if not os.path.exists(table_bed): + logging.error('Table BED file does not exist: %s', table_bed) + sys.exit(1) + + # Run bedtools intersect to annotate the BED file. + cmd = [ + "bedtools", "intersect", + "-a", input_bed, + "-b", table_bed, + "-wa", "-wb" + ] + logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) + try: + result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) + + # Parse the output of bedtools intersect into a pandas DataFrame. + logging.info('Parsing the output of bedtools intersect.') + annotated_bed = pd.read_csv( + StringIO(result.stdout), + sep='\t', + header=None, + names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], + usecols=[0, 1, 2, 10, 11, 12, 13], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} + ) + + # Print the first few rows of the annotated BED file. + logging.info('Annotated BED file:\n%s', annotated_bed.head()) + + return annotated_bed + + except subprocess.CalledProcessError as e: + logging.error('Error annotating the BED file: %s', e) + logging.error('Please check the input and table BED files.') + sys.exit(1) + + +def bed_to_annovar_input(bed_file): + """Convert the BED file to ANNOVAR input format.""" + output_file = bed_file.replace('.bed', '.avinput') + logging.info('Converting the BED file to ANNOVAR input format.') + + # Read the BED file using pandas (first line is the header with the column names). + df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) + logging.info('Number of rows in the BED file: %d', df.shape[0]) + logging.info('First 5 rows of the BED file:\n%s', df.head()) + + # The ANNOVAR input format requires the following columns: + # 1. Chromosome + # 2. Start position + # 3. End position + # 4. Reference allele + # 5. Alternate allele + # We will use the first three columns from the BED file and add two dummy + # columns for the reference and alternate alleles (0, and -) since gnomAD does not + # provide the sequence information for the SVs. + + # Create a new dataframe with the required columns. + annovar_df = pd.DataFrame() + annovar_df['chrom'] = df['CHROM'] + annovar_df['start'] = df['POS'] + annovar_df['end'] = df['END'] + annovar_df['ref'] = '0' + annovar_df['alt'] = '-' + + # Save the tab-delimited dataframe to a file. + logging.info('Saving the ANNOVAR input file to %s', output_file) + annovar_df.to_csv(output_file, sep='\t', index=False, header=False) + logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) + logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) + logging.info('Saved the ANNOVAR input file to %s', output_file) + + return output_file + + +def download_annovar_db(annovar_path, db_path, db_name): + """Download the ANNOVAR database if it does not exist.""" + logging.info('Downloading the database:' + db_name) + cmd = [ + f"{annovar_path}/annotate_variation.pl", + "-buildver", "hg38", + "-downdb", db_name, + db_path + ] + # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ + + # Run the command to download the database. + logging.info('Running the command to download the database: %s', " ".join(cmd)) + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error downloading the database: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + logging.info('Downloaded the database %s successfully.', db_name) + + +def annotate(annovar_input, annovar_path, db_path, output_dir): + """Annotate regions.""" + logging.info('Annotating regions using ANNOVAR.') + + annotations_dir = os.path.join(output_dir, 'regions') + logging.info('Creating the output directory: %s', annotations_dir) + cmd = [ + f"{annovar_path}/table_annovar.pl", + annovar_input, + db_path, + "--buildver hg38", + "--out", annotations_dir, + "--remove", + "--protocol genomicSuperDups,cytoBand", + "--operation r,r", + "--nastring .", + "-polish" + ] + # "--protocol genomicSuperDups", + + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error annotating: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Completed annotations.') + + +def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): + """Check if the cytoband is a telomere or centromere.""" + if chrom not in chrom_dict: + return False, False # Not in any region. + + is_telomere = False + is_centromere = False + # Check if the cytoband is a telomere. + try: + if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: + is_telomere = True + except TypeError: + # Handle the case where telomerep is not defined. + logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) + logging.warning('Cytoband: %s', cytoband) + logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) + is_telomere = False + if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: + is_telomere = True + if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: + is_centromere = True + if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: + is_centromere = True + + return is_telomere, is_centromere + + +def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): + """Add annotations to the features.""" + logging.info('Adding annotations to the features.') + + # --------------------------------------------------------------- + # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). + # https://webs.iiitd.edu.in/raghava/humcfs/download.html + # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ + fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) + fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed) + + # Merge the fragile sites annotations with the true positive data. + data['fragile_site'] = data.merge(fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Number of records with fragile sites: %d', data['fragile_site'].sum()) + logging.info('Total number of records: %d', data.shape[0]) + + # --------------------------------------------------------------- + # Annotate conserved regions using a UCSC Table Browser BED file for + # phastCons100way (GRCh38/hg38). + phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" + logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) + phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed) + + # Merge the phastCons annotations with the true positive data. + data['phastCons'] = data.merge(phastCons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Number of records with conserved regions: %d', data['phastCons'].sum()) + logging.info('Total number of records: %d', data.shape[0]) + + # --------------------------------------------------------------- + # Annotate simple repeats using a UCSC Table Browser BED file for + # simpleRepeat (GRCh38/hg38). + simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" + logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) + simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed) + + # Merge the simpleRepeat annotations with the true positive data. + data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Number of records with simple repeats: %d', data['simpleRepeat'].sum()) + logging.info('Total number of records: %d', data.shape[0]) + + # --------------------------------------------------------------- + # Annotate the SVs using ANNOVAR. + + # Download the segmental duplication database + download_annovar_db(annovar_path, db_path, "genomicSuperDups") + + # Download the cytoband database + download_annovar_db(annovar_path, db_path, "cytoBand") + + # Set up a dictionary for each chromosome, mapping the cytoband to the + # centromere and telomere regions. + cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. + cytoband_dict = read_cytoband_file(cytoband_file) + + logging.info('Converting the true positive BED file to ANNOVAR input format.') + annovar_file = bed_to_annovar_input(input_bed) + + logging.info('Annotating the SVs using ANNOVAR.') + if not os.path.exists(anno_outdir): + os.makedirs(anno_outdir) + + annotate(annovar_file, annovar_path, db_path, anno_outdir) + + anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') + if not os.path.exists(anno_file): + logging.error('ANNOVAR annotation file does not exist: %s', anno_file) + sys.exit(1) + + # Read the ANNOVAR output file. + logging.info('Reading the ANNOVAR output file: %s', anno_file) + anno_df = pd.read_csv(anno_file, sep='\t', header=0, comment='#') + + # Replace NaN values for the genomicSuperDups column with 0. + # anno_df['genomicSuperDups'].fillna(0, inplace=True) + + # # Replace NaN values for the cytoBand column with "" + # # anno_df['cytoBand'].fillna("", inplace=True).astype(str) + # anno_df['cytoBand'] = anno_df['cytoBand'].fillna("").astype(str) + + # Convert chr, start, end to the same data types as the data. + anno_df['Chr'] = anno_df['Chr'].astype(str) + anno_df['Start'] = anno_df['Start'].astype(np.int32) + anno_df['End'] = anno_df['End'].astype(np.int32) + + print("[TEST] Data types:") + print(data.dtypes[['chrom', 'start', 'end']]) + print(anno_df.dtypes[['Chr', 'Start', 'End']]) + + # Merge the ANNOVAR annotations with the data. + logging.info('Merging the ANNOVAR annotations with the data.') + data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') + + # Extract segmental duplication scores. + def extract_max_score(score_series): + """Extract and return the maximum Score= value from a series.""" + scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) + return scores.max() if not scores.empty else 0 + + # Extract the maximum score from the segmental duplication annotations. + data['segdup'] = extract_max_score(data['genomicSuperDups']) + + # Extract the cytoband annotations. + def get_cyto_info(row): + """Get telomere and centromere information for a row.""" + if pd.notna(row['cytoBand']): + return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) + + return (False, False) + + data['telomere'], data['centromere'] = data.apply(get_cyto_info, axis=1, result_type='expand') + + # Print the current columns in the data. + logging.info('Current columns in the data: %s', data.columns) + + # Drop the unnecessary columns. + data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) + + logging.info('Number of records after adding annotations: %d', data.shape[0]) + logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) + + +def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): + """Train the binary classification model.""" + + # --------------------------------------------------------------- + # SV Feature Extraction + # --------------------------------------------------------------- + + # Extract the features from the VCF files. + tp_data = extract_features(tp_bed) + fp_data = extract_features(fp_bed) + + # --------------------------------------------------------------- + # Annotate the features + # --------------------------------------------------------------- + + # Add annotations to the features. + tp_anno_outdir = os.path.join(outdiranno, "tp_anno") + add_annotations(tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir) + fp_anno_outdir = os.path.join(outdiranno, "fp_anno") + add_annotations(fp_data, fp_bed, annovar_path, db_path, fp_anno_outdir) + + # --------------------------------------------------------------- + # Feature preparation + # --------------------------------------------------------------- + + # Finally map chromosome names to numbers. + # Load a dictionary mapping chromosome names to numbers. + chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + chrom_dict = joblib.load(chrom_dict_path) + + # Print the number of NaN values + logging.info('Number of NaN values: %d', tp_data.isnull().sum().sum()) + + # Map the chromosome names to numbers. + tp_data['chrom'] = tp_data['chrom'].map(chrom_dict) + fp_data['chrom'] = fp_data['chrom'].map(chrom_dict) + + # Print the number of NaN values + logging.info('Number of NaN values after chr mapping: %d', tp_data.isnull().sum().sum()) + + # Add the labels. + tp_data['label'] = 1 + fp_data['label'] = 0 + + # Print the number of true positives and false positives. + logging.info('Number of true labels: %d', tp_data.shape[0]) + logging.info('Number of false labels: %d', fp_data.shape[0]) + + # Drop NaN values from the data. + logging.info('Dropping NaN values from the data.') + tp_data.dropna(inplace=True) + fp_data.dropna(inplace=True) + logging.info('Number of true labels after dropping NaN values: %d', tp_data.shape[0]) + logging.info('Number of false labels after dropping NaN values: %d', fp_data.shape[0]) + + # Balance the dataset by undersampling the true positives. + logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) + tp_data = tp_data.sample(fp_data.shape[0], random_state=42) + + # Combine the true positive and false positive data. + data = pd.concat([tp_data, fp_data]) + + # Get the features and labels. + features = data.drop(columns=['label']) + labels = data["label"] + + # Train different models. + models = { + "Logistic Regression": LogisticRegression(), + "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), + "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) + } + + # models = { + # "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + # } + + for model_name, model in models.items(): + logging.info('Training the %s model.', model_name) + # logging.info('Training the model.') + # # model = LogisticRegression() + # model = RandomForestClassifier(n_estimators=100, random_state=42) + model.fit(features, labels) + + # Get predicted probabilities. + logging.info('Getting predicted probabilities.') + y_pred = model.predict(features) + y_prob = model.predict_proba(features)[:, 1] + + # Get the ROC curve. + fpr, tpr, thresholds = roc_curve(labels, y_prob) + roc_auc = auc(fpr, tpr) + + # Plot the ROC curve. + plt.figure() + plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('Receiver Operating Characteristic') + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + + # Get the precision-recall curve. + precision, recall, thresholds = precision_recall_curve(labels, y_prob) + pr_auc = auc(recall, precision) + + # Plot the precision-recall curve. + plt.figure() + plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) + plt.xlabel('Recall') + plt.ylabel('Precision') + plt.title('Precision-Recall Curve') + plt.legend(loc='lower left') + # Save the plot to the output directory. + pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') + plt.savefig(pr_plot_path) + plt.close() + logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) + + # Get the confusion matrix. + cm = confusion_matrix(labels, y_pred) + logging.info('Confusion matrix:\n%s', cm) + + # Plot the confusion matrix using seaborn. + plt.figure() + sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + plt.xlabel('Predicted') + plt.ylabel('True') + plt.title('Confusion Matrix') + # Save the plot to the output directory. + cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') + plt.savefig(cm_plot_path) + plt.close() + logging.info('Saved the confusion matrix to %s', cm_plot_path) + + # Print the classification report. + logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + + # Save the report to a file. + report_path = os.path.join(output_directory, model_name + '_classification_report.txt') + with open(report_path, 'w') as f: + f.write(classification_report(labels, y_pred)) + + logging.info('Saved the classification report to %s', report_path) + + # Save the model. + model_path = os.path.join(output_directory, model_name + '_caller_model.pkl') + logging.info('Saving the model to %s', model_path) + joblib.dump(model, model_path) + logging.info('Saved the model to %s', model_path) + + # Run cross-validation by splitting the data into 5 folds and training + # the model on each fold. + from sklearn.model_selection import cross_val_score + logging.info('Running cross-validation.') + scores = cross_val_score(model, features, labels, cv=5) + logging.info('Cross-validation scores: %s', scores) + logging.info('Mean cross-validation score: %f', scores.mean()) + + +# Run the program. +def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): + """Run the program.""" + # Train the model. + train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno) + # Create the output directory if it does not exist. + # if not os.path.exists(output_directory): + # os.makedirs(output_directory) + + # # Save the model + # model_path = os.path.join(output_directory, "model.pkl") + # joblib.dump(model, model_path) + + # # Print the model. + # print(model) + + # Return the model. + # return model + + +if __name__ == '__main__': + # Parse the command line arguments. + import argparse + parser = argparse.ArgumentParser() + parser.add_argument("--tpbed", required=True, help="Directory containing benchmark VCF files of real SVs (true positives and false negatives)") + parser.add_argument("--fpbed", required=True, help="Directory containing false positive VCF files from running the caller on normal samples") + parser.add_argument("--outdiranno", required=True, help="Output directory for saving the ANNOVAR annotations") + parser.add_argument("--outdir", required=True, help="Output directory for saving the model") + parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") + parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") + args = parser.parse_args() + + # Run the program. + logging.info('Training the model...') + run(args.tpbed, args.fpbed, args.outdir, args.annovar, args.annovar_db, args.outdiranno) + logging.info('done.') From 5279105e61b8ef66f34f049c3cb1b5b02e96b295 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 14 Apr 2025 21:14:00 -0400 Subject: [PATCH 19/93] add copy number state and read alignment offset features --- contextscore/train_full_model.py | 255 +++++++++++++++++++++++-------- 1 file changed, 192 insertions(+), 63 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 665a92b..7d47321 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -53,6 +53,7 @@ import pandas as pd from io import StringIO +from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from xgboost import XGBClassifier @@ -112,8 +113,8 @@ def extract_features(input_bed): # Read in the BED file. bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], - names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size'], - dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32}) + names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) # # Print the number of NaN values # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) @@ -230,7 +231,7 @@ def run_bedtools_intersect(input_bed, table_bed): sep='\t', header=None, names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], - usecols=[0, 1, 2, 10, 11, 12, 13], + usecols=[0, 1, 2, 12, 13, 14, 15], #10, 11, 12, 13], dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} ) @@ -251,7 +252,17 @@ def bed_to_annovar_input(bed_file): logging.info('Converting the BED file to ANNOVAR input format.') # Read the BED file using pandas (first line is the header with the column names). - df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) + # df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', + # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) + # df = pd.read_csv(bed_file, sep='\t', header=0, comment='#', + # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], usecols=[0, 1, 2, 3, 4], + # dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32, + # 'SVTYPE': str, 'SVLEN': np.int32}) + df = pd.read_csv(bed_file, sep='\t', usecols=[0, 1, 2], + names=["CHROM", "POS", "END"], + dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32}) + + # Check if the BED file is empty. logging.info('Number of rows in the BED file: %d', df.shape[0]) logging.info('First 5 rows of the BED file:\n%s', df.head()) @@ -450,10 +461,6 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): anno_df['Start'] = anno_df['Start'].astype(np.int32) anno_df['End'] = anno_df['End'].astype(np.int32) - print("[TEST] Data types:") - print(data.dtypes[['chrom', 'start', 'end']]) - print(anno_df.dtypes[['Chr', 'Start', 'End']]) - # Merge the ANNOVAR annotations with the data. logging.info('Merging the ANNOVAR annotations with the data.') data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') @@ -524,6 +531,13 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): tp_data['chrom'] = tp_data['chrom'].map(chrom_dict) fp_data['chrom'] = fp_data['chrom'].map(chrom_dict) + # Actually drop the chrom, start, end columns. + tp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) + fp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) + + logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', tp_data.columns) + logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (FP): %s', fp_data.columns) + # Print the number of NaN values logging.info('Number of NaN values after chr mapping: %d', tp_data.isnull().sum().sum()) @@ -566,30 +580,60 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # } for model_name, model in models.items(): + # Split the data into training and testing sets. + logging.info('Splitting the data into training and testing sets (0.8/0.2).') + X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) + + # If SVC, scale the data. + if model_name == "SVC": + from sklearn.preprocessing import StandardScaler + scaler = StandardScaler() + X_train = scaler.fit_transform(X_train) + X_test = scaler.transform(X_test) + + # Train the model. logging.info('Training the %s model.', model_name) - # logging.info('Training the model.') - # # model = LogisticRegression() - # model = RandomForestClassifier(n_estimators=100, random_state=42) - model.fit(features, labels) + # model.fit(features, labels) + model.fit(X_train, y_train) + + # Get predicted probabilities for the training and testing sets. + y_train_prob = model.predict_proba(X_train)[:, 1] + y_test_prob = model.predict_proba(X_test)[:, 1] + + # Compute the ROC curve and ROC area for the training set. + fpr_train, tpr_train, _ = roc_curve(y_train, y_train_prob) + roc_auc_train = auc(fpr_train, tpr_train) + + # Compute the ROC curve and ROC area for the testing set. + fpr_test, tpr_test, thresholds = roc_curve(y_test, y_test_prob) + roc_auc_test = auc(fpr_test, tpr_test) - # Get predicted probabilities. - logging.info('Getting predicted probabilities.') - y_pred = model.predict(features) - y_prob = model.predict_proba(features)[:, 1] + # Use Youden's J statistic to find the optimal threshold. + j_scores = tpr_test - fpr_test + optimal_idx = np.argmax(j_scores) + optimal_threshold = thresholds[optimal_idx] + logging.info('Optimal threshold (Youden\'s J statistic): %f', optimal_threshold) + logging.info('True positive rate (sensitivity): %f', tpr_test[optimal_idx]) + logging.info('False positive rate (1 - specificity): %f', fpr_test[optimal_idx]) + + # Print the ROC AUC scores. + logging.info('ROC AUC score for the training set: %f', roc_auc_train) + logging.info('ROC AUC score for the testing set: %f', roc_auc_test) # Get the ROC curve. - fpr, tpr, thresholds = roc_curve(labels, y_prob) - roc_auc = auc(fpr, tpr) + # fpr, tpr, thresholds = roc_curve(labels, y_prob) + # roc_auc = auc(fpr, tpr) - # Plot the ROC curve. + # Plot the ROC curve for the training set. plt.figure() - plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) + # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') - plt.title('Receiver Operating Characteristic') + plt.title('Receiver Operating Characteristic (Training Set)') plt.legend(loc='lower right') # Save the plot to the output directory. roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') @@ -597,48 +641,133 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): plt.close() logging.info('Saved the ROC curve to %s', roc_plot_path) - # Get the precision-recall curve. - precision, recall, thresholds = precision_recall_curve(labels, y_prob) - pr_auc = auc(recall, precision) - - # Plot the precision-recall curve. + # Plot the ROC curve for the testing set. plt.figure() - plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) - plt.xlabel('Recall') - plt.ylabel('Precision') - plt.title('Precision-Recall Curve') - plt.legend(loc='lower left') - # Save the plot to the output directory. - pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') - plt.savefig(pr_plot_path) - plt.close() - logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) - - # Get the confusion matrix. - cm = confusion_matrix(labels, y_pred) - logging.info('Confusion matrix:\n%s', cm) - - # Plot the confusion matrix using seaborn. - plt.figure() - sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') - plt.xlabel('Predicted') - plt.ylabel('True') - plt.title('Confusion Matrix') + plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_test) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('Receiver Operating Characteristic (Testing Set)') + plt.legend(loc='lower right') # Save the plot to the output directory. - cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') - plt.savefig(cm_plot_path) + roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') + plt.savefig(roc_plot_path) plt.close() - logging.info('Saved the confusion matrix to %s', cm_plot_path) - - # Print the classification report. - logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + logging.info('Saved the ROC curve to %s', roc_plot_path) - # Save the report to a file. - report_path = os.path.join(output_directory, model_name + '_classification_report.txt') - with open(report_path, 'w') as f: - f.write(classification_report(labels, y_pred)) + # Feature importance for Random Forest and XGBoost. + if model_name in ["Random Forest", "XGBoost"]: + # Get feature importances. + importances = model.feature_importances_ + + # Sort the feature importances in descending order. + indices = np.argsort(importances)[::-1] + + # Print the feature ranking. + logging.info('Feature ranking:') + for f in range(X_train.shape[1]): + logging.info('%d. Feature %d (%f)', f + 1, indices[f], importances[indices[f]]) + + # Plot the feature importances. + plt.figure() + plt.title('Feature Importances') + plt.bar(range(X_train.shape[1]), importances[indices], align='center') + plt.xticks(range(X_train.shape[1]), indices) + plt.xlim([-1, X_train.shape[1]]) + # Save the plot to the output directory. + importance_plot_path = os.path.join(output_directory, model_name + '_feature_importances.png') + plt.savefig(importance_plot_path) + plt.close() + logging.info('Saved the feature importances plot to %s', importance_plot_path) + + # For SVC, get the support vectors. + if model_name == "SVC": + # Get the support vectors. + support_vectors = model.support_vectors_ + + # Plot the support vectors. + plt.figure() + plt.scatter(X_train[:, 0], X_train[:, 1], c='blue', s=30, label='Training data') + plt.scatter(support_vectors[:, 0], support_vectors[:, 1], c='red', s=50, label='Support vectors') + plt.title('Support Vectors') + plt.xlabel('Feature 1') + plt.ylabel('Feature 2') + plt.legend() + # Save the plot to the output directory. + sv_plot_path = os.path.join(output_directory, model_name + '_support_vectors.png') + plt.savefig(sv_plot_path) + plt.close() + logging.info('Saved the support vectors plot to %s', sv_plot_path) + + # For logistic regression, get the coefficients. + if model_name == "Logistic Regression": + # Get the coefficients. + coefficients = model.coef_[0] + + # Sort the coefficients in descending order. + indices = np.argsort(coefficients)[::-1] + + # Print the feature ranking. + logging.info('Feature ranking:') + for f in range(X_train.shape[1]): + logging.info('%d. Feature %d (%f)', f + 1, indices[f], coefficients[indices[f]]) + + # Plot the coefficients. + plt.figure() + plt.title('Feature Coefficients') + plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') + plt.xticks(range(X_train.shape[1]), indices) + plt.xlim([-1, X_train.shape[1]]) + # Save the plot to the output directory. + coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') + plt.savefig(coeff_plot_path) + plt.close() + logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) + + # Get the precision-recall curve f + # precision, recall, thresholds = precision_recall_curve(labels, y_prob) + # pr_auc = auc(recall, precision) - logging.info('Saved the classification report to %s', report_path) + # Plot the precision-recall curve. + # plt.figure() + # plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) + # plt.xlabel('Recall') + # plt.ylabel('Precision') + # plt.title('Precision-Recall Curve') + # plt.legend(loc='lower left') + # # Save the plot to the output directory. + # pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') + # plt.savefig(pr_plot_path) + # plt.close() + # logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) + + # # Get the confusion matrix. + # cm = confusion_matrix(labels, y_pred) + # logging.info('Confusion matrix:\n%s', cm) + + # # Plot the confusion matrix using seaborn. + # plt.figure() + # sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + # plt.xlabel('Predicted') + # plt.ylabel('True') + # plt.title('Confusion Matrix') + # # Save the plot to the output directory. + # cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') + # plt.savefig(cm_plot_path) + # plt.close() + # logging.info('Saved the confusion matrix to %s', cm_plot_path) + + # # Print the classification report. + # logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + + # # Save the report to a file. + # report_path = os.path.join(output_directory, model_name + '_classification_report.txt') + # with open(report_path, 'w') as f: + # f.write(classification_report(labels, y_pred)) + + # logging.info('Saved the classification report to %s', report_path) # Save the model. model_path = os.path.join(output_directory, model_name + '_caller_model.pkl') @@ -648,11 +777,11 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Run cross-validation by splitting the data into 5 folds and training # the model on each fold. - from sklearn.model_selection import cross_val_score - logging.info('Running cross-validation.') - scores = cross_val_score(model, features, labels, cv=5) - logging.info('Cross-validation scores: %s', scores) - logging.info('Mean cross-validation score: %f', scores.mean()) + # from sklearn.model_selection import cross_val_score + # logging.info('Running cross-validation.') + # scores = cross_val_score(model, features, labels, cv=5, scoring='f1') + # logging.info('Cross-validation scores: %s', scores) + # logging.info('Mean cross-validation score: %f', scores.mean()) # Run the program. From 1fbb2731bdb293364ce7847fa24b06c3527a67e6 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 15 Apr 2025 11:31:28 -0400 Subject: [PATCH 20/93] create extract features module --- contextscore/extract_features.py | 523 ++++++++++++++---- contextscore/predict.py | 55 +- contextscore/train_full_model.py | 906 ++++++++++++++++--------------- 3 files changed, 923 insertions(+), 561 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index f9282c0..bdc2b86 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -16,150 +16,451 @@ import logging import numpy as np import pandas as pd - +import subprocess import joblib -import seaborn as sb -import matplotlib.pyplot as plt +from io import StringIO + + +def read_cytoband_file(cytoband_file): + """Get the centromere and telomere regions for each chromosome.""" + cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) + chrom_dict = {} + for chrom in cytobands['chrom'].unique(): + + # Skip chrM + if chrom == 'chrM': + continue + + chrom_df = cytobands[cytobands['chrom'] == chrom] + # First and last bands are the telomeres. + # First telomere: + chrom_dict[chrom] = { + 'telomerep': chrom_df.iloc[0]['name'], + 'telomereq': chrom_df.iloc[-1]['name'] + } + + # Identify the 2 centromeres for p and q (contain "acen"). + centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] + centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] + if not centromere_p.empty: + chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] + if not centromere_q.empty: + chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] + + # print("Chromosome:", chrom) + # print(chrom_dict[chrom]) + + return chrom_dict + +# tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir + +def extract_features(input_bed, annovar_path, db_path, outdiranno): + """Extract the features from the BED file, columns are in the first row: + chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size + """ + logging.info('Extracting features from the BED file %s', input_bed) + + # Load a dictionary mapping chromosome names to numbers. + # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + # chrom_dict = joblib.load(chrom_dict_path) + + # Read in the BED file. + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) + + # # Print the number of NaN values + # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) + + # # Map the chromosome names to numbers. + # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) + + # # Print the number of NaN values + # logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of alignment types to numbers. + # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", + # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" + aln_type_map = { + 'CIGARINS': 0, + 'CIGARDEL': 1, + 'CIGARCLIP': 2, + 'SPLIT': 3, + 'SPLITDIST1': 4, + 'SPLITDIST2': 5, + 'SPLITINV': 6, + 'SUPPINV': 7, + 'HMM': 8, + 'UNKNOWN': 9 + } + + # Map the alignment types to numbers. + bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + + # Print the number of NaN values + logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of SV types to numbers. + # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" + sv_type_map = { + 'DEL': 0, + 'DUP': 1, + 'INV': 2, + 'INS': 3, + 'BND': 4, + 'UNKNOWN': 5 + } + + # Map the SV types to numbers. + bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) + + # Print the number of NaN values + logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) + + # Create a map of genotypes to numbers. + # Genotypes are: "0/0", "0/1", "1/1", "./." + genotype_map = { + '0/0': 0, + '0/1': 1, + '1/1': 2, + './.': 3 + } + + # Map the genotypes to numbers. + bed_df['genotype'] = bed_df['genotype'].map(genotype_map) + + # Print the number of NaN values + logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) -# data = joblib.load("test.jl") -# p = sb.countplot(data=data[data["state"] == 'tp'], x="szbin", hue="svtype", hue_order=["DEL", "INS"]) -# plt.xticks(rotation=45, ha='right') -# p.set(title="True Positives by svtype and szbin") + # Check if any features are missing. + if bed_df.isnull().values.any(): + logging.error('Features are missing.') -def read_vcf(filepath): - """Read in the VCF file.""" - vcf_df = pd.read_csv(filepath, sep='\t', comment='#', header=None, usecols=[0, 1, 7, 8], \ - names=['CHROM', 'POS', 'INFO', 'FORMAT'], \ - dtype={'CHROM': str, 'POS': np.int64, 'INFO': str, 'FORMAT': str}) - return vcf_df + # Get the rows with missing features. + missing_features = bed_df[bed_df.isnull().any(axis=1)] -def extract_features(input_vcf): - """Extract the features from the VCF file's data.""" - # Read in the VCF file. - vcf_df = read_vcf(input_vcf) + # Print the rows with missing features. + logging.error(missing_features) + sys.exit(1) - # Extract the alignment type (string) from the INFO column. - aln_type = vcf_df['INFO'].str.extract(r'ALN=(\w+)', expand=False) + # Add annotations to the features. + add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno) - # Extract the cluster size from the INFO column. - cluster_size = vcf_df['INFO'].str.extract(r'CLUSTER=(\d+)', expand=False).astype(np.int32) + # Finally map chromosome names to numbers. + # Load a dictionary mapping chromosome names to numbers. + chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + chrom_dict = joblib.load(chrom_dict_path) - # Set 0 cluster size to nan. - cluster_size[cluster_size == 0] = np.nan + # Print the number of NaN values + logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) - # Extract GT from the FORMAT column. - gt = vcf_df['FORMAT'].str.extract(r'GT=(\d+)', expand=False).astype(np.int32) + # Map the chromosome names to numbers. + bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) - # Set ./. GT to nan. - gt[gt == './.'] = np.nan + # Actually drop the chrom, start, end columns. + bed_df.drop(columns=['chrom', 'start', 'end'], inplace=True) - # Check if any GT values are missing. - if gt.isnull().values.any(): - logging.info('Number of missing GT values: ' + str(gt.isnull().sum())) + logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', bed_df.columns) - # Extract DP from the FORMAT column. - dp = vcf_df['FORMAT'].str.extract(r'DP=(\d+)', expand=False).astype(np.int32) + # Return the features. + return bed_df - # Get the array of chromosome names. - chrom = vcf_df['CHROM'] - # Create a key to map the chromosome names to a unique integer. +def run_bedtools_intersect(input_bed, table_bed): + """Run bedtools intersect to annotate the BED file.""" + # Check if bedtools is installed. + try: + subprocess.run(["bedtools", "--version"], check=True) + except subprocess.CalledProcessError: + logging.error('bedtools is not installed. Please install bedtools.') + sys.exit(1) - # First, get all unique chromosome names. - chrom_unique = chrom.unique() + # Check if the input BED file exists. + if not os.path.exists(input_bed): + logging.error('Input BED file does not exist: %s', input_bed) + sys.exit(1) - # Next, create a dictionary to map the chromosome names to integers. - chrom_dict = {chrom: i for i, chrom in enumerate(chrom_unique)} + # Check if the table BED file exists. + if not os.path.exists(table_bed): + logging.error('Table BED file does not exist: %s', table_bed) + sys.exit(1) - # Finally, map the chromosome names to integers. - chrom = chrom.map(chrom_dict) + # Run bedtools intersect to annotate the BED file. + cmd = [ + "bedtools", "intersect", + "-a", input_bed, + "-b", table_bed, + "-wa", "-wb" + ] + logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) + try: + result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) + + # Parse the output of bedtools intersect into a pandas DataFrame. + logging.info('Parsing the output of bedtools intersect.') + annotated_bed = pd.read_csv( + StringIO(result.stdout), + sep='\t', + header=None, + names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], + usecols=[0, 1, 2, 12, 13, 14, 15], #10, 11, 12, 13], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} + ) + + # Print the first few rows of the annotated BED file. + logging.info('Annotated BED file:\n%s', annotated_bed.head()) + + return annotated_bed + + except subprocess.CalledProcessError as e: + logging.error('Error annotating the BED file: %s', e) + logging.error('Please check the input and table BED files.') + sys.exit(1) - # Check if any chromosome names are missing. - if chrom.isnull().values.any(): - logging.error('Chromosome name is missing.') +def bed_to_annovar_input(bed_file): + """Convert the BED file to ANNOVAR input format.""" + output_file = bed_file.replace('.bed', '.avinput') + logging.info('Converting the BED file to ANNOVAR input format.') + + # Read the BED file using pandas (first line is the header with the column names). + # df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', + # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) + # df = pd.read_csv(bed_file, sep='\t', header=0, comment='#', + # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], usecols=[0, 1, 2, 3, 4], + # dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32, + # 'SVTYPE': str, 'SVLEN': np.int32}) + df = pd.read_csv(bed_file, sep='\t', usecols=[0, 1, 2], + names=["CHROM", "POS", "END"], + dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32}) + + # Check if the BED file is empty. + logging.info('Number of rows in the BED file: %d', df.shape[0]) + logging.info('First 5 rows of the BED file:\n%s', df.head()) + + # The ANNOVAR input format requires the following columns: + # 1. Chromosome + # 2. Start position + # 3. End position + # 4. Reference allele + # 5. Alternate allele + # We will use the first three columns from the BED file and add two dummy + # columns for the reference and alternate alleles (0, and -) since gnomAD does not + # provide the sequence information for the SVs. + + # Create a new dataframe with the required columns. + annovar_df = pd.DataFrame() + annovar_df['chrom'] = df['CHROM'] + annovar_df['start'] = df['POS'] + annovar_df['end'] = df['END'] + annovar_df['ref'] = '0' + annovar_df['alt'] = '-' + + # Save the tab-delimited dataframe to a file. + logging.info('Saving the ANNOVAR input file to %s', output_file) + annovar_df.to_csv(output_file, sep='\t', index=False, header=False) + logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) + logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) + logging.info('Saved the ANNOVAR input file to %s', output_file) + + return output_file + + +def download_annovar_db(annovar_path, db_path, db_name): + """Download the ANNOVAR database if it does not exist.""" + logging.info('Downloading the database:' + db_name) + cmd = [ + f"{annovar_path}/annotate_variation.pl", + "-buildver", "hg38", + "-downdb", db_name, + db_path + ] + # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ + + # Run the command to download the database. + logging.info('Running the command to download the database: %s', " ".join(cmd)) + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error downloading the database: %s', e) + logging.error('Please check the ANNOVAR path and database path.') sys.exit(1) - else: - # Print space-separated chromosome names. - logging.info('Chromosomes: ' + ' '.join(chrom.unique().astype(str))) + logging.info('Downloaded the database %s successfully.', db_name) + + +def annotate(annovar_input, annovar_path, db_path, output_dir): + """Annotate regions.""" + logging.info('Annotating regions using ANNOVAR.') + + annotations_dir = os.path.join(output_dir, 'regions') + logging.info('Creating the output directory: %s', annotations_dir) + cmd = [ + f"{annovar_path}/table_annovar.pl", + annovar_input, + db_path, + "--buildver hg38", + "--out", annotations_dir, + "--remove", + "--protocol genomicSuperDups,cytoBand", + "--operation r,r", + "--nastring .", + "-polish" + ] + # "--protocol genomicSuperDups", + + try: + subprocess.run(" ".join(cmd), shell=True, check=True) + except subprocess.CalledProcessError as e: + logging.error('Error annotating: %s', e) + logging.error('Please check the ANNOVAR path and database path.') + sys.exit(1) + + logging.info('Completed annotations.') + + +def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): + """Check if the cytoband is a telomere or centromere.""" + if chrom not in chrom_dict: + return False, False # Not in any region. + + is_telomere = False + is_centromere = False + # Check if the cytoband is a telomere. + try: + if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: + is_telomere = True + except TypeError: + # Handle the case where telomerep is not defined. + logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) + logging.warning('Cytoband: %s', cytoband) + logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) + is_telomere = False + if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: + is_telomere = True + if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: + is_centromere = True + if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: + is_centromere = True + + return is_telomere, is_centromere - # Get the start and end positions. - start = vcf_df['POS'] - # Check if any start positions are missing. - if start.isnull().values.any(): - logging.error('Start position is missing.') - sys.exit(1) +def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): + """Add annotations to the features.""" + logging.info('Adding annotations to the features.') - # Get the SV length from the INFO column. - sv_length = vcf_df['INFO'].str.extract(r'SVLEN=(-?\d+)', expand=False).astype(np.int32) + # --------------------------------------------------------------- + # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). + # https://webs.iiitd.edu.in/raghava/humcfs/download.html + # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ + fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) + fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed) - # Check if any SV lengths are missing. - if sv_length.isnull().values.any(): - logging.error('SV length is missing.') - sys.exit(1) + # Merge the fragile sites annotations with the true positive data. + data['fragile_site'] = data.merge(fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - # Get the SV type from the INFO column. - sv_type = vcf_df['INFO'].str.extract(r'SVTYPE=(\w+)', expand=False) + logging.info('Number of records with fragile sites: %d', data['fragile_site'].sum()) + logging.info('Total number of records: %d', data.shape[0]) - # If INFO/REPTYPE=DUP, then the SV type is a duplication. - sv_type[vcf_df['INFO'].str.contains('REPTYPE=DUP')] = 'DUP' + # --------------------------------------------------------------- + # Annotate conserved regions using a UCSC Table Browser BED file for + # phastCons100way (GRCh38/hg38). + phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" + logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) + phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed) - # Convert the SV type to integers. - sv_type = sv_type.replace('DEL', '0') - sv_type = sv_type.replace('DUP', '1') - sv_type = sv_type.replace('INV', '2') - sv_type = sv_type.replace('INS', '3') - sv_type = sv_type.replace('BND', '4') - sv_type = sv_type.astype(np.int32) + # Merge the phastCons annotations with the true positive data. + data['phastCons'] = data.merge(phastCons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - # Check if any SV types are missing. - if sv_type.isnull().values.any(): - logging.error('SV type is missing.') - sys.exit(1) + logging.info('Number of records with conserved regions: %d', data['phastCons'].sum()) + logging.info('Total number of records: %d', data.shape[0]) + + # --------------------------------------------------------------- + # Annotate simple repeats using a UCSC Table Browser BED file for + # simpleRepeat (GRCh38/hg38). + simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" + logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) + simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed) - # Loop through the columns and check if any values are missing for all of - # the feature arrays. - for col in [chrom, start, sv_length, sv_type, read_support, clipped_bases]: - if col.isnull().values.all(): - logging.error('All values are missing for a feature.') - logging.error(col) - sys.exit(1) - - # Print the first 4 rows of the features. - logging.info('Features:') - logging.info(pd.DataFrame({'chrom': chrom.head(4), 'start': start.head(4), 'sv_length': sv_length.head(4), \ - 'sv_type': sv_type.head(4), 'read_support': read_support.head(4), \ - 'clipped_bases': clipped_bases.head(4)})) + # Merge the simpleRepeat annotations with the true positive data. + data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() + + logging.info('Number of records with simple repeats: %d', data['simpleRepeat'].sum()) + logging.info('Total number of records: %d', data.shape[0]) + + # --------------------------------------------------------------- + # Annotate the SVs using ANNOVAR. - # Check that all features have the same length. - if not all(len(col) == len(chrom) for col in [start, sv_length, sv_type, read_support, clipped_bases]): - logging.error('Features do not have the same length.') - - # Print the length of each feature. - logging.error('Chromosomes: ' + str(len(chrom))) - logging.error('Start positions: ' + str(len(start))) - logging.error('SV lengths: ' + str(len(sv_length))) - logging.error('SV types: ' + str(len(sv_type))) - logging.error('Read support: ' + str(len(read_support))) - logging.error('Clipped bases: ' + str(len(clipped_bases))) + # Download the segmental duplication database + download_annovar_db(annovar_path, db_path, "genomicSuperDups") - sys.exit(1) + # Download the cytoband database + download_annovar_db(annovar_path, db_path, "cytoBand") - # Create a dataframe of the features. - features = pd.DataFrame({'chrom': chrom, 'start': start, 'sv_length': sv_length, 'sv_type': sv_type, \ - 'read_support': read_support, 'clipped_bases': clipped_bases}) + # Set up a dictionary for each chromosome, mapping the cytoband to the + # centromere and telomere regions. + cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. + cytoband_dict = read_cytoband_file(cytoband_file) - # Check if any features are missing. - if features.isnull().values.any(): - logging.error('Features are missing.') + logging.info('Converting the true positive BED file to ANNOVAR input format.') + annovar_file = bed_to_annovar_input(input_bed) - # Get the rows with missing features. - missing_features = features[features.isnull().any(axis=1)] + logging.info('Annotating the SVs using ANNOVAR.') + if not os.path.exists(anno_outdir): + os.makedirs(anno_outdir) - # Print the rows with missing features. - logging.error(missing_features) + annotate(annovar_file, annovar_path, db_path, anno_outdir) + + anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') + if not os.path.exists(anno_file): + logging.error('ANNOVAR annotation file does not exist: %s', anno_file) sys.exit(1) - # Return the features. - return features + # Read the ANNOVAR output file. + logging.info('Reading the ANNOVAR output file: %s', anno_file) + anno_df = pd.read_csv(anno_file, sep='\t', header=0, comment='#') + + # Replace NaN values for the genomicSuperDups column with 0. + # anno_df['genomicSuperDups'].fillna(0, inplace=True) + + # # Replace NaN values for the cytoBand column with "" + # # anno_df['cytoBand'].fillna("", inplace=True).astype(str) + # anno_df['cytoBand'] = anno_df['cytoBand'].fillna("").astype(str) + + # Convert chr, start, end to the same data types as the data. + anno_df['Chr'] = anno_df['Chr'].astype(str) + anno_df['Start'] = anno_df['Start'].astype(np.int32) + anno_df['End'] = anno_df['End'].astype(np.int32) + + # Merge the ANNOVAR annotations with the data. + logging.info('Merging the ANNOVAR annotations with the data.') + data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') + + # Extract segmental duplication scores. + def extract_max_score(score_series): + """Extract and return the maximum Score= value from a series.""" + scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) + return scores.max() if not scores.empty else 0 + + # Extract the maximum score from the segmental duplication annotations. + data['segdup'] = extract_max_score(data['genomicSuperDups']) + + # Extract the cytoband annotations. + def get_cyto_info(row): + """Get telomere and centromere information for a row.""" + if pd.notna(row['cytoBand']): + return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) + + return (False, False) + + data['telomere'], data['centromere'] = data.apply(get_cyto_info, axis=1, result_type='expand') + + # Print the current columns in the data. + logging.info('Current columns in the data: %s', data.columns) + + # Drop the unnecessary columns. + data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) + + logging.info('Number of records after adding annotations: %d', data.shape[0]) + logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) diff --git a/contextscore/predict.py b/contextscore/predict.py index 70d186e..2b8a7fe 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -58,21 +58,44 @@ def score(model, input_vcf, output_vcf): if __name__ == '__main__': - # Model file - model = sys.argv[1] - - # Input VCF file to score - input_vcf = sys.argv[2] - - # Output VCF file - output_vcf = sys.argv[3] - - # Set up the logger - logging.basicConfig( - level=logging.INFO, - format='%(asctime)s %(levelname)s: %(message)s', - datefmt='%Y-%m-%d %H:%M:%S') - - # Score the structural variants + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('--input', type=str, required=True, + help='Path to the input VCF file.') + parser.add_argument('--output', type=str, required=True, + help='Path to the output VCF file.') + parser.add_argument('--model', type=str, required=True, + help='Path to the model file.') + args = parser.parse_args() + input_vcf = args.input + output_vcf = args.output + model = args.model + + # Set up logging + logging.basicConfig(level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s') + logging.info('Starting the scoring process...') + logging.info('Input VCF file: %s', input_vcf) + logging.info('Output VCF file: %s', output_vcf) + logging.info('Model file: %s', model) + + # Check if the input VCF file exists + if not os.path.isfile(input_vcf): + logging.error('Input VCF file does not exist: %s', input_vcf) + sys.exit(1) + + # Check if the model file exists + if not os.path.isfile(model): + logging.error('Model file does not exist: %s', model) + sys.exit(1) + + # Check if the output directory exists, if not create it + output_dir = os.path.dirname(output_vcf) + if not os.path.exists(output_dir): + os.makedirs(output_dir) + logging.info('Created output directory: %s', output_dir) + + # Run the scoring function score(model, input_vcf, output_vcf) + logging.info('Scoring process completed.') \ No newline at end of file diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 7d47321..ac0b076 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -65,433 +65,433 @@ import matplotlib.pyplot as plt import seaborn as sns -# from extract_features import extract_features +from extract_features import extract_features # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') -def read_cytoband_file(cytoband_file): - """Get the centromere and telomere regions for each chromosome.""" - cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) - chrom_dict = {} - for chrom in cytobands['chrom'].unique(): +# def read_cytoband_file(cytoband_file): +# """Get the centromere and telomere regions for each chromosome.""" +# cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) +# chrom_dict = {} +# for chrom in cytobands['chrom'].unique(): - # Skip chrM - if chrom == 'chrM': - continue - - chrom_df = cytobands[cytobands['chrom'] == chrom] - # First and last bands are the telomeres. - # First telomere: - chrom_dict[chrom] = { - 'telomerep': chrom_df.iloc[0]['name'], - 'telomereq': chrom_df.iloc[-1]['name'] - } - - # Identify the 2 centromeres for p and q (contain "acen"). - centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] - centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] - if not centromere_p.empty: - chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] - if not centromere_q.empty: - chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] - - # print("Chromosome:", chrom) - # print(chrom_dict[chrom]) - - return chrom_dict - -def extract_features(input_bed): - """Extract the features from the BED file, columns are in the first row: - chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size - """ - logging.info('Extracting features from the BED file %s', input_bed) - - # Load a dictionary mapping chromosome names to numbers. - # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - # chrom_dict = joblib.load(chrom_dict_path) - - # Read in the BED file. - bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], - names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], - dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) - - # # Print the number of NaN values - # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) - - # # Map the chromosome names to numbers. - # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) - - # # Print the number of NaN values - # logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of alignment types to numbers. - # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", - # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" - aln_type_map = { - 'CIGARINS': 0, - 'CIGARDEL': 1, - 'CIGARCLIP': 2, - 'SPLIT': 3, - 'SPLITDIST1': 4, - 'SPLITDIST2': 5, - 'SPLITINV': 6, - 'SUPPINV': 7, - 'HMM': 8, - 'UNKNOWN': 9 - } - - # Map the alignment types to numbers. - bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) - - # Print the number of NaN values - logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of SV types to numbers. - # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" - sv_type_map = { - 'DEL': 0, - 'DUP': 1, - 'INV': 2, - 'INS': 3, - 'BND': 4, - 'UNKNOWN': 5 - } - - # Map the SV types to numbers. - bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) - - # Print the number of NaN values - logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of genotypes to numbers. - # Genotypes are: "0/0", "0/1", "1/1", "./." - genotype_map = { - '0/0': 0, - '0/1': 1, - '1/1': 2, - './.': 3 - } - - # Map the genotypes to numbers. - bed_df['genotype'] = bed_df['genotype'].map(genotype_map) - - # Print the number of NaN values - logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) - - # Check if any features are missing. - if bed_df.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = bed_df[bed_df.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - # Return the features. - return bed_df - - -def run_bedtools_intersect(input_bed, table_bed): - """Run bedtools intersect to annotate the BED file.""" - # Check if bedtools is installed. - try: - subprocess.run(["bedtools", "--version"], check=True) - except subprocess.CalledProcessError: - logging.error('bedtools is not installed. Please install bedtools.') - sys.exit(1) - - # Check if the input BED file exists. - if not os.path.exists(input_bed): - logging.error('Input BED file does not exist: %s', input_bed) - sys.exit(1) - - # Check if the table BED file exists. - if not os.path.exists(table_bed): - logging.error('Table BED file does not exist: %s', table_bed) - sys.exit(1) - - # Run bedtools intersect to annotate the BED file. - cmd = [ - "bedtools", "intersect", - "-a", input_bed, - "-b", table_bed, - "-wa", "-wb" - ] - logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) - try: - result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) - - # Parse the output of bedtools intersect into a pandas DataFrame. - logging.info('Parsing the output of bedtools intersect.') - annotated_bed = pd.read_csv( - StringIO(result.stdout), - sep='\t', - header=None, - names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], - usecols=[0, 1, 2, 12, 13, 14, 15], #10, 11, 12, 13], - dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} - ) - - # Print the first few rows of the annotated BED file. - logging.info('Annotated BED file:\n%s', annotated_bed.head()) - - return annotated_bed - - except subprocess.CalledProcessError as e: - logging.error('Error annotating the BED file: %s', e) - logging.error('Please check the input and table BED files.') - sys.exit(1) - - -def bed_to_annovar_input(bed_file): - """Convert the BED file to ANNOVAR input format.""" - output_file = bed_file.replace('.bed', '.avinput') - logging.info('Converting the BED file to ANNOVAR input format.') - - # Read the BED file using pandas (first line is the header with the column names). - # df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', - # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) - # df = pd.read_csv(bed_file, sep='\t', header=0, comment='#', - # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], usecols=[0, 1, 2, 3, 4], - # dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32, - # 'SVTYPE': str, 'SVLEN': np.int32}) - df = pd.read_csv(bed_file, sep='\t', usecols=[0, 1, 2], - names=["CHROM", "POS", "END"], - dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32}) +# # Skip chrM +# if chrom == 'chrM': +# continue + +# chrom_df = cytobands[cytobands['chrom'] == chrom] +# # First and last bands are the telomeres. +# # First telomere: +# chrom_dict[chrom] = { +# 'telomerep': chrom_df.iloc[0]['name'], +# 'telomereq': chrom_df.iloc[-1]['name'] +# } + +# # Identify the 2 centromeres for p and q (contain "acen"). +# centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] +# centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] +# if not centromere_p.empty: +# chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] +# if not centromere_q.empty: +# chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] + +# # print("Chromosome:", chrom) +# # print(chrom_dict[chrom]) + +# return chrom_dict + +# def extract_features(input_bed): +# """Extract the features from the BED file, columns are in the first row: +# chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size +# """ +# logging.info('Extracting features from the BED file %s', input_bed) + +# # Load a dictionary mapping chromosome names to numbers. +# # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" +# # chrom_dict = joblib.load(chrom_dict_path) + +# # Read in the BED file. +# bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], +# names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], +# dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) + +# # # Print the number of NaN values +# # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) + +# # # Map the chromosome names to numbers. +# # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) + +# # # Print the number of NaN values +# # logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) + +# # Create a map of alignment types to numbers. +# # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", +# # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" +# aln_type_map = { +# 'CIGARINS': 0, +# 'CIGARDEL': 1, +# 'CIGARCLIP': 2, +# 'SPLIT': 3, +# 'SPLITDIST1': 4, +# 'SPLITDIST2': 5, +# 'SPLITINV': 6, +# 'SUPPINV': 7, +# 'HMM': 8, +# 'UNKNOWN': 9 +# } + +# # Map the alignment types to numbers. +# bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + +# # Print the number of NaN values +# logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) + +# # Create a map of SV types to numbers. +# # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" +# sv_type_map = { +# 'DEL': 0, +# 'DUP': 1, +# 'INV': 2, +# 'INS': 3, +# 'BND': 4, +# 'UNKNOWN': 5 +# } + +# # Map the SV types to numbers. +# bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) + +# # Print the number of NaN values +# logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) + +# # Create a map of genotypes to numbers. +# # Genotypes are: "0/0", "0/1", "1/1", "./." +# genotype_map = { +# '0/0': 0, +# '0/1': 1, +# '1/1': 2, +# './.': 3 +# } + +# # Map the genotypes to numbers. +# bed_df['genotype'] = bed_df['genotype'].map(genotype_map) + +# # Print the number of NaN values +# logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) + +# # Check if any features are missing. +# if bed_df.isnull().values.any(): +# logging.error('Features are missing.') + +# # Get the rows with missing features. +# missing_features = bed_df[bed_df.isnull().any(axis=1)] + +# # Print the rows with missing features. +# logging.error(missing_features) +# sys.exit(1) + +# # Return the features. +# return bed_df + + +# def run_bedtools_intersect(input_bed, table_bed): +# """Run bedtools intersect to annotate the BED file.""" +# # Check if bedtools is installed. +# try: +# subprocess.run(["bedtools", "--version"], check=True) +# except subprocess.CalledProcessError: +# logging.error('bedtools is not installed. Please install bedtools.') +# sys.exit(1) + +# # Check if the input BED file exists. +# if not os.path.exists(input_bed): +# logging.error('Input BED file does not exist: %s', input_bed) +# sys.exit(1) + +# # Check if the table BED file exists. +# if not os.path.exists(table_bed): +# logging.error('Table BED file does not exist: %s', table_bed) +# sys.exit(1) + +# # Run bedtools intersect to annotate the BED file. +# cmd = [ +# "bedtools", "intersect", +# "-a", input_bed, +# "-b", table_bed, +# "-wa", "-wb" +# ] +# logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) +# try: +# result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) + +# # Parse the output of bedtools intersect into a pandas DataFrame. +# logging.info('Parsing the output of bedtools intersect.') +# annotated_bed = pd.read_csv( +# StringIO(result.stdout), +# sep='\t', +# header=None, +# names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], +# usecols=[0, 1, 2, 12, 13, 14, 15], #10, 11, 12, 13], +# dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} +# ) + +# # Print the first few rows of the annotated BED file. +# logging.info('Annotated BED file:\n%s', annotated_bed.head()) + +# return annotated_bed + +# except subprocess.CalledProcessError as e: +# logging.error('Error annotating the BED file: %s', e) +# logging.error('Please check the input and table BED files.') +# sys.exit(1) + + +# def bed_to_annovar_input(bed_file): +# """Convert the BED file to ANNOVAR input format.""" +# output_file = bed_file.replace('.bed', '.avinput') +# logging.info('Converting the BED file to ANNOVAR input format.') + +# # Read the BED file using pandas (first line is the header with the column names). +# # df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', +# # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) +# # df = pd.read_csv(bed_file, sep='\t', header=0, comment='#', +# # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], usecols=[0, 1, 2, 3, 4], +# # dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32, +# # 'SVTYPE': str, 'SVLEN': np.int32}) +# df = pd.read_csv(bed_file, sep='\t', usecols=[0, 1, 2], +# names=["CHROM", "POS", "END"], +# dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32}) - # Check if the BED file is empty. - logging.info('Number of rows in the BED file: %d', df.shape[0]) - logging.info('First 5 rows of the BED file:\n%s', df.head()) - - # The ANNOVAR input format requires the following columns: - # 1. Chromosome - # 2. Start position - # 3. End position - # 4. Reference allele - # 5. Alternate allele - # We will use the first three columns from the BED file and add two dummy - # columns for the reference and alternate alleles (0, and -) since gnomAD does not - # provide the sequence information for the SVs. - - # Create a new dataframe with the required columns. - annovar_df = pd.DataFrame() - annovar_df['chrom'] = df['CHROM'] - annovar_df['start'] = df['POS'] - annovar_df['end'] = df['END'] - annovar_df['ref'] = '0' - annovar_df['alt'] = '-' - - # Save the tab-delimited dataframe to a file. - logging.info('Saving the ANNOVAR input file to %s', output_file) - annovar_df.to_csv(output_file, sep='\t', index=False, header=False) - logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) - logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) - logging.info('Saved the ANNOVAR input file to %s', output_file) - - return output_file - - -def download_annovar_db(annovar_path, db_path, db_name): - """Download the ANNOVAR database if it does not exist.""" - logging.info('Downloading the database:' + db_name) - cmd = [ - f"{annovar_path}/annotate_variation.pl", - "-buildver", "hg38", - "-downdb", db_name, - db_path - ] - # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ - - # Run the command to download the database. - logging.info('Running the command to download the database: %s', " ".join(cmd)) - try: - subprocess.run(" ".join(cmd), shell=True, check=True) - except subprocess.CalledProcessError as e: - logging.error('Error downloading the database: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - logging.info('Downloaded the database %s successfully.', db_name) - - -def annotate(annovar_input, annovar_path, db_path, output_dir): - """Annotate regions.""" - logging.info('Annotating regions using ANNOVAR.') - - annotations_dir = os.path.join(output_dir, 'regions') - logging.info('Creating the output directory: %s', annotations_dir) - cmd = [ - f"{annovar_path}/table_annovar.pl", - annovar_input, - db_path, - "--buildver hg38", - "--out", annotations_dir, - "--remove", - "--protocol genomicSuperDups,cytoBand", - "--operation r,r", - "--nastring .", - "-polish" - ] - # "--protocol genomicSuperDups", - - try: - subprocess.run(" ".join(cmd), shell=True, check=True) - except subprocess.CalledProcessError as e: - logging.error('Error annotating: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - - logging.info('Completed annotations.') - - -def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): - """Check if the cytoband is a telomere or centromere.""" - if chrom not in chrom_dict: - return False, False # Not in any region. - - is_telomere = False - is_centromere = False - # Check if the cytoband is a telomere. - try: - if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: - is_telomere = True - except TypeError: - # Handle the case where telomerep is not defined. - logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) - logging.warning('Cytoband: %s', cytoband) - logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) - is_telomere = False - if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: - is_telomere = True - if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: - is_centromere = True - if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: - is_centromere = True +# # Check if the BED file is empty. +# logging.info('Number of rows in the BED file: %d', df.shape[0]) +# logging.info('First 5 rows of the BED file:\n%s', df.head()) + +# # The ANNOVAR input format requires the following columns: +# # 1. Chromosome +# # 2. Start position +# # 3. End position +# # 4. Reference allele +# # 5. Alternate allele +# # We will use the first three columns from the BED file and add two dummy +# # columns for the reference and alternate alleles (0, and -) since gnomAD does not +# # provide the sequence information for the SVs. + +# # Create a new dataframe with the required columns. +# annovar_df = pd.DataFrame() +# annovar_df['chrom'] = df['CHROM'] +# annovar_df['start'] = df['POS'] +# annovar_df['end'] = df['END'] +# annovar_df['ref'] = '0' +# annovar_df['alt'] = '-' + +# # Save the tab-delimited dataframe to a file. +# logging.info('Saving the ANNOVAR input file to %s', output_file) +# annovar_df.to_csv(output_file, sep='\t', index=False, header=False) +# logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) +# logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) +# logging.info('Saved the ANNOVAR input file to %s', output_file) + +# return output_file + + +# def download_annovar_db(annovar_path, db_path, db_name): +# """Download the ANNOVAR database if it does not exist.""" +# logging.info('Downloading the database:' + db_name) +# cmd = [ +# f"{annovar_path}/annotate_variation.pl", +# "-buildver", "hg38", +# "-downdb", db_name, +# db_path +# ] +# # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ + +# # Run the command to download the database. +# logging.info('Running the command to download the database: %s', " ".join(cmd)) +# try: +# subprocess.run(" ".join(cmd), shell=True, check=True) +# except subprocess.CalledProcessError as e: +# logging.error('Error downloading the database: %s', e) +# logging.error('Please check the ANNOVAR path and database path.') +# sys.exit(1) +# logging.info('Downloaded the database %s successfully.', db_name) + + +# def annotate(annovar_input, annovar_path, db_path, output_dir): +# """Annotate regions.""" +# logging.info('Annotating regions using ANNOVAR.') + +# annotations_dir = os.path.join(output_dir, 'regions') +# logging.info('Creating the output directory: %s', annotations_dir) +# cmd = [ +# f"{annovar_path}/table_annovar.pl", +# annovar_input, +# db_path, +# "--buildver hg38", +# "--out", annotations_dir, +# "--remove", +# "--protocol genomicSuperDups,cytoBand", +# "--operation r,r", +# "--nastring .", +# "-polish" +# ] +# # "--protocol genomicSuperDups", + +# try: +# subprocess.run(" ".join(cmd), shell=True, check=True) +# except subprocess.CalledProcessError as e: +# logging.error('Error annotating: %s', e) +# logging.error('Please check the ANNOVAR path and database path.') +# sys.exit(1) + +# logging.info('Completed annotations.') + + +# def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): +# """Check if the cytoband is a telomere or centromere.""" +# if chrom not in chrom_dict: +# return False, False # Not in any region. + +# is_telomere = False +# is_centromere = False +# # Check if the cytoband is a telomere. +# try: +# if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: +# is_telomere = True +# except TypeError: +# # Handle the case where telomerep is not defined. +# logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) +# logging.warning('Cytoband: %s', cytoband) +# logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) +# is_telomere = False +# if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: +# is_telomere = True +# if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: +# is_centromere = True +# if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: +# is_centromere = True - return is_telomere, is_centromere +# return is_telomere, is_centromere -def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): - """Add annotations to the features.""" - logging.info('Adding annotations to the features.') +# def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): +# """Add annotations to the features.""" +# logging.info('Adding annotations to the features.') - # --------------------------------------------------------------- - # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). - # https://webs.iiitd.edu.in/raghava/humcfs/download.html - # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ - fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" - logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) - fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed) +# # --------------------------------------------------------------- +# # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). +# # https://webs.iiitd.edu.in/raghava/humcfs/download.html +# # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ +# fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" +# logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) +# fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed) - # Merge the fragile sites annotations with the true positive data. - data['fragile_site'] = data.merge(fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() +# # Merge the fragile sites annotations with the true positive data. +# data['fragile_site'] = data.merge(fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - logging.info('Number of records with fragile sites: %d', data['fragile_site'].sum()) - logging.info('Total number of records: %d', data.shape[0]) +# logging.info('Number of records with fragile sites: %d', data['fragile_site'].sum()) +# logging.info('Total number of records: %d', data.shape[0]) - # --------------------------------------------------------------- - # Annotate conserved regions using a UCSC Table Browser BED file for - # phastCons100way (GRCh38/hg38). - phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" - logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) - phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed) +# # --------------------------------------------------------------- +# # Annotate conserved regions using a UCSC Table Browser BED file for +# # phastCons100way (GRCh38/hg38). +# phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" +# logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) +# phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed) - # Merge the phastCons annotations with the true positive data. - data['phastCons'] = data.merge(phastCons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() +# # Merge the phastCons annotations with the true positive data. +# data['phastCons'] = data.merge(phastCons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - logging.info('Number of records with conserved regions: %d', data['phastCons'].sum()) - logging.info('Total number of records: %d', data.shape[0]) +# logging.info('Number of records with conserved regions: %d', data['phastCons'].sum()) +# logging.info('Total number of records: %d', data.shape[0]) - # --------------------------------------------------------------- - # Annotate simple repeats using a UCSC Table Browser BED file for - # simpleRepeat (GRCh38/hg38). - simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" - logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) - simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed) +# # --------------------------------------------------------------- +# # Annotate simple repeats using a UCSC Table Browser BED file for +# # simpleRepeat (GRCh38/hg38). +# simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" +# logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) +# simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed) - # Merge the simpleRepeat annotations with the true positive data. - data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() +# # Merge the simpleRepeat annotations with the true positive data. +# data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - logging.info('Number of records with simple repeats: %d', data['simpleRepeat'].sum()) - logging.info('Total number of records: %d', data.shape[0]) +# logging.info('Number of records with simple repeats: %d', data['simpleRepeat'].sum()) +# logging.info('Total number of records: %d', data.shape[0]) - # --------------------------------------------------------------- - # Annotate the SVs using ANNOVAR. +# # --------------------------------------------------------------- +# # Annotate the SVs using ANNOVAR. - # Download the segmental duplication database - download_annovar_db(annovar_path, db_path, "genomicSuperDups") +# # Download the segmental duplication database +# download_annovar_db(annovar_path, db_path, "genomicSuperDups") - # Download the cytoband database - download_annovar_db(annovar_path, db_path, "cytoBand") +# # Download the cytoband database +# download_annovar_db(annovar_path, db_path, "cytoBand") - # Set up a dictionary for each chromosome, mapping the cytoband to the - # centromere and telomere regions. - cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. - cytoband_dict = read_cytoband_file(cytoband_file) +# # Set up a dictionary for each chromosome, mapping the cytoband to the +# # centromere and telomere regions. +# cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. +# cytoband_dict = read_cytoband_file(cytoband_file) - logging.info('Converting the true positive BED file to ANNOVAR input format.') - annovar_file = bed_to_annovar_input(input_bed) +# logging.info('Converting the true positive BED file to ANNOVAR input format.') +# annovar_file = bed_to_annovar_input(input_bed) - logging.info('Annotating the SVs using ANNOVAR.') - if not os.path.exists(anno_outdir): - os.makedirs(anno_outdir) +# logging.info('Annotating the SVs using ANNOVAR.') +# if not os.path.exists(anno_outdir): +# os.makedirs(anno_outdir) - annotate(annovar_file, annovar_path, db_path, anno_outdir) +# annotate(annovar_file, annovar_path, db_path, anno_outdir) - anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') - if not os.path.exists(anno_file): - logging.error('ANNOVAR annotation file does not exist: %s', anno_file) - sys.exit(1) +# anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') +# if not os.path.exists(anno_file): +# logging.error('ANNOVAR annotation file does not exist: %s', anno_file) +# sys.exit(1) - # Read the ANNOVAR output file. - logging.info('Reading the ANNOVAR output file: %s', anno_file) - anno_df = pd.read_csv(anno_file, sep='\t', header=0, comment='#') +# # Read the ANNOVAR output file. +# logging.info('Reading the ANNOVAR output file: %s', anno_file) +# anno_df = pd.read_csv(anno_file, sep='\t', header=0, comment='#') - # Replace NaN values for the genomicSuperDups column with 0. - # anno_df['genomicSuperDups'].fillna(0, inplace=True) +# # Replace NaN values for the genomicSuperDups column with 0. +# # anno_df['genomicSuperDups'].fillna(0, inplace=True) - # # Replace NaN values for the cytoBand column with "" - # # anno_df['cytoBand'].fillna("", inplace=True).astype(str) - # anno_df['cytoBand'] = anno_df['cytoBand'].fillna("").astype(str) +# # # Replace NaN values for the cytoBand column with "" +# # # anno_df['cytoBand'].fillna("", inplace=True).astype(str) +# # anno_df['cytoBand'] = anno_df['cytoBand'].fillna("").astype(str) - # Convert chr, start, end to the same data types as the data. - anno_df['Chr'] = anno_df['Chr'].astype(str) - anno_df['Start'] = anno_df['Start'].astype(np.int32) - anno_df['End'] = anno_df['End'].astype(np.int32) +# # Convert chr, start, end to the same data types as the data. +# anno_df['Chr'] = anno_df['Chr'].astype(str) +# anno_df['Start'] = anno_df['Start'].astype(np.int32) +# anno_df['End'] = anno_df['End'].astype(np.int32) - # Merge the ANNOVAR annotations with the data. - logging.info('Merging the ANNOVAR annotations with the data.') - data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') +# # Merge the ANNOVAR annotations with the data. +# logging.info('Merging the ANNOVAR annotations with the data.') +# data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') - # Extract segmental duplication scores. - def extract_max_score(score_series): - """Extract and return the maximum Score= value from a series.""" - scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) - return scores.max() if not scores.empty else 0 +# # Extract segmental duplication scores. +# def extract_max_score(score_series): +# """Extract and return the maximum Score= value from a series.""" +# scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) +# return scores.max() if not scores.empty else 0 - # Extract the maximum score from the segmental duplication annotations. - data['segdup'] = extract_max_score(data['genomicSuperDups']) - - # Extract the cytoband annotations. - def get_cyto_info(row): - """Get telomere and centromere information for a row.""" - if pd.notna(row['cytoBand']): - return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) +# # Extract the maximum score from the segmental duplication annotations. +# data['segdup'] = extract_max_score(data['genomicSuperDups']) + +# # Extract the cytoband annotations. +# def get_cyto_info(row): +# """Get telomere and centromere information for a row.""" +# if pd.notna(row['cytoBand']): +# return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) - return (False, False) +# return (False, False) - data['telomere'], data['centromere'] = data.apply(get_cyto_info, axis=1, result_type='expand') +# data['telomere'], data['centromere'] = data.apply(get_cyto_info, axis=1, result_type='expand') - # Print the current columns in the data. - logging.info('Current columns in the data: %s', data.columns) +# # Print the current columns in the data. +# logging.info('Current columns in the data: %s', data.columns) - # Drop the unnecessary columns. - data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) +# # Drop the unnecessary columns. +# data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) - logging.info('Number of records after adding annotations: %d', data.shape[0]) - logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) +# logging.info('Number of records after adding annotations: %d', data.shape[0]) +# logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): @@ -502,44 +502,48 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # --------------------------------------------------------------- # Extract the features from the VCF files. - tp_data = extract_features(tp_bed) - fp_data = extract_features(fp_bed) + # tp_data = extract_features(tp_bed) + # fp_data = extract_features(fp_bed) + tp_anno_outdir = os.path.join(outdiranno, "tp_anno") + tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir) + fp_anno_outdir = os.path.join(outdiranno, "fp_anno") + fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir) # --------------------------------------------------------------- # Annotate the features # --------------------------------------------------------------- # Add annotations to the features. - tp_anno_outdir = os.path.join(outdiranno, "tp_anno") - add_annotations(tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir) - fp_anno_outdir = os.path.join(outdiranno, "fp_anno") - add_annotations(fp_data, fp_bed, annovar_path, db_path, fp_anno_outdir) + # tp_anno_outdir = os.path.join(outdiranno, "tp_anno") + # add_annotations(tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir) + # fp_anno_outdir = os.path.join(outdiranno, "fp_anno") + # add_annotations(fp_data, fp_bed, annovar_path, db_path, fp_anno_outdir) # --------------------------------------------------------------- # Feature preparation # --------------------------------------------------------------- - # Finally map chromosome names to numbers. - # Load a dictionary mapping chromosome names to numbers. - chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - chrom_dict = joblib.load(chrom_dict_path) + # # Finally map chromosome names to numbers. + # # Load a dictionary mapping chromosome names to numbers. + # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" + # chrom_dict = joblib.load(chrom_dict_path) - # Print the number of NaN values - logging.info('Number of NaN values: %d', tp_data.isnull().sum().sum()) + # # Print the number of NaN values + # logging.info('Number of NaN values: %d', tp_data.isnull().sum().sum()) - # Map the chromosome names to numbers. - tp_data['chrom'] = tp_data['chrom'].map(chrom_dict) - fp_data['chrom'] = fp_data['chrom'].map(chrom_dict) + # # Map the chromosome names to numbers. + # tp_data['chrom'] = tp_data['chrom'].map(chrom_dict) + # fp_data['chrom'] = fp_data['chrom'].map(chrom_dict) - # Actually drop the chrom, start, end columns. - tp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) - fp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) + # # Actually drop the chrom, start, end columns. + # tp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) + # fp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) - logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', tp_data.columns) - logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (FP): %s', fp_data.columns) + # logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', tp_data.columns) + # logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (FP): %s', fp_data.columns) # Print the number of NaN values - logging.info('Number of NaN values after chr mapping: %d', tp_data.isnull().sum().sum()) + # logging.info('Number of NaN values after chr mapping: %d', tp_data.isnull().sum().sum()) # Add the labels. tp_data['label'] = 1 @@ -572,7 +576,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): "Logistic Regression": LogisticRegression(), "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), - "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) + "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } # models = { @@ -620,10 +624,6 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): logging.info('ROC AUC score for the training set: %f', roc_auc_train) logging.info('ROC AUC score for the testing set: %f', roc_auc_test) - # Get the ROC curve. - # fpr, tpr, thresholds = roc_curve(labels, y_prob) - # roc_auc = auc(fpr, tpr) - # Plot the ROC curve for the training set. plt.figure() plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) @@ -657,6 +657,36 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): plt.close() logging.info('Saved the ROC curve to %s', roc_plot_path) + # Compute precision-recall curve + precision, recall, thresholds_pr = precision_recall_curve(y_test, y_test_prob) + + logging.info('precision size: %d', len(precision)) + logging.info('recall size: %d', len(recall)) + logging.info('thresholds size: %d', len(thresholds_pr)) + + # Find the threshold that gives the highest precision (ideally with + # recall > 0) or where precision == 1.0 (0 false positives). + precision_1_indices = np.where(precision[:-1] == 1.0)[0] + if len(precision_1_indices) > 0: + # If there are indices where precision == 1.0, use the one with the + # highest recall. + optimal_index = precision_1_indices[np.argmax(recall[precision_1_indices])] + optimal_threshold_pr = thresholds_pr[optimal_index] + logging.info('Optimal threshold (highest precision = 1.0): %f with recall %f', + optimal_threshold_pr, recall[optimal_index]) + else: + # If no indices where precision == 1.0, use the one with the highest + # precision. + optimal_index = np.argmax(precision[:-1]) + optimal_threshold_pr = thresholds_pr[optimal_index] + logging.info('Optimal threshold (highest precision = %f): %f with recall %f', + optimal_threshold_pr, precision[optimal_index], recall[optimal_index]) + + # Get the feature names. + feature_names = features.columns.tolist() + logging.info('Feature names: %s', feature_names) + logging.info('Number of features: %d', len(feature_names)) + # Feature importance for Random Forest and XGBoost. if model_name in ["Random Forest", "XGBoost"]: # Get feature importances. @@ -668,7 +698,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Print the feature ranking. logging.info('Feature ranking:') for f in range(X_train.shape[1]): - logging.info('%d. Feature %d (%f)', f + 1, indices[f], importances[indices[f]]) + logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], importances[indices[f]]) # Plot the feature importances. plt.figure() @@ -682,24 +712,30 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): plt.close() logging.info('Saved the feature importances plot to %s', importance_plot_path) - # For SVC, get the support vectors. + # For SVC, get the coefficients. if model_name == "SVC": - # Get the support vectors. - support_vectors = model.support_vectors_ + # Get the coefficients. + # coefficients = model.coef_[0] + + # Sort the coefficients in descending order. + indices = np.argsort(coefficients)[::-1] - # Plot the support vectors. + # Print the feature ranking. + logging.info('Feature ranking:') + for f in range(X_train.shape[1]): + logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) + + # Plot the coefficients. plt.figure() - plt.scatter(X_train[:, 0], X_train[:, 1], c='blue', s=30, label='Training data') - plt.scatter(support_vectors[:, 0], support_vectors[:, 1], c='red', s=50, label='Support vectors') - plt.title('Support Vectors') - plt.xlabel('Feature 1') - plt.ylabel('Feature 2') - plt.legend() + plt.title('Feature Coefficients') + plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') + plt.xticks(range(X_train.shape[1]), indices) + plt.xlim([-1, X_train.shape[1]]) # Save the plot to the output directory. - sv_plot_path = os.path.join(output_directory, model_name + '_support_vectors.png') - plt.savefig(sv_plot_path) + coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') + plt.savefig(coeff_plot_path) plt.close() - logging.info('Saved the support vectors plot to %s', sv_plot_path) + logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) # For logistic regression, get the coefficients. if model_name == "Logistic Regression": @@ -712,7 +748,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Print the feature ranking. logging.info('Feature ranking:') for f in range(X_train.shape[1]): - logging.info('%d. Feature %d (%f)', f + 1, indices[f], coefficients[indices[f]]) + logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) # Plot the coefficients. plt.figure() @@ -785,7 +821,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Run the program. -def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): +def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): """Run the program.""" # Train the model. train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno) @@ -808,8 +844,10 @@ def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Parse the command line arguments. import argparse parser = argparse.ArgumentParser() - parser.add_argument("--tpbed", required=True, help="Directory containing benchmark VCF files of real SVs (true positives and false negatives)") - parser.add_argument("--fpbed", required=True, help="Directory containing false positive VCF files from running the caller on normal samples") + parser.add_argument("--tpbed", required=True, help="Directory containing true positive SVs in hg38") + parser.add_argument("--fpbed", required=True, help="Directory containing false positive SVs in hg38") + parser.add_argument("--tpbed_hg19", required=False, help="Directory containing true positive SVs in hg19") + parser.add_argument("--fpbed_hg19", required=False, help="Directory containing false positive SVs in hg19") parser.add_argument("--outdiranno", required=True, help="Output directory for saving the ANNOVAR annotations") parser.add_argument("--outdir", required=True, help="Output directory for saving the model") parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") @@ -818,5 +856,5 @@ def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Run the program. logging.info('Training the model...') - run(args.tpbed, args.fpbed, args.outdir, args.annovar, args.annovar_db, args.outdiranno) + run(args.tpbed, args.fpbed, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.tpbed_hg19, args.fpbed_hg19) logging.info('done.') From 017b920efa4e27565b2cb2441cd7c77bf4a56624 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 15 Apr 2025 14:45:03 -0400 Subject: [PATCH 21/93] implement predictions --- contextscore/extract_features.py | 32 +++++-- contextscore/predict.py | 138 ++++++++++++++++++++++++++++++- 2 files changed, 161 insertions(+), 9 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index bdc2b86..9b37fe7 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -27,7 +27,7 @@ def read_cytoband_file(cytoband_file): chrom_dict = {} for chrom in cytobands['chrom'].unique(): - # Skip chrM + # Skip chrM, and other non-standard chromosomes. if chrom == 'chrM': continue @@ -329,18 +329,34 @@ def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): try: if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: is_telomere = True + + if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: + is_telomere = True + + if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: + is_centromere = True + + if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: + is_centromere = True + + except KeyError: + # Handle the case where chrom_dict[chrom] is not defined. + logging.warning('chrom_dict[%s] is not defined.', chrom) + logging.warning('Cytoband: %s', cytoband) + logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict.get(chrom, 'Not found')) + except TypeError: # Handle the case where telomerep is not defined. logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) logging.warning('Cytoband: %s', cytoband) logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) - is_telomere = False - if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: - is_telomere = True - if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: - is_centromere = True - if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: - is_centromere = True + # is_telomere = False + # if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: + # is_telomere = True + # if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: + # is_centromere = True + # if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: + # is_centromere = True return is_telomere, is_centromere diff --git a/contextscore/predict.py b/contextscore/predict.py index 2b8a7fe..76f803b 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -21,6 +21,96 @@ from extract_features import extract_features +def create_bed(input_vcf, output_bed): + """Create a BED file from the input VCF file. Extract the following fields: + 1. Chromosome (CHROM) + 2. Start position (POS) + 3. End position (END) + 4. SV type (SVTYPE) + 5. SV length (SVLEN) + 6. Genotype (GT) + 7. Read depth (DP) + 8. HMM log likelihood (HMM) + 9. Alignment type (ALN) + 10. Cluster size (CLUSTER) + 11. Copy number state (CN) + 12. Read alignment offset (ALNOFFSET) + Args: + input_vcf (str): Path to the input VCF file. + output_bed (str): Path to the output BED file. + """ + # Read the VCF file + # vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, + # names=['CHROM', 'POS', 'ID', 'REF', 'ALT', 'QUAL', 'FILTER', + # 'INFO', 'FORMAT', 'SAMPLE']) + logging.info('Reading VCF file: %s', input_vcf) + vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, + names=['CHROM', 'POS', 'INFO', 'FORMAT', 'SAMPLE'], usecols=[0, 1, 7, 8, 9], + dtype={'CHROM': str, 'POS': int, 'INFO': str, 'FORMAT': str, 'SAMPLE': str}) + + logging.info('VCF file read successfully. Number of records: %d', len(vcf_df)) + logging.info('First few records:\n%s', vcf_df.head()) + + # Extract the relevant fields from the INFO column + # info_df = vcf_df['INFO'].str.split(';', expand=True) + + # Print the ALN column + # info_df['ALN'] = vcf_df['INFO'].str.extract(r'ALN=([^;]+)') + # logging.info('ALN col = \n%s', info_df['ALN'].head()) + + # info_df.columns = ['END', 'SVTYPE', 'SVLEN', 'HMM', 'ALN', 'CLUSTER', + # 'CN', 'ALNOFFSET'] + info_df = pd.DataFrame() + info_df['ALN'] = vcf_df['INFO'].str.extract(r'ALN=([^;]+)') + info_df['END'] = vcf_df['INFO'].str.extract(r'END=(\d+)') + info_df['SVTYPE'] = vcf_df['INFO'].str.extract(r'SVTYPE=([^;]+)') + info_df['SVLEN'] = vcf_df['INFO'].str.extract(r'SVLEN=([^;]+)') + info_df['HMM'] = vcf_df['INFO'].str.extract(r'HMM=([^;]+)') + info_df['CLUSTER'] = vcf_df['INFO'].str.extract(r'CLUSTER=([^;]+)') + info_df['CN'] = vcf_df['INFO'].str.extract(r'CN=([^;]+)') + info_df['ALNOFFSET'] = vcf_df['INFO'].str.extract(r'ALNOFFSET=([^;]+)') + + # info_df['END'] = info_df['END'].str.replace('END=', '').astype(int) + # info_df['SVTYPE'] = info_df['SVTYPE'].str.replace('SVTYPE=', '') + # info_df['SVLEN'] = info_df['SVLEN'].str.replace('SVLEN=', '').astype(int) + # info_df['HMM'] = info_df['HMM'].str.replace('HMM=', '') + # info_df['ALN'] = info_df['ALN'].str.replace('ALN=', '') + # info_df['CLUSTER'] = info_df['CLUSTER'].str.replace('CLUSTER=', '') + # info_df['CN'] = info_df['CN'].str.replace('CN=', '') + # info_df['ALNOFFSET'] = info_df['ALNOFFSET'].str.replace('ALNOFFSET=', '') + + # Extract the genotype (GT) and read depth (DP) from the SAMPLE column + sample_df = pd.DataFrame() + sample_df['GT'] = vcf_df['SAMPLE'].str.extract(r'([^:]+):') + sample_df['DP'] = vcf_df['SAMPLE'].str.extract(r':(\d+)').astype(int) + + logging.info('Sample GT and DP columns:\n%s', sample_df.head()) + # sample_df = vcf_df['SAMPLE'].str.split(':', expand=True) + # sample_df.columns = ['GT', 'DP'] + # sample_df['GT'] = sample_df['GT'].str.replace('GT=', '') + # sample_df['DP'] = sample_df['DP'].str.replace('DP=', '').astype(int) + + # Create the BED file + bed_df = pd.DataFrame() + bed_df['CHROM'] = vcf_df['CHROM'] + bed_df['START'] = vcf_df['POS'] + bed_df['END'] = info_df['END'] + bed_df['SVTYPE'] = info_df['SVTYPE'] + bed_df['SVLEN'] = info_df['SVLEN'] + bed_df['GT'] = sample_df['GT'] + bed_df['DP'] = sample_df['DP'] + bed_df['HMM'] = info_df['HMM'] + bed_df['ALN'] = info_df['ALN'] + bed_df['CLUSTER'] = info_df['CLUSTER'] + bed_df['CN'] = info_df['CN'] + bed_df['ALNOFFSET'] = info_df['ALNOFFSET'] + + # Print the first few rows of the BED file + logging.info('First few rows of the BED file:\n%s', bed_df.head()) + + # Save the BED file + bed_df.to_csv(output_bed, sep='\t', header=False, index=False) + logging.info('Created BED file: %s', output_bed) def score(model, input_vcf, output_vcf): """Score the structural variants using the binary classification model. @@ -30,8 +120,55 @@ def score(model, input_vcf, output_vcf): input_vcf (str): Path to the input VCF file. output_vcf (str): Path to the output VCF file. """ + + # Create a BED file from the input VCF file + bed_file = os.path.splitext(input_vcf)[0] + '.bed' + create_bed(input_vcf, bed_file) + logging.info('Created BED file: %s', bed_file) + # Load the model + logging.info('Loading model from: %s', model) clf = joblib.load(model) + logging.info('Model loaded successfully.') + + # Extract the features from the BED file + annovar_path= '/mnt/isilon/wang_lab/perdomoj/softwares/annovar' + annovar_db_path= '/mnt/isilon/wang_lab/perdomoj/annovar/humandb' + anno_outdir= os.path.dirname(bed_file) + anno_outdir= os.path.join(anno_outdir, 'annotations') + if not os.path.exists(anno_outdir): + os.makedirs(anno_outdir) + logging.info('Created output directory: %s', anno_outdir) + + feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir) + logging.info('Extracted features from the BED file:\n%s', feature_df.head()) + + # Check if the feature extraction was successful + if feature_df.empty: + logging.error('Feature extraction failed. No features extracted.') + sys.exit(1) + + # Run the model on the features + logging.info('Running the model on the features...') + y_pred = clf.predict_proba(feature_df) + + # Plot a histogram of the probabilities + plt.hist(y_pred[:, 1], bins=20) + plt.xlabel('Probability') + plt.ylabel('Count') + plt.title('Probability Distribution') + output_dir = os.path.dirname(output_vcf) + if not os.path.exists(output_dir): + os.makedirs(output_dir) + logging.info('Created output directory: %s', output_dir) + # Save the plot to the output directory + plt.savefig(os.path.join(output_dir, 'probabilities.png')) + logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) + + # Save the predictions to the output VCF file + # vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, + + return # Extract the features from the VCF file X = extract_features(input_vcf) @@ -98,4 +235,3 @@ def score(model, input_vcf, output_vcf): # Run the scoring function score(model, input_vcf, output_vcf) logging.info('Scoring process completed.') - \ No newline at end of file From 80d83624930f7cc78f9b69cd05cc4314b5419c9e Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 15 Apr 2025 16:04:13 -0400 Subject: [PATCH 22/93] feature corr analysis --- contextscore/extract_features.py | 6 ++- contextscore/predict.py | 12 +++++ contextscore/train_full_model.py | 90 +++++++++++++++++++------------- 3 files changed, 69 insertions(+), 39 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 9b37fe7..0c28ced 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -65,10 +65,12 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno): # chrom_dict = joblib.load(chrom_dict_path) # Read in the BED file. - bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) + logging.info("[TEST1] columns in the BED file: %s", bed_df.columns) + # # Print the number of NaN values # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) @@ -338,7 +340,7 @@ def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: is_centromere = True - + except KeyError: # Handle the case where chrom_dict[chrom] is not defined. logging.warning('chrom_dict[%s] is not defined.', chrom) diff --git a/contextscore/predict.py b/contextscore/predict.py index 76f803b..e46da9a 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -165,6 +165,18 @@ def score(model, input_vcf, output_vcf): plt.savefig(os.path.join(output_dir, 'probabilities.png')) logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) + # Filter the VCF + prob_threshold = 0.1 + filtered_indices = np.where(y_pred[:, 1] >= prob_threshold)[0] + logging.info('Number of variants with probability >= %.2f: %d', prob_threshold, len(filtered_indices)) + + filtered_df = feature_df.iloc[filtered_indices] + logging.info('Filtered features:\n%s', filtered_df.head()) + + # Save the filtered features to the output VCF file + + # logging.info('Filtered indices:\n%s', filtered_indices) + # Save the predictions to the output VCF file # vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index ac0b076..0319e5a 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -501,49 +501,65 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # SV Feature Extraction # --------------------------------------------------------------- + # Extract the features from the VCF files. - # tp_data = extract_features(tp_bed) - # fp_data = extract_features(fp_bed) tp_anno_outdir = os.path.join(outdiranno, "tp_anno") tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir) fp_anno_outdir = os.path.join(outdiranno, "fp_anno") fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir) - # --------------------------------------------------------------- - # Annotate the features - # --------------------------------------------------------------- - - # Add annotations to the features. - # tp_anno_outdir = os.path.join(outdiranno, "tp_anno") - # add_annotations(tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir) - # fp_anno_outdir = os.path.join(outdiranno, "fp_anno") - # add_annotations(fp_data, fp_bed, annovar_path, db_path, fp_anno_outdir) - - # --------------------------------------------------------------- - # Feature preparation - # --------------------------------------------------------------- - - # # Finally map chromosome names to numbers. - # # Load a dictionary mapping chromosome names to numbers. - # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - # chrom_dict = joblib.load(chrom_dict_path) - - # # Print the number of NaN values - # logging.info('Number of NaN values: %d', tp_data.isnull().sum().sum()) - - # # Map the chromosome names to numbers. - # tp_data['chrom'] = tp_data['chrom'].map(chrom_dict) - # fp_data['chrom'] = fp_data['chrom'].map(chrom_dict) - - # # Actually drop the chrom, start, end columns. - # tp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) - # fp_data.drop(columns=['chrom', 'start', 'end'], inplace=True) - - # logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', tp_data.columns) - # logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (FP): %s', fp_data.columns) - - # Print the number of NaN values - # logging.info('Number of NaN values after chr mapping: %d', tp_data.isnull().sum().sum()) + # Drop the aln_type columns from the data. + # logging.info('Dropping the aln_type column from the data.') + # tp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') + # fp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') + + # Drop the genotype column from the data. + logging.info('Dropping the genotype column from the data.') + tp_data.drop(columns=['genotype'], inplace=True, errors='ignore') + fp_data.drop(columns=['genotype'], inplace=True, errors='ignore') + + # Drop the aln_type column from the data. + # logging.info('Dropping the aln_type column from the data.') + # tp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') + # fp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') + + # Drop the cn_state column from the data. + logging.info('Dropping the cn_state column from the data.') + tp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') + fp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') + + # Analyze feature correlations in the collected data. + logging.info('Analyzing feature correlations in the collected data.') + corr_matrix = tp_data.corr() + plt.figure(figsize=(12, 10)) + sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + plt.title('Feature Correlation Matrix (True Positives)') + plt.tight_layout() + plt.savefig(os.path.join(output_directory, 'feature_correlation_tp.png')) + plt.close() + corr_matrix = fp_data.corr() + plt.figure(figsize=(12, 10)) + sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + plt.title('Feature Correlation Matrix (False Positives)') + plt.tight_layout() + plt.savefig(os.path.join(output_directory, 'feature_correlation_fp.png')) + plt.close() + logging.info('Feature correlation analysis completed. TP saved to %s and FP saved to %s', + os.path.join(output_directory, 'feature_correlation_tp.png'), + os.path.join(output_directory, 'feature_correlation_fp.png')) + + # Analyze feature correlations in the combined data. + logging.info('Analyzing feature correlations in the combined data.') + combined_data = pd.concat([tp_data, fp_data]) + corr_matrix_combined = combined_data.corr() + plt.figure(figsize=(12, 10)) + sns.heatmap(corr_matrix_combined, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + plt.title('Feature Correlation Matrix (Combined Data)') + plt.tight_layout() + plt.savefig(os.path.join(output_directory, 'feature_correlation_combined.png')) + plt.close() + logging.info('Feature correlation analysis completed for combined data. Saved to %s', + os.path.join(output_directory, 'feature_correlation_combined.png')) # Add the labels. tp_data['label'] = 1 From 6078b96bf9e0607adb1b779b673bdfc84b3f6126 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 15 Apr 2025 16:21:05 -0400 Subject: [PATCH 23/93] add id column --- contextscore/extract_features.py | 29 +++++++++++++++-------------- contextscore/predict.py | 10 +++++++++- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 0c28ced..cc691b2 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -65,12 +65,16 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno): # chrom_dict = joblib.load(chrom_dict_path) # Read in the BED file. - bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], - names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], - dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], + names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset', 'id'], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32, 'id': np.int32}) logging.info("[TEST1] columns in the BED file: %s", bed_df.columns) + # Drop the genotype column and cn_state columns (due to redundancy). + bed_df.drop(columns=['genotype', 'cn_state'], inplace=True) + logging.info('[TEST] Dropped the genotype and cn_state columns. Current columns: %s', bed_df.columns) + # # Print the number of NaN values # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) @@ -121,18 +125,15 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno): # Create a map of genotypes to numbers. # Genotypes are: "0/0", "0/1", "1/1", "./." - genotype_map = { - '0/0': 0, - '0/1': 1, - '1/1': 2, - './.': 3 - } + # genotype_map = { + # '0/0': 0, + # '0/1': 1, + # '1/1': 2, + # './.': 3 + # } # Map the genotypes to numbers. - bed_df['genotype'] = bed_df['genotype'].map(genotype_map) - - # Print the number of NaN values - logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) + # bed_df['genotype'] = bed_df['genotype'].map(genotype_map) # Check if any features are missing. if bed_df.isnull().values.any(): @@ -205,7 +206,7 @@ def run_bedtools_intersect(input_bed, table_bed): sep='\t', header=None, names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], - usecols=[0, 1, 2, 12, 13, 14, 15], #10, 11, 12, 13], + usecols=[0, 1, 2, 13, 14, 15, 16],#12, 13, 14, 15], #10, 11, 12, 13], dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} ) diff --git a/contextscore/predict.py b/contextscore/predict.py index e46da9a..b068c6b 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -41,13 +41,16 @@ def create_bed(input_vcf, output_bed): """ # Read the VCF file # vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, - # names=['CHROM', 'POS', 'ID', 'REF', 'ALT', 'QUAL', 'FILTER', + # names=['CHROM', 'POS', 'id', 'REF', 'ALT', 'QUAL', 'FILTER', # 'INFO', 'FORMAT', 'SAMPLE']) logging.info('Reading VCF file: %s', input_vcf) vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, names=['CHROM', 'POS', 'INFO', 'FORMAT', 'SAMPLE'], usecols=[0, 1, 7, 8, 9], dtype={'CHROM': str, 'POS': int, 'INFO': str, 'FORMAT': str, 'SAMPLE': str}) + # Add a column for the ID field with the VCF row number + vcf_df['id'] = vcf_df.index + 1 # VCF IDs start from 1 + logging.info('VCF file read successfully. Number of records: %d', len(vcf_df)) logging.info('First few records:\n%s', vcf_df.head()) @@ -104,6 +107,7 @@ def create_bed(input_vcf, output_bed): bed_df['CLUSTER'] = info_df['CLUSTER'] bed_df['CN'] = info_df['CN'] bed_df['ALNOFFSET'] = info_df['ALNOFFSET'] + bed_df['id'] = vcf_df['id'] # Print the first few rows of the BED file logging.info('First few rows of the BED file:\n%s', bed_df.head()) @@ -148,6 +152,10 @@ def score(model, input_vcf, output_vcf): logging.error('Feature extraction failed. No features extracted.') sys.exit(1) + # Separate the ID column from the features + id_col = feature_df.pop('id') + logging.info('Separated ID column from the features.') + # Run the model on the features logging.info('Running the model on the features...') y_pred = clf.predict_proba(feature_df) From a46794b76ffb316fd7dfb80195e05e3c6cd44bbe Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Wed, 16 Apr 2025 16:07:16 -0400 Subject: [PATCH 24/93] add hg002 hg19 to training --- contextscore/extract_features.py | 109 +++++-- contextscore/predict.py | 58 +++- contextscore/train_full_model.py | 490 ++----------------------------- 3 files changed, 162 insertions(+), 495 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index cc691b2..9cd703a 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -54,7 +54,7 @@ def read_cytoband_file(cytoband_file): # tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir -def extract_features(input_bed, annovar_path, db_path, outdiranno): +def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion='hg38'): """Extract the features from the BED file, columns are in the first row: chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size """ @@ -64,8 +64,26 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno): # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" # chrom_dict = joblib.load(chrom_dict_path) + # Get the number of columns in the BED file. + with open(input_bed, 'r') as f: + first_line = f.readline().strip() + num_columns = len(first_line.split('\t')) + logging.info('Number of columns in the BED file: %d', num_columns) + + training_format = False + if num_columns == 12: # Standard training format. + training_format = True + logging.info('Training format detected.') + elif num_columns == 13: # Contains additional 'id' column. + logging.info('Prediction format detected.') + # Read in the BED file. - bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], + if training_format: + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], + names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) + else: + bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset', 'id'], dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32, 'id': np.int32}) @@ -147,7 +165,7 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno): sys.exit(1) # Add annotations to the features. - add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno) + add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno, buildversion, training_format) # Finally map chromosome names to numbers. # Load a dictionary mapping chromosome names to numbers. @@ -169,7 +187,7 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno): return bed_df -def run_bedtools_intersect(input_bed, table_bed): +def run_bedtools_intersect(input_bed, table_bed, training_format=False): """Run bedtools intersect to annotate the BED file.""" # Check if bedtools is installed. try: @@ -201,19 +219,29 @@ def run_bedtools_intersect(input_bed, table_bed): # Parse the output of bedtools intersect into a pandas DataFrame. logging.info('Parsing the output of bedtools intersect.') - annotated_bed = pd.read_csv( - StringIO(result.stdout), - sep='\t', - header=None, - names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], - usecols=[0, 1, 2, 13, 14, 15, 16],#12, 13, 14, 15], #10, 11, 12, 13], - dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} - ) + if training_format: + annotated_bed = pd.read_csv( + StringIO(result.stdout), + sep='\t', + header=None, + names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], + usecols=[0, 1, 2, 12, 13, 14, 15], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} + ) + else: + annotated_bed = pd.read_csv( + StringIO(result.stdout), + sep='\t', + header=None, + names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], + usecols=[0, 1, 2, 13, 14, 15, 16],#12, 13, 14, 15], #10, 11, 12, 13], + dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} + ) # Print the first few rows of the annotated BED file. logging.info('Annotated BED file:\n%s', annotated_bed.head()) - return annotated_bed + return annotated_bed except subprocess.CalledProcessError as e: logging.error('Error annotating the BED file: %s', e) @@ -269,12 +297,12 @@ def bed_to_annovar_input(bed_file): return output_file -def download_annovar_db(annovar_path, db_path, db_name): +def download_annovar_db(annovar_path, db_path, db_name, buildversion='hg38'): """Download the ANNOVAR database if it does not exist.""" - logging.info('Downloading the database:' + db_name) + logging.info('Downloading the database:' + db_name + ' for build version: ' + buildversion) cmd = [ f"{annovar_path}/annotate_variation.pl", - "-buildver", "hg38", + "-buildver", buildversion, "-downdb", db_name, db_path ] @@ -291,7 +319,7 @@ def download_annovar_db(annovar_path, db_path, db_name): logging.info('Downloaded the database %s successfully.', db_name) -def annotate(annovar_input, annovar_path, db_path, output_dir): +def annotate(annovar_input, annovar_path, db_path, output_dir, buildversion='hg38'): """Annotate regions.""" logging.info('Annotating regions using ANNOVAR.') @@ -301,7 +329,7 @@ def annotate(annovar_input, annovar_path, db_path, output_dir): f"{annovar_path}/table_annovar.pl", annovar_input, db_path, - "--buildver hg38", + "--buildver " + buildversion, "--out", annotations_dir, "--remove", "--protocol genomicSuperDups,cytoBand", @@ -364,17 +392,25 @@ def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): return is_telomere, is_centromere -def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): +def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir, buildversion='hg38', training_format=False): """Add annotations to the features.""" logging.info('Adding annotations to the features.') # --------------------------------------------------------------- # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). # https://webs.iiitd.edu.in/raghava/humcfs/download.html - # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ - fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + # ANNOVAR instructions are here: + # https://annovar.openbioinformatics.org/en/latest/user-guide/region/ + if buildversion == 'hg38': + fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" + elif buildversion == 'hg19': + fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_hg19.bed" + else: + logging.error('Unsupported build version: %s. Please use hg38 or hg19.', buildversion) + sys.exit(1) + logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) - fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed) + fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed, training_format) # Merge the fragile sites annotations with the true positive data. data['fragile_site'] = data.merge(fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() @@ -385,9 +421,15 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): # --------------------------------------------------------------- # Annotate conserved regions using a UCSC Table Browser BED file for # phastCons100way (GRCh38/hg38). - phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" + if buildversion == 'hg38': + phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" + elif buildversion == 'hg19': + phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg19.bed" + else: + logging.error('Unsupported build version: %s. Please use hg38 or hg19.', buildversion) + sys.exit(1) logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) - phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed) + phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed, training_format) # Merge the phastCons annotations with the true positive data. data['phastCons'] = data.merge(phastCons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() @@ -398,9 +440,15 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): # --------------------------------------------------------------- # Annotate simple repeats using a UCSC Table Browser BED file for # simpleRepeat (GRCh38/hg38). - simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" + if buildversion == 'hg38': + simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" + elif buildversion == 'hg19': + simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg19.bed" + else: + logging.error('Unsupported build version: %s. Please use hg38 or hg19.', buildversion) + sys.exit(1) logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) - simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed) + simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed, training_format) # Merge the simpleRepeat annotations with the true positive data. data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() @@ -412,10 +460,10 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): # Annotate the SVs using ANNOVAR. # Download the segmental duplication database - download_annovar_db(annovar_path, db_path, "genomicSuperDups") + download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildversion) # Download the cytoband database - download_annovar_db(annovar_path, db_path, "cytoBand") + download_annovar_db(annovar_path, db_path, "cytoBand", buildversion) # Set up a dictionary for each chromosome, mapping the cytoband to the # centromere and telomere regions. @@ -429,9 +477,10 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): if not os.path.exists(anno_outdir): os.makedirs(anno_outdir) - annotate(annovar_file, annovar_path, db_path, anno_outdir) + annotate(annovar_file, annovar_path, db_path, anno_outdir, buildversion) - anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') + # anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') + anno_file = os.path.join(anno_outdir, 'regions.{}_multianno.txt'.format(buildversion)) if not os.path.exists(anno_file): logging.error('ANNOVAR annotation file does not exist: %s', anno_file) sys.exit(1) diff --git a/contextscore/predict.py b/contextscore/predict.py index b068c6b..97abc86 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -49,7 +49,10 @@ def create_bed(input_vcf, output_bed): dtype={'CHROM': str, 'POS': int, 'INFO': str, 'FORMAT': str, 'SAMPLE': str}) # Add a column for the ID field with the VCF row number - vcf_df['id'] = vcf_df.index + 1 # VCF IDs start from 1 + vcf_df['id'] = vcf_df.index + + # Print the first 10 IDs + logging.info('First 10 IDs in the VCF file:\n%s', vcf_df['id'].head(10)) logging.info('VCF file read successfully. Number of records: %d', len(vcf_df)) logging.info('First few records:\n%s', vcf_df.head()) @@ -173,13 +176,54 @@ def score(model, input_vcf, output_vcf): plt.savefig(os.path.join(output_dir, 'probabilities.png')) logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) - # Filter the VCF + # Filter the VCF, using the id column to get the final indices prob_threshold = 0.1 - filtered_indices = np.where(y_pred[:, 1] >= prob_threshold)[0] - logging.info('Number of variants with probability >= %.2f: %d', prob_threshold, len(filtered_indices)) - - filtered_df = feature_df.iloc[filtered_indices] - logging.info('Filtered features:\n%s', filtered_df.head()) + filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] + logging.info('Number of variants passing the probability threshold: %d', len(filtered_indices)) + + # Get the IDs of the filtered variants + filtered_ids = id_col.iloc[filtered_indices].values + # logging.info('Filtered IDs:\n%s', filtered_ids) + # Save the filtered IDs to a text file + filtered_ids_file = os.path.join(output_dir, 'filtered_ids.txt') + np.savetxt(filtered_ids_file, filtered_ids, fmt='%s') + logging.info('Saved the filtered IDs to %s.', filtered_ids_file) + + # Filter the input VCF file based on the filtered indices + logging.info('Filtering the input VCF file based on the filtered indices...') + filtered_records = set(filtered_ids) + current_record = 0 + with open(input_vcf, 'r') as vcf_in, open(output_vcf, 'w') as vcf_out: + for line in vcf_in: + if line.startswith('#'): + # Write the header lines as they are + vcf_out.write(line) + else: + if current_record not in filtered_records: + # Write the line if the current record is not in the filtered records + vcf_out.write(line) + current_record += 1 + + logging.info('Filtered the input VCF file and saved it to %s', output_vcf) + + logging.info('Scoring process completed successfully. Number of variants processed: %d', current_record) + + # # Get the filtered features using the indices + # logging.info('Filtering features based on the predicted probabilities...') + # if len(filtered_indices) == 0: + # logging.warning('No variants passed the probability threshold. No features to save.') + # return + # feature_df['id'] = id_col # Add the ID column back to the features + # logging.info('Filtered features based on the predicted probabilities.') + # logging.info('Filtered indices:\n%s', filtered_indices) + # # Use the filtered indices to get the filtered features + # logging.info('Extracting filtered features from the feature DataFrame...') + # if filtered_indices.size == 0: + # logging.warning('No features to filter. No variants passed the probability threshold.') + # return + + # filtered_df = feature_df.iloc[filtered_indices] + # logging.info('Filtered features:\n%s', filtered_df.head()) # Save the filtered features to the output VCF file diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 0319e5a..65ee1dd 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -70,431 +70,8 @@ # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') -# def read_cytoband_file(cytoband_file): -# """Get the centromere and telomere regions for each chromosome.""" -# cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) -# chrom_dict = {} -# for chrom in cytobands['chrom'].unique(): - -# # Skip chrM -# if chrom == 'chrM': -# continue - -# chrom_df = cytobands[cytobands['chrom'] == chrom] -# # First and last bands are the telomeres. -# # First telomere: -# chrom_dict[chrom] = { -# 'telomerep': chrom_df.iloc[0]['name'], -# 'telomereq': chrom_df.iloc[-1]['name'] -# } - -# # Identify the 2 centromeres for p and q (contain "acen"). -# centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] -# centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] -# if not centromere_p.empty: -# chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] -# if not centromere_q.empty: -# chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] - -# # print("Chromosome:", chrom) -# # print(chrom_dict[chrom]) - -# return chrom_dict - -# def extract_features(input_bed): -# """Extract the features from the BED file, columns are in the first row: -# chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size -# """ -# logging.info('Extracting features from the BED file %s', input_bed) - -# # Load a dictionary mapping chromosome names to numbers. -# # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" -# # chrom_dict = joblib.load(chrom_dict_path) - -# # Read in the BED file. -# bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], -# names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset'], -# dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32}) - -# # # Print the number of NaN values -# # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) - -# # # Map the chromosome names to numbers. -# # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) - -# # # Print the number of NaN values -# # logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) - -# # Create a map of alignment types to numbers. -# # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", -# # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" -# aln_type_map = { -# 'CIGARINS': 0, -# 'CIGARDEL': 1, -# 'CIGARCLIP': 2, -# 'SPLIT': 3, -# 'SPLITDIST1': 4, -# 'SPLITDIST2': 5, -# 'SPLITINV': 6, -# 'SUPPINV': 7, -# 'HMM': 8, -# 'UNKNOWN': 9 -# } - -# # Map the alignment types to numbers. -# bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) - -# # Print the number of NaN values -# logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) - -# # Create a map of SV types to numbers. -# # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" -# sv_type_map = { -# 'DEL': 0, -# 'DUP': 1, -# 'INV': 2, -# 'INS': 3, -# 'BND': 4, -# 'UNKNOWN': 5 -# } - -# # Map the SV types to numbers. -# bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) - -# # Print the number of NaN values -# logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) - -# # Create a map of genotypes to numbers. -# # Genotypes are: "0/0", "0/1", "1/1", "./." -# genotype_map = { -# '0/0': 0, -# '0/1': 1, -# '1/1': 2, -# './.': 3 -# } - -# # Map the genotypes to numbers. -# bed_df['genotype'] = bed_df['genotype'].map(genotype_map) - -# # Print the number of NaN values -# logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) - -# # Check if any features are missing. -# if bed_df.isnull().values.any(): -# logging.error('Features are missing.') - -# # Get the rows with missing features. -# missing_features = bed_df[bed_df.isnull().any(axis=1)] - -# # Print the rows with missing features. -# logging.error(missing_features) -# sys.exit(1) - -# # Return the features. -# return bed_df - - -# def run_bedtools_intersect(input_bed, table_bed): -# """Run bedtools intersect to annotate the BED file.""" -# # Check if bedtools is installed. -# try: -# subprocess.run(["bedtools", "--version"], check=True) -# except subprocess.CalledProcessError: -# logging.error('bedtools is not installed. Please install bedtools.') -# sys.exit(1) - -# # Check if the input BED file exists. -# if not os.path.exists(input_bed): -# logging.error('Input BED file does not exist: %s', input_bed) -# sys.exit(1) - -# # Check if the table BED file exists. -# if not os.path.exists(table_bed): -# logging.error('Table BED file does not exist: %s', table_bed) -# sys.exit(1) - -# # Run bedtools intersect to annotate the BED file. -# cmd = [ -# "bedtools", "intersect", -# "-a", input_bed, -# "-b", table_bed, -# "-wa", "-wb" -# ] -# logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) -# try: -# result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) - -# # Parse the output of bedtools intersect into a pandas DataFrame. -# logging.info('Parsing the output of bedtools intersect.') -# annotated_bed = pd.read_csv( -# StringIO(result.stdout), -# sep='\t', -# header=None, -# names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], -# usecols=[0, 1, 2, 12, 13, 14, 15], #10, 11, 12, 13], -# dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} -# ) - -# # Print the first few rows of the annotated BED file. -# logging.info('Annotated BED file:\n%s', annotated_bed.head()) - -# return annotated_bed - -# except subprocess.CalledProcessError as e: -# logging.error('Error annotating the BED file: %s', e) -# logging.error('Please check the input and table BED files.') -# sys.exit(1) - - -# def bed_to_annovar_input(bed_file): -# """Convert the BED file to ANNOVAR input format.""" -# output_file = bed_file.replace('.bed', '.avinput') -# logging.info('Converting the BED file to ANNOVAR input format.') - -# # Read the BED file using pandas (first line is the header with the column names). -# # df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', -# # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) -# # df = pd.read_csv(bed_file, sep='\t', header=0, comment='#', -# # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], usecols=[0, 1, 2, 3, 4], -# # dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32, -# # 'SVTYPE': str, 'SVLEN': np.int32}) -# df = pd.read_csv(bed_file, sep='\t', usecols=[0, 1, 2], -# names=["CHROM", "POS", "END"], -# dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32}) - -# # Check if the BED file is empty. -# logging.info('Number of rows in the BED file: %d', df.shape[0]) -# logging.info('First 5 rows of the BED file:\n%s', df.head()) - -# # The ANNOVAR input format requires the following columns: -# # 1. Chromosome -# # 2. Start position -# # 3. End position -# # 4. Reference allele -# # 5. Alternate allele -# # We will use the first three columns from the BED file and add two dummy -# # columns for the reference and alternate alleles (0, and -) since gnomAD does not -# # provide the sequence information for the SVs. - -# # Create a new dataframe with the required columns. -# annovar_df = pd.DataFrame() -# annovar_df['chrom'] = df['CHROM'] -# annovar_df['start'] = df['POS'] -# annovar_df['end'] = df['END'] -# annovar_df['ref'] = '0' -# annovar_df['alt'] = '-' - -# # Save the tab-delimited dataframe to a file. -# logging.info('Saving the ANNOVAR input file to %s', output_file) -# annovar_df.to_csv(output_file, sep='\t', index=False, header=False) -# logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) -# logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) -# logging.info('Saved the ANNOVAR input file to %s', output_file) - -# return output_file - - -# def download_annovar_db(annovar_path, db_path, db_name): -# """Download the ANNOVAR database if it does not exist.""" -# logging.info('Downloading the database:' + db_name) -# cmd = [ -# f"{annovar_path}/annotate_variation.pl", -# "-buildver", "hg38", -# "-downdb", db_name, -# db_path -# ] -# # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ - -# # Run the command to download the database. -# logging.info('Running the command to download the database: %s', " ".join(cmd)) -# try: -# subprocess.run(" ".join(cmd), shell=True, check=True) -# except subprocess.CalledProcessError as e: -# logging.error('Error downloading the database: %s', e) -# logging.error('Please check the ANNOVAR path and database path.') -# sys.exit(1) -# logging.info('Downloaded the database %s successfully.', db_name) - - -# def annotate(annovar_input, annovar_path, db_path, output_dir): -# """Annotate regions.""" -# logging.info('Annotating regions using ANNOVAR.') - -# annotations_dir = os.path.join(output_dir, 'regions') -# logging.info('Creating the output directory: %s', annotations_dir) -# cmd = [ -# f"{annovar_path}/table_annovar.pl", -# annovar_input, -# db_path, -# "--buildver hg38", -# "--out", annotations_dir, -# "--remove", -# "--protocol genomicSuperDups,cytoBand", -# "--operation r,r", -# "--nastring .", -# "-polish" -# ] -# # "--protocol genomicSuperDups", - -# try: -# subprocess.run(" ".join(cmd), shell=True, check=True) -# except subprocess.CalledProcessError as e: -# logging.error('Error annotating: %s', e) -# logging.error('Please check the ANNOVAR path and database path.') -# sys.exit(1) - -# logging.info('Completed annotations.') - - -# def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): -# """Check if the cytoband is a telomere or centromere.""" -# if chrom not in chrom_dict: -# return False, False # Not in any region. - -# is_telomere = False -# is_centromere = False -# # Check if the cytoband is a telomere. -# try: -# if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: -# is_telomere = True -# except TypeError: -# # Handle the case where telomerep is not defined. -# logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) -# logging.warning('Cytoband: %s', cytoband) -# logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) -# is_telomere = False -# if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: -# is_telomere = True -# if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: -# is_centromere = True -# if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: -# is_centromere = True - -# return is_telomere, is_centromere - - -# def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir): -# """Add annotations to the features.""" -# logging.info('Adding annotations to the features.') - -# # --------------------------------------------------------------- -# # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). -# # https://webs.iiitd.edu.in/raghava/humcfs/download.html -# # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ -# fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" -# logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) -# fragile_sites_df = run_bedtools_intersect(input_bed, fragile_sites_bed) - -# # Merge the fragile sites annotations with the true positive data. -# data['fragile_site'] = data.merge(fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - -# logging.info('Number of records with fragile sites: %d', data['fragile_site'].sum()) -# logging.info('Total number of records: %d', data.shape[0]) - -# # --------------------------------------------------------------- -# # Annotate conserved regions using a UCSC Table Browser BED file for -# # phastCons100way (GRCh38/hg38). -# phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" -# logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) -# phastCons_df = run_bedtools_intersect(input_bed, phastCons_bed) - -# # Merge the phastCons annotations with the true positive data. -# data['phastCons'] = data.merge(phastCons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - -# logging.info('Number of records with conserved regions: %d', data['phastCons'].sum()) -# logging.info('Total number of records: %d', data.shape[0]) - -# # --------------------------------------------------------------- -# # Annotate simple repeats using a UCSC Table Browser BED file for -# # simpleRepeat (GRCh38/hg38). -# simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" -# logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) -# simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed) - -# # Merge the simpleRepeat annotations with the true positive data. -# data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - -# logging.info('Number of records with simple repeats: %d', data['simpleRepeat'].sum()) -# logging.info('Total number of records: %d', data.shape[0]) - -# # --------------------------------------------------------------- -# # Annotate the SVs using ANNOVAR. - -# # Download the segmental duplication database -# download_annovar_db(annovar_path, db_path, "genomicSuperDups") - -# # Download the cytoband database -# download_annovar_db(annovar_path, db_path, "cytoBand") - -# # Set up a dictionary for each chromosome, mapping the cytoband to the -# # centromere and telomere regions. -# cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. -# cytoband_dict = read_cytoband_file(cytoband_file) - -# logging.info('Converting the true positive BED file to ANNOVAR input format.') -# annovar_file = bed_to_annovar_input(input_bed) - -# logging.info('Annotating the SVs using ANNOVAR.') -# if not os.path.exists(anno_outdir): -# os.makedirs(anno_outdir) - -# annotate(annovar_file, annovar_path, db_path, anno_outdir) -# anno_file = os.path.join(anno_outdir, 'regions.hg38_multianno.txt') -# if not os.path.exists(anno_file): -# logging.error('ANNOVAR annotation file does not exist: %s', anno_file) -# sys.exit(1) - -# # Read the ANNOVAR output file. -# logging.info('Reading the ANNOVAR output file: %s', anno_file) -# anno_df = pd.read_csv(anno_file, sep='\t', header=0, comment='#') - -# # Replace NaN values for the genomicSuperDups column with 0. -# # anno_df['genomicSuperDups'].fillna(0, inplace=True) - -# # # Replace NaN values for the cytoBand column with "" -# # # anno_df['cytoBand'].fillna("", inplace=True).astype(str) -# # anno_df['cytoBand'] = anno_df['cytoBand'].fillna("").astype(str) - -# # Convert chr, start, end to the same data types as the data. -# anno_df['Chr'] = anno_df['Chr'].astype(str) -# anno_df['Start'] = anno_df['Start'].astype(np.int32) -# anno_df['End'] = anno_df['End'].astype(np.int32) - -# # Merge the ANNOVAR annotations with the data. -# logging.info('Merging the ANNOVAR annotations with the data.') -# data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') - -# # Extract segmental duplication scores. -# def extract_max_score(score_series): -# """Extract and return the maximum Score= value from a series.""" -# scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) -# return scores.max() if not scores.empty else 0 - -# # Extract the maximum score from the segmental duplication annotations. -# data['segdup'] = extract_max_score(data['genomicSuperDups']) - -# # Extract the cytoband annotations. -# def get_cyto_info(row): -# """Get telomere and centromere information for a row.""" -# if pd.notna(row['cytoBand']): -# return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) - -# return (False, False) - -# data['telomere'], data['centromere'] = data.apply(get_cyto_info, axis=1, result_type='expand') - -# # Print the current columns in the data. -# logging.info('Current columns in the data: %s', data.columns) - -# # Drop the unnecessary columns. -# data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) - -# logging.info('Number of records after adding annotations: %d', data.shape[0]) -# logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) - - -def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): +def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): """Train the binary classification model.""" # --------------------------------------------------------------- @@ -503,26 +80,42 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # Extract the features from the VCF files. + logging.info('Extracting features from the true positive and false positive VCF files (GRCh38).') + buildversion = 'hg38' tp_anno_outdir = os.path.join(outdiranno, "tp_anno") - tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir) + tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir, buildversion=buildversion) + logging.info('Extracted %d features from the true positive VCF file.', tp_data.shape[0]) fp_anno_outdir = os.path.join(outdiranno, "fp_anno") - fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir) - - # Drop the aln_type columns from the data. - # logging.info('Dropping the aln_type column from the data.') - # tp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') - # fp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') - + fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir, buildversion=buildversion) + logging.info('Extracted %d features from the false positive VCF file.', fp_data.shape[0]) + + logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh19).') + buildversion = 'hg19' + if tp_bed_hg19 is not None and fp_bed_hg19 is not None: + tp_anno_outdir_hg19 = os.path.join(outdiranno, "tp_anno_hg19") + tp_data_hg19 = extract_features(tp_bed_hg19, annovar_path, db_path, tp_anno_outdir_hg19, buildversion=buildversion) + logging.info('Extracted %d features from the true positive VCF file (hg19).', tp_data_hg19.shape[0]) + fp_anno_outdir_hg19 = os.path.join(outdiranno, "fp_anno_hg19") + fp_data_hg19 = extract_features(fp_bed_hg19, annovar_path, db_path, fp_anno_outdir_hg19, buildversion=buildversion) + logging.info('Extracted %d features from the false positive VCF file (hg19).', fp_data_hg19.shape[0]) + + # Concatenate the data from hg38 and hg19. + logging.info('Concatenating the data from hg38 and hg19.') + tp_data = pd.concat([tp_data, tp_data_hg19], ignore_index=True) + fp_data = pd.concat([fp_data, fp_data_hg19], ignore_index=True) + else: + logging.info('No hg19 data provided. Using only hg38 data.') + logging.info('Feature extraction completed. True positives: %d, False positives: %d', + tp_data.shape[0], fp_data.shape[0]) + + # --------------------------------------------------------------- + # Data Preprocessing + # --------------------------------------------------------------- # Drop the genotype column from the data. logging.info('Dropping the genotype column from the data.') tp_data.drop(columns=['genotype'], inplace=True, errors='ignore') fp_data.drop(columns=['genotype'], inplace=True, errors='ignore') - # Drop the aln_type column from the data. - # logging.info('Dropping the aln_type column from the data.') - # tp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') - # fp_data.drop(columns=['aln_type'], inplace=True, errors='ignore') - # Drop the cn_state column from the data. logging.info('Dropping the cn_state column from the data.') tp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') @@ -595,10 +188,6 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } - # models = { - # "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), - # } - for model_name, model in models.items(): # Split the data into training and testing sets. logging.info('Splitting the data into training and testing sets (0.8/0.2).') @@ -836,24 +425,9 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno): # logging.info('Mean cross-validation score: %f', scores.mean()) -# Run the program. def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): - """Run the program.""" - # Train the model. - train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno) - # Create the output directory if it does not exist. - # if not os.path.exists(output_directory): - # os.makedirs(output_directory) - - # # Save the model - # model_path = os.path.join(output_directory, "model.pkl") - # joblib.dump(model, model_path) - - # # Print the model. - # print(model) - - # Return the model. - # return model + """Run the training process.""" + train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19, fp_bed_hg19) if __name__ == '__main__': From 4ddde04a6049f23bf90bb2484e0cd1ce38574778 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Wed, 16 Apr 2025 16:47:24 -0400 Subject: [PATCH 25/93] key fix --- contextscore/train_full_model.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 65ee1dd..307d80c 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -173,6 +173,22 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) tp_data = tp_data.sample(fp_data.shape[0], random_state=42) + # Plot the differences in correlation between true positives and false + # positives. + # diff_corr = tp_data.corr() - fp_data.corr() + # plt.figure(figsize=(12, 10)) + # sns.heatmap(diff_corr, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + # plt.title('Difference in Feature Correlation (True Positives - False Positives)') + # plt.tight_layout() + # plt.savefig(os.path.join(output_directory, 'feature_correlation_difference.png')) + # plt.close() + # logging.info('Feature correlation difference analysis completed. Saved to %s', + # os.path.join(output_directory, 'feature_correlation_difference.png')) + + # [TEST] Exit after this step to verify the feature extraction and data + # preprocessing. + # sys.exit(0) + # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data]) @@ -183,7 +199,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Train different models. models = { "Logistic Regression": LogisticRegression(), - "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), + "Random_Forest": RandomForestClassifier(n_estimators=100, random_state=42), "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } @@ -292,8 +308,8 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Feature names: %s', feature_names) logging.info('Number of features: %d', len(feature_names)) - # Feature importance for Random Forest and XGBoost. - if model_name in ["Random Forest", "XGBoost"]: + # Feature importance for Random_Forest and XGBoost. + if model_name in ["Random_Forest", "XGBoost"]: # Get feature importances. importances = model.feature_importances_ From 430d7f9975ef20f4b7a7fdb69396f30c575a6c3d Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 17 Apr 2025 08:36:51 -0400 Subject: [PATCH 26/93] add hg19 filtering --- contextscore/predict.py | 86 +++++++++++++++-------------------------- 1 file changed, 31 insertions(+), 55 deletions(-) diff --git a/contextscore/predict.py b/contextscore/predict.py index 97abc86..664f874 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -119,7 +119,7 @@ def create_bed(input_vcf, output_bed): bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf): +def score(model, input_vcf, output_vcf, buildver='hg38'): """Score the structural variants using the binary classification model. Args: @@ -147,7 +147,7 @@ def score(model, input_vcf, output_vcf): os.makedirs(anno_outdir) logging.info('Created output directory: %s', anno_outdir) - feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir) + feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir, buildver) logging.info('Extracted features from the BED file:\n%s', feature_df.head()) # Check if the feature extraction was successful @@ -177,9 +177,10 @@ def score(model, input_vcf, output_vcf): logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) # Filter the VCF, using the id column to get the final indices - prob_threshold = 0.1 + # prob_threshold = 0.1 + prob_threshold = 0.05 filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] - logging.info('Number of variants passing the probability threshold: %d', len(filtered_indices)) + logging.info('Number of variants under the probability threshold: %d', len(filtered_indices)) # Get the IDs of the filtered variants filtered_ids = id_col.iloc[filtered_indices].values @@ -193,6 +194,8 @@ def score(model, input_vcf, output_vcf): logging.info('Filtering the input VCF file based on the filtered indices...') filtered_records = set(filtered_ids) current_record = 0 + pass_count = 0 + total_records = 0 with open(input_vcf, 'r') as vcf_in, open(output_vcf, 'w') as vcf_out: for line in vcf_in: if line.startswith('#'): @@ -202,59 +205,13 @@ def score(model, input_vcf, output_vcf): if current_record not in filtered_records: # Write the line if the current record is not in the filtered records vcf_out.write(line) + pass_count += 1 + + total_records += 1 current_record += 1 logging.info('Filtered the input VCF file and saved it to %s', output_vcf) - - logging.info('Scoring process completed successfully. Number of variants processed: %d', current_record) - - # # Get the filtered features using the indices - # logging.info('Filtering features based on the predicted probabilities...') - # if len(filtered_indices) == 0: - # logging.warning('No variants passed the probability threshold. No features to save.') - # return - # feature_df['id'] = id_col # Add the ID column back to the features - # logging.info('Filtered features based on the predicted probabilities.') - # logging.info('Filtered indices:\n%s', filtered_indices) - # # Use the filtered indices to get the filtered features - # logging.info('Extracting filtered features from the feature DataFrame...') - # if filtered_indices.size == 0: - # logging.warning('No features to filter. No variants passed the probability threshold.') - # return - - # filtered_df = feature_df.iloc[filtered_indices] - # logging.info('Filtered features:\n%s', filtered_df.head()) - - # Save the filtered features to the output VCF file - - # logging.info('Filtered indices:\n%s', filtered_indices) - - # Save the predictions to the output VCF file - # vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, - - return - - # Extract the features from the VCF file - X = extract_features(input_vcf) - - # Predict the labels and get the probabilities - y_pred = clf.predict_proba(X) - - # logging.info('Predicted labels:\n%s', y_pred) - - # Plot a histogram of the probabilities - plt.hist(y_pred[:, 1], bins=20) - plt.xlabel('Probability') - plt.ylabel('Count') - - # # Save the plot to the input VCF file's directory - # output_dir = os.path.dirname(output_vcf) - # output_filepath = os.path.join(output_dir, 'probabilities.png') - # plt.savefig(output_filepath) - # logging.info('Saved the plot of the probabilities to %s.', output_filepath) - - # Save the plot to the working directory - plt.savefig('output/probabilities.png') + logging.info('Scoring process completed successfully. Passed %d out of %d records.', pass_count, total_records) if __name__ == '__main__': @@ -267,6 +224,8 @@ def score(model, input_vcf, output_vcf): help='Path to the output VCF file.') parser.add_argument('--model', type=str, required=True, help='Path to the model file.') + parser.add_argument('--buildver', type=str, default='hg38', + help='Genome build version (default: hg38).') args = parser.parse_args() input_vcf = args.input output_vcf = args.output @@ -296,6 +255,23 @@ def score(model, input_vcf, output_vcf): os.makedirs(output_dir) logging.info('Created output directory: %s', output_dir) + # Check if the input VCF file is a valid VCF file + if not input_vcf.endswith('.vcf') and not input_vcf.endswith('.vcf.gz'): + logging.error('Input file is not a valid VCF file: %s', input_vcf) + sys.exit(1) + if not output_vcf.endswith('.vcf'): + logging.error('Output file must have a .vcf extension: %s', output_vcf) + sys.exit(1) + if not model.endswith('.pkl'): + logging.error('Model file must have a .pkl extension: %s', model) + sys.exit(1) + + # Check the reference genome build version + buildver = args.buildver + if buildver not in ['hg19', 'hg38']: + logging.error('Unsupported genome build version: %s. Supported versions are hg19 and hg38.', buildver) + sys.exit(1) + # Run the scoring function - score(model, input_vcf, output_vcf) + score(model, input_vcf, output_vcf, buildver=buildver) logging.info('Scoring process completed.') From d0c86ec9925c91101d546f66cd6c71db0a4a6ee1 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 28 Apr 2025 10:52:36 -0400 Subject: [PATCH 27/93] update plot --- contextscore/predict.py | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/contextscore/predict.py b/contextscore/predict.py index 664f874..8c30f17 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -16,6 +16,7 @@ import numpy as np import joblib import pandas as pd +import seaborn as sns import matplotlib.pyplot as plt @@ -164,17 +165,28 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): y_pred = clf.predict_proba(feature_df) # Plot a histogram of the probabilities - plt.hist(y_pred[:, 1], bins=20) - plt.xlabel('Probability') - plt.ylabel('Count') - plt.title('Probability Distribution') + # output_dir = os.path.dirname(output_vcf) + # plt.hist(y_pred[:, 1], bins=20) + # plt.xlabel('Probability') + # plt.ylabel('Count') + # plt.title('Probability Distribution') + # if not os.path.exists(output_dir): + # os.makedirs(output_dir) + # logging.info('Created output directory: %s', output_dir) + # # Save the plot to the output directory + # plt.savefig(os.path.join(output_dir, 'probabilities.png')) + # logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) + + # Plot a histogram of the probabilities using seaborn since it looks better output_dir = os.path.dirname(output_vcf) - if not os.path.exists(output_dir): - os.makedirs(output_dir) - logging.info('Created output directory: %s', output_dir) + fig, ax = plt.subplots() + sns.histplot(y_pred[:, 1], bins=20, ax=ax) + ax.set_xlabel('Probability') + ax.set_ylabel('Count') + ax.set_title('Probability Distribution') # Save the plot to the output directory - plt.savefig(os.path.join(output_dir, 'probabilities.png')) - logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) + plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) + logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities_seaborn.png')) # Filter the VCF, using the id column to get the final indices # prob_threshold = 0.1 From 32eccd65e89f643749d610661c5bb0e9488dea6d Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 1 May 2025 13:28:45 -0400 Subject: [PATCH 28/93] normalize features and add annovar annotations --- contextscore/extract_features.py | 11 ++++++++- contextscore/train_full_model.py | 40 ++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 9cd703a..82ed62a 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -165,7 +165,12 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= sys.exit(1) # Add annotations to the features. - add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno, buildversion, training_format) + bed_df = add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno, buildversion, training_format) + logging.info('Added ANNOVAR annotations to the features. Updated columns: %s', bed_df.columns) + + # Drop the segdup column (too highly correlated with SVs). + bed_df.drop(columns=['segdup'], inplace=True) + logging.info('[TEST] Dropped the segdup column. Current columns: %s', bed_df.columns) # Finally map chromosome names to numbers. # Load a dictionary mapping chromosome names to numbers. @@ -530,5 +535,9 @@ def get_cyto_info(row): # Drop the unnecessary columns. data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) + logging.info('Dropped the unnecessary columns. Current columns: %s', data.columns) + logging.info('Number of records after adding annotations: %d', data.shape[0]) logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) + + return data diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 307d80c..54e28ac 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -173,6 +173,9 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) tp_data = tp_data.sample(fp_data.shape[0], random_state=42) + logging.info('Number of true labels after balancing: %d', tp_data.shape[0]) + logging.info('Number of false labels after balancing: %d', fp_data.shape[0]) + # Plot the differences in correlation between true positives and false # positives. # diff_corr = tp_data.corr() - fp_data.corr() @@ -209,12 +212,38 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Splitting the data into training and testing sets (0.8/0.2).') X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) + # Scale the data since some features such as read depth and LRR vary across + # different samples and can have different ranges. + from sklearn.preprocessing import StandardScaler + scaler = StandardScaler() + X_train = scaler.fit_transform(X_train) + X_test = scaler.transform(X_test) + logging.info('Data split and scaled. Training set size: %d, Testing set size: %d', + X_train.shape[0], X_test.shape[0]) + # Print the number of features. + logging.info('Number of features: %d', X_train.shape[1]) + + # Print the feature names. + feature_names = features.columns.tolist() + logging.info('Feature names: %s', feature_names) + logging.info('Number of features: %d', len(feature_names)) + + # Print the number of true positives and false positives in the training + # and testing sets. + logging.info('Number of true positives in the training set: %d', np.sum(y_train == 1)) + logging.info('Number of false positives in the training set: %d', np.sum(y_train == 0)) + logging.info('Number of true positives in the testing set: %d', np.sum(y_test == 1)) + logging.info('Number of false positives in the testing set: %d', np.sum(y_test == 0)) + logging.info('Training set size: %d', X_train.shape[0]) + logging.info('Testing set size: %d', X_test.shape[0]) + logging.info('Number of features: %d', X_train.shape[1]) + # If SVC, scale the data. - if model_name == "SVC": - from sklearn.preprocessing import StandardScaler - scaler = StandardScaler() - X_train = scaler.fit_transform(X_train) - X_test = scaler.transform(X_test) + # if model_name == "SVC": + # from sklearn.preprocessing import StandardScaler + # scaler = StandardScaler() + # X_train = scaler.fit_transform(X_train) + # X_test = scaler.transform(X_test) # Train the model. logging.info('Training the %s model.', model_name) @@ -257,6 +286,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.title('Receiver Operating Characteristic (Training Set)') plt.legend(loc='lower right') # Save the plot to the output directory. + model_name = model_name.replace(" ", "_") roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') plt.savefig(roc_plot_path) plt.close() From 7419bfceac1d70e51da2abd4758b6f077938c2fd Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 1 May 2025 16:51:26 -0400 Subject: [PATCH 29/93] fix segdup scores --- contextscore/extract_features.py | 40 ++++++++++--- contextscore/train_full_model.py | 98 +++++++++++++++++++++++--------- 2 files changed, 105 insertions(+), 33 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 82ed62a..8e3309c 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -169,8 +169,8 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= logging.info('Added ANNOVAR annotations to the features. Updated columns: %s', bed_df.columns) # Drop the segdup column (too highly correlated with SVs). - bed_df.drop(columns=['segdup'], inplace=True) - logging.info('[TEST] Dropped the segdup column. Current columns: %s', bed_df.columns) + # bed_df.drop(columns=['segdup'], inplace=True) + # logging.info('[TEST] Dropped the segdup column. Current columns: %s', bed_df.columns) # Finally map chromosome names to numbers. # Load a dictionary mapping chromosome names to numbers. @@ -510,14 +510,40 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir, buildve logging.info('Merging the ANNOVAR annotations with the data.') data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') + # Print the first 20 segdup values. + logging.info('First 20 values of the segdup column: %s', data['genomicSuperDups'].head(20)) + + # Extract segmental duplication scores. + # def extract_max_score(score_series): + # """Extract and return the maximum Score= value from a series.""" + # scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) + # return scores.max() if not scores.empty else 0 + # Extract segmental duplication scores. - def extract_max_score(score_series): - """Extract and return the maximum Score= value from a series.""" - scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) - return scores.max() if not scores.empty else 0 + def extract_scores(score_str): + """Extract and return the segmental duplication scores from a string.""" + if pd.isna(score_str) or score_str == '.': + return 0 + # Extract the Score= value from the string. + try: + score = score_str.split('Score=')[1].split(';')[0] + except IndexError: + logging.warning('Score= not found in the string: %s', score_str) + return 0 + return float(score) if score else 0 # Extract the maximum score from the segmental duplication annotations. - data['segdup'] = extract_max_score(data['genomicSuperDups']) + # data['segdup'] = extract_max_score(data['genomicSuperDups']) + + # # Print the first 20 values of the segdup column. + # logging.info('First 20 values of the segdup column: %s', data['segdup'].head(20)) + + # Extract the segmental duplication scores. + # test_scores = data['genomicSuperDups'].apply(extract_scores) + data['segdup'] = data['genomicSuperDups'].apply(extract_scores) + + # Print the first 20 values of the test_scores column. + logging.info('First 20 values of the updated segdup column: %s', data['segdup'].head(20)) # Extract the cytoband annotations. def get_cyto_info(row): diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 54e28ac..a2a44f9 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -207,10 +207,56 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } + # Split the data into training and testing sets. + logging.info('Splitting the data into training and testing sets (0.8/0.2).') + X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) + logging.info('Data split completed. Training set size: %d, Testing set size: %d', + X_train.shape[0], X_test.shape[0]) + # Print the number of features. + logging.info('Number of features: %d', X_train.shape[1]) + # Print the feature names. + feature_names = features.columns.tolist() + logging.info('Feature names: %s', feature_names) + + # The segdup feature seems highly important for the model (too much + # correlation with the label). Thus, we will plot the distribution of the + # segdup feature for true positives and false positives. + logging.info('Plotting the distribution of the segdup feature for true positives.') + plt.figure(figsize=(10, 6)) + # sns.histplot(tp_data['segdup'], color='blue', kde=True, stat='density') + + # Plot only non-zero values. + sns.histplot(tp_data[tp_data['segdup'] > 0]['segdup'], color='blue', kde=True, stat='density') + plt.xlabel('segdup') + plt.ylabel('Density') + plt.title('Distribution of segdup Feature (True Positives)') + # Save the plot to the output directory. + segdup_tp_plot_path = os.path.join(output_directory, 'segdup_distribution_tp.png') + plt.savefig(segdup_tp_plot_path) + plt.close() + logging.info('Saved the segdup distribution plot for true positives to %s', segdup_tp_plot_path) + + logging.info('Plotting the distribution of the segdup feature for false positives.') + plt.figure(figsize=(10, 6)) + # sns.histplot(fp_data['segdup'], color='red', kde=True, stat='density') + # Plot only non-zero values. + sns.histplot(fp_data[fp_data['segdup'] > 0]['segdup'], color='red', kde=True, stat='density') + plt.xlabel('segdup') + plt.ylabel('Density') + plt.title('Distribution of segdup Feature (False Positives)') + # Save the plot to the output directory. + segdup_fp_plot_path = os.path.join(output_directory, 'segdup_distribution_fp.png') + plt.savefig(segdup_fp_plot_path) + plt.close() + logging.info('Saved the segdup distribution plot for false positives to %s', segdup_fp_plot_path) + + # [TEST] exit after this step to verify the data preprocessing. + sys.exit(0) + for model_name, model in models.items(): - # Split the data into training and testing sets. - logging.info('Splitting the data into training and testing sets (0.8/0.2).') - X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) + # # Split the data into training and testing sets. + # logging.info('Splitting the data into training and testing sets (0.8/0.2).') + # X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) # Scale the data since some features such as read depth and LRR vary across # different samples and can have different ranges. @@ -364,29 +410,29 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Saved the feature importances plot to %s', importance_plot_path) # For SVC, get the coefficients. - if model_name == "SVC": - # Get the coefficients. - # coefficients = model.coef_[0] - - # Sort the coefficients in descending order. - indices = np.argsort(coefficients)[::-1] - - # Print the feature ranking. - logging.info('Feature ranking:') - for f in range(X_train.shape[1]): - logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) - - # Plot the coefficients. - plt.figure() - plt.title('Feature Coefficients') - plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') - plt.xticks(range(X_train.shape[1]), indices) - plt.xlim([-1, X_train.shape[1]]) - # Save the plot to the output directory. - coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') - plt.savefig(coeff_plot_path) - plt.close() - logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) + # if model_name == "SVC": + # # Get the coefficients. + # coefficients = model.coef_[0] + + # # Sort the coefficients in descending order. + # indices = np.argsort(coefficients)[::-1] + + # # Print the feature ranking. + # logging.info('Feature ranking:') + # for f in range(X_train.shape[1]): + # logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) + + # # Plot the coefficients. + # plt.figure() + # plt.title('Feature Coefficients') + # plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') + # plt.xticks(range(X_train.shape[1]), indices) + # plt.xlim([-1, X_train.shape[1]]) + # # Save the plot to the output directory. + # coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') + # plt.savefig(coeff_plot_path) + # plt.close() + # logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) # For logistic regression, get the coefficients. if model_name == "Logistic Regression": From 990dfad4ca4e4a0cd10c51c25f6ba47675e8fc05 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 1 May 2025 16:53:45 -0400 Subject: [PATCH 30/93] remove test code --- contextscore/train_full_model.py | 35 -------------------------------- 1 file changed, 35 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index a2a44f9..d8355d8 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -218,41 +218,6 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t feature_names = features.columns.tolist() logging.info('Feature names: %s', feature_names) - # The segdup feature seems highly important for the model (too much - # correlation with the label). Thus, we will plot the distribution of the - # segdup feature for true positives and false positives. - logging.info('Plotting the distribution of the segdup feature for true positives.') - plt.figure(figsize=(10, 6)) - # sns.histplot(tp_data['segdup'], color='blue', kde=True, stat='density') - - # Plot only non-zero values. - sns.histplot(tp_data[tp_data['segdup'] > 0]['segdup'], color='blue', kde=True, stat='density') - plt.xlabel('segdup') - plt.ylabel('Density') - plt.title('Distribution of segdup Feature (True Positives)') - # Save the plot to the output directory. - segdup_tp_plot_path = os.path.join(output_directory, 'segdup_distribution_tp.png') - plt.savefig(segdup_tp_plot_path) - plt.close() - logging.info('Saved the segdup distribution plot for true positives to %s', segdup_tp_plot_path) - - logging.info('Plotting the distribution of the segdup feature for false positives.') - plt.figure(figsize=(10, 6)) - # sns.histplot(fp_data['segdup'], color='red', kde=True, stat='density') - # Plot only non-zero values. - sns.histplot(fp_data[fp_data['segdup'] > 0]['segdup'], color='red', kde=True, stat='density') - plt.xlabel('segdup') - plt.ylabel('Density') - plt.title('Distribution of segdup Feature (False Positives)') - # Save the plot to the output directory. - segdup_fp_plot_path = os.path.join(output_directory, 'segdup_distribution_fp.png') - plt.savefig(segdup_fp_plot_path) - plt.close() - logging.info('Saved the segdup distribution plot for false positives to %s', segdup_fp_plot_path) - - # [TEST] exit after this step to verify the data preprocessing. - sys.exit(0) - for model_name, model in models.items(): # # Split the data into training and testing sets. # logging.info('Splitting the data into training and testing sets (0.8/0.2).') From 23f98e64792d2c13d708499e306b56e05953a494 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 1 May 2025 19:07:25 -0400 Subject: [PATCH 31/93] remove unused code --- contextscore/annotate.py | 27 - contextscore/score_vcf.py | 114 ---- contextscore/train_caller_model.py | 365 ------------ contextscore/train_region_anno_model.py | 701 ------------------------ 4 files changed, 1207 deletions(-) delete mode 100644 contextscore/annotate.py delete mode 100644 contextscore/score_vcf.py delete mode 100644 contextscore/train_caller_model.py delete mode 100644 contextscore/train_region_anno_model.py diff --git a/contextscore/annotate.py b/contextscore/annotate.py deleted file mode 100644 index 285ef79..0000000 --- a/contextscore/annotate.py +++ /dev/null @@ -1,27 +0,0 @@ -import os -import subprocess - -def annotate_with_annovar(input_vcf, output_prefix, annovar_path, db_path): - cmd = [ - f"{annovar_path}/table_annovar.pl", - input_vcf, - db_path, - "--buildver hg19", - "--out", output_prefix, - "--remove", - "--protocol refGene,cytoBand,dbnsfp35a", - "--operation g,r,f", - "--nastring ." - ] - subprocess.run(" ".join(cmd), shell=True, check=True) - -if __name__ == "__main__": - import argparse - parser = argparse.ArgumentParser() - parser.add_argument("--vcf", required=True, help="Input VCF file") - parser.add_argument("--out", required=True, help="Output prefix") - parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") - parser.add_argument("--db", required=True, help="Path to ANNOVAR database") - args = parser.parse_args() - - annotate_with_annovar(args.vcf, args.out, args.annovar, args.db) diff --git a/contextscore/score_vcf.py b/contextscore/score_vcf.py deleted file mode 100644 index 95a81a2..0000000 --- a/contextscore/score_vcf.py +++ /dev/null @@ -1,114 +0,0 @@ -""" -score_vcf.py - Score structural variants in a VCF file using a binary classification model. - -This script prioritizes structural variants in a VCF file by scoring them using -a binary classification model. The model is trained using a VCF file of true -positive structural variants and a VCF file of false positive structural -variants. The model is trained using the following features extracted from the -VCF files: chromosome, start position, structural variant length, structural -variant type, read support, and clipped bases. The model is a logistic -regression model. - -Usage: - python score_vcf.py - -Arguments: - model_path: str - Path to the trained model file. - vcf_filepath: str - Path to the VCF file to score. - -Example: - python score_vcf.py model.pkl structural_variants.vcf - -""" - -import os -import sys -import logging -import numpy as np -import joblib -import pandas as pd -from sklearn.linear_model import LogisticRegression -import matplotlib.pyplot as plt - -from extract_features import extract_features - - -# Set up the logger. -logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') - - -def score(region_model_path, caller_model_path, vcf_filepath, output_vcf): - """Load the model and VCF file and score the structural variants.""" - # Load the VCF file. - logging.info('Extracting features from the VCF file.') - features = extract_features(vcf_filepath) - - # Load the model. - logging.info('Loading the region-based model.') - region_model = joblib.load(region_model_path) - - logging.info('Loading the caller-based model.') - caller_model = joblib.load(caller_model_path) - - # Score the structural variants separately using the region-based and - # caller-based models. - logging.info('Scoring the structural variants using the region-based model.') - y_region = region_model.predict_proba(features)[:, 1] # index 0=negative, 1=positive probabilities - y_caller = caller_model.predict_proba(features)[:, 1] # index 0=negative, 1=positive probabilities - - # Compute the confidence scores. - conf_region = np.abs(y_region - 0.5) - conf_caller = np.abs(y_caller - 0.5) - - # Normalize the confidence scores to get the weights (higher confidence = - # higher weight) - # (weights sum to 1) - weights_region = conf_region / (conf_region + conf_caller) - weights_caller = conf_caller / (conf_region + conf_caller) - - # Handle NaN values in the weights when conf=0 (0.5 SV prediction from both models), equal weight (0.5) for both models - weights_region = np.nan_to_num(weights_region, nan=0.5) - weights_caller = np.nan_to_num(weights_caller, nan=0.5) - - # Combine the scores from the two models using the weights. - P_final = (weights_region * y_region + weights_caller * y_caller) - - # Second approach: Model performance-based weights. - # auc_region = 0.85 # Performance of Model 1 - # auc_caller = 0.75 # Performance of Model 2 - - # w1 = auc_region / (auc_region + auc_caller) - # w2 = auc_caller / (auc_region + auc_caller) - - # P_final = w1 * y_region + w2 * y_caller - - # Plot a histogram of the scores. - logging.info('Plotting the distribution of scores.') - plt.hist(scores) - plt.xlabel('Score') - plt.ylabel('Frequency') - plt.title('Distribution of Scores') - - # Save the plot as a PNG file. - output_png = "scores.png" - plt.tight_layout() - plt.savefig(output_png) - logging.info('Saved the plot as %s.', output_png) - - -if __name__ == '__main__': - # Get the command line arguments. - if len(sys.argv) != 4: - logging.error('Usage: python score_vcf.py \n') - sys.exit(1) - - # Get the model path and VCF file path. - model_path = sys.argv[1] - vcf_filepath = sys.argv[2] - output_vcf = sys.argv[3] - - # Run the program. - score(model_path, vcf_filepath, output_vcf) - logging.info('done.') diff --git a/contextscore/train_caller_model.py b/contextscore/train_caller_model.py deleted file mode 100644 index c472be6..0000000 --- a/contextscore/train_caller_model.py +++ /dev/null @@ -1,365 +0,0 @@ -""" -train_model.py - Train the binary classification model. - -This script trains the binary classification model using the true positive and -false positive data. The true positive data is obtained from a benchmarking -dataset. The false positive data is obtained from running the caller on data -that is known to be negative for SVs. This data can be obtained by running the -caller on a normal sample with known SVs accounted for in the reference genome. - -For example for HG002, the true positive data is obtained from the Genome in a -Bottle benchmarking dataset, and the false positive data is obtained from -running the caller on the HG002 normal sample and extracting the SV calls that -are not in the benchmarking dataset. This can be repeated for other samples such -as HG001 and HG005 as long as the known SVs are accounted for. - -In the HG002 SV v0.6 dataset, there are low-confidence regions which -are excluded from the true positive data. Thus, we must include true SVs from -other publicly available normal samples with information from complex regions, -such as those aligned to CHM13. - -The model is trained using logistic regression. The features are the LRR and -BAF values. The labels are 1 for true positives and 0 for false positives. - -The model is saved to the output directory as a pickle file. - -Usage: - python train_model.py - - - true_positives_filepath: Path to the VCF of true positive SV calls obtained - from a benchmarking dataset. - false_positives_filepath: Path to the VCF of false positive SV calls - obtained from running the caller on data that is known to be negative - for SVs. This data can be obtained by running the caller on a normal - sample with known SVs accounted for in the reference genome. - - output_directory: Path to the output directory. - -Output: - model.pkl: The binary classification model. - -Example: - python train_model.py data/sv_scoring_dataset/true_positives.vcf - sv_scoring_dataset/false_positives.vcf data/sv_scoring_dataset/model -""" - -import os -import sys -import logging -import numpy as np -import joblib -import pandas as pd -from sklearn.linear_model import LogisticRegression -from sklearn.ensemble import RandomForestClassifier -from xgboost import XGBClassifier -from sklearn.svm import SVC - -import matplotlib.pyplot as plt - -from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report -import matplotlib.pyplot as plt -import seaborn as sns - -# from extract_features import extract_features - -# Set up the logger. -logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') - -def extract_features(input_bed): - """Extract the features from the BED file, columns are in the first row: - chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size - """ - logging.info('Extracting features from the BED file %s', input_bed) - - # Load a dictionary mapping chromosome names to numbers. - chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - chrom_dict = joblib.load(chrom_dict_path) - - # Read in the BED file. - bed_df = pd.read_csv(input_bed, sep='\t', header=0, usecols=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], - names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size'], - dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32}) - - # Print the number of NaN values - logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) - - # Map the chromosome names to numbers. - bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) - - # Print the number of NaN values - logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of alignment types to numbers. - # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", - # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" - aln_type_map = { - 'CIGARINS': 0, - 'CIGARDEL': 1, - 'CIGARCLIP': 2, - 'SPLIT': 3, - 'SPLITDIST1': 4, - 'SPLITDIST2': 5, - 'SPLITINV': 6, - 'SUPPINV': 7, - 'HMM': 8, - 'UNKNOWN': 9 - } - - # Map the alignment types to numbers. - bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) - - # Print the number of NaN values - logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of SV types to numbers. - # SV types are: "DEL", "DUP", "INV", "INS", "BND", "UNKNOWN" - sv_type_map = { - 'DEL': 0, - 'DUP': 1, - 'INV': 2, - 'INS': 3, - 'BND': 4, - 'UNKNOWN': 5 - } - - # Map the SV types to numbers. - bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) - - # Print the number of NaN values - logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of genotypes to numbers. - # Genotypes are: "0/0", "0/1", "1/1", "./." - genotype_map = { - '0/0': 0, - '0/1': 1, - '1/1': 2, - './.': 3 - } - - # Map the genotypes to numbers. - bed_df['genotype'] = bed_df['genotype'].map(genotype_map) - - # Print the number of NaN values - logging.info('Number of NaN values after genotype mapping: %d', bed_df.isnull().sum().sum()) - - # Check if any features are missing. - if bed_df.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = bed_df[bed_df.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - # Return the features. - return bed_df - - -def train(tp_bed, fp_bed, output_directory): - """Train the binary classification model.""" - - # Extract the features from the VCF files. - logging.info('Extracting features from the true positive file %s', tp_bed) - tp_data = extract_features(tp_bed) - - # Check if any features are missing. - if tp_data.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = tp_data[tp_data.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - logging.info('Extracting features from the false positive file %s', fp_bed) - fp_data = extract_features(fp_bed) - - # Check if any features are missing. - if fp_data.isnull().values.any(): - logging.error('Features are missing.') - - # Get the rows with missing features. - missing_features = fp_data[fp_data.isnull().any(axis=1)] - - # Print the rows with missing features. - logging.error(missing_features) - sys.exit(1) - - # Add the labels. - tp_data['label'] = 1 - fp_data['label'] = 0 - - # Print the number of true positives and false positives. - logging.info('Number of true labels: %d', tp_data.shape[0]) - logging.info('Number of false labels: %d', fp_data.shape[0]) - - # Drop NaN values from the data. - logging.info('Dropping NaN values from the data.') - tp_data.dropna(inplace=True) - fp_data.dropna(inplace=True) - - # Balance the dataset by undersampling the true positives. - logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) - tp_data = tp_data.sample(fp_data.shape[0], random_state=42) - - # Combine the true positive and false positive data. - data = pd.concat([tp_data, fp_data]) - - # Get the features and labels. - features = data.drop(columns=['label']) - labels = data["label"] - - # Train different models. - models = { - "Logistic Regression": LogisticRegression(), - "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), - "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), - "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) - } - - # models = { - # "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), - # } - - for model_name, model in models.items(): - logging.info('Training the %s model.', model_name) - # logging.info('Training the model.') - # # model = LogisticRegression() - # model = RandomForestClassifier(n_estimators=100, random_state=42) - model.fit(features, labels) - - # Get predicted probabilities. - logging.info('Getting predicted probabilities.') - y_pred = model.predict(features) - y_prob = model.predict_proba(features)[:, 1] - - # Get the ROC curve. - fpr, tpr, thresholds = roc_curve(labels, y_prob) - roc_auc = auc(fpr, tpr) - - # Plot the ROC curve. - plt.figure() - plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - plt.title('Receiver Operating Characteristic') - plt.legend(loc='lower right') - # Save the plot to the output directory. - roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) - - # Get the precision-recall curve. - precision, recall, thresholds = precision_recall_curve(labels, y_prob) - pr_auc = auc(recall, precision) - - # Plot the precision-recall curve. - plt.figure() - plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) - plt.xlabel('Recall') - plt.ylabel('Precision') - plt.title('Precision-Recall Curve') - plt.legend(loc='lower left') - # Save the plot to the output directory. - pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') - plt.savefig(pr_plot_path) - plt.close() - logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) - - # Get the confusion matrix. - cm = confusion_matrix(labels, y_pred) - logging.info('Confusion matrix:\n%s', cm) - - # Plot the confusion matrix using seaborn. - plt.figure() - sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') - plt.xlabel('Predicted') - plt.ylabel('True') - plt.title('Confusion Matrix') - # Save the plot to the output directory. - cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') - plt.savefig(cm_plot_path) - plt.close() - logging.info('Saved the confusion matrix to %s', cm_plot_path) - - # Print the classification report. - logging.info('Classification report:\n%s', classification_report(labels, y_pred)) - - # Save the report to a file. - report_path = os.path.join(output_directory, model_name + '_classification_report.txt') - with open(report_path, 'w') as f: - f.write(classification_report(labels, y_pred)) - - logging.info('Saved the classification report to %s', report_path) - - # Save the model. - model_path = os.path.join(output_directory, model_name + '_caller_model.pkl') - logging.info('Saving the model to %s', model_path) - joblib.dump(model, model_path) - logging.info('Saved the model to %s', model_path) - - # Run cross-validation by splitting the data into 5 folds and training - # the model on each fold. - from sklearn.model_selection import cross_val_score - logging.info('Running cross-validation.') - scores = cross_val_score(model, features, labels, cv=5) - logging.info('Cross-validation scores: %s', scores) - logging.info('Mean cross-validation score: %f', scores.mean()) - - -# Run the program. -def run(tp_bed, fp_bed, output_directory): - """Run the program.""" - # Train the model. - train(tp_bed, fp_bed, output_directory) - # Create the output directory if it does not exist. - # if not os.path.exists(output_directory): - # os.makedirs(output_directory) - - # # Save the model - # model_path = os.path.join(output_directory, "model.pkl") - # joblib.dump(model, model_path) - - # # Print the model. - # print(model) - - # Return the model. - # return model - - -if __name__ == '__main__': - # Get the command line arguments. - # if len(sys.argv) != 4: - # logging.error('Usage: python train_model.py \n') - # sys.exit(1) - - # # Input VCF of true positive SV calls obtained from a benchmarking dataset. - # tp_filepath = sys.argv[1] - - # # Input VCF of false positive SV calls obtained from running the caller on - # # data that is known to be negative for SVs. This data can be obtained by - # # running the caller on a normal sample with known SVs accounted for in the - # # reference genome. - # fp_filepath = sys.argv[2] - # output_dir = sys.argv[3] - import argparse - parser = argparse.ArgumentParser() - parser.add_argument('--tpbed', type=str, required=True, help='Path to the VCF of true positive SV calls obtained from a benchmarking dataset.') - parser.add_argument('--fpbed', type=str, required=True, help='Path to the VCF of false positive SV calls obtained from running the caller on data that is known to be negative for SVs.') - parser.add_argument('--outdir', type=str, required=True, help='Path to the output directory.') - args = parser.parse_args() - - # Run the program. - logging.info('Training the model...') - run(args.tpbed, args.fpbed, args.outdir) - logging.info('done.') diff --git a/contextscore/train_region_anno_model.py b/contextscore/train_region_anno_model.py deleted file mode 100644 index 4663be4..0000000 --- a/contextscore/train_region_anno_model.py +++ /dev/null @@ -1,701 +0,0 @@ -""" -train_model.py - Train the binary classification model. - -This script trains the binary classification model using the true positive and -false positive data. The true positive data is obtained from a benchmarking -dataset. The false positive data is obtained from running the caller on data -that is known to be negative for SVs. This data can be obtained by running the -caller on a normal sample with known SVs accounted for in the reference genome. - -For example for HG002, the true positive data is obtained from the Genome in a -Bottle benchmarking dataset, and the false positive data is obtained from -running the caller on the HG002 normal sample and extracting the SV calls that -are not in the benchmarking dataset. This can be repeated for other samples such -as HG001 and HG005 as long as the known SVs are accounted for. - -In the HG002 SV v0.6 dataset, there are low-confidence regions which -are excluded from the true positive data. Thus, we must include true SVs from -other publicly available normal samples with information from complex regions, -such as those aligned to CHM13. - -The model is trained using logistic regression. The features are the LRR and -BAF values. The labels are 1 for true positives and 0 for false positives. - -The model is saved to the output directory as a pickle file. - -Usage: - python train_model.py - - - true_positives_filepath: Path to the VCF of true positive SV calls obtained - from a benchmarking dataset. - false_positives_filepath: Path to the VCF of false positive SV calls - obtained from running the caller on data that is known to be negative - for SVs. This data can be obtained by running the caller on a normal - sample with known SVs accounted for in the reference genome. - - output_directory: Path to the output directory. - -Output: - model.pkl: The binary classification model. - -Example: - python train_model.py data/sv_scoring_dataset/true_positives.vcf - sv_scoring_dataset/false_positives.vcf data/sv_scoring_dataset/model -""" - -import os -import sys -import subprocess -import logging -import numpy as np -import joblib -from io import StringIO -# import pybedtools # For annotating BED files. -import pandas as pd - -from sklearn.linear_model import LogisticRegression -from sklearn.ensemble import RandomForestClassifier -from xgboost import XGBClassifier -from sklearn.svm import SVC - -import matplotlib.pyplot as plt - -from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report -import matplotlib.pyplot as plt -import seaborn as sns - - -# Set up the logger. -logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') - -def read_cytoband_file(cytoband_file): - """Get the centromere and telomere regions for each chromosome.""" - cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) - chrom_dict = {} - for chrom in cytobands['chrom'].unique(): - - # Skip chrM - if chrom == 'chrM': - continue - - chrom_df = cytobands[cytobands['chrom'] == chrom] - # First and last bands are the telomeres. - # First telomere: - chrom_dict[chrom] = { - 'telomerep': chrom_df.iloc[0]['name'], - 'telomereq': chrom_df.iloc[-1]['name'] - } - - # Identify the 2 centromeres for p and q (contain "acen"). - centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] - centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] - if not centromere_p.empty: - chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] - if not centromere_q.empty: - chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] - - # print("Chromosome:", chrom) - # print(chrom_dict[chrom]) - - return chrom_dict - -def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): - """Check if the cytoband is a telomere or centromere.""" - if chrom not in chrom_dict: - return False, False # Not in any region. - - is_telomere = False - is_centromere = False - # Check if the cytoband is a telomere. - try: - if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: - is_telomere = True - except TypeError: - # Handle the case where telomerep is not defined. - logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) - logging.warning('Cytoband: %s', cytoband) - logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) - is_telomere = False - if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: - is_telomere = True - if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: - is_centromere = True - if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: - is_centromere = True - - return is_telomere, is_centromere - - -def bed_to_annovar_input(bed_file): - """Convert the BED file to ANNOVAR input format.""" - output_file = bed_file.replace('.bed', '.avinput') - logging.info('Converting the BED file to ANNOVAR input format.') - - # Read the BED file using pandas (first line is the header with the column names). - df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) - logging.info('Number of rows in the BED file: %d', df.shape[0]) - logging.info('First 5 rows of the BED file:\n%s', df.head()) - - # The ANNOVAR input format requires the following columns: - # 1. Chromosome - # 2. Start position - # 3. End position - # 4. Reference allele - # 5. Alternate allele - # We will use the first three columns from the BED file and add two dummy - # columns for the reference and alternate alleles (0, and -) since gnomAD does not - # provide the sequence information for the SVs. - - # Create a new dataframe with the required columns. - annovar_df = pd.DataFrame() - annovar_df['chrom'] = df['CHROM'] - annovar_df['start'] = df['POS'] - annovar_df['end'] = df['END'] - annovar_df['ref'] = '0' - annovar_df['alt'] = '-' - - # Save the tab-delimited dataframe to a file. - logging.info('Saving the ANNOVAR input file to %s', output_file) - annovar_df.to_csv(output_file, sep='\t', index=False, header=False) - logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) - logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) - logging.info('Saved the ANNOVAR input file to %s', output_file) - - return output_file - -def download_annovar_db(annovar_path, db_path, db_name, buildver): - """Download the ANNOVAR database if it does not exist.""" - logging.info('Downloading the database:' + db_name) - cmd = [ - f"{annovar_path}/annotate_variation.pl", - "-buildver", buildver, - "-downdb", db_name, - db_path - ] - # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ - - # Run the command to download the database. - logging.info('Running the command to download the database: %s', " ".join(cmd)) - try: - subprocess.run(" ".join(cmd), shell=True, check=True) - except subprocess.CalledProcessError as e: - logging.error('Error downloading the database: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - logging.info('Downloaded the database %s successfully.', db_name) - -def annotate(annovar_input, annovar_path, db_path, output_dir): - """Annotate regions.""" - logging.info('Annotating regions using ANNOVAR.') - - annotations_dir = os.path.join(output_dir, 'regions') - logging.info('Creating the output directory: %s', annotations_dir) - cmd = [ - f"{annovar_path}/table_annovar.pl", - annovar_input, - db_path, - "--buildver hg38", - "--out", annotations_dir, - "--remove", - "--protocol genomicSuperDups,cytoBand", - "--operation r,r", - "--nastring .", - "-polish" - ] - # "--protocol genomicSuperDups", - - try: - subprocess.run(" ".join(cmd), shell=True, check=True) - except subprocess.CalledProcessError as e: - logging.error('Error annotating: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - - logging.info('Completed annotations.') - -def run_bedtools_intersect(input_bed, table_bed): - """Run bedtools intersect to annotate the BED file.""" - # Check if bedtools is installed. - try: - subprocess.run(["bedtools", "--version"], check=True) - except subprocess.CalledProcessError: - logging.error('bedtools is not installed. Please install bedtools.') - sys.exit(1) - - # Check if the input BED file exists. - if not os.path.exists(input_bed): - logging.error('Input BED file does not exist: %s', input_bed) - sys.exit(1) - - # Check if the table BED file exists. - if not os.path.exists(table_bed): - logging.error('Table BED file does not exist: %s', table_bed) - sys.exit(1) - - # Run bedtools intersect to annotate the BED file. - cmd = [ - "bedtools", "intersect", - "-a", input_bed, - "-b", table_bed, - "-wa", "-wb" - ] - logging.info('Running the command to annotate the BED file: %s', " ".join(cmd)) - try: - result = subprocess.run(cmd, check=True, stdout=subprocess.PIPE, text=True) - - # Parse the output of bedtools intersect into a pandas DataFrame. - logging.info('Parsing the output of bedtools intersect.') - annotated_bed = pd.read_csv( - StringIO(result.stdout), - sep='\t', - header=None, - names=["chrom", "start", "end", "chr_anno", "start_anno", "end_anno", "name"], - usecols=[0, 1, 2, 3, 4, 5, 6] - ) - - # Print the first few rows of the annotated BED file. - logging.info('Annotated BED file:\n%s', annotated_bed.head()) - - return annotated_bed - - except subprocess.CalledProcessError as e: - logging.error('Error annotating the BED file: %s', e) - logging.error('Please check the input and table BED files.') - sys.exit(1) - - -def add_annotations(df, annotation_file): - """Add annotations to the dataframe from the ANNOVAR output file.""" - logging.info('Adding annotations from: %s', annotation_file) - - # Read the annotation file into a dataframe. - anno_df = pd.read_csv(annotation_file, sep='\t', header=None, names=["chrom", "start", "end", "annotation"], comment='#') - logging.info('Annotation dataframe:\n%s', anno_df.head()) - - -def add_telomere_centromere_segdup(input_df, anno_df, cytoband_dict): - """Add telomere, centromere, and segmental duplication annotations to the - input dataframe.""" - - # Merge the input dataframe with the annotation dataframe - logging.info('Merging the input dataframe with the annotation dataframe.') - merged_df = input_df.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') - logging.info('Merged dataframe:\n%s', merged_df.head()) - - # Extract segmental duplication scores - def extract_max_score(score_series): - """Extract and return the maximum Score= value from a series.""" - scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) - return scores.max() if not scores.empty else np.nan - - # Get the maximum score for segmental duplications. - merged_df['segdup'] = extract_max_score(merged_df['genomicSuperDups']) - - # Determine centromere and telomere regions using vectorized operations. - def get_cyto_info(row): - """Get telomere and centromere information for a row.""" - if pd.notna(row['cytoBand']): - return get_cytoband_is_c_t(cytoband_dict, row['chrom'], row['cytoBand']) - return (np.nan, np.nan) - - merged_df[['telomere', 'centromere']] = merged_df.apply(get_cyto_info, axis=1, result_type='expand') - - # Select only necessary columns for the final output. - final_cols = list(input_df.columns) + ['segdup', 'telomere', 'centromere'] - final_df = merged_df[final_cols] - logging.info('Final dataframe:\n%s', final_df.head()) - - return final_df - - -# Run the program. -def run(tp_bed, fp_bed, output_directory, output_directory_annovar, annovar_path, db_path): - """Train the binary classification model.""" - - # Set up a dictionary for each chromosome, mapping the cytoband to the - # centromere and telomere regions. - cytoband_file = "/home/perdomoj/github/ContextScore/data/hg38_cytoband.txt" # Downloaded from UCSC. - cytoband_dict = read_cytoband_file(cytoband_file) - - # TODO: Make this an input parameter. - buildver = 'hg38' - - logging.info('Getting the true positive and false positive VCF files.') - - logging.info('Converting the false positive BED file to ANNOVAR input format.') - false_positives_file = bed_to_annovar_input(fp_bed) - - # Convert the BED files to ANNOVAR input format. - logging.info('Converting the true positive BED file to ANNOVAR input format.') - true_positives_file = bed_to_annovar_input(tp_bed) - - # HPRC tracks: - # https://genome.ucsc.edu/cgi-bin/hgTracks?hgsid=2497626981_YO5LtOenyXcMHylL5pvsY90WzIkJ&c=chr6&hgTracksConfigPage=configure&hgtgroup_hprc_close=0#hprcGroup - # Current error with hprc90way Multiple Alignment download from UCSC (https://genome.ucsc.edu/cgi-bin/hgTables): - # Can't start query: - # select bin,chrom,chromStart,chromEnd,extFile,offset,score from hprc90way where chrom='chr1' - # mySQL error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'offset,score from hprc90way where chrom='chr1'' at line 1 (profile=, host=localhost, db=hg38) - - # Annotate the fragile sites using a BED file from HumCFS (GRCh38/hg38). - # https://webs.iiitd.edu.in/raghava/humcfs/download.html - # ANNOVAR instructions are here: https://annovar.openbioinformatics.org/en/latest/user-guide/region/ - fragile_sites_bed="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/FragileSites/FragileSites_merged.bed" - logging.info('Annotating the fragile sites using the BED file (GRCh38): %s', fragile_sites_bed) - - logging.info('Annotating fragile sites in true positives.') - tp_fragile_sites_df = run_bedtools_intersect(tp_bed, fragile_sites_bed) - - logging.info('Annotating fragile sites in false positives.') - fp_fragile_sites_df = run_bedtools_intersect(fp_bed, fragile_sites_bed) - - # --------------------------------------- - # Annotate conserved regions using a UCSC Table Browser BED file for - # phastCons100way - phastCons_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/phastCons100way_hg38.bed" - logging.info('Annotating conserved regions using the BED file (GRCh38): %s', phastCons_bed) - - logging.info('Annotating conserved regions in true positives.') - tp_cons_df = run_bedtools_intersect(tp_bed, phastCons_bed) - - logging.info('Annotating conserved regions in false positives.') - fp_cons_df = run_bedtools_intersect(fp_bed, phastCons_bed) - - # --------------------------------------- - # Annotate simple repeats using a UCSC Table Browser BED file for - # simpleRepeat - simpleRepeat_bed = "/mnt/isilon/wang_lab/perdomoj/data/UCSC_Tables/simple_repeats_hg38.bed" - logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) - - logging.info('Annotating simple repeats in true positives.') - tp_sr_df = run_bedtools_intersect(tp_bed, simpleRepeat_bed) - - logging.info('Annotating simple repeats in false positives.') - fp_sr_df = run_bedtools_intersect(fp_bed, simpleRepeat_bed) - - # --------------------------------------- - # Region-based annotation using ANNOVAR databases. - - # genomicSuperDups is the segmental duplication database. - # phastConsElements46way is the conservation database. - # cytoBand is used to annotate the centromere and telomere regions. - - # Download the segmental duplication database - download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildver) - - # Download the cytoband database - download_annovar_db(annovar_path, db_path, "cytoBand", buildver) - - logging.info('Annotating true positives using ANNOVAR.') - tp_anno_dir = os.path.join(output_directory_annovar, 'TP') - if not os.path.exists(tp_anno_dir): - os.makedirs(tp_anno_dir) - - annotate(true_positives_file, annovar_path, db_path, tp_anno_dir) - tp_annotation = os.path.join(tp_anno_dir, 'regions.' + buildver + '_multianno.txt') - - # Check if the annotation file exists. - if not os.path.exists(tp_annotation): - logging.error('Annotation file does not exist: %s', tp_annotation) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - - logging.info('Successfully annotated true positives to file: %s', tp_annotation) - - logging.info('Annotating false positives using ANNOVAR.') - fp_anno_dir = os.path.join(output_directory_annovar, 'FP') - if not os.path.exists(fp_anno_dir): - os.makedirs(fp_anno_dir) - annotate(false_positives_file, annovar_path, db_path, fp_anno_dir) - fp_annotation = os.path.join(fp_anno_dir, 'regions.' + buildver + '_multianno.txt') - - # Check if the annotation file exists. - if not os.path.exists(fp_annotation): - logging.error('Annotation file does not exist: %s', fp_annotation) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - - logging.info('Successfully annotated false positives to file: %s', fp_annotation) - - # Read the true positive input into a dataframe. - logging.info('Reading the true positive input file: %s', true_positives_file) - tp_df = pd.read_csv(true_positives_file, sep='\t', header=None, names=["chrom", "start", "end"], usecols=[0, 1, 2]) - - # Check if the true positive dataframe is empty. - if tp_df.empty: - logging.error('True positive dataframe is empty.') - sys.exit(1) - - logging.info('True positive dataframe:\n%s', tp_df.head()) - - # Read the false positive input into a dataframe. - logging.info('Reading the false positive input file: %s', false_positives_file) - fp_df = pd.read_csv(false_positives_file, sep='\t', header=None, names=["chrom", "start", "end"], usecols=[0, 1, 2]) - - # Check if the false positive dataframe is empty. - if fp_df.empty: - logging.error('False positive dataframe is empty.') - sys.exit(1) - - # Read the annovar output into a dataframe. - logging.info('Reading the true positive annotation file: %s', tp_annotation) - tp_anno_df = pd.read_csv(tp_annotation, sep='\t', header=0, comment='#') - logging.info('True positive annotation header:\n%s', tp_anno_df.columns) - logging.info('True positive annotation dataframe:\n%s', tp_anno_df.head()) - - logging.info('Reading the false positive annotation file: %s', fp_annotation) - fp_anno_df = pd.read_csv(fp_annotation, sep='\t', header=0, comment='#') - logging.info('False positive annotation header:\n%s', fp_anno_df.columns) - logging.info('False positive annotation dataframe:\n%s', fp_anno_df.head()) - - # Add the labels to the dataframes. - tp_df['label'] = 1 - tp_df['fragile_site'] = False - tp_df['conserved_region'] = False - tp_df['simple_repeat'] = False - - fp_df['label'] = 0 - fp_df['fragile_site'] = False - fp_df['conserved_region'] = False - fp_df['simple_repeat'] = False - - logging.info('Adding telomere, centromere, and segmental duplication annotations to true positives.') - tp_df = add_telomere_centromere_segdup(tp_df, tp_anno_df, cytoband_dict) - - logging.info('Adding telomere, centromere, and segmental duplication annotations to false positives.') - fp_df = add_telomere_centromere_segdup(fp_df, fp_anno_df, cytoband_dict) - - # Add the fragile site and conserved region annotations - logging.info('Adding fragile site annotations to true positives.') - tp_df['fragile_site'] = tp_df.merge(tp_fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - - logging.info('Updated df:\n%s', tp_df.head()) - - logging.info('Adding fragile site annotations to false positives.') - fp_df['fragile_site'] = fp_df.merge(fp_fragile_sites_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - logging.info('Updated df:\n%s', fp_df.head()) - - # Add the conserved region annotations. - logging.info('Adding conserved region annotations to true positives.') - tp_df['conserved_region'] = tp_df.merge(tp_cons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - - logging.info('Adding conserved region annotations to false positives.') - fp_df['conserved_region'] = fp_df.merge(fp_cons_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - - # Add the simple repeat annotations. - logging.info('Adding simple repeat annotations to true positives.') - tp_df['simple_repeat'] = tp_df.merge(tp_sr_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - - logging.info('Adding simple repeat annotations to false positives.') - fp_df['simple_repeat'] = fp_df.merge(fp_sr_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() - - # Drop NaN values from the dataframes. - logging.info('Dropping NaN values from the dataframes.') - tp_df.dropna(inplace=True) - fp_df.dropna(inplace=True) - - logging.info('Number of NaN values in the true positive dataframe: %d', tp_df.isna().sum().sum()) - logging.info('Number of NaN values in the false positive dataframe: %d', fp_df.isna().sum().sum()) - - # Check if the annotations were added correctly. - logging.info('True positive dataframe after adding annotations:\n%s', tp_df.head()) - logging.info('TP fragile sites: %d', tp_df['fragile_site'].sum()) - - # Print a tab-delimited table with the number of rows in each category. - logging.info('True positives:') - logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats') - logging.info('%d\t%d\t%d\t%d\t%d\t%d\t%d', tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum(), tp_df['simple_repeat'].sum()) - - logging.info('False positives:') - logging.info('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats') - logging.info('%d\t%d\t%d\t%d\t%d\t%d\t%d', fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum(), fp_df['simple_repeat'].sum()) - - # Save the same table to a file. - annot_summary = os.path.join(output_directory, 'annotation_summary.txt') - logging.info('Saving the true positive summary to %s', annot_summary) - with open(annot_summary, 'w') as f: - f.write('True Positives\n') - f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats\n') - f.write('%d\t%d\t%d\t%d\t%d\t%d\t%d\n' % (tp_df.shape[0], tp_df['fragile_site'].sum(), tp_df['telomere'].sum(), tp_df['centromere'].sum(), tp_df['segdup'].sum(), tp_df['conserved_region'].sum(), tp_df['simple_repeat'].sum())) - f.write('\n') - f.write('False Positives\n') - f.write('Total\tFragile Sites\tTelomeres\tCentromeres\tSegmental Duplications\tConserved Regions\tSimple Repeats\n') - f.write('%d\t%d\t%d\t%d\t%d\t%d\t%d\n' % (fp_df.shape[0], fp_df['fragile_site'].sum(), fp_df['telomere'].sum(), fp_df['centromere'].sum(), fp_df['segdup'].sum(), fp_df['conserved_region'].sum(), fp_df['simple_repeat'].sum())) - - logging.info('Saved the summary to %s', annot_summary) - - # Balance the dataset by undersampling the true positives. - logging.info('Balancing the TP dataset by undersampling the true positives (count=%d) to match the false positives (count=%d).', tp_df.shape[0], fp_df.shape[0]) - tp_df = tp_df.sample(n=fp_df.shape[0], random_state=42) - logging.info('Number of NaN values in the true positive dataframe after undersampling: %d', tp_df.isna().sum().sum()) - - # Combine the true positive and false positive data. - logging.info('Combining the true positive and false positive data.') - data = pd.concat([tp_df, fp_df]) - logging.info('Combined dataframe:\n%s', data.head()) - - logging.info('Number of NaN values in the combined dataframe: %d', data.isna().sum().sum()) - - # Load the chromosome to integer mapping. - chrom_map_path = "/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - # logging.info('Loading the chromosome map from %s', chrom_map_path) - # chrom_dict = joblib.load(chrom_map_path) - # logging.info('Loaded the chromosome map from %s', chrom_map_path) - # logging.info('Chromosome map:\n%s', chrom_dict) - - # Create a dictionary to map the chromosome names to integer values. - logging.info('Creating a dictionary to map the chromosome names to integer values.') - chrom_dict = {chrom: i for i, chrom in enumerate(data['chrom'].unique())} - logging.info('Chromosome map:\n%s', chrom_dict) - - # Save this map to a file using joblib. - chrom_map_path = os.path.join(output_directory, 'chrom_map.pkl') - logging.info('Saving the chromosome map to %s', chrom_map_path) - joblib.dump(chrom_dict, chrom_map_path) - logging.info('Saved the chromosome map to %s', chrom_map_path) - - # Map the chromosome names to integer values. - data['chrom'] = data['chrom'].map(chrom_dict) - logging.info('Mapped chromosome names to integer values:\n%s', data.head()) - - logging.info('Number of NaN values in the combined dataframe after mapping chromosomes: %d', data.isna().sum().sum()) - - # Get the features and labels. - # features = data[["chrom", "start", "end", "label", "fragile_site", - # "conserved_region", "simple_repeat", "telomere", "centromere", "segdup"]] - # Get all columns except the label. - features = data.drop(columns=["label"]) - logging.info('Features columns:\n%s', features.columns) - - # Print number of NaN values in the features dataframe. - logging.info('Number of NaN values in the features dataframe: %d', features.isna().sum().sum()) - - labels = data["label"] - - # Train different models. - models = { - "Logistic Regression": LogisticRegression(), - "Random Forest": RandomForestClassifier(n_estimators=100, random_state=42), - "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), - "SVC": SVC(kernel='rbf', class_weight='balanced', probability=True) - } - - # models = { - # "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), - # } - - for model_name, model in models.items(): - logging.info('Training the %s model.', model_name) - # logging.info('Training the model.') - # # model = LogisticRegression() - # model = RandomForestClassifier(n_estimators=100, random_state=42) - model.fit(features, labels) - - # Get predicted probabilities. - logging.info('Getting predicted probabilities.') - y_pred = model.predict(features) - y_prob = model.predict_proba(features)[:, 1] - - # Get the ROC curve. - fpr, tpr, thresholds = roc_curve(labels, y_prob) - roc_auc = auc(fpr, tpr) - - # Plot the ROC curve. - plt.figure() - plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - plt.title('Receiver Operating Characteristic') - plt.legend(loc='lower right') - # Save the plot to the output directory. - roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) - - # Get the precision-recall curve. - precision, recall, thresholds = precision_recall_curve(labels, y_prob) - pr_auc = auc(recall, precision) - - # Plot the precision-recall curve. - plt.figure() - plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) - plt.xlabel('Recall') - plt.ylabel('Precision') - plt.title('Precision-Recall Curve') - plt.legend(loc='lower left') - # Save the plot to the output directory. - pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') - plt.savefig(pr_plot_path) - plt.close() - logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) - - # Get the confusion matrix. - cm = confusion_matrix(labels, y_pred) - logging.info('Confusion matrix:\n%s', cm) - - # Plot the confusion matrix using seaborn. - plt.figure() - sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') - plt.xlabel('Predicted') - plt.ylabel('True') - plt.title('Confusion Matrix') - # Save the plot to the output directory. - cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') - plt.savefig(cm_plot_path) - plt.close() - logging.info('Saved the confusion matrix to %s', cm_plot_path) - - # Print the classification report. - logging.info('Classification report:\n%s', classification_report(labels, y_pred)) - - # Save the report to a file. - report_path = os.path.join(output_directory, model_name + '_classification_report.txt') - with open(report_path, 'w') as f: - f.write(classification_report(labels, y_pred)) - - logging.info('Saved the classification report to %s', report_path) - - # Save the model. - model_path = os.path.join(output_directory, model_name + '_genome_model.pkl') - logging.info('Saving the model to %s', model_path) - joblib.dump(model, model_path) - logging.info('Saved the model to %s', model_path) - - # Run cross-validation by splitting the data into 5 folds and training - # the model on each fold. - logging.info('Running cross-validation.') - from sklearn.model_selection import cross_val_score - scores = cross_val_score(model, features, labels, cv=5) - logging.info('Cross-validation scores: %s', scores) - logging.info('Mean cross-validation score: %f', scores.mean()) - - # Save the model. - # model_path = os.path.join(output_directory, "anno_model.pkl") - # logging.info('Saving the model to %s', model_path) - # joblib.dump(model, model_path) - # logging.info('Saved the model to %s', model_path) - - -if __name__ == '__main__': - import argparse - parser = argparse.ArgumentParser() - parser.add_argument("--tpbed", required=True, help="Directory containing benchmark VCF files of real SVs (true positives and false negatives)") - parser.add_argument("--fpbed", required=True, help="Directory containing false positive VCF files from running the caller on normal samples") - parser.add_argument("--outdiranno", required=True, help="Output directory for saving the ANNOVAR annotations") - parser.add_argument("--outdir", required=True, help="Output directory for saving the model") - parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") - parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") - - # Add flag for whether to train the genomic context model. If not specified, - # the default is False (train the model using SV caller features). - parser.add_argument("--train_genomic_context", action="store_true", help="Train the genomic context model", default=False) - args = parser.parse_args() - - # Run the program. - logging.info('Training the model...') - run(args.tpbed, args.fpbed, args.outdir, args.outdiranno, args.annovar, args.annovar_db) - logging.info('done.') From 27e6def8d287951ab564ac1f7f7e2c1007e197a2 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 4 May 2025 12:34:04 -0400 Subject: [PATCH 32/93] normalize coverage based features --- contextscore/extract_features.py | 34 ++++++------ contextscore/predict.py | 15 +++++- contextscore/train_full_model.py | 93 ++++++++++++++++++++++---------- 3 files changed, 94 insertions(+), 48 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 8e3309c..eddd204 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -89,6 +89,11 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= logging.info("[TEST1] columns in the BED file: %s", bed_df.columns) + # Normalize the read depth and cluster size columns (sample-dependent). + bed_df['read_depth'] = (bed_df['read_depth'] - bed_df['read_depth'].mean()) / bed_df['read_depth'].std() + bed_df['cluster_size'] = (bed_df['cluster_size'] - bed_df['cluster_size'].mean()) / bed_df['cluster_size'].std() + logging.info('[TEST] Normalized the read depth and cluster size columns. Current columns: %s', bed_df.columns) + # Drop the genotype column and cn_state columns (due to redundancy). bed_df.drop(columns=['genotype', 'cn_state'], inplace=True) logging.info('[TEST] Dropped the genotype and cn_state columns. Current columns: %s', bed_df.columns) @@ -376,24 +381,19 @@ def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): is_centromere = True except KeyError: + pass # Handle the case where chrom_dict[chrom] is not defined. - logging.warning('chrom_dict[%s] is not defined.', chrom) - logging.warning('Cytoband: %s', cytoband) - logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict.get(chrom, 'Not found')) + # logging.warning('chrom_dict[%s] is not defined.', chrom) + # logging.warning('Cytoband: %s', cytoband) + # logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict.get(chrom, 'Not found')) except TypeError: + pass # Handle the case where telomerep is not defined. - logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) - logging.warning('Cytoband: %s', cytoband) - logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) - # is_telomere = False - # if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: - # is_telomere = True - # if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: - # is_centromere = True - # if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: - # is_centromere = True - + # logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) + # logging.warning('Cytoband: %s', cytoband) + # logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) + return is_telomere, is_centromere @@ -511,7 +511,7 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir, buildve data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') # Print the first 20 segdup values. - logging.info('First 20 values of the segdup column: %s', data['genomicSuperDups'].head(20)) + # logging.info('First 20 values of the segdup column: %s', data['genomicSuperDups'].head(20)) # Extract segmental duplication scores. # def extract_max_score(score_series): @@ -543,7 +543,7 @@ def extract_scores(score_str): data['segdup'] = data['genomicSuperDups'].apply(extract_scores) # Print the first 20 values of the test_scores column. - logging.info('First 20 values of the updated segdup column: %s', data['segdup'].head(20)) + # logging.info('First 20 values of the updated segdup column: %s', data['segdup'].head(20)) # Extract the cytoband annotations. def get_cyto_info(row): @@ -564,6 +564,6 @@ def get_cyto_info(row): logging.info('Dropped the unnecessary columns. Current columns: %s', data.columns) logging.info('Number of records after adding annotations: %d', data.shape[0]) - logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) + # logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) return data diff --git a/contextscore/predict.py b/contextscore/predict.py index 8c30f17..93ba639 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -160,10 +160,15 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): id_col = feature_df.pop('id') logging.info('Separated ID column from the features.') + logging.info('Feature DataFrame:\n%s', feature_df.head()) + # Run the model on the features logging.info('Running the model on the features...') y_pred = clf.predict_proba(feature_df) + # Print the first 10 predictions + logging.info('First 10 predictions:\n%s', y_pred[:10]) + # Plot a histogram of the probabilities # output_dir = os.path.dirname(output_vcf) # plt.hist(y_pred[:, 1], bins=20) @@ -190,9 +195,15 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): # Filter the VCF, using the id column to get the final indices # prob_threshold = 0.1 - prob_threshold = 0.05 + # prob_threshold = 0.05 + # filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] + + # Optimal threshold determined by ROC curve using Youden's J statistic + # For Random Forest, the optimal threshold is 0.450000 + prob_threshold = 0.690000 filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] - logging.info('Number of variants under the probability threshold: %d', len(filtered_indices)) + + logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) # Get the IDs of the filtered variants filtered_ids = id_col.iloc[filtered_indices].values diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index d8355d8..8f0456d 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -223,16 +223,19 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # logging.info('Splitting the data into training and testing sets (0.8/0.2).') # X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) - # Scale the data since some features such as read depth and LRR vary across + # Normalize the data since some features such as read depth and LRR vary across # different samples and can have different ranges. - from sklearn.preprocessing import StandardScaler - scaler = StandardScaler() - X_train = scaler.fit_transform(X_train) - X_test = scaler.transform(X_test) - logging.info('Data split and scaled. Training set size: %d, Testing set size: %d', - X_train.shape[0], X_test.shape[0]) + # from sklearn.preprocessing import StandardScaler + # scaler = StandardScaler() + # X_train = scaler.fit_transform(X_train) + # X_test = scaler.transform(X_test) + # logging.info('Data split and scaled. Training set size: %d, Testing set size: %d', + # X_train.shape[0], X_test.shape[0]) + # Print the number of features. logging.info('Number of features: %d', X_train.shape[1]) + logging.info('Training set size: %d', X_train.shape[0]) + logging.info('Testing set size: %d', X_test.shape[0]) # Print the feature names. feature_names = features.columns.tolist() @@ -297,8 +300,8 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.title('Receiver Operating Characteristic (Training Set)') plt.legend(loc='lower right') # Save the plot to the output directory. - model_name = model_name.replace(" ", "_") - roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve.png') + model_name_fp = model_name.replace(" ", "_") + roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') plt.savefig(roc_plot_path) plt.close() logging.info('Saved the ROC curve to %s', roc_plot_path) @@ -326,23 +329,55 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('recall size: %d', len(recall)) logging.info('thresholds size: %d', len(thresholds_pr)) - # Find the threshold that gives the highest precision (ideally with - # recall > 0) or where precision == 1.0 (0 false positives). - precision_1_indices = np.where(precision[:-1] == 1.0)[0] - if len(precision_1_indices) > 0: - # If there are indices where precision == 1.0, use the one with the - # highest recall. - optimal_index = precision_1_indices[np.argmax(recall[precision_1_indices])] - optimal_threshold_pr = thresholds_pr[optimal_index] - logging.info('Optimal threshold (highest precision = 1.0): %f with recall %f', - optimal_threshold_pr, recall[optimal_index]) - else: - # If no indices where precision == 1.0, use the one with the highest - # precision. - optimal_index = np.argmax(precision[:-1]) - optimal_threshold_pr = thresholds_pr[optimal_index] - logging.info('Optimal threshold (highest precision = %f): %f with recall %f', - optimal_threshold_pr, precision[optimal_index], recall[optimal_index]) + # Plot Recall vs Thresholds + plt.figure() + plt.plot(thresholds_pr, recall[1:], color='blue', lw=2, label='Recall') + plt.xlabel('Threshold') + plt.ylabel('Recall') + plt.title('%s Recall vs Thresholds' % model_name) + # plt.legend(loc='lower right') + + # Remove the legend + plt.legend().remove() + + # Save the plot to the output directory. + recall_plot_path = os.path.join(output_directory, model_name_fp + '_recall_vs_thresholds.png') + plt.savefig(recall_plot_path) + plt.close() + logging.info('Saved the Recall vs Thresholds plot to %s', recall_plot_path) + + # Plot Precision vs Thresholds + plt.figure() + plt.plot(thresholds_pr, precision[1:], color='blue', lw=2, label='Precision') + plt.xlabel('Threshold') + plt.ylabel('Precision') + plt.title('%s Precision vs Thresholds' % model_name) + # plt.legend(loc='lower right') + # Remove the legend + plt.legend().remove() + # Save the plot to the output directory. + precision_plot_path = os.path.join(output_directory, model_name_fp + '_precision_vs_thresholds.png') + plt.savefig(precision_plot_path) + plt.close() + logging.info('Saved the Precision vs Thresholds plot to %s', precision_plot_path) + + # # Find the threshold that gives the highest precision (ideally with + # # recall > 0) or where precision == 1.0 (0 false positives). + # precision_1_indices = np.where(precision[:-1] == 1.0)[0] + # if len(precision_1_indices) > 0: + # # If there are indices where precision == 1.0, use the one with the + # # highest recall. + # optimal_index = precision_1_indices[np.argmax(recall[precision_1_indices])] + # optimal_threshold_pr = thresholds_pr[optimal_index] + # logging.info('Optimal threshold (highest precision = 1.0): %f with recall %f', + # optimal_threshold_pr, recall[optimal_index]) + # else: + # # If no indices where precision == 1.0, use the one with the highest + # # precision. + # optimal_index = np.argmax(precision[:-1]) + # optimal_threshold_pr = thresholds_pr[optimal_index] + # logging.info('Optimal threshold (highest precision = %f): %f with recall %f', + # optimal_threshold_pr, precision[optimal_index], recall[optimal_index]) # Get the feature names. feature_names = features.columns.tolist() @@ -369,7 +404,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.xticks(range(X_train.shape[1]), indices) plt.xlim([-1, X_train.shape[1]]) # Save the plot to the output directory. - importance_plot_path = os.path.join(output_directory, model_name + '_feature_importances.png') + importance_plot_path = os.path.join(output_directory, model_name_fp + '_feature_importances.png') plt.savefig(importance_plot_path) plt.close() logging.info('Saved the feature importances plot to %s', importance_plot_path) @@ -419,7 +454,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.xticks(range(X_train.shape[1]), indices) plt.xlim([-1, X_train.shape[1]]) # Save the plot to the output directory. - coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') + coeff_plot_path = os.path.join(output_directory, model_name_fp + '_feature_coefficients.png') plt.savefig(coeff_plot_path) plt.close() logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) @@ -468,7 +503,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # logging.info('Saved the classification report to %s', report_path) # Save the model. - model_path = os.path.join(output_directory, model_name + '_caller_model.pkl') + model_path = os.path.join(output_directory, model_name_fp + '_caller_model.pkl') logging.info('Saving the model to %s', model_path) joblib.dump(model, model_path) logging.info('Saved the model to %s', model_path) From ca4c9e944124fdc0fe3cb9c4aee19aedc2169036 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 5 May 2025 14:44:51 -0400 Subject: [PATCH 33/93] fix scaling --- contextscore/extract_features.py | 18 +++++++++++---- contextscore/predict.py | 11 ++++++++- contextscore/train_full_model.py | 38 ++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 5 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index eddd204..24af207 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -89,10 +89,20 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= logging.info("[TEST1] columns in the BED file: %s", bed_df.columns) - # Normalize the read depth and cluster size columns (sample-dependent). - bed_df['read_depth'] = (bed_df['read_depth'] - bed_df['read_depth'].mean()) / bed_df['read_depth'].std() - bed_df['cluster_size'] = (bed_df['cluster_size'] - bed_df['cluster_size'].mean()) / bed_df['cluster_size'].std() - logging.info('[TEST] Normalized the read depth and cluster size columns. Current columns: %s', bed_df.columns) + # Print the range of cluster size. + # logging.info('Range of cluster size (pre-normalization): %f - %f', bed_df['cluster_size'].min(), bed_df['cluster_size'].max()) + # # Print the range of read depth. + # logging.info('Range of read depth (pre-normalization): %f - %f', bed_df['read_depth'].min(), bed_df['read_depth'].max()) + + # # Normalize the read depth and cluster size columns (sample-dependent). + # bed_df['read_depth'] = (bed_df['read_depth'] - bed_df['read_depth'].mean()) / bed_df['read_depth'].std() + # bed_df['cluster_size'] = (bed_df['cluster_size'] - bed_df['cluster_size'].mean()) / bed_df['cluster_size'].std() + # logging.info('[TEST] Normalized the read depth and cluster size columns. Current columns: %s', bed_df.columns) + + # # Print the range of cluster size. + # logging.info('Range of cluster size: %f - %f', bed_df['cluster_size'].min(), bed_df['cluster_size'].max()) + # # Print the range of read depth. + # logging.info('Range of read depth: %f - %f', bed_df['read_depth'].min(), bed_df['read_depth'].max()) # Drop the genotype column and cn_state columns (due to redundancy). bed_df.drop(columns=['genotype', 'cn_state'], inplace=True) diff --git a/contextscore/predict.py b/contextscore/predict.py index 93ba639..662e755 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -160,6 +160,13 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): id_col = feature_df.pop('id') logging.info('Separated ID column from the features.') + # Normalize the cluster_size and read_depth columns using RobustScaler + logging.info('Normalizing the cluster_size and read_depth columns...') + from sklearn.preprocessing import RobustScaler, MinMaxScaler + scaler = RobustScaler() + robust_scaled = scaler.fit_transform(feature_df[['cluster_size', 'read_depth']]) + feature_df[['cluster_size', 'read_depth']] = robust_scaled + logging.info('Feature DataFrame:\n%s', feature_df.head()) # Run the model on the features @@ -200,7 +207,9 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): # Optimal threshold determined by ROC curve using Youden's J statistic # For Random Forest, the optimal threshold is 0.450000 - prob_threshold = 0.690000 + # prob_threshold = 0.1 # Precision too low + # prob_threshold = 0.2 + prob_threshold = 0.3 filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 8f0456d..977131a 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -121,6 +121,38 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t tp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') fp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') + # Normalize cluster_size and read_depth using Robust scaling. + logging.info('Normalizing cluster_size and read_depth using Robust scaling.') + from sklearn.preprocessing import RobustScaler, MinMaxScaler + # Combine the data. + combined_data = pd.concat([tp_data, fp_data]) + # Create a RobustScaler object. + scaler = RobustScaler() + # Fit the scaler to the data. + robust_scaled = scaler.fit_transform(combined_data[['cluster_size', 'read_depth']]) + + # Update the data with the scaled values. + combined_data[['cluster_size', 'read_depth']] = robust_scaled + # Split the data back into true positives and false positives. + tp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[:tp_data.shape[0]] + fp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[tp_data.shape[0]:] + + logging.info('Normalization completed.') + + # Plot the distributions of cluster_size in the TP vs. FP data. + logging.info('Plotting the distributions of cluster_size in the TP vs. FP data.') + plt.figure(figsize=(10, 6)) + sns.histplot(tp_data['cluster_size'], color='blue', label='True Positives', kde=True, stat="density", bins=30) + sns.histplot(fp_data['cluster_size'], color='red', label='False Positives', kde=True, stat="density", bins=30) + plt.xlabel('Cluster Size') + plt.ylabel('Density') + plt.title('Distribution of Cluster Size (True Positives vs False Positives)') + plt.legend() + plt.tight_layout() + plt.savefig(os.path.join(output_directory, 'cluster_size_distribution.png')) + plt.close() + logging.info('Cluster size distribution plot saved to %s', os.path.join(output_directory, 'cluster_size_distribution.png')) + # Analyze feature correlations in the collected data. logging.info('Analyzing feature correlations in the collected data.') corr_matrix = tp_data.corr() @@ -219,6 +251,12 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Feature names: %s', feature_names) for model_name, model in models.items(): + + # Skip SVC + if model_name == "SVC": + logging.info('Skipping SVC model.') + continue + # # Split the data into training and testing sets. # logging.info('Splitting the data into training and testing sets (0.8/0.2).') # X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) From cd4f0990a8df17c27afe65e8e297a2bb8d836fbc Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 10 Jul 2025 16:43:52 -0400 Subject: [PATCH 34/93] improve large sv scores --- contextscore/extract_features.py | 166 +++++++++++++- contextscore/predict.py | 83 +++++-- contextscore/train_full_model.py | 371 +++++++++++++++++++++++++------ 3 files changed, 520 insertions(+), 100 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 24af207..ab4503c 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -52,7 +52,55 @@ def read_cytoband_file(cytoband_file): return chrom_dict -# tp_data, tp_bed, annovar_path, db_path, tp_anno_outdir +import pandas as pd +import numpy as np + +def normalize_column(df, column): + """Normalize a column using z-score normalization.""" + mean = df[column].mean() + std = df[column].std() + df[column] = (df[column] - mean) / std + return df + +def add_interaction_terms(df): + """Add interaction terms to the dataframe.""" + # Normalize the sv_length column by dividing by 1000 to reduce the range. + df['log_svlen'] = np.log1p(np.abs(df['sv_length'])) + # bed_df['svlen_rd'] = bed_df['log_svlen'] * bed_df['read_depth'] + # bed_df['svlen_cs'] = bed_df['log_svlen'] * bed_df['cluster_size'] + df['rd_cs'] = df['read_depth'] * df['cluster_size'] + df['svlen_hmm'] = df['log_svlen'] * df['hmm_llh'] + df['cs_hmm'] = df['cluster_size'] * df['hmm_llh'] + df['rd_hmm'] = df['read_depth'] * df['hmm_llh'] + # bed_df['rd_per_kb'] = bed_df['read_depth'] / (np.abs(bed_df['sv_length']) / 1000 + 1) + # bed_df['cs_per_kb'] = bed_df['cluster_size'] / + # (np.abs(bed_df['sv_length']) / 1000 + 1) ## + df['hmm_per_kb'] = df['hmm_llh'] / (np.abs(df['sv_length']) / 1000 + 1) + + # df['svlen_rd'] = df['sv_length'] * df['read_depth'] + # df['svlen_cs'] = df['sv_length'] * df['cluster_size'] + # df['rd_cs'] = df['read_depth'] * df['cluster_size'] + return df + +def add_overlap_count(df, chrom_col='chrom', start_col='start', end_col='end'): + """Add 'overlap_count' = number of other SVs on same chr that overlap each SV.""" + out = pd.Series(0, index=df.index, dtype=np.int32) + + for chrom, group in df.groupby(chrom_col, sort=False): + starts = group[start_col].to_numpy() + ends = group[end_col].to_numpy() + + # overlap if start_i < end_j AND start_j < end_i + overlap_matrix = (starts[:, None] < ends[None, :]) & \ + (starts[None, :] < ends[:, None]) + + # subtract 1 to drop the self-overlap on the diagonal + counts = overlap_matrix.sum(axis=1) - 1 + out.loc[group.index] = counts.astype(np.int32) + + df['overlap_count'] = out + return df + def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion='hg38'): """Extract the features from the BED file, columns are in the first row: @@ -133,9 +181,51 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= 'UNKNOWN': 9 } + # The alignment types are comma-separated. + # Split the alignment types into a list. + bed_df['aln_type'] = bed_df['aln_type'].str.split(',') + + # Throw an error and exit if any contain more than two + # alignment types. + if bed_df['aln_type'].apply(len).max() > 2: + logging.error('Alignment types contain more than two types.') + logging.error('Please check the input BED file.') + sys.exit(1) + else: + logging.info('Success: Alignment types contain at most two types.') + + # Create a second column with whether one of the alignment types is HMM. + bed_df['aln_type_hmm'] = bed_df['aln_type'].apply(lambda x: 1 if 'HMM' in x else 0) + + # Replace the alignment type to have only one type by removing the HMM type. + bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: [i for i in x if i != 'HMM']) + + # Now all the alignment types should be just one type. Print an error if + # not and exit. + if bed_df['aln_type'].apply(len).max() > 1: + logging.error('Alignment types contain more than one type.') + logging.error('Please check the input BED file.') + sys.exit(1) + else: + logging.info('Success: Alignment types contain only one type.') + + # Flatten the list of alignment types into a single string. + bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: x[0]) + # Map the alignment types to numbers. bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + # Create a one-hot encoding for the alignment types by creating a new column for each type. + # for aln_type in aln_type_map.keys(): + # bed_df[aln_type] = bed_df['aln_type'].apply(lambda x: 1 if aln_type in x else 0) + + # # Drop the original aln_type column. + # bed_df.drop(columns=['aln_type'], inplace=True) + # logging.info('[TEST] Dropped the original aln_type column. Current columns: %s', bed_df.columns) + + # Map the alignment types to numbers. + # bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + # Print the number of NaN values logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) @@ -183,9 +273,61 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= bed_df = add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno, buildversion, training_format) logging.info('Added ANNOVAR annotations to the features. Updated columns: %s', bed_df.columns) - # Drop the segdup column (too highly correlated with SVs). - # bed_df.drop(columns=['segdup'], inplace=True) - # logging.info('[TEST] Dropped the segdup column. Current columns: %s', bed_df.columns) + # Create a new column overlap_count that counts the number of SVs overlapping + # with each SV in the input BED file. + # This is done by counting the number of rows in the bed_df that have the same + # chrom, start, and end as the current row. + + # --------------------------------------------------------------- + # logging.info('Adding overlap_count column to the features.') + # bed_df = add_overlap_count(bed_df, chrom_col='chrom', start_col='start', end_col='end') + # logging.info('Added overlap_count column to the features. Updated columns: %s', bed_df.columns) + + # Print the bottom 10 unique values of the overlap_count column. + # Sort the unique values of the overlap_count column. + # sorted_unique_values = np.sort(bed_df['overlap_count'].unique()) + # logging.info('Bottom 10 unique values of the overlap_count column: %s', sorted_unique_values[-10:]) + + # # Print the top 10 unique values of the overlap_count column. + # logging.info('Top 10 unique values of the overlap_count column: %s', + # sorted_unique_values[:10]) + # --------------------------------------------------------------- + + # Normalize the cluster_size and read_depth columns using RobustScaler + # logging.info('Normalizing the cluster_size and read_depth columns...') + # from sklearn.preprocessing import RobustScaler, MinMaxScaler + # scaler = RobustScaler() + # robust_scaled = scaler.fit_transform(bed_df[['cluster_size', 'read_depth']]) + # bed_df[['cluster_size', 'read_depth']] = robust_scaled + # # robust_scaled = scaler.fit_transform(feature_df[['cluster_size', 'read_depth']]) + # # feature_df[['cluster_size', 'read_depth']] = robust_scaled + + # # Create an interaction term between sv_length and read_depth, sv_length + # # and cluster_size, read_depth and cluster_size, and sv_length and hmm_llh. + # # Normalize the sv_length column by dividing by 1000 to reduce the range. + # bed_df['log_svlen'] = np.log1p(np.abs(bed_df['sv_length'])) + # # bed_df['svlen_rd'] = bed_df['log_svlen'] * bed_df['read_depth'] + # # bed_df['svlen_cs'] = bed_df['log_svlen'] * bed_df['cluster_size'] + # bed_df['rd_cs'] = bed_df['read_depth'] * bed_df['cluster_size'] + # bed_df['svlen_hmm'] = bed_df['log_svlen'] * bed_df['hmm_llh'] + # bed_df['cs_hmm'] = bed_df['cluster_size'] * bed_df['hmm_llh'] + # bed_df['rd_hmm'] = bed_df['read_depth'] * bed_df['hmm_llh'] + # # bed_df['rd_per_kb'] = bed_df['read_depth'] / (np.abs(bed_df['sv_length']) / 1000 + 1) + # # bed_df['cs_per_kb'] = bed_df['cluster_size'] / + # # (np.abs(bed_df['sv_length']) / 1000 + 1) ## + # bed_df['hmm_per_kb'] = bed_df['hmm_llh'] / (np.abs(bed_df['sv_length']) / 1000 + 1) + # logging.info('Added interaction terms to the features. Updated columns: %s', bed_df.columns) + + # # Remove the raw SV length column and keep the log_svlen column. + # # Training data has size imbalance, so use the transformed sv_length + # bed_df.drop(columns=['sv_length'], inplace=True) + + # # Drop the alignment type column (imbalanced). + # bed_df.drop(columns=['aln_type'], inplace=True) + + # Drop cluster size and cs_per_kb + # bed_df.drop(columns=['cluster_size'], inplace=True) # Dropped after normalization in train_full_model.py + # bed_df.drop(columns=['cs_per_kb'], inplace=True) # Finally map chromosome names to numbers. # Load a dictionary mapping chromosome names to numbers. @@ -196,10 +338,20 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) # Map the chromosome names to numbers. - bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) + # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) + + # # Actually drop the chrom, start, end columns. + # bed_df.drop(columns=['chrom', 'start', 'end'], inplace=True) + + # Fix the chromosome names to all start with 'chr' if they don't already. + bed_df['chrom'] = bed_df['chrom'].apply(lambda x: 'chr' + x if not x.startswith('chr') else x) + + # Drop the start and end columns, but keep the chrom column for later use in + # cross-validation. + bed_df.drop(columns=['start', 'end'], inplace=True) - # Actually drop the chrom, start, end columns. - bed_df.drop(columns=['chrom', 'start', 'end'], inplace=True) + # Drop telomere and centromere columns (they don't affect predictions). + bed_df.drop(columns=['telomere', 'centromere'], inplace=True) logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', bed_df.columns) diff --git a/contextscore/predict.py b/contextscore/predict.py index 662e755..568e410 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -20,7 +20,7 @@ import matplotlib.pyplot as plt -from extract_features import extract_features +from extract_features import extract_features, add_interaction_terms def create_bed(input_vcf, output_bed): """Create a BED file from the input VCF file. Extract the following fields: @@ -120,7 +120,7 @@ def create_bed(input_vcf, output_bed): bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf, buildver='hg38'): +def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution'): """Score the structural variants using the binary classification model. Args: @@ -151,6 +151,13 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir, buildver) logging.info('Extracted features from the BED file:\n%s', feature_df.head()) + # Add interaction terms to the features + feature_df = add_interaction_terms(feature_df) + logging.info('Added interaction terms to the features.') + + # Drop the SV length column + feature_df.drop(columns=['sv_length'], inplace=True) + # Check if the feature extraction was successful if feature_df.empty: logging.error('Feature extraction failed. No features extracted.') @@ -160,12 +167,16 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): id_col = feature_df.pop('id') logging.info('Separated ID column from the features.') - # Normalize the cluster_size and read_depth columns using RobustScaler - logging.info('Normalizing the cluster_size and read_depth columns...') - from sklearn.preprocessing import RobustScaler, MinMaxScaler - scaler = RobustScaler() - robust_scaled = scaler.fit_transform(feature_df[['cluster_size', 'read_depth']]) - feature_df[['cluster_size', 'read_depth']] = robust_scaled + # Separate the chrom column from the features + chrom_col = feature_df.pop('chrom') + logging.info('Separated chrom column from the features.') + + # # Normalize the cluster_size and read_depth columns using RobustScaler + # logging.info('Normalizing the cluster_size and read_depth columns...') + # from sklearn.preprocessing import RobustScaler, MinMaxScaler + # scaler = RobustScaler() + # robust_scaled = scaler.fit_transform(feature_df[['cluster_size', 'read_depth']]) + # feature_df[['cluster_size', 'read_depth']] = robust_scaled logging.info('Feature DataFrame:\n%s', feature_df.head()) @@ -179,7 +190,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): # Plot a histogram of the probabilities # output_dir = os.path.dirname(output_vcf) # plt.hist(y_pred[:, 1], bins=20) - # plt.xlabel('Probability') + # plt.xlabel('Confidence Score') # plt.ylabel('Count') # plt.title('Probability Distribution') # if not os.path.exists(output_dir): @@ -193,27 +204,40 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): output_dir = os.path.dirname(output_vcf) fig, ax = plt.subplots() sns.histplot(y_pred[:, 1], bins=20, ax=ax) - ax.set_xlabel('Probability') + ax.set_xlabel('Confidence Score') ax.set_ylabel('Count') - ax.set_title('Probability Distribution') + # ax.set_title('Probability Distribution') + ax.set_title(title) + # Save the plot to the output directory plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities_seaborn.png')) - # Filter the VCF, using the id column to get the final indices - # prob_threshold = 0.1 - # prob_threshold = 0.05 - # filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] + # Determine the threshold for filtering + # 22 May 2025 + # prob_threshold = 0.001 # Does not affect results much + # prob_threshold = 0.2 # Lowered recall (too high) + # prob_threshold = 0.1 # Lowered recall (too high) + prob_threshold = 0.01 # Slightly lowered recall (too high) + # prob_threshold = 0.005 # Even slightlier lowered recall (too high) + # prob_threshold = 0.001 - # Optimal threshold determined by ROC curve using Youden's J statistic - # For Random Forest, the optimal threshold is 0.450000 - # prob_threshold = 0.1 # Precision too low - # prob_threshold = 0.2 - prob_threshold = 0.3 filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) + # Print all data for the filtered variants if >10kb absolute svlen + # print_filtered = True + # if print_filtered: + # logging.info('Filtered variants:\n') + # min_svlen = 10000 + # filtered_variants = feature_df.iloc[filtered_indices] + # # Print all the features for the filtered variants + # for index, row in filtered_variants.iterrows(): + # # Print if abs(svlen) > 8000 and HMM is not equal to zero + # if abs(row['sv_length']) > min_svlen: + # logging.info('Features: %s', row.to_dict()) + # Get the IDs of the filtered variants filtered_ids = id_col.iloc[filtered_indices].values # logging.info('Filtered IDs:\n%s', filtered_ids) @@ -222,19 +246,28 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): np.savetxt(filtered_ids_file, filtered_ids, fmt='%s') logging.info('Saved the filtered IDs to %s.', filtered_ids_file) + # Create a VCF file with only the filtered variants + removed_svs_vcf = os.path.join(output_dir, 'removed_svs.vcf') + # Filter the input VCF file based on the filtered indices logging.info('Filtering the input VCF file based on the filtered indices...') filtered_records = set(filtered_ids) current_record = 0 pass_count = 0 + filter_count = 0 total_records = 0 - with open(input_vcf, 'r') as vcf_in, open(output_vcf, 'w') as vcf_out: + with open(input_vcf, 'r') as vcf_in, open(output_vcf, 'w') as vcf_out, open(removed_svs_vcf, 'w') as removed_out: for line in vcf_in: if line.startswith('#'): # Write the header lines as they are vcf_out.write(line) + removed_out.write(line) else: - if current_record not in filtered_records: + if current_record in filtered_records: + # Write the line to the removed_svs.vcf file if the current record is in the filtered records + removed_out.write(line) + filter_count += 1 + else: # Write the line if the current record is not in the filtered records vcf_out.write(line) pass_count += 1 @@ -244,6 +277,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): logging.info('Filtered the input VCF file and saved it to %s', output_vcf) logging.info('Scoring process completed successfully. Passed %d out of %d records.', pass_count, total_records) + logging.info('Removed %d records. See %s for details.', filter_count, removed_svs_vcf) if __name__ == '__main__': @@ -258,6 +292,9 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): help='Path to the model file.') parser.add_argument('--buildver', type=str, default='hg38', help='Genome build version (default: hg38).') + parser.add_argument('--title', type=str, default='Probability Distribution', + help='Title for the probability distribution plot (default: Probability Distribution).') + args = parser.parse_args() input_vcf = args.input output_vcf = args.output @@ -305,5 +342,5 @@ def score(model, input_vcf, output_vcf, buildver='hg38'): sys.exit(1) # Run the scoring function - score(model, input_vcf, output_vcf, buildver=buildver) + score(model, input_vcf, output_vcf, buildver=buildver, title=args.title) logging.info('Scoring process completed.') diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 977131a..f75429d 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -65,7 +65,7 @@ import matplotlib.pyplot as plt import seaborn as sns -from extract_features import extract_features +from extract_features import extract_features, add_interaction_terms, normalize_column # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') @@ -122,69 +122,74 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t fp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') # Normalize cluster_size and read_depth using Robust scaling. - logging.info('Normalizing cluster_size and read_depth using Robust scaling.') - from sklearn.preprocessing import RobustScaler, MinMaxScaler - # Combine the data. - combined_data = pd.concat([tp_data, fp_data]) - # Create a RobustScaler object. - scaler = RobustScaler() - # Fit the scaler to the data. - robust_scaled = scaler.fit_transform(combined_data[['cluster_size', 'read_depth']]) - - # Update the data with the scaled values. - combined_data[['cluster_size', 'read_depth']] = robust_scaled - # Split the data back into true positives and false positives. - tp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[:tp_data.shape[0]] - fp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[tp_data.shape[0]:] - - logging.info('Normalization completed.') + # logging.info('Normalizing cluster_size and read_depth using Robust scaling.') + # from sklearn.preprocessing import RobustScaler, MinMaxScaler + # # Combine the data. + # combined_data = pd.concat([tp_data, fp_data]) + # # Create a RobustScaler object. + # scaler = RobustScaler() + # # Fit the scaler to the data. + # robust_scaled = scaler.fit_transform(combined_data[['cluster_size', 'read_depth']]) + + # # Update the data with the scaled values. + # combined_data[['cluster_size', 'read_depth']] = robust_scaled + # # Split the data back into true positives and false positives. + # tp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[:tp_data.shape[0]] + # fp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[tp_data.shape[0]:] + + # logging.info('Normalization completed.') + + # # Drop the cluster_size column + # logging.info('Dropping the cluster_size column from the data.') + # tp_data.drop(columns=['cluster_size'], inplace=True) + # fp_data.drop(columns=['cluster_size'], inplace=True) # Plot the distributions of cluster_size in the TP vs. FP data. - logging.info('Plotting the distributions of cluster_size in the TP vs. FP data.') - plt.figure(figsize=(10, 6)) - sns.histplot(tp_data['cluster_size'], color='blue', label='True Positives', kde=True, stat="density", bins=30) - sns.histplot(fp_data['cluster_size'], color='red', label='False Positives', kde=True, stat="density", bins=30) - plt.xlabel('Cluster Size') - plt.ylabel('Density') - plt.title('Distribution of Cluster Size (True Positives vs False Positives)') - plt.legend() - plt.tight_layout() - plt.savefig(os.path.join(output_directory, 'cluster_size_distribution.png')) - plt.close() - logging.info('Cluster size distribution plot saved to %s', os.path.join(output_directory, 'cluster_size_distribution.png')) + # logging.info('Plotting the distributions of cluster_size in the TP vs. FP data.') + # plt.figure(figsize=(10, 6)) + # sns.histplot(tp_data['cluster_size'], color='blue', label='True Positives', kde=True, stat="density", bins=30) + # sns.histplot(fp_data['cluster_size'], color='red', label='False Positives', kde=True, stat="density", bins=30) + # plt.xlabel('Cluster Size') + # plt.ylabel('Density') + # plt.title('Distribution of Cluster Size (True Positives vs False Positives)') + # plt.legend() + # plt.tight_layout() + # plt.savefig(os.path.join(output_directory, 'cluster_size_distribution.png')) + # plt.close() + # logging.info('Cluster size distribution plot saved to %s', os.path.join(output_directory, 'cluster_size_distribution.png')) # Analyze feature correlations in the collected data. - logging.info('Analyzing feature correlations in the collected data.') - corr_matrix = tp_data.corr() - plt.figure(figsize=(12, 10)) - sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - plt.title('Feature Correlation Matrix (True Positives)') - plt.tight_layout() - plt.savefig(os.path.join(output_directory, 'feature_correlation_tp.png')) - plt.close() - corr_matrix = fp_data.corr() - plt.figure(figsize=(12, 10)) - sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - plt.title('Feature Correlation Matrix (False Positives)') - plt.tight_layout() - plt.savefig(os.path.join(output_directory, 'feature_correlation_fp.png')) - plt.close() - logging.info('Feature correlation analysis completed. TP saved to %s and FP saved to %s', - os.path.join(output_directory, 'feature_correlation_tp.png'), - os.path.join(output_directory, 'feature_correlation_fp.png')) + # logging.info('Analyzing feature correlations in the collected data.') + # corr_matrix = tp_data.corr() + # plt.figure(figsize=(12, 10)) + # sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + # plt.title('Feature Correlation Matrix (True Positives)') + # plt.tight_layout() + # plt.savefig(os.path.join(output_directory, 'feature_correlation_tp.png')) + # plt.close() + # corr_matrix = fp_data.corr() + # plt.figure(figsize=(12, 10)) + # sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + # plt.title('Feature Correlation Matrix (False Positives)') + # plt.tight_layout() + # plt.savefig(os.path.join(output_directory, 'feature_correlation_fp.png')) + # plt.close() + # logging.info('Feature correlation analysis completed. TP saved to %s and FP saved to %s', + # os.path.join(output_directory, 'feature_correlation_tp.png'), + # os.path.join(output_directory, 'feature_correlation_fp.png')) # Analyze feature correlations in the combined data. - logging.info('Analyzing feature correlations in the combined data.') - combined_data = pd.concat([tp_data, fp_data]) - corr_matrix_combined = combined_data.corr() - plt.figure(figsize=(12, 10)) - sns.heatmap(corr_matrix_combined, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - plt.title('Feature Correlation Matrix (Combined Data)') - plt.tight_layout() - plt.savefig(os.path.join(output_directory, 'feature_correlation_combined.png')) - plt.close() - logging.info('Feature correlation analysis completed for combined data. Saved to %s', - os.path.join(output_directory, 'feature_correlation_combined.png')) + # logging.info('Analyzing feature correlations in the combined data.') + # combined_data = pd.concat([tp_data, fp_data]) + # corr_matrix_combined = combined_data.corr() + # plt.figure(figsize=(12, 10)) + # sns.heatmap(corr_matrix_combined, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) + # plt.title('Feature Correlation Matrix (Combined Data)') + # plt.tight_layout() + # plt.savefig(os.path.join(output_directory, 'feature_correlation_combined.png')) + # plt.close() + # logging.info('Feature correlation analysis completed for combined data. Saved to %s', + # os.path.join(output_directory, 'feature_correlation_combined.png')) # Add the labels. tp_data['label'] = 1 @@ -227,9 +232,29 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data]) + # Drop the chromosome column from the data. + data.drop(columns=['chrom'], inplace=True) + + # Normalize cluster_size and read_depth + # data = normalize_column(data, 'cluster_size') + # data = normalize_column(data, 'read_depth') + + # Add interaction terms to the data. + data = add_interaction_terms(data) + + # Drop the SV length column + data.drop(columns=['sv_length'], inplace=True) + + # Drop the SV length and aln_type columns. + # data.drop(columns=['sv_length', 'aln_type'], inplace=True) + # Get the features and labels. features = data.drop(columns=['label']) labels = data["label"] + + # Print the number of features. + logging.info('Number of features: %d', features.shape[1]) + logging.info('Feature names: %s', features.columns.tolist()) # Train different models. models = { @@ -244,11 +269,16 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) logging.info('Data split completed. Training set size: %d, Testing set size: %d', X_train.shape[0], X_test.shape[0]) - # Print the number of features. - logging.info('Number of features: %d', X_train.shape[1]) - # Print the feature names. - feature_names = features.columns.tolist() - logging.info('Feature names: %s', feature_names) + + # # Drop the chromosome column from the features. + # X_train.drop(columns=['chrom'], inplace=True) + # X_test.drop(columns=['chrom'], inplace=True) + + # # Print the number of features. + # logging.info('Number of features: %d', X_train.shape[1]) + # # Print the feature names. + # feature_names = features.columns.tolist() + # logging.info('Feature names: %s', feature_names) for model_name, model in models.items(): @@ -257,6 +287,11 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Skipping SVC model.') continue + # Skip all but XGBoost + if model_name != "XGBoost": + logging.info('Skipping %s model.', model_name) + continue + # # Split the data into training and testing sets. # logging.info('Splitting the data into training and testing sets (0.8/0.2).') # X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) @@ -335,7 +370,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') - plt.title('Receiver Operating Characteristic (Training Set)') + plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name)) plt.legend(loc='lower right') # Save the plot to the output directory. model_name_fp = model_name.replace(" ", "_") @@ -352,7 +387,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') - plt.title('Receiver Operating Characteristic (Testing Set)') + plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_fp)) plt.legend(loc='lower right') # Save the plot to the output directory. roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') @@ -419,6 +454,28 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Get the feature names. feature_names = features.columns.tolist() + + # Create a dictionary of feature names and their labels. + feature_name_dict = { + "aln_type": "Alignment Type", + "aln_type_hmm": "HMM Prediction", + "simpleRepeat": "Simple Repeat", + "segdup": "Segmental Duplications", + "cluster_size": "Cluster Size", + "read_depth": "Read Depth", + "aln_offset": "Alignment Offset", + "hmm_llh": "HMM Log Likelihood", + "phastCons": "PhastCons Conservation Score", + "sv_length": "Structural Variant Length", + "sv_type": "Structural Variant Type", + "fragile_site": "Fragile Site", + "centromere": "Centromere", + "telomere": "Telomere" + } + + # Map the feature names to their labels. + feature_names = [feature_name_dict.get(name, name) for name in feature_names] + logging.info('Feature names: %s', feature_names) logging.info('Number of features: %d', len(feature_names)) @@ -429,6 +486,8 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Sort the feature importances in descending order. indices = np.argsort(importances)[::-1] + top_features = [feature_names[i] for i in indices] + top_importances = [importances[i] for i in indices] # Print the feature ranking. logging.info('Feature ranking:') @@ -437,16 +496,120 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Plot the feature importances. plt.figure() - plt.title('Feature Importances') - plt.bar(range(X_train.shape[1]), importances[indices], align='center') - plt.xticks(range(X_train.shape[1]), indices) - plt.xlim([-1, X_train.shape[1]]) + plt.title('XGBoost Feature Importances') + plt.bar(range(len(top_features)), top_importances, align='center') + plt.xticks(range(len(top_features)), top_features, rotation=45, ha='right') + # plt.bar(range(X_train.shape[1]), importances[indices], align='center') + # plt.xticks(range(X_train.shape[1]), indices) + # plt.xlim([-1, X_train.shape[1]]) + + # Set the x ticks as the feature names + # plt.xticks(range(X_train.shape[1]), [feature_names[i] for i in indices], rotation=45) + # plt.xlim([-1, X_train.shape[1]]) + plt.xlabel('') + plt.ylabel('Importance') + plt.tight_layout() + # Save the plot to the output directory. importance_plot_path = os.path.join(output_directory, model_name_fp + '_feature_importances.png') - plt.savefig(importance_plot_path) + plt.savefig(importance_plot_path, bbox_inches='tight') plt.close() logging.info('Saved the feature importances plot to %s', importance_plot_path) + # Plot the % of SVs (TPs and FPs) overlapping with the genomic + # context regions (simpleRepeat, segdup, fragile_site, phastCons > + # 0.5) + # print("Number of TPs: ", tp_data.shape[0]) + # print("Number of FPs: ", fp_data.shape[0]) + # logging.info('Plotting the percentage of SVs (TPs and FPs) overlapping with the genomic context regions.') + # for feature in ['simpleRepeat', 'segdup', 'fragile_site', 'phastCons']: + # if feature == 'phastCons': + # tp_data_feature = tp_data[tp_data[feature] > 0.5] + # fp_data_feature = fp_data[fp_data[feature] > 0.5] + # else: + # tp_data_feature = tp_data[tp_data[feature] == 1] + # fp_data_feature = fp_data[fp_data[feature] == 1] + # tp_pcnt = tp_data_feature.shape[0] / tp_data.shape[0] * 100 + # fp_pcnt = fp_data_feature.shape[0] / fp_data.shape[0] * 100 + # logging.info('Feature %s: TP = %.2f%%, FP = %.2f%%', feature, tp_pcnt, fp_pcnt) + # plt.figure() + # plt.bar(['TP', 'FP'], [tp_pcnt, fp_pcnt], color=['#0072B2', '#D55E00']) # Blue, Vermillion (colorblind-friendly) + # plt.xlabel('SV Type') + # plt.ylabel('Percentage of SVs') + # plt.title('Percentage of SVs Overlapping with %s' % feature) + # plt.ylim([0, 100]) + # # Save the plot to the output directory. + # feature_plot_path = os.path.join(output_directory, model_name_fp + '_%s.png' % feature) + # plt.savefig(feature_plot_path, bbox_inches='tight') + # plt.close() + # logging.info('Saved the %s plot to %s', feature, feature_plot_path) + + # # Exit early to verify the feature importances. + # sys.exit(0) + + # Convert bool columns to int for SHAP analysis. + bool_cols = X_train.select_dtypes(include=['bool']).columns + X_train[bool_cols] = X_train[bool_cols].astype(int) + + # Figure out which column has dtype object in X_train. + print("X_train dtypes:") + print(X_train.dtypes) + print("X_train columns:") + print(X_train.columns) + + # Analyze the feature importances using SHAP values. + import shap + explainer = shap.Explainer(model, X_train) + shap_values = explainer(X_train) + # Plot the SHAP values. + plt.figure(figsize=(10, 6)) + shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) + # Save the SHAP summary plot to the output directory. + shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + plt.savefig(shap_plot_path, bbox_inches='tight') + plt.close() + logging.info('Saved the SHAP summary plot to %s', shap_plot_path) + + # ----------------------------------------------- + # SV Length vs SHAP values + # ----------------------------------------------- + + # # Plot 1: SHAP values vs SV length. + # plt.figure(figsize=(10, 6)) + # sns.scatterplot(data=X_train, x='abs_SVLEN', y='shap_SVLEN', hue='true_label', alpha=0.6) + # plt.xscale('log') + # plt.xlabel("SV Length (bp, log scale)") + # plt.ylabel("SHAP value for SV Length") + # plt.title("SHAP value vs. SV length") + # plt.axhline(0, color='gray', linestyle='--') + # plt.legend(title="True Label") + # plt.tight_layout() + # shap_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_shap_svlen.png') + # plt.savefig(shap_svlen_plot_path, bbox_inches='tight') + # plt.close() + # logging.info('Saved the SHAP value vs. SV length plot to %s', shap_svlen_plot_path) + + # # Plot 2: Predicted probability vs SV length. + # X_train['y_prob'] = model.predict_proba(X_train)[:, 1] + # plt.figure(figsize=(10, 6)) + # sns.scatterplot(data=X_train, x='abs_SVLEN', y='y_prob', hue='true_label', alpha=0.6) + # plt.xscale('log') + # plt.xlabel("SV Length (bp, log scale)") + # plt.ylabel("Predicted Probability of Being True Positive") + # plt.title("Predicted Probability vs. SV length") + # plt.axhline(0.5, color='gray', linestyle='--') + # plt.legend(title="True Label") + # plt.tight_layout() + # prob_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_prob_svlen.png') + # plt.savefig(prob_svlen_plot_path, bbox_inches='tight') + # plt.close() + # logging.info('Saved the predicted probability vs. SV length plot to %s', prob_svlen_plot_path) + + # plt.title('Feature Importances') + + # [TEST] Exit after this step to verify the feature importances. + # sys.exit(0) + # For SVC, get the coefficients. # if model_name == "SVC": # # Get the coefficients. @@ -554,6 +717,74 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # logging.info('Cross-validation scores: %s', scores) # logging.info('Mean cross-validation score: %f', scores.mean()) + # Exit early to test the saved model. + sys.exit(0) + + # Run a cross-validation analysis splitting the data by chromosome. + logging.info('Running cross-validation analysis splitting the data by chromosome.') + # chromosomes = features['chrom'].unique() + + # Specify the chromosomes to not include non-standard chromosomes. + chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', + 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY'] + + logging.info('Chromosomes: %s', chromosomes) + f1_scores = {} + for model_name, model in models.items(): + # Skip SVC + if model_name == "SVC": + logging.info('Skipping SVC model for cross-validation analysis.') + continue + + for chrom in chromosomes: + logging.info('Training the %s model on chromosome %s.', model_name, chrom) + # Split the data into training and testing sets by chromosome. + X_train_chrom = features[features['chrom'] != chrom].copy() + y_train_chrom = labels[features['chrom'] != chrom].copy() + X_test_chrom = features[features['chrom'] == chrom].copy() + y_test_chrom = labels[features['chrom'] == chrom].copy() + + # Drop the chromosome column from the features. + X_train_chrom.drop(columns=['chrom'], inplace=True) + X_test_chrom.drop(columns=['chrom'], inplace=True) + + logging.info('Training set size: %d, Testing set size: %d', + X_train_chrom.shape[0], X_test_chrom.shape[0]) + # Train the model. + model.fit(X_train_chrom, y_train_chrom) + # Get the predicted probabilities for the testing set. + y_test_chrom_prob = model.predict_proba(X_test_chrom)[:, 1] + # Compute the ROC curve and ROC area for the testing set. + fpr_chrom, tpr_chrom, _ = roc_curve(y_test_chrom, y_test_chrom_prob) + roc_auc_chrom = auc(fpr_chrom, tpr_chrom) + logging.info('ROC AUC score for the %s model on chromosome %s: %f', model_name, chrom, roc_auc_chrom) + + # Compute the F1 score for the testing set. + from sklearn.metrics import f1_score + y_test_chrom_pred = (y_test_chrom_prob >= optimal_threshold).astype(int) + f1 = f1_score(y_test_chrom, y_test_chrom_pred) + # f1_scores.append(f1) + f1_scores[(model_name, chrom)] = f1 + logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) + + logging.info('Cross-validation analysis completed. F1 scores: %s', f1_scores) + + # Plot the F1 scores for each model and chromosome (one plot per model). + logging.info('Plotting the F1 scores for each model and chromosome.') + for model_name in models.keys(): + model_f1_scores = {chrom: f1_scores[(model_name, chrom)] for chrom in chromosomes if (model_name, chrom) in f1_scores} + plt.figure(figsize=(10, 6)) + sns.barplot(x=list(model_f1_scores.keys()), y=list(model_f1_scores.values()), palette='viridis') + plt.xlabel('Chromosome') + plt.ylabel('F1 Score') + plt.title('F1 Scores for %s Model by Chromosome' % model_name) + plt.xticks(rotation=45) + plt.tight_layout() + # Save the plot to the output directory. + f1_plot_path = os.path.join(output_directory, model_name + '_f1_scores_by_chromosome.png') + plt.savefig(f1_plot_path) + plt.close() + logging.info('Saved the F1 scores plot to %s', f1_plot_path) def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): """Run the training process.""" From ae4c11c22a8c7954a3e7df558a8ae5990ad5eec8 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 12 Jul 2025 19:21:05 -0400 Subject: [PATCH 35/93] feature engineering --- contextscore/extract_features.py | 231 +++++++++++++++++++------------ contextscore/predict.py | 105 ++++++++++++-- contextscore/train_full_model.py | 90 +++++++++--- 3 files changed, 307 insertions(+), 119 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index ab4503c..9bf185f 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -64,22 +64,96 @@ def normalize_column(df, column): def add_interaction_terms(df): """Add interaction terms to the dataframe.""" - # Normalize the sv_length column by dividing by 1000 to reduce the range. - df['log_svlen'] = np.log1p(np.abs(df['sv_length'])) - # bed_df['svlen_rd'] = bed_df['log_svlen'] * bed_df['read_depth'] - # bed_df['svlen_cs'] = bed_df['log_svlen'] * bed_df['cluster_size'] - df['rd_cs'] = df['read_depth'] * df['cluster_size'] - df['svlen_hmm'] = df['log_svlen'] * df['hmm_llh'] - df['cs_hmm'] = df['cluster_size'] * df['hmm_llh'] - df['rd_hmm'] = df['read_depth'] * df['hmm_llh'] - # bed_df['rd_per_kb'] = bed_df['read_depth'] / (np.abs(bed_df['sv_length']) / 1000 + 1) - # bed_df['cs_per_kb'] = bed_df['cluster_size'] / - # (np.abs(bed_df['sv_length']) / 1000 + 1) ## - df['hmm_per_kb'] = df['hmm_llh'] / (np.abs(df['sv_length']) / 1000 + 1) - - # df['svlen_rd'] = df['sv_length'] * df['read_depth'] - # df['svlen_cs'] = df['sv_length'] * df['cluster_size'] + # Log-transform the sv_length column to reduce the range. + # df['log_svlen'] = np.log1p(np.abs(df['sv_length'])) + + # Log-transform the read_depth column to reduce the range. + # df['log_rd'] = np.log1p(np.abs(df['read_depth'])) + + # Log-transform the cluster_size column to reduce the range. + # df['log_cs'] = np.log1p(np.abs(df['cluster_size'])) + + # Add a feature for whether the SV is a CNV (DUP, DEL with non-zero HMM log + # likelihood). + # df['is_cnv_hmm'] = df['sv_type'].apply(lambda x: 1 if x in [0, 1] else 0) # Assuming 0 is DEL and 1 is DUP + # df['is_cnv_hmm'] = df['is_cnv_hmm'] & (df['hmm_llh'] != 0) + + # Update hmm_llh, set 0 to np.nan + df['hmm_llh_missing'] = (df['hmm_llh'] == 0).astype(int) + df['hmm_llh'] = df['hmm_llh'].replace(0, np.nan) + + # Replace hmm_llh with likelihood + # df['hmm_llh'] = np.clip(np.exp(df['hmm_llh']), 1e-6, 0.999999) + + # Cap hmm log likelihood to avoid extreme values. + df['hmm_llh'] = np.clip(df['hmm_llh'], -1e6, 0) + + # Boolean for whether the SV is an inversion (INV). + df['is_inv'] = df['sv_type'].apply(lambda x: 1 if x == 2 else 0) # Assuming 2 is INV + + # SV length interaction terms + # df['svlenkb_cs'] = np.abs(df['sv_length']) / 1000 * df['cluster_size'] + # df['svlenkb_rd'] = np.abs(df['sv_length']) / 1000 * df['read_depth'] + # df['svlenkb_hmm'] = np.abs(df['sv_length']) / 1000 * df['hmm_llh'] + # df['hmm_llh_scaled'] = df['hmm_llh'] / np.log1p(np.abs(df['sv_length'])) + + # df['hmm_llh_scaled'] = df['hmm_llh'] / (np.log1p(np.abs(df['sv_length']))) + # df['hmm_llh_per_kb'] = df['hmm_llh_scaled'] / (np.abs(df['sv_length']) / 1000 + 1e-6) + + # Cluster size / read depth interaction terms + df['cs_rd'] = df['cluster_size'] / (df['read_depth'] + 1e-6) + + # Segdup * HMM llh interaction term + # df['segdup_hmm'] = df['segdup'] * df['hmm_llh'] + + # Segdup * cs/rd interaction terms + df['segdup_cs_rd'] = df['segdup'] * df['cs_rd'] + + # Segdup * sv_length interaction term + # df['segdup_svlen'] = df['segdup'] * np.abs(df['sv_length']) + + # Replace nans in segdup_hmm with 0 + # df['segdup_hmm'] = df['segdup_hmm'].fillna(0) + + # Drop the segdup column + df.drop(columns=['segdup'], inplace=True) + + # --- + # Cluster size per kb + # df['cs_per_kb'] = df['cluster_size'] / (np.abs(df['sv_length']) / 1000 + 1e-6) + + # # Read depth per kb + # df['rd_per_kb'] = df['read_depth'] / (np.abs(df['sv_length']) / 1000 + + # 1e-6) + # --- + + # Segmental duplication interaction terms + # CNVs are mostly in segmental duplications, so we can use the + # segmental duplication score to create interaction terms. + # df['is_dup_and'] + + # Cluster size * sv_length + # df['log_svlen_cs'] = df['log_svlen'] + df['log_cs'] + + # HMM log likelihood * sv_length + # df['log_svlen_hmm'] = df['log_svlen'] + df['hmm_llh'] + + # Remove log_cs + # df.drop(columns=['log_cs'], inplace=True) + + # Read depth * sv_length + # df['log_svlen_rd'] = df['log_svlen'] + df['log_rd'] + + # Remove the log_svlen, log_rd, and log_cs columns, keeping the interaction + # terms only. + # df.drop(columns=['log_svlen', 'log_rd', 'log_cs'], inplace=True) + # df['rd_cs'] = df['read_depth'] * df['cluster_size'] + # df['svlen_hmm'] = df['log_svlen'] * df['hmm_llh'] + # df['cs_hmm'] = df['cluster_size'] * df['hmm_llh'] + # df['rd_hmm'] = df['read_depth'] * df['hmm_llh'] + # df['hmm_per_kb'] = df['hmm_llh'] / (np.abs(df['sv_length']) / 1000 + 1) + return df def add_overlap_count(df, chrom_col='chrom', start_col='start', end_col='end'): @@ -135,23 +209,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset', 'id'], dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32, 'id': np.int32}) - logging.info("[TEST1] columns in the BED file: %s", bed_df.columns) - - # Print the range of cluster size. - # logging.info('Range of cluster size (pre-normalization): %f - %f', bed_df['cluster_size'].min(), bed_df['cluster_size'].max()) - # # Print the range of read depth. - # logging.info('Range of read depth (pre-normalization): %f - %f', bed_df['read_depth'].min(), bed_df['read_depth'].max()) - - # # Normalize the read depth and cluster size columns (sample-dependent). - # bed_df['read_depth'] = (bed_df['read_depth'] - bed_df['read_depth'].mean()) / bed_df['read_depth'].std() - # bed_df['cluster_size'] = (bed_df['cluster_size'] - bed_df['cluster_size'].mean()) / bed_df['cluster_size'].std() - # logging.info('[TEST] Normalized the read depth and cluster size columns. Current columns: %s', bed_df.columns) - - # # Print the range of cluster size. - # logging.info('Range of cluster size: %f - %f', bed_df['cluster_size'].min(), bed_df['cluster_size'].max()) - # # Print the range of read depth. - # logging.info('Range of read depth: %f - %f', bed_df['read_depth'].min(), bed_df['read_depth'].max()) - # Drop the genotype column and cn_state columns (due to redundancy). bed_df.drop(columns=['genotype', 'cn_state'], inplace=True) logging.info('[TEST] Dropped the genotype and cn_state columns. Current columns: %s', bed_df.columns) @@ -168,52 +225,66 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Create a map of alignment types to numbers. # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" - aln_type_map = { - 'CIGARINS': 0, - 'CIGARDEL': 1, - 'CIGARCLIP': 2, - 'SPLIT': 3, - 'SPLITDIST1': 4, - 'SPLITDIST2': 5, - 'SPLITINV': 6, - 'SUPPINV': 7, - 'HMM': 8, - 'UNKNOWN': 9 - } + # aln_type_map = { + # 'CIGARINS': 0, + # 'CIGARDEL': 1, + # 'CIGARCLIP': 2, + # 'SPLIT': 3, + # 'SPLITDIST1': 4, + # 'SPLITDIST2': 5, + # 'SPLITINV': 6, + # 'SUPPINV': 7, + # 'HMM': 8, + # 'UNKNOWN': 9 + # } # The alignment types are comma-separated. # Split the alignment types into a list. - bed_df['aln_type'] = bed_df['aln_type'].str.split(',') + # bed_df['aln_type'] = bed_df['aln_type'].str.split(',') # Throw an error and exit if any contain more than two # alignment types. - if bed_df['aln_type'].apply(len).max() > 2: - logging.error('Alignment types contain more than two types.') - logging.error('Please check the input BED file.') - sys.exit(1) - else: - logging.info('Success: Alignment types contain at most two types.') + # if bed_df['aln_type'].apply(len).max() > 2: + # logging.error('Alignment types contain more than two types.') + # logging.error('Please check the input BED file.') + # sys.exit(1) + # else: + # logging.info('Success: Alignment types contain at most two types.') + + # Create split alignment evidence feature, 0 for CIGAR alignment types (contains CIGAR) and 1 + # for split alignment types (contains SPLIT, HMM, etc.). + # bed_df['split_aln'] = bed_df['aln_type'].apply(lambda x: 0 if 'CIGAR' in x else 1) + # logging.info('Created split_aln feature. Current columns: %s', + # bed_df.columns) + + # Create alignment type feature, 0 for CIGAR alignment types (contains + # CIGAR), 1 for CIGARCLIP (contains CIGARCLIP), 2 for SPLIT alignment (all + # others) + # bed_df['call_type'] = bed_df['aln_type'].apply(lambda x: 1 if 'CIGARCLIP' in x else (0 if 'CIGAR' in x else 2)) + + # Drop the original aln_type column. + bed_df.drop(columns=['aln_type'], inplace=True) # Create a second column with whether one of the alignment types is HMM. - bed_df['aln_type_hmm'] = bed_df['aln_type'].apply(lambda x: 1 if 'HMM' in x else 0) + # bed_df['aln_type_hmm'] = bed_df['aln_type'].apply(lambda x: 1 if 'HMM' in x else 0) - # Replace the alignment type to have only one type by removing the HMM type. - bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: [i for i in x if i != 'HMM']) + # # Replace the alignment type to have only one type by removing the HMM type. + # bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: [i for i in x if i != 'HMM']) - # Now all the alignment types should be just one type. Print an error if - # not and exit. - if bed_df['aln_type'].apply(len).max() > 1: - logging.error('Alignment types contain more than one type.') - logging.error('Please check the input BED file.') - sys.exit(1) - else: - logging.info('Success: Alignment types contain only one type.') + # # Now all the alignment types should be just one type. Print an error if + # # not and exit. + # if bed_df['aln_type'].apply(len).max() > 1: + # logging.error('Alignment types contain more than one type.') + # logging.error('Please check the input BED file.') + # sys.exit(1) + # else: + # logging.info('Success: Alignment types contain only one type.') - # Flatten the list of alignment types into a single string. - bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: x[0]) + # # Flatten the list of alignment types into a single string. + # bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: x[0]) - # Map the alignment types to numbers. - bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + # # Map the alignment types to numbers. + # bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) # Create a one-hot encoding for the alignment types by creating a new column for each type. # for aln_type in aln_type_map.keys(): @@ -240,6 +311,8 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= 'UNKNOWN': 5 } + bed_df['sv_type_str'] = bed_df['sv_type'].astype(str) + # Map the SV types to numbers. bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) @@ -322,9 +395,12 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # # Training data has size imbalance, so use the transformed sv_length # bed_df.drop(columns=['sv_length'], inplace=True) - # # Drop the alignment type column (imbalanced). + # Drop the alignment type column (imbalanced). # bed_df.drop(columns=['aln_type'], inplace=True) + # # Drop the HMM prediction column (not available for all samples). + # bed_df.drop(columns=['aln_type_hmm'], inplace=True) + # Drop cluster size and cs_per_kb # bed_df.drop(columns=['cluster_size'], inplace=True) # Dropped after normalization in train_full_model.py # bed_df.drop(columns=['cs_per_kb'], inplace=True) @@ -337,24 +413,17 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Print the number of NaN values logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) - # Map the chromosome names to numbers. - # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) - - # # Actually drop the chrom, start, end columns. - # bed_df.drop(columns=['chrom', 'start', 'end'], inplace=True) - + # ------------------------------------------------------------------- # Fix the chromosome names to all start with 'chr' if they don't already. bed_df['chrom'] = bed_df['chrom'].apply(lambda x: 'chr' + x if not x.startswith('chr') else x) # Drop the start and end columns, but keep the chrom column for later use in # cross-validation. - bed_df.drop(columns=['start', 'end'], inplace=True) + # bed_df.drop(columns=['start', 'end'], inplace=True) # Drop telomere and centromere columns (they don't affect predictions). bed_df.drop(columns=['telomere', 'centromere'], inplace=True) - logging.info('[TEST] Dropped the chrom, start, end columns. Final columns (TP): %s', bed_df.columns) - # Return the features. return bed_df @@ -693,20 +762,10 @@ def extract_scores(score_str): logging.warning('Score= not found in the string: %s', score_str) return 0 return float(score) if score else 0 - - # Extract the maximum score from the segmental duplication annotations. - # data['segdup'] = extract_max_score(data['genomicSuperDups']) - - # # Print the first 20 values of the segdup column. - # logging.info('First 20 values of the segdup column: %s', data['segdup'].head(20)) # Extract the segmental duplication scores. - # test_scores = data['genomicSuperDups'].apply(extract_scores) data['segdup'] = data['genomicSuperDups'].apply(extract_scores) - # Print the first 20 values of the test_scores column. - # logging.info('First 20 values of the updated segdup column: %s', data['segdup'].head(20)) - # Extract the cytoband annotations. def get_cyto_info(row): """Get telomere and centromere information for a row.""" diff --git a/contextscore/predict.py b/contextscore/predict.py index 568e410..a0294be 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -155,21 +155,41 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist feature_df = add_interaction_terms(feature_df) logging.info('Added interaction terms to the features.') - # Drop the SV length column - feature_df.drop(columns=['sv_length'], inplace=True) + # Drop the sv_type column (imbalance especially for inversions). + # logging.info('Dropping the sv_type column from the features.') + # feature_df.drop(columns=['sv_type'], inplace=True) + + # # Drop the SV length column + # feature_df.drop(columns=['sv_length'], inplace=True) + + # Drop the read_depth and cluster_size columns + # feature_df.drop(columns=['read_depth', 'cluster_size'], inplace=True) + + # Drop the HMM log likelihood column + # feature_df.drop(columns=['hmm_llh'], inplace=True) # Check if the feature extraction was successful if feature_df.empty: logging.error('Feature extraction failed. No features extracted.') sys.exit(1) - # Separate the ID column from the features - id_col = feature_df.pop('id') - logging.info('Separated ID column from the features.') + # # Separate the ID column from the features + # id_col = feature_df.pop('id') + # logging.info('Separated ID column from the features.') + + # # Separate the chrom column from the features + # chrom_col = feature_df.pop('chrom') + # logging.info('Separated chrom column from the features.') - # Separate the chrom column from the features + # Separate the ID, chrom, start, end, SV length, read depth, and cluster size columns from the features + id_col = feature_df.pop('id') chrom_col = feature_df.pop('chrom') - logging.info('Separated chrom column from the features.') + start_col = feature_df.pop('start') + end_col = feature_df.pop('end') + # sv_length_col = feature_df.pop('sv_length') + read_depth_col = feature_df.pop('read_depth') + cluster_size_col = feature_df.pop('cluster_size') + sv_type_str_col = feature_df.pop('sv_type_str') # # Normalize the cluster_size and read_depth columns using RobustScaler # logging.info('Normalizing the cluster_size and read_depth columns...') @@ -211,17 +231,41 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # Save the plot to the output directory plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) - logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities_seaborn.png')) + logging.info('Saved the plot of the probabilities to %s', os.path.join(output_dir, 'probabilities_seaborn.png')) # Determine the threshold for filtering # 22 May 2025 # prob_threshold = 0.001 # Does not affect results much # prob_threshold = 0.2 # Lowered recall (too high) # prob_threshold = 0.1 # Lowered recall (too high) - prob_threshold = 0.01 # Slightly lowered recall (too high) + # prob_threshold = 0.01 # Slightly lowered recall (too high) # prob_threshold = 0.005 # Even slightlier lowered recall (too high) # prob_threshold = 0.001 + # 10 July 2025 - Feature updates for large SVs + # prob_threshold = 0.01 # Low precision, high recall (same recall as no filtering) + # prob_threshold = 0.05 # Same result, improved precision + # prob_threshold = 0.1 # Same result, improved precision + #prob_threshold = 0.2 # Same result, improved precision + # prob_threshold = 0.25 + # prob_threshold = 0.3 # Slightly lowered recall, improved precision + # prob_threshold = 0.4 # Lowered recall, inversions are not highest recall anymore, but achieved overal highest F1 score + # prob_threshold = 0.35 # Lowered recall, inversions are not highest recall + # anymore, F1 is equal to Sniffles2 + # prob_threshold = 0.32 + + # 11 July 2025 - Feature updates for large SVs + # prob_threshold = 0.1 # Lowered recall + # prob_threshold = 0.05 + + # Engineering feature interaction terms + # prob_threshold = 0.01 # Too high SV counts + # prob_threshold = 0.1 + # prob_threshold = 0.3 # Lowered recall + prob_threshold = 0.2 + # prob_threshold = 0.02 # Too many SVs + # prob_threshold = 0.01 + filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) @@ -244,11 +288,52 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # Save the filtered IDs to a text file filtered_ids_file = os.path.join(output_dir, 'filtered_ids.txt') np.savetxt(filtered_ids_file, filtered_ids, fmt='%s') - logging.info('Saved the filtered IDs to %s.', filtered_ids_file) + logging.info('Saved the filtered IDs to %s', filtered_ids_file) # Create a VCF file with only the filtered variants removed_svs_vcf = os.path.join(output_dir, 'removed_svs.vcf') + # Create a CSV file with the filtered variants (CHROM, POS, ID, SVTYPE, + # SVLEN, [... SHAP value for each feature], Predicted probability, Predicted + # class) + + logging.info('Creating a CSV file with the filtered variants...') + import shap + explainer = shap.TreeExplainer(clf) + shap_values = explainer.shap_values(feature_df) + shap_df = pd.DataFrame(shap_values, columns=feature_df.columns) + shap_df['id'] = id_col.values + shap_df['chrom'] = chrom_col.values + shap_df['start'] = start_col.values + shap_df['end'] = end_col.values + shap_df['sv_type_str'] = sv_type_str_col.values + # shap_df['sv_length'] = sv_length_col.values + shap_df['sv_length'] = feature_df['sv_length'].values # Use the original sv_length from feature_df + shap_df['read_depth'] = read_depth_col.values + shap_df['cluster_size'] = cluster_size_col.values + + shap_df['predicted_probability'] = y_pred[:, 1] + shap_df['predicted_class'] = (y_pred[:, 1] >= prob_threshold).astype(int) + # for col in shap_df.columns: + # if col not in ['id', 'chrom', 'predicted_probability', 'predicted_class']: + # shap_df[col] = shap_df[col].astype(float) + shap_df = shap_df[shap_df['id'].isin(filtered_ids)] + logging.info('Filtered SHAP values DataFrame:\n%s', shap_df.head()) + logging.info('Number of filtered variants: %d', len(shap_df)) + + # Save the SHAP values to a CSV file + logging.info('Saving the filtered variant SHAP values to a CSV file...') + + # Move the CHROM, START, END, SVTYPE, SVLEN, READ_DEPTH, CLUSTER_SIZE, PREDICTED_PROBABILITY, PREDICTED_CLASS columns to the front + shap_df = shap_df[['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', + 'predicted_probability', 'predicted_class'] + + [col for col in shap_df.columns if col not in ['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', 'predicted_probability', 'predicted_class']]] + # shap_df = shap_df[['chrom', 'id', 'predicted_probability', 'predicted_class'] + [col for col in shap_df.columns if col not in ['chrom', 'id', 'predicted_probability', 'predicted_class']]] + + shap_csv_file = os.path.join(output_dir, 'filtered_variants.csv') + shap_df.to_csv(shap_csv_file, index=False) + logging.info('Saved the filtered variant SHAP values to %s', shap_csv_file) + # Filter the input VCF file based on the filtered indices logging.info('Filtering the input VCF file based on the filtered indices...') filtered_records = set(filtered_ids) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index f75429d..ca81f04 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -230,24 +230,50 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # sys.exit(0) # Combine the true positive and false positive data. - data = pd.concat([tp_data, fp_data]) + data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. + + # Add interaction terms to the data. + data = add_interaction_terms(data) # Drop the chromosome column from the data. - data.drop(columns=['chrom'], inplace=True) + # data.drop(columns=['chrom'], inplace=True) + + # Drop the chrom, start, end, sv_length, read_depth, and cluster_size + # columns + # logging.info('Dropping the chrom, start, end, sv_length, read_depth, and cluster_size columns from the data.') + # data.drop(columns=['chrom', 'start', 'end', 'sv_length', 'read_depth', + # 'cluster_size', 'sv_type_str'], inplace=True) + data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) + + # Drop the SV type column (imbalance especially for inversions). + # logging.info('Dropping the sv_type column from the data.') + # data.drop(columns=['sv_type'], inplace=True) # Normalize cluster_size and read_depth # data = normalize_column(data, 'cluster_size') # data = normalize_column(data, 'read_depth') - # Add interaction terms to the data. - data = add_interaction_terms(data) + # Drop cluster_size + # data.drop(columns=['cluster_size'], inplace=True) + + # # Drop the SV length column + # data.drop(columns=['sv_length'], inplace=True) - # Drop the SV length column - data.drop(columns=['sv_length'], inplace=True) + # Drop the read_depth and cluster_size columns + data.drop(columns=['read_depth', 'cluster_size'], inplace=True) + + # Drop the hmm log likelihood column + # data.drop(columns=['hmm_llh'], inplace=True) # Drop the SV length and aln_type columns. # data.drop(columns=['sv_length', 'aln_type'], inplace=True) + logging.info('Columns list after preprocessing: %s', data.columns.tolist()) + + # Print duplicate columns if any. + duplicate_columns = data.columns[data.columns.duplicated()].tolist() + logging.info('Duplicate columns found: %s', duplicate_columns) + # Get the features and labels. features = data.drop(columns=['label']) labels = data["label"] @@ -269,6 +295,23 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) logging.info('Data split completed. Training set size: %d, Testing set size: %d', X_train.shape[0], X_test.shape[0]) + + # Compute sample weights based on SV length. + # svlen_weights = np.log1p(np.abs(X_train['sv_length'])) + # svlen_weights = np.log1p(np.abs(X_train['sv_length'])) ** 2 # Square the + # weights to emphasize larger SV lengths. + conf = np.clip(np.exp(X_train['hmm_llh'] / 1000), 1e-6, 1) + # Replace NaN values in conf with 1.0 + conf = conf.fillna(1.0) + svlen = np.log1p(np.abs(X_train['sv_length']) + 1e-6) # Add a small value to avoid log(0) + svlen_weights = conf * svlen + + # Split the data into 1/2 >10kb abs(sv_length) and 1/2 <10kb abs(sv_length), + # then train the model with 80% of the data and test with 20% of the data. + # logging.info('Splitting the data by size of SVs (1/2 >10kb abs(sv_length) and 1/2 <10kb abs(sv_length)).') + # large_sv_mask = features['sv_length'].abs() > 10000 + # small_sv_mask = features['sv_length'].abs() <= 10000 + # # Drop the chromosome column from the features. # X_train.drop(columns=['chrom'], inplace=True) @@ -336,6 +379,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Training the %s model.', model_name) # model.fit(features, labels) model.fit(X_train, y_train) + # model.fit(X_train, y_train, sample_weight=svlen_weights) # Get predicted probabilities for the training and testing sets. y_train_prob = model.predict_proba(X_train)[:, 1] @@ -548,27 +592,27 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # sys.exit(0) # Convert bool columns to int for SHAP analysis. - bool_cols = X_train.select_dtypes(include=['bool']).columns - X_train[bool_cols] = X_train[bool_cols].astype(int) + # bool_cols = X_train.select_dtypes(include=['bool']).columns + # X_train[bool_cols] = X_train[bool_cols].astype(int) # Figure out which column has dtype object in X_train. - print("X_train dtypes:") - print(X_train.dtypes) - print("X_train columns:") - print(X_train.columns) + # print("X_train dtypes:") + # print(X_train.dtypes) + # print("X_train columns:") + # print(X_train.columns) # Analyze the feature importances using SHAP values. - import shap - explainer = shap.Explainer(model, X_train) - shap_values = explainer(X_train) - # Plot the SHAP values. - plt.figure(figsize=(10, 6)) - shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) - # Save the SHAP summary plot to the output directory. - shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') - plt.savefig(shap_plot_path, bbox_inches='tight') - plt.close() - logging.info('Saved the SHAP summary plot to %s', shap_plot_path) + # import shap + # explainer = shap.Explainer(model, X_train) + # shap_values = explainer(X_train) + # # Plot the SHAP values. + # plt.figure(figsize=(10, 6)) + # shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) + # # Save the SHAP summary plot to the output directory. + # shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + # plt.savefig(shap_plot_path, bbox_inches='tight') + # plt.close() + # logging.info('Saved the SHAP summary plot to %s', shap_plot_path) # ----------------------------------------------- # SV Length vs SHAP values From d9715e37fd0a4e0abaeefa9ea51e9e63c3c26bc7 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 12 Jul 2025 20:57:19 -0400 Subject: [PATCH 36/93] feature updates --- contextscore/extract_features.py | 25 +++- contextscore/predict.py | 4 +- contextscore/train_full_model.py | 207 ++++++++++++++++--------------- 3 files changed, 131 insertions(+), 105 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 9bf185f..361f623 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -88,8 +88,11 @@ def add_interaction_terms(df): # Cap hmm log likelihood to avoid extreme values. df['hmm_llh'] = np.clip(df['hmm_llh'], -1e6, 0) + # Print the number of NaN values in the hmm_llh column. + logging.info("Number of NaN values in hmm_llh column: %d", df['hmm_llh'].isna().sum()) + # Boolean for whether the SV is an inversion (INV). - df['is_inv'] = df['sv_type'].apply(lambda x: 1 if x == 2 else 0) # Assuming 2 is INV + # df['is_inv'] = df['sv_type'].apply(lambda x: 1 if x == 2 else 0) # Assuming 2 is INV # SV length interaction terms # df['svlenkb_cs'] = np.abs(df['sv_length']) / 1000 * df['cluster_size'] @@ -106,9 +109,12 @@ def add_interaction_terms(df): # Segdup * HMM llh interaction term # df['segdup_hmm'] = df['segdup'] * df['hmm_llh'] - # Segdup * cs/rd interaction terms + # Segdup * cs/rd interaction term df['segdup_cs_rd'] = df['segdup'] * df['cs_rd'] + # Simple repeat * cs/rd interaction terfm + # df['simple_repeat_cs_rd'] = df['simpleRepeat'] * df['cs_rd'] + # Segdup * sv_length interaction term # df['segdup_svlen'] = df['segdup'] * np.abs(df['sv_length']) @@ -117,6 +123,12 @@ def add_interaction_terms(df): # Drop the segdup column df.drop(columns=['segdup'], inplace=True) + + # Drop the simple_repeat column + # df.drop(columns=['simpleRepeat'], inplace=True) + + # Drop sv_type + df.drop(columns=['sv_type'], inplace=True) # --- # Cluster size per kb @@ -314,7 +326,14 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= bed_df['sv_type_str'] = bed_df['sv_type'].astype(str) # Map the SV types to numbers. - bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map) + bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map).astype('category') + + # Create a one-hot encoding for the SV types by creating a new column for each type. + # for sv_type in sv_type_map.keys(): + # bed_df[sv_type] = bed_df['sv_type'].apply(lambda x: 1 if x == sv_type else 0) + + # Drop the original sv_type column. + # bed_df.drop(columns=['sv_type'], inplace=True) # Print the number of NaN values logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) diff --git a/contextscore/predict.py b/contextscore/predict.py index a0294be..9d19a4b 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -259,10 +259,10 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # prob_threshold = 0.05 # Engineering feature interaction terms - # prob_threshold = 0.01 # Too high SV counts + prob_threshold = 0.01 # prob_threshold = 0.1 # prob_threshold = 0.3 # Lowered recall - prob_threshold = 0.2 + # prob_threshold = 0.2 # prob_threshold = 0.02 # Too many SVs # prob_threshold = 0.01 diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index ca81f04..28c2acd 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -286,7 +286,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t models = { "Logistic Regression": LogisticRegression(), "Random_Forest": RandomForestClassifier(n_estimators=100, random_state=42), - "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss'), + "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss', enable_categorical=True), "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } @@ -300,11 +300,32 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # svlen_weights = np.log1p(np.abs(X_train['sv_length'])) # svlen_weights = np.log1p(np.abs(X_train['sv_length'])) ** 2 # Square the # weights to emphasize larger SV lengths. - conf = np.clip(np.exp(X_train['hmm_llh'] / 1000), 1e-6, 1) - # Replace NaN values in conf with 1.0 - conf = conf.fillna(1.0) - svlen = np.log1p(np.abs(X_train['sv_length']) + 1e-6) # Add a small value to avoid log(0) - svlen_weights = conf * svlen + # conf = np.clip(np.exp(X_train['hmm_llh'] / 1000), 1e-6, 1) + # # Replace NaN values in conf with 1.0 + # conf = conf.fillna(1.0) + # svlen = np.log1p(np.abs(X_train['sv_length']) + 1e-6) # Add a small value to avoid log(0) + # svlen_weights = conf * svlen + + # sv_type_map = { + # 'DEL': 0, + # 'DUP': 1, + # 'INV': 2, + # 'INS': 3, + # 'BND': 4, + # 'UNKNOWN': 5 + # } + # Weights based on the SV type (weight inversions more heavily since they are + # less common in the dataset). + sv_type_weights = { + 0: 1.0, # DEL + 1: 1.0, # DUP + 2: 5.0, # INV + 3: 1.0, # INS + 4: 1.0, # BND + 5: 1.0 # UNKNOWN + } + # Create a sample weight array based on the SV type. + # sample_weights = np.array([sv_type_weights.get(sv_type, 1.0) for sv_type in X_train['sv_type']]) # Split the data into 1/2 >10kb abs(sv_length) and 1/2 <10kb abs(sv_length), # then train the model with 80% of the data and test with 20% of the data. @@ -324,12 +345,17 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # logging.info('Feature names: %s', feature_names) for model_name, model in models.items(): + model_name_fp = model_name.replace(" ", "_") - # Skip SVC + # Skip SVC and logistic regression for now. if model_name == "SVC": logging.info('Skipping SVC model.') continue + # if model_name == "Logistic Regression": + # logging.info('Skipping Logistic Regression model.') + # continue + # Skip all but XGBoost if model_name != "XGBoost": logging.info('Skipping %s model.', model_name) @@ -379,7 +405,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Training the %s model.', model_name) # model.fit(features, labels) model.fit(X_train, y_train) - # model.fit(X_train, y_train, sample_weight=svlen_weights) + # model.fit(X_train, y_train, sample_weight=sample_weights) # Get predicted probabilities for the training and testing sets. y_train_prob = model.predict_proba(X_train)[:, 1] @@ -394,107 +420,88 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t roc_auc_test = auc(fpr_test, tpr_test) # Use Youden's J statistic to find the optimal threshold. - j_scores = tpr_test - fpr_test - optimal_idx = np.argmax(j_scores) - optimal_threshold = thresholds[optimal_idx] - logging.info('Optimal threshold (Youden\'s J statistic): %f', optimal_threshold) - logging.info('True positive rate (sensitivity): %f', tpr_test[optimal_idx]) - logging.info('False positive rate (1 - specificity): %f', fpr_test[optimal_idx]) + # j_scores = tpr_test - fpr_test + # optimal_idx = np.argmax(j_scores) + # optimal_threshold = thresholds[optimal_idx] + # logging.info('Optimal threshold (Youden\'s J statistic): %f', optimal_threshold) + # logging.info('True positive rate (sensitivity): %f', tpr_test[optimal_idx]) + # logging.info('False positive rate (1 - specificity): %f', fpr_test[optimal_idx]) # Print the ROC AUC scores. logging.info('ROC AUC score for the training set: %f', roc_auc_train) logging.info('ROC AUC score for the testing set: %f', roc_auc_test) - # Plot the ROC curve for the training set. - plt.figure() - plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) - # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name)) - plt.legend(loc='lower right') - # Save the plot to the output directory. - model_name_fp = model_name.replace(" ", "_") - roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) - - # Plot the ROC curve for the testing set. - plt.figure() - plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_test) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_fp)) - plt.legend(loc='lower right') - # Save the plot to the output directory. - roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) + # # Plot the ROC curve for the training set. + # plt.figure() + # plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) + # # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + # plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + # plt.xlim([0.0, 1.0]) + # plt.ylim([0.0, 1.05]) + # plt.xlabel('False Positive Rate') + # plt.ylabel('True Positive Rate') + # plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name)) + # plt.legend(loc='lower right') + # # Save the plot to the output directory. + # roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') + # plt.savefig(roc_plot_path) + # plt.close() + # logging.info('Saved the ROC curve to %s', roc_plot_path) - # Compute precision-recall curve - precision, recall, thresholds_pr = precision_recall_curve(y_test, y_test_prob) - - logging.info('precision size: %d', len(precision)) - logging.info('recall size: %d', len(recall)) - logging.info('thresholds size: %d', len(thresholds_pr)) - - # Plot Recall vs Thresholds - plt.figure() - plt.plot(thresholds_pr, recall[1:], color='blue', lw=2, label='Recall') - plt.xlabel('Threshold') - plt.ylabel('Recall') - plt.title('%s Recall vs Thresholds' % model_name) + # # Plot the ROC curve for the testing set. + # plt.figure() + # plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_test) + # plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + # plt.xlim([0.0, 1.0]) + # plt.ylim([0.0, 1.05]) + # plt.xlabel('False Positive Rate') + # plt.ylabel('True Positive Rate') + # plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_fp)) # plt.legend(loc='lower right') + # # Save the plot to the output directory. + # roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') + # plt.savefig(roc_plot_path) + # plt.close() + # logging.info('Saved the ROC curve to %s', roc_plot_path) - # Remove the legend - plt.legend().remove() + # Compute precision-recall curve + # precision, recall, thresholds_pr = precision_recall_curve(y_test, y_test_prob) - # Save the plot to the output directory. - recall_plot_path = os.path.join(output_directory, model_name_fp + '_recall_vs_thresholds.png') - plt.savefig(recall_plot_path) - plt.close() - logging.info('Saved the Recall vs Thresholds plot to %s', recall_plot_path) - - # Plot Precision vs Thresholds - plt.figure() - plt.plot(thresholds_pr, precision[1:], color='blue', lw=2, label='Precision') - plt.xlabel('Threshold') - plt.ylabel('Precision') - plt.title('%s Precision vs Thresholds' % model_name) - # plt.legend(loc='lower right') - # Remove the legend - plt.legend().remove() - # Save the plot to the output directory. - precision_plot_path = os.path.join(output_directory, model_name_fp + '_precision_vs_thresholds.png') - plt.savefig(precision_plot_path) - plt.close() - logging.info('Saved the Precision vs Thresholds plot to %s', precision_plot_path) - - # # Find the threshold that gives the highest precision (ideally with - # # recall > 0) or where precision == 1.0 (0 false positives). - # precision_1_indices = np.where(precision[:-1] == 1.0)[0] - # if len(precision_1_indices) > 0: - # # If there are indices where precision == 1.0, use the one with the - # # highest recall. - # optimal_index = precision_1_indices[np.argmax(recall[precision_1_indices])] - # optimal_threshold_pr = thresholds_pr[optimal_index] - # logging.info('Optimal threshold (highest precision = 1.0): %f with recall %f', - # optimal_threshold_pr, recall[optimal_index]) - # else: - # # If no indices where precision == 1.0, use the one with the highest - # # precision. - # optimal_index = np.argmax(precision[:-1]) - # optimal_threshold_pr = thresholds_pr[optimal_index] - # logging.info('Optimal threshold (highest precision = %f): %f with recall %f', - # optimal_threshold_pr, precision[optimal_index], recall[optimal_index]) + # logging.info('precision size: %d', len(precision)) + # logging.info('recall size: %d', len(recall)) + # logging.info('thresholds size: %d', len(thresholds_pr)) + + # # Plot Recall vs Thresholds + # plt.figure() + # plt.plot(thresholds_pr, recall[1:], color='blue', lw=2, label='Recall') + # plt.xlabel('Threshold') + # plt.ylabel('Recall') + # plt.title('%s Recall vs Thresholds' % model_name) + # # plt.legend(loc='lower right') + + # # Remove the legend + # plt.legend().remove() + + # # Save the plot to the output directory. + # recall_plot_path = os.path.join(output_directory, model_name_fp + '_recall_vs_thresholds.png') + # plt.savefig(recall_plot_path) + # plt.close() + # logging.info('Saved the Recall vs Thresholds plot to %s', recall_plot_path) + + # # Plot Precision vs Thresholds + # plt.figure() + # plt.plot(thresholds_pr, precision[1:], color='blue', lw=2, label='Precision') + # plt.xlabel('Threshold') + # plt.ylabel('Precision') + # plt.title('%s Precision vs Thresholds' % model_name) + # # plt.legend(loc='lower right') + # # Remove the legend + # plt.legend().remove() + # # Save the plot to the output directory. + # precision_plot_path = os.path.join(output_directory, model_name_fp + '_precision_vs_thresholds.png') + # plt.savefig(precision_plot_path) + # plt.close() + # logging.info('Saved the Precision vs Thresholds plot to %s', precision_plot_path) # Get the feature names. feature_names = features.columns.tolist() From 257ed57f36d1ff1334a24041fbbab5fdbf1c80df Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 13 Jul 2025 20:25:31 -0400 Subject: [PATCH 37/93] update features --- contextscore/extract_features.py | 43 ++++++++++++++++++++++++++++---- contextscore/predict.py | 22 ++++++++++------ 2 files changed, 52 insertions(+), 13 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 361f623..519ccb2 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -64,6 +64,11 @@ def normalize_column(df, column): def add_interaction_terms(df): """Add interaction terms to the dataframe.""" + + # Replace cluster_size with log transformed values to reduce the range. + df['log_cs'] = np.log1p(np.abs(df['cluster_size'])) + + df['log_rd'] = np.log1p(np.abs(df['read_depth'])) # Log-transform the sv_length column to reduce the range. # df['log_svlen'] = np.log1p(np.abs(df['sv_length'])) @@ -79,14 +84,15 @@ def add_interaction_terms(df): # df['is_cnv_hmm'] = df['is_cnv_hmm'] & (df['hmm_llh'] != 0) # Update hmm_llh, set 0 to np.nan - df['hmm_llh_missing'] = (df['hmm_llh'] == 0).astype(int) + # df['hmm_llh_missing'] = (df['hmm_llh'] == 0).astype(int) df['hmm_llh'] = df['hmm_llh'].replace(0, np.nan) # Replace hmm_llh with likelihood # df['hmm_llh'] = np.clip(np.exp(df['hmm_llh']), 1e-6, 0.999999) # Cap hmm log likelihood to avoid extreme values. - df['hmm_llh'] = np.clip(df['hmm_llh'], -1e6, 0) + # df['hmm_llh'] = np.clip(df['hmm_llh'], -1e6, 0) + df['hmm_llh'] = np.clip(df['hmm_llh'], -50, 0) # Print the number of NaN values in the hmm_llh column. logging.info("Number of NaN values in hmm_llh column: %d", df['hmm_llh'].isna().sum()) @@ -104,13 +110,13 @@ def add_interaction_terms(df): # df['hmm_llh_per_kb'] = df['hmm_llh_scaled'] / (np.abs(df['sv_length']) / 1000 + 1e-6) # Cluster size / read depth interaction terms - df['cs_rd'] = df['cluster_size'] / (df['read_depth'] + 1e-6) + # df['cs_rd'] = df['cluster_size'] / (df['read_depth'] + 1e-6) # Segdup * HMM llh interaction term # df['segdup_hmm'] = df['segdup'] * df['hmm_llh'] # Segdup * cs/rd interaction term - df['segdup_cs_rd'] = df['segdup'] * df['cs_rd'] + # df['segdup_cs_rd'] = df['segdup'] * df['cs_rd'] # Simple repeat * cs/rd interaction terfm # df['simple_repeat_cs_rd'] = df['simpleRepeat'] * df['cs_rd'] @@ -121,14 +127,41 @@ def add_interaction_terms(df): # Replace nans in segdup_hmm with 0 # df['segdup_hmm'] = df['segdup_hmm'].fillna(0) + # Segdup * cs + df['segdup_cs'] = df['segdup'] * df['log_cs'] + + # Segdup * rd + df['segdup_rd'] = df['segdup'] * df['log_rd'] + + # Simple repeat * cs + df['simple_repeat_cs'] = df['simpleRepeat'] * df['log_cs'] + + # Simple repeat * rd + df['simple_repeat_rd'] = df['simpleRepeat'] * df['log_rd'] + + # Fragile site * cs + df['fragile_site_cs'] = df['fragile_site'] * df['log_cs'] + + # Fragile site * rd + df['fragile_site_rd'] = df['fragile_site'] * df['log_rd'] + # Drop the segdup column df.drop(columns=['segdup'], inplace=True) + # Drop the simple_repeat column + df.drop(columns=['simpleRepeat'], inplace=True) + + # Drop the fragile_site column + df.drop(columns=['fragile_site'], inplace=True) + + # Drop cluster_size + # df.drop(columns=['cluster_size'], inplace=True) + # Drop the simple_repeat column # df.drop(columns=['simpleRepeat'], inplace=True) # Drop sv_type - df.drop(columns=['sv_type'], inplace=True) + # df.drop(columns=['sv_type'], inplace=True) # --- # Cluster size per kb diff --git a/contextscore/predict.py b/contextscore/predict.py index 9d19a4b..10ed3ca 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -299,9 +299,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Creating a CSV file with the filtered variants...') import shap - explainer = shap.TreeExplainer(clf) - shap_values = explainer.shap_values(feature_df) - shap_df = pd.DataFrame(shap_values, columns=feature_df.columns) + shap_df = pd.DataFrame() shap_df['id'] = id_col.values shap_df['chrom'] = chrom_col.values shap_df['start'] = start_col.values @@ -311,9 +309,17 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist shap_df['sv_length'] = feature_df['sv_length'].values # Use the original sv_length from feature_df shap_df['read_depth'] = read_depth_col.values shap_df['cluster_size'] = cluster_size_col.values - shap_df['predicted_probability'] = y_pred[:, 1] shap_df['predicted_class'] = (y_pred[:, 1] >= prob_threshold).astype(int) + + # Calculate SHAP values + explainer = shap.TreeExplainer(clf) + shap_values = explainer.shap_values(feature_df) + shap_df_shap = pd.DataFrame(shap_values, columns=feature_df.columns) + + # Combine the SHAP values with the filtered variants DataFrame + shap_df = pd.concat([shap_df, shap_df_shap], axis=1) + # for col in shap_df.columns: # if col not in ['id', 'chrom', 'predicted_probability', 'predicted_class']: # shap_df[col] = shap_df[col].astype(float) @@ -325,10 +331,10 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Saving the filtered variant SHAP values to a CSV file...') # Move the CHROM, START, END, SVTYPE, SVLEN, READ_DEPTH, CLUSTER_SIZE, PREDICTED_PROBABILITY, PREDICTED_CLASS columns to the front - shap_df = shap_df[['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', - 'predicted_probability', 'predicted_class'] + - [col for col in shap_df.columns if col not in ['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', 'predicted_probability', 'predicted_class']]] - # shap_df = shap_df[['chrom', 'id', 'predicted_probability', 'predicted_class'] + [col for col in shap_df.columns if col not in ['chrom', 'id', 'predicted_probability', 'predicted_class']]] + # shap_df = shap_df[['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', + # 'predicted_probability', 'predicted_class'] + + # [col for col in shap_df.columns if col not in ['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', 'predicted_probability', 'predicted_class']]] + # # shap_df = shap_df[['chrom', 'id', 'predicted_probability', 'predicted_class'] + [col for col in shap_df.columns if col not in ['chrom', 'id', 'predicted_probability', 'predicted_class']]] shap_csv_file = os.path.join(output_dir, 'filtered_variants.csv') shap_df.to_csv(shap_csv_file, index=False) From 1b0c25ae052d3821680c8457b7a8f0597e918d8e Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 14 Jul 2025 12:04:41 -0400 Subject: [PATCH 38/93] scale read depth and cluster size --- contextscore/extract_features.py | 48 +++++++------ contextscore/predict.py | 18 ++++- contextscore/train_full_model.py | 117 +++++++++---------------------- 3 files changed, 73 insertions(+), 110 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 519ccb2..6f07874 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -66,9 +66,9 @@ def add_interaction_terms(df): """Add interaction terms to the dataframe.""" # Replace cluster_size with log transformed values to reduce the range. - df['log_cs'] = np.log1p(np.abs(df['cluster_size'])) + # df['log_cs'] = np.log1p(np.abs(df['cluster_size'])) - df['log_rd'] = np.log1p(np.abs(df['read_depth'])) + # df['log_rd'] = np.log1p(np.abs(df['read_depth'])) # Log-transform the sv_length column to reduce the range. # df['log_svlen'] = np.log1p(np.abs(df['sv_length'])) @@ -83,19 +83,12 @@ def add_interaction_terms(df): # df['is_cnv_hmm'] = df['sv_type'].apply(lambda x: 1 if x in [0, 1] else 0) # Assuming 0 is DEL and 1 is DUP # df['is_cnv_hmm'] = df['is_cnv_hmm'] & (df['hmm_llh'] != 0) - # Update hmm_llh, set 0 to np.nan - # df['hmm_llh_missing'] = (df['hmm_llh'] == 0).astype(int) - df['hmm_llh'] = df['hmm_llh'].replace(0, np.nan) + # Cluster size * hmm_llh interaction term + df['cs_hmm'] = df['cluster_size'] * df['hmm_llh'] # Replace hmm_llh with likelihood # df['hmm_llh'] = np.clip(np.exp(df['hmm_llh']), 1e-6, 0.999999) - # Cap hmm log likelihood to avoid extreme values. - # df['hmm_llh'] = np.clip(df['hmm_llh'], -1e6, 0) - df['hmm_llh'] = np.clip(df['hmm_llh'], -50, 0) - - # Print the number of NaN values in the hmm_llh column. - logging.info("Number of NaN values in hmm_llh column: %d", df['hmm_llh'].isna().sum()) # Boolean for whether the SV is an inversion (INV). # df['is_inv'] = df['sv_type'].apply(lambda x: 1 if x == 2 else 0) # Assuming 2 is INV @@ -128,31 +121,31 @@ def add_interaction_terms(df): # df['segdup_hmm'] = df['segdup_hmm'].fillna(0) # Segdup * cs - df['segdup_cs'] = df['segdup'] * df['log_cs'] + df['segdup_cs'] = df['segdup'] * df['cluster_size'] # Segdup * rd - df['segdup_rd'] = df['segdup'] * df['log_rd'] + df['segdup_rd'] = df['segdup'] * df['read_depth'] # Simple repeat * cs - df['simple_repeat_cs'] = df['simpleRepeat'] * df['log_cs'] + df['simple_repeat_cs'] = df['simpleRepeat'] * df['cluster_size'] # Simple repeat * rd - df['simple_repeat_rd'] = df['simpleRepeat'] * df['log_rd'] + df['simple_repeat_rd'] = df['simpleRepeat'] * df['read_depth'] # Fragile site * cs - df['fragile_site_cs'] = df['fragile_site'] * df['log_cs'] + df['fragile_site_cs'] = df['fragile_site'] * df['cluster_size'] # Fragile site * rd - df['fragile_site_rd'] = df['fragile_site'] * df['log_rd'] + df['fragile_site_rd'] = df['fragile_site'] * df['read_depth'] # Drop the segdup column - df.drop(columns=['segdup'], inplace=True) + # df.drop(columns=['segdup'], inplace=True) - # Drop the simple_repeat column - df.drop(columns=['simpleRepeat'], inplace=True) + # # Drop the simple_repeat column + # df.drop(columns=['simpleRepeat'], inplace=True) - # Drop the fragile_site column - df.drop(columns=['fragile_site'], inplace=True) + # # Drop the fragile_site column + # df.drop(columns=['fragile_site'], inplace=True) # Drop cluster_size # df.drop(columns=['cluster_size'], inplace=True) @@ -305,7 +298,9 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Create alignment type feature, 0 for CIGAR alignment types (contains # CIGAR), 1 for CIGARCLIP (contains CIGARCLIP), 2 for SPLIT alignment (all # others) - # bed_df['call_type'] = bed_df['aln_type'].apply(lambda x: 1 if 'CIGARCLIP' in x else (0 if 'CIGAR' in x else 2)) + bed_df['call_type'] = bed_df['aln_type'].apply(lambda x: 1 if 'CIGARCLIP' in x else (0 if 'CIGAR' in x else 2)) + # Change call type to categorical. + bed_df['call_type'] = bed_df['call_type'].astype('category') # Drop the original aln_type column. bed_df.drop(columns=['aln_type'], inplace=True) @@ -542,6 +537,13 @@ def run_bedtools_intersect(input_bed, table_bed, training_format=False): sys.exit(1) + # Post-processing the features: + # Cap hmm log likelihood to avoid extreme values. + df['hmm_llh'] = np.clip(df['hmm_llh'], -1e6, 0) + + # Update hmm_llh, set 0 to np.nan + df['hmm_llh'] = df['hmm_llh'].replace(0, np.nan) + def bed_to_annovar_input(bed_file): """Convert the BED file to ANNOVAR input format.""" output_file = bed_file.replace('.bed', '.avinput') diff --git a/contextscore/predict.py b/contextscore/predict.py index 10ed3ca..779bba7 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -151,6 +151,13 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir, buildver) logging.info('Extracted features from the BED file:\n%s', feature_df.head()) + # Perform robust scaling on the read_depth and cluster_size columns + logging.info('Performing robust scaling on the read_depth and cluster_size columns...') + from sklearn.preprocessing import RobustScaler + scaler = RobustScaler() + feature_df[['read_depth', 'cluster_size']] = scaler.fit_transform(feature_df[['read_depth', 'cluster_size']]) + logging.info('Robust scaling completed.') + # Add interaction terms to the features feature_df = add_interaction_terms(feature_df) logging.info('Added interaction terms to the features.') @@ -187,8 +194,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist start_col = feature_df.pop('start') end_col = feature_df.pop('end') # sv_length_col = feature_df.pop('sv_length') - read_depth_col = feature_df.pop('read_depth') - cluster_size_col = feature_df.pop('cluster_size') + read_depth_col = feature_df['read_depth'] + cluster_size_col = feature_df['cluster_size'] sv_type_str_col = feature_df.pop('sv_type_str') # # Normalize the cluster_size and read_depth columns using RobustScaler @@ -259,13 +266,18 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # prob_threshold = 0.05 # Engineering feature interaction terms - prob_threshold = 0.01 + # prob_threshold = 0.01 # prob_threshold = 0.1 # prob_threshold = 0.3 # Lowered recall # prob_threshold = 0.2 # prob_threshold = 0.02 # Too many SVs # prob_threshold = 0.01 + # 13 July 2025 - Feature updates + prob_threshold = 0.01 # Too high SV count for plat. ped. + # prob_threshold = 0.1 # Too low recall + # prob_threshold = 0.02 + filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 28c2acd..0f1bc2d 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -111,6 +111,24 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # --------------------------------------------------------------- # Data Preprocessing # --------------------------------------------------------------- + + # Perform robust scaling on the read_depth and cluster_size columns using + # the RobustScaler from sklearn. + logging.info('Normalizing read_depth and cluster_size using Robust scaling.') + # First combine the data. + combined_data = pd.concat([tp_data, fp_data], ignore_index=True) + # Create a RobustScaler object. + from sklearn.preprocessing import RobustScaler + scaler = RobustScaler() + # Fit the scaler to the data. + robust_scaled = scaler.fit_transform(combined_data[['read_depth', 'cluster_size']]) + # Update the data with the scaled values. + combined_data[['read_depth', 'cluster_size']] = robust_scaled + # Split the data back into true positives and false positives. + tp_data = combined_data.iloc[:tp_data.shape[0]] + fp_data = combined_data.iloc[tp_data.shape[0]:] + logging.info('Normalization completed. True positives: %d, False positives: %d', tp_data.shape[0], fp_data.shape[0]) + # Drop the genotype column from the data. logging.info('Dropping the genotype column from the data.') tp_data.drop(columns=['genotype'], inplace=True, errors='ignore') @@ -225,48 +243,17 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # logging.info('Feature correlation difference analysis completed. Saved to %s', # os.path.join(output_directory, 'feature_correlation_difference.png')) - # [TEST] Exit after this step to verify the feature extraction and data - # preprocessing. - # sys.exit(0) - # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. # Add interaction terms to the data. data = add_interaction_terms(data) - # Drop the chromosome column from the data. - # data.drop(columns=['chrom'], inplace=True) - - # Drop the chrom, start, end, sv_length, read_depth, and cluster_size - # columns - # logging.info('Dropping the chrom, start, end, sv_length, read_depth, and cluster_size columns from the data.') - # data.drop(columns=['chrom', 'start', 'end', 'sv_length', 'read_depth', - # 'cluster_size', 'sv_type_str'], inplace=True) + # Drop columns not needed for training. data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) - # Drop the SV type column (imbalance especially for inversions). - # logging.info('Dropping the sv_type column from the data.') - # data.drop(columns=['sv_type'], inplace=True) - - # Normalize cluster_size and read_depth - # data = normalize_column(data, 'cluster_size') - # data = normalize_column(data, 'read_depth') - - # Drop cluster_size - # data.drop(columns=['cluster_size'], inplace=True) - - # # Drop the SV length column - # data.drop(columns=['sv_length'], inplace=True) - # Drop the read_depth and cluster_size columns - data.drop(columns=['read_depth', 'cluster_size'], inplace=True) - - # Drop the hmm log likelihood column - # data.drop(columns=['hmm_llh'], inplace=True) - - # Drop the SV length and aln_type columns. - # data.drop(columns=['sv_length', 'aln_type'], inplace=True) + # data.drop(columns=['read_depth', 'cluster_size'], inplace=True) logging.info('Columns list after preprocessing: %s', data.columns.tolist()) @@ -290,59 +277,21 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } - # Split the data into training and testing sets. - logging.info('Splitting the data into training and testing sets (0.8/0.2).') - X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) - logging.info('Data split completed. Training set size: %d, Testing set size: %d', - X_train.shape[0], X_test.shape[0]) + train_full_data = True # Set to True to train the full model with no split. + if train_full_data: + logging.info('Training the full model with no split.') + X_train, y_train = features, labels - # Compute sample weights based on SV length. - # svlen_weights = np.log1p(np.abs(X_train['sv_length'])) - # svlen_weights = np.log1p(np.abs(X_train['sv_length'])) ** 2 # Square the - # weights to emphasize larger SV lengths. - # conf = np.clip(np.exp(X_train['hmm_llh'] / 1000), 1e-6, 1) - # # Replace NaN values in conf with 1.0 - # conf = conf.fillna(1.0) - # svlen = np.log1p(np.abs(X_train['sv_length']) + 1e-6) # Add a small value to avoid log(0) - # svlen_weights = conf * svlen - - # sv_type_map = { - # 'DEL': 0, - # 'DUP': 1, - # 'INV': 2, - # 'INS': 3, - # 'BND': 4, - # 'UNKNOWN': 5 - # } - # Weights based on the SV type (weight inversions more heavily since they are - # less common in the dataset). - sv_type_weights = { - 0: 1.0, # DEL - 1: 1.0, # DUP - 2: 5.0, # INV - 3: 1.0, # INS - 4: 1.0, # BND - 5: 1.0 # UNKNOWN - } - # Create a sample weight array based on the SV type. - # sample_weights = np.array([sv_type_weights.get(sv_type, 1.0) for sv_type in X_train['sv_type']]) - - # Split the data into 1/2 >10kb abs(sv_length) and 1/2 <10kb abs(sv_length), - # then train the model with 80% of the data and test with 20% of the data. - # logging.info('Splitting the data by size of SVs (1/2 >10kb abs(sv_length) and 1/2 <10kb abs(sv_length)).') - # large_sv_mask = features['sv_length'].abs() > 10000 - # small_sv_mask = features['sv_length'].abs() <= 10000 - + # Use a dummy test set for evaluation. + X_test = features.sample(n=1000, random_state=42) # Sample 1000 instances for testing. + y_test = labels.sample(n=1000, random_state=42) + else: + # Split the data into training and testing sets. + logging.info('Splitting the data into training and testing sets (0.8/0.2).') + X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) + logging.info('Data split completed. Training set size: %d, Testing set size: %d', + X_train.shape[0], X_test.shape[0]) - # # Drop the chromosome column from the features. - # X_train.drop(columns=['chrom'], inplace=True) - # X_test.drop(columns=['chrom'], inplace=True) - - # # Print the number of features. - # logging.info('Number of features: %d', X_train.shape[1]) - # # Print the feature names. - # feature_names = features.columns.tolist() - # logging.info('Feature names: %s', feature_names) for model_name, model in models.items(): model_name_fp = model_name.replace(" ", "_") From 01b327d7f0631d2e04e38a190aa5bc5660c47e54 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Wed, 3 Sep 2025 19:19:09 -0400 Subject: [PATCH 39/93] add threshold parameter and update cross validation plot --- .gitignore | 1 + contextscore/predict.py | 46 +----- contextscore/train_full_model.py | 268 +++++++++++++++++++++---------- 3 files changed, 192 insertions(+), 123 deletions(-) diff --git a/.gitignore b/.gitignore index f7fc91c..5e0922e 100644 --- a/.gitignore +++ b/.gitignore @@ -179,3 +179,4 @@ scripts/ # Testing scripts linktoscripts +truvari_results_Simulated_*/ \ No newline at end of file diff --git a/contextscore/predict.py b/contextscore/predict.py index 779bba7..f88b2e1 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -120,7 +120,7 @@ def create_bed(input_vcf, output_bed): bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution'): +def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05): """Score the structural variants using the binary classification model. Args: @@ -128,6 +128,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist input_vcf (str): Path to the input VCF file. output_vcf (str): Path to the output VCF file. """ + prob_threshold = threshold + logging.info('Using probability threshold: %.3f', prob_threshold) # Create a BED file from the input VCF file bed_file = os.path.splitext(input_vcf)[0] + '.bed' @@ -240,43 +242,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) logging.info('Saved the plot of the probabilities to %s', os.path.join(output_dir, 'probabilities_seaborn.png')) - # Determine the threshold for filtering - # 22 May 2025 - # prob_threshold = 0.001 # Does not affect results much - # prob_threshold = 0.2 # Lowered recall (too high) - # prob_threshold = 0.1 # Lowered recall (too high) - # prob_threshold = 0.01 # Slightly lowered recall (too high) - # prob_threshold = 0.005 # Even slightlier lowered recall (too high) - # prob_threshold = 0.001 - - # 10 July 2025 - Feature updates for large SVs - # prob_threshold = 0.01 # Low precision, high recall (same recall as no filtering) - # prob_threshold = 0.05 # Same result, improved precision - # prob_threshold = 0.1 # Same result, improved precision - #prob_threshold = 0.2 # Same result, improved precision - # prob_threshold = 0.25 - # prob_threshold = 0.3 # Slightly lowered recall, improved precision - # prob_threshold = 0.4 # Lowered recall, inversions are not highest recall anymore, but achieved overal highest F1 score - # prob_threshold = 0.35 # Lowered recall, inversions are not highest recall - # anymore, F1 is equal to Sniffles2 - # prob_threshold = 0.32 - - # 11 July 2025 - Feature updates for large SVs - # prob_threshold = 0.1 # Lowered recall - # prob_threshold = 0.05 - - # Engineering feature interaction terms # prob_threshold = 0.01 - # prob_threshold = 0.1 - # prob_threshold = 0.3 # Lowered recall - # prob_threshold = 0.2 - # prob_threshold = 0.02 # Too many SVs - # prob_threshold = 0.01 - - # 13 July 2025 - Feature updates - prob_threshold = 0.01 # Too high SV count for plat. ped. - # prob_threshold = 0.1 # Too low recall - # prob_threshold = 0.02 filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] @@ -397,7 +363,9 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist help='Genome build version (default: hg38).') parser.add_argument('--title', type=str, default='Probability Distribution', help='Title for the probability distribution plot (default: Probability Distribution).') - + parser.add_argument('--threshold', type=float, default=0.05, + help='Threshold for filtering predictions (default: 0.05).') + args = parser.parse_args() input_vcf = args.input output_vcf = args.output @@ -445,5 +413,5 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist sys.exit(1) # Run the scoring function - score(model, input_vcf, output_vcf, buildver=buildver, title=args.title) + score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, threshold=args.threshold) logging.info('Scoring process completed.') diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 0f1bc2d..1884f56 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -250,7 +250,13 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t data = add_interaction_terms(data) # Drop columns not needed for training. - data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) + # data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) + + # Pop the chrom column to use it later for cross-validation. + chrom_col = data.pop('chrom') + + # Drop columns that are not needed for training. + data.drop(columns=['start', 'end', 'sv_type_str'], inplace=True, errors='ignore') # Drop the read_depth and cluster_size columns # data.drop(columns=['read_depth', 'cluster_size'], inplace=True) @@ -277,7 +283,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) } - train_full_data = True # Set to True to train the full model with no split. + train_full_data = False # Set to True to train the full model with no split. if train_full_data: logging.info('Training the full model with no split.') X_train, y_train = features, labels @@ -297,18 +303,18 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t model_name_fp = model_name.replace(" ", "_") # Skip SVC and logistic regression for now. - if model_name == "SVC": - logging.info('Skipping SVC model.') - continue + # if model_name == "SVC": + # logging.info('Skipping SVC model.') + # continue # if model_name == "Logistic Regression": # logging.info('Skipping Logistic Regression model.') # continue - # Skip all but XGBoost - if model_name != "XGBoost": - logging.info('Skipping %s model.', model_name) - continue + # # Skip all but XGBoost + # if model_name != "XGBoost": + # logging.info('Skipping %s model.', model_name) + # continue # # Split the data into training and testing sets. # logging.info('Splitting the data into training and testing sets (0.8/0.2).') @@ -380,38 +386,38 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('ROC AUC score for the training set: %f', roc_auc_train) logging.info('ROC AUC score for the testing set: %f', roc_auc_test) - # # Plot the ROC curve for the training set. - # plt.figure() - # plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) - # # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) - # plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - # plt.xlim([0.0, 1.0]) - # plt.ylim([0.0, 1.05]) - # plt.xlabel('False Positive Rate') - # plt.ylabel('True Positive Rate') - # plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name)) - # plt.legend(loc='lower right') - # # Save the plot to the output directory. - # roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') - # plt.savefig(roc_plot_path) - # plt.close() - # logging.info('Saved the ROC curve to %s', roc_plot_path) - - # # Plot the ROC curve for the testing set. - # plt.figure() - # plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_test) - # plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - # plt.xlim([0.0, 1.0]) - # plt.ylim([0.0, 1.05]) - # plt.xlabel('False Positive Rate') - # plt.ylabel('True Positive Rate') - # plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_fp)) - # plt.legend(loc='lower right') - # # Save the plot to the output directory. - # roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') - # plt.savefig(roc_plot_path) - # plt.close() - # logging.info('Saved the ROC curve to %s', roc_plot_path) + # Plot the ROC curve for the training set. + plt.figure() + plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) + # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name)) + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + + # Plot the ROC curve for the testing set. + plt.figure() + plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_test) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_fp)) + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) # Compute precision-recall curve # precision, recall, thresholds_pr = precision_recall_curve(y_test, y_test_prob) @@ -470,7 +476,15 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t "sv_type": "Structural Variant Type", "fragile_site": "Fragile Site", "centromere": "Centromere", - "telomere": "Telomere" + "telomere": "Telomere", + "call_type": "Alignment Type", + "simple_repeat_cs": "Simple Repeat x Cluster Size", + "simple_repeat_rd": "Simple Repeat x Read Depth", + "cs_hmm": "Cluster Size x HMM LLH", + "fragile_site_cs": "Fragile Site x Cluster Size", + "fragile_site_rd": "Fragile Site x Read Depth", + "segdup_cs": "Seg. Dup. x Cluster Size", + "segdup_rd": "Seg. Dup. x Read Depth" } # Map the feature names to their labels. @@ -479,6 +493,9 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Feature names: %s', feature_names) logging.info('Number of features: %d', len(feature_names)) + # Continue if not running SHAP analysis. + continue + # Feature importance for Random_Forest and XGBoost. if model_name in ["Random_Forest", "XGBoost"]: # Get feature importances. @@ -548,27 +565,27 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # sys.exit(0) # Convert bool columns to int for SHAP analysis. - # bool_cols = X_train.select_dtypes(include=['bool']).columns - # X_train[bool_cols] = X_train[bool_cols].astype(int) - - # Figure out which column has dtype object in X_train. - # print("X_train dtypes:") - # print(X_train.dtypes) - # print("X_train columns:") - # print(X_train.columns) + bool_cols = X_train.select_dtypes(include=['bool']).columns + X_train[bool_cols] = X_train[bool_cols].astype(int) # Analyze the feature importances using SHAP values. - # import shap + import shap # explainer = shap.Explainer(model, X_train) # shap_values = explainer(X_train) - # # Plot the SHAP values. - # plt.figure(figsize=(10, 6)) - # shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) - # # Save the SHAP summary plot to the output directory. - # shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') - # plt.savefig(shap_plot_path, bbox_inches='tight') - # plt.close() - # logging.info('Saved the SHAP summary plot to %s', shap_plot_path) + + # SHAP doesn't support XGBoost with categorical features directly, + # so we need to use their suggested workaround. + explainer = shap.TreeExplainer(model, feature_perturbation="tree_path_dependent") + shap_values = explainer.shap_values(X_train) + + # Plot the SHAP values. + plt.figure(figsize=(10, 6)) + shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) + # Save the SHAP summary plot to the output directory. + shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + plt.savefig(shap_plot_path, bbox_inches='tight') + plt.close() + logging.info('Saved the SHAP summary plot to %s', shap_plot_path) # ----------------------------------------------- # SV Length vs SHAP values @@ -717,7 +734,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # logging.info('Cross-validation scores: %s', scores) # logging.info('Mean cross-validation score: %f', scores.mean()) - # Exit early to test the saved model. + # Exit early if not running per-chromosome cross-validation analysis. sys.exit(0) # Run a cross-validation analysis splitting the data by chromosome. @@ -725,28 +742,44 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # chromosomes = features['chrom'].unique() # Specify the chromosomes to not include non-standard chromosomes. - chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', - 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY'] + # chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', + # 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY'] + # 4 August 2025: Remove chrY from the analysis. More than half is missing in + # GRCh38 and leads to high false positive rates. + chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', + 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX'] + logging.info('Chromosomes: %s', chromosomes) f1_scores = {} + precision_scores = {} + recall_scores = {} for model_name, model in models.items(): # Skip SVC if model_name == "SVC": logging.info('Skipping SVC model for cross-validation analysis.') continue + # Skip all but XGBoost + if model_name != "XGBoost": + logging.info('Skipping %s model for cross-validation analysis.', model_name) + continue + + # Dictionary with number of SVs in the training set for each chromosome. + sv_counts = {chrom: features[chrom_col == chrom].shape[0] for chrom in chromosomes} + logging.info('Number of SVs in the training set for each chromosome: %s', sv_counts) + for chrom in chromosomes: logging.info('Training the %s model on chromosome %s.', model_name, chrom) # Split the data into training and testing sets by chromosome. - X_train_chrom = features[features['chrom'] != chrom].copy() - y_train_chrom = labels[features['chrom'] != chrom].copy() - X_test_chrom = features[features['chrom'] == chrom].copy() - y_test_chrom = labels[features['chrom'] == chrom].copy() + X_train_chrom = features[chrom_col != chrom].copy() + y_train_chrom = labels[chrom_col != chrom].copy() + X_test_chrom = features[chrom_col == chrom].copy() + y_test_chrom = labels[chrom_col == chrom].copy() # Drop the chromosome column from the features. - X_train_chrom.drop(columns=['chrom'], inplace=True) - X_test_chrom.drop(columns=['chrom'], inplace=True) + # X_train_chrom.drop(columns=['chrom'], inplace=True) + # X_test_chrom.drop(columns=['chrom'], inplace=True) logging.info('Training set size: %d, Testing set size: %d', X_train_chrom.shape[0], X_test_chrom.shape[0]) @@ -761,30 +794,97 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Compute the F1 score for the testing set. from sklearn.metrics import f1_score - y_test_chrom_pred = (y_test_chrom_prob >= optimal_threshold).astype(int) + y_test_chrom_pred = (y_test_chrom_prob >= 0.5).astype(int) # Use a threshold of 0.5 for classification. f1 = f1_score(y_test_chrom, y_test_chrom_pred) - # f1_scores.append(f1) f1_scores[(model_name, chrom)] = f1 logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) + + # Compute precision and recall for the testing set. + from sklearn.metrics import precision_score, recall_score + precision = precision_score(y_test_chrom, y_test_chrom_pred) + recall = recall_score(y_test_chrom, y_test_chrom_pred) + precision_scores[(model_name, chrom)] = precision + recall_scores[(model_name, chrom)] = recall + logging.info('Precision for the %s model on chromosome %s: %f', model_name, chrom, precision) + logging.info('Recall for the %s model on chromosome %s: %f', model_name, chrom, recall) + + # Compute the F1 score for the testing set. + # from sklearn.metrics import f1_score + # y_test_chrom_pred = (y_test_chrom_prob >= optimal_threshold).astype(int) + # f1 = f1_score(y_test_chrom, y_test_chrom_pred) + # # f1_scores.append(f1) + # f1_scores[(model_name, chrom)] = f1 + # logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) logging.info('Cross-validation analysis completed. F1 scores: %s', f1_scores) # Plot the F1 scores for each model and chromosome (one plot per model). - logging.info('Plotting the F1 scores for each model and chromosome.') + logging.info('Plotting the scores for each model and chromosome.') + metrics = ['F1 Score', 'Precision', 'Recall'] for model_name in models.keys(): - model_f1_scores = {chrom: f1_scores[(model_name, chrom)] for chrom in chromosomes if (model_name, chrom) in f1_scores} - plt.figure(figsize=(10, 6)) - sns.barplot(x=list(model_f1_scores.keys()), y=list(model_f1_scores.values()), palette='viridis') - plt.xlabel('Chromosome') - plt.ylabel('F1 Score') - plt.title('F1 Scores for %s Model by Chromosome' % model_name) - plt.xticks(rotation=45) - plt.tight_layout() - # Save the plot to the output directory. - f1_plot_path = os.path.join(output_directory, model_name + '_f1_scores_by_chromosome.png') - plt.savefig(f1_plot_path) - plt.close() - logging.info('Saved the F1 scores plot to %s', f1_plot_path) + # Skip if not XGBoost + if model_name != "XGBoost": + logging.info('Skipping %s model for plotting scores by chromosome.', model_name) + continue + + # Save a plot with F1, Precision, and Recall scores for chrY + if 'chrY' in chromosomes: + logging.info('Plotting scores for %s model on chrY.', model_name) + # Create a bar plot for the F1 scores by chromosome. + chry_f1 = f1_scores.get((model_name, 'chrY'), 0) + chry_precision = precision_scores.get((model_name, 'chrY'), 0) + chry_recall = recall_scores.get((model_name, 'chrY'), 0) + + # plt.figure(figsize=(10, 6)) + + # Make it way smaller for better visibility. + plt.figure(figsize=(6, 4)) + + # Plot F1, Precision, and Recall scores for chrY. + sns.barplot(x=['F1 Score', 'Precision', 'Recall'], y=[chry_f1, chry_precision, chry_recall], color='black') + + # plt.xlabel('Metric') + plt.ylabel('Score') + plt.title('%s Scores for %s Model on chrY' % (model_name, model_name)) + plt.xticks(rotation=45) + plt.legend() + plt.tight_layout() + # Save the plot to the output directory. + score_plot_path = os.path.join(output_directory, model_name + '_scores_chrY.png') + plt.savefig(score_plot_path) + plt.close() + logging.info('Saved the scores plot for chrY to %s', score_plot_path) + + + for metric, scores in zip(metrics, [f1_scores, precision_scores, recall_scores]): + logging.info('Plotting %s for %s model by chromosome.', metric, model_name) + # Create a bar plot for the F1 scores by chromosome. + # model_f1_scores = {chrom: f1_scores[(model_name, chrom)] for chrom + # in chromosomes if (model_name, chrom) in f1_scores} + model_scores = {chrom: scores[(model_name, chrom)] for chrom in chromosomes if (model_name, chrom) in scores} + + plt.figure(figsize=(10, 6)) + # Smaller figure size for better visibility. + # plt.figure(figsize=(8, 5)) + ax = sns.barplot(x=list(model_scores.keys()), y=list(model_scores.values()), color='black') + + # Annotate each bar with the number of SVs in the training set for that + # chromosome. + # Put the number of SVs above each bar. + # for i, (chrom, score) in enumerate(model_scores.items()): + # num_sv = sv_counts[chrom] + # ax.text(i, score + 0.01, f'{num_sv}', ha='center', va='bottom', fontsize=8) + + plt.xlabel('Chromosome') + plt.ylabel(metric) + plt.title('%s for %s Model by Chromosome' % (metric, model_name)) + plt.xticks(rotation=45) + plt.tight_layout() + # Save the plot to the output directory. + score_plot_path = os.path.join(output_directory, model_name + '_%s_by_chromosome.png' % metric.lower().replace(' ', '_')) + plt.savefig(score_plot_path) + plt.close() + logging.info('Saved the %s plot to %s', metric, score_plot_path) def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): """Run the training process.""" From be6cf9b8734eacdbbd1a8b6e44d4c7d4e11cd722 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 14 Feb 2026 20:10:47 -0500 Subject: [PATCH 40/93] work on leave out model training --- contextscore/train_full_model.py | 134 +++++-------------------------- 1 file changed, 20 insertions(+), 114 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 1884f56..4758798 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -78,7 +78,6 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # SV Feature Extraction # --------------------------------------------------------------- - # Extract the features from the VCF files. logging.info('Extracting features from the true positive and false positive VCF files (GRCh38).') buildversion = 'hg38' @@ -103,15 +102,25 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Concatenating the data from hg38 and hg19.') tp_data = pd.concat([tp_data, tp_data_hg19], ignore_index=True) fp_data = pd.concat([fp_data, fp_data_hg19], ignore_index=True) + else: logging.info('No hg19 data provided. Using only hg38 data.') logging.info('Feature extraction completed. True positives: %d, False positives: %d', tp_data.shape[0], fp_data.shape[0]) - + # --------------------------------------------------------------- # Data Preprocessing # --------------------------------------------------------------- + # Remove duplicate rows from the concatenated data. + tp_count_before = tp_data.shape[0] + tp_data.drop_duplicates(inplace=True) + tp_count_after = tp_data.shape[0] + fp_count_before = fp_data.shape[0] + fp_data.drop_duplicates(inplace=True) + fp_count_after = fp_data.shape[0] + logging.info('Removed %d tp duplicates and %d fp duplicates from the concatenated data. Remaining true positives: %d, remaining false positives: %d', tp_count_before - tp_count_after, fp_count_before - fp_count_after, tp_data.shape[0], fp_data.shape[0]) + # Perform robust scaling on the read_depth and cluster_size columns using # the RobustScaler from sklearn. logging.info('Normalizing read_depth and cluster_size using Robust scaling.') @@ -139,76 +148,6 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t tp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') fp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') - # Normalize cluster_size and read_depth using Robust scaling. - # logging.info('Normalizing cluster_size and read_depth using Robust scaling.') - # from sklearn.preprocessing import RobustScaler, MinMaxScaler - # # Combine the data. - # combined_data = pd.concat([tp_data, fp_data]) - # # Create a RobustScaler object. - # scaler = RobustScaler() - # # Fit the scaler to the data. - # robust_scaled = scaler.fit_transform(combined_data[['cluster_size', 'read_depth']]) - - # # Update the data with the scaled values. - # combined_data[['cluster_size', 'read_depth']] = robust_scaled - # # Split the data back into true positives and false positives. - # tp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[:tp_data.shape[0]] - # fp_data[['cluster_size', 'read_depth']] = combined_data[['cluster_size', 'read_depth']].iloc[tp_data.shape[0]:] - - # logging.info('Normalization completed.') - - # # Drop the cluster_size column - # logging.info('Dropping the cluster_size column from the data.') - # tp_data.drop(columns=['cluster_size'], inplace=True) - # fp_data.drop(columns=['cluster_size'], inplace=True) - - # Plot the distributions of cluster_size in the TP vs. FP data. - # logging.info('Plotting the distributions of cluster_size in the TP vs. FP data.') - # plt.figure(figsize=(10, 6)) - # sns.histplot(tp_data['cluster_size'], color='blue', label='True Positives', kde=True, stat="density", bins=30) - # sns.histplot(fp_data['cluster_size'], color='red', label='False Positives', kde=True, stat="density", bins=30) - # plt.xlabel('Cluster Size') - # plt.ylabel('Density') - # plt.title('Distribution of Cluster Size (True Positives vs False Positives)') - # plt.legend() - # plt.tight_layout() - # plt.savefig(os.path.join(output_directory, 'cluster_size_distribution.png')) - # plt.close() - # logging.info('Cluster size distribution plot saved to %s', os.path.join(output_directory, 'cluster_size_distribution.png')) - - # Analyze feature correlations in the collected data. - # logging.info('Analyzing feature correlations in the collected data.') - # corr_matrix = tp_data.corr() - # plt.figure(figsize=(12, 10)) - # sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - # plt.title('Feature Correlation Matrix (True Positives)') - # plt.tight_layout() - # plt.savefig(os.path.join(output_directory, 'feature_correlation_tp.png')) - # plt.close() - # corr_matrix = fp_data.corr() - # plt.figure(figsize=(12, 10)) - # sns.heatmap(corr_matrix, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - # plt.title('Feature Correlation Matrix (False Positives)') - # plt.tight_layout() - # plt.savefig(os.path.join(output_directory, 'feature_correlation_fp.png')) - # plt.close() - # logging.info('Feature correlation analysis completed. TP saved to %s and FP saved to %s', - # os.path.join(output_directory, 'feature_correlation_tp.png'), - # os.path.join(output_directory, 'feature_correlation_fp.png')) - - # Analyze feature correlations in the combined data. - # logging.info('Analyzing feature correlations in the combined data.') - # combined_data = pd.concat([tp_data, fp_data]) - # corr_matrix_combined = combined_data.corr() - # plt.figure(figsize=(12, 10)) - # sns.heatmap(corr_matrix_combined, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - # plt.title('Feature Correlation Matrix (Combined Data)') - # plt.tight_layout() - # plt.savefig(os.path.join(output_directory, 'feature_correlation_combined.png')) - # plt.close() - # logging.info('Feature correlation analysis completed for combined data. Saved to %s', - # os.path.join(output_directory, 'feature_correlation_combined.png')) - # Add the labels. tp_data['label'] = 1 fp_data['label'] = 0 @@ -231,18 +170,6 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Number of true labels after balancing: %d', tp_data.shape[0]) logging.info('Number of false labels after balancing: %d', fp_data.shape[0]) - # Plot the differences in correlation between true positives and false - # positives. - # diff_corr = tp_data.corr() - fp_data.corr() - # plt.figure(figsize=(12, 10)) - # sns.heatmap(diff_corr, annot=True, fmt=".2f", cmap='coolwarm', square=True, cbar_kws={"shrink": .8}) - # plt.title('Difference in Feature Correlation (True Positives - False Positives)') - # plt.tight_layout() - # plt.savefig(os.path.join(output_directory, 'feature_correlation_difference.png')) - # plt.close() - # logging.info('Feature correlation difference analysis completed. Saved to %s', - # os.path.join(output_directory, 'feature_correlation_difference.png')) - # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. @@ -302,32 +229,10 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t for model_name, model in models.items(): model_name_fp = model_name.replace(" ", "_") - # Skip SVC and logistic regression for now. - # if model_name == "SVC": - # logging.info('Skipping SVC model.') - # continue - - # if model_name == "Logistic Regression": - # logging.info('Skipping Logistic Regression model.') - # continue - - # # Skip all but XGBoost - # if model_name != "XGBoost": - # logging.info('Skipping %s model.', model_name) - # continue - - # # Split the data into training and testing sets. - # logging.info('Splitting the data into training and testing sets (0.8/0.2).') - # X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) - - # Normalize the data since some features such as read depth and LRR vary across - # different samples and can have different ranges. - # from sklearn.preprocessing import StandardScaler - # scaler = StandardScaler() - # X_train = scaler.fit_transform(X_train) - # X_test = scaler.transform(X_test) - # logging.info('Data split and scaled. Training set size: %d, Testing set size: %d', - # X_train.shape[0], X_test.shape[0]) + # Skip SVC + if model_name == "SVC": + logging.info('Skipping SVC model.') + continue # Print the number of features. logging.info('Number of features: %d', X_train.shape[1]) @@ -388,14 +293,15 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Plot the ROC curve for the training set. plt.figure() - plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_train) + plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.3f)' % roc_auc_train) # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') - plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name)) + model_name_label = model_name.replace("_", " ") + plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name_label)) plt.legend(loc='lower right') # Save the plot to the output directory. roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') @@ -405,13 +311,13 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Plot the ROC curve for the testing set. plt.figure() - plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.2f)' % roc_auc_test) + plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.3f)' % roc_auc_test) plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') - plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_fp)) + plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_label)) plt.legend(loc='lower right') # Save the plot to the output directory. roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') From 94a00d6e1e12c5f7db65be7f7c5d1037e97c3a0a Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 14 Feb 2026 22:13:09 -0500 Subject: [PATCH 41/93] parameter optimization for precision --- contextscore/train_full_model.py | 322 +++++++++++++++++++++---------- 1 file changed, 218 insertions(+), 104 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 4758798..e2a8fd9 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -56,6 +56,8 @@ from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier +from sklearn.pipeline import Pipeline +from sklearn.model_selection import GridSearchCV, StratifiedKFold from xgboost import XGBClassifier from sklearn.svm import SVC @@ -70,43 +72,104 @@ # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +def balance_tp_fp_datasets(tp_data, fp_data): + """Balance the true positive and false positive datasets by undersampling the lower-count class.""" + tp_count = tp_data.shape[0] + fp_count = fp_data.shape[0] + + if tp_count > fp_count: + logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_count, fp_count) + tp_data = tp_data.sample(fp_count, random_state=42) + elif fp_count > tp_count: + logging.info('Balancing the dataset by undersampling the false positives (count = %d) to match the true positives (count = %d)', fp_count, tp_count) + fp_data = fp_data.sample(tp_count, random_state=42) + else: + logging.info('The dataset is already balanced. True positives: %d, False positives: %d', tp_count, fp_count) + + return tp_data, fp_data -def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): +def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_platinum_grch38, fp_platinum_grch38, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None, leave_out=None): """Train the binary classification model.""" # --------------------------------------------------------------- # SV Feature Extraction # --------------------------------------------------------------- + # Set paths to none if leave_out is set to the corresponding dataset + if leave_out == "hg002": + logging.info('Leaving out HG002 dataset from training.') + tp_hg002_grch37 = None + fp_hg002_grch37 = None + elif leave_out == "visor": + logging.info('Leaving out Visor dataset from training.') + tp_visor_grch38 = None + fp_visor_grch38 = None + elif leave_out == "platinum": + logging.info('Leaving out Platinum Pedigree dataset from training.') + tp_platinum_grch38 = None + fp_platinum_grch38 = None + + # =============================================================== # Extract the features from the VCF files. + # =============================================================== + # GRCh38 data. logging.info('Extracting features from the true positive and false positive VCF files (GRCh38).') buildversion = 'hg38' - tp_anno_outdir = os.path.join(outdiranno, "tp_anno") - tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir, buildversion=buildversion) - logging.info('Extracted %d features from the true positive VCF file.', tp_data.shape[0]) - fp_anno_outdir = os.path.join(outdiranno, "fp_anno") - fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir, buildversion=buildversion) - logging.info('Extracted %d features from the false positive VCF file.', fp_data.shape[0]) - - logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh19).') + tp_visor_anno = extract_features(tp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch38"), buildversion=buildversion) if tp_visor_grch38 is not None else None + fp_visor_anno = extract_features(fp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch38"), buildversion=buildversion) if fp_visor_grch38 is not None else None + # Balance datasets before concatenation. This is important to prevent the model from being biased towards the class with more samples. + # if tp_visor_anno is not None and fp_visor_anno is not None: + # tp_visor_anno, fp_visor_anno = balance_tp_fp_datasets(tp_visor_anno, fp_visor_anno) + + tp_platinum_anno = extract_features(tp_platinum_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch38"), buildversion=buildversion) if tp_platinum_grch38 is not None else None + fp_platinum_anno = extract_features(fp_platinum_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch38"), buildversion=buildversion) if fp_platinum_grch38 is not None else None + # Balance datasets before concatenation. + # if tp_platinum_anno is not None and fp_platinum_anno is not None: + # tp_platinum_anno, fp_platinum_anno = balance_tp_fp_datasets(tp_platinum_anno, fp_platinum_anno) + + # HG002 data (GRCh37). + logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh37).') buildversion = 'hg19' - if tp_bed_hg19 is not None and fp_bed_hg19 is not None: - tp_anno_outdir_hg19 = os.path.join(outdiranno, "tp_anno_hg19") - tp_data_hg19 = extract_features(tp_bed_hg19, annovar_path, db_path, tp_anno_outdir_hg19, buildversion=buildversion) - logging.info('Extracted %d features from the true positive VCF file (hg19).', tp_data_hg19.shape[0]) - fp_anno_outdir_hg19 = os.path.join(outdiranno, "fp_anno_hg19") - fp_data_hg19 = extract_features(fp_bed_hg19, annovar_path, db_path, fp_anno_outdir_hg19, buildversion=buildversion) - logging.info('Extracted %d features from the false positive VCF file (hg19).', fp_data_hg19.shape[0]) - - # Concatenate the data from hg38 and hg19. - logging.info('Concatenating the data from hg38 and hg19.') - tp_data = pd.concat([tp_data, tp_data_hg19], ignore_index=True) - fp_data = pd.concat([fp_data, fp_data_hg19], ignore_index=True) + tp_hg002_anno = extract_features(tp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch37"), buildversion=buildversion) if tp_hg002_grch37 is not None else None + fp_hg002_anno = extract_features(fp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch37"), buildversion=buildversion) if fp_hg002_grch37 is not None else None + # Balance datasets before concatenation. + # if tp_hg002_anno is not None and fp_hg002_anno is not None: + # tp_hg002_anno, fp_hg002_anno = balance_tp_fp_datasets(tp_hg002_anno, fp_hg002_anno) - else: - logging.info('No hg19 data provided. Using only hg38 data.') - logging.info('Feature extraction completed. True positives: %d, False positives: %d', - tp_data.shape[0], fp_data.shape[0]) + # Concatenate the data from all datasets. + logging.info('Concatenating the data from all datasets.') + tp_data = pd.concat([df for df in [tp_visor_anno, tp_platinum_anno, tp_hg002_anno] if df is not None], ignore_index=True) + fp_data = pd.concat([df for df in [fp_visor_anno, fp_platinum_anno, fp_hg002_anno] if df is not None], ignore_index=True) + + # Extract the features from the VCF files. + # logging.info('Extracting features from the true positive and false positive VCF files (GRCh38).') + # buildversion = 'hg38' + # tp_anno_outdir = os.path.join(outdiranno, "tp_anno") + # tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir, buildversion=buildversion) + # logging.info('Extracted %d features from the true positive VCF file.', tp_data.shape[0]) + # fp_anno_outdir = os.path.join(outdiranno, "fp_anno") + # fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir, buildversion=buildversion) + # logging.info('Extracted %d features from the false positive VCF file.', fp_data.shape[0]) + + # logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh19).') + # buildversion = 'hg19' + # if tp_bed_hg19 is not None and fp_bed_hg19 is not None: + # tp_anno_outdir_hg19 = os.path.join(outdiranno, "tp_anno_hg19") + # tp_data_hg19 = extract_features(tp_bed_hg19, annovar_path, db_path, tp_anno_outdir_hg19, buildversion=buildversion) + # logging.info('Extracted %d features from the true positive VCF file (hg19).', tp_data_hg19.shape[0]) + # fp_anno_outdir_hg19 = os.path.join(outdiranno, "fp_anno_hg19") + # fp_data_hg19 = extract_features(fp_bed_hg19, annovar_path, db_path, fp_anno_outdir_hg19, buildversion=buildversion) + # logging.info('Extracted %d features from the false positive VCF file (hg19).', fp_data_hg19.shape[0]) + + # # Concatenate the data from hg38 and hg19. + # logging.info('Concatenating the data from hg38 and hg19.') + # tp_data = pd.concat([tp_data, tp_data_hg19], ignore_index=True) + # fp_data = pd.concat([fp_data, fp_data_hg19], ignore_index=True) + + # else: + # logging.info('No hg19 data provided. Using only hg38 data.') + # logging.info('Feature extraction completed. True positives: %d, False positives: %d', + # tp_data.shape[0], fp_data.shape[0]) # --------------------------------------------------------------- # Data Preprocessing @@ -140,13 +203,13 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Drop the genotype column from the data. logging.info('Dropping the genotype column from the data.') - tp_data.drop(columns=['genotype'], inplace=True, errors='ignore') - fp_data.drop(columns=['genotype'], inplace=True, errors='ignore') + tp_data = tp_data.drop(columns=['genotype'], errors='ignore') + fp_data = fp_data.drop(columns=['genotype'], errors='ignore') # Drop the cn_state column from the data. logging.info('Dropping the cn_state column from the data.') - tp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') - fp_data.drop(columns=['cn_state'], inplace=True, errors='ignore') + tp_data = tp_data.drop(columns=['cn_state'], errors='ignore') + fp_data = fp_data.drop(columns=['cn_state'], errors='ignore') # Add the labels. tp_data['label'] = 1 @@ -158,23 +221,23 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Drop NaN values from the data. logging.info('Dropping NaN values from the data.') - tp_data.dropna(inplace=True) - fp_data.dropna(inplace=True) + tp_data = tp_data.dropna() + fp_data = fp_data.dropna() logging.info('Number of true labels after dropping NaN values: %d', tp_data.shape[0]) logging.info('Number of false labels after dropping NaN values: %d', fp_data.shape[0]) # Balance the dataset by undersampling the true positives. - logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) - tp_data = tp_data.sample(fp_data.shape[0], random_state=42) + # logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) + # tp_data = tp_data.sample(fp_data.shape[0], random_state=42) - logging.info('Number of true labels after balancing: %d', tp_data.shape[0]) - logging.info('Number of false labels after balancing: %d', fp_data.shape[0]) + # logging.info('Number of true labels after balancing: %d', tp_data.shape[0]) + # logging.info('Number of false labels after balancing: %d', fp_data.shape[0]) # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. # Add interaction terms to the data. - data = add_interaction_terms(data) + # data = add_interaction_terms(data) # Drop columns not needed for training. # data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) @@ -183,16 +246,17 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t chrom_col = data.pop('chrom') # Drop columns that are not needed for training. - data.drop(columns=['start', 'end', 'sv_type_str'], inplace=True, errors='ignore') + data = data.drop(columns=['start', 'end', 'sv_type_str'], errors='ignore') # Drop the read_depth and cluster_size columns - # data.drop(columns=['read_depth', 'cluster_size'], inplace=True) + # data = data.drop(columns=['read_depth', 'cluster_size'], errors='ignore') logging.info('Columns list after preprocessing: %s', data.columns.tolist()) # Print duplicate columns if any. duplicate_columns = data.columns[data.columns.duplicated()].tolist() - logging.info('Duplicate columns found: %s', duplicate_columns) + if duplicate_columns: + logging.warning('Duplicate columns found: %s', duplicate_columns) # Get the features and labels. features = data.drop(columns=['label']) @@ -202,38 +266,41 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Number of features: %d', features.shape[1]) logging.info('Feature names: %s', features.columns.tolist()) - # Train different models. - models = { - "Logistic Regression": LogisticRegression(), - "Random_Forest": RandomForestClassifier(n_estimators=100, random_state=42), - "XGBoost": XGBClassifier(use_label_encoder=False, eval_metric='logloss', enable_categorical=True), - "SVC": SVC(kernel='linear', class_weight='balanced', probability=True) + # Split the data into training and testing sets using stratified sampling to maintain the class balance. + X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42, stratify=labels) + cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) + pipelines = { + "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), + "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, use_label_encoder=False, eval_metric='logloss', random_state=42))]), + "SVC": Pipeline([('classifier', SVC(probability=True, random_state=42))]) + } + param_grids = { + "Logistic_Regression": { + 'classifier__C': [0.01, 0.1, 1, 10], + 'classifier__penalty': ['l1', 'l2'], + 'classifier__solver': ['liblinear'] + }, + "Random_Forest": { + 'classifier__n_estimators': [100, 200], + 'classifier__max_depth': [None, 10, 20], + 'classifier__min_samples_split': [2, 5], + 'classifier__min_samples_leaf': [1, 2] + }, + "XGBoost": { + 'classifier__n_estimators': [100, 200], + 'classifier__max_depth': [3, 6], + 'classifier__learning_rate': [0.01, 0.1], + 'classifier__subsample': [0.8, 1] + }, + "SVC": { + 'classifier__C': [0.1, 1, 10], + 'classifier__kernel': ['linear', 'rbf'] + } } - train_full_data = False # Set to True to train the full model with no split. - if train_full_data: - logging.info('Training the full model with no split.') - X_train, y_train = features, labels - - # Use a dummy test set for evaluation. - X_test = features.sample(n=1000, random_state=42) # Sample 1000 instances for testing. - y_test = labels.sample(n=1000, random_state=42) - else: - # Split the data into training and testing sets. - logging.info('Splitting the data into training and testing sets (0.8/0.2).') - X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42) - logging.info('Data split completed. Training set size: %d, Testing set size: %d', - X_train.shape[0], X_test.shape[0]) - - - for model_name, model in models.items(): - model_name_fp = model_name.replace(" ", "_") - # Skip SVC - if model_name == "SVC": - logging.info('Skipping SVC model.') - continue - + for model_name, pipeline in pipelines.items(): # Print the number of features. logging.info('Number of features: %d', X_train.shape[1]) logging.info('Training set size: %d', X_train.shape[0]) @@ -246,30 +313,25 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t # Print the number of true positives and false positives in the training # and testing sets. - logging.info('Number of true positives in the training set: %d', np.sum(y_train == 1)) - logging.info('Number of false positives in the training set: %d', np.sum(y_train == 0)) - logging.info('Number of true positives in the testing set: %d', np.sum(y_test == 1)) - logging.info('Number of false positives in the testing set: %d', np.sum(y_test == 0)) + logging.info('TP Training Count: %d', np.sum(y_train == 1)) + logging.info('FP Training Count: %d', np.sum(y_train == 0)) + logging.info('TP Testing Count: %d', np.sum(y_test == 1)) + logging.info('FP Testing Count: %d', np.sum(y_test == 0)) logging.info('Training set size: %d', X_train.shape[0]) logging.info('Testing set size: %d', X_test.shape[0]) logging.info('Number of features: %d', X_train.shape[1]) - # If SVC, scale the data. - # if model_name == "SVC": - # from sklearn.preprocessing import StandardScaler - # scaler = StandardScaler() - # X_train = scaler.fit_transform(X_train) - # X_test = scaler.transform(X_test) + model_name_fp = model_name.replace(" ", "_") - # Train the model. - logging.info('Training the %s model.', model_name) - # model.fit(features, labels) - model.fit(X_train, y_train) - # model.fit(X_train, y_train, sample_weight=sample_weights) + # Perform grid search to find the best hyperparameters for the model, optimizing for precision to prioritize reducing false positives. + grid_search = GridSearchCV(estimator=pipeline, param_grid=param_grids[model_name], cv=cv, scoring='precision', n_jobs=-1) + grid_search.fit(X_train, y_train) + logging.info('Best hyperparameters for %s: %s', model_name, grid_search.best_params_) # Get predicted probabilities for the training and testing sets. - y_train_prob = model.predict_proba(X_train)[:, 1] - y_test_prob = model.predict_proba(X_test)[:, 1] + best_model = grid_search.best_estimator_ + y_train_prob = best_model.predict_proba(X_train)[:, 1] + y_test_prob = best_model.predict_proba(X_test)[:, 1] # Compute the ROC curve and ROC area for the training set. fpr_train, tpr_train, _ = roc_curve(y_train, y_train_prob) @@ -400,6 +462,7 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t logging.info('Number of features: %d', len(feature_names)) # Continue if not running SHAP analysis. + logging.info('Continuing to the next model without SHAP analysis for %s.\n\n', model_name) continue # Feature importance for Random_Forest and XGBoost. @@ -660,16 +723,68 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t f1_scores = {} precision_scores = {} recall_scores = {} - for model_name, model in models.items(): - # Skip SVC - if model_name == "SVC": - logging.info('Skipping SVC model for cross-validation analysis.') - continue + cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) + pipelines = { + "Logistic Regression": Pipeline([ + ('scaler', StandardScaler()), + ('classifier', LogisticRegression()) + ]), + "Random_Forest": Pipeline([ + ('classifier', RandomForestClassifier(n_estimators=100, random_state=42)) + ]), + "XGBoost": Pipeline([ + ('classifier', XGBClassifier(use_label_encoder=False, eval_metric='logloss', enable_categorical=True)) + ]), + "SVC": Pipeline([ + ('scaler', StandardScaler()), + ('classifier', SVC(kernel='linear', class_weight='balanced', probability=True)) + ]) + } - # Skip all but XGBoost - if model_name != "XGBoost": - logging.info('Skipping %s model for cross-validation analysis.', model_name) - continue + # ================================================================= + # Hyperparameter grids + # ================================================================= + param_grids = { + "Logistic Regression": { + 'classifier__C': [0.01, 0.1, 1, 10, 100], + 'classifier__penalty': ['l1', 'l2'], + 'classifier__solver': ['liblinear'] + }, + "Random_Forest": { + 'classifier__n_estimators': [50, 100, 200], + 'classifier__max_depth': [None, 10, 20], + 'classifier__min_samples_split': [2, 5, 10] + }, + "XGBoost": { + 'classifier__n_estimators': [50, 100, 200], + 'classifier__max_depth': [3, 6, 9], + 'classifier__learning_rate': [0.1, 0.2, 0.3] + }, + "SVC": { + 'classifier__C': [0.1, 1.0, 10.0], + 'classifier__kernel': ['linear', 'rbf'], + 'classifier__gamma': ['scale', 'auto'] + } + } + + for name in pipelines.keys(): + logging.info(f"\n=============================") + logging.info(f"Training pipeline: {name}") + logging.info(f"==============================\n") + pipe = pipelines[name] + grid = param_grids[name] + grid_search = GridSearchCV(pipe, grid, cv=cv, scoring='f1', n_jobs=-1) + grid_search.fit(features, labels) + logging.info(f"Best parameters for {name}: {grid_search.best_params_}") + # # Skip SVC + # if model_name == "SVC": + # logging.info('Skipping SVC model for cross-validation analysis.') + # continue + + # # Skip all but XGBoost + # if model_name != "XGBoost": + # logging.info('Skipping %s model for cross-validation analysis.', model_name) + # continue # Dictionary with number of SVs in the training set for each chromosome. sv_counts = {chrom: features[chrom_col == chrom].shape[0] for chrom in chromosomes} @@ -792,26 +907,25 @@ def train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, t plt.close() logging.info('Saved the %s plot to %s', metric, score_plot_path) -def run(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None): - """Run the training process.""" - train(tp_bed, fp_bed, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19, fp_bed_hg19) - - if __name__ == '__main__': # Parse the command line arguments. import argparse parser = argparse.ArgumentParser() - parser.add_argument("--tpbed", required=True, help="Directory containing true positive SVs in hg38") - parser.add_argument("--fpbed", required=True, help="Directory containing false positive SVs in hg38") - parser.add_argument("--tpbed_hg19", required=False, help="Directory containing true positive SVs in hg19") - parser.add_argument("--fpbed_hg19", required=False, help="Directory containing false positive SVs in hg19") + parser.add_argument("--tp_hg002_grch37", required=True, help="Path to the true positive BED file for HG002 in GRCh37") + parser.add_argument("--fp_hg002_grch37", required=True, help="Path to the false positive BED file for HG002 in GRCh37") + parser.add_argument("--tp_visor_grch38", required=True, help="Path to the true positive BED file for Visor in GRCh38") + parser.add_argument("--fp_visor_grch38", required=True, help="Path to the false positive BED file for Visor in GRCh38") + parser.add_argument("--tp_platinum_grch38", required=True, help="Path to the true positive BED file for Platinum in GRCh38") + parser.add_argument("--fp_platinum_grch38", required=True, help="Path to the false positive BED file for Platinum in GRCh38") parser.add_argument("--outdiranno", required=True, help="Output directory for saving the ANNOVAR annotations") parser.add_argument("--outdir", required=True, help="Output directory for saving the model") parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") + parser.add_argument("--leave_out", required=True, help="Which dataset to leave out for training") args = parser.parse_args() # Run the program. logging.info('Training the model...') - run(args.tpbed, args.fpbed, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.tpbed_hg19, args.fpbed_hg19) + train(args.tp_hg002_grch37, args.fp_hg002_grch37, args.tp_visor_grch38, args.fp_visor_grch38, args.tp_platinum_grch38, args.fp_platinum_grch38, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.leave_out) logging.info('done.') + From 58673c5c36e8023fb3b05172c84b544ceb8c8035 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 17 Feb 2026 19:18:19 -0500 Subject: [PATCH 42/93] full model train --- contextscore/train_full_model.py | 234 ++++++++++++------------------- 1 file changed, 91 insertions(+), 143 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index e2a8fd9..4793847 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -88,7 +88,7 @@ def balance_tp_fp_datasets(tp_data, fp_data): return tp_data, fp_data -def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_platinum_grch38, fp_platinum_grch38, output_directory, annovar_path, db_path, outdiranno, tp_bed_hg19=None, fp_bed_hg19=None, leave_out=None): +def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_platinum_grch38, fp_platinum_grch38, output_directory, annovar_path, db_path, outdiranno, leave_out="none", split_80_20=False): """Train the binary classification model.""" # --------------------------------------------------------------- @@ -265,16 +265,28 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Print the number of features. logging.info('Number of features: %d', features.shape[1]) logging.info('Feature names: %s', features.columns.tolist()) + if split_80_20: + # Split the data into training and testing sets using stratified sampling to maintain the class balance. + logging.info('Splitting the data into training and testing sets using an 80-20 split with stratified sampling to maintain class balance.') + X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42, stratify=labels) + else: + # Use all the data for training and testing. We will use cross-validation to evaluate the model performance. + logging.info('Using all the data for training and testing. Cross-validation will be used to evaluate the model performance.') + X_train, y_train = features, labels + X_test, y_test = features, labels + + # If not 80/20 split, use XGBoost only (highest performing model) to save time. + if split_80_20: + pipelines = { + "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), + "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=True))]) + } + else: + pipelines = { + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=True))]) + } - # Split the data into training and testing sets using stratified sampling to maintain the class balance. - X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42, stratify=labels) - cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) - pipelines = { - "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), - "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, use_label_encoder=False, eval_metric='logloss', random_state=42))]), - "SVC": Pipeline([('classifier', SVC(probability=True, random_state=42))]) - } param_grids = { "Logistic_Regression": { 'classifier__C': [0.01, 0.1, 1, 10], @@ -292,36 +304,16 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp 'classifier__max_depth': [3, 6], 'classifier__learning_rate': [0.01, 0.1], 'classifier__subsample': [0.8, 1] - }, - "SVC": { - 'classifier__C': [0.1, 1, 10], - 'classifier__kernel': ['linear', 'rbf'] } } - + cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) for model_name, pipeline in pipelines.items(): - # Print the number of features. - logging.info('Number of features: %d', X_train.shape[1]) - logging.info('Training set size: %d', X_train.shape[0]) - logging.info('Testing set size: %d', X_test.shape[0]) - - # Print the feature names. - feature_names = features.columns.tolist() - logging.info('Feature names: %s', feature_names) - logging.info('Number of features: %d', len(feature_names)) - - # Print the number of true positives and false positives in the training - # and testing sets. - logging.info('TP Training Count: %d', np.sum(y_train == 1)) - logging.info('FP Training Count: %d', np.sum(y_train == 0)) - logging.info('TP Testing Count: %d', np.sum(y_test == 1)) - logging.info('FP Testing Count: %d', np.sum(y_test == 0)) - logging.info('Training set size: %d', X_train.shape[0]) - logging.info('Testing set size: %d', X_test.shape[0]) - logging.info('Number of features: %d', X_train.shape[1]) - - model_name_fp = model_name.replace(" ", "_") + logging.info('Training the %s model.', model_name) + model_name_fp = "contextscore_" + model_name.lower() + "_leaveout_" + leave_out + + if split_80_20: + model_name_fp += "_80_20_split" # Perform grid search to find the best hyperparameters for the model, optimizing for precision to prioritize reducing false positives. grid_search = GridSearchCV(estimator=pipeline, param_grid=param_grids[model_name], cv=cv, scoring='precision', n_jobs=-1) @@ -330,106 +322,69 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Get predicted probabilities for the training and testing sets. best_model = grid_search.best_estimator_ - y_train_prob = best_model.predict_proba(X_train)[:, 1] - y_test_prob = best_model.predict_proba(X_test)[:, 1] - - # Compute the ROC curve and ROC area for the training set. - fpr_train, tpr_train, _ = roc_curve(y_train, y_train_prob) - roc_auc_train = auc(fpr_train, tpr_train) - - # Compute the ROC curve and ROC area for the testing set. - fpr_test, tpr_test, thresholds = roc_curve(y_test, y_test_prob) - roc_auc_test = auc(fpr_test, tpr_test) - - # Use Youden's J statistic to find the optimal threshold. - # j_scores = tpr_test - fpr_test - # optimal_idx = np.argmax(j_scores) - # optimal_threshold = thresholds[optimal_idx] - # logging.info('Optimal threshold (Youden\'s J statistic): %f', optimal_threshold) - # logging.info('True positive rate (sensitivity): %f', tpr_test[optimal_idx]) - # logging.info('False positive rate (1 - specificity): %f', fpr_test[optimal_idx]) - - # Print the ROC AUC scores. - logging.info('ROC AUC score for the training set: %f', roc_auc_train) - logging.info('ROC AUC score for the testing set: %f', roc_auc_test) - - # Plot the ROC curve for the training set. - plt.figure() - plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.3f)' % roc_auc_train) - # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - model_name_label = model_name.replace("_", " ") - plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name_label)) - plt.legend(loc='lower right') - # Save the plot to the output directory. - roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) - - # Plot the ROC curve for the testing set. - plt.figure() - plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.3f)' % roc_auc_test) - plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') - plt.xlim([0.0, 1.0]) - plt.ylim([0.0, 1.05]) - plt.xlabel('False Positive Rate') - plt.ylabel('True Positive Rate') - plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_label)) - plt.legend(loc='lower right') - # Save the plot to the output directory. - roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') - plt.savefig(roc_plot_path) - plt.close() - logging.info('Saved the ROC curve to %s', roc_plot_path) - - # Compute precision-recall curve - # precision, recall, thresholds_pr = precision_recall_curve(y_test, y_test_prob) - - # logging.info('precision size: %d', len(precision)) - # logging.info('recall size: %d', len(recall)) - # logging.info('thresholds size: %d', len(thresholds_pr)) - - # # Plot Recall vs Thresholds - # plt.figure() - # plt.plot(thresholds_pr, recall[1:], color='blue', lw=2, label='Recall') - # plt.xlabel('Threshold') - # plt.ylabel('Recall') - # plt.title('%s Recall vs Thresholds' % model_name) - # # plt.legend(loc='lower right') - # # Remove the legend - # plt.legend().remove() + # Save plots only for 80-20 split since the ROC curve will be overly optimistic when using all the data for training and testing. + if split_80_20: + y_train_prob = best_model.predict_proba(X_train)[:, 1] + y_test_prob = best_model.predict_proba(X_test)[:, 1] - # # Save the plot to the output directory. - # recall_plot_path = os.path.join(output_directory, model_name_fp + '_recall_vs_thresholds.png') - # plt.savefig(recall_plot_path) - # plt.close() - # logging.info('Saved the Recall vs Thresholds plot to %s', recall_plot_path) + # Compute the ROC curve and ROC area for the training set. + fpr_train, tpr_train, _ = roc_curve(y_train, y_train_prob) + roc_auc_train = auc(fpr_train, tpr_train) + + # Compute the ROC curve and ROC area for the testing set. + fpr_test, tpr_test, thresholds = roc_curve(y_test, y_test_prob) + roc_auc_test = auc(fpr_test, tpr_test) + + # Print the ROC AUC scores. + logging.info('ROC AUC score for the training set: %f', roc_auc_train) + logging.info('ROC AUC score for the testing set: %f', roc_auc_test) + + # Plot the ROC curve for the training set. + plt.figure() + plt.plot(fpr_train, tpr_train, color='blue', lw=2, label='ROC curve (area = %0.3f)' % roc_auc_train) + # plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + model_name_label = model_name.replace("_", " ") + plt.title('{} Receiver Operating Characteristic (Training Set)'.format(model_name_label)) + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name_fp + '_roc_curve.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + + # Plot the ROC curve for the testing set. + plt.figure() + plt.plot(fpr_test, tpr_test, color='blue', lw=2, label='ROC curve (area = %0.3f)' % roc_auc_test) + plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') + plt.xlim([0.0, 1.0]) + plt.ylim([0.0, 1.05]) + plt.xlabel('False Positive Rate') + plt.ylabel('True Positive Rate') + plt.title('{} Receiver Operating Characteristic (Testing Set)'.format(model_name_label)) + plt.legend(loc='lower right') + # Save the plot to the output directory. + roc_plot_path = os.path.join(output_directory, model_name + '_roc_curve_test.png') + plt.savefig(roc_plot_path) + plt.close() + logging.info('Saved the ROC curve to %s', roc_plot_path) + else: + # Save the model to the output directory as a pickle file. + model_path = os.path.join(output_directory, model_name_fp + '_model.pkl') + joblib.dump(best_model, model_path) + logging.info('Saved the %s model to %s', model_name, model_path) - # # Plot Precision vs Thresholds - # plt.figure() - # plt.plot(thresholds_pr, precision[1:], color='blue', lw=2, label='Precision') - # plt.xlabel('Threshold') - # plt.ylabel('Precision') - # plt.title('%s Precision vs Thresholds' % model_name) - # # plt.legend(loc='lower right') - # # Remove the legend - # plt.legend().remove() - # # Save the plot to the output directory. - # precision_plot_path = os.path.join(output_directory, model_name_fp + '_precision_vs_thresholds.png') - # plt.savefig(precision_plot_path) - # plt.close() - # logging.info('Saved the Precision vs Thresholds plot to %s', precision_plot_path) - # Get the feature names. - feature_names = features.columns.tolist() + # Continue if not running SHAP analysis. + logging.info('Completed training and evaluation for %s. Continuing to the next model.', model_name) + continue - # Create a dictionary of feature names and their labels. + # Feature importance for Random_Forest and XGBoost feature_name_dict = { "aln_type": "Alignment Type", "aln_type_hmm": "HMM Prediction", @@ -458,14 +413,6 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Map the feature names to their labels. feature_names = [feature_name_dict.get(name, name) for name in feature_names] - logging.info('Feature names: %s', feature_names) - logging.info('Number of features: %d', len(feature_names)) - - # Continue if not running SHAP analysis. - logging.info('Continuing to the next model without SHAP analysis for %s.\n\n', model_name) - continue - - # Feature importance for Random_Forest and XGBoost. if model_name in ["Random_Forest", "XGBoost"]: # Get feature importances. importances = model.feature_importances_ @@ -704,7 +651,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # logging.info('Mean cross-validation score: %f', scores.mean()) # Exit early if not running per-chromosome cross-validation analysis. - sys.exit(0) + return # Run a cross-validation analysis splitting the data by chromosome. logging.info('Running cross-validation analysis splitting the data by chromosome.') @@ -733,7 +680,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp ('classifier', RandomForestClassifier(n_estimators=100, random_state=42)) ]), "XGBoost": Pipeline([ - ('classifier', XGBClassifier(use_label_encoder=False, eval_metric='logloss', enable_categorical=True)) + ('classifier', XGBClassifier(eval_metric='logloss', enable_categorical=True)) ]), "SVC": Pipeline([ ('scaler', StandardScaler()), @@ -922,10 +869,11 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") parser.add_argument("--leave_out", required=True, help="Which dataset to leave out for training") + parser.add_argument("--split_80_20", action='store_true', help="Whether to split the data into training and testing sets using an 80-20 split. If not specified, all the data will be used for training and testing, and cross-validation will be used to evaluate the model performance.") args = parser.parse_args() # Run the program. - logging.info('Training the model...') - train(args.tp_hg002_grch37, args.fp_hg002_grch37, args.tp_visor_grch38, args.fp_visor_grch38, args.tp_platinum_grch38, args.fp_platinum_grch38, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.leave_out) + logging.info('Training the model, split_80_20 = %s.', args.split_80_20) + train(args.tp_hg002_grch37, args.fp_hg002_grch37, args.tp_visor_grch38, args.fp_visor_grch38, args.tp_platinum_grch38, args.fp_platinum_grch38, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.leave_out, args.split_80_20) logging.info('done.') From a057fccc6c8a6a48dc83f61a6f253f889404e60f Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 17 Feb 2026 19:52:07 -0500 Subject: [PATCH 43/93] update prediction --- contextscore/predict.py | 38 ++++++++++++++++---------------- contextscore/train_full_model.py | 2 +- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/contextscore/predict.py b/contextscore/predict.py index f88b2e1..0261550 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -161,8 +161,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Robust scaling completed.') # Add interaction terms to the features - feature_df = add_interaction_terms(feature_df) - logging.info('Added interaction terms to the features.') + # feature_df = add_interaction_terms(feature_df) + # logging.info('Added interaction terms to the features.') # Drop the sv_type column (imbalance especially for inversions). # logging.info('Dropping the sv_type column from the features.') @@ -290,23 +290,23 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist shap_df['predicted_probability'] = y_pred[:, 1] shap_df['predicted_class'] = (y_pred[:, 1] >= prob_threshold).astype(int) - # Calculate SHAP values - explainer = shap.TreeExplainer(clf) - shap_values = explainer.shap_values(feature_df) - shap_df_shap = pd.DataFrame(shap_values, columns=feature_df.columns) + # # Calculate SHAP values + # explainer = shap.TreeExplainer(clf) + # shap_values = explainer.shap_values(feature_df) + # shap_df_shap = pd.DataFrame(shap_values, columns=feature_df.columns) - # Combine the SHAP values with the filtered variants DataFrame - shap_df = pd.concat([shap_df, shap_df_shap], axis=1) + # # Combine the SHAP values with the filtered variants DataFrame + # shap_df = pd.concat([shap_df, shap_df_shap], axis=1) - # for col in shap_df.columns: - # if col not in ['id', 'chrom', 'predicted_probability', 'predicted_class']: - # shap_df[col] = shap_df[col].astype(float) - shap_df = shap_df[shap_df['id'].isin(filtered_ids)] - logging.info('Filtered SHAP values DataFrame:\n%s', shap_df.head()) - logging.info('Number of filtered variants: %d', len(shap_df)) + # # for col in shap_df.columns: + # # if col not in ['id', 'chrom', 'predicted_probability', 'predicted_class']: + # # shap_df[col] = shap_df[col].astype(float) + # shap_df = shap_df[shap_df['id'].isin(filtered_ids)] + # logging.info('Filtered SHAP values DataFrame:\n%s', shap_df.head()) + # logging.info('Number of filtered variants: %d', len(shap_df)) - # Save the SHAP values to a CSV file - logging.info('Saving the filtered variant SHAP values to a CSV file...') + # # Save the SHAP values to a CSV file + # logging.info('Saving the filtered variant SHAP values to a CSV file...') # Move the CHROM, START, END, SVTYPE, SVLEN, READ_DEPTH, CLUSTER_SIZE, PREDICTED_PROBABILITY, PREDICTED_CLASS columns to the front # shap_df = shap_df[['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', @@ -314,9 +314,9 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # [col for col in shap_df.columns if col not in ['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', 'predicted_probability', 'predicted_class']]] # # shap_df = shap_df[['chrom', 'id', 'predicted_probability', 'predicted_class'] + [col for col in shap_df.columns if col not in ['chrom', 'id', 'predicted_probability', 'predicted_class']]] - shap_csv_file = os.path.join(output_dir, 'filtered_variants.csv') - shap_df.to_csv(shap_csv_file, index=False) - logging.info('Saved the filtered variant SHAP values to %s', shap_csv_file) + # shap_csv_file = os.path.join(output_dir, 'filtered_variants.csv') + # shap_df.to_csv(shap_csv_file, index=False) + # logging.info('Saved the filtered variant SHAP values to %s', shap_csv_file) # Filter the input VCF file based on the filtered indices logging.info('Filtering the input VCF file based on the filtered indices...') diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 4793847..c3d7e76 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -237,7 +237,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. # Add interaction terms to the data. - # data = add_interaction_terms(data) + data = add_interaction_terms(data) # Drop columns not needed for training. # data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) From 1004ea6bb0faaa2dc8a8b4b0c60ce8e8ed25815a Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 22 Feb 2026 21:56:59 -0500 Subject: [PATCH 44/93] comment previous code --- contextscore/train_full_model.py | 887 +++++++++++++++---------------- 1 file changed, 443 insertions(+), 444 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index c3d7e76..ee8d248 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -309,7 +309,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) for model_name, pipeline in pipelines.items(): - logging.info('Training the %s model.', model_name) + logging.info('Training model class %s', model_name) model_name_fp = "contextscore_" + model_name.lower() + "_leaveout_" + leave_out if split_80_20: @@ -382,169 +382,193 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Continue if not running SHAP analysis. logging.info('Completed training and evaluation for %s. Continuing to the next model.', model_name) - continue - - # Feature importance for Random_Forest and XGBoost - feature_name_dict = { - "aln_type": "Alignment Type", - "aln_type_hmm": "HMM Prediction", - "simpleRepeat": "Simple Repeat", - "segdup": "Segmental Duplications", - "cluster_size": "Cluster Size", - "read_depth": "Read Depth", - "aln_offset": "Alignment Offset", - "hmm_llh": "HMM Log Likelihood", - "phastCons": "PhastCons Conservation Score", - "sv_length": "Structural Variant Length", - "sv_type": "Structural Variant Type", - "fragile_site": "Fragile Site", - "centromere": "Centromere", - "telomere": "Telomere", - "call_type": "Alignment Type", - "simple_repeat_cs": "Simple Repeat x Cluster Size", - "simple_repeat_rd": "Simple Repeat x Read Depth", - "cs_hmm": "Cluster Size x HMM LLH", - "fragile_site_cs": "Fragile Site x Cluster Size", - "fragile_site_rd": "Fragile Site x Read Depth", - "segdup_cs": "Seg. Dup. x Cluster Size", - "segdup_rd": "Seg. Dup. x Read Depth" - } - - # Map the feature names to their labels. - feature_names = [feature_name_dict.get(name, name) for name in feature_names] - - if model_name in ["Random_Forest", "XGBoost"]: - # Get feature importances. - importances = model.feature_importances_ - # Sort the feature importances in descending order. - indices = np.argsort(importances)[::-1] - top_features = [feature_names[i] for i in indices] - top_importances = [importances[i] for i in indices] + # # Feature importance for Random_Forest and XGBoost + # feature_name_dict = { + # "aln_type": "Alignment Type", + # "aln_type_hmm": "HMM Prediction", + # "simpleRepeat": "Simple Repeat", + # "segdup": "Segmental Duplications", + # "cluster_size": "Cluster Size", + # "read_depth": "Read Depth", + # "aln_offset": "Alignment Offset", + # "hmm_llh": "HMM Log Likelihood", + # "phastCons": "PhastCons Conservation Score", + # "sv_length": "Structural Variant Length", + # "sv_type": "Structural Variant Type", + # "fragile_site": "Fragile Site", + # "centromere": "Centromere", + # "telomere": "Telomere", + # "call_type": "Alignment Type", + # "simple_repeat_cs": "Simple Repeat x Cluster Size", + # "simple_repeat_rd": "Simple Repeat x Read Depth", + # "cs_hmm": "Cluster Size x HMM LLH", + # "fragile_site_cs": "Fragile Site x Cluster Size", + # "fragile_site_rd": "Fragile Site x Read Depth", + # "segdup_cs": "Seg. Dup. x Cluster Size", + # "segdup_rd": "Seg. Dup. x Read Depth" + # } + + # # Map the feature names to their labels. + # feature_names = [feature_name_dict.get(name, name) for name in feature_names] + + # if model_name in ["Random_Forest", "XGBoost"]: + # # Get feature importances. + # importances = model.feature_importances_ + + # # Sort the feature importances in descending order. + # indices = np.argsort(importances)[::-1] + # top_features = [feature_names[i] for i in indices] + # top_importances = [importances[i] for i in indices] - # Print the feature ranking. - logging.info('Feature ranking:') - for f in range(X_train.shape[1]): - logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], importances[indices[f]]) + # # Print the feature ranking. + # logging.info('Feature ranking:') + # for f in range(X_train.shape[1]): + # logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], importances[indices[f]]) - # Plot the feature importances. - plt.figure() - plt.title('XGBoost Feature Importances') - plt.bar(range(len(top_features)), top_importances, align='center') - plt.xticks(range(len(top_features)), top_features, rotation=45, ha='right') - # plt.bar(range(X_train.shape[1]), importances[indices], align='center') - # plt.xticks(range(X_train.shape[1]), indices) - # plt.xlim([-1, X_train.shape[1]]) - - # Set the x ticks as the feature names - # plt.xticks(range(X_train.shape[1]), [feature_names[i] for i in indices], rotation=45) - # plt.xlim([-1, X_train.shape[1]]) - plt.xlabel('') - plt.ylabel('Importance') - plt.tight_layout() + # # Plot the feature importances. + # plt.figure() + # plt.title('XGBoost Feature Importances') + # plt.bar(range(len(top_features)), top_importances, align='center') + # plt.xticks(range(len(top_features)), top_features, rotation=45, ha='right') + # # plt.bar(range(X_train.shape[1]), importances[indices], align='center') + # # plt.xticks(range(X_train.shape[1]), indices) + # # plt.xlim([-1, X_train.shape[1]]) + + # # Set the x ticks as the feature names + # # plt.xticks(range(X_train.shape[1]), [feature_names[i] for i in indices], rotation=45) + # # plt.xlim([-1, X_train.shape[1]]) + # plt.xlabel('') + # plt.ylabel('Importance') + # plt.tight_layout() - # Save the plot to the output directory. - importance_plot_path = os.path.join(output_directory, model_name_fp + '_feature_importances.png') - plt.savefig(importance_plot_path, bbox_inches='tight') - plt.close() - logging.info('Saved the feature importances plot to %s', importance_plot_path) - - # Plot the % of SVs (TPs and FPs) overlapping with the genomic - # context regions (simpleRepeat, segdup, fragile_site, phastCons > - # 0.5) - # print("Number of TPs: ", tp_data.shape[0]) - # print("Number of FPs: ", fp_data.shape[0]) - # logging.info('Plotting the percentage of SVs (TPs and FPs) overlapping with the genomic context regions.') - # for feature in ['simpleRepeat', 'segdup', 'fragile_site', 'phastCons']: - # if feature == 'phastCons': - # tp_data_feature = tp_data[tp_data[feature] > 0.5] - # fp_data_feature = fp_data[fp_data[feature] > 0.5] - # else: - # tp_data_feature = tp_data[tp_data[feature] == 1] - # fp_data_feature = fp_data[fp_data[feature] == 1] - # tp_pcnt = tp_data_feature.shape[0] / tp_data.shape[0] * 100 - # fp_pcnt = fp_data_feature.shape[0] / fp_data.shape[0] * 100 - # logging.info('Feature %s: TP = %.2f%%, FP = %.2f%%', feature, tp_pcnt, fp_pcnt) - # plt.figure() - # plt.bar(['TP', 'FP'], [tp_pcnt, fp_pcnt], color=['#0072B2', '#D55E00']) # Blue, Vermillion (colorblind-friendly) - # plt.xlabel('SV Type') - # plt.ylabel('Percentage of SVs') - # plt.title('Percentage of SVs Overlapping with %s' % feature) - # plt.ylim([0, 100]) - # # Save the plot to the output directory. - # feature_plot_path = os.path.join(output_directory, model_name_fp + '_%s.png' % feature) - # plt.savefig(feature_plot_path, bbox_inches='tight') - # plt.close() - # logging.info('Saved the %s plot to %s', feature, feature_plot_path) - - # # Exit early to verify the feature importances. - # sys.exit(0) - - # Convert bool columns to int for SHAP analysis. - bool_cols = X_train.select_dtypes(include=['bool']).columns - X_train[bool_cols] = X_train[bool_cols].astype(int) - - # Analyze the feature importances using SHAP values. - import shap - # explainer = shap.Explainer(model, X_train) - # shap_values = explainer(X_train) - - # SHAP doesn't support XGBoost with categorical features directly, - # so we need to use their suggested workaround. - explainer = shap.TreeExplainer(model, feature_perturbation="tree_path_dependent") - shap_values = explainer.shap_values(X_train) - - # Plot the SHAP values. - plt.figure(figsize=(10, 6)) - shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) - # Save the SHAP summary plot to the output directory. - shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') - plt.savefig(shap_plot_path, bbox_inches='tight') - plt.close() - logging.info('Saved the SHAP summary plot to %s', shap_plot_path) - - # ----------------------------------------------- - # SV Length vs SHAP values - # ----------------------------------------------- - - # # Plot 1: SHAP values vs SV length. - # plt.figure(figsize=(10, 6)) - # sns.scatterplot(data=X_train, x='abs_SVLEN', y='shap_SVLEN', hue='true_label', alpha=0.6) - # plt.xscale('log') - # plt.xlabel("SV Length (bp, log scale)") - # plt.ylabel("SHAP value for SV Length") - # plt.title("SHAP value vs. SV length") - # plt.axhline(0, color='gray', linestyle='--') - # plt.legend(title="True Label") - # plt.tight_layout() - # shap_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_shap_svlen.png') - # plt.savefig(shap_svlen_plot_path, bbox_inches='tight') - # plt.close() - # logging.info('Saved the SHAP value vs. SV length plot to %s', shap_svlen_plot_path) - - # # Plot 2: Predicted probability vs SV length. - # X_train['y_prob'] = model.predict_proba(X_train)[:, 1] - # plt.figure(figsize=(10, 6)) - # sns.scatterplot(data=X_train, x='abs_SVLEN', y='y_prob', hue='true_label', alpha=0.6) - # plt.xscale('log') - # plt.xlabel("SV Length (bp, log scale)") - # plt.ylabel("Predicted Probability of Being True Positive") - # plt.title("Predicted Probability vs. SV length") - # plt.axhline(0.5, color='gray', linestyle='--') - # plt.legend(title="True Label") - # plt.tight_layout() - # prob_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_prob_svlen.png') - # plt.savefig(prob_svlen_plot_path, bbox_inches='tight') - # plt.close() - # logging.info('Saved the predicted probability vs. SV length plot to %s', prob_svlen_plot_path) - - # plt.title('Feature Importances') - - # [TEST] Exit after this step to verify the feature importances. - # sys.exit(0) - - # For SVC, get the coefficients. - # if model_name == "SVC": + # # Save the plot to the output directory. + # importance_plot_path = os.path.join(output_directory, model_name_fp + '_feature_importances.png') + # plt.savefig(importance_plot_path, bbox_inches='tight') + # plt.close() + # logging.info('Saved the feature importances plot to %s', importance_plot_path) + + # # Plot the % of SVs (TPs and FPs) overlapping with the genomic + # # context regions (simpleRepeat, segdup, fragile_site, phastCons > + # # 0.5) + # # print("Number of TPs: ", tp_data.shape[0]) + # # print("Number of FPs: ", fp_data.shape[0]) + # # logging.info('Plotting the percentage of SVs (TPs and FPs) overlapping with the genomic context regions.') + # # for feature in ['simpleRepeat', 'segdup', 'fragile_site', 'phastCons']: + # # if feature == 'phastCons': + # # tp_data_feature = tp_data[tp_data[feature] > 0.5] + # # fp_data_feature = fp_data[fp_data[feature] > 0.5] + # # else: + # # tp_data_feature = tp_data[tp_data[feature] == 1] + # # fp_data_feature = fp_data[fp_data[feature] == 1] + # # tp_pcnt = tp_data_feature.shape[0] / tp_data.shape[0] * 100 + # # fp_pcnt = fp_data_feature.shape[0] / fp_data.shape[0] * 100 + # # logging.info('Feature %s: TP = %.2f%%, FP = %.2f%%', feature, tp_pcnt, fp_pcnt) + # # plt.figure() + # # plt.bar(['TP', 'FP'], [tp_pcnt, fp_pcnt], color=['#0072B2', '#D55E00']) # Blue, Vermillion (colorblind-friendly) + # # plt.xlabel('SV Type') + # # plt.ylabel('Percentage of SVs') + # # plt.title('Percentage of SVs Overlapping with %s' % feature) + # # plt.ylim([0, 100]) + # # # Save the plot to the output directory. + # # feature_plot_path = os.path.join(output_directory, model_name_fp + '_%s.png' % feature) + # # plt.savefig(feature_plot_path, bbox_inches='tight') + # # plt.close() + # # logging.info('Saved the %s plot to %s', feature, feature_plot_path) + + # # # Exit early to verify the feature importances. + # # sys.exit(0) + + # # Convert bool columns to int for SHAP analysis. + # bool_cols = X_train.select_dtypes(include=['bool']).columns + # X_train[bool_cols] = X_train[bool_cols].astype(int) + + # # Analyze the feature importances using SHAP values. + # import shap + # # explainer = shap.Explainer(model, X_train) + # # shap_values = explainer(X_train) + + # # SHAP doesn't support XGBoost with categorical features directly, + # # so we need to use their suggested workaround. + # explainer = shap.TreeExplainer(model, feature_perturbation="tree_path_dependent") + # shap_values = explainer.shap_values(X_train) + + # # Plot the SHAP values. + # plt.figure(figsize=(10, 6)) + # shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) + # # Save the SHAP summary plot to the output directory. + # shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + # plt.savefig(shap_plot_path, bbox_inches='tight') + # plt.close() + # logging.info('Saved the SHAP summary plot to %s', shap_plot_path) + + # # ----------------------------------------------- + # # SV Length vs SHAP values + # # ----------------------------------------------- + + # # # Plot 1: SHAP values vs SV length. + # # plt.figure(figsize=(10, 6)) + # # sns.scatterplot(data=X_train, x='abs_SVLEN', y='shap_SVLEN', hue='true_label', alpha=0.6) + # # plt.xscale('log') + # # plt.xlabel("SV Length (bp, log scale)") + # # plt.ylabel("SHAP value for SV Length") + # # plt.title("SHAP value vs. SV length") + # # plt.axhline(0, color='gray', linestyle='--') + # # plt.legend(title="True Label") + # # plt.tight_layout() + # # shap_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_shap_svlen.png') + # # plt.savefig(shap_svlen_plot_path, bbox_inches='tight') + # # plt.close() + # # logging.info('Saved the SHAP value vs. SV length plot to %s', shap_svlen_plot_path) + + # # # Plot 2: Predicted probability vs SV length. + # # X_train['y_prob'] = model.predict_proba(X_train)[:, 1] + # # plt.figure(figsize=(10, 6)) + # # sns.scatterplot(data=X_train, x='abs_SVLEN', y='y_prob', hue='true_label', alpha=0.6) + # # plt.xscale('log') + # # plt.xlabel("SV Length (bp, log scale)") + # # plt.ylabel("Predicted Probability of Being True Positive") + # # plt.title("Predicted Probability vs. SV length") + # # plt.axhline(0.5, color='gray', linestyle='--') + # # plt.legend(title="True Label") + # # plt.tight_layout() + # # prob_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_prob_svlen.png') + # # plt.savefig(prob_svlen_plot_path, bbox_inches='tight') + # # plt.close() + # # logging.info('Saved the predicted probability vs. SV length plot to %s', prob_svlen_plot_path) + + # # plt.title('Feature Importances') + + # # [TEST] Exit after this step to verify the feature importances. + # # sys.exit(0) + + # # For SVC, get the coefficients. + # # if model_name == "SVC": + # # # Get the coefficients. + # # coefficients = model.coef_[0] + + # # # Sort the coefficients in descending order. + # # indices = np.argsort(coefficients)[::-1] + + # # # Print the feature ranking. + # # logging.info('Feature ranking:') + # # for f in range(X_train.shape[1]): + # # logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) + + # # # Plot the coefficients. + # # plt.figure() + # # plt.title('Feature Coefficients') + # # plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') + # # plt.xticks(range(X_train.shape[1]), indices) + # # plt.xlim([-1, X_train.shape[1]]) + # # # Save the plot to the output directory. + # # coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') + # # plt.savefig(coeff_plot_path) + # # plt.close() + # # logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) + + # # For logistic regression, get the coefficients. + # if model_name == "Logistic Regression": # # Get the coefficients. # coefficients = model.coef_[0] @@ -563,296 +587,271 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # plt.xticks(range(X_train.shape[1]), indices) # plt.xlim([-1, X_train.shape[1]]) # # Save the plot to the output directory. - # coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') + # coeff_plot_path = os.path.join(output_directory, model_name_fp + '_feature_coefficients.png') # plt.savefig(coeff_plot_path) # plt.close() # logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) - # For logistic regression, get the coefficients. - if model_name == "Logistic Regression": - # Get the coefficients. - coefficients = model.coef_[0] - - # Sort the coefficients in descending order. - indices = np.argsort(coefficients)[::-1] - - # Print the feature ranking. - logging.info('Feature ranking:') - for f in range(X_train.shape[1]): - logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) - - # Plot the coefficients. - plt.figure() - plt.title('Feature Coefficients') - plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') - plt.xticks(range(X_train.shape[1]), indices) - plt.xlim([-1, X_train.shape[1]]) - # Save the plot to the output directory. - coeff_plot_path = os.path.join(output_directory, model_name_fp + '_feature_coefficients.png') - plt.savefig(coeff_plot_path) - plt.close() - logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) - - # Get the precision-recall curve f - # precision, recall, thresholds = precision_recall_curve(labels, y_prob) - # pr_auc = auc(recall, precision) - - # Plot the precision-recall curve. - # plt.figure() - # plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) - # plt.xlabel('Recall') - # plt.ylabel('Precision') - # plt.title('Precision-Recall Curve') - # plt.legend(loc='lower left') - # # Save the plot to the output directory. - # pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') - # plt.savefig(pr_plot_path) - # plt.close() - # logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) - - # # Get the confusion matrix. - # cm = confusion_matrix(labels, y_pred) - # logging.info('Confusion matrix:\n%s', cm) - - # # Plot the confusion matrix using seaborn. - # plt.figure() - # sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') - # plt.xlabel('Predicted') - # plt.ylabel('True') - # plt.title('Confusion Matrix') - # # Save the plot to the output directory. - # cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') - # plt.savefig(cm_plot_path) - # plt.close() - # logging.info('Saved the confusion matrix to %s', cm_plot_path) - - # # Print the classification report. - # logging.info('Classification report:\n%s', classification_report(labels, y_pred)) - - # # Save the report to a file. - # report_path = os.path.join(output_directory, model_name + '_classification_report.txt') - # with open(report_path, 'w') as f: - # f.write(classification_report(labels, y_pred)) - - # logging.info('Saved the classification report to %s', report_path) - - # Save the model. - model_path = os.path.join(output_directory, model_name_fp + '_caller_model.pkl') - logging.info('Saving the model to %s', model_path) - joblib.dump(model, model_path) - logging.info('Saved the model to %s', model_path) - - # Run cross-validation by splitting the data into 5 folds and training - # the model on each fold. - # from sklearn.model_selection import cross_val_score - # logging.info('Running cross-validation.') - # scores = cross_val_score(model, features, labels, cv=5, scoring='f1') - # logging.info('Cross-validation scores: %s', scores) - # logging.info('Mean cross-validation score: %f', scores.mean()) - - # Exit early if not running per-chromosome cross-validation analysis. - return - - # Run a cross-validation analysis splitting the data by chromosome. - logging.info('Running cross-validation analysis splitting the data by chromosome.') - # chromosomes = features['chrom'].unique() - - # Specify the chromosomes to not include non-standard chromosomes. - # chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', - # 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY'] + # # Get the precision-recall curve f + # # precision, recall, thresholds = precision_recall_curve(labels, y_prob) + # # pr_auc = auc(recall, precision) + + # # Plot the precision-recall curve. + # # plt.figure() + # # plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) + # # plt.xlabel('Recall') + # # plt.ylabel('Precision') + # # plt.title('Precision-Recall Curve') + # # plt.legend(loc='lower left') + # # # Save the plot to the output directory. + # # pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') + # # plt.savefig(pr_plot_path) + # # plt.close() + # # logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) + + # # # Get the confusion matrix. + # # cm = confusion_matrix(labels, y_pred) + # # logging.info('Confusion matrix:\n%s', cm) + + # # # Plot the confusion matrix using seaborn. + # # plt.figure() + # # sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') + # # plt.xlabel('Predicted') + # # plt.ylabel('True') + # # plt.title('Confusion Matrix') + # # # Save the plot to the output directory. + # # cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') + # # plt.savefig(cm_plot_path) + # # plt.close() + # # logging.info('Saved the confusion matrix to %s', cm_plot_path) + + # # # Print the classification report. + # # logging.info('Classification report:\n%s', classification_report(labels, y_pred)) + + # # # Save the report to a file. + # # report_path = os.path.join(output_directory, model_name + '_classification_report.txt') + # # with open(report_path, 'w') as f: + # # f.write(classification_report(labels, y_pred)) + + # # logging.info('Saved the classification report to %s', report_path) + + # # Save the model. + # model_path = os.path.join(output_directory, model_name_fp + '_caller_model.pkl') + # logging.info('Saving the model to %s', model_path) + # joblib.dump(model, model_path) + # logging.info('Saved the model to %s', model_path) + + # # Run cross-validation by splitting the data into 5 folds and training + # # the model on each fold. + # # from sklearn.model_selection import cross_val_score + # # logging.info('Running cross-validation.') + # # scores = cross_val_score(model, features, labels, cv=5, scoring='f1') + # # logging.info('Cross-validation scores: %s', scores) + # # logging.info('Mean cross-validation score: %f', scores.mean()) + + # # Exit early if not running per-chromosome cross-validation analysis. + # return + + # # Run a cross-validation analysis splitting the data by chromosome. + # logging.info('Running cross-validation analysis splitting the data by chromosome.') + # # chromosomes = features['chrom'].unique() + + # # Specify the chromosomes to not include non-standard chromosomes. + # # chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', + # # 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY'] - # 4 August 2025: Remove chrY from the analysis. More than half is missing in - # GRCh38 and leads to high false positive rates. - chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', - 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX'] - - logging.info('Chromosomes: %s', chromosomes) - f1_scores = {} - precision_scores = {} - recall_scores = {} - cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) - pipelines = { - "Logistic Regression": Pipeline([ - ('scaler', StandardScaler()), - ('classifier', LogisticRegression()) - ]), - "Random_Forest": Pipeline([ - ('classifier', RandomForestClassifier(n_estimators=100, random_state=42)) - ]), - "XGBoost": Pipeline([ - ('classifier', XGBClassifier(eval_metric='logloss', enable_categorical=True)) - ]), - "SVC": Pipeline([ - ('scaler', StandardScaler()), - ('classifier', SVC(kernel='linear', class_weight='balanced', probability=True)) - ]) - } - - # ================================================================= - # Hyperparameter grids - # ================================================================= - param_grids = { - "Logistic Regression": { - 'classifier__C': [0.01, 0.1, 1, 10, 100], - 'classifier__penalty': ['l1', 'l2'], - 'classifier__solver': ['liblinear'] - }, - "Random_Forest": { - 'classifier__n_estimators': [50, 100, 200], - 'classifier__max_depth': [None, 10, 20], - 'classifier__min_samples_split': [2, 5, 10] - }, - "XGBoost": { - 'classifier__n_estimators': [50, 100, 200], - 'classifier__max_depth': [3, 6, 9], - 'classifier__learning_rate': [0.1, 0.2, 0.3] - }, - "SVC": { - 'classifier__C': [0.1, 1.0, 10.0], - 'classifier__kernel': ['linear', 'rbf'], - 'classifier__gamma': ['scale', 'auto'] - } - } - - for name in pipelines.keys(): - logging.info(f"\n=============================") - logging.info(f"Training pipeline: {name}") - logging.info(f"==============================\n") - pipe = pipelines[name] - grid = param_grids[name] - grid_search = GridSearchCV(pipe, grid, cv=cv, scoring='f1', n_jobs=-1) - grid_search.fit(features, labels) - logging.info(f"Best parameters for {name}: {grid_search.best_params_}") - # # Skip SVC - # if model_name == "SVC": - # logging.info('Skipping SVC model for cross-validation analysis.') - # continue - - # # Skip all but XGBoost - # if model_name != "XGBoost": - # logging.info('Skipping %s model for cross-validation analysis.', model_name) - # continue - - # Dictionary with number of SVs in the training set for each chromosome. - sv_counts = {chrom: features[chrom_col == chrom].shape[0] for chrom in chromosomes} - logging.info('Number of SVs in the training set for each chromosome: %s', sv_counts) - - for chrom in chromosomes: - logging.info('Training the %s model on chromosome %s.', model_name, chrom) - # Split the data into training and testing sets by chromosome. - X_train_chrom = features[chrom_col != chrom].copy() - y_train_chrom = labels[chrom_col != chrom].copy() - X_test_chrom = features[chrom_col == chrom].copy() - y_test_chrom = labels[chrom_col == chrom].copy() - - # Drop the chromosome column from the features. - # X_train_chrom.drop(columns=['chrom'], inplace=True) - # X_test_chrom.drop(columns=['chrom'], inplace=True) - - logging.info('Training set size: %d, Testing set size: %d', - X_train_chrom.shape[0], X_test_chrom.shape[0]) - # Train the model. - model.fit(X_train_chrom, y_train_chrom) - # Get the predicted probabilities for the testing set. - y_test_chrom_prob = model.predict_proba(X_test_chrom)[:, 1] - # Compute the ROC curve and ROC area for the testing set. - fpr_chrom, tpr_chrom, _ = roc_curve(y_test_chrom, y_test_chrom_prob) - roc_auc_chrom = auc(fpr_chrom, tpr_chrom) - logging.info('ROC AUC score for the %s model on chromosome %s: %f', model_name, chrom, roc_auc_chrom) - - # Compute the F1 score for the testing set. - from sklearn.metrics import f1_score - y_test_chrom_pred = (y_test_chrom_prob >= 0.5).astype(int) # Use a threshold of 0.5 for classification. - f1 = f1_score(y_test_chrom, y_test_chrom_pred) - f1_scores[(model_name, chrom)] = f1 - logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) - - # Compute precision and recall for the testing set. - from sklearn.metrics import precision_score, recall_score - precision = precision_score(y_test_chrom, y_test_chrom_pred) - recall = recall_score(y_test_chrom, y_test_chrom_pred) - precision_scores[(model_name, chrom)] = precision - recall_scores[(model_name, chrom)] = recall - logging.info('Precision for the %s model on chromosome %s: %f', model_name, chrom, precision) - logging.info('Recall for the %s model on chromosome %s: %f', model_name, chrom, recall) - - # Compute the F1 score for the testing set. - # from sklearn.metrics import f1_score - # y_test_chrom_pred = (y_test_chrom_prob >= optimal_threshold).astype(int) - # f1 = f1_score(y_test_chrom, y_test_chrom_pred) - # # f1_scores.append(f1) - # f1_scores[(model_name, chrom)] = f1 - # logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) + # # 4 August 2025: Remove chrY from the analysis. More than half is missing in + # # GRCh38 and leads to high false positive rates. + # chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', + # 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX'] + + # logging.info('Chromosomes: %s', chromosomes) + # f1_scores = {} + # precision_scores = {} + # recall_scores = {} + # cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) + # pipelines = { + # "Logistic Regression": Pipeline([ + # ('scaler', StandardScaler()), + # ('classifier', LogisticRegression()) + # ]), + # "Random_Forest": Pipeline([ + # ('classifier', RandomForestClassifier(n_estimators=100, random_state=42)) + # ]), + # "XGBoost": Pipeline([ + # ('classifier', XGBClassifier(eval_metric='logloss', enable_categorical=True)) + # ]), + # "SVC": Pipeline([ + # ('scaler', StandardScaler()), + # ('classifier', SVC(kernel='linear', class_weight='balanced', probability=True)) + # ]) + # } + + # # ================================================================= + # # Hyperparameter grids + # # ================================================================= + # param_grids = { + # "Logistic Regression": { + # 'classifier__C': [0.01, 0.1, 1, 10, 100], + # 'classifier__penalty': ['l1', 'l2'], + # 'classifier__solver': ['liblinear'] + # }, + # "Random_Forest": { + # 'classifier__n_estimators': [50, 100, 200], + # 'classifier__max_depth': [None, 10, 20], + # 'classifier__min_samples_split': [2, 5, 10] + # }, + # "XGBoost": { + # 'classifier__n_estimators': [50, 100, 200], + # 'classifier__max_depth': [3, 6, 9], + # 'classifier__learning_rate': [0.1, 0.2, 0.3] + # }, + # "SVC": { + # 'classifier__C': [0.1, 1.0, 10.0], + # 'classifier__kernel': ['linear', 'rbf'], + # 'classifier__gamma': ['scale', 'auto'] + # } + # } + + # for name in pipelines.keys(): + # logging.info(f"\n=============================") + # logging.info(f"Training pipeline: {name}") + # logging.info(f"==============================\n") + # pipe = pipelines[name] + # grid = param_grids[name] + # grid_search = GridSearchCV(pipe, grid, cv=cv, scoring='f1', n_jobs=-1) + # grid_search.fit(features, labels) + # logging.info(f"Best parameters for {name}: {grid_search.best_params_}") + # # # Skip SVC + # # if model_name == "SVC": + # # logging.info('Skipping SVC model for cross-validation analysis.') + # # continue + + # # # Skip all but XGBoost + # # if model_name != "XGBoost": + # # logging.info('Skipping %s model for cross-validation analysis.', model_name) + # # continue + + # # Dictionary with number of SVs in the training set for each chromosome. + # sv_counts = {chrom: features[chrom_col == chrom].shape[0] for chrom in chromosomes} + # logging.info('Number of SVs in the training set for each chromosome: %s', sv_counts) + + # for chrom in chromosomes: + # logging.info('Training the %s model on chromosome %s.', model_name, chrom) + # # Split the data into training and testing sets by chromosome. + # X_train_chrom = features[chrom_col != chrom].copy() + # y_train_chrom = labels[chrom_col != chrom].copy() + # X_test_chrom = features[chrom_col == chrom].copy() + # y_test_chrom = labels[chrom_col == chrom].copy() + + # # Drop the chromosome column from the features. + # # X_train_chrom.drop(columns=['chrom'], inplace=True) + # # X_test_chrom.drop(columns=['chrom'], inplace=True) + + # logging.info('Training set size: %d, Testing set size: %d', + # X_train_chrom.shape[0], X_test_chrom.shape[0]) + # # Train the model. + # model.fit(X_train_chrom, y_train_chrom) + # # Get the predicted probabilities for the testing set. + # y_test_chrom_prob = model.predict_proba(X_test_chrom)[:, 1] + # # Compute the ROC curve and ROC area for the testing set. + # fpr_chrom, tpr_chrom, _ = roc_curve(y_test_chrom, y_test_chrom_prob) + # roc_auc_chrom = auc(fpr_chrom, tpr_chrom) + # logging.info('ROC AUC score for the %s model on chromosome %s: %f', model_name, chrom, roc_auc_chrom) + + # # Compute the F1 score for the testing set. + # from sklearn.metrics import f1_score + # y_test_chrom_pred = (y_test_chrom_prob >= 0.5).astype(int) # Use a threshold of 0.5 for classification. + # f1 = f1_score(y_test_chrom, y_test_chrom_pred) + # f1_scores[(model_name, chrom)] = f1 + # logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) + + # # Compute precision and recall for the testing set. + # from sklearn.metrics import precision_score, recall_score + # precision = precision_score(y_test_chrom, y_test_chrom_pred) + # recall = recall_score(y_test_chrom, y_test_chrom_pred) + # precision_scores[(model_name, chrom)] = precision + # recall_scores[(model_name, chrom)] = recall + # logging.info('Precision for the %s model on chromosome %s: %f', model_name, chrom, precision) + # logging.info('Recall for the %s model on chromosome %s: %f', model_name, chrom, recall) + + # # Compute the F1 score for the testing set. + # # from sklearn.metrics import f1_score + # # y_test_chrom_pred = (y_test_chrom_prob >= optimal_threshold).astype(int) + # # f1 = f1_score(y_test_chrom, y_test_chrom_pred) + # # # f1_scores.append(f1) + # # f1_scores[(model_name, chrom)] = f1 + # # logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) - logging.info('Cross-validation analysis completed. F1 scores: %s', f1_scores) - - # Plot the F1 scores for each model and chromosome (one plot per model). - logging.info('Plotting the scores for each model and chromosome.') - metrics = ['F1 Score', 'Precision', 'Recall'] - for model_name in models.keys(): - # Skip if not XGBoost - if model_name != "XGBoost": - logging.info('Skipping %s model for plotting scores by chromosome.', model_name) - continue - - # Save a plot with F1, Precision, and Recall scores for chrY - if 'chrY' in chromosomes: - logging.info('Plotting scores for %s model on chrY.', model_name) - # Create a bar plot for the F1 scores by chromosome. - chry_f1 = f1_scores.get((model_name, 'chrY'), 0) - chry_precision = precision_scores.get((model_name, 'chrY'), 0) - chry_recall = recall_scores.get((model_name, 'chrY'), 0) - - # plt.figure(figsize=(10, 6)) - - # Make it way smaller for better visibility. - plt.figure(figsize=(6, 4)) - - # Plot F1, Precision, and Recall scores for chrY. - sns.barplot(x=['F1 Score', 'Precision', 'Recall'], y=[chry_f1, chry_precision, chry_recall], color='black') - - # plt.xlabel('Metric') - plt.ylabel('Score') - plt.title('%s Scores for %s Model on chrY' % (model_name, model_name)) - plt.xticks(rotation=45) - plt.legend() - plt.tight_layout() - # Save the plot to the output directory. - score_plot_path = os.path.join(output_directory, model_name + '_scores_chrY.png') - plt.savefig(score_plot_path) - plt.close() - logging.info('Saved the scores plot for chrY to %s', score_plot_path) - - - for metric, scores in zip(metrics, [f1_scores, precision_scores, recall_scores]): - logging.info('Plotting %s for %s model by chromosome.', metric, model_name) - # Create a bar plot for the F1 scores by chromosome. - # model_f1_scores = {chrom: f1_scores[(model_name, chrom)] for chrom - # in chromosomes if (model_name, chrom) in f1_scores} - model_scores = {chrom: scores[(model_name, chrom)] for chrom in chromosomes if (model_name, chrom) in scores} - - plt.figure(figsize=(10, 6)) - # Smaller figure size for better visibility. - # plt.figure(figsize=(8, 5)) - ax = sns.barplot(x=list(model_scores.keys()), y=list(model_scores.values()), color='black') - - # Annotate each bar with the number of SVs in the training set for that - # chromosome. - # Put the number of SVs above each bar. - # for i, (chrom, score) in enumerate(model_scores.items()): - # num_sv = sv_counts[chrom] - # ax.text(i, score + 0.01, f'{num_sv}', ha='center', va='bottom', fontsize=8) - - plt.xlabel('Chromosome') - plt.ylabel(metric) - plt.title('%s for %s Model by Chromosome' % (metric, model_name)) - plt.xticks(rotation=45) - plt.tight_layout() - # Save the plot to the output directory. - score_plot_path = os.path.join(output_directory, model_name + '_%s_by_chromosome.png' % metric.lower().replace(' ', '_')) - plt.savefig(score_plot_path) - plt.close() - logging.info('Saved the %s plot to %s', metric, score_plot_path) + # logging.info('Cross-validation analysis completed. F1 scores: %s', f1_scores) + + # # Plot the F1 scores for each model and chromosome (one plot per model). + # logging.info('Plotting the scores for each model and chromosome.') + # metrics = ['F1 Score', 'Precision', 'Recall'] + # for model_name in models.keys(): + # # Skip if not XGBoost + # if model_name != "XGBoost": + # logging.info('Skipping %s model for plotting scores by chromosome.', model_name) + # continue + + # # Save a plot with F1, Precision, and Recall scores for chrY + # if 'chrY' in chromosomes: + # logging.info('Plotting scores for %s model on chrY.', model_name) + # # Create a bar plot for the F1 scores by chromosome. + # chry_f1 = f1_scores.get((model_name, 'chrY'), 0) + # chry_precision = precision_scores.get((model_name, 'chrY'), 0) + # chry_recall = recall_scores.get((model_name, 'chrY'), 0) + + # # plt.figure(figsize=(10, 6)) + + # # Make it way smaller for better visibility. + # plt.figure(figsize=(6, 4)) + + # # Plot F1, Precision, and Recall scores for chrY. + # sns.barplot(x=['F1 Score', 'Precision', 'Recall'], y=[chry_f1, chry_precision, chry_recall], color='black') + + # # plt.xlabel('Metric') + # plt.ylabel('Score') + # plt.title('%s Scores for %s Model on chrY' % (model_name, model_name)) + # plt.xticks(rotation=45) + # plt.legend() + # plt.tight_layout() + # # Save the plot to the output directory. + # score_plot_path = os.path.join(output_directory, model_name + '_scores_chrY.png') + # plt.savefig(score_plot_path) + # plt.close() + # logging.info('Saved the scores plot for chrY to %s', score_plot_path) + + + # for metric, scores in zip(metrics, [f1_scores, precision_scores, recall_scores]): + # logging.info('Plotting %s for %s model by chromosome.', metric, model_name) + # # Create a bar plot for the F1 scores by chromosome. + # # model_f1_scores = {chrom: f1_scores[(model_name, chrom)] for chrom + # # in chromosomes if (model_name, chrom) in f1_scores} + # model_scores = {chrom: scores[(model_name, chrom)] for chrom in chromosomes if (model_name, chrom) in scores} + + # plt.figure(figsize=(10, 6)) + # # Smaller figure size for better visibility. + # # plt.figure(figsize=(8, 5)) + # ax = sns.barplot(x=list(model_scores.keys()), y=list(model_scores.values()), color='black') + + # # Annotate each bar with the number of SVs in the training set for that + # # chromosome. + # # Put the number of SVs above each bar. + # # for i, (chrom, score) in enumerate(model_scores.items()): + # # num_sv = sv_counts[chrom] + # # ax.text(i, score + 0.01, f'{num_sv}', ha='center', va='bottom', fontsize=8) + + # plt.xlabel('Chromosome') + # plt.ylabel(metric) + # plt.title('%s for %s Model by Chromosome' % (metric, model_name)) + # plt.xticks(rotation=45) + # plt.tight_layout() + # # Save the plot to the output directory. + # score_plot_path = os.path.join(output_directory, model_name + '_%s_by_chromosome.png' % metric.lower().replace(' ', '_')) + # plt.savefig(score_plot_path) + # plt.close() + # logging.info('Saved the %s plot to %s', metric, score_plot_path) if __name__ == '__main__': # Parse the command line arguments. From fe3e27ca44c495de4e74744501c45b25a59d5ca6 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 22 Feb 2026 22:28:39 -0500 Subject: [PATCH 45/93] remove interaction terms --- contextscore/train_full_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index ee8d248..837e4f5 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -237,7 +237,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. # Add interaction terms to the data. - data = add_interaction_terms(data) + # data = add_interaction_terms(data) # Drop columns not needed for training. # data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) From 65b740dd4385e183c8bcaff15516b7fdd21af57c Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 26 Feb 2026 22:53:11 -0500 Subject: [PATCH 46/93] shap analysis --- contextscore/extract_features.py | 174 +-------- contextscore/train_full_model.py | 596 ++++--------------------------- 2 files changed, 71 insertions(+), 699 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 6f07874..be25384 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -220,10 +220,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= """ logging.info('Extracting features from the BED file %s', input_bed) - # Load a dictionary mapping chromosome names to numbers. - # chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - # chrom_dict = joblib.load(chrom_dict_path) - # Get the number of columns in the BED file. with open(input_bed, 'r') as f: first_line = f.readline().strip() @@ -249,52 +245,7 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop the genotype column and cn_state columns (due to redundancy). bed_df.drop(columns=['genotype', 'cn_state'], inplace=True) - logging.info('[TEST] Dropped the genotype and cn_state columns. Current columns: %s', bed_df.columns) - - # # Print the number of NaN values - # logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) - - # # Map the chromosome names to numbers. - # bed_df['chrom'] = bed_df['chrom'].map(chrom_dict) - - # # Print the number of NaN values - # logging.info('Number of NaN values after chr mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of alignment types to numbers. - # Alignment types are: "CIGARINS", "CIGARDEL", "CIGARCLIP", "SPLIT", - # "SPLITDIST1", "SPLITDIST2", "SPLITINV", "SUPPINV", "HMM", "UNKNOWN" - # aln_type_map = { - # 'CIGARINS': 0, - # 'CIGARDEL': 1, - # 'CIGARCLIP': 2, - # 'SPLIT': 3, - # 'SPLITDIST1': 4, - # 'SPLITDIST2': 5, - # 'SPLITINV': 6, - # 'SUPPINV': 7, - # 'HMM': 8, - # 'UNKNOWN': 9 - # } - - # The alignment types are comma-separated. - # Split the alignment types into a list. - # bed_df['aln_type'] = bed_df['aln_type'].str.split(',') - - # Throw an error and exit if any contain more than two - # alignment types. - # if bed_df['aln_type'].apply(len).max() > 2: - # logging.error('Alignment types contain more than two types.') - # logging.error('Please check the input BED file.') - # sys.exit(1) - # else: - # logging.info('Success: Alignment types contain at most two types.') - - # Create split alignment evidence feature, 0 for CIGAR alignment types (contains CIGAR) and 1 - # for split alignment types (contains SPLIT, HMM, etc.). - # bed_df['split_aln'] = bed_df['aln_type'].apply(lambda x: 0 if 'CIGAR' in x else 1) - # logging.info('Created split_aln feature. Current columns: %s', - # bed_df.columns) - + # Create alignment type feature, 0 for CIGAR alignment types (contains # CIGAR), 1 for CIGARCLIP (contains CIGARCLIP), 2 for SPLIT alignment (all # others) @@ -305,37 +256,8 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop the original aln_type column. bed_df.drop(columns=['aln_type'], inplace=True) - # Create a second column with whether one of the alignment types is HMM. - # bed_df['aln_type_hmm'] = bed_df['aln_type'].apply(lambda x: 1 if 'HMM' in x else 0) - - # # Replace the alignment type to have only one type by removing the HMM type. - # bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: [i for i in x if i != 'HMM']) - - # # Now all the alignment types should be just one type. Print an error if - # # not and exit. - # if bed_df['aln_type'].apply(len).max() > 1: - # logging.error('Alignment types contain more than one type.') - # logging.error('Please check the input BED file.') - # sys.exit(1) - # else: - # logging.info('Success: Alignment types contain only one type.') - - # # Flatten the list of alignment types into a single string. - # bed_df['aln_type'] = bed_df['aln_type'].apply(lambda x: x[0]) - - # # Map the alignment types to numbers. - # bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) - - # Create a one-hot encoding for the alignment types by creating a new column for each type. - # for aln_type in aln_type_map.keys(): - # bed_df[aln_type] = bed_df['aln_type'].apply(lambda x: 1 if aln_type in x else 0) - - # # Drop the original aln_type column. - # bed_df.drop(columns=['aln_type'], inplace=True) - # logging.info('[TEST] Dropped the original aln_type column. Current columns: %s', bed_df.columns) - - # Map the alignment types to numbers. - # bed_df['aln_type'] = bed_df['aln_type'].map(aln_type_map) + # Drop the sv_length column since it is noisy + bed_df.drop(columns=['sv_length'], inplace=True) # Print the number of NaN values logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) @@ -356,28 +278,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Map the SV types to numbers. bed_df['sv_type'] = bed_df['sv_type'].map(sv_type_map).astype('category') - # Create a one-hot encoding for the SV types by creating a new column for each type. - # for sv_type in sv_type_map.keys(): - # bed_df[sv_type] = bed_df['sv_type'].apply(lambda x: 1 if x == sv_type else 0) - - # Drop the original sv_type column. - # bed_df.drop(columns=['sv_type'], inplace=True) - - # Print the number of NaN values - logging.info('Number of NaN values after sv_type mapping: %d', bed_df.isnull().sum().sum()) - - # Create a map of genotypes to numbers. - # Genotypes are: "0/0", "0/1", "1/1", "./." - # genotype_map = { - # '0/0': 0, - # '0/1': 1, - # '1/1': 2, - # './.': 3 - # } - - # Map the genotypes to numbers. - # bed_df['genotype'] = bed_df['genotype'].map(genotype_map) - # Check if any features are missing. if bed_df.isnull().values.any(): logging.error('Features are missing.') @@ -393,70 +293,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= bed_df = add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno, buildversion, training_format) logging.info('Added ANNOVAR annotations to the features. Updated columns: %s', bed_df.columns) - # Create a new column overlap_count that counts the number of SVs overlapping - # with each SV in the input BED file. - # This is done by counting the number of rows in the bed_df that have the same - # chrom, start, and end as the current row. - - # --------------------------------------------------------------- - # logging.info('Adding overlap_count column to the features.') - # bed_df = add_overlap_count(bed_df, chrom_col='chrom', start_col='start', end_col='end') - # logging.info('Added overlap_count column to the features. Updated columns: %s', bed_df.columns) - - # Print the bottom 10 unique values of the overlap_count column. - # Sort the unique values of the overlap_count column. - # sorted_unique_values = np.sort(bed_df['overlap_count'].unique()) - # logging.info('Bottom 10 unique values of the overlap_count column: %s', sorted_unique_values[-10:]) - - # # Print the top 10 unique values of the overlap_count column. - # logging.info('Top 10 unique values of the overlap_count column: %s', - # sorted_unique_values[:10]) - # --------------------------------------------------------------- - - # Normalize the cluster_size and read_depth columns using RobustScaler - # logging.info('Normalizing the cluster_size and read_depth columns...') - # from sklearn.preprocessing import RobustScaler, MinMaxScaler - # scaler = RobustScaler() - # robust_scaled = scaler.fit_transform(bed_df[['cluster_size', 'read_depth']]) - # bed_df[['cluster_size', 'read_depth']] = robust_scaled - # # robust_scaled = scaler.fit_transform(feature_df[['cluster_size', 'read_depth']]) - # # feature_df[['cluster_size', 'read_depth']] = robust_scaled - - # # Create an interaction term between sv_length and read_depth, sv_length - # # and cluster_size, read_depth and cluster_size, and sv_length and hmm_llh. - # # Normalize the sv_length column by dividing by 1000 to reduce the range. - # bed_df['log_svlen'] = np.log1p(np.abs(bed_df['sv_length'])) - # # bed_df['svlen_rd'] = bed_df['log_svlen'] * bed_df['read_depth'] - # # bed_df['svlen_cs'] = bed_df['log_svlen'] * bed_df['cluster_size'] - # bed_df['rd_cs'] = bed_df['read_depth'] * bed_df['cluster_size'] - # bed_df['svlen_hmm'] = bed_df['log_svlen'] * bed_df['hmm_llh'] - # bed_df['cs_hmm'] = bed_df['cluster_size'] * bed_df['hmm_llh'] - # bed_df['rd_hmm'] = bed_df['read_depth'] * bed_df['hmm_llh'] - # # bed_df['rd_per_kb'] = bed_df['read_depth'] / (np.abs(bed_df['sv_length']) / 1000 + 1) - # # bed_df['cs_per_kb'] = bed_df['cluster_size'] / - # # (np.abs(bed_df['sv_length']) / 1000 + 1) ## - # bed_df['hmm_per_kb'] = bed_df['hmm_llh'] / (np.abs(bed_df['sv_length']) / 1000 + 1) - # logging.info('Added interaction terms to the features. Updated columns: %s', bed_df.columns) - - # # Remove the raw SV length column and keep the log_svlen column. - # # Training data has size imbalance, so use the transformed sv_length - # bed_df.drop(columns=['sv_length'], inplace=True) - - # Drop the alignment type column (imbalanced). - # bed_df.drop(columns=['aln_type'], inplace=True) - - # # Drop the HMM prediction column (not available for all samples). - # bed_df.drop(columns=['aln_type_hmm'], inplace=True) - - # Drop cluster size and cs_per_kb - # bed_df.drop(columns=['cluster_size'], inplace=True) # Dropped after normalization in train_full_model.py - # bed_df.drop(columns=['cs_per_kb'], inplace=True) - - # Finally map chromosome names to numbers. - # Load a dictionary mapping chromosome names to numbers. - chrom_dict_path="/mnt/isilon/wang_lab/perdomoj/projects/ContextScore/Train/Model/chrom_map.pkl" - chrom_dict = joblib.load(chrom_dict_path) - # Print the number of NaN values logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) @@ -464,10 +300,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Fix the chromosome names to all start with 'chr' if they don't already. bed_df['chrom'] = bed_df['chrom'].apply(lambda x: 'chr' + x if not x.startswith('chr') else x) - # Drop the start and end columns, but keep the chrom column for later use in - # cross-validation. - # bed_df.drop(columns=['start', 'end'], inplace=True) - # Drop telomere and centromere columns (they don't affect predictions). bed_df.drop(columns=['telomere', 'centromere'], inplace=True) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 837e4f5..3126bb3 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -45,13 +45,9 @@ """ import os -import sys -import subprocess import logging -import numpy as np import joblib import pandas as pd -from io import StringIO from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression @@ -61,11 +57,11 @@ from xgboost import XGBClassifier from sklearn.svm import SVC -import matplotlib.pyplot as plt +# Import SHAP for model interpretation. +import shap +from sklearn.metrics import roc_curve, auc -from sklearn.metrics import roc_curve, auc, precision_recall_curve, confusion_matrix, classification_report import matplotlib.pyplot as plt -import seaborn as sns from extract_features import extract_features, add_interaction_terms, normalize_column @@ -96,6 +92,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # --------------------------------------------------------------- # Set paths to none if leave_out is set to the corresponding dataset + no_leave_out = False if leave_out == "hg002": logging.info('Leaving out HG002 dataset from training.') tp_hg002_grch37 = None @@ -108,6 +105,9 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp logging.info('Leaving out Platinum Pedigree dataset from training.') tp_platinum_grch38 = None fp_platinum_grch38 = None + else: + logging.info('Not leaving out any dataset from training.') + no_leave_out = True # =============================================================== # Extract the features from the VCF files. @@ -117,60 +117,21 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp buildversion = 'hg38' tp_visor_anno = extract_features(tp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch38"), buildversion=buildversion) if tp_visor_grch38 is not None else None fp_visor_anno = extract_features(fp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch38"), buildversion=buildversion) if fp_visor_grch38 is not None else None - # Balance datasets before concatenation. This is important to prevent the model from being biased towards the class with more samples. - # if tp_visor_anno is not None and fp_visor_anno is not None: - # tp_visor_anno, fp_visor_anno = balance_tp_fp_datasets(tp_visor_anno, fp_visor_anno) tp_platinum_anno = extract_features(tp_platinum_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch38"), buildversion=buildversion) if tp_platinum_grch38 is not None else None fp_platinum_anno = extract_features(fp_platinum_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch38"), buildversion=buildversion) if fp_platinum_grch38 is not None else None - # Balance datasets before concatenation. - # if tp_platinum_anno is not None and fp_platinum_anno is not None: - # tp_platinum_anno, fp_platinum_anno = balance_tp_fp_datasets(tp_platinum_anno, fp_platinum_anno) # HG002 data (GRCh37). logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh37).') buildversion = 'hg19' tp_hg002_anno = extract_features(tp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch37"), buildversion=buildversion) if tp_hg002_grch37 is not None else None fp_hg002_anno = extract_features(fp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch37"), buildversion=buildversion) if fp_hg002_grch37 is not None else None - # Balance datasets before concatenation. - # if tp_hg002_anno is not None and fp_hg002_anno is not None: - # tp_hg002_anno, fp_hg002_anno = balance_tp_fp_datasets(tp_hg002_anno, fp_hg002_anno) # Concatenate the data from all datasets. logging.info('Concatenating the data from all datasets.') tp_data = pd.concat([df for df in [tp_visor_anno, tp_platinum_anno, tp_hg002_anno] if df is not None], ignore_index=True) fp_data = pd.concat([df for df in [fp_visor_anno, fp_platinum_anno, fp_hg002_anno] if df is not None], ignore_index=True) - # Extract the features from the VCF files. - # logging.info('Extracting features from the true positive and false positive VCF files (GRCh38).') - # buildversion = 'hg38' - # tp_anno_outdir = os.path.join(outdiranno, "tp_anno") - # tp_data = extract_features(tp_bed, annovar_path, db_path, tp_anno_outdir, buildversion=buildversion) - # logging.info('Extracted %d features from the true positive VCF file.', tp_data.shape[0]) - # fp_anno_outdir = os.path.join(outdiranno, "fp_anno") - # fp_data = extract_features(fp_bed, annovar_path, db_path, fp_anno_outdir, buildversion=buildversion) - # logging.info('Extracted %d features from the false positive VCF file.', fp_data.shape[0]) - - # logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh19).') - # buildversion = 'hg19' - # if tp_bed_hg19 is not None and fp_bed_hg19 is not None: - # tp_anno_outdir_hg19 = os.path.join(outdiranno, "tp_anno_hg19") - # tp_data_hg19 = extract_features(tp_bed_hg19, annovar_path, db_path, tp_anno_outdir_hg19, buildversion=buildversion) - # logging.info('Extracted %d features from the true positive VCF file (hg19).', tp_data_hg19.shape[0]) - # fp_anno_outdir_hg19 = os.path.join(outdiranno, "fp_anno_hg19") - # fp_data_hg19 = extract_features(fp_bed_hg19, annovar_path, db_path, fp_anno_outdir_hg19, buildversion=buildversion) - # logging.info('Extracted %d features from the false positive VCF file (hg19).', fp_data_hg19.shape[0]) - - # # Concatenate the data from hg38 and hg19. - # logging.info('Concatenating the data from hg38 and hg19.') - # tp_data = pd.concat([tp_data, tp_data_hg19], ignore_index=True) - # fp_data = pd.concat([fp_data, fp_data_hg19], ignore_index=True) - - # else: - # logging.info('No hg19 data provided. Using only hg38 data.') - # logging.info('Feature extraction completed. True positives: %d, False positives: %d', - # tp_data.shape[0], fp_data.shape[0]) - # --------------------------------------------------------------- # Data Preprocessing # --------------------------------------------------------------- @@ -211,6 +172,11 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp tp_data = tp_data.drop(columns=['cn_state'], errors='ignore') fp_data = fp_data.drop(columns=['cn_state'], errors='ignore') + # Drop SV length features since they are highly correlated with the SV type feature and may lead to overfitting. + # logging.info('Dropping SV length feature from the data.') + # tp_data = tp_data.drop(columns=['sv_length'], errors='ignore') + # fp_data = fp_data.drop(columns=['sv_length'], errors='ignore') + # Add the labels. tp_data['label'] = 1 fp_data['label'] = 0 @@ -236,12 +202,6 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. - # Add interaction terms to the data. - # data = add_interaction_terms(data) - - # Drop columns not needed for training. - # data.drop(columns=['chrom', 'start', 'end', 'sv_type_str'], inplace=True) - # Pop the chrom column to use it later for cross-validation. chrom_col = data.pop('chrom') @@ -280,11 +240,11 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp pipelines = { "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=True))]) + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) } else: pipelines = { - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=True))]) + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) } param_grids = { @@ -300,7 +260,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp 'classifier__min_samples_leaf': [1, 2] }, "XGBoost": { - 'classifier__n_estimators': [100, 200], + 'classifier__n_estimators': [150, 250], # Slightly more trees 'classifier__max_depth': [3, 6], 'classifier__learning_rate': [0.01, 0.1], 'classifier__subsample': [0.8, 1] @@ -316,8 +276,18 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp model_name_fp += "_80_20_split" # Perform grid search to find the best hyperparameters for the model, optimizing for precision to prioritize reducing false positives. + # Convert categorical columns to numeric + X_train_processed = X_train.copy() + for col in X_train_processed.columns: + if X_train_processed[col].dtype == 'category': + X_train_processed[col] = X_train_processed[col].cat.codes + elif X_train_processed[col].dtype == 'object': + X_train_processed[col] = pd.to_numeric(X_train_processed[col], errors='coerce') + + X_train_processed = X_train_processed.fillna(0).astype('float64') + grid_search = GridSearchCV(estimator=pipeline, param_grid=param_grids[model_name], cv=cv, scoring='precision', n_jobs=-1) - grid_search.fit(X_train, y_train) + grid_search.fit(X_train_processed, y_train) logging.info('Best hyperparameters for %s: %s', model_name, grid_search.best_params_) # Get predicted probabilities for the training and testing sets. @@ -380,478 +350,48 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp logging.info('Saved the %s model to %s', model_name, model_path) - # Continue if not running SHAP analysis. - logging.info('Completed training and evaluation for %s. Continuing to the next model.', model_name) - - # # Feature importance for Random_Forest and XGBoost - # feature_name_dict = { - # "aln_type": "Alignment Type", - # "aln_type_hmm": "HMM Prediction", - # "simpleRepeat": "Simple Repeat", - # "segdup": "Segmental Duplications", - # "cluster_size": "Cluster Size", - # "read_depth": "Read Depth", - # "aln_offset": "Alignment Offset", - # "hmm_llh": "HMM Log Likelihood", - # "phastCons": "PhastCons Conservation Score", - # "sv_length": "Structural Variant Length", - # "sv_type": "Structural Variant Type", - # "fragile_site": "Fragile Site", - # "centromere": "Centromere", - # "telomere": "Telomere", - # "call_type": "Alignment Type", - # "simple_repeat_cs": "Simple Repeat x Cluster Size", - # "simple_repeat_rd": "Simple Repeat x Read Depth", - # "cs_hmm": "Cluster Size x HMM LLH", - # "fragile_site_cs": "Fragile Site x Cluster Size", - # "fragile_site_rd": "Fragile Site x Read Depth", - # "segdup_cs": "Seg. Dup. x Cluster Size", - # "segdup_rd": "Seg. Dup. x Read Depth" - # } - - # # Map the feature names to their labels. - # feature_names = [feature_name_dict.get(name, name) for name in feature_names] - - # if model_name in ["Random_Forest", "XGBoost"]: - # # Get feature importances. - # importances = model.feature_importances_ - - # # Sort the feature importances in descending order. - # indices = np.argsort(importances)[::-1] - # top_features = [feature_names[i] for i in indices] - # top_importances = [importances[i] for i in indices] - - # # Print the feature ranking. - # logging.info('Feature ranking:') - # for f in range(X_train.shape[1]): - # logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], importances[indices[f]]) - - # # Plot the feature importances. - # plt.figure() - # plt.title('XGBoost Feature Importances') - # plt.bar(range(len(top_features)), top_importances, align='center') - # plt.xticks(range(len(top_features)), top_features, rotation=45, ha='right') - # # plt.bar(range(X_train.shape[1]), importances[indices], align='center') - # # plt.xticks(range(X_train.shape[1]), indices) - # # plt.xlim([-1, X_train.shape[1]]) - - # # Set the x ticks as the feature names - # # plt.xticks(range(X_train.shape[1]), [feature_names[i] for i in indices], rotation=45) - # # plt.xlim([-1, X_train.shape[1]]) - # plt.xlabel('') - # plt.ylabel('Importance') - # plt.tight_layout() - - # # Save the plot to the output directory. - # importance_plot_path = os.path.join(output_directory, model_name_fp + '_feature_importances.png') - # plt.savefig(importance_plot_path, bbox_inches='tight') - # plt.close() - # logging.info('Saved the feature importances plot to %s', importance_plot_path) - - # # Plot the % of SVs (TPs and FPs) overlapping with the genomic - # # context regions (simpleRepeat, segdup, fragile_site, phastCons > - # # 0.5) - # # print("Number of TPs: ", tp_data.shape[0]) - # # print("Number of FPs: ", fp_data.shape[0]) - # # logging.info('Plotting the percentage of SVs (TPs and FPs) overlapping with the genomic context regions.') - # # for feature in ['simpleRepeat', 'segdup', 'fragile_site', 'phastCons']: - # # if feature == 'phastCons': - # # tp_data_feature = tp_data[tp_data[feature] > 0.5] - # # fp_data_feature = fp_data[fp_data[feature] > 0.5] - # # else: - # # tp_data_feature = tp_data[tp_data[feature] == 1] - # # fp_data_feature = fp_data[fp_data[feature] == 1] - # # tp_pcnt = tp_data_feature.shape[0] / tp_data.shape[0] * 100 - # # fp_pcnt = fp_data_feature.shape[0] / fp_data.shape[0] * 100 - # # logging.info('Feature %s: TP = %.2f%%, FP = %.2f%%', feature, tp_pcnt, fp_pcnt) - # # plt.figure() - # # plt.bar(['TP', 'FP'], [tp_pcnt, fp_pcnt], color=['#0072B2', '#D55E00']) # Blue, Vermillion (colorblind-friendly) - # # plt.xlabel('SV Type') - # # plt.ylabel('Percentage of SVs') - # # plt.title('Percentage of SVs Overlapping with %s' % feature) - # # plt.ylim([0, 100]) - # # # Save the plot to the output directory. - # # feature_plot_path = os.path.join(output_directory, model_name_fp + '_%s.png' % feature) - # # plt.savefig(feature_plot_path, bbox_inches='tight') - # # plt.close() - # # logging.info('Saved the %s plot to %s', feature, feature_plot_path) - - # # # Exit early to verify the feature importances. - # # sys.exit(0) - - # # Convert bool columns to int for SHAP analysis. - # bool_cols = X_train.select_dtypes(include=['bool']).columns - # X_train[bool_cols] = X_train[bool_cols].astype(int) - - # # Analyze the feature importances using SHAP values. - # import shap - # # explainer = shap.Explainer(model, X_train) - # # shap_values = explainer(X_train) - - # # SHAP doesn't support XGBoost with categorical features directly, - # # so we need to use their suggested workaround. - # explainer = shap.TreeExplainer(model, feature_perturbation="tree_path_dependent") - # shap_values = explainer.shap_values(X_train) - - # # Plot the SHAP values. - # plt.figure(figsize=(10, 6)) - # shap.summary_plot(shap_values, X_train, feature_names=feature_names, show=False) - # # Save the SHAP summary plot to the output directory. - # shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') - # plt.savefig(shap_plot_path, bbox_inches='tight') - # plt.close() - # logging.info('Saved the SHAP summary plot to %s', shap_plot_path) - - # # ----------------------------------------------- - # # SV Length vs SHAP values - # # ----------------------------------------------- - - # # # Plot 1: SHAP values vs SV length. - # # plt.figure(figsize=(10, 6)) - # # sns.scatterplot(data=X_train, x='abs_SVLEN', y='shap_SVLEN', hue='true_label', alpha=0.6) - # # plt.xscale('log') - # # plt.xlabel("SV Length (bp, log scale)") - # # plt.ylabel("SHAP value for SV Length") - # # plt.title("SHAP value vs. SV length") - # # plt.axhline(0, color='gray', linestyle='--') - # # plt.legend(title="True Label") - # # plt.tight_layout() - # # shap_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_shap_svlen.png') - # # plt.savefig(shap_svlen_plot_path, bbox_inches='tight') - # # plt.close() - # # logging.info('Saved the SHAP value vs. SV length plot to %s', shap_svlen_plot_path) - - # # # Plot 2: Predicted probability vs SV length. - # # X_train['y_prob'] = model.predict_proba(X_train)[:, 1] - # # plt.figure(figsize=(10, 6)) - # # sns.scatterplot(data=X_train, x='abs_SVLEN', y='y_prob', hue='true_label', alpha=0.6) - # # plt.xscale('log') - # # plt.xlabel("SV Length (bp, log scale)") - # # plt.ylabel("Predicted Probability of Being True Positive") - # # plt.title("Predicted Probability vs. SV length") - # # plt.axhline(0.5, color='gray', linestyle='--') - # # plt.legend(title="True Label") - # # plt.tight_layout() - # # prob_svlen_plot_path = os.path.join(output_directory, model_name_fp + '_prob_svlen.png') - # # plt.savefig(prob_svlen_plot_path, bbox_inches='tight') - # # plt.close() - # # logging.info('Saved the predicted probability vs. SV length plot to %s', prob_svlen_plot_path) - - # # plt.title('Feature Importances') - - # # [TEST] Exit after this step to verify the feature importances. - # # sys.exit(0) - - # # For SVC, get the coefficients. - # # if model_name == "SVC": - # # # Get the coefficients. - # # coefficients = model.coef_[0] - - # # # Sort the coefficients in descending order. - # # indices = np.argsort(coefficients)[::-1] - - # # # Print the feature ranking. - # # logging.info('Feature ranking:') - # # for f in range(X_train.shape[1]): - # # logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) - - # # # Plot the coefficients. - # # plt.figure() - # # plt.title('Feature Coefficients') - # # plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') - # # plt.xticks(range(X_train.shape[1]), indices) - # # plt.xlim([-1, X_train.shape[1]]) - # # # Save the plot to the output directory. - # # coeff_plot_path = os.path.join(output_directory, model_name + '_feature_coefficients.png') - # # plt.savefig(coeff_plot_path) - # # plt.close() - # # logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) - - # # For logistic regression, get the coefficients. - # if model_name == "Logistic Regression": - # # Get the coefficients. - # coefficients = model.coef_[0] - - # # Sort the coefficients in descending order. - # indices = np.argsort(coefficients)[::-1] - - # # Print the feature ranking. - # logging.info('Feature ranking:') - # for f in range(X_train.shape[1]): - # logging.info('%d. Feature %s (%f)', f + 1, feature_names[indices[f]], coefficients[indices[f]]) - - # # Plot the coefficients. - # plt.figure() - # plt.title('Feature Coefficients') - # plt.bar(range(X_train.shape[1]), coefficients[indices], align='center') - # plt.xticks(range(X_train.shape[1]), indices) - # plt.xlim([-1, X_train.shape[1]]) - # # Save the plot to the output directory. - # coeff_plot_path = os.path.join(output_directory, model_name_fp + '_feature_coefficients.png') - # plt.savefig(coeff_plot_path) - # plt.close() - # logging.info('Saved the feature coefficients plot to %s', coeff_plot_path) - - # # Get the precision-recall curve f - # # precision, recall, thresholds = precision_recall_curve(labels, y_prob) - # # pr_auc = auc(recall, precision) - - # # Plot the precision-recall curve. - # # plt.figure() - # # plt.plot(recall, precision, color='blue', lw=2, label='Precision-Recall curve (area = %0.2f)' % pr_auc) - # # plt.xlabel('Recall') - # # plt.ylabel('Precision') - # # plt.title('Precision-Recall Curve') - # # plt.legend(loc='lower left') - # # # Save the plot to the output directory. - # # pr_plot_path = os.path.join(output_directory, model_name + '_pr_curve.png') - # # plt.savefig(pr_plot_path) - # # plt.close() - # # logging.info('Saved the Precision-Recall curve to %s', pr_plot_path) - - # # # Get the confusion matrix. - # # cm = confusion_matrix(labels, y_pred) - # # logging.info('Confusion matrix:\n%s', cm) - - # # # Plot the confusion matrix using seaborn. - # # plt.figure() - # # sns.heatmap(cm, annot=True, fmt='d', cmap='Blues') - # # plt.xlabel('Predicted') - # # plt.ylabel('True') - # # plt.title('Confusion Matrix') - # # # Save the plot to the output directory. - # # cm_plot_path = os.path.join(output_directory, model_name + '_confusion_matrix.png') - # # plt.savefig(cm_plot_path) - # # plt.close() - # # logging.info('Saved the confusion matrix to %s', cm_plot_path) - - # # # Print the classification report. - # # logging.info('Classification report:\n%s', classification_report(labels, y_pred)) - - # # # Save the report to a file. - # # report_path = os.path.join(output_directory, model_name + '_classification_report.txt') - # # with open(report_path, 'w') as f: - # # f.write(classification_report(labels, y_pred)) - - # # logging.info('Saved the classification report to %s', report_path) - - # # Save the model. - # model_path = os.path.join(output_directory, model_name_fp + '_caller_model.pkl') - # logging.info('Saving the model to %s', model_path) - # joblib.dump(model, model_path) - # logging.info('Saved the model to %s', model_path) - - # # Run cross-validation by splitting the data into 5 folds and training - # # the model on each fold. - # # from sklearn.model_selection import cross_val_score - # # logging.info('Running cross-validation.') - # # scores = cross_val_score(model, features, labels, cv=5, scoring='f1') - # # logging.info('Cross-validation scores: %s', scores) - # # logging.info('Mean cross-validation score: %f', scores.mean()) - - # # Exit early if not running per-chromosome cross-validation analysis. - # return - - # # Run a cross-validation analysis splitting the data by chromosome. - # logging.info('Running cross-validation analysis splitting the data by chromosome.') - # # chromosomes = features['chrom'].unique() - - # # Specify the chromosomes to not include non-standard chromosomes. - # # chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', - # # 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX', 'chrY'] - - # # 4 August 2025: Remove chrY from the analysis. More than half is missing in - # # GRCh38 and leads to high false positive rates. - # chromosomes = ['chr1', 'chr2', 'chr3', 'chr4', 'chr5', 'chr6', 'chr7', 'chr8', 'chr9', 'chr10', - # 'chr11', 'chr12', 'chr13', 'chr14', 'chr15', 'chr16', 'chr17', 'chr18', 'chr19', 'chr20', 'chr21', 'chr22', 'chrX'] - - # logging.info('Chromosomes: %s', chromosomes) - # f1_scores = {} - # precision_scores = {} - # recall_scores = {} - # cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42) - # pipelines = { - # "Logistic Regression": Pipeline([ - # ('scaler', StandardScaler()), - # ('classifier', LogisticRegression()) - # ]), - # "Random_Forest": Pipeline([ - # ('classifier', RandomForestClassifier(n_estimators=100, random_state=42)) - # ]), - # "XGBoost": Pipeline([ - # ('classifier', XGBClassifier(eval_metric='logloss', enable_categorical=True)) - # ]), - # "SVC": Pipeline([ - # ('scaler', StandardScaler()), - # ('classifier', SVC(kernel='linear', class_weight='balanced', probability=True)) - # ]) - # } - - # # ================================================================= - # # Hyperparameter grids - # # ================================================================= - # param_grids = { - # "Logistic Regression": { - # 'classifier__C': [0.01, 0.1, 1, 10, 100], - # 'classifier__penalty': ['l1', 'l2'], - # 'classifier__solver': ['liblinear'] - # }, - # "Random_Forest": { - # 'classifier__n_estimators': [50, 100, 200], - # 'classifier__max_depth': [None, 10, 20], - # 'classifier__min_samples_split': [2, 5, 10] - # }, - # "XGBoost": { - # 'classifier__n_estimators': [50, 100, 200], - # 'classifier__max_depth': [3, 6, 9], - # 'classifier__learning_rate': [0.1, 0.2, 0.3] - # }, - # "SVC": { - # 'classifier__C': [0.1, 1.0, 10.0], - # 'classifier__kernel': ['linear', 'rbf'], - # 'classifier__gamma': ['scale', 'auto'] - # } - # } - - # for name in pipelines.keys(): - # logging.info(f"\n=============================") - # logging.info(f"Training pipeline: {name}") - # logging.info(f"==============================\n") - # pipe = pipelines[name] - # grid = param_grids[name] - # grid_search = GridSearchCV(pipe, grid, cv=cv, scoring='f1', n_jobs=-1) - # grid_search.fit(features, labels) - # logging.info(f"Best parameters for {name}: {grid_search.best_params_}") - # # # Skip SVC - # # if model_name == "SVC": - # # logging.info('Skipping SVC model for cross-validation analysis.') - # # continue - - # # # Skip all but XGBoost - # # if model_name != "XGBoost": - # # logging.info('Skipping %s model for cross-validation analysis.', model_name) - # # continue - - # # Dictionary with number of SVs in the training set for each chromosome. - # sv_counts = {chrom: features[chrom_col == chrom].shape[0] for chrom in chromosomes} - # logging.info('Number of SVs in the training set for each chromosome: %s', sv_counts) - - # for chrom in chromosomes: - # logging.info('Training the %s model on chromosome %s.', model_name, chrom) - # # Split the data into training and testing sets by chromosome. - # X_train_chrom = features[chrom_col != chrom].copy() - # y_train_chrom = labels[chrom_col != chrom].copy() - # X_test_chrom = features[chrom_col == chrom].copy() - # y_test_chrom = labels[chrom_col == chrom].copy() - - # # Drop the chromosome column from the features. - # # X_train_chrom.drop(columns=['chrom'], inplace=True) - # # X_test_chrom.drop(columns=['chrom'], inplace=True) - - # logging.info('Training set size: %d, Testing set size: %d', - # X_train_chrom.shape[0], X_test_chrom.shape[0]) - # # Train the model. - # model.fit(X_train_chrom, y_train_chrom) - # # Get the predicted probabilities for the testing set. - # y_test_chrom_prob = model.predict_proba(X_test_chrom)[:, 1] - # # Compute the ROC curve and ROC area for the testing set. - # fpr_chrom, tpr_chrom, _ = roc_curve(y_test_chrom, y_test_chrom_prob) - # roc_auc_chrom = auc(fpr_chrom, tpr_chrom) - # logging.info('ROC AUC score for the %s model on chromosome %s: %f', model_name, chrom, roc_auc_chrom) - - # # Compute the F1 score for the testing set. - # from sklearn.metrics import f1_score - # y_test_chrom_pred = (y_test_chrom_prob >= 0.5).astype(int) # Use a threshold of 0.5 for classification. - # f1 = f1_score(y_test_chrom, y_test_chrom_pred) - # f1_scores[(model_name, chrom)] = f1 - # logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) - - # # Compute precision and recall for the testing set. - # from sklearn.metrics import precision_score, recall_score - # precision = precision_score(y_test_chrom, y_test_chrom_pred) - # recall = recall_score(y_test_chrom, y_test_chrom_pred) - # precision_scores[(model_name, chrom)] = precision - # recall_scores[(model_name, chrom)] = recall - # logging.info('Precision for the %s model on chromosome %s: %f', model_name, chrom, precision) - # logging.info('Recall for the %s model on chromosome %s: %f', model_name, chrom, recall) - - # # Compute the F1 score for the testing set. - # # from sklearn.metrics import f1_score - # # y_test_chrom_pred = (y_test_chrom_prob >= optimal_threshold).astype(int) - # # f1 = f1_score(y_test_chrom, y_test_chrom_pred) - # # # f1_scores.append(f1) - # # f1_scores[(model_name, chrom)] = f1 - # # logging.info('F1 score for the %s model on chromosome %s: %f', model_name, chrom, f1) - - # logging.info('Cross-validation analysis completed. F1 scores: %s', f1_scores) - - # # Plot the F1 scores for each model and chromosome (one plot per model). - # logging.info('Plotting the scores for each model and chromosome.') - # metrics = ['F1 Score', 'Precision', 'Recall'] - # for model_name in models.keys(): - # # Skip if not XGBoost - # if model_name != "XGBoost": - # logging.info('Skipping %s model for plotting scores by chromosome.', model_name) - # continue - - # # Save a plot with F1, Precision, and Recall scores for chrY - # if 'chrY' in chromosomes: - # logging.info('Plotting scores for %s model on chrY.', model_name) - # # Create a bar plot for the F1 scores by chromosome. - # chry_f1 = f1_scores.get((model_name, 'chrY'), 0) - # chry_precision = precision_scores.get((model_name, 'chrY'), 0) - # chry_recall = recall_scores.get((model_name, 'chrY'), 0) - - # # plt.figure(figsize=(10, 6)) - - # # Make it way smaller for better visibility. - # plt.figure(figsize=(6, 4)) - - # # Plot F1, Precision, and Recall scores for chrY. - # sns.barplot(x=['F1 Score', 'Precision', 'Recall'], y=[chry_f1, chry_precision, chry_recall], color='black') - - # # plt.xlabel('Metric') - # plt.ylabel('Score') - # plt.title('%s Scores for %s Model on chrY' % (model_name, model_name)) - # plt.xticks(rotation=45) - # plt.legend() - # plt.tight_layout() - # # Save the plot to the output directory. - # score_plot_path = os.path.join(output_directory, model_name + '_scores_chrY.png') - # plt.savefig(score_plot_path) - # plt.close() - # logging.info('Saved the scores plot for chrY to %s', score_plot_path) - - - # for metric, scores in zip(metrics, [f1_scores, precision_scores, recall_scores]): - # logging.info('Plotting %s for %s model by chromosome.', metric, model_name) - # # Create a bar plot for the F1 scores by chromosome. - # # model_f1_scores = {chrom: f1_scores[(model_name, chrom)] for chrom - # # in chromosomes if (model_name, chrom) in f1_scores} - # model_scores = {chrom: scores[(model_name, chrom)] for chrom in chromosomes if (model_name, chrom) in scores} - - # plt.figure(figsize=(10, 6)) - # # Smaller figure size for better visibility. - # # plt.figure(figsize=(8, 5)) - # ax = sns.barplot(x=list(model_scores.keys()), y=list(model_scores.values()), color='black') - - # # Annotate each bar with the number of SVs in the training set for that - # # chromosome. - # # Put the number of SVs above each bar. - # # for i, (chrom, score) in enumerate(model_scores.items()): - # # num_sv = sv_counts[chrom] - # # ax.text(i, score + 0.01, f'{num_sv}', ha='center', va='bottom', fontsize=8) - - # plt.xlabel('Chromosome') - # plt.ylabel(metric) - # plt.title('%s for %s Model by Chromosome' % (metric, model_name)) - # plt.xticks(rotation=45) - # plt.tight_layout() - # # Save the plot to the output directory. - # score_plot_path = os.path.join(output_directory, model_name + '_%s_by_chromosome.png' % metric.lower().replace(' ', '_')) - # plt.savefig(score_plot_path) - # plt.close() - # logging.info('Saved the %s plot to %s', metric, score_plot_path) + logging.info('Completed training and evaluation for %s model.', model_name) + + # Run SHAP if full analysis and no leave-outs (SHAP is slow) + if not split_80_20 and no_leave_out: + # SHAP doesn't support XGBoost with categorical features directly, + # so we need to use their suggested workaround. + classifier = best_model.named_steps['classifier'] + + # Prepare numeric data for SHAP + X_train_numeric = X_train.copy() + for col in X_train_numeric.columns: + if X_train_numeric[col].dtype == 'object': + X_train_numeric[col] = pd.to_numeric(X_train_numeric[col], errors='coerce') + + X_train_numeric = X_train_numeric.fillna(0).astype('float64') + + # Use a larger background sample to cover all tree leaves + sample_size = min(5000, len(X_train_numeric)) # Larger sample + X_background = shap.sample(X_train_numeric, sample_size, random_state=42) + + # Create explainer and calculate SHAP values + explainer = shap.TreeExplainer(classifier, X_background) + + # Calculate SHAP values + shap_values = explainer.shap_values(X_train_numeric) + + # 1. Summary plot (existing) + plt.figure(figsize=(10, 8)) + shap.summary_plot(shap_values, X_train_numeric, show=False) + shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + plt.savefig(shap_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved the SHAP summary plot to %s', shap_plot_path) + + # 2. Bar plot showing mean absolute SHAP values (feature importance) + plt.figure(figsize=(10, 8)) + shap.summary_plot(shap_values, X_train_numeric, plot_type="bar", show=False) + bar_plot_path = os.path.join(output_directory, model_name_fp + '_shap_importance_plot.png') + plt.savefig(bar_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved the SHAP importance plot to %s', bar_plot_path) + if __name__ == '__main__': # Parse the command line arguments. From 618b3b2c9ae74f3072a59345d07ce1485a3f7ac0 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 28 Feb 2026 00:28:38 -0500 Subject: [PATCH 47/93] update features --- contextscore/extract_features.py | 559 ++++++++++++++++++------------- contextscore/predict.py | 4 +- contextscore/train_full_model.py | 156 ++++++--- 3 files changed, 450 insertions(+), 269 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index be25384..9ac7939 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -14,16 +14,16 @@ import os import sys import logging +import heapq import numpy as np import pandas as pd import subprocess -import joblib from io import StringIO def read_cytoband_file(cytoband_file): """Get the centromere and telomere regions for each chromosome.""" - cytobands = pd.read_csv(cytoband_file, sep='\t', header=None, names=["chrom", "start", "end", "name", "gieStain"]) + cytobands = pd.read_csv(cytoband_file, sep='\t', header=0, names=["chrom", "start", "end", "name", "gieStain"], dtype={"chrom": str, "start": int, "end": int, "name": str, "gieStain": str}) chrom_dict = {} for chrom in cytobands['chrom'].unique(): @@ -31,188 +31,45 @@ def read_cytoband_file(cytoband_file): if chrom == 'chrM': continue - chrom_df = cytobands[cytobands['chrom'] == chrom] - # First and last bands are the telomeres. - # First telomere: + chrom_df = cytobands[cytobands['chrom'] == chrom].sort_values('start') + # Store chromosome boundaries and terminal bands. chrom_dict[chrom] = { - 'telomerep': chrom_df.iloc[0]['name'], - 'telomereq': chrom_df.iloc[-1]['name'] + 'chrom_start': int(chrom_df['start'].min()), + 'chrom_end': int(chrom_df['end'].max()), + 'telomerep_start': int(chrom_df.iloc[0]['start']), + 'telomerep_end': int(chrom_df.iloc[0]['end']), + 'telomereq_start': int(chrom_df.iloc[-1]['start']), + 'telomereq_end': int(chrom_df.iloc[-1]['end']) } - # Identify the 2 centromeres for p and q (contain "acen"). - centromere_p = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('p')] - centromere_q = chrom_df[chrom_df['name'].str.contains('acen') & chrom_df['name'].str.contains('q')] + # Identify centromeres from cytobands with gieStain == "acen". + acen_df = chrom_df[chrom_df['gieStain'] == 'acen'] + centromere_p = acen_df[acen_df['name'].str.startswith('p', na=False)] + centromere_q = acen_df[acen_df['name'].str.startswith('q', na=False)] if not centromere_p.empty: - chrom_dict[chrom]['centromerep'] = centromere_p.iloc[0]['name'] + chrom_dict[chrom]['centromerep_start'] = int(centromere_p.iloc[0]['start']) + chrom_dict[chrom]['centromerep_end'] = int(centromere_p.iloc[0]['end']) if not centromere_q.empty: - chrom_dict[chrom]['centromereq'] = centromere_q.iloc[0]['name'] + chrom_dict[chrom]['centromereq_start'] = int(centromere_q.iloc[0]['start']) + chrom_dict[chrom]['centromereq_end'] = int(centromere_q.iloc[0]['end']) - # print("Chromosome:", chrom) - # print(chrom_dict[chrom]) + # Combined centromere span (union of acen blocks) for distance calculation. + if not acen_df.empty: + chrom_dict[chrom]['centromere_start'] = int(acen_df['start'].min()) + chrom_dict[chrom]['centromere_end'] = int(acen_df['end'].max()) return chrom_dict -import pandas as pd -import numpy as np - -def normalize_column(df, column): - """Normalize a column using z-score normalization.""" - mean = df[column].mean() - std = df[column].std() - df[column] = (df[column] - mean) / std - return df - -def add_interaction_terms(df): - """Add interaction terms to the dataframe.""" - - # Replace cluster_size with log transformed values to reduce the range. - # df['log_cs'] = np.log1p(np.abs(df['cluster_size'])) - - # df['log_rd'] = np.log1p(np.abs(df['read_depth'])) - # Log-transform the sv_length column to reduce the range. - # df['log_svlen'] = np.log1p(np.abs(df['sv_length'])) - - # Log-transform the read_depth column to reduce the range. - # df['log_rd'] = np.log1p(np.abs(df['read_depth'])) - - # Log-transform the cluster_size column to reduce the range. - # df['log_cs'] = np.log1p(np.abs(df['cluster_size'])) - - # Add a feature for whether the SV is a CNV (DUP, DEL with non-zero HMM log - # likelihood). - # df['is_cnv_hmm'] = df['sv_type'].apply(lambda x: 1 if x in [0, 1] else 0) # Assuming 0 is DEL and 1 is DUP - # df['is_cnv_hmm'] = df['is_cnv_hmm'] & (df['hmm_llh'] != 0) - - # Cluster size * hmm_llh interaction term - df['cs_hmm'] = df['cluster_size'] * df['hmm_llh'] - - # Replace hmm_llh with likelihood - # df['hmm_llh'] = np.clip(np.exp(df['hmm_llh']), 1e-6, 0.999999) - - - # Boolean for whether the SV is an inversion (INV). - # df['is_inv'] = df['sv_type'].apply(lambda x: 1 if x == 2 else 0) # Assuming 2 is INV - - # SV length interaction terms - # df['svlenkb_cs'] = np.abs(df['sv_length']) / 1000 * df['cluster_size'] - # df['svlenkb_rd'] = np.abs(df['sv_length']) / 1000 * df['read_depth'] - # df['svlenkb_hmm'] = np.abs(df['sv_length']) / 1000 * df['hmm_llh'] - # df['hmm_llh_scaled'] = df['hmm_llh'] / np.log1p(np.abs(df['sv_length'])) - - # df['hmm_llh_scaled'] = df['hmm_llh'] / (np.log1p(np.abs(df['sv_length']))) - # df['hmm_llh_per_kb'] = df['hmm_llh_scaled'] / (np.abs(df['sv_length']) / 1000 + 1e-6) - - # Cluster size / read depth interaction terms - # df['cs_rd'] = df['cluster_size'] / (df['read_depth'] + 1e-6) - - # Segdup * HMM llh interaction term - # df['segdup_hmm'] = df['segdup'] * df['hmm_llh'] - - # Segdup * cs/rd interaction term - # df['segdup_cs_rd'] = df['segdup'] * df['cs_rd'] - - # Simple repeat * cs/rd interaction terfm - # df['simple_repeat_cs_rd'] = df['simpleRepeat'] * df['cs_rd'] - - # Segdup * sv_length interaction term - # df['segdup_svlen'] = df['segdup'] * np.abs(df['sv_length']) - - # Replace nans in segdup_hmm with 0 - # df['segdup_hmm'] = df['segdup_hmm'].fillna(0) - - # Segdup * cs - df['segdup_cs'] = df['segdup'] * df['cluster_size'] - - # Segdup * rd - df['segdup_rd'] = df['segdup'] * df['read_depth'] - - # Simple repeat * cs - df['simple_repeat_cs'] = df['simpleRepeat'] * df['cluster_size'] - - # Simple repeat * rd - df['simple_repeat_rd'] = df['simpleRepeat'] * df['read_depth'] - - # Fragile site * cs - df['fragile_site_cs'] = df['fragile_site'] * df['cluster_size'] - - # Fragile site * rd - df['fragile_site_rd'] = df['fragile_site'] * df['read_depth'] - - # Drop the segdup column - # df.drop(columns=['segdup'], inplace=True) - - # # Drop the simple_repeat column - # df.drop(columns=['simpleRepeat'], inplace=True) - - # # Drop the fragile_site column - # df.drop(columns=['fragile_site'], inplace=True) - - # Drop cluster_size - # df.drop(columns=['cluster_size'], inplace=True) - - # Drop the simple_repeat column - # df.drop(columns=['simpleRepeat'], inplace=True) - - # Drop sv_type - # df.drop(columns=['sv_type'], inplace=True) - - # --- - # Cluster size per kb - # df['cs_per_kb'] = df['cluster_size'] / (np.abs(df['sv_length']) / 1000 + 1e-6) - - # # Read depth per kb - # df['rd_per_kb'] = df['read_depth'] / (np.abs(df['sv_length']) / 1000 + - # 1e-6) - # --- - - # Segmental duplication interaction terms - # CNVs are mostly in segmental duplications, so we can use the - # segmental duplication score to create interaction terms. - # df['is_dup_and'] - - # Cluster size * sv_length - # df['log_svlen_cs'] = df['log_svlen'] + df['log_cs'] - - # HMM log likelihood * sv_length - # df['log_svlen_hmm'] = df['log_svlen'] + df['hmm_llh'] - - # Remove log_cs - # df.drop(columns=['log_cs'], inplace=True) - - # Read depth * sv_length - # df['log_svlen_rd'] = df['log_svlen'] + df['log_rd'] - - # Remove the log_svlen, log_rd, and log_cs columns, keeping the interaction - # terms only. - # df.drop(columns=['log_svlen', 'log_rd', 'log_cs'], inplace=True) - - # df['rd_cs'] = df['read_depth'] * df['cluster_size'] - # df['svlen_hmm'] = df['log_svlen'] * df['hmm_llh'] - # df['cs_hmm'] = df['cluster_size'] * df['hmm_llh'] - # df['rd_hmm'] = df['read_depth'] * df['hmm_llh'] - # df['hmm_per_kb'] = df['hmm_llh'] / (np.abs(df['sv_length']) / 1000 + 1) - - return df - -def add_overlap_count(df, chrom_col='chrom', start_col='start', end_col='end'): - """Add 'overlap_count' = number of other SVs on same chr that overlap each SV.""" - out = pd.Series(0, index=df.index, dtype=np.int32) - - for chrom, group in df.groupby(chrom_col, sort=False): - starts = group[start_col].to_numpy() - ends = group[end_col].to_numpy() - - # overlap if start_i < end_j AND start_j < end_i - overlap_matrix = (starts[:, None] < ends[None, :]) & \ - (starts[None, :] < ends[:, None]) - - # subtract 1 to drop the self-overlap on the diagonal - counts = overlap_matrix.sum(axis=1) - 1 - out.loc[group.index] = counts.astype(np.int32) - - df['overlap_count'] = out - return df +def normalize_chrom_label(chrom): + """Normalize chromosome labels for robust joins/lookups (e.g., 1 vs chr1).""" + if pd.isna(chrom): + return None + chrom_str = str(chrom).strip() + if not chrom_str: + return None + chrom_str = chrom_str[3:] if chrom_str.lower().startswith('chr') else chrom_str + return chrom_str.upper() def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion='hg38'): """Extract the features from the BED file, columns are in the first row: @@ -220,6 +77,8 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= """ logging.info('Extracting features from the BED file %s', input_bed) + + # Get the number of columns in the BED file. with open(input_bed, 'r') as f: first_line = f.readline().strip() @@ -256,7 +115,7 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop the original aln_type column. bed_df.drop(columns=['aln_type'], inplace=True) - # Drop the sv_length column since it is noisy + # Drop the sv_length column since it is highly correlated with false positive SVs bed_df.drop(columns=['sv_length'], inplace=True) # Print the number of NaN values @@ -303,7 +162,74 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop telomere and centromere columns (they don't affect predictions). bed_df.drop(columns=['telomere', 'centromere'], inplace=True) - # Return the features. + # Drop the genotype column from the data. + bed_df = bed_df.drop(columns=['genotype'], errors='ignore') + + # Drop the cn_state column from the data. + bed_df = bed_df.drop(columns=['cn_state'], errors='ignore') + + # Add distance to nearest other SV call, clustered false positives often appear near real SVs. + # Vectorized by chromosome to avoid row-wise apply. + logging.info('Computing distance to nearest other SV call (same chromosome)...') + logging.info('Applying distance calculation to all rows...') + bed_df['dist_to_nearest_sv'] = np.nan + + for chrom, idx in bed_df.groupby('chrom', sort=False).groups.items(): + chrom_df = bed_df.loc[idx, ['start', 'end']].sort_values(['start', 'end']) + n = chrom_df.shape[0] + + if n <= 1: + continue + + starts = chrom_df['start'].to_numpy(dtype=np.int64) + ends = chrom_df['end'].to_numpy(dtype=np.int64) + + # Previous interval summary. + prev_max_end = np.maximum.accumulate(ends) + prev_max_end_excl = np.empty(n, dtype=np.int64) + prev_max_end_excl[0] = np.iinfo(np.int64).min + prev_max_end_excl[1:] = prev_max_end[:-1] + + # Next interval summary. + next_start_excl = np.empty(n, dtype=np.int64) + next_start_excl[:-1] = starts[1:] + next_start_excl[-1] = np.iinfo(np.int64).max + + # Overlap checks with prior/next intervals. + overlap_prev = prev_max_end_excl > starts + overlap_next = ends > next_start_excl + overlap_any = overlap_prev | overlap_next + + # Gap to closest left/right neighbor (touching intervals yield 0). + left_gap = starts - prev_max_end_excl + right_gap = next_start_excl - ends + + # No-left/no-right sentinels. + left_gap[0] = np.iinfo(np.int64).max + right_gap[-1] = np.iinfo(np.int64).max + + nearest = np.minimum(left_gap, right_gap).astype(np.float64) + nearest[overlap_any] = 0.0 + + # Any remaining sentinel values are undefined (should only happen in degenerate cases). + sentinel = float(np.iinfo(np.int64).max) + nearest[nearest >= sentinel] = np.nan + + bed_df.loc[chrom_df.index, 'dist_to_nearest_sv'] = nearest + + logging.info('Distance to nearest SV calculated. Coverage: %.1f%%', (bed_df['dist_to_nearest_sv'].notna().sum() / len(bed_df) * 100)) + + # Print statistics about the distance to nearest SV feature. + logging.info('Distance to nearest SV - mean: %.2f, median: %.2f, std: %.2f', bed_df['dist_to_nearest_sv'].mean(), bed_df['dist_to_nearest_sv'].median(), bed_df['dist_to_nearest_sv'].std()) + + # Save the first 500 features to a new file. + features_file = os.path.join(outdiranno, 'features.tsv') + logging.info('Saving the features to %s', features_file) + # Save only the first 500 rows to avoid saving too many records. + bed_df.head(500).to_csv(features_file, sep='\t', index=False) + logging.info('Saved the features to %s', features_file) + + # Return the features dataframe. return bed_df @@ -382,12 +308,6 @@ def bed_to_annovar_input(bed_file): logging.info('Converting the BED file to ANNOVAR input format.') # Read the BED file using pandas (first line is the header with the column names). - # df = pd.read_csv(bed_file, sep='\t', header=None, comment='#', - # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], skiprows=1) - # df = pd.read_csv(bed_file, sep='\t', header=0, comment='#', - # names=["CHROM", "POS", "END", "SVTYPE", "SVLEN"], usecols=[0, 1, 2, 3, 4], - # dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32, - # 'SVTYPE': str, 'SVLEN': np.int32}) df = pd.read_csv(bed_file, sep='\t', usecols=[0, 1, 2], names=["CHROM", "POS", "END"], dtype={'CHROM': str, 'POS': np.int32, 'END': np.int32}) @@ -464,7 +384,6 @@ def annotate(annovar_input, annovar_path, db_path, output_dir, buildversion='hg3 "--nastring .", "-polish" ] - # "--protocol genomicSuperDups", try: subprocess.run(" ".join(cmd), shell=True, check=True) @@ -483,33 +402,21 @@ def get_cytoband_is_c_t(chrom_dict, chrom, cytoband): is_telomere = False is_centromere = False - # Check if the cytoband is a telomere. + # Check if the cytoband annotation indicates telomere or centromere regions. try: - if 'telomerep' in chrom_dict[chrom] and chrom_dict[chrom]['telomerep'] in cytoband: + # Centromeres contain 'acen' in their names. + if 'acen' in cytoband: + is_centromere = True + # Telomeres are at the extreme bands - simplistic check for p/q terminal regions + # (This is a simplified heuristic; a more robust method would use actual position data) + elif 'p11' in cytoband or 'p12' in cytoband or 'p13' in cytoband: # p-arm terminal is_telomere = True - - if 'telomereq' in chrom_dict[chrom] and chrom_dict[chrom]['telomereq'] in cytoband: + elif 'q13' in cytoband or 'q14' in cytoband: # q-arm terminal (varies by chromosome) is_telomere = True - if 'centromerep' in chrom_dict[chrom] and chrom_dict[chrom]['centromerep'] in cytoband: - is_centromere = True - - if 'centromereq' in chrom_dict[chrom] and chrom_dict[chrom]['centromereq'] in cytoband: - is_centromere = True - - except KeyError: - pass - # Handle the case where chrom_dict[chrom] is not defined. - # logging.warning('chrom_dict[%s] is not defined.', chrom) - # logging.warning('Cytoband: %s', cytoband) - # logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict.get(chrom, 'Not found')) - except TypeError: pass - # Handle the case where telomerep is not defined. - # logging.warning('chrom_dict[%s] does not have telomerep defined.', chrom) - # logging.warning('Cytoband: %s', cytoband) - # logging.warning('chrom_dict[%s]: %s', chrom, chrom_dict[chrom]) + # Handle the case where cytoband is not a string. return is_telomere, is_centromere @@ -572,7 +479,7 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir, buildve logging.info('Annotating simple repeats using the BED file (GRCh38): %s', simpleRepeat_bed) simpleRepeat_df = run_bedtools_intersect(input_bed, simpleRepeat_bed, training_format) - # Merge the simpleRepeat annotations with the true positive data. + # Check if record has any simple repeats (boolean indicator). data['simpleRepeat'] = data.merge(simpleRepeat_df, on=['chrom', 'start', 'end'], how='left')['chr_anno'].notna() logging.info('Number of records with simple repeats: %d', data['simpleRepeat'].sum()) @@ -611,32 +518,18 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir, buildve logging.info('Reading the ANNOVAR output file: %s', anno_file) anno_df = pd.read_csv(anno_file, sep='\t', header=0, comment='#') - # Replace NaN values for the genomicSuperDups column with 0. - # anno_df['genomicSuperDups'].fillna(0, inplace=True) - - # # Replace NaN values for the cytoBand column with "" - # # anno_df['cytoBand'].fillna("", inplace=True).astype(str) - # anno_df['cytoBand'] = anno_df['cytoBand'].fillna("").astype(str) - # Convert chr, start, end to the same data types as the data. anno_df['Chr'] = anno_df['Chr'].astype(str) anno_df['Start'] = anno_df['Start'].astype(np.int32) anno_df['End'] = anno_df['End'].astype(np.int32) # Merge the ANNOVAR annotations with the data. - logging.info('Merging the ANNOVAR annotations with the data.') + logging.info('Merging ANNOVAR annotations (%d records) with data (%d records)...', anno_df.shape[0], data.shape[0]) data = data.merge(anno_df, left_on=['chrom', 'start', 'end'], right_on=['Chr', 'Start', 'End'], how='left') - - # Print the first 20 segdup values. - # logging.info('First 20 values of the segdup column: %s', data['genomicSuperDups'].head(20)) - - # Extract segmental duplication scores. - # def extract_max_score(score_series): - # """Extract and return the maximum Score= value from a series.""" - # scores = score_series.str.extract(r'Score=([\d\.]+)')[0].dropna().astype(float) - # return scores.max() if not scores.empty else 0 + logging.info('ANNOVAR merge completed.') # Extract segmental duplication scores. + logging.info('Extracting segmental duplication scores...') def extract_scores(score_str): """Extract and return the segmental duplication scores from a string.""" if pd.isna(score_str) or score_str == '.': @@ -651,8 +544,10 @@ def extract_scores(score_str): # Extract the segmental duplication scores. data['segdup'] = data['genomicSuperDups'].apply(extract_scores) + logging.info('Segmental duplication scores extracted. Mean: %.3f', data['segdup'].mean()) # Extract the cytoband annotations. + logging.info('Processing cytoband annotations for telomere/centromere detection...') def get_cyto_info(row): """Get telomere and centromere information for a row.""" if pd.notna(row['cytoBand']): @@ -660,17 +555,229 @@ def get_cyto_info(row): return (False, False) - data['telomere'], data['centromere'] = data.apply(get_cyto_info, axis=1, result_type='expand') + cyto_flags = data.apply(get_cyto_info, axis=1, result_type='expand') + data[['telomere', 'centromere']] = cyto_flags + logging.info('Telomere/centromere annotation complete. Telomeres: %d, Centromeres: %d', data['telomere'].sum(), data['centromere'].sum()) + + # Add feature dist_to_telomere, dist_to_centromere using vectorized operations. + logging.info('Computing distances to chromosome telomeres and centromeres...') + chrom_bounds = pd.DataFrame([ + { + 'chrom': chrom, + 'chrom_norm': normalize_chrom_label(chrom), + 'chrom_start': values.get('chrom_start', np.nan), + 'chrom_end': values.get('chrom_end', np.nan), + 'centromere_start': values.get('centromere_start', np.nan), + 'centromere_end': values.get('centromere_end', np.nan) + } + for chrom, values in cytoband_dict.items() + ]) + + data_with_bounds = data.copy() + data_with_bounds['chrom_norm'] = data_with_bounds['chrom'].apply(normalize_chrom_label) + data_with_bounds = data_with_bounds.merge( + chrom_bounds[['chrom_norm', 'chrom_start', 'chrom_end', 'centromere_start', 'centromere_end']], + on='chrom_norm', + how='left' + ) + + starts = data_with_bounds['start'].to_numpy(dtype=np.float64) + ends = data_with_bounds['end'].to_numpy(dtype=np.float64) + chrom_starts = data_with_bounds['chrom_start'].to_numpy(dtype=np.float64) + chrom_ends = data_with_bounds['chrom_end'].to_numpy(dtype=np.float64) + centromere_starts = data_with_bounds['centromere_start'].to_numpy(dtype=np.float64) + centromere_ends = data_with_bounds['centromere_end'].to_numpy(dtype=np.float64) + + # Telomere distance: nearest interval-to-point distance to chromosome start/end. + dist_left_tel = np.minimum(np.abs(starts - chrom_starts), np.abs(ends - chrom_starts)) + dist_right_tel = np.minimum(np.abs(starts - chrom_ends), np.abs(ends - chrom_ends)) + dist_to_telomere = np.minimum(dist_left_tel, dist_right_tel) + tel_valid = (~np.isnan(chrom_starts)) & (~np.isnan(chrom_ends)) + dist_to_telomere[~tel_valid] = np.nan + + # Centromere distance: 0 if overlapping centromere span, else gap to nearest boundary. + cen_valid = (~np.isnan(centromere_starts)) & (~np.isnan(centromere_ends)) + dist_to_centromere = np.full(len(data_with_bounds), np.nan, dtype=np.float64) + left_of_centromere = ends < centromere_starts + right_of_centromere = starts > centromere_ends + overlap_centromere = (~left_of_centromere) & (~right_of_centromere) + dist_to_centromere[cen_valid & left_of_centromere] = (centromere_starts - ends)[cen_valid & left_of_centromere] + dist_to_centromere[cen_valid & right_of_centromere] = (starts - centromere_ends)[cen_valid & right_of_centromere] + dist_to_centromere[cen_valid & overlap_centromere] = 0.0 + + data['dist_to_telomere'] = dist_to_telomere + data['dist_to_centromere'] = dist_to_centromere + tel_zero_pct = (data['dist_to_telomere'] == 0).mean() * 100 + cen_zero_pct = (data['dist_to_centromere'] == 0).mean() * 100 + cen_le1_pct = (data['dist_to_centromere'] <= 1).mean() * 100 + cen_desc = data['dist_to_centromere'].describe(percentiles=[0.5, 0.9, 0.99]) + # Diagnostics for coordinate issues that can indicate malformed records. + out_of_bounds_pct = ((data_with_bounds['start'] < data_with_bounds['chrom_start']) | (data_with_bounds['end'] > data_with_bounds['chrom_end'])).mean() * 100 + logging.info( + 'Telomere/centromere distances calculated. Mean dist_to_telomere: %.2f, Mean dist_to_centromere: %.2f, telomere zeros: %.2f%%, centromere zeros: %.2f%%, out-of-bounds coords: %.2f%%', + data['dist_to_telomere'].mean(), + data['dist_to_centromere'].mean(), + tel_zero_pct, + cen_zero_pct, + out_of_bounds_pct + ) + logging.info( + 'Centromere distance distribution: min=%.2f, p50=%.2f, p90=%.2f, p99=%.2f, max=%.2f, <=1bp: %.2f%%', + cen_desc['min'], + cen_desc['50%'], + cen_desc['90%'], + cen_desc['99%'], + cen_desc['max'], + cen_le1_pct + ) + + # Log-transform long-tailed distance features for model stability. + logging.info('Applying log1p transform to dist_to_telomere and dist_to_centromere...') + data['dist_to_telomere'] = np.log1p(data['dist_to_telomere']) + data['dist_to_centromere'] = np.log1p(data['dist_to_centromere']) + logging.info( + 'Distance log-transform complete. Mean log-dist_to_telomere: %.3f, Mean log-dist_to_centromere: %.3f', + data['dist_to_telomere'].mean(), + data['dist_to_centromere'].mean() + ) + + # Helper function to compute repeat density across entire SV span + def compute_repeat_density_span(data_df, repeat_overlap_df): + """Compute repeat span density as the fraction of the SV covered by simple repeats.""" + repeat_copy = repeat_overlap_df.copy() + repeat_copy['overlap_length'] = repeat_copy['end_anno'] - repeat_copy['start_anno'] + + # Group by original SV coordinates and sum total overlapping lengths + density_df = repeat_copy.groupby(['chrom', 'start', 'end'])['overlap_length'].sum().reset_index() + density_df.columns = ['chrom', 'start', 'end', 'total_repeat_length'] + + # Merge with data and calculate density + merged = data_df.merge(density_df, on=['chrom', 'start', 'end'], how='left') + merged['total_repeat_length'] = merged['total_repeat_length'].fillna(0) + span_length = (merged['end'] - merged['start']).astype(float) + zero_span_count = (span_length <= 0).sum() + if zero_span_count > 0: + logging.info('Found %d SV records with non-positive span; setting repeat_span_density to 0 for these records.', zero_span_count) + valid_span = span_length > 0 + density_values = pd.Series(0.0, index=merged.index) + density_values.loc[valid_span] = merged.loc[valid_span, 'total_repeat_length'] / span_length.loc[valid_span] + density_values = density_values.clip(lower=0, upper=1) + + return density_values + + # Add breakpoint features from both breakpoints (vectorized by chromosome). + logging.info('Computing breakpoint features (segdup and simple repeat at left/right breakpoints)...') + + def point_max_overlap_score(points, starts, ends, scores): + """For each query point, return max score among overlapping intervals.""" + if len(starts) == 0: + return np.zeros(len(points), dtype=np.float64) + + order = np.argsort(starts, kind='mergesort') + starts = starts[order] + ends = ends[order] + scores = scores[order] + + point_order = np.argsort(points, kind='mergesort') + result = np.zeros(len(points), dtype=np.float64) + + active = [] # max-heap via negative score: (-score, interval_end) + interval_idx = 0 + n_intervals = len(starts) + + for point_idx in point_order: + point = points[point_idx] + + while interval_idx < n_intervals and starts[interval_idx] <= point: + heapq.heappush(active, (-scores[interval_idx], ends[interval_idx])) + interval_idx += 1 + + while active and active[0][1] < point: + heapq.heappop(active) + + if active: + result[point_idx] = -active[0][0] + + return result + + def point_in_any_interval(points, starts, ends): + """For each query point, return whether it is covered by any interval.""" + if len(starts) == 0: + return np.zeros(len(points), dtype=bool) + + order = np.argsort(starts, kind='mergesort') + starts_sorted = starts[order] + ends_sorted = ends[order] + max_end_prefix = np.maximum.accumulate(ends_sorted) + + idx = np.searchsorted(starts_sorted, points, side='right') - 1 + covered = np.zeros(len(points), dtype=bool) + valid = idx >= 0 + covered[valid] = max_end_prefix[idx[valid]] >= points[valid] + + return covered + + # Precompute interval arrays by chromosome for fast lookup. + anno_segdup = anno_df[['Chr', 'Start', 'End', 'genomicSuperDups']].copy() + anno_segdup['segdup_score'] = anno_segdup['genomicSuperDups'].apply(extract_scores) + segdup_intervals = { + normalize_chrom_label(chrom): ( + grp['Start'].to_numpy(dtype=np.int64), + grp['End'].to_numpy(dtype=np.int64), + grp['segdup_score'].to_numpy(dtype=np.float64) + ) + for chrom, grp in anno_segdup.groupby('Chr', sort=False) + } + + repeat_intervals = { + normalize_chrom_label(chrom): ( + grp['start_anno'].to_numpy(dtype=np.int64), + grp['end_anno'].to_numpy(dtype=np.int64) + ) + for chrom, grp in simpleRepeat_df.groupby('chrom', sort=False) + } + # Allocate result columns. + data['segdup_left'] = 0.0 + data['segdup_right'] = 0.0 + data['simpleRepeat_left'] = False + data['simpleRepeat_right'] = False + + logging.info('Computing left breakpoint features...') + for chrom, chrom_idx in data.groupby('chrom', sort=False).groups.items(): + idx = list(chrom_idx) + left_points = data.loc[idx, 'start'].to_numpy(dtype=np.int64) + right_points = data.loc[idx, 'end'].to_numpy(dtype=np.int64) + chrom_norm = normalize_chrom_label(chrom) + + seg_starts, seg_ends, seg_scores = segdup_intervals.get( + chrom_norm, (np.array([], dtype=np.int64), np.array([], dtype=np.int64), np.array([], dtype=np.float64)) + ) + rep_starts, rep_ends = repeat_intervals.get( + chrom_norm, (np.array([], dtype=np.int64), np.array([], dtype=np.int64)) + ) + + data.loc[idx, 'segdup_left'] = point_max_overlap_score(left_points, seg_starts, seg_ends, seg_scores) + data.loc[idx, 'simpleRepeat_left'] = point_in_any_interval(left_points, rep_starts, rep_ends) + + data.loc[idx, 'segdup_right'] = point_max_overlap_score(right_points, seg_starts, seg_ends, seg_scores) + data.loc[idx, 'simpleRepeat_right'] = point_in_any_interval(right_points, rep_starts, rep_ends) + + logging.info('Breakpoint features complete. segdup_left mean: %.3f, segdup_right mean: %.3f', data['segdup_left'].mean(), data['segdup_right'].mean()) + + # Calculate repeat span density feature using the simpleRepeat annotations. For each record, calculate the repeat span density as the total overlapping length of all simple repeats divided by the length of the record (end - start). + logging.info('Computing repeat span density (total repeat coverage across SV)...') + data['repeat_span_density'] = compute_repeat_density_span(data, simpleRepeat_df) # across entire SV + logging.info('Repeat span density calculated. Mean: %.3f, Max: %.3f', data['repeat_span_density'].mean(), data['repeat_span_density'].max()) + # Print the current columns in the data. logging.info('Current columns in the data: %s', data.columns) - # Drop the unnecessary columns. - data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt'], inplace=True) + # Drop the unnecessary/redundant columns. + data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt', 'segdup', 'simpleRepeat'], inplace=True) logging.info('Dropped the unnecessary columns. Current columns: %s', data.columns) logging.info('Number of records after adding annotations: %d', data.shape[0]) - # logging.info('First 5 rows of the data after adding annotations:\n%s', data.head()) return data diff --git a/contextscore/predict.py b/contextscore/predict.py index 0261550..5e26651 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -20,7 +20,7 @@ import matplotlib.pyplot as plt -from extract_features import extract_features, add_interaction_terms +from extract_features import extract_features def create_bed(input_vcf, output_bed): """Create a BED file from the input VCF file. Extract the following fields: @@ -284,7 +284,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist shap_df['end'] = end_col.values shap_df['sv_type_str'] = sv_type_str_col.values # shap_df['sv_length'] = sv_length_col.values - shap_df['sv_length'] = feature_df['sv_length'].values # Use the original sv_length from feature_df + # shap_df['sv_length'] = feature_df['sv_length'].values # Use the original sv_length from feature_df shap_df['read_depth'] = read_depth_col.values shap_df['cluster_size'] = cluster_size_col.values shap_df['predicted_probability'] = y_pred[:, 1] diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 3126bb3..aa5f40f 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -47,6 +47,7 @@ import os import logging import joblib +import numpy as np import pandas as pd from sklearn.model_selection import train_test_split @@ -63,7 +64,7 @@ import matplotlib.pyplot as plt -from extract_features import extract_features, add_interaction_terms, normalize_column +from extract_features import extract_features # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') @@ -84,6 +85,57 @@ def balance_tp_fp_datasets(tp_data, fp_data): return tp_data, fp_data + +def impute_missing_values(tp_data, fp_data): + """Impute missing values using TP-referenced statistics to avoid excessive row drops.""" + logging.info('Imputing NaN values using TP-referenced statistics...') + + # Report NaNs by column before imputation. + tp_nan = tp_data.isna().sum() + fp_nan = fp_data.isna().sum() + tp_nan = tp_nan[tp_nan > 0].sort_values(ascending=False) + fp_nan = fp_nan[fp_nan > 0].sort_values(ascending=False) + if not tp_nan.empty: + logging.info('TP NaN counts by column before imputation: %s', tp_nan.to_dict()) + if not fp_nan.empty: + logging.info('FP NaN counts by column before imputation: %s', fp_nan.to_dict()) + + bool_like_cols = { + 'fragile_site', 'phastCons', 'telomere', 'centromere', + 'simpleRepeat_left', 'simpleRepeat_right' + } + + shared_cols = [col for col in tp_data.columns if col in fp_data.columns and col != 'label'] + for col in shared_cols: + if not (tp_data[col].isna().any() or fp_data[col].isna().any()): + continue + + if col in bool_like_cols: + tp_data[col] = tp_data[col].fillna(False) + fp_data[col] = fp_data[col].fillna(False) + continue + + if pd.api.types.is_numeric_dtype(tp_data[col]): + fill_value = tp_data[col].median(skipna=True) + if pd.isna(fill_value): + fill_value = 0.0 + tp_data[col] = tp_data[col].fillna(fill_value) + fp_data[col] = fp_data[col].fillna(fill_value) + continue + + # Categorical/object fallback: use TP mode, else placeholder. + mode_values = tp_data[col].mode(dropna=True) + fill_value = mode_values.iloc[0] if not mode_values.empty else 'UNKNOWN' + tp_data[col] = tp_data[col].fillna(fill_value) + fp_data[col] = fp_data[col].fillna(fill_value) + + # Report NaNs after imputation. + tp_remaining = int(tp_data.isna().sum().sum()) + fp_remaining = int(fp_data.isna().sum().sum()) + logging.info('NaN imputation complete. Remaining NaNs - TP: %d, FP: %d', tp_remaining, fp_remaining) + + return tp_data, fp_data + def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_platinum_grch38, fp_platinum_grch38, output_directory, annovar_path, db_path, outdiranno, leave_out="none", split_80_20=False): """Train the binary classification model.""" @@ -145,32 +197,37 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp fp_count_after = fp_data.shape[0] logging.info('Removed %d tp duplicates and %d fp duplicates from the concatenated data. Remaining true positives: %d, remaining false positives: %d', tp_count_before - tp_count_after, fp_count_before - fp_count_after, tp_data.shape[0], fp_data.shape[0]) - # Perform robust scaling on the read_depth and cluster_size columns using - # the RobustScaler from sklearn. - logging.info('Normalizing read_depth and cluster_size using Robust scaling.') - # First combine the data. - combined_data = pd.concat([tp_data, fp_data], ignore_index=True) - # Create a RobustScaler object. + # Perform robust scaling on the read_depth and cluster_size columns + # using the TP distribution as the reference point. + # RobustScaler formula: scaled = (x - median) / IQR + # By fitting on TP only and applying to both TP and FP, we ask: + # "How far from a typical true SV is this value?" + # This creates a meaningful signal: TP should cluster near 0, FP should be outliers. + logging.info('Normalizing read_depth and cluster_size using TP distribution as reference.') from sklearn.preprocessing import RobustScaler - scaler = RobustScaler() - # Fit the scaler to the data. - robust_scaled = scaler.fit_transform(combined_data[['read_depth', 'cluster_size']]) - # Update the data with the scaled values. - combined_data[['read_depth', 'cluster_size']] = robust_scaled - # Split the data back into true positives and false positives. - tp_data = combined_data.iloc[:tp_data.shape[0]] - fp_data = combined_data.iloc[tp_data.shape[0]:] - logging.info('Normalization completed. True positives: %d, False positives: %d', tp_data.shape[0], fp_data.shape[0]) - - # Drop the genotype column from the data. - logging.info('Dropping the genotype column from the data.') - tp_data = tp_data.drop(columns=['genotype'], errors='ignore') - fp_data = fp_data.drop(columns=['genotype'], errors='ignore') - - # Drop the cn_state column from the data. - logging.info('Dropping the cn_state column from the data.') - tp_data = tp_data.drop(columns=['cn_state'], errors='ignore') - fp_data = fp_data.drop(columns=['cn_state'], errors='ignore') + + scaler_tp = RobustScaler() + + # Fit scaler ONLY on TP data + if tp_data.shape[0] > 0 and 'read_depth' in tp_data.columns and 'cluster_size' in tp_data.columns: + scaler_tp.fit(tp_data[['read_depth', 'cluster_size']]) + logging.info('Fitted TP scaler on %d TP samples', tp_data.shape[0]) + logging.info('TP read_depth - median: %.2f, IQR: %.2f', + scaler_tp.center_[0], + scaler_tp.scale_[0]) + + # Apply TP scaler to BOTH TP and FP data + tp_data[['read_depth', 'cluster_size']] = scaler_tp.transform(tp_data[['read_depth', 'cluster_size']]) + logging.info('Applied TP scaler to TP data. Stats: read_depth mean=%.2f, std=%.2f', + tp_data['read_depth'].mean(), tp_data['read_depth'].std()) + + if fp_data.shape[0] > 0 and 'read_depth' in fp_data.columns and 'cluster_size' in fp_data.columns: + # Use the SAME TP scaler on FP data + fp_data[['read_depth', 'cluster_size']] = scaler_tp.transform(fp_data[['read_depth', 'cluster_size']]) + logging.info('Applied TP scaler to FP data. Stats: read_depth mean=%.2f, std=%.2f', + fp_data['read_depth'].mean(), fp_data['read_depth'].std()) + + logging.info('Normalization completed. TP and FP are now scaled relative to TP distribution.') # Drop SV length features since they are highly correlated with the SV type feature and may lead to overfitting. # logging.info('Dropping SV length feature from the data.') @@ -185,12 +242,15 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp logging.info('Number of true labels: %d', tp_data.shape[0]) logging.info('Number of false labels: %d', fp_data.shape[0]) - # Drop NaN values from the data. - logging.info('Dropping NaN values from the data.') + # Impute NaN values from the data using TP-referenced statistics. + tp_data, fp_data = impute_missing_values(tp_data, fp_data) + + # Safety drop for any residual NaNs that could break downstream training. + logging.info('Dropping any residual NaN rows after imputation.') tp_data = tp_data.dropna() fp_data = fp_data.dropna() - logging.info('Number of true labels after dropping NaN values: %d', tp_data.shape[0]) - logging.info('Number of false labels after dropping NaN values: %d', fp_data.shape[0]) + logging.info('Number of true labels after impute+dropna: %d', tp_data.shape[0]) + logging.info('Number of false labels after impute+dropna: %d', fp_data.shape[0]) # Balance the dataset by undersampling the true positives. # logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) @@ -236,16 +296,20 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp X_test, y_test = features, labels # If not 80/20 split, use XGBoost only (highest performing model) to save time. - if split_80_20: - pipelines = { - "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), - "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) - } - else: - pipelines = { - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) - } + # if split_80_20: + # pipelines = { + # "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), + # "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + # "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) + # } + # else: + # pipelines = { + # "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) + # } + + pipelines = { + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) + } param_grids = { "Logistic_Regression": { @@ -348,7 +412,12 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp model_path = os.path.join(output_directory, model_name_fp + '_model.pkl') joblib.dump(best_model, model_path) logging.info('Saved the %s model to %s', model_name, model_path) - + + # Save the TP scaler for use during prediction + # (Both TP and FP are scaled relative to TP distribution) + scaler_path = os.path.join(output_directory, 'scaler_tp.pkl') + joblib.dump(scaler_tp, scaler_path) + logging.info('Saved the TP scaler to %s (for prediction on both TP and FP)', scaler_path) logging.info('Completed training and evaluation for %s model.', model_name) @@ -392,6 +461,11 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp plt.close() logging.info('Saved the SHAP importance plot to %s', bar_plot_path) + # Save the scaler for use during prediction (always save, regardless of model selection) + scaler_path = os.path.join(output_directory, 'scaler_tp.pkl') + joblib.dump(scaler_tp, scaler_path) + logging.info('Saved the TP scaler to %s for predictions', scaler_path) + if __name__ == '__main__': # Parse the command line arguments. From 36a329fb9f034acb7425b4bf51f9d652d7301628 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 28 Feb 2026 14:02:20 -0500 Subject: [PATCH 48/93] work on feature importance --- contextscore/extract_features.py | 12 +- contextscore/train_full_model.py | 205 ++++++++++++++++++++++--------- 2 files changed, 151 insertions(+), 66 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 9ac7939..aa0a4b5 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -284,10 +284,7 @@ def run_bedtools_intersect(input_bed, table_bed, training_format=False): dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'chr_anno': str, 'start_anno': np.int32, 'end_anno': np.int32, 'name': str} ) - # Print the first few rows of the annotated BED file. - logging.info('Annotated BED file:\n%s', annotated_bed.head()) - - return annotated_bed + return annotated_bed except subprocess.CalledProcessError as e: logging.error('Error annotating the BED file: %s', e) @@ -314,7 +311,6 @@ def bed_to_annovar_input(bed_file): # Check if the BED file is empty. logging.info('Number of rows in the BED file: %d', df.shape[0]) - logging.info('First 5 rows of the BED file:\n%s', df.head()) # The ANNOVAR input format requires the following columns: # 1. Chromosome @@ -338,7 +334,6 @@ def bed_to_annovar_input(bed_file): logging.info('Saving the ANNOVAR input file to %s', output_file) annovar_df.to_csv(output_file, sep='\t', index=False, header=False) logging.info('Number of rows in the ANNOVAR input file: %d', annovar_df.shape[0]) - logging.info('First 5 rows of the ANNOVAR input file:\n%s', annovar_df.head()) logging.info('Saved the ANNOVAR input file to %s', output_file) return output_file @@ -769,15 +764,10 @@ def point_in_any_interval(points, starts, ends): logging.info('Computing repeat span density (total repeat coverage across SV)...') data['repeat_span_density'] = compute_repeat_density_span(data, simpleRepeat_df) # across entire SV logging.info('Repeat span density calculated. Mean: %.3f, Max: %.3f', data['repeat_span_density'].mean(), data['repeat_span_density'].max()) - - # Print the current columns in the data. - logging.info('Current columns in the data: %s', data.columns) # Drop the unnecessary/redundant columns. data.drop(columns=['Chr', 'Start', 'End', 'cytoBand', 'genomicSuperDups', 'Ref', 'Alt', 'segdup', 'simpleRepeat'], inplace=True) - logging.info('Dropped the unnecessary columns. Current columns: %s', data.columns) - logging.info('Number of records after adding annotations: %d', data.shape[0]) return data diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index aa5f40f..3c6b086 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -295,21 +295,21 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp X_train, y_train = features, labels X_test, y_test = features, labels - # If not 80/20 split, use XGBoost only (highest performing model) to save time. - # if split_80_20: - # pipelines = { - # "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), - # "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), - # "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) - # } - # else: - # pipelines = { - # "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) - # } - - pipelines = { - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) - } + # If not 80/20 split, use XGBoost and Random Forest only (highest performing models) to save time. + if split_80_20: + pipelines = { + "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), + "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) + } + else: + pipelines = { + "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + } + # pipelines = { + # "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + # "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) + # } param_grids = { "Logistic_Regression": { @@ -423,48 +423,143 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Run SHAP if full analysis and no leave-outs (SHAP is slow) if not split_80_20 and no_leave_out: - # SHAP doesn't support XGBoost with categorical features directly, - # so we need to use their suggested workaround. + logging.info('Running feature importance analysis for %s model.', model_name) classifier = best_model.named_steps['classifier'] - # Prepare numeric data for SHAP - X_train_numeric = X_train.copy() - for col in X_train_numeric.columns: - if X_train_numeric[col].dtype == 'object': - X_train_numeric[col] = pd.to_numeric(X_train_numeric[col], errors='coerce') - - X_train_numeric = X_train_numeric.fillna(0).astype('float64') - - # Use a larger background sample to cover all tree leaves - sample_size = min(5000, len(X_train_numeric)) # Larger sample - X_background = shap.sample(X_train_numeric, sample_size, random_state=42) - - # Create explainer and calculate SHAP values - explainer = shap.TreeExplainer(classifier, X_background) - - # Calculate SHAP values - shap_values = explainer.shap_values(X_train_numeric) - - # 1. Summary plot (existing) - plt.figure(figsize=(10, 8)) - shap.summary_plot(shap_values, X_train_numeric, show=False) - shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') - plt.savefig(shap_plot_path, dpi=300, bbox_inches='tight') - plt.close() - logging.info('Saved the SHAP summary plot to %s', shap_plot_path) - - # 2. Bar plot showing mean absolute SHAP values (feature importance) - plt.figure(figsize=(10, 8)) - shap.summary_plot(shap_values, X_train_numeric, plot_type="bar", show=False) - bar_plot_path = os.path.join(output_directory, model_name_fp + '_shap_importance_plot.png') - plt.savefig(bar_plot_path, dpi=300, bbox_inches='tight') - plt.close() - logging.info('Saved the SHAP importance plot to %s', bar_plot_path) - - # Save the scaler for use during prediction (always save, regardless of model selection) - scaler_path = os.path.join(output_directory, 'scaler_tp.pkl') - joblib.dump(scaler_tp, scaler_path) - logging.info('Saved the TP scaler to %s for predictions', scaler_path) + # For Random Forest, use both native importance and SHAP (with aggressive sampling) + if model_name == 'Random_Forest': + try: + # 1. Native Gini importance (instant) + feature_importances = classifier.feature_importances_ + feature_names = X_train.columns.tolist() + + importance_df = pd.DataFrame({ + 'feature': feature_names, + 'importance': feature_importances + }).sort_values('importance', ascending=True) + + plt.figure(figsize=(10, 8)) + plt.barh(importance_df['feature'], importance_df['importance']) + plt.xlabel('Feature Importance (Gini)') + plt.ylabel('Feature') + plt.title('Random Forest Feature Importances (Gini)') + plt.tight_layout() + importance_plot_path = os.path.join(output_directory, model_name_fp + '_feature_importance_plot.png') + plt.savefig(importance_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved Random Forest Gini importance plot to %s', importance_plot_path) + + importance_csv_path = os.path.join(output_directory, model_name_fp + '_feature_importances.csv') + importance_df.sort_values('importance', ascending=False).to_csv(importance_csv_path, index=False) + logging.info('Saved feature importances to %s', importance_csv_path) + + # 2. SHAP analysis with aggressive sampling for efficiency + logging.info('Computing SHAP values for Random Forest (with sampling)...') + X_train_numeric = X_train.copy() + for col in X_train_numeric.columns: + if X_train_numeric[col].dtype == 'object': + X_train_numeric[col] = pd.to_numeric(X_train_numeric[col], errors='coerce') + X_train_numeric = X_train_numeric.fillna(0).astype('float64') + + # Aggressive sampling for RF SHAP: reduce from 148k to ~300 samples + explain_size = min(300, len(X_train_numeric)) + background_size = min(50, len(X_train_numeric) // 100) # ~1% of data + X_explain = shap.sample(X_train_numeric, explain_size, random_state=42) + X_background = shap.sample(X_train_numeric, background_size, random_state=42) + + logging.info('SHAP RF: explain_size=%d, background_size=%d (from %d total)', + explain_size, background_size, len(X_train_numeric)) + + # Use tree_path_dependent which is faster and more memory-efficient + explainer = shap.TreeExplainer(classifier, feature_perturbation='tree_path_dependent', + model_output='probability') + shap_values = explainer.shap_values(X_explain, check_additivity=False) + + # Handle binary classification output (list of 2 arrays) + if isinstance(shap_values, list): + shap_values = shap_values[1] # Use positive class + + # SHAP summary plot + plt.figure(figsize=(10, 8)) + shap.summary_plot(shap_values, X_explain, show=False) + shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + plt.savefig(shap_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved SHAP summary plot to %s', shap_plot_path) + + # SHAP bar plot (mean |SHAP|) + plt.figure(figsize=(10, 8)) + shap.summary_plot(shap_values, X_explain, plot_type='bar', show=False) + bar_plot_path = os.path.join(output_directory, model_name_fp + '_shap_importance_plot.png') + plt.savefig(bar_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved SHAP importance plot to %s', bar_plot_path) + + except Exception as exc: + logging.warning('SHAP analysis skipped for %s: %s', model_name, exc) + + # For other models, use SHAP + else: + # Prepare numeric data for SHAP + X_train_numeric = X_train.copy() + for col in X_train_numeric.columns: + if X_train_numeric[col].dtype == 'object': + X_train_numeric[col] = pd.to_numeric(X_train_numeric[col], errors='coerce') + + X_train_numeric = X_train_numeric.fillna(0).astype('float64') + + # Bound SHAP workload to avoid OOM/core-dump on large full-model runs. + explain_size = min(5000, len(X_train_numeric)) + background_size = min(300, len(X_train_numeric)) + X_explain = shap.sample(X_train_numeric, explain_size, random_state=42) + X_background = shap.sample(X_train_numeric, background_size, random_state=42) + + logging.info( + 'SHAP sampling: explain_size=%d, background_size=%d (from %d training rows)', + len(X_explain), len(X_background), len(X_train_numeric) + ) + + try: + if model_name == 'XGBoost': + explainer = shap.TreeExplainer(classifier, feature_perturbation='tree_path_dependent') + shap_values = explainer.shap_values(X_explain) + elif model_name == 'Logistic_Regression': + explainer = shap.LinearExplainer(classifier, X_background) + shap_values = explainer.shap_values(X_explain) + else: + explainer = shap.Explainer(classifier, X_background) + shap_values = explainer(X_explain) + + # Some SHAP explainers return one array per class. For binary + # classification plots, use positive class values. + if isinstance(shap_values, list) and len(shap_values) > 1: + shap_values_to_plot = shap_values[1] + else: + shap_values_to_plot = shap_values + + # 1. Summary plot + plt.figure(figsize=(10, 8)) + shap.summary_plot(shap_values_to_plot, X_explain, show=False) + shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') + plt.savefig(shap_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved the SHAP summary plot to %s', shap_plot_path) + + # 2. Bar plot showing mean absolute SHAP values (feature importance) + plt.figure(figsize=(10, 8)) + shap.summary_plot(shap_values_to_plot, X_explain, plot_type='bar', show=False) + bar_plot_path = os.path.join(output_directory, model_name_fp + '_shap_importance_plot.png') + plt.savefig(bar_plot_path, dpi=300, bbox_inches='tight') + plt.close() + logging.info('Saved the SHAP importance plot to %s', bar_plot_path) + except Exception as exc: + logging.warning('SHAP analysis failed for %s: %s. Continuing without SHAP outputs.', model_name, exc) + + # Save the scaler for use during prediction if training the full model (not 80-20 split) + if not split_80_20: + scaler_path = os.path.join(output_directory, 'scaler_tp.pkl') + joblib.dump(scaler_tp, scaler_path) + logging.info('Saved the TP scaler to %s for predictions', scaler_path) if __name__ == '__main__': From 3dec63d6c28c27a0ae582934f672928e6cf4387a Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 28 Feb 2026 16:34:47 -0500 Subject: [PATCH 49/93] fix shap plot --- contextscore/train_full_model.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 3c6b086..08993b0 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -470,18 +470,31 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp logging.info('SHAP RF: explain_size=%d, background_size=%d (from %d total)', explain_size, background_size, len(X_train_numeric)) - # Use tree_path_dependent which is faster and more memory-efficient - explainer = shap.TreeExplainer(classifier, feature_perturbation='tree_path_dependent', - model_output='probability') + # Use interventional mode for standard SHAP values (not interactions) + explainer = shap.TreeExplainer(classifier) shap_values = explainer.shap_values(X_explain, check_additivity=False) - # Handle binary classification output (list of 2 arrays) + logging.info('SHAP raw output type: %s, raw shape: %s', + type(shap_values), + shap_values.shape if hasattr(shap_values, 'shape') else 'N/A') + + # Handle different output formats if isinstance(shap_values, list): + # List of arrays for each class shap_values = shap_values[1] # Use positive class + elif len(shap_values.shape) == 3: + # 3D array: (n_samples, n_features, n_classes) + shap_values = shap_values[:, :, 1] # Select positive class + + logging.info('SHAP debug: shap_values shape=%s (final), X_explain shape=%s', + shap_values.shape, X_explain.shape) + + # Ensure X_explain is explicitly indexed by feature names + X_explain_for_plot = X_explain.reset_index(drop=True) # SHAP summary plot - plt.figure(figsize=(10, 8)) - shap.summary_plot(shap_values, X_explain, show=False) + plt.figure(figsize=(12, 8)) + shap.summary_plot(shap_values, X_explain_for_plot, show=False, max_display=15) shap_plot_path = os.path.join(output_directory, model_name_fp + '_shap_summary_plot.png') plt.savefig(shap_plot_path, dpi=300, bbox_inches='tight') plt.close() From 628130619ebe1f11b43fbaba7aa3f61001c2c075 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 28 Feb 2026 16:46:49 -0500 Subject: [PATCH 50/93] update predict --- contextscore/predict.py | 206 ++++++++-------------------------------- 1 file changed, 39 insertions(+), 167 deletions(-) diff --git a/contextscore/predict.py b/contextscore/predict.py index 5e26651..925ecd4 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -40,10 +40,6 @@ def create_bed(input_vcf, output_bed): input_vcf (str): Path to the input VCF file. output_bed (str): Path to the output BED file. """ - # Read the VCF file - # vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, - # names=['CHROM', 'POS', 'id', 'REF', 'ALT', 'QUAL', 'FILTER', - # 'INFO', 'FORMAT', 'SAMPLE']) logging.info('Reading VCF file: %s', input_vcf) vcf_df = pd.read_csv(input_vcf, sep='\t', comment='#', header=None, names=['CHROM', 'POS', 'INFO', 'FORMAT', 'SAMPLE'], usecols=[0, 1, 7, 8, 9], @@ -51,22 +47,7 @@ def create_bed(input_vcf, output_bed): # Add a column for the ID field with the VCF row number vcf_df['id'] = vcf_df.index - - # Print the first 10 IDs - logging.info('First 10 IDs in the VCF file:\n%s', vcf_df['id'].head(10)) - - logging.info('VCF file read successfully. Number of records: %d', len(vcf_df)) - logging.info('First few records:\n%s', vcf_df.head()) - # Extract the relevant fields from the INFO column - # info_df = vcf_df['INFO'].str.split(';', expand=True) - - # Print the ALN column - # info_df['ALN'] = vcf_df['INFO'].str.extract(r'ALN=([^;]+)') - # logging.info('ALN col = \n%s', info_df['ALN'].head()) - - # info_df.columns = ['END', 'SVTYPE', 'SVLEN', 'HMM', 'ALN', 'CLUSTER', - # 'CN', 'ALNOFFSET'] info_df = pd.DataFrame() info_df['ALN'] = vcf_df['INFO'].str.extract(r'ALN=([^;]+)') info_df['END'] = vcf_df['INFO'].str.extract(r'END=(\d+)') @@ -77,26 +58,11 @@ def create_bed(input_vcf, output_bed): info_df['CN'] = vcf_df['INFO'].str.extract(r'CN=([^;]+)') info_df['ALNOFFSET'] = vcf_df['INFO'].str.extract(r'ALNOFFSET=([^;]+)') - # info_df['END'] = info_df['END'].str.replace('END=', '').astype(int) - # info_df['SVTYPE'] = info_df['SVTYPE'].str.replace('SVTYPE=', '') - # info_df['SVLEN'] = info_df['SVLEN'].str.replace('SVLEN=', '').astype(int) - # info_df['HMM'] = info_df['HMM'].str.replace('HMM=', '') - # info_df['ALN'] = info_df['ALN'].str.replace('ALN=', '') - # info_df['CLUSTER'] = info_df['CLUSTER'].str.replace('CLUSTER=', '') - # info_df['CN'] = info_df['CN'].str.replace('CN=', '') - # info_df['ALNOFFSET'] = info_df['ALNOFFSET'].str.replace('ALNOFFSET=', '') - # Extract the genotype (GT) and read depth (DP) from the SAMPLE column sample_df = pd.DataFrame() sample_df['GT'] = vcf_df['SAMPLE'].str.extract(r'([^:]+):') sample_df['DP'] = vcf_df['SAMPLE'].str.extract(r':(\d+)').astype(int) - logging.info('Sample GT and DP columns:\n%s', sample_df.head()) - # sample_df = vcf_df['SAMPLE'].str.split(':', expand=True) - # sample_df.columns = ['GT', 'DP'] - # sample_df['GT'] = sample_df['GT'].str.replace('GT=', '') - # sample_df['DP'] = sample_df['DP'].str.replace('DP=', '').astype(int) - # Create the BED file bed_df = pd.DataFrame() bed_df['CHROM'] = vcf_df['CHROM'] @@ -113,20 +79,18 @@ def create_bed(input_vcf, output_bed): bed_df['ALNOFFSET'] = info_df['ALNOFFSET'] bed_df['id'] = vcf_df['id'] - # Print the first few rows of the BED file - logging.info('First few rows of the BED file:\n%s', bed_df.head()) - # Save the BED file bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05): +def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title='Probability Distribution', threshold=0.05): """Score the structural variants using the binary classification model. Args: model (str): Path to the model file. input_vcf (str): Path to the input VCF file. output_vcf (str): Path to the output VCF file. + scaler_path (str): Path to the scaler pkl file (optional). """ prob_threshold = threshold logging.info('Using probability threshold: %.3f', prob_threshold) @@ -151,119 +115,71 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Created output directory: %s', anno_outdir) feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir, buildver) - logging.info('Extracted features from the BED file:\n%s', feature_df.head()) # Perform robust scaling on the read_depth and cluster_size columns logging.info('Performing robust scaling on the read_depth and cluster_size columns...') - from sklearn.preprocessing import RobustScaler - scaler = RobustScaler() - feature_df[['read_depth', 'cluster_size']] = scaler.fit_transform(feature_df[['read_depth', 'cluster_size']]) - logging.info('Robust scaling completed.') - - # Add interaction terms to the features - # feature_df = add_interaction_terms(feature_df) - # logging.info('Added interaction terms to the features.') - - # Drop the sv_type column (imbalance especially for inversions). - # logging.info('Dropping the sv_type column from the features.') - # feature_df.drop(columns=['sv_type'], inplace=True) - - # # Drop the SV length column - # feature_df.drop(columns=['sv_length'], inplace=True) - - # Drop the read_depth and cluster_size columns - # feature_df.drop(columns=['read_depth', 'cluster_size'], inplace=True) - - # Drop the HMM log likelihood column - # feature_df.drop(columns=['hmm_llh'], inplace=True) + if scaler_path is not None and os.path.isfile(scaler_path): + # Load the pre-fitted scaler from training + logging.info('Loading scaler from: %s', scaler_path) + scaler = joblib.load(scaler_path) + feature_df[['read_depth', 'cluster_size']] = scaler.transform(feature_df[['read_depth', 'cluster_size']]) + logging.info('Applied pre-fitted scaler (trained on TP distribution).') + else: + # Exit with error, since the scaler is required for proper scaling of the features + logging.error('Scaler file is required for proper scaling of the features. Please provide a valid scaler file path using the --scaler argument.') + sys.exit(1) # Check if the feature extraction was successful if feature_df.empty: logging.error('Feature extraction failed. No features extracted.') sys.exit(1) - # # Separate the ID column from the features - # id_col = feature_df.pop('id') - # logging.info('Separated ID column from the features.') - - # # Separate the chrom column from the features - # chrom_col = feature_df.pop('chrom') - # logging.info('Separated chrom column from the features.') - # Separate the ID, chrom, start, end, SV length, read depth, and cluster size columns from the features id_col = feature_df.pop('id') - chrom_col = feature_df.pop('chrom') - start_col = feature_df.pop('start') - end_col = feature_df.pop('end') - # sv_length_col = feature_df.pop('sv_length') - read_depth_col = feature_df['read_depth'] - cluster_size_col = feature_df['cluster_size'] - sv_type_str_col = feature_df.pop('sv_type_str') - - # # Normalize the cluster_size and read_depth columns using RobustScaler - # logging.info('Normalizing the cluster_size and read_depth columns...') - # from sklearn.preprocessing import RobustScaler, MinMaxScaler - # scaler = RobustScaler() - # robust_scaled = scaler.fit_transform(feature_df[['cluster_size', 'read_depth']]) - # feature_df[['cluster_size', 'read_depth']] = robust_scaled - - logging.info('Feature DataFrame:\n%s', feature_df.head()) + + # Remove other non-feature columns before prediction + for col in ['chrom', 'start', 'end', 'sv_type_str']: + if col in feature_df.columns: + feature_df.pop(col) + + # Handle NaNs by filling with 0 (matching training's imputation fallback) + logging.info('Handling NaN values in features...') + nan_count_before = feature_df.isna().sum().sum() + if nan_count_before > 0: + logging.warning('Found %d NaN values in prediction features. Filling with 0.', nan_count_before) + feature_df = feature_df.fillna(0) + + # Convert categorical/object columns to numeric (matching training preprocessing) + logging.info('Converting categorical features to numeric...') + for col in feature_df.columns: + if feature_df[col].dtype == 'category': + feature_df[col] = feature_df[col].cat.codes + elif feature_df[col].dtype == 'object': + feature_df[col] = pd.to_numeric(feature_df[col], errors='coerce') + + # Ensure all columns are float64 + feature_df = feature_df.fillna(0).astype('float64') # Run the model on the features logging.info('Running the model on the features...') y_pred = clf.predict_proba(feature_df) - # Print the first 10 predictions - logging.info('First 10 predictions:\n%s', y_pred[:10]) - - # Plot a histogram of the probabilities - # output_dir = os.path.dirname(output_vcf) - # plt.hist(y_pred[:, 1], bins=20) - # plt.xlabel('Confidence Score') - # plt.ylabel('Count') - # plt.title('Probability Distribution') - # if not os.path.exists(output_dir): - # os.makedirs(output_dir) - # logging.info('Created output directory: %s', output_dir) - # # Save the plot to the output directory - # plt.savefig(os.path.join(output_dir, 'probabilities.png')) - # logging.info('Saved the plot of the probabilities to %s.', os.path.join(output_dir, 'probabilities.png')) - # Plot a histogram of the probabilities using seaborn since it looks better output_dir = os.path.dirname(output_vcf) fig, ax = plt.subplots() sns.histplot(y_pred[:, 1], bins=20, ax=ax) ax.set_xlabel('Confidence Score') ax.set_ylabel('Count') - # ax.set_title('Probability Distribution') ax.set_title(title) # Save the plot to the output directory plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) logging.info('Saved the plot of the probabilities to %s', os.path.join(output_dir, 'probabilities_seaborn.png')) - - # prob_threshold = 0.01 - filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] - logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) - # Print all data for the filtered variants if >10kb absolute svlen - # print_filtered = True - # if print_filtered: - # logging.info('Filtered variants:\n') - # min_svlen = 10000 - # filtered_variants = feature_df.iloc[filtered_indices] - # # Print all the features for the filtered variants - # for index, row in filtered_variants.iterrows(): - # # Print if abs(svlen) > 8000 and HMM is not equal to zero - # if abs(row['sv_length']) > min_svlen: - # logging.info('Features: %s', row.to_dict()) - # Get the IDs of the filtered variants filtered_ids = id_col.iloc[filtered_indices].values - # logging.info('Filtered IDs:\n%s', filtered_ids) - # Save the filtered IDs to a text file filtered_ids_file = os.path.join(output_dir, 'filtered_ids.txt') np.savetxt(filtered_ids_file, filtered_ids, fmt='%s') logging.info('Saved the filtered IDs to %s', filtered_ids_file) @@ -271,53 +187,6 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # Create a VCF file with only the filtered variants removed_svs_vcf = os.path.join(output_dir, 'removed_svs.vcf') - # Create a CSV file with the filtered variants (CHROM, POS, ID, SVTYPE, - # SVLEN, [... SHAP value for each feature], Predicted probability, Predicted - # class) - - logging.info('Creating a CSV file with the filtered variants...') - import shap - shap_df = pd.DataFrame() - shap_df['id'] = id_col.values - shap_df['chrom'] = chrom_col.values - shap_df['start'] = start_col.values - shap_df['end'] = end_col.values - shap_df['sv_type_str'] = sv_type_str_col.values - # shap_df['sv_length'] = sv_length_col.values - # shap_df['sv_length'] = feature_df['sv_length'].values # Use the original sv_length from feature_df - shap_df['read_depth'] = read_depth_col.values - shap_df['cluster_size'] = cluster_size_col.values - shap_df['predicted_probability'] = y_pred[:, 1] - shap_df['predicted_class'] = (y_pred[:, 1] >= prob_threshold).astype(int) - - # # Calculate SHAP values - # explainer = shap.TreeExplainer(clf) - # shap_values = explainer.shap_values(feature_df) - # shap_df_shap = pd.DataFrame(shap_values, columns=feature_df.columns) - - # # Combine the SHAP values with the filtered variants DataFrame - # shap_df = pd.concat([shap_df, shap_df_shap], axis=1) - - # # for col in shap_df.columns: - # # if col not in ['id', 'chrom', 'predicted_probability', 'predicted_class']: - # # shap_df[col] = shap_df[col].astype(float) - # shap_df = shap_df[shap_df['id'].isin(filtered_ids)] - # logging.info('Filtered SHAP values DataFrame:\n%s', shap_df.head()) - # logging.info('Number of filtered variants: %d', len(shap_df)) - - # # Save the SHAP values to a CSV file - # logging.info('Saving the filtered variant SHAP values to a CSV file...') - - # Move the CHROM, START, END, SVTYPE, SVLEN, READ_DEPTH, CLUSTER_SIZE, PREDICTED_PROBABILITY, PREDICTED_CLASS columns to the front - # shap_df = shap_df[['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', - # 'predicted_probability', 'predicted_class'] + - # [col for col in shap_df.columns if col not in ['chrom', 'id', 'start', 'end', 'sv_type_str', 'sv_length', 'read_depth', 'cluster_size', 'predicted_probability', 'predicted_class']]] - # # shap_df = shap_df[['chrom', 'id', 'predicted_probability', 'predicted_class'] + [col for col in shap_df.columns if col not in ['chrom', 'id', 'predicted_probability', 'predicted_class']]] - - # shap_csv_file = os.path.join(output_dir, 'filtered_variants.csv') - # shap_df.to_csv(shap_csv_file, index=False) - # logging.info('Saved the filtered variant SHAP values to %s', shap_csv_file) - # Filter the input VCF file based on the filtered indices logging.info('Filtering the input VCF file based on the filtered indices...') filtered_records = set(filtered_ids) @@ -365,6 +234,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist help='Title for the probability distribution plot (default: Probability Distribution).') parser.add_argument('--threshold', type=float, default=0.05, help='Threshold for filtering predictions (default: 0.05).') + parser.add_argument('--scaler', type=str, default=None, + help='Path to the scaler pkl file (trained on TP data, optional).') args = parser.parse_args() input_vcf = args.input @@ -378,6 +249,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Input VCF file: %s', input_vcf) logging.info('Output VCF file: %s', output_vcf) logging.info('Model file: %s', model) + logging.info('Scaler file: %s', args.scaler) # Check if the input VCF file exists if not os.path.isfile(input_vcf): @@ -413,5 +285,5 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist sys.exit(1) # Run the scoring function - score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, threshold=args.threshold) + score(model, input_vcf, output_vcf, scaler_path=args.scaler, buildver=buildver, title=args.title, threshold=args.threshold) logging.info('Scoring process completed.') From fd2d2dd773c844aad59f269138baed3a77b3cea3 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 1 Mar 2026 22:52:12 -0500 Subject: [PATCH 51/93] normalize read depth with mean coverage --- contextscore/extract_features.py | 55 +++++++++++++-- contextscore/predict.py | 31 +++----- contextscore/train_full_model.py | 117 +++++++++++++------------------ 3 files changed, 109 insertions(+), 94 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index aa0a4b5..1053c1c 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -71,13 +71,18 @@ def normalize_chrom_label(chrom): chrom_str = chrom_str[3:] if chrom_str.lower().startswith('chr') else chrom_str return chrom_str.upper() -def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion='hg38'): +def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion='hg38', sample_coverage=None): """Extract the features from the BED file, columns are in the first row: chrom, start, end, sv_type, sv_length, genotype, read_depth, hmm_llh, aln_type, cluster_size + + Args: + sample_coverage (float): Required. Mean read depth coverage for the sample, used to normalize read_depth. """ logging.info('Extracting features from the BED file %s', input_bed) - - + + if sample_coverage is None or sample_coverage <= 0: + logging.error('sample_coverage is required and must be > 0') + raise ValueError('sample_coverage is required and must be > 0') # Get the number of columns in the BED file. with open(input_bed, 'r') as f: @@ -115,8 +120,23 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop the original aln_type column. bed_df.drop(columns=['aln_type'], inplace=True) - # Drop the sv_length column since it is highly correlated with false positive SVs - bed_df.drop(columns=['sv_length'], inplace=True) + # Create normalized cluster_size feature (cluster_size per 1000 bp of SV length) + # This prevents large sparse SVs from being unfairly penalized + bed_df['cluster_size_per_kb'] = np.where( + bed_df['sv_length'] > 0, + bed_df['cluster_size'] / (bed_df['sv_length'] / 1000.0), + 0 + ) + + # Read depth normalized by sample coverage + bed_df['read_depth_normalized'] = np.where( + sample_coverage > 0, + bed_df['read_depth'] / sample_coverage, + bed_df['read_depth'] + ) + + # Keep sv_length temporarily for later distance normalization + # Will be dropped after all normalized features are created # Print the number of NaN values logging.info('Number of NaN values after aln_type mapping: %d', bed_df.isnull().sum().sum()) @@ -222,6 +242,16 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Print statistics about the distance to nearest SV feature. logging.info('Distance to nearest SV - mean: %.2f, median: %.2f, std: %.2f', bed_df['dist_to_nearest_sv'].mean(), bed_df['dist_to_nearest_sv'].median(), bed_df['dist_to_nearest_sv'].std()) + # Normalize by SV size + bed_df['dist_nearest_sv_per_kb'] = np.where( + bed_df['sv_length'] > 0, + bed_df['dist_to_nearest_sv'] / (bed_df['sv_length'] / 1000.0), + bed_df['dist_to_nearest_sv'] + ) + + # Now drop sv_length since all normalizations are complete + bed_df.drop(columns=['sv_length'], inplace=True) + # Save the first 500 features to a new file. features_file = os.path.join(outdiranno, 'features.tsv') logging.info('Saving the features to %s', features_file) @@ -770,4 +800,19 @@ def point_in_any_interval(points, starts, ends): logging.info('Number of records after adding annotations: %d', data.shape[0]) + # Debug: Print read depths for large inversions + if 'sv_type_str' in data.columns and 'read_depth' in data.columns: + large_inversions = data[(data['sv_type_str'] == 'INV') & (data['end'] - data['start'] > 10000)] + if len(large_inversions) > 0: + logging.info('Debug: Large inversions (>10kb) found: %d records', len(large_inversions)) + for idx, row in large_inversions.head(10).iterrows(): + logging.info(' INV: chrom=%s, start=%d, end=%d, size=%d bp, read_depth=%d', + row.get('chrom', 'N/A'), + row.get('start', 0), + row.get('end', 0), + row.get('end', 0) - row.get('start', 0), + row.get('read_depth', -1)) + if len(large_inversions) > 10: + logging.info(' ... and %d more large inversions', len(large_inversions) - 10) + return data diff --git a/contextscore/predict.py b/contextscore/predict.py index 925ecd4..19e2c0d 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -83,14 +83,14 @@ def create_bed(input_vcf, output_bed): bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title='Probability Distribution', threshold=0.05): +def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05, sample_coverage=None): """Score the structural variants using the binary classification model. Args: model (str): Path to the model file. input_vcf (str): Path to the input VCF file. output_vcf (str): Path to the output VCF file. - scaler_path (str): Path to the scaler pkl file (optional). + sample_coverage (float): Required. Mean read depth coverage for the sample. """ prob_threshold = threshold logging.info('Using probability threshold: %.3f', prob_threshold) @@ -114,20 +114,7 @@ def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title os.makedirs(anno_outdir) logging.info('Created output directory: %s', anno_outdir) - feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir, buildver) - - # Perform robust scaling on the read_depth and cluster_size columns - logging.info('Performing robust scaling on the read_depth and cluster_size columns...') - if scaler_path is not None and os.path.isfile(scaler_path): - # Load the pre-fitted scaler from training - logging.info('Loading scaler from: %s', scaler_path) - scaler = joblib.load(scaler_path) - feature_df[['read_depth', 'cluster_size']] = scaler.transform(feature_df[['read_depth', 'cluster_size']]) - logging.info('Applied pre-fitted scaler (trained on TP distribution).') - else: - # Exit with error, since the scaler is required for proper scaling of the features - logging.error('Scaler file is required for proper scaling of the features. Please provide a valid scaler file path using the --scaler argument.') - sys.exit(1) + feature_df = extract_features(bed_file, annovar_path, annovar_db_path, anno_outdir, buildver, sample_coverage=sample_coverage) # Check if the feature extraction was successful if feature_df.empty: @@ -137,8 +124,9 @@ def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title # Separate the ID, chrom, start, end, SV length, read depth, and cluster size columns from the features id_col = feature_df.pop('id') - # Remove other non-feature columns before prediction - for col in ['chrom', 'start', 'end', 'sv_type_str']: + # Remove other non-feature columns before prediction. + # Keep normalized *_per_kb features; remove raw versions. + for col in ['chrom', 'start', 'end', 'sv_type_str', 'cluster_size', 'dist_to_nearest_sv', 'read_depth']: if col in feature_df.columns: feature_df.pop(col) @@ -234,8 +222,8 @@ def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title help='Title for the probability distribution plot (default: Probability Distribution).') parser.add_argument('--threshold', type=float, default=0.05, help='Threshold for filtering predictions (default: 0.05).') - parser.add_argument('--scaler', type=str, default=None, - help='Path to the scaler pkl file (trained on TP data, optional).') + parser.add_argument('--sample_coverage', type=float, required=True, + help='Mean read depth coverage for the sample (required, used to normalize read_depth).') args = parser.parse_args() input_vcf = args.input @@ -249,7 +237,6 @@ def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title logging.info('Input VCF file: %s', input_vcf) logging.info('Output VCF file: %s', output_vcf) logging.info('Model file: %s', model) - logging.info('Scaler file: %s', args.scaler) # Check if the input VCF file exists if not os.path.isfile(input_vcf): @@ -285,5 +272,5 @@ def score(model, input_vcf, output_vcf, scaler_path=None, buildver='hg38', title sys.exit(1) # Run the scoring function - score(model, input_vcf, output_vcf, scaler_path=args.scaler, buildver=buildver, title=args.title, threshold=args.threshold) + score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, threshold=args.threshold, sample_coverage=args.sample_coverage) logging.info('Scoring process completed.') diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 08993b0..0ac870d 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -136,8 +136,16 @@ def impute_missing_values(tp_data, fp_data): return tp_data, fp_data -def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_platinum_grch38, fp_platinum_grch38, output_directory, annovar_path, db_path, outdiranno, leave_out="none", split_80_20=False): - """Train the binary classification model.""" +def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_na12877_grch38, fp_na12877_grch38, tp_na12878_grch38, fp_na12878_grch38, tp_na12879_grch38, fp_na12879_grch38, output_directory, annovar_path, db_path, outdiranno, leave_out="none", split_80_20=False, sample_coverage_hg002=None, sample_coverage_visor=None, sample_coverage_na12877=None, sample_coverage_na12878=None, sample_coverage_na12879=None): + """Train the binary classification model. + + Args: + sample_coverage_hg002 (float): Required. Mean read depth coverage for HG002 sample. + sample_coverage_visor (float): Required. Mean read depth coverage for Visor sample. + sample_coverage_na12877 (float): Required. Mean read depth coverage for NA12877 sample. + sample_coverage_na12878 (float): Required. Mean read depth coverage for NA12878 sample. + sample_coverage_na12879 (float): Required. Mean read depth coverage for NA12879 sample. + """ # --------------------------------------------------------------- # SV Feature Extraction @@ -154,9 +162,13 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp tp_visor_grch38 = None fp_visor_grch38 = None elif leave_out == "platinum": - logging.info('Leaving out Platinum Pedigree dataset from training.') - tp_platinum_grch38 = None - fp_platinum_grch38 = None + logging.info('Leaving out Platinum Pedigree datasets (all 3 samples) from training.') + tp_na12877_grch38 = None + fp_na12877_grch38 = None + tp_na12878_grch38 = None + fp_na12878_grch38 = None + tp_na12879_grch38 = None + fp_na12879_grch38 = None else: logging.info('Not leaving out any dataset from training.') no_leave_out = True @@ -167,22 +179,28 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # GRCh38 data. logging.info('Extracting features from the true positive and false positive VCF files (GRCh38).') buildversion = 'hg38' - tp_visor_anno = extract_features(tp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch38"), buildversion=buildversion) if tp_visor_grch38 is not None else None - fp_visor_anno = extract_features(fp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch38"), buildversion=buildversion) if fp_visor_grch38 is not None else None + tp_visor_anno = extract_features(tp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_visor_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_visor) if tp_visor_grch38 is not None else None + fp_visor_anno = extract_features(fp_visor_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_visor_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_visor) if fp_visor_grch38 is not None else None + + tp_na12877_anno = extract_features(tp_na12877_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_na12877_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_na12877) if tp_na12877_grch38 is not None else None + fp_na12877_anno = extract_features(fp_na12877_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_na12877_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_na12877) if fp_na12877_grch38 is not None else None - tp_platinum_anno = extract_features(tp_platinum_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch38"), buildversion=buildversion) if tp_platinum_grch38 is not None else None - fp_platinum_anno = extract_features(fp_platinum_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch38"), buildversion=buildversion) if fp_platinum_grch38 is not None else None + tp_na12878_anno = extract_features(tp_na12878_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_na12878_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_na12878) if tp_na12878_grch38 is not None else None + fp_na12878_anno = extract_features(fp_na12878_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_na12878_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_na12878) if fp_na12878_grch38 is not None else None + + tp_na12879_anno = extract_features(tp_na12879_grch38, annovar_path, db_path, os.path.join(outdiranno, "tp_na12879_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_na12879) if tp_na12879_grch38 is not None else None + fp_na12879_anno = extract_features(fp_na12879_grch38, annovar_path, db_path, os.path.join(outdiranno, "fp_na12879_anno_grch38"), buildversion=buildversion, sample_coverage=sample_coverage_na12879) if fp_na12879_grch38 is not None else None # HG002 data (GRCh37). logging.info('Extracting features from the true positive and false positive VCF files (HG002-GRCh37).') buildversion = 'hg19' - tp_hg002_anno = extract_features(tp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch37"), buildversion=buildversion) if tp_hg002_grch37 is not None else None - fp_hg002_anno = extract_features(fp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch37"), buildversion=buildversion) if fp_hg002_grch37 is not None else None + tp_hg002_anno = extract_features(tp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "tp_anno_grch37"), buildversion=buildversion, sample_coverage=sample_coverage_hg002) if tp_hg002_grch37 is not None else None + fp_hg002_anno = extract_features(fp_hg002_grch37, annovar_path, db_path, os.path.join(outdiranno, "fp_anno_grch37"), buildversion=buildversion, sample_coverage=sample_coverage_hg002) if fp_hg002_grch37 is not None else None # Concatenate the data from all datasets. logging.info('Concatenating the data from all datasets.') - tp_data = pd.concat([df for df in [tp_visor_anno, tp_platinum_anno, tp_hg002_anno] if df is not None], ignore_index=True) - fp_data = pd.concat([df for df in [fp_visor_anno, fp_platinum_anno, fp_hg002_anno] if df is not None], ignore_index=True) + tp_data = pd.concat([df for df in [tp_visor_anno, tp_na12877_anno, tp_na12878_anno, tp_na12879_anno, tp_hg002_anno] if df is not None], ignore_index=True) + fp_data = pd.concat([df for df in [fp_visor_anno, fp_na12877_anno, fp_na12878_anno, fp_na12879_anno, fp_hg002_anno] if df is not None], ignore_index=True) # --------------------------------------------------------------- # Data Preprocessing @@ -197,38 +215,6 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp fp_count_after = fp_data.shape[0] logging.info('Removed %d tp duplicates and %d fp duplicates from the concatenated data. Remaining true positives: %d, remaining false positives: %d', tp_count_before - tp_count_after, fp_count_before - fp_count_after, tp_data.shape[0], fp_data.shape[0]) - # Perform robust scaling on the read_depth and cluster_size columns - # using the TP distribution as the reference point. - # RobustScaler formula: scaled = (x - median) / IQR - # By fitting on TP only and applying to both TP and FP, we ask: - # "How far from a typical true SV is this value?" - # This creates a meaningful signal: TP should cluster near 0, FP should be outliers. - logging.info('Normalizing read_depth and cluster_size using TP distribution as reference.') - from sklearn.preprocessing import RobustScaler - - scaler_tp = RobustScaler() - - # Fit scaler ONLY on TP data - if tp_data.shape[0] > 0 and 'read_depth' in tp_data.columns and 'cluster_size' in tp_data.columns: - scaler_tp.fit(tp_data[['read_depth', 'cluster_size']]) - logging.info('Fitted TP scaler on %d TP samples', tp_data.shape[0]) - logging.info('TP read_depth - median: %.2f, IQR: %.2f', - scaler_tp.center_[0], - scaler_tp.scale_[0]) - - # Apply TP scaler to BOTH TP and FP data - tp_data[['read_depth', 'cluster_size']] = scaler_tp.transform(tp_data[['read_depth', 'cluster_size']]) - logging.info('Applied TP scaler to TP data. Stats: read_depth mean=%.2f, std=%.2f', - tp_data['read_depth'].mean(), tp_data['read_depth'].std()) - - if fp_data.shape[0] > 0 and 'read_depth' in fp_data.columns and 'cluster_size' in fp_data.columns: - # Use the SAME TP scaler on FP data - fp_data[['read_depth', 'cluster_size']] = scaler_tp.transform(fp_data[['read_depth', 'cluster_size']]) - logging.info('Applied TP scaler to FP data. Stats: read_depth mean=%.2f, std=%.2f', - fp_data['read_depth'].mean(), fp_data['read_depth'].std()) - - logging.info('Normalization completed. TP and FP are now scaled relative to TP distribution.') - # Drop SV length features since they are highly correlated with the SV type feature and may lead to overfitting. # logging.info('Dropping SV length feature from the data.') # tp_data = tp_data.drop(columns=['sv_length'], errors='ignore') @@ -266,10 +252,8 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp chrom_col = data.pop('chrom') # Drop columns that are not needed for training. - data = data.drop(columns=['start', 'end', 'sv_type_str'], errors='ignore') - - # Drop the read_depth and cluster_size columns - # data = data.drop(columns=['read_depth', 'cluster_size'], errors='ignore') + # Keep normalized *_per_kb features; remove raw versions. + data = data.drop(columns=['start', 'end', 'sv_type_str', 'cluster_size', 'dist_to_nearest_sv', 'read_depth'], errors='ignore') logging.info('Columns list after preprocessing: %s', data.columns.tolist()) @@ -298,10 +282,13 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # If not 80/20 split, use XGBoost and Random Forest only (highest performing models) to save time. if split_80_20: pipelines = { - "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), - "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) } + # pipelines = { + # "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), + # "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + # "XGBoost": Pipeline([('classifier', XGBClassifier(n_estimators=100, eval_metric='logloss', random_state=42, enable_categorical=False))]) + # } else: pipelines = { "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), @@ -412,12 +399,6 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp model_path = os.path.join(output_directory, model_name_fp + '_model.pkl') joblib.dump(best_model, model_path) logging.info('Saved the %s model to %s', model_name, model_path) - - # Save the TP scaler for use during prediction - # (Both TP and FP are scaled relative to TP distribution) - scaler_path = os.path.join(output_directory, 'scaler_tp.pkl') - joblib.dump(scaler_tp, scaler_path) - logging.info('Saved the TP scaler to %s (for prediction on both TP and FP)', scaler_path) logging.info('Completed training and evaluation for %s model.', model_name) @@ -568,13 +549,6 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp except Exception as exc: logging.warning('SHAP analysis failed for %s: %s. Continuing without SHAP outputs.', model_name, exc) - # Save the scaler for use during prediction if training the full model (not 80-20 split) - if not split_80_20: - scaler_path = os.path.join(output_directory, 'scaler_tp.pkl') - joblib.dump(scaler_tp, scaler_path) - logging.info('Saved the TP scaler to %s for predictions', scaler_path) - - if __name__ == '__main__': # Parse the command line arguments. import argparse @@ -583,18 +557,27 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp parser.add_argument("--fp_hg002_grch37", required=True, help="Path to the false positive BED file for HG002 in GRCh37") parser.add_argument("--tp_visor_grch38", required=True, help="Path to the true positive BED file for Visor in GRCh38") parser.add_argument("--fp_visor_grch38", required=True, help="Path to the false positive BED file for Visor in GRCh38") - parser.add_argument("--tp_platinum_grch38", required=True, help="Path to the true positive BED file for Platinum in GRCh38") - parser.add_argument("--fp_platinum_grch38", required=True, help="Path to the false positive BED file for Platinum in GRCh38") + parser.add_argument("--tp_na12877_grch38", required=True, help="Path to the true positive BED file for NA12877 in GRCh38") + parser.add_argument("--fp_na12877_grch38", required=True, help="Path to the false positive BED file for NA12877 in GRCh38") + parser.add_argument("--tp_na12878_grch38", required=True, help="Path to the true positive BED file for NA12878 in GRCh38") + parser.add_argument("--fp_na12878_grch38", required=True, help="Path to the false positive BED file for NA12878 in GRCh38") + parser.add_argument("--tp_na12879_grch38", required=True, help="Path to the true positive BED file for NA12879 in GRCh38") + parser.add_argument("--fp_na12879_grch38", required=True, help="Path to the false positive BED file for NA12879 in GRCh38") parser.add_argument("--outdiranno", required=True, help="Output directory for saving the ANNOVAR annotations") parser.add_argument("--outdir", required=True, help="Output directory for saving the model") parser.add_argument("--annovar", required=True, help="Path to ANNOVAR") parser.add_argument("--annovar_db", required=True, help="Path to ANNOVAR database") parser.add_argument("--leave_out", required=True, help="Which dataset to leave out for training") + parser.add_argument("--sample_coverage_hg002", type=float, required=True, help="Mean read depth coverage for HG002 sample (required)") + parser.add_argument("--sample_coverage_visor", type=float, required=True, help="Mean read depth coverage for Visor sample (required)") + parser.add_argument("--sample_coverage_na12877", type=float, required=True, help="Mean read depth coverage for NA12877 sample (required)") + parser.add_argument("--sample_coverage_na12878", type=float, required=True, help="Mean read depth coverage for NA12878 sample (required)") + parser.add_argument("--sample_coverage_na12879", type=float, required=True, help="Mean read depth coverage for NA12879 sample (required)") parser.add_argument("--split_80_20", action='store_true', help="Whether to split the data into training and testing sets using an 80-20 split. If not specified, all the data will be used for training and testing, and cross-validation will be used to evaluate the model performance.") args = parser.parse_args() # Run the program. logging.info('Training the model, split_80_20 = %s.', args.split_80_20) - train(args.tp_hg002_grch37, args.fp_hg002_grch37, args.tp_visor_grch38, args.fp_visor_grch38, args.tp_platinum_grch38, args.fp_platinum_grch38, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.leave_out, args.split_80_20) + train(args.tp_hg002_grch37, args.fp_hg002_grch37, args.tp_visor_grch38, args.fp_visor_grch38, args.tp_na12877_grch38, args.fp_na12877_grch38, args.tp_na12878_grch38, args.fp_na12878_grch38, args.tp_na12879_grch38, args.fp_na12879_grch38, args.outdir, args.annovar, args.annovar_db, args.outdiranno, args.leave_out, args.split_80_20, args.sample_coverage_hg002, args.sample_coverage_visor, args.sample_coverage_na12877, args.sample_coverage_na12878, args.sample_coverage_na12879) logging.info('done.') From a84be5f2c22c7c75ae5a275972dee4f7487b97a2 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Mon, 2 Mar 2026 13:43:49 -0500 Subject: [PATCH 52/93] less than 10kb model --- contextscore/extract_features.py | 89 ++++++++++++++++---------------- contextscore/predict.py | 41 +++++++++++---- contextscore/train_full_model.py | 12 ++++- 3 files changed, 84 insertions(+), 58 deletions(-) diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 1053c1c..814d960 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -107,6 +107,14 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= names=['chrom', 'start', 'end', 'sv_type', 'sv_length', 'genotype', 'read_depth', 'hmm_llh', 'aln_type', 'cluster_size', 'cn_state', 'aln_offset', 'id'], dtype={'chrom': str, 'start': np.int32, 'end': np.int32, 'sv_type': str, 'sv_length': np.int32, 'genotype': str, 'read_depth': np.int32, 'hmm_llh': np.float32, 'aln_type': str, 'cluster_size': np.int32, 'cn_state': np.int32, 'aln_offset': np.int32, 'id': np.int32}) + # Ensure SV length is positive + bed_df['sv_length'] = bed_df['sv_length'].abs() + + # Throw error if any SV lengths are negative + if (bed_df['sv_length'] < 0).any(): + logging.error('Negative SV lengths found in the BED file.') + sys.exit(1) + # Drop the genotype column and cn_state columns (due to redundancy). bed_df.drop(columns=['genotype', 'cn_state'], inplace=True) @@ -120,14 +128,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop the original aln_type column. bed_df.drop(columns=['aln_type'], inplace=True) - # Create normalized cluster_size feature (cluster_size per 1000 bp of SV length) - # This prevents large sparse SVs from being unfairly penalized - bed_df['cluster_size_per_kb'] = np.where( - bed_df['sv_length'] > 0, - bed_df['cluster_size'] / (bed_df['sv_length'] / 1000.0), - 0 - ) - # Read depth normalized by sample coverage bed_df['read_depth_normalized'] = np.where( sample_coverage > 0, @@ -170,7 +170,6 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Add annotations to the features. bed_df = add_annotations(bed_df, input_bed, annovar_path, db_path, outdiranno, buildversion, training_format) - logging.info('Added ANNOVAR annotations to the features. Updated columns: %s', bed_df.columns) # Print the number of NaN values logging.info('Number of NaN values: %d', bed_df.isnull().sum().sum()) @@ -242,15 +241,8 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Print statistics about the distance to nearest SV feature. logging.info('Distance to nearest SV - mean: %.2f, median: %.2f, std: %.2f', bed_df['dist_to_nearest_sv'].mean(), bed_df['dist_to_nearest_sv'].median(), bed_df['dist_to_nearest_sv'].std()) - # Normalize by SV size - bed_df['dist_nearest_sv_per_kb'] = np.where( - bed_df['sv_length'] > 0, - bed_df['dist_to_nearest_sv'] / (bed_df['sv_length'] / 1000.0), - bed_df['dist_to_nearest_sv'] - ) - # Now drop sv_length since all normalizations are complete - bed_df.drop(columns=['sv_length'], inplace=True) + # bed_df.drop(columns=['sv_length'], inplace=True) # Save the first 500 features to a new file. features_file = os.path.join(outdiranno, 'features.tsv') @@ -370,25 +362,47 @@ def bed_to_annovar_input(bed_file): def download_annovar_db(annovar_path, db_path, db_name, buildversion='hg38'): - """Download the ANNOVAR database if it does not exist.""" - logging.info('Downloading the database:' + db_name + ' for build version: ' + buildversion) + """Download the ANNOVAR database if it does not exist. + + Returns True if successful or database already exists, False if download failed. + """ + logging.info('Downloading the database: %s for build version: %s', db_name, buildversion) + + # Check if database files already exist + expected_files = [ + os.path.join(db_path, f"{buildversion}_{db_name}.txt"), + os.path.join(db_path, f"{buildversion}_{db_name}.txt.idx"), + ] + + if all(os.path.exists(f) for f in expected_files): + logging.info('Database %s already exists, skipping download.', db_name) + return True + + # Ensure the database directory exists + os.makedirs(db_path, exist_ok=True) + cmd = [ f"{annovar_path}/annotate_variation.pl", "-buildver", buildversion, "-downdb", db_name, - db_path + "." # Download to current directory (we'll set cwd=db_path) ] - # annotate_variation.pl -build hg19 -downdb phastConsElements46way humandb/ - # Run the command to download the database. - logging.info('Running the command to download the database: %s', " ".join(cmd)) + # Run the command to download the database from the db_path directory + # This ensures files are downloaded directly to the correct location + logging.info('Running the command to download the database: %s (in directory: %s)', " ".join(cmd), db_path) try: - subprocess.run(" ".join(cmd), shell=True, check=True) + result = subprocess.run(" ".join(cmd), shell=True, check=True, capture_output=True, text=True, cwd=db_path) + if result.stdout: + logging.debug('Download stdout: %s', result.stdout) + logging.info('Downloaded the database %s successfully.', db_name) + return True except subprocess.CalledProcessError as e: - logging.error('Error downloading the database: %s', e) - logging.error('Please check the ANNOVAR path and database path.') - sys.exit(1) - logging.info('Downloaded the database %s successfully.', db_name) + logging.warning('Failed to download the database %s: %s', db_name, e) + if e.stderr: + logging.warning('Error output: %s', e.stderr) + logging.warning('Continuing without this database. Some features may be missing.') + return False def annotate(annovar_input, annovar_path, db_path, output_dir, buildversion='hg38'): @@ -514,10 +528,10 @@ def add_annotations(data, input_bed, annovar_path, db_path, anno_outdir, buildve # Annotate the SVs using ANNOVAR. # Download the segmental duplication database - download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildversion) + segdup_success = download_annovar_db(annovar_path, db_path, "genomicSuperDups", buildversion) # Download the cytoband database - download_annovar_db(annovar_path, db_path, "cytoBand", buildversion) + cytoband_success = download_annovar_db(annovar_path, db_path, "cytoBand", buildversion) # Set up a dictionary for each chromosome, mapping the cytoband to the # centromere and telomere regions. @@ -800,19 +814,4 @@ def point_in_any_interval(points, starts, ends): logging.info('Number of records after adding annotations: %d', data.shape[0]) - # Debug: Print read depths for large inversions - if 'sv_type_str' in data.columns and 'read_depth' in data.columns: - large_inversions = data[(data['sv_type_str'] == 'INV') & (data['end'] - data['start'] > 10000)] - if len(large_inversions) > 0: - logging.info('Debug: Large inversions (>10kb) found: %d records', len(large_inversions)) - for idx, row in large_inversions.head(10).iterrows(): - logging.info(' INV: chrom=%s, start=%d, end=%d, size=%d bp, read_depth=%d', - row.get('chrom', 'N/A'), - row.get('start', 0), - row.get('end', 0), - row.get('end', 0) - row.get('start', 0), - row.get('read_depth', -1)) - if len(large_inversions) > 10: - logging.info(' ... and %d more large inversions', len(large_inversions) - 10) - return data diff --git a/contextscore/predict.py b/contextscore/predict.py index 19e2c0d..2295669 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -125,8 +125,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist id_col = feature_df.pop('id') # Remove other non-feature columns before prediction. - # Keep normalized *_per_kb features; remove raw versions. - for col in ['chrom', 'start', 'end', 'sv_type_str', 'cluster_size', 'dist_to_nearest_sv', 'read_depth']: + # Keep cluster_size and dist_to_nearest_sv; remove raw read_depth (keep read_depth_normalized). + for col in ['chrom', 'start', 'end', 'sv_type_str', 'read_depth']: if col in feature_df.columns: feature_df.pop(col) @@ -175,8 +175,10 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # Create a VCF file with only the filtered variants removed_svs_vcf = os.path.join(output_dir, 'removed_svs.vcf') - # Filter the input VCF file based on the filtered indices - logging.info('Filtering the input VCF file based on the filtered indices...') + # Filter the input VCF file based on the filtered indices and SV length + # Keep all SVs >10kb regardless of confidence score; apply confidence threshold to SVs <=10kb + logging.info('Filtering the input VCF file based on the filtered indices and SV length...') + logging.info('Policy: Keep all SVs >10kb; apply confidence threshold (%.3f) to SVs <=10kb', prob_threshold) filtered_records = set(filtered_ids) current_record = 0 pass_count = 0 @@ -189,21 +191,38 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist vcf_out.write(line) removed_out.write(line) else: - if current_record in filtered_records: - # Write the line to the removed_svs.vcf file if the current record is in the filtered records - removed_out.write(line) - filter_count += 1 - else: - # Write the line if the current record is not in the filtered records + # Extract SVLEN from the VCF INFO field + info_field = line.split('\t')[7] + svlen_match = None + for field in info_field.split(';'): + if field.startswith('SVLEN='): + try: + svlen_match = int(field.split('=')[1]) + except (ValueError, IndexError): + svlen_match = None + break + + # Determine if variant should be kept + is_large_sv = svlen_match is not None and abs(svlen_match) > 10000 + is_below_threshold = current_record in filtered_records + + # Keep if: (large SV) OR (below confidence threshold) + # Note: is_below_threshold means confidence score < threshold, i.e., variant is confident/passing + if is_large_sv or not is_below_threshold: + # Write the line if the current record is not in the filtered records OR if it's a large SV vcf_out.write(line) pass_count += 1 + else: + # Write the line to the removed_svs.vcf file if it's filtered by confidence threshold and <=10kb + removed_out.write(line) + filter_count += 1 total_records += 1 current_record += 1 logging.info('Filtered the input VCF file and saved it to %s', output_vcf) logging.info('Scoring process completed successfully. Passed %d out of %d records.', pass_count, total_records) - logging.info('Removed %d records. See %s for details.', filter_count, removed_svs_vcf) + logging.info('Removed %d records (low confidence and <=10kb). See %s for details.', filter_count, removed_svs_vcf) if __name__ == '__main__': diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 0ac870d..ccd56ed 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -248,12 +248,20 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. + # Filter to keep only SVs with length <= 10kb for training + # (large SVs >10kb will always be kept in predictions) + logging.info('Filtering to keep only SVs with sv_length <= 10000 bp for training...') + data_before_size_filter = data.shape[0] + data = data[data['sv_length'] <= 10000] + data_after_size_filter = data.shape[0] + logging.info('Removed %d SVs with length > 10000 bp. Remaining training samples: %d', data_before_size_filter - data_after_size_filter, data_after_size_filter) + # Pop the chrom column to use it later for cross-validation. chrom_col = data.pop('chrom') # Drop columns that are not needed for training. - # Keep normalized *_per_kb features; remove raw versions. - data = data.drop(columns=['start', 'end', 'sv_type_str', 'cluster_size', 'dist_to_nearest_sv', 'read_depth'], errors='ignore') + # Keep cluster_size and dist_to_nearest_sv; remove raw read_depth (keep read_depth_normalized). + data = data.drop(columns=['start', 'end', 'sv_type_str', 'read_depth'], errors='ignore') logging.info('Columns list after preprocessing: %s', data.columns.tolist()) From ffcc59128e44794e45dfc90020533d6b611b07d6 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Thu, 5 Mar 2026 14:45:33 -0500 Subject: [PATCH 53/93] add filepath config file and prediction threshold sweep --- contextscore/extract_features.py | 15 +++ contextscore/predict.py | 26 +++- contextscore/threshold_sweep.py | 218 +++++++++++++++++++++++++++++++ contextscore/train_full_model.py | 84 +++++++++--- 4 files changed, 321 insertions(+), 22 deletions(-) create mode 100644 contextscore/threshold_sweep.py diff --git a/contextscore/extract_features.py b/contextscore/extract_features.py index 814d960..a9ad112 100644 --- a/contextscore/extract_features.py +++ b/contextscore/extract_features.py @@ -128,6 +128,14 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Drop the original aln_type column. bed_df.drop(columns=['aln_type'], inplace=True) + # Create normalized cluster_size feature (cluster_size per 1000 bp of SV length) + # This prevents large sparse SVs from being unfairly penalized + bed_df['cluster_size_per_kb'] = np.where( + bed_df['sv_length'] > 0, + bed_df['cluster_size'] / (bed_df['sv_length'] / 1000.0), + 0 + ) + # Read depth normalized by sample coverage bed_df['read_depth_normalized'] = np.where( sample_coverage > 0, @@ -241,6 +249,13 @@ def extract_features(input_bed, annovar_path, db_path, outdiranno, buildversion= # Print statistics about the distance to nearest SV feature. logging.info('Distance to nearest SV - mean: %.2f, median: %.2f, std: %.2f', bed_df['dist_to_nearest_sv'].mean(), bed_df['dist_to_nearest_sv'].median(), bed_df['dist_to_nearest_sv'].std()) + # Normalize by SV size + bed_df['dist_nearest_sv_per_kb'] = np.where( + bed_df['sv_length'] > 0, + bed_df['dist_to_nearest_sv'] / (bed_df['sv_length'] / 1000.0), + bed_df['dist_to_nearest_sv'] + ) + # Now drop sv_length since all normalizations are complete # bed_df.drop(columns=['sv_length'], inplace=True) diff --git a/contextscore/predict.py b/contextscore/predict.py index 2295669..6249d36 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -121,12 +121,22 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.error('Feature extraction failed. No features extracted.') sys.exit(1) - # Separate the ID, chrom, start, end, SV length, read depth, and cluster size columns from the features + # Separate the ID column and keep variant metadata for downstream evaluation joins. id_col = feature_df.pop('id') + + predictions_meta = pd.DataFrame({ + 'id': id_col.values, + 'chrom': feature_df['chrom'].astype(str).values if 'chrom' in feature_df.columns else np.nan, + 'start': pd.to_numeric(feature_df['start'], errors='coerce').astype('Int64').values if 'start' in feature_df.columns else pd.Series([pd.NA] * len(id_col), dtype='Int64').values, + 'end': pd.to_numeric(feature_df['end'], errors='coerce').astype('Int64').values if 'end' in feature_df.columns else pd.Series([pd.NA] * len(id_col), dtype='Int64').values, + 'sv_type_str': feature_df['sv_type_str'].astype(str).values if 'sv_type_str' in feature_df.columns else np.nan, + 'sv_length': pd.to_numeric(feature_df['sv_length'], errors='coerce').astype('Int64').values if 'sv_length' in feature_df.columns else pd.Series([pd.NA] * len(id_col), dtype='Int64').values, + }) + predictions_meta['sv_length_abs'] = predictions_meta['sv_length'].abs() # Remove other non-feature columns before prediction. - # Keep cluster_size and dist_to_nearest_sv; remove raw read_depth (keep read_depth_normalized). - for col in ['chrom', 'start', 'end', 'sv_type_str', 'read_depth']: + # Keep normalized *_per_kb features; remove raw versions. + for col in ['chrom', 'start', 'end', 'sv_type_str', 'cluster_size', 'dist_to_nearest_sv', 'read_depth']: if col in feature_df.columns: feature_df.pop(col) @@ -152,8 +162,16 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Running the model on the features...') y_pred = clf.predict_proba(feature_df) - # Plot a histogram of the probabilities using seaborn since it looks better output_dir = os.path.dirname(output_vcf) + + # Save per-variant probabilities for downstream threshold tuning. + predictions_tsv = os.path.join(output_dir, 'predictions.tsv') + predictions_df = predictions_meta.copy() + predictions_df['confidence_score'] = y_pred[:, 1] + predictions_df.to_csv(predictions_tsv, sep='\t', index=False) + logging.info('Saved per-variant predictions to %s', predictions_tsv) + + # Plot a histogram of the probabilities using seaborn since it looks better fig, ax = plt.subplots() sns.histplot(y_pred[:, 1], bins=20, ax=ax) ax.set_xlabel('Confidence Score') diff --git a/contextscore/threshold_sweep.py b/contextscore/threshold_sweep.py new file mode 100644 index 0000000..033e2f0 --- /dev/null +++ b/contextscore/threshold_sweep.py @@ -0,0 +1,218 @@ +"""Sweep confidence thresholds and report retention + optional label-based metrics. + +Usage: + python contextscore/threshold_sweep.py \ + --predictions /path/to/predictions.tsv \ + --output /path/to/threshold_sweep.tsv + +If labels are available (embedded or provided via --labels-tsv), +precision/recall/F1 are also reported. +""" + +import argparse +import logging +from typing import Dict, List + +import numpy as np +import pandas as pd + + +def safe_divide(numerator: float, denominator: float) -> float: + if denominator == 0: + return 0.0 + return numerator / denominator + + +def compute_binary_metrics(labels: np.ndarray, predicted_positive: np.ndarray) -> Dict[str, float]: + tp = int(np.sum((predicted_positive == 1) & (labels == 1))) + fp = int(np.sum((predicted_positive == 1) & (labels == 0))) + fn = int(np.sum((predicted_positive == 0) & (labels == 1))) + tn = int(np.sum((predicted_positive == 0) & (labels == 0))) + + precision = safe_divide(tp, tp + fp) + recall = safe_divide(tp, tp + fn) + f1 = safe_divide(2 * precision * recall, precision + recall) + specificity = safe_divide(tn, tn + fp) + + return { + 'tp': tp, + 'fp': fp, + 'fn': fn, + 'tn': tn, + 'precision': precision, + 'recall': recall, + 'f1': f1, + 'specificity': specificity, + } + + +def build_threshold_grid(min_threshold: float, max_threshold: float, step: float) -> List[float]: + thresholds = list(np.arange(min_threshold, max_threshold + (step / 2.0), step)) + return [round(float(th), 10) for th in thresholds] + + +def main() -> None: + parser = argparse.ArgumentParser(description='Sweep confidence thresholds for ContextScore predictions.') + parser.add_argument('--predictions', type=str, required=True, help='Path to predictions TSV.') + parser.add_argument('--output', type=str, required=True, help='Output TSV path for threshold summary.') + parser.add_argument('--score-col', type=str, default='confidence_score', help='Column containing confidence scores.') + parser.add_argument('--label-col', type=str, default=None, help='Optional label column (0/1) for precision/recall/F1.') + parser.add_argument('--labels-tsv', type=str, default=None, help='Optional labels TSV to merge with predictions.') + parser.add_argument('--pred-id-col', type=str, default='id', help='ID column in predictions TSV for label merge.') + parser.add_argument('--labels-id-col', type=str, default='id', help='ID column in labels TSV for label merge.') + parser.add_argument( + '--merge-on-cols', + type=str, + default=None, + help='Optional comma-separated shared columns to merge labels (e.g. chrom,start,end,sv_type_str,sv_length_abs).', + ) + parser.add_argument('--sv-length-col', type=str, default='sv_length', help='SV length column used with always-keep-large.') + parser.add_argument('--always-keep-large', action='store_true', help='Apply keep rule: score>=threshold OR abs(sv_length)>large-cutoff.') + parser.add_argument('--large-cutoff', type=int, default=10000, help='SV length cutoff for always-keep-large rule.') + parser.add_argument('--min-threshold', type=float, default=0.05, help='Minimum threshold (inclusive).') + parser.add_argument('--max-threshold', type=float, default=0.95, help='Maximum threshold (inclusive).') + parser.add_argument('--step', type=float, default=0.05, help='Threshold step size.') + + args = parser.parse_args() + + logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') + + df = pd.read_csv(args.predictions, sep='\t') + + label_col = args.label_col + if args.labels_tsv is not None: + if label_col is None: + label_col = 'label' + + labels_df = pd.read_csv(args.labels_tsv, sep='\t') + if label_col not in labels_df.columns: + raise ValueError( + f"Label column '{label_col}' not found in {args.labels_tsv}" + ) + + if args.merge_on_cols is not None: + merge_cols = [column.strip() for column in args.merge_on_cols.split(',') if column.strip()] + if not merge_cols: + raise ValueError('No merge columns were provided in --merge-on-cols') + + missing_in_pred = [column for column in merge_cols if column not in df.columns] + missing_in_labels = [column for column in merge_cols if column not in labels_df.columns] + if missing_in_pred: + raise ValueError( + f"Merge columns missing in predictions: {missing_in_pred}. File: {args.predictions}" + ) + if missing_in_labels: + raise ValueError( + f"Merge columns missing in labels TSV: {missing_in_labels}. File: {args.labels_tsv}" + ) + + labels_df = labels_df[merge_cols + [label_col]].drop_duplicates(subset=merge_cols) + df = df.merge(labels_df, on=merge_cols, how='left') + logging.info('Merged labels using shared columns: %s', ','.join(merge_cols)) + else: + if args.pred_id_col not in df.columns: + raise ValueError( + f"Prediction ID column '{args.pred_id_col}' not found in {args.predictions}" + ) + if args.labels_id_col not in labels_df.columns: + raise ValueError( + f"Labels ID column '{args.labels_id_col}' not found in {args.labels_tsv}" + ) + + labels_df = labels_df[[args.labels_id_col, label_col]].drop_duplicates(subset=[args.labels_id_col]) + df = df.merge(labels_df, left_on=args.pred_id_col, right_on=args.labels_id_col, how='left') + if args.labels_id_col != args.pred_id_col: + df = df.drop(columns=[args.labels_id_col]) + logging.info('Merged labels using ID columns: %s (predictions) and %s (labels)', args.pred_id_col, args.labels_id_col) + + matched_labels = int(df[label_col].notna().sum()) + logging.info( + 'Loaded labels from %s. Matched labels for %d/%d predictions.', + args.labels_tsv, + matched_labels, + len(df), + ) + + if args.score_col not in df.columns: + raise ValueError(f"Score column '{args.score_col}' not found in {args.predictions}") + + scores = pd.to_numeric(df[args.score_col], errors='coerce').fillna(0.0).to_numpy(dtype=float) + total = len(scores) + + has_labels = label_col is not None and label_col in df.columns + labels = None + labeled_mask = None + if has_labels: + label_values = pd.to_numeric(df[label_col], errors='coerce') + labeled_mask = label_values.notna().to_numpy(dtype=bool) + labeled_count = int(np.sum(labeled_mask)) + if labeled_count == 0: + has_labels = False + logging.info('Label column is present, but no non-missing labels were found. Running retention-only sweep.') + else: + labels = label_values.fillna(0).astype(int).to_numpy(dtype=int) + logging.info('Using %d labeled records for metric computation.', labeled_count) + + has_sv_length = args.sv_length_col in df.columns + sv_lengths = None + if args.always_keep_large: + if not has_sv_length: + raise ValueError( + f"--always-keep-large requested, but sv length column '{args.sv_length_col}' was not found in {args.predictions}" + ) + sv_lengths = pd.to_numeric(df[args.sv_length_col], errors='coerce').fillna(0).to_numpy(dtype=float) + + thresholds = build_threshold_grid(args.min_threshold, args.max_threshold, args.step) + + rows = [] + for threshold in thresholds: + keep_by_score = scores >= threshold + + if args.always_keep_large: + large_sv = np.abs(sv_lengths) > args.large_cutoff + keep_mask = keep_by_score | large_sv + else: + keep_mask = keep_by_score + + kept_count = int(np.sum(keep_mask)) + removed_count = total - kept_count + + row = { + 'threshold': threshold, + 'kept_count': kept_count, + 'removed_count': removed_count, + 'kept_fraction': safe_divide(kept_count, total), + 'removed_fraction': safe_divide(removed_count, total), + } + + if has_labels and labels is not None and labeled_mask is not None: + metrics = compute_binary_metrics(labels[labeled_mask], keep_mask.astype(int)[labeled_mask]) + row.update(metrics) + row['labeled_count'] = int(np.sum(labeled_mask)) + + rows.append(row) + + out_df = pd.DataFrame(rows) + out_df.to_csv(args.output, sep='\t', index=False) + logging.info('Saved threshold sweep to %s', args.output) + + # Print a concise summary to stdout for quick inspection. + if has_labels: + best_idx = out_df['f1'].idxmax() + best_row = out_df.loc[best_idx] + logging.info( + 'Best F1 threshold=%.3f | F1=%.4f | Precision=%.4f | Recall=%.4f | Kept=%d/%d | Labeled=%d', + best_row['threshold'], + best_row['f1'], + best_row['precision'], + best_row['recall'], + int(best_row['kept_count']), + total, + int(best_row['labeled_count']), + ) + else: + logging.info('No label column provided; reported retention-only threshold sweep.') + + +if __name__ == '__main__': + main() diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index ccd56ed..05b8bac 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -136,6 +136,64 @@ def impute_missing_values(tp_data, fp_data): return tp_data, fp_data + +def stratified_undersample_fp(fp_data, target_count, random_state=42): + """Undersample false positives using stratified sampling to preserve SV type and length distribution. + + Args: + fp_data (pd.DataFrame): False positive data to undersample. + target_count (int): Target number of samples to retain. + random_state (int): Random seed for reproducibility. + + Returns: + pd.DataFrame: Undersampled false positive data. + """ + logging.info('Performing stratified undersampling of false positives (count = %d) to target (count = %d)', + fp_data.shape[0], target_count) + + # Create length bins for stratification + fp_data_temp = fp_data.copy() + fp_data_temp['length_bin'] = pd.cut(fp_data_temp['sv_length'], + bins=[0, 1000, 10000, 100000, float('inf')], + labels=['<1kb', '1-10kb', '10-100kb', '>100kb']) + + # Create stratification column combining SV type and length bin + fp_data_temp['stratum'] = fp_data_temp['sv_type'].astype(str) + '_' + fp_data_temp['length_bin'].astype(str) + + # Calculate target sample size per stratum (proportional to original distribution) + stratum_counts = fp_data_temp['stratum'].value_counts() + stratum_fracs = stratum_counts / len(fp_data_temp) + + logging.info('Sampling from %d strata with proportional allocation', len(stratum_counts)) + + # Sample from each stratum proportionally + sampled_dfs = [] + for stratum, frac in stratum_fracs.items(): + stratum_data = fp_data_temp[fp_data_temp['stratum'] == stratum] + n_samples = max(1, int(round(frac * target_count))) # At least 1 sample per stratum + n_samples = min(n_samples, len(stratum_data)) # Can't sample more than available + sampled = stratum_data.sample(n=n_samples, random_state=random_state) + sampled_dfs.append(sampled) + + fp_data_balanced = pd.concat(sampled_dfs, ignore_index=True) + + # Drop temporary columns + fp_data_balanced = fp_data_balanced.drop(columns=['length_bin', 'stratum']) + + # If we're slightly off from target due to rounding, adjust by random sampling + if len(fp_data_balanced) > target_count: + fp_data_balanced = fp_data_balanced.sample(n=target_count, random_state=random_state) + elif len(fp_data_balanced) < target_count: + # Sample additional rows to reach target + n_additional = target_count - len(fp_data_balanced) + additional = fp_data.sample(n=n_additional, random_state=random_state+1) + fp_data_balanced = pd.concat([fp_data_balanced, additional], ignore_index=True) + + logging.info('Stratified undersampling complete. Final count: %d', len(fp_data_balanced)) + + return fp_data_balanced + + def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp_na12877_grch38, fp_na12877_grch38, tp_na12878_grch38, fp_na12878_grch38, tp_na12879_grch38, fp_na12879_grch38, output_directory, annovar_path, db_path, outdiranno, leave_out="none", split_80_20=False, sample_coverage_hg002=None, sample_coverage_visor=None, sample_coverage_na12877=None, sample_coverage_na12878=None, sample_coverage_na12879=None): """Train the binary classification model. @@ -238,30 +296,20 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp logging.info('Number of true labels after impute+dropna: %d', tp_data.shape[0]) logging.info('Number of false labels after impute+dropna: %d', fp_data.shape[0]) - # Balance the dataset by undersampling the true positives. - # logging.info('Balancing the dataset by undersampling the true positives (count = %d) to match the false positives (count = %d)', tp_data.shape[0], fp_data.shape[0]) - # tp_data = tp_data.sample(fp_data.shape[0], random_state=42) - - # logging.info('Number of true labels after balancing: %d', tp_data.shape[0]) - # logging.info('Number of false labels after balancing: %d', fp_data.shape[0]) + # Instead of undersampling, use class_weight='balanced' in Random Forest + # to handle class imbalance while preserving all training data. + logging.info('Skipping undersampling - will use class_weight="balanced" instead') + logging.info('Final class counts - TP: %d, FP: %d', tp_data.shape[0], fp_data.shape[0]) # Combine the true positive and false positive data. data = pd.concat([tp_data, fp_data], ignore_index=True) # Ignore the index to realign the indices. - # Filter to keep only SVs with length <= 10kb for training - # (large SVs >10kb will always be kept in predictions) - logging.info('Filtering to keep only SVs with sv_length <= 10000 bp for training...') - data_before_size_filter = data.shape[0] - data = data[data['sv_length'] <= 10000] - data_after_size_filter = data.shape[0] - logging.info('Removed %d SVs with length > 10000 bp. Remaining training samples: %d', data_before_size_filter - data_after_size_filter, data_after_size_filter) - # Pop the chrom column to use it later for cross-validation. chrom_col = data.pop('chrom') # Drop columns that are not needed for training. - # Keep cluster_size and dist_to_nearest_sv; remove raw read_depth (keep read_depth_normalized). - data = data.drop(columns=['start', 'end', 'sv_type_str', 'read_depth'], errors='ignore') + # Keep normalized *_per_kb features; remove raw versions. + data = data.drop(columns=['start', 'end', 'sv_type_str', 'cluster_size', 'dist_to_nearest_sv', 'read_depth'], errors='ignore') logging.info('Columns list after preprocessing: %s', data.columns.tolist()) @@ -290,7 +338,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # If not 80/20 split, use XGBoost and Random Forest only (highest performing models) to save time. if split_80_20: pipelines = { - "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42, class_weight='balanced'))]), } # pipelines = { # "Logistic_Regression": Pipeline([('classifier', LogisticRegression(max_iter=1000, random_state=42))]), @@ -299,7 +347,7 @@ def train(tp_hg002_grch37, fp_hg002_grch37, tp_visor_grch38, fp_visor_grch38, tp # } else: pipelines = { - "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), + "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42, class_weight='balanced'))]), } # pipelines = { # "Random_Forest": Pipeline([('classifier', RandomForestClassifier(n_estimators=100, random_state=42))]), From b25ae221754ec484e9c32af2751ec38b477898d5 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sun, 8 Mar 2026 14:27:51 -0400 Subject: [PATCH 54/93] optimal thresholds by sv type --- contextscore/analyze_threshold_by_svtype.py | 168 ++++++++++++++++++++ contextscore/predict.py | 116 +++++++++++--- 2 files changed, 262 insertions(+), 22 deletions(-) create mode 100644 contextscore/analyze_threshold_by_svtype.py diff --git a/contextscore/analyze_threshold_by_svtype.py b/contextscore/analyze_threshold_by_svtype.py new file mode 100644 index 0000000..a302821 --- /dev/null +++ b/contextscore/analyze_threshold_by_svtype.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python3 +""" +Analyze optimal confidence thresholds for each SV type separately. + +Merges predictions with labeled benchmark data and computes precision/recall/F1 +for each SV type across a range of confidence thresholds, respecting a large SV +cutoff (variants >50kb are always kept). +""" + +import argparse +import logging +import pandas as pd +import numpy as np +from pathlib import Path + + +def calculate_metrics(tp, fp, fn, tn): + """Calculate precision, recall, F1, and specificity from confusion matrix.""" + precision = tp / (tp + fp) if (tp + fp) > 0 else 0.0 + recall = tp / (tp + fn) if (tp + fn) > 0 else 0.0 + specificity = tn / (tn + fp) if (tn + fp) > 0 else 0.0 + f1 = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0.0 + return precision, recall, f1, specificity + + +def analyze_thresholds_by_svtype(predictions_file, labels_file, output_file, + min_threshold=0.05, max_threshold=0.50, step=0.05, + large_cutoff=50000): + """ + Analyze optimal thresholds for each SV type. + + Args: + predictions_file: TSV with predictions (chrom, start, end, sv_type_str, sv_length_abs, confidence_score) + labels_file: TSV with labels (chrom, start, end, sv_type_str, sv_length_abs, label) + output_file: Output TSV file for results + min_threshold: Minimum confidence threshold to test + max_threshold: Maximum confidence threshold to test + step: Step size for threshold sweep + large_cutoff: SV size cutoff (bp); variants >this are always kept + """ + + logging.info(f'Loading predictions from {predictions_file}') + predictions = pd.read_csv(predictions_file, sep='\t') + + logging.info(f'Loading labels from {labels_file}') + labels = pd.read_csv(labels_file, sep='\t') + + # Merge on coordinate columns + merge_cols = ['chrom', 'start', 'end', 'sv_type_str', 'sv_length_abs'] + logging.info(f'Merging predictions with labels on: {merge_cols}') + + merged = pd.merge(predictions, labels, on=merge_cols, how='inner') + logging.info(f'Merged {len(merged)} variants with labels out of {len(predictions)} predictions') + + # Get unique SV types + sv_types = sorted(merged['sv_type_str'].unique()) + logging.info(f'Found SV types: {sv_types}') + + # Generate thresholds + thresholds = np.arange(min_threshold, max_threshold + step, step) + + results = [] + + for svtype in sv_types: + svtype_data = merged[merged['sv_type_str'] == svtype].copy() + n_positive = (svtype_data['label'] == 1).sum() + n_negative = (svtype_data['label'] == 0).sum() + + logging.info(f'\n{svtype}: {len(svtype_data)} variants (TP/TN in benchmark: {n_positive}/{n_negative})') + + for threshold in thresholds: + # Apply filtering: keep if (size > large_cutoff) OR (confidence >= threshold) + kept_mask = (svtype_data['sv_length_abs'] > large_cutoff) | (svtype_data['confidence_score'] >= threshold) + n_kept = kept_mask.sum() + kept_fraction = n_kept / len(svtype_data) if len(svtype_data) > 0 else 0.0 + + # Calculate metrics on kept variants + kept_data = svtype_data[kept_mask] + + if len(kept_data) > 0: + tp = ((kept_data['confidence_score'] >= threshold) & (kept_data['label'] == 1)).sum() + fp = ((kept_data['confidence_score'] >= threshold) & (kept_data['label'] == 0)).sum() + fn = ((kept_data['confidence_score'] < threshold) & (kept_data['label'] == 1) & + (kept_data['sv_length_abs'] <= large_cutoff)).sum() + tn = ((kept_data['confidence_score'] < threshold) & (kept_data['label'] == 0) & + (kept_data['sv_length_abs'] <= large_cutoff)).sum() + else: + tp = fp = fn = tn = 0 + + precision, recall, f1, specificity = calculate_metrics(tp, fp, fn, tn) + + results.append({ + 'sv_type': svtype, + 'threshold': threshold, + 'n_variants': len(svtype_data), + 'n_positive': n_positive, + 'n_negative': n_negative, + 'kept_count': n_kept, + 'kept_fraction': kept_fraction, + 'tp': int(tp), + 'fp': int(fp), + 'fn': int(fn), + 'tn': int(tn), + 'precision': precision, + 'recall': recall, + 'f1': f1, + 'specificity': specificity + }) + + # Save results to file + results_df = pd.DataFrame(results) + results_df.to_csv(output_file, sep='\t', index=False) + logging.info(f'\nSaved results to {output_file}') + + # Print best F1 threshold for each SV type + print("\n" + "="*80) + print("BEST F1 THRESHOLD BY SV TYPE") + print("="*80) + print(f"{'SV Type':<15} {'Best Thr':>10} {'F1':>12} {'Precision':>12} {'Recall':>12} {'Kept':>10}") + print("-"*80) + + for svtype in sv_types: + svtype_results = results_df[results_df['sv_type'] == svtype] + best_idx = svtype_results['f1'].idxmax() + best_row = results_df.loc[best_idx] + + print(f"{best_row['sv_type']:<15} {best_row['threshold']:>10.2f} {best_row['f1']:>12.4f} " + f"{best_row['precision']:>12.4f} {best_row['recall']:>12.4f} {best_row['kept_count']:>10.0f}") + + print("="*80) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Analyze optimal confidence thresholds for each SV type' + ) + parser.add_argument('--predictions', required=True, + help='TSV file with predictions (output from predict.py)') + parser.add_argument('--labels', required=True, + help='TSV file with benchmark labels') + parser.add_argument('--output', required=True, + help='Output TSV file for threshold analysis results') + parser.add_argument('--min-threshold', type=float, default=0.05, + help='Minimum confidence threshold to test (default: 0.05)') + parser.add_argument('--max-threshold', type=float, default=0.50, + help='Maximum confidence threshold to test (default: 0.50)') + parser.add_argument('--step', type=float, default=0.05, + help='Step size for threshold sweep (default: 0.05)') + parser.add_argument('--large-cutoff', type=int, default=50000, + help='SV size cutoff in bp; variants >this are always kept (default: 50000)') + + args = parser.parse_args() + + # Set up logging + logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' + ) + + analyze_thresholds_by_svtype( + args.predictions, + args.labels, + args.output, + min_threshold=args.min_threshold, + max_threshold=args.max_threshold, + step=args.step, + large_cutoff=args.large_cutoff + ) diff --git a/contextscore/predict.py b/contextscore/predict.py index 6249d36..aceefda 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -83,17 +83,33 @@ def create_bed(input_vcf, output_bed): bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05, sample_coverage=None): +def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05, + threshold_del=None, threshold_dup=None, threshold_ins=None, threshold_inv=None, sample_coverage=None): """Score the structural variants using the binary classification model. Args: model (str): Path to the model file. input_vcf (str): Path to the input VCF file. output_vcf (str): Path to the output VCF file. + threshold (float): Default threshold for SV types not specified. + threshold_del (float): Optional. Threshold for DEL variants. If None, uses default threshold. + threshold_dup (float): Optional. Threshold for DUP variants. If None, uses default threshold. + threshold_ins (float): Optional. Threshold for INS variants. If None, uses default threshold. + threshold_inv (float): Optional. Threshold for INV variants. If None, uses default threshold. sample_coverage (float): Required. Mean read depth coverage for the sample. """ + # Build threshold dictionary with type-specific values + threshold_by_type = { + 'DEL': threshold_del if threshold_del is not None else threshold, + 'DUP': threshold_dup if threshold_dup is not None else threshold, + 'INS': threshold_ins if threshold_ins is not None else threshold, + 'INV': threshold_inv if threshold_inv is not None else threshold, + } + prob_threshold = threshold - logging.info('Using probability threshold: %.3f', prob_threshold) + logging.info('Using confidence threshold policy:') + for svtype, thr in sorted(threshold_by_type.items()): + logging.info(' %s: %.3f', svtype, thr) # Create a BED file from the input VCF file bed_file = os.path.splitext(input_vcf)[0] + '.bed' @@ -181,27 +197,38 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist # Save the plot to the output directory plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) logging.info('Saved the plot of the probabilities to %s', os.path.join(output_dir, 'probabilities_seaborn.png')) + + # Build a lookup dictionary: variant_id → (confidence_score, sv_type) for type-specific filtering + variant_lookup = {} + for idx, row in predictions_df.iterrows(): + variant_lookup[row['id']] = (row['confidence_score'], row['sv_type_str']) + + logging.info('Built variant lookup with %d entries for type-specific filtering', len(variant_lookup)) + + # For backward compatibility, also track variants below the default threshold filtered_indices = np.where(y_pred[:, 1] < prob_threshold)[0] - logging.info('Number of variants under the probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) + logging.info('Number of variants under the default probability threshold %.2f: %d', prob_threshold, len(filtered_indices)) - # Get the IDs of the filtered variants + # Get the IDs of the filtered variants (for logging/debugging) filtered_ids = id_col.iloc[filtered_indices].values filtered_ids_file = os.path.join(output_dir, 'filtered_ids.txt') np.savetxt(filtered_ids_file, filtered_ids, fmt='%s') - logging.info('Saved the filtered IDs to %s', filtered_ids_file) + logging.info('Saved the filtered IDs (using default threshold) to %s', filtered_ids_file) # Create a VCF file with only the filtered variants removed_svs_vcf = os.path.join(output_dir, 'removed_svs.vcf') - # Filter the input VCF file based on the filtered indices and SV length - # Keep all SVs >10kb regardless of confidence score; apply confidence threshold to SVs <=10kb - logging.info('Filtering the input VCF file based on the filtered indices and SV length...') - logging.info('Policy: Keep all SVs >10kb; apply confidence threshold (%.3f) to SVs <=10kb', prob_threshold) - filtered_records = set(filtered_ids) + # Filter the input VCF file based on type-specific thresholds and SV length + # Keep all SVs >50kb regardless of confidence score; apply type-specific threshold to SVs <=50kb + logging.info('Filtering the input VCF file using type-specific thresholds and SV length...') + logging.info('Policy: Keep all SVs >50kb; apply type-specific thresholds to SVs <=50kb') + current_record = 0 pass_count = 0 filter_count = 0 total_records = 0 + type_filter_stats = {} # Track filtering statistics by type + with open(input_vcf, 'r') as vcf_in, open(output_vcf, 'w') as vcf_out, open(removed_svs_vcf, 'w') as removed_out: for line in vcf_in: if line.startswith('#'): @@ -209,38 +236,72 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist vcf_out.write(line) removed_out.write(line) else: - # Extract SVLEN from the VCF INFO field + # Extract SVLEN and SVTYPE from the VCF INFO field info_field = line.split('\t')[7] svlen_match = None + svtype_match = None + for field in info_field.split(';'): if field.startswith('SVLEN='): try: svlen_match = int(field.split('=')[1]) except (ValueError, IndexError): svlen_match = None - break + elif field.startswith('SVTYPE='): + try: + svtype_match = field.split('=')[1] + except IndexError: + svtype_match = None + + # Get confidence score and sv_type from predictions lookup + if current_record in variant_lookup: + confidence_score, predicted_svtype = variant_lookup[current_record] + # Use VCF SVTYPE if available, otherwise use predicted svtype + svtype = svtype_match if svtype_match else predicted_svtype + else: + # Variant not in predictions (shouldn't happen, but handle gracefully) + logging.warning(f'Variant {current_record} not found in predictions lookup, using default threshold') + confidence_score = 0.0 + svtype = svtype_match if svtype_match else 'UNKNOWN' + + # Get the appropriate threshold for this SV type + type_threshold = threshold_by_type.get(svtype, prob_threshold) # Determine if variant should be kept - is_large_sv = svlen_match is not None and abs(svlen_match) > 10000 - is_below_threshold = current_record in filtered_records + is_large_sv = svlen_match is not None and abs(svlen_match) > 50000 + passes_threshold = confidence_score >= type_threshold - # Keep if: (large SV) OR (below confidence threshold) - # Note: is_below_threshold means confidence score < threshold, i.e., variant is confident/passing - if is_large_sv or not is_below_threshold: - # Write the line if the current record is not in the filtered records OR if it's a large SV + # Keep if: (large SV) OR (passes type-specific threshold) + should_keep = is_large_sv or passes_threshold + + # Track statistics by type + if svtype not in type_filter_stats: + type_filter_stats[svtype] = {'total': 0, 'kept': 0, 'filtered': 0} + type_filter_stats[svtype]['total'] += 1 + + if should_keep: vcf_out.write(line) pass_count += 1 + type_filter_stats[svtype]['kept'] += 1 else: - # Write the line to the removed_svs.vcf file if it's filtered by confidence threshold and <=10kb + # Write the line to the removed_svs.vcf file if filtered removed_out.write(line) filter_count += 1 + type_filter_stats[svtype]['filtered'] += 1 total_records += 1 current_record += 1 logging.info('Filtered the input VCF file and saved it to %s', output_vcf) logging.info('Scoring process completed successfully. Passed %d out of %d records.', pass_count, total_records) - logging.info('Removed %d records (low confidence and <=10kb). See %s for details.', filter_count, removed_svs_vcf) + logging.info('Removed %d records (low confidence and <=50kb). See %s for details.', filter_count, removed_svs_vcf) + + # Log filtering statistics by SV type + logging.info('Filtering statistics by SV type:') + for svtype in sorted(type_filter_stats.keys()): + stats = type_filter_stats[svtype] + kept_pct = 100.0 * stats['kept'] / stats['total'] if stats['total'] > 0 else 0 + logging.info(' %s: kept %d/%d (%.1f%%)', svtype, stats['kept'], stats['total'], kept_pct) if __name__ == '__main__': @@ -258,7 +319,15 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist parser.add_argument('--title', type=str, default='Probability Distribution', help='Title for the probability distribution plot (default: Probability Distribution).') parser.add_argument('--threshold', type=float, default=0.05, - help='Threshold for filtering predictions (default: 0.05).') + help='Default threshold for filtering predictions (default: 0.05). Used for SV types without specific thresholds.') + parser.add_argument('--threshold-del', type=float, default=None, + help='Threshold for DEL variants (default: uses --threshold value).') + parser.add_argument('--threshold-dup', type=float, default=None, + help='Threshold for DUP variants (default: uses --threshold value).') + parser.add_argument('--threshold-ins', type=float, default=None, + help='Threshold for INS variants (default: uses --threshold value).') + parser.add_argument('--threshold-inv', type=float, default=None, + help='Threshold for INV variants (default: uses --threshold value).') parser.add_argument('--sample_coverage', type=float, required=True, help='Mean read depth coverage for the sample (required, used to normalize read_depth).') @@ -309,5 +378,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist sys.exit(1) # Run the scoring function - score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, threshold=args.threshold, sample_coverage=args.sample_coverage) + score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, + threshold=args.threshold, sample_coverage=args.sample_coverage, + threshold_del=args.threshold_del, threshold_dup=args.threshold_dup, + threshold_ins=args.threshold_ins, threshold_inv=args.threshold_inv) logging.info('Scoring process completed.') From 884c89b3341e56d68884ed8374aa5a78c7274c92 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Tue, 10 Mar 2026 02:31:40 -0400 Subject: [PATCH 55/93] add sv length cutoff parameter --- contextscore/predict.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/contextscore/predict.py b/contextscore/predict.py index aceefda..acdf053 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -84,7 +84,7 @@ def create_bed(input_vcf, output_bed): logging.info('Created BED file: %s', output_bed) def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05, - threshold_del=None, threshold_dup=None, threshold_ins=None, threshold_inv=None, sample_coverage=None): + threshold_del=None, threshold_dup=None, threshold_ins=None, threshold_inv=None, sample_coverage=None, large_cutoff=10000): """Score the structural variants using the binary classification model. Args: @@ -97,6 +97,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist threshold_ins (float): Optional. Threshold for INS variants. If None, uses default threshold. threshold_inv (float): Optional. Threshold for INV variants. If None, uses default threshold. sample_coverage (float): Required. Mean read depth coverage for the sample. + large_cutoff (int): SV size cutoff in bp; variants larger than this are always kept (default: 50000). """ # Build threshold dictionary with type-specific values threshold_by_type = { @@ -268,7 +269,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist type_threshold = threshold_by_type.get(svtype, prob_threshold) # Determine if variant should be kept - is_large_sv = svlen_match is not None and abs(svlen_match) > 50000 + is_large_sv = svlen_match is not None and abs(svlen_match) > large_cutoff passes_threshold = confidence_score >= type_threshold # Keep if: (large SV) OR (passes type-specific threshold) @@ -330,6 +331,8 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist help='Threshold for INV variants (default: uses --threshold value).') parser.add_argument('--sample_coverage', type=float, required=True, help='Mean read depth coverage for the sample (required, used to normalize read_depth).') + parser.add_argument('--large-cutoff', type=int, default=10000, + help='SV size cutoff in bp; variants larger than this are always kept (default: 50000).') args = parser.parse_args() input_vcf = args.input @@ -381,5 +384,6 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, threshold=args.threshold, sample_coverage=args.sample_coverage, threshold_del=args.threshold_del, threshold_dup=args.threshold_dup, - threshold_ins=args.threshold_ins, threshold_inv=args.threshold_inv) + threshold_ins=args.threshold_ins, threshold_inv=args.threshold_inv, + large_cutoff=args.large_cutoff) logging.info('Scoring process completed.') From 037895812e65e5b90e288d1116675e4368fd52ce Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 11 Apr 2026 21:15:55 -0400 Subject: [PATCH 56/93] conda project restructure --- README.md | 62 +++++++ conda-recipe/meta.yaml | 37 +++++ contextscore/__main__.py | 26 +-- contextscore/analyze_threshold_by_svtype.py | 168 ------------------- contextscore/predict.py | 173 +++++++++++++++----- contextscore/train_full_model.py | 5 +- environment.yml | 15 ++ setup.py | 13 +- 8 files changed, 261 insertions(+), 238 deletions(-) create mode 100644 conda-recipe/meta.yaml delete mode 100644 contextscore/analyze_threshold_by_svtype.py create mode 100644 environment.yml diff --git a/README.md b/README.md index 8a32729..fd1549e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,64 @@ # ContextScore Assign confidence scores to SV datasets based on coverage, genomic context, and other important alignment features + +## User Workflow + +ContextScore exposes a single user-facing command for prediction: + +```bash +contextscore --input input.vcf --output scored.vcf --model full_model.pkl --sample_coverage 30 \ + --annovar /path/to/annovar --annovar-db /path/to/humandb +``` + +ANNOVAR is required for prediction and must be installed separately. + +You can provide ANNOVAR locations using flags: + +- `--annovar`: directory containing `annotate_variation.pl` and `table_annovar.pl` +- `--annovar-db`: ANNOVAR database directory + +Or using environment variables: + +```bash +export ANNOVAR_PATH=/path/to/annovar +export ANNOVAR_DB_PATH=/path/to/humandb +contextscore --input input.vcf --output scored.vcf --model full_model.pkl --sample_coverage 30 +``` + +### Logging Modes + +- Default: concise user-focused progress messages +- `--verbose`: detailed processing logs +- `--debug`: debugging logs including subprocess details + +## Developer Workflow + +Model training is developer-only and is intentionally not exposed as a public installed command. +Use module/script invocation for training pipelines and private datasets. + +## Conda Package Setup + +This repository includes a Linux conda recipe at `conda-recipe/meta.yaml`. + +Build steps: + +```bash +conda env create -f environment.yml +conda activate contextscore-build +conda build conda-recipe +``` + +Install locally built package: + +```bash +conda install --use-local contextscore +``` + +Notes: + +- The recipe is Linux-only (`skip: true # [win]`) because `bedtools` is required at runtime. +- Optional debug plotting dependencies are not part of base runtime; install with pip extra if needed: + +```bash +pip install .[plot] +``` diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml new file mode 100644 index 0000000..072724b --- /dev/null +++ b/conda-recipe/meta.yaml @@ -0,0 +1,37 @@ +{% set name = "contextscore" %} +{% set version = "0.1.0" %} + +package: + name: {{ name|lower }} + version: {{ version }} + +source: + path: .. + +build: + number: 0 + skip: true # [win] + script: "{{ PYTHON }} -m pip install . --no-deps -vv" + +requirements: + host: + - python >=3.10,<3.11 + - pip + - setuptools + run: + - python >=3.10,<3.11 + - numpy + - pandas + - scikit-learn + - joblib + - bedtools + +about: + home: https://github.com/WGLab/ContextScore + summary: Assign confidence scores to structural variant datasets. + license: MIT + license_file: LICENSE + +extra: + recipe-maintainers: + - WGLab diff --git a/contextscore/__main__.py b/contextscore/__main__.py index 9aada5f..a4a5245 100644 --- a/contextscore/__main__.py +++ b/contextscore/__main__.py @@ -1,25 +1,5 @@ -import sys -import subprocess +from .predict import main -def main(vcf_file, annovar_path, annovar_db_path): - # Construct the command to run the contextscore module - command = [annovar_path, 'contextscore', vcf_file, '-db', annovar_db_path] - - # Run the command - try: - result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - print(result.stdout.decode()) - except subprocess.CalledProcessError as e: - print(f"Error running contextscore: {e.stderr.decode()}", file=sys.stderr) -if __name__ == "__main__": - if len(sys.argv) != 4: - print("Usage: python __main__.py ") - sys.exit(1) - - vcf_file = sys.argv[1] - annovar_path = sys.argv[2] - annovar_db_path = sys.argv[3] - - main(vcf_file, annovar_path, annovar_db_path) - \ No newline at end of file +if __name__ == '__main__': + main() diff --git a/contextscore/analyze_threshold_by_svtype.py b/contextscore/analyze_threshold_by_svtype.py deleted file mode 100644 index a302821..0000000 --- a/contextscore/analyze_threshold_by_svtype.py +++ /dev/null @@ -1,168 +0,0 @@ -#!/usr/bin/env python3 -""" -Analyze optimal confidence thresholds for each SV type separately. - -Merges predictions with labeled benchmark data and computes precision/recall/F1 -for each SV type across a range of confidence thresholds, respecting a large SV -cutoff (variants >50kb are always kept). -""" - -import argparse -import logging -import pandas as pd -import numpy as np -from pathlib import Path - - -def calculate_metrics(tp, fp, fn, tn): - """Calculate precision, recall, F1, and specificity from confusion matrix.""" - precision = tp / (tp + fp) if (tp + fp) > 0 else 0.0 - recall = tp / (tp + fn) if (tp + fn) > 0 else 0.0 - specificity = tn / (tn + fp) if (tn + fp) > 0 else 0.0 - f1 = 2 * (precision * recall) / (precision + recall) if (precision + recall) > 0 else 0.0 - return precision, recall, f1, specificity - - -def analyze_thresholds_by_svtype(predictions_file, labels_file, output_file, - min_threshold=0.05, max_threshold=0.50, step=0.05, - large_cutoff=50000): - """ - Analyze optimal thresholds for each SV type. - - Args: - predictions_file: TSV with predictions (chrom, start, end, sv_type_str, sv_length_abs, confidence_score) - labels_file: TSV with labels (chrom, start, end, sv_type_str, sv_length_abs, label) - output_file: Output TSV file for results - min_threshold: Minimum confidence threshold to test - max_threshold: Maximum confidence threshold to test - step: Step size for threshold sweep - large_cutoff: SV size cutoff (bp); variants >this are always kept - """ - - logging.info(f'Loading predictions from {predictions_file}') - predictions = pd.read_csv(predictions_file, sep='\t') - - logging.info(f'Loading labels from {labels_file}') - labels = pd.read_csv(labels_file, sep='\t') - - # Merge on coordinate columns - merge_cols = ['chrom', 'start', 'end', 'sv_type_str', 'sv_length_abs'] - logging.info(f'Merging predictions with labels on: {merge_cols}') - - merged = pd.merge(predictions, labels, on=merge_cols, how='inner') - logging.info(f'Merged {len(merged)} variants with labels out of {len(predictions)} predictions') - - # Get unique SV types - sv_types = sorted(merged['sv_type_str'].unique()) - logging.info(f'Found SV types: {sv_types}') - - # Generate thresholds - thresholds = np.arange(min_threshold, max_threshold + step, step) - - results = [] - - for svtype in sv_types: - svtype_data = merged[merged['sv_type_str'] == svtype].copy() - n_positive = (svtype_data['label'] == 1).sum() - n_negative = (svtype_data['label'] == 0).sum() - - logging.info(f'\n{svtype}: {len(svtype_data)} variants (TP/TN in benchmark: {n_positive}/{n_negative})') - - for threshold in thresholds: - # Apply filtering: keep if (size > large_cutoff) OR (confidence >= threshold) - kept_mask = (svtype_data['sv_length_abs'] > large_cutoff) | (svtype_data['confidence_score'] >= threshold) - n_kept = kept_mask.sum() - kept_fraction = n_kept / len(svtype_data) if len(svtype_data) > 0 else 0.0 - - # Calculate metrics on kept variants - kept_data = svtype_data[kept_mask] - - if len(kept_data) > 0: - tp = ((kept_data['confidence_score'] >= threshold) & (kept_data['label'] == 1)).sum() - fp = ((kept_data['confidence_score'] >= threshold) & (kept_data['label'] == 0)).sum() - fn = ((kept_data['confidence_score'] < threshold) & (kept_data['label'] == 1) & - (kept_data['sv_length_abs'] <= large_cutoff)).sum() - tn = ((kept_data['confidence_score'] < threshold) & (kept_data['label'] == 0) & - (kept_data['sv_length_abs'] <= large_cutoff)).sum() - else: - tp = fp = fn = tn = 0 - - precision, recall, f1, specificity = calculate_metrics(tp, fp, fn, tn) - - results.append({ - 'sv_type': svtype, - 'threshold': threshold, - 'n_variants': len(svtype_data), - 'n_positive': n_positive, - 'n_negative': n_negative, - 'kept_count': n_kept, - 'kept_fraction': kept_fraction, - 'tp': int(tp), - 'fp': int(fp), - 'fn': int(fn), - 'tn': int(tn), - 'precision': precision, - 'recall': recall, - 'f1': f1, - 'specificity': specificity - }) - - # Save results to file - results_df = pd.DataFrame(results) - results_df.to_csv(output_file, sep='\t', index=False) - logging.info(f'\nSaved results to {output_file}') - - # Print best F1 threshold for each SV type - print("\n" + "="*80) - print("BEST F1 THRESHOLD BY SV TYPE") - print("="*80) - print(f"{'SV Type':<15} {'Best Thr':>10} {'F1':>12} {'Precision':>12} {'Recall':>12} {'Kept':>10}") - print("-"*80) - - for svtype in sv_types: - svtype_results = results_df[results_df['sv_type'] == svtype] - best_idx = svtype_results['f1'].idxmax() - best_row = results_df.loc[best_idx] - - print(f"{best_row['sv_type']:<15} {best_row['threshold']:>10.2f} {best_row['f1']:>12.4f} " - f"{best_row['precision']:>12.4f} {best_row['recall']:>12.4f} {best_row['kept_count']:>10.0f}") - - print("="*80) - - -if __name__ == '__main__': - parser = argparse.ArgumentParser( - description='Analyze optimal confidence thresholds for each SV type' - ) - parser.add_argument('--predictions', required=True, - help='TSV file with predictions (output from predict.py)') - parser.add_argument('--labels', required=True, - help='TSV file with benchmark labels') - parser.add_argument('--output', required=True, - help='Output TSV file for threshold analysis results') - parser.add_argument('--min-threshold', type=float, default=0.05, - help='Minimum confidence threshold to test (default: 0.05)') - parser.add_argument('--max-threshold', type=float, default=0.50, - help='Maximum confidence threshold to test (default: 0.50)') - parser.add_argument('--step', type=float, default=0.05, - help='Step size for threshold sweep (default: 0.05)') - parser.add_argument('--large-cutoff', type=int, default=50000, - help='SV size cutoff in bp; variants >this are always kept (default: 50000)') - - args = parser.parse_args() - - # Set up logging - logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(levelname)s - %(message)s' - ) - - analyze_thresholds_by_svtype( - args.predictions, - args.labels, - args.output, - min_threshold=args.min_threshold, - max_threshold=args.max_threshold, - step=args.step, - large_cutoff=args.large_cutoff - ) diff --git a/contextscore/predict.py b/contextscore/predict.py index acdf053..bf42b2b 100644 --- a/contextscore/predict.py +++ b/contextscore/predict.py @@ -13,14 +13,68 @@ import os import sys import logging +import argparse +import importlib import numpy as np import joblib import pandas as pd -import seaborn as sns -import matplotlib.pyplot as plt +try: + from .extract_features import extract_features +except ImportError: + from extract_features import extract_features -from extract_features import extract_features + +USER_PREFIX = "[ContextScore]" + + +def user_message(message): + """Emit concise, user-facing progress messages.""" + print(f"{USER_PREFIX} {message}") + + +def configure_logging(verbose=False, debug=False): + """Configure logging output level based on user-selected mode.""" + level = logging.DEBUG if debug else (logging.INFO if verbose else logging.WARNING) + logging.basicConfig(level=level, format='%(asctime)s - %(levelname)s - %(message)s') + + +def resolve_annovar_paths(annovar_path, annovar_db_path): + """Resolve ANNOVAR paths from CLI flags or environment variables.""" + resolved_path = annovar_path or os.getenv('ANNOVAR_PATH') + resolved_db = annovar_db_path or os.getenv('ANNOVAR_DB_PATH') + return resolved_path, resolved_db + + +def validate_annovar_paths(annovar_path, annovar_db_path): + """Validate ANNOVAR installation paths before running feature extraction.""" + if not annovar_path: + raise ValueError( + 'ANNOVAR path is required. Set --annovar or environment variable ANNOVAR_PATH.' + ) + if not annovar_db_path: + raise ValueError( + 'ANNOVAR database path is required. Set --annovar-db or environment variable ANNOVAR_DB_PATH.' + ) + + annotate_variation = os.path.join(annovar_path, 'annotate_variation.pl') + table_annovar = os.path.join(annovar_path, 'table_annovar.pl') + if not os.path.isfile(annotate_variation) or not os.path.isfile(table_annovar): + raise ValueError( + f'Invalid ANNOVAR path: {annovar_path}. Expected annotate_variation.pl and table_annovar.pl in this directory.' + ) + if not os.path.isdir(annovar_db_path): + raise ValueError(f'ANNOVAR database directory does not exist: {annovar_db_path}') + + +def try_import_plotting_libs(): + """Attempt to import plotting libraries without failing prediction flow.""" + try: + plt = importlib.import_module('matplotlib.pyplot') + sns = importlib.import_module('seaborn') + return plt, sns + except ImportError: + return None, None def create_bed(input_vcf, output_bed): """Create a BED file from the input VCF file. Extract the following fields: @@ -83,8 +137,10 @@ def create_bed(input_vcf, output_bed): bed_df.to_csv(output_bed, sep='\t', header=False, index=False) logging.info('Created BED file: %s', output_bed) -def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Distribution', threshold=0.05, - threshold_del=None, threshold_dup=None, threshold_ins=None, threshold_inv=None, sample_coverage=None, large_cutoff=10000): +def score(model, input_vcf, output_vcf, buildver='hg38', threshold=0.05, + threshold_del=None, threshold_dup=None, threshold_ins=None, threshold_inv=None, + sample_coverage=None, large_cutoff=10000, annovar_path=None, annovar_db_path=None, + debug_plot=False): """Score the structural variants using the binary classification model. Args: @@ -122,9 +178,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist clf = joblib.load(model) logging.info('Model loaded successfully.') - # Extract the features from the BED file - annovar_path= '/mnt/isilon/wang_lab/perdomoj/softwares/annovar' - annovar_db_path= '/mnt/isilon/wang_lab/perdomoj/annovar/humandb' + # Extract the features from the BED file. anno_outdir= os.path.dirname(bed_file) anno_outdir= os.path.join(anno_outdir, 'annotations') if not os.path.exists(anno_outdir): @@ -179,7 +233,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.info('Running the model on the features...') y_pred = clf.predict_proba(feature_df) - output_dir = os.path.dirname(output_vcf) + output_dir = os.path.dirname(os.path.abspath(output_vcf)) or '.' # Save per-variant probabilities for downstream threshold tuning. predictions_tsv = os.path.join(output_dir, 'predictions.tsv') @@ -188,20 +242,24 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist predictions_df.to_csv(predictions_tsv, sep='\t', index=False) logging.info('Saved per-variant predictions to %s', predictions_tsv) - # Plot a histogram of the probabilities using seaborn since it looks better - fig, ax = plt.subplots() - sns.histplot(y_pred[:, 1], bins=20, ax=ax) - ax.set_xlabel('Confidence Score') - ax.set_ylabel('Count') - ax.set_title(title) + if debug_plot: + plt, sns = try_import_plotting_libs() + if plt is None or sns is None: + logging.warning('Debug plotting requested but matplotlib/seaborn are not installed. Skipping plot generation.') + else: + _, ax = plt.subplots() + sns.histplot(y_pred[:, 1], bins=20, ax=ax) + ax.set_xlabel('Confidence Score') + ax.set_ylabel('Count') + ax.set_title('Probability Distribution') + plot_path = os.path.join(output_dir, 'probabilities_seaborn.png') + plt.savefig(plot_path) + plt.close() + logging.info('Saved debug probability plot to %s', plot_path) - # Save the plot to the output directory - plt.savefig(os.path.join(output_dir, 'probabilities_seaborn.png')) - logging.info('Saved the plot of the probabilities to %s', os.path.join(output_dir, 'probabilities_seaborn.png')) - # Build a lookup dictionary: variant_id → (confidence_score, sv_type) for type-specific filtering variant_lookup = {} - for idx, row in predictions_df.iterrows(): + for _, row in predictions_df.iterrows(): variant_lookup[row['id']] = (row['confidence_score'], row['sv_type_str']) logging.info('Built variant lookup with %d entries for type-specific filtering', len(variant_lookup)) @@ -230,7 +288,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist total_records = 0 type_filter_stats = {} # Track filtering statistics by type - with open(input_vcf, 'r') as vcf_in, open(output_vcf, 'w') as vcf_out, open(removed_svs_vcf, 'w') as removed_out: + with open(input_vcf, 'r', encoding='utf-8') as vcf_in, open(output_vcf, 'w', encoding='utf-8') as vcf_out, open(removed_svs_vcf, 'w', encoding='utf-8') as removed_out: for line in vcf_in: if line.startswith('#'): # Write the header lines as they are @@ -261,7 +319,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist svtype = svtype_match if svtype_match else predicted_svtype else: # Variant not in predictions (shouldn't happen, but handle gracefully) - logging.warning(f'Variant {current_record} not found in predictions lookup, using default threshold') + logging.warning('Variant %d not found in predictions lookup, using default threshold', current_record) confidence_score = 0.0 svtype = svtype_match if svtype_match else 'UNKNOWN' @@ -304,10 +362,17 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist kept_pct = 100.0 * stats['kept'] / stats['total'] if stats['total'] > 0 else 0 logging.info(' %s: kept %d/%d (%.1f%%)', svtype, stats['kept'], stats['total'], kept_pct) + return { + 'total_records': total_records, + 'passed_records': pass_count, + 'filtered_records': filter_count, + 'output_vcf': output_vcf, + 'removed_vcf': removed_svs_vcf, + 'predictions_tsv': predictions_tsv, + } -if __name__ == '__main__': - import argparse +def main(argv=None): parser = argparse.ArgumentParser() parser.add_argument('--input', type=str, required=True, help='Path to the input VCF file.') @@ -317,8 +382,6 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist help='Path to the model file.') parser.add_argument('--buildver', type=str, default='hg38', help='Genome build version (default: hg38).') - parser.add_argument('--title', type=str, default='Probability Distribution', - help='Title for the probability distribution plot (default: Probability Distribution).') parser.add_argument('--threshold', type=float, default=0.05, help='Default threshold for filtering predictions (default: 0.05). Used for SV types without specific thresholds.') parser.add_argument('--threshold-del', type=float, default=None, @@ -333,19 +396,24 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist help='Mean read depth coverage for the sample (required, used to normalize read_depth).') parser.add_argument('--large-cutoff', type=int, default=10000, help='SV size cutoff in bp; variants larger than this are always kept (default: 50000).') - - args = parser.parse_args() + parser.add_argument('--annovar', type=str, default=None, + help='Path to ANNOVAR installation directory. Can also be set via ANNOVAR_PATH.') + parser.add_argument('--annovar-db', type=str, default=None, + help='Path to ANNOVAR database directory. Can also be set via ANNOVAR_DB_PATH.') + parser.add_argument('--verbose', action='store_true', + help='Show detailed progress logs.') + parser.add_argument('--debug', action='store_true', + help='Show debug logs including subprocess details.') + parser.add_argument('--debug-plot', action='store_true', + help='Generate probability distribution plot for debugging (optional, requires matplotlib and seaborn).') + + args = parser.parse_args(argv) input_vcf = args.input output_vcf = args.output model = args.model - # Set up logging - logging.basicConfig(level=logging.INFO, - format='%(asctime)s - %(levelname)s - %(message)s') - logging.info('Starting the scoring process...') - logging.info('Input VCF file: %s', input_vcf) - logging.info('Output VCF file: %s', output_vcf) - logging.info('Model file: %s', model) + configure_logging(verbose=args.verbose, debug=args.debug) + user_message('Starting prediction run') # Check if the input VCF file exists if not os.path.isfile(input_vcf): @@ -358,7 +426,7 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist sys.exit(1) # Check if the output directory exists, if not create it - output_dir = os.path.dirname(output_vcf) + output_dir = os.path.dirname(os.path.abspath(output_vcf)) or '.' if not os.path.exists(output_dir): os.makedirs(output_dir) logging.info('Created output directory: %s', output_dir) @@ -380,10 +448,33 @@ def score(model, input_vcf, output_vcf, buildver='hg38', title='Probability Dist logging.error('Unsupported genome build version: %s. Supported versions are hg19 and hg38.', buildver) sys.exit(1) + annovar_path, annovar_db_path = resolve_annovar_paths(args.annovar, args.annovar_db) + try: + validate_annovar_paths(annovar_path, annovar_db_path) + except ValueError as exc: + logging.error('%s', exc) + user_message('ANNOVAR setup is required before running prediction.') + user_message('Example: contextscore --input sample.vcf --output out.vcf --model model.pkl --sample_coverage 30 --annovar /path/to/annovar --annovar-db /path/to/humandb') + user_message('You can also set ANNOVAR_PATH and ANNOVAR_DB_PATH environment variables.') + sys.exit(2) + + user_message('Running feature extraction and scoring') + # Run the scoring function - score(model, input_vcf, output_vcf, buildver=buildver, title=args.title, - threshold=args.threshold, sample_coverage=args.sample_coverage, - threshold_del=args.threshold_del, threshold_dup=args.threshold_dup, - threshold_ins=args.threshold_ins, threshold_inv=args.threshold_inv, - large_cutoff=args.large_cutoff) + summary = score(model, input_vcf, output_vcf, buildver=buildver, + threshold=args.threshold, sample_coverage=args.sample_coverage, + threshold_del=args.threshold_del, threshold_dup=args.threshold_dup, + threshold_ins=args.threshold_ins, threshold_inv=args.threshold_inv, + large_cutoff=args.large_cutoff, annovar_path=annovar_path, + annovar_db_path=annovar_db_path, + debug_plot=args.debug_plot) + + user_message( + f"Completed. Kept {summary['passed_records']}/{summary['total_records']} variants; filtered {summary['filtered_records']}." + ) + user_message(f"Output VCF: {summary['output_vcf']}") logging.info('Scoring process completed.') + + +if __name__ == '__main__': + main() diff --git a/contextscore/train_full_model.py b/contextscore/train_full_model.py index 05b8bac..5a2ff3c 100644 --- a/contextscore/train_full_model.py +++ b/contextscore/train_full_model.py @@ -64,7 +64,10 @@ import matplotlib.pyplot as plt -from extract_features import extract_features +try: + from .extract_features import extract_features +except ImportError: + from extract_features import extract_features # Set up the logger. logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') diff --git a/environment.yml b/environment.yml new file mode 100644 index 0000000..abfdae3 --- /dev/null +++ b/environment.yml @@ -0,0 +1,15 @@ +name: contextscore-build +channels: + - conda-forge + - bioconda + - defaults +dependencies: + - python=3.10 + - numpy + - pandas + - scikit-learn + - joblib + - bedtools + - setuptools + - pip + - conda-build diff --git a/setup.py b/setup.py index ac27eef..d40f13e 100644 --- a/setup.py +++ b/setup.py @@ -8,14 +8,17 @@ "numpy", "pandas", "scikit-learn", - "matplotlib", - "seaborn", + "joblib", ], + extras_require={ + "plot": [ + "matplotlib", + "seaborn", + ] + }, entry_points={ "console_scripts": [ - "annotate-svs=scripts.annotate_svs:main", - "train-model=scripts.train_model:main", - "predict=scripts.predict:main", + "contextscore=contextscore.predict:main", ] }, ) From e141707d0364a256ade2cfc4729231ec5a2f1154 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 11 Apr 2026 21:32:53 -0400 Subject: [PATCH 57/93] work on unit tests --- environment.yml | 1 + pytest.ini | 3 ++ tests/fixtures/example.vcf | 0 tests/test_extract_features_helpers.py | 16 ++++++ tests/test_predict_helpers.py | 71 ++++++++++++++++++++++++++ 5 files changed, 91 insertions(+) create mode 100644 pytest.ini create mode 100644 tests/fixtures/example.vcf create mode 100644 tests/test_extract_features_helpers.py create mode 100644 tests/test_predict_helpers.py diff --git a/environment.yml b/environment.yml index abfdae3..712afbc 100644 --- a/environment.yml +++ b/environment.yml @@ -13,3 +13,4 @@ dependencies: - setuptools - pip - conda-build + - pytest diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 0000000..27eec68 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +testpaths = tests +python_files = test_*.py diff --git a/tests/fixtures/example.vcf b/tests/fixtures/example.vcf new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_extract_features_helpers.py b/tests/test_extract_features_helpers.py new file mode 100644 index 0000000..4b1c629 --- /dev/null +++ b/tests/test_extract_features_helpers.py @@ -0,0 +1,16 @@ +import numpy as np + +from contextscore.extract_features import normalize_chrom_label + + +def test_normalize_chrom_label_handles_none_like_values(): + assert normalize_chrom_label(None) is None + assert normalize_chrom_label(np.nan) is None + assert normalize_chrom_label(" ") is None + + +def test_normalize_chrom_label_normalizes_prefix_and_case(): + assert normalize_chrom_label("chr1") == "1" + assert normalize_chrom_label("1") == "1" + assert normalize_chrom_label("chrx") == "X" + assert normalize_chrom_label("x") == "X" diff --git a/tests/test_predict_helpers.py b/tests/test_predict_helpers.py new file mode 100644 index 0000000..9c69a7f --- /dev/null +++ b/tests/test_predict_helpers.py @@ -0,0 +1,71 @@ +import importlib +from pathlib import Path + +import pytest + +from contextscore.predict import ( + resolve_annovar_paths, + try_import_plotting_libs, + validate_annovar_paths, +) + + +def test_example_vcf_fixture_exists(): + fixture_path = Path(__file__).parent / "fixtures" / "example.vcf" + assert fixture_path.exists() + + +def test_resolve_annovar_paths_prefers_cli_over_env(monkeypatch): + monkeypatch.setenv("ANNOVAR_PATH", "/env/annovar") + monkeypatch.setenv("ANNOVAR_DB_PATH", "/env/db") + + annovar_path, annovar_db = resolve_annovar_paths("/cli/annovar", "/cli/db") + + assert annovar_path == "/cli/annovar" + assert annovar_db == "/cli/db" + + +def test_resolve_annovar_paths_uses_env_when_cli_missing(monkeypatch): + monkeypatch.setenv("ANNOVAR_PATH", "/env/annovar") + monkeypatch.setenv("ANNOVAR_DB_PATH", "/env/db") + + annovar_path, annovar_db = resolve_annovar_paths(None, None) + + assert annovar_path == "/env/annovar" + assert annovar_db == "/env/db" + + +def test_validate_annovar_paths_requires_path_and_db(): + with pytest.raises(ValueError, match="ANNOVAR path is required"): + validate_annovar_paths(None, "/db") + + with pytest.raises(ValueError, match="ANNOVAR database path is required"): + validate_annovar_paths("/annovar", None) + + +def test_validate_annovar_paths_accepts_valid_layout(tmp_path): + annovar_dir = tmp_path / "annovar" + db_dir = tmp_path / "humandb" + annovar_dir.mkdir() + db_dir.mkdir() + + (annovar_dir / "annotate_variation.pl").write_text("#!/usr/bin/env perl\n", encoding="utf-8") + (annovar_dir / "table_annovar.pl").write_text("#!/usr/bin/env perl\n", encoding="utf-8") + + validate_annovar_paths(str(annovar_dir), str(db_dir)) + + +def test_try_import_plotting_libs_graceful_when_missing(monkeypatch): + real_import_module = importlib.import_module + + def fake_import_module(name): + if name in {"matplotlib.pyplot", "seaborn"}: + raise ImportError("not installed") + return real_import_module(name) + + monkeypatch.setattr(importlib, "import_module", fake_import_module) + + plt, sns = try_import_plotting_libs() + + assert plt is None + assert sns is None From 9d658236a22875a7619dd44504547775fce24327 Mon Sep 17 00:00:00 2001 From: jonperdomo Date: Sat, 11 Apr 2026 21:40:59 -0400 Subject: [PATCH 58/93] add test data --- tests/fixtures/output.vcf.gz | Bin 0 -> 12801849 bytes tests/fixtures/output.vcf.gz.tbi | Bin 0 -> 191253 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/fixtures/output.vcf.gz create mode 100644 tests/fixtures/output.vcf.gz.tbi diff --git a/tests/fixtures/output.vcf.gz b/tests/fixtures/output.vcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..02bf563c3692aeb38cbee95a850525a68d050e6f GIT binary patch literal 12801849 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ⅆ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 iq2|q5tP`3x1tlV7SG_-d~Pn(r|qgc47 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 %>K4nST4&E0_i0=fibP@w8*}`8|qYa`jZ} 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

4%aHgPdn{?#YA70*506sfO+^q|ZhhMEFzAUGb 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

7V;goM%<;D8+A`F}e4)5&?`TX9?lZ39 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

YgLAVJ))U+Eg5%SzR{*gyEq_Tz6+wDzer3R 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

`a%Vh9;_weP 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�AOQaXmZxY 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

V&{Io_=0m;yL~C~g5&3L-j1-Z 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�Z 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 z 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 K3-AZ~>hBE$#!UK|!vhRi_D464+W1p~ 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 eH)tymT{j`finAqHnIMo5@{U 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�zkor?Dmdq75xs9N_U#3J}*%q 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�ih1tEr2h4}9*W0AxiYGV!jX2mL^hjzw?w__O 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 z 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