Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stability Update #2455

Merged
merged 28 commits into from
Feb 5, 2025
Merged

Conversation

Alexander-Sol
Copy link
Contributor

@Alexander-Sol Alexander-Sol commented Jan 7, 2025

This PR is intended to address longstanding instability in MetaMorpheus results. Specifically, Calibration can produce different outputs with identical inputs.

Unfortunately, even with this PR, variable results from Calibration were observed

Changes

  • Fixed locks in DataPointAcquisitionEngine

    • I believe this is the main issue. Previously, improper locking led to race conditions when adding to the lists of LabeledDataPoint
  • Changed MsDataFileManager to use ConcurrentDictionary to eliminate warnings about race conditions caused by asynchronous loading

    • (To be clear, I don't think race conditions could have arisen with how FileManagers are currently used, but better safe than sorry)

Copy link

codecov bot commented Jan 7, 2025

Codecov Report

Attention: Patch coverage is 93.75000% with 1 line in your changes missing coverage. Please review.

Project coverage is 93.93%. Comparing base (15f8a1c) to head (bfec019).
Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
MetaMorpheus/TaskLayer/MetaMorpheusTask.cs 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff           @@
##           master    #2455   +/-   ##
=======================================
  Coverage   93.93%   93.93%           
=======================================
  Files         148      148           
  Lines       22457    22455    -2     
  Branches     3083     3082    -1     
=======================================
- Hits        21094    21093    -1     
  Misses        911      911           
+ Partials      452      451    -1     
Files with missing lines Coverage Δ
...ineLayer/Calibration/DataPointAcquisitionEngine.cs 94.84% <100.00%> (ø)
...heus/EngineLayer/FdrAnalysis/SpectralMatchGroup.cs 86.66% <100.00%> (+0.95%) ⬆️
MetaMorpheus/TaskLayer/MyFileManager.cs 96.55% <100.00%> (+0.89%) ⬆️
MetaMorpheus/TaskLayer/SearchTask/SearchTask.cs 95.92% <100.00%> (+<0.01%) ⬆️
MetaMorpheus/TaskLayer/MetaMorpheusTask.cs 89.02% <0.00%> (ø)

trishorts
trishorts previously approved these changes Jan 17, 2025
nbollis
nbollis previously approved these changes Jan 23, 2025
pcruzparri
pcruzparri previously approved these changes Jan 27, 2025
trishorts
trishorts previously approved these changes Jan 30, 2025
Copy link
Member

@nbollis nbollis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do we need a new resolve and changes to crosslink?

MetaMorpheus/TaskLayer/CalibrationTask/CalibrationTask.cs Outdated Show resolved Hide resolved
@Alexander-Sol
Copy link
Contributor Author

Why do we need a new resolve and changes to crosslink?

CrosslinkSpectralMatch keeps the legacy version of ResolveAllAmbiguities because I don't understand how XL search works and the new method broke things

@nbollis
Copy link
Member

nbollis commented Feb 3, 2025

Why do we need a new resolve and changes to crosslink?

CrosslinkSpectralMatch keeps the legacy version of ResolveAllAmbiguities because I don't understand how XL search works and the new method broke things

Let me rephrase. Why do we need a new list based resolve method? (Which in turn forces you to do that implementation of cross-link)

@Alexander-Sol
Copy link
Contributor Author

Alexander-Sol commented Feb 4, 2025

Why do we need a new resolve and changes to crosslink?

CrosslinkSpectralMatch keeps the legacy version of ResolveAllAmbiguities because I don't understand how XL search works and the new method broke things

Let me rephrase. Why do we need a new list based resolve method? (Which in turn forces you to do that implementation of cross-link)

Calling ResolveAllAmbiguities previously set the MatchedFragmentIons property by getting the first element of the BioPolymersWithSetModsToMatchingFragments dictionary. Dictionaries aren't intrinsically ordered. Creating a resolve method guarantees consistent behavior when setting MatchedFragmentIons

@trishorts trishorts merged commit 8210576 into smith-chem-wisc:master Feb 5, 2025
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants