From 414bb2a36fc1fd671f7d4e672667c2ed24b71201 Mon Sep 17 00:00:00 2001 From: Mostafa Kalhor Date: Tue, 15 Oct 2024 15:35:10 +0000 Subject: [PATCH 1/5] paper results comes from this version --- spectrum_fundamentals/metrics/percolator.py | 24 ++++++++++----------- spectrum_fundamentals/metrics/similarity.py | 8 ++++--- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/spectrum_fundamentals/metrics/percolator.py b/spectrum_fundamentals/metrics/percolator.py index 1d4455d..96f88f1 100644 --- a/spectrum_fundamentals/metrics/percolator.py +++ b/spectrum_fundamentals/metrics/percolator.py @@ -64,9 +64,9 @@ def __init__( self.all_features_flag = all_features_flag self.regression_method = regression_method self.fdr_cutoff = fdr_cutoff - self.xl = "CROSSLINKER_TYPE" in self.metadata.columns - - super().__init__(pred_intensities, true_intensities, mz) + + super().__init__(pred_intensities, true_intensities, mz, xl="CROSSLINKER_TYPE" in self.metadata.columns) + @staticmethod def sample_balanced_over_bins(retention_time_df: pd.DataFrame, sample_size: int = 5000) -> pd.Index: @@ -278,12 +278,10 @@ def add_percolator_metadata_columns(self): """Add metadata columns needed by percolator, e.g. to identify a PSM.""" if self.xl: spec_id_cols = ["RAW_FILE", "SCAN_NUMBER", "MODIFIED_SEQUENCE_A", "MODIFIED_SEQUENCE_B", "PRECURSOR_CHARGE"] - self.metrics_val["Peptide"] = ( - self.metadata["MODIFIED_SEQUENCE_A"] + "_" + self.metadata["MODIFIED_SEQUENCE_B"] - ).apply(lambda x: "_." + x + "._") - self.metrics_val["Proteins"] = ( - self.metadata["MODIFIED_SEQUENCE_A"] + "_" + self.metadata["MODIFIED_SEQUENCE_B"] - ) + modified_sequence_a = self.metadata["MODIFIED_SEQUENCE_A"].astype(str) + modified_sequence_b = self.metadata["MODIFIED_SEQUENCE_B"].astype(str) + self.metrics_val["Peptide"] = (modified_sequence_a + "_" + modified_sequence_b).apply(lambda x: "_." + x + "._") + self.metrics_val["Proteins"] = (modified_sequence_a + "_" + modified_sequence_b) self.metrics_val["Label"] = self.target_decoy_labels else: spec_id_cols = ["RAW_FILE", "SCAN_NUMBER", "MODIFIED_SEQUENCE", "PRECURSOR_CHARGE"] @@ -466,10 +464,10 @@ def calc(self): # self.metrics_val['spectral_angle_delta_score'] = Percolator.get_delta_score(self.metrics_val[['ScanNr', # 'spectral_angle']], 'spectral_angle') pass - else: - self.metrics_val["andromeda_delta_score"] = Percolator.get_delta_score( - self.metrics_val[["ScanNr", "andromeda"]], "andromeda" - ) + #else: + # self.metrics_val["andromeda_delta_score"] = Percolator.get_delta_score( + # self.metrics_val[["ScanNr", "andromeda"]], "andromeda" + # ) self._reorder_columns_for_percolator() diff --git a/spectrum_fundamentals/metrics/similarity.py b/spectrum_fundamentals/metrics/similarity.py index 930df61..4f8b4cb 100644 --- a/spectrum_fundamentals/metrics/similarity.py +++ b/spectrum_fundamentals/metrics/similarity.py @@ -481,9 +481,7 @@ def _calc_additional_metrics( true_intensities, pred_intensities, "max" ) self.metrics_val[f"mse{key_suffix}"] = SimilarityMetrics.abs_diff(true_intensities, pred_intensities, "mse") - self.metrics_val[f"modified_cosine{key_suffix}"] = SimilarityMetrics.modified_cosine( - true_intensities, pred_intensities, self.mz, self.mz - ) + col_names_spectral_angle = [ f"spectral_angle_{amount}_charge{key_suffix}" for amount in ["single", "double", "triple"] @@ -539,3 +537,7 @@ def _calc_additional_metrics( self.metrics_val[col_name_spearman_corr] = SimilarityMetrics.correlation( true_intensities, pred_intensities, i + 1, "spearman" ) + + self.metrics_val[f"modified_cosine{key_suffix}"] = SimilarityMetrics.modified_cosine( + true_intensities, pred_intensities, self.mz, self.mz + ) From f6107ed2da3aef778d126e64fb43377d2e3146d5 Mon Sep 17 00:00:00 2001 From: Mostafa Kalhor Date: Sat, 26 Oct 2024 13:57:49 +0000 Subject: [PATCH 2/5] fix super call and added POSITIONS_XL constant --- spectrum_fundamentals/constants.py | 2 +- spectrum_fundamentals/metrics/percolator.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/spectrum_fundamentals/constants.py b/spectrum_fundamentals/constants.py index 68f1942..f3781cb 100644 --- a/spectrum_fundamentals/constants.py +++ b/spectrum_fundamentals/constants.py @@ -510,7 +510,7 @@ class RescoreType(Enum): CHARGES = [1, 2, 3] # limited to uint8 (0-255) when array is created POSITIONS = [x for x in range(1, 30)] # fragment numbers 1-29 -- limited to uint8 (0-255) when array is created - +POSITIONS_XL = [x for x in range(1, 59)] ANNOTATION_FRAGMENT_TYPE = [] ANNOTATION_FRAGMENT_CHARGE = [] ANNOTATION_FRAGMENT_NUMBER = [] diff --git a/spectrum_fundamentals/metrics/percolator.py b/spectrum_fundamentals/metrics/percolator.py index df62c50..84f000e 100644 --- a/spectrum_fundamentals/metrics/percolator.py +++ b/spectrum_fundamentals/metrics/percolator.py @@ -62,6 +62,8 @@ def __init__( drop_miss_cleavage_flag: Optional[bool] = False, ): """Initialize a Percolator obj.""" + super().__init__(pred_intensities, true_intensities, mz, "CROSSLINKER_TYPE" in metadata.columns) + self.metadata = metadata self.input_type = input_type self.all_features_flag = all_features_flag @@ -70,7 +72,7 @@ def __init__( self.fdr_cutoff = fdr_cutoff self.neutral_loss_flag = neutral_loss_flag self.drop_miss_cleavage_flag = drop_miss_cleavage_flag - self.xl = "CROSSLINKER_TYPE" in self.metadata.columns + self.base_columns = [ "raw_file", "scan_number", @@ -97,8 +99,6 @@ def __init__( "proteins", ] - super().__init__(pred_intensities, true_intensities, mz) - @staticmethod def sample_balanced_over_bins(retention_time_df: pd.DataFrame, sample_size: int = 5000) -> pd.Index: """ From 4b8b4ff32749776916650285bec792ae622e3acc Mon Sep 17 00:00:00 2001 From: Mostafa Kalhor Date: Sat, 26 Oct 2024 14:01:19 +0000 Subject: [PATCH 3/5] Bump version from 0.7.7 to 0.7.8 --- .cookietemple.yml | 2 +- .github/release-drafter.yml | 4 ++-- cookietemple.cfg | 2 +- docs/conf.py | 4 ++-- pyproject.toml | 2 +- spectrum_fundamentals/__init__.py | 2 +- spectrum_fundamentals/__main__.py | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.cookietemple.yml b/.cookietemple.yml index 7459a05..a386290 100644 --- a/.cookietemple.yml +++ b/.cookietemple.yml @@ -15,5 +15,5 @@ full_name: Victor Giurcoiu email: victor.giurcoiu@tum.de project_name: spectrum_fundamentals project_short_description: Fundamentals public repo -version: 0.7.7 +version: 0.7.8 license: MIT diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 806aea3..902c9de 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -1,5 +1,5 @@ -name-template: "0.7.7 " # <> -tag-template: 0.7.7 # <> +name-template: "0.7.8 " # <> +tag-template: 0.7.8 # <> exclude-labels: - "skip-changelog" diff --git a/cookietemple.cfg b/cookietemple.cfg index 4fdf161..e174cfc 100644 --- a/cookietemple.cfg +++ b/cookietemple.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.7.7 +current_version = 0.7.8 [bumpversion_files_whitelisted] init_file = spectrum_fundamentals/__init__.py diff --git a/docs/conf.py b/docs/conf.py index 2b90c61..0d12982 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -52,9 +52,9 @@ # the built documents. # # The short X.Y version. -version = "0.7.7" +version = "0.7.8" # The full version, including alpha/beta/rc tags. -release = "0.7.7" +release = "0.7.8" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/pyproject.toml b/pyproject.toml index 6c8ef0a..9bebb9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "spectrum_fundamentals" -version = "0.7.7" # <> +version = "0.7.8" # <> description = "Fundamental functions, annotation pipeline and constants for oktoberfest" authors = ["Wilhelmlab at Technical University of Munich"] license = "MIT" diff --git a/spectrum_fundamentals/__init__.py b/spectrum_fundamentals/__init__.py index 1b67d97..741dd90 100644 --- a/spectrum_fundamentals/__init__.py +++ b/spectrum_fundamentals/__init__.py @@ -5,7 +5,7 @@ __author__ = """The Oktoberfest development team (Wilhelmlab at Technical University of Munich)""" __copyright__ = f"Copyright {datetime.now():%Y}, Wilhelmlab at Technical University of Munich" __license__ = "MIT" -__version__ = "0.7.7" +__version__ = "0.7.8" import logging import logging.handlers diff --git a/spectrum_fundamentals/__main__.py b/spectrum_fundamentals/__main__.py index 31fea9c..e59a495 100644 --- a/spectrum_fundamentals/__main__.py +++ b/spectrum_fundamentals/__main__.py @@ -5,7 +5,7 @@ @click.command() -@click.version_option(version="0.7.7", message=click.style("spectrum_fundamentals Version: 0.7.7")) +@click.version_option(version="0.7.8", message=click.style("spectrum_fundamentals Version: 0.7.8")) def main() -> None: """spectrum_fundamentals.""" From ee2aa82e116cdac060d968ecf65da98a1080a1e7 Mon Sep 17 00:00:00 2001 From: Mostafa Kalhor Date: Sat, 26 Oct 2024 14:08:01 +0000 Subject: [PATCH 4/5] fixed pre-commit hooks --- spectrum_fundamentals/metrics/percolator.py | 16 +++++++++------- spectrum_fundamentals/metrics/similarity.py | 5 ++--- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/spectrum_fundamentals/metrics/percolator.py b/spectrum_fundamentals/metrics/percolator.py index 84f000e..76fd7d1 100644 --- a/spectrum_fundamentals/metrics/percolator.py +++ b/spectrum_fundamentals/metrics/percolator.py @@ -72,7 +72,7 @@ def __init__( self.fdr_cutoff = fdr_cutoff self.neutral_loss_flag = neutral_loss_flag self.drop_miss_cleavage_flag = drop_miss_cleavage_flag - + self.base_columns = [ "raw_file", "scan_number", @@ -329,8 +329,10 @@ def add_percolator_metadata_columns(self): spec_id_cols = ["RAW_FILE", "SCAN_NUMBER", "MODIFIED_SEQUENCE_A", "MODIFIED_SEQUENCE_B", "PRECURSOR_CHARGE"] modified_sequence_a = self.metadata["MODIFIED_SEQUENCE_A"].astype(str) modified_sequence_b = self.metadata["MODIFIED_SEQUENCE_B"].astype(str) - self.metrics_val["Peptide"] = (modified_sequence_a + "_" + modified_sequence_b).apply(lambda x: "_." + x + "._") - self.metrics_val["Proteins"] = (modified_sequence_a + "_" + modified_sequence_b) + self.metrics_val["Peptide"] = (modified_sequence_a + "_" + modified_sequence_b).apply( + lambda x: "_." + x + "._" + ) + self.metrics_val["Proteins"] = modified_sequence_a + "_" + modified_sequence_b self.metrics_val["Label"] = self.target_decoy_labels else: spec_id_cols = ["RAW_FILE", "SCAN_NUMBER", "MODIFIED_SEQUENCE", "PRECURSOR_CHARGE"] @@ -523,10 +525,10 @@ def calc(self): # noqa: C901 # self.metrics_val['spectral_angle_delta_score'] = Percolator.get_delta_score(self.metrics_val[['ScanNr', # 'spectral_angle']], 'spectral_angle') pass - #else: - # self.metrics_val["andromeda_delta_score"] = Percolator.get_delta_score( - # self.metrics_val[["ScanNr", "andromeda"]], "andromeda" - # ) + # else: + # self.metrics_val["andromeda_delta_score"] = Percolator.get_delta_score( + # self.metrics_val[["ScanNr", "andromeda"]], "andromeda" + # ) self._reorder_columns_for_percolator() diff --git a/spectrum_fundamentals/metrics/similarity.py b/spectrum_fundamentals/metrics/similarity.py index ab45e5a..e637ccc 100644 --- a/spectrum_fundamentals/metrics/similarity.py +++ b/spectrum_fundamentals/metrics/similarity.py @@ -481,7 +481,6 @@ def _calc_additional_metrics( true_intensities, pred_intensities, "max" ) self.metrics_val[f"mse{key_suffix}"] = SimilarityMetrics.abs_diff(true_intensities, pred_intensities, "mse") - col_names_spectral_angle = [ f"spectral_angle_{amount}_charge{key_suffix}" for amount in ["single", "double", "triple"] @@ -539,5 +538,5 @@ def _calc_additional_metrics( ) self.metrics_val[f"modified_cosine{key_suffix}"] = SimilarityMetrics.modified_cosine( - true_intensities, pred_intensities, self.mz, self.mz - ) + true_intensities, pred_intensities, self.mz, self.mz + ) From 20571847cc2bcd33596d34f8a29e92751fae93d2 Mon Sep 17 00:00:00 2001 From: Mostafa Kalhor Date: Sat, 26 Oct 2024 14:38:12 +0000 Subject: [PATCH 5/5] fix get_delta_score --- spectrum_fundamentals/metrics/percolator.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spectrum_fundamentals/metrics/percolator.py b/spectrum_fundamentals/metrics/percolator.py index 76fd7d1..e10909d 100644 --- a/spectrum_fundamentals/metrics/percolator.py +++ b/spectrum_fundamentals/metrics/percolator.py @@ -525,10 +525,10 @@ def calc(self): # noqa: C901 # self.metrics_val['spectral_angle_delta_score'] = Percolator.get_delta_score(self.metrics_val[['ScanNr', # 'spectral_angle']], 'spectral_angle') pass - # else: - # self.metrics_val["andromeda_delta_score"] = Percolator.get_delta_score( - # self.metrics_val[["ScanNr", "andromeda"]], "andromeda" - # ) + else: + self.metrics_val["andromeda_delta_score"] = Percolator.get_delta_score( + self.metrics_val[["ScanNr", "andromeda"]], "andromeda" + ) self._reorder_columns_for_percolator()