ms2rescore 3.1.0.dev1__tar.gz → 3.1.0.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/PKG-INFO +1 -1
  2. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/__init__.py +1 -1
  3. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/core.py +2 -2
  4. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/charts.py +2 -2
  5. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/generate.py +1 -1
  6. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/rescoring_engines/mokapot.py +2 -1
  7. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/rescoring_engines/percolator.py +17 -5
  8. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/LICENSE +0 -0
  9. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/README.md +0 -0
  10. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/__main__.py +0 -0
  11. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/config_parser.py +0 -0
  12. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/exceptions.py +0 -0
  13. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/__init__.py +0 -0
  14. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/base.py +0 -0
  15. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/basic.py +0 -0
  16. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/deeplc.py +0 -0
  17. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/im2deep.py +0 -0
  18. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/ionmob.py +0 -0
  19. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/maxquant.py +0 -0
  20. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/feature_generators/ms2pip.py +0 -0
  21. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/gui/__init__.py +0 -0
  22. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/gui/__main__.py +0 -0
  23. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/gui/app.py +0 -0
  24. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/gui/function2ctk.py +0 -0
  25. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/gui/widgets.py +0 -0
  26. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/__init__.py +0 -0
  27. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/config_default.json +0 -0
  28. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/config_default_tims.json +0 -0
  29. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/config_schema.json +0 -0
  30. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/img/__init__.py +0 -0
  31. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/img/config_icon.png +0 -0
  32. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/img/github-mark-white.png +0 -0
  33. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/img/github-mark.png +0 -0
  34. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/img/ms2rescore_logo.png +0 -0
  35. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/img/program_icon.ico +0 -0
  36. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/package_data/ms2rescore-gui-theme.json +0 -0
  37. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/parse_psms.py +0 -0
  38. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/parse_spectra.py +0 -0
  39. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/__init__.py +0 -0
  40. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/__main__.py +0 -0
  41. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/__init__.py +0 -0
  42. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/about.html +0 -0
  43. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/base.html +0 -0
  44. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/config.html +0 -0
  45. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/features.html +0 -0
  46. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/log.html +0 -0
  47. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/metadata.html +0 -0
  48. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/overview.html +0 -0
  49. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/stats-card.html +0 -0
  50. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/style.html +0 -0
  51. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/target-decoy.html +0 -0
  52. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/templates/texts.toml +0 -0
  53. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/report/utils.py +0 -0
  54. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/rescoring_engines/__init__.py +0 -0
  55. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/ms2rescore/utils.py +0 -0
  56. {ms2rescore-3.1.0.dev1 → ms2rescore-3.1.0.dev2}/pyproject.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ms2rescore
3
- Version: 3.1.0.dev1
3
+ Version: 3.1.0.dev2
4
4
  Summary: MS²Rescore: Sensitive PSM rescoring with predicted MS² peak intensities and retention times.
5
5
  Keywords: MS2Rescore,MS2PIP,DeepLC,Percolator,proteomics,mass spectrometry,peptide identification,rescoring,machine learning
6
6
  Author: Ana Sílvia C. Silva, Robbin Bouwmeester, Louise Buur
@@ -1,6 +1,6 @@
1
1
  """MS²Rescore: Sensitive PSM rescoring with predicted MS² peak intensities and RTs."""
2
2
 
3
- __version__ = "3.1.0-dev1"
3
+ __version__ = "3.1.0-dev2"
4
4
 
5
5
  from warnings import filterwarnings
6
6
 
@@ -175,8 +175,8 @@ def _fill_missing_precursor_info(psm_list, config):
175
175
  get_missing_values(psm_list, config, rt_required=rt_required, im_required=im_required)
176
176
 
177
177
  # Check if values are now present
178
- for value_name in ["retention_time", "ion_mobility"]:
179
- if (
178
+ for value_name, required in [("retention_time", rt_required), ("ion_mobility", im_required)]:
179
+ if required and (
180
180
  0.0 in psm_list[value_name]
181
181
  or None in psm_list[value_name]
182
182
  or np.isnan(psm_list[value_name]).any()
@@ -373,7 +373,7 @@ def identification_overlap(
373
373
  return figure
374
374
 
375
375
  levels = before.levels # ["psms", "peptides", "proteins"] if all available
376
- indexers = ["index", "index", "mokapot protein group"]
376
+ indexers = ["index", "peptide", "mokapot protein group"]
377
377
 
378
378
  overlap_data = defaultdict(dict)
379
379
  for level, indexer in zip(levels, indexers):
@@ -386,7 +386,7 @@ def identification_overlap(
386
386
  set_after = set(df_after[df_after["mokapot q-value"] <= 0.01][indexer])
387
387
 
388
388
  overlap_data["removed"][level] = -len(set_before - set_after)
389
- overlap_data["retained"][level] = len(set_before | set_after)
389
+ overlap_data["retained"][level] = len(set_after.intersection(set_before))
390
390
  overlap_data["gained"][level] = len(set_after - set_before)
391
391
 
392
392
  colors = ["#953331", "#316395", "#319545"]
@@ -185,7 +185,7 @@ def _get_stats_context(confidence_before, confidence_after):
185
185
  "item": level_name,
186
186
  "card_color": card_color,
187
187
  "number": after,
188
- "diff": f"{after - before:+}",
188
+ "diff": f"({after - before:+})",
189
189
  "percentage": f"{increase:.1f}%",
190
190
  "is_increase": increase > 0,
191
191
  "bar_percentage": before / after * 100 if increase > 0 else after / before * 100,
@@ -31,6 +31,7 @@ from mokapot.dataset import LinearPsmDataset
31
31
  from pyteomics.mass import nist_mass
32
32
 
33
33
  logger = logging.getLogger(__name__)
34
+ logging.getLogger("numba").setLevel(logging.WARNING)
34
35
 
35
36
 
36
37
  def rescore(
@@ -89,7 +90,7 @@ def rescore(
89
90
 
90
91
  # Rescore
91
92
  logger.debug(f"Mokapot brew options: `{kwargs}`")
92
- confidence_results, models = brew(lin_psm_data, **kwargs)
93
+ confidence_results, models = brew(lin_psm_data, rng=8, **kwargs)
93
94
 
94
95
  # Reshape confidence estimates to match PSMList
95
96
  mokapot_values_targets = (
@@ -20,8 +20,8 @@ If you use Percolator through MS²Rescore, please cite:
20
20
  import logging
21
21
  import subprocess
22
22
  from typing import Any, Dict, Optional
23
+ from copy import deepcopy
23
24
 
24
- import numpy as np
25
25
  import psm_utils
26
26
 
27
27
  from ms2rescore.exceptions import MS2RescoreError
@@ -103,8 +103,15 @@ def rescore(
103
103
  # Need to be able to link back to original PSMs, so reindex spectrum IDs, but copy PSM list
104
104
  # to avoid modifying original...
105
105
  # TODO: Better approach for this?
106
- psm_list_reindexed = psm_list.copy()
107
- psm_list_reindexed["spectrum_id"] = np.arange(len(psm_list_reindexed))
106
+
107
+ psm_list_reindexed = deepcopy(psm_list)
108
+ psm_list_reindexed.set_ranks()
109
+ psm_list_reindexed["spectrum_id"] = [
110
+ f"{psm.get_usi(as_url=False)}_{psm.rank}" for psm in psm_list_reindexed
111
+ ]
112
+ spectrum_id_index = {
113
+ spectrum_id: index for index, spectrum_id in enumerate(psm_list_reindexed["spectrum_id"])
114
+ }
108
115
 
109
116
  _write_pin_file(psm_list_reindexed, pin_filepath)
110
117
 
@@ -134,10 +141,13 @@ def rescore(
134
141
  psm_list,
135
142
  percolator_kwargs["results-psms"],
136
143
  percolator_kwargs["decoy-results-psms"],
144
+ spectrum_id_index,
137
145
  )
138
146
 
139
147
 
140
- def _update_psm_scores(psm_list: psm_utils.PSMList, target_pout: str, decoy_pout: str):
148
+ def _update_psm_scores(
149
+ psm_list: psm_utils.PSMList, target_pout: str, decoy_pout: str, spectrum_id_index: list
150
+ ):
141
151
  """
142
152
  Update PSM scores with Percolator results.
143
153
 
@@ -150,7 +160,9 @@ def _update_psm_scores(psm_list: psm_utils.PSMList, target_pout: str, decoy_pout
150
160
  psm_list_percolator = psm_utils.PSMList(psm_list=target_psms.psm_list + decoy_psms.psm_list)
151
161
 
152
162
  # Sort by reindexed spectrum_id so order matches original PSM list
153
- psm_list_percolator[np.argsort(psm_list_percolator["spectrum_id"])]
163
+ psm_list_percolator = sorted(
164
+ psm_list_percolator, key=lambda psm: spectrum_id_index[psm["spectrum_id"]]
165
+ )
154
166
 
155
167
  if not len(psm_list) == len(psm_list_percolator):
156
168
  raise MS2RescoreError(
File without changes