Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
abbbaa7
SMPlot: Change protein: to transcript: in description
nbollis May 7, 2026
3d9a505
SMPlot: Abbreviated Ion Labels
nbollis May 7, 2026
61032ee
Select and deselect all descriptors
nbollis May 7, 2026
5e93055
No replotting if we are only exporting a single plot
nbollis May 7, 2026
ff077b6
Load Rna Mods
nbollis May 7, 2026
a450353
Adjust Legend Spacing
nbollis May 7, 2026
e6c9633
try catch plot generation
nbollis May 7, 2026
2c423c4
osm mod output
nbollis May 7, 2026
44d0ff6
Test Coverage
nbollis May 7, 2026
c3ef46f
fix test
nbollis May 11, 2026
75bb1f6
MzLib 1.0.578 (#2646)
nbollis May 11, 2026
c5e8f56
Merge branch 'master' into metadraw_RNA_tweaks
nbollis May 11, 2026
a5a01fd
Merge branch 'master' into metadraw_RNA_tweaks
nbollis May 11, 2026
303b288
NonParallelizable
nbollis May 12, 2026
0a3076e
initial commit
nbollis May 13, 2026
dac375f
pre change
nbollis May 13, 2026
58f5634
draft
nbollis May 13, 2026
b025eb4
revise 1
nbollis May 14, 2026
8744b75
fix: mirror plot envelope intensities, bottom properties Y offset, se…
nbollis May 14, 2026
a48d8bf
feat: relative intensity normalization mode for mirror plot
nbollis May 14, 2026
0866a7e
fixes
nbollis May 14, 2026
94cb1d2
fixes
nbollis May 14, 2026
aca3ed2
bump mzLib to 1.0.579 (#2652)
trishorts May 18, 2026
bf6c5e7
test: mark RNA mirror plot generator explicit
nbollis May 18, 2026
5bb90d3
fix: preserve internal ion metadata in mirror plots
nbollis May 18, 2026
80c2c99
fix: normalize mirrored isotopic envelopes
nbollis May 18, 2026
fd80e79
fix: export the full mirror plot view
nbollis May 18, 2026
bcbb4ca
fix: refresh mirror sequences with settings
nbollis May 18, 2026
e06a8d4
Add PrecursorDeconvolutionScore feature to PEP (bottom-up first) (#2661)
trishorts May 20, 2026
bc06484
Merge branch 'master' into mirror
nbollis May 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion MetaMorpheus/CMD/CMD.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<PackageReference Include="Microsoft.ML.CpuMath" Version="3.0.1" />
<PackageReference Include="Microsoft.ML.FastTree" Version="3.0.1" />
<PackageReference Include="Microsoft.NETCore.App" Version="2.2.8" />
<PackageReference Include="mzLib" Version="1.0.578" />
<PackageReference Include="mzLib" Version="1.0.579" />
<PackageReference Include="Nett" Version="0.15.0" />
<PackageReference Include="SQLite.Interop.dll" Version="1.0.103" />
<PackageReference Include="System.Data.SQLite" Version="1.0.118" />
Expand Down
2 changes: 1 addition & 1 deletion MetaMorpheus/EngineLayer/EngineLayer.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
<PackageReference Include="Microsoft.ML.CpuMath" Version="3.0.1" />
<PackageReference Include="Microsoft.ML.FastTree" Version="3.0.1" />
<PackageReference Include="Microsoft.NETCore.App" Version="2.2.8" />
<PackageReference Include="mzLib" Version="1.0.578" />
<PackageReference Include="mzLib" Version="1.0.579" />
<PackageReference Include="NETStandard.Library" Version="2.0.3" />
<PackageReference Include="Nett" Version="0.15.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
Expand Down
1 change: 1 addition & 0 deletions MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
FileSpecificParametersDictionary = fileSpecificParameters.ToDictionary(p => Path.GetFileName(p.fileName), p => p.fileSpecificParameters);
}

public PepAnalysisEngine(List<SpectralMatch> psms, string searchType, List<(string fileName, CommonParameters fileSpecificParameters)> fileSpecificParameters, string outputFolder, IRetentionTimePredictor? rtPredictor = null)

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / macos-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / ubuntu-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / windows-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / Search with Built

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / Create Installer Artifact

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / Create Installer Artifact

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / Validate Installer Contents

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 94 in MetaMorpheus/EngineLayer/FdrAnalysis/PEPAnalysisEngine.cs

View workflow job for this annotation

GitHub Actions / Test on Windows

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.
{
// This creates a new list of PSMs, but does not clone the Psms themselves.
// This allows the PSMs to be modified and the order to be preserved
Expand Down Expand Up @@ -640,6 +640,7 @@
MostAbundantPrecursorPeakIntensity = mostAbundantPrecursorPeakIntensity,
PrecursorFractionalIntensity = fractionalIntensity,
InternalIonCount = internalMatchingFragmentCount,
PrecursorDeconvolutionScore = (float)psm.PrecursorScanDeconvolutionScore,
};

return psm.PsmData_forPEPandPercolator;
Expand Down
9 changes: 7 additions & 2 deletions MetaMorpheus/EngineLayer/FdrAnalysis/PsmData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,10 @@ public class PsmData
"standard", new[]
{
"TotalMatchingFragmentCount", "Intensity", "PrecursorChargeDiffToMode", "DeltaScore",
"Notch", "ModsCount", "AbsoluteAverageFragmentMassErrorFromMedian", "MissedCleavagesCount",
"Notch", "ModsCount", "AbsoluteAverageFragmentMassErrorFromMedian", "MissedCleavagesCount",
"Ambiguity", "LongestFragmentIonSeries", "ComplementaryIonCount", "HydrophobicityZScore",
"IsVariantPeptide", "IsDeadEnd", "IsLoop", "SpectralAngle", "HasSpectralAngle",
"IsVariantPeptide", "IsDeadEnd", "IsLoop", "SpectralAngle", "HasSpectralAngle",
"PrecursorDeconvolutionScore",
}
},

Expand Down Expand Up @@ -85,6 +86,7 @@ public class PsmData
{ "MostAbundantPrecursorPeakIntensity", 1 },
{ "PrecursorFractionalIntensity", 1 },
{ "InternalIonCount", 1},
{ "PrecursorDeconvolutionScore", 1 },
}.ToImmutableDictionary();

public string ToString(string searchType)
Expand Down Expand Up @@ -189,5 +191,8 @@ public string ToString(string searchType)

[LoadColumn(28)]
public float InternalIonCount { get; set; }

[LoadColumn(29)]
public float PrecursorDeconvolutionScore { get; set; }
}
}
10 changes: 9 additions & 1 deletion MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@
public class Ms2ScanWithSpecificMass
{
public Ms2ScanWithSpecificMass(MsDataScan mzLibScan, double precursorMonoisotopicPeakMz, int precursorCharge, string fullFilePath, CommonParameters commonParam,
IsotopicEnvelope[] neutralExperimentalFragments = null, double? precursorIntensity = null, int? envelopePeakCount = null, double? precursorFractionalIntensity = null)
IsotopicEnvelope[] neutralExperimentalFragments = null, double? precursorIntensity = null, int? envelopePeakCount = null, double? precursorFractionalIntensity = null,
double precursorDeconvolutionScore = 0)
{
PrecursorMonoisotopicPeakMz = precursorMonoisotopicPeakMz;
PrecursorCharge = precursorCharge;
PrecursorMass = PrecursorMonoisotopicPeakMz.ToMass(precursorCharge);
PrecursorIntensity = precursorIntensity ?? 1;
PrecursorEnvelopePeakCount = envelopePeakCount ?? 1;
PrecursorFractionalIntensity = precursorFractionalIntensity ?? -1;
PrecursorDeconvolutionScore = precursorDeconvolutionScore;
FullFilePath = fullFilePath;
ChildScans = new List<Ms2ScanWithSpecificMass>();
NativeId = mzLibScan.NativeId;
Expand Down Expand Up @@ -45,6 +47,12 @@
public double PrecursorIntensity { get; }
public int PrecursorEnvelopePeakCount { get; }
public double PrecursorFractionalIntensity { get; }
/// <summary>
/// Method-agnostic envelope-quality score in [0, 1] from mzLib's DeconvolutionScorer.
/// 0 indicates either a maximally low-quality envelope or that no envelope was
/// deconvoluted for this scan (e.g. scan-header-only precursor path).
/// </summary>
public double PrecursorDeconvolutionScore { get; }
public string FullFilePath { get; }
public IsotopicEnvelope[] ExperimentalFragments { get; private set; }
public List<Ms2ScanWithSpecificMass> ChildScans { get; set; } // MS2/MS3 scans that are children of this MS2 scan
Expand All @@ -59,7 +67,7 @@
/// An array containing the intensities of the reporter ions for isobaric mass tags.
/// If multiplex quantification wasn't performed, this will be null
/// </summary>
public double[]? IsobaricMassTagReporterIonIntensities { get; private set; }

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / macos-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / ubuntu-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / windows-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / Search with Built

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / Create Installer Artifact

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / Create Installer Artifact

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / Validate Installer Contents

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 70 in MetaMorpheus/EngineLayer/Ms2ScanWithSpecificMass.cs

View workflow job for this annotation

GitHub Actions / Test on Windows

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

public static IsotopicEnvelope[] GetNeutralExperimentalFragments(MsDataScan scan, CommonParameters commonParam)
{
Expand Down
7 changes: 7 additions & 0 deletions MetaMorpheus/EngineLayer/SpectralMatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
ScanPrecursorMass = scan.PrecursorMass;
PrecursorScanEnvelopePeakCount = scan.PrecursorEnvelopePeakCount;
PrecursorFractionalIntensity = scan.PrecursorFractionalIntensity;
PrecursorScanDeconvolutionScore = scan.PrecursorDeconvolutionScore;
DigestionParams = commonParameters.DigestionParams;
NativeId = scan.NativeId;
RunnerUpScore = commonParameters.ScoreCutoff;
Expand Down Expand Up @@ -78,6 +79,12 @@
public double PrecursorScanIntensity { get; }
public int PrecursorScanEnvelopePeakCount { get; }
public double PrecursorFractionalIntensity { get; }
/// <summary>
/// Method-agnostic envelope-quality score in [0, 1] from mzLib's DeconvolutionScorer for
/// the precursor envelope of this PSM. 0 indicates no envelope was computed or the
/// envelope is maximally bad; higher = better-shaped Averagine match.
/// </summary>
public double PrecursorScanDeconvolutionScore { get; }
public double ScanPrecursorMass { get; }
public double? ScanOneOverK0 { get; set; } // this is only used for ion mobility data, so it can be null
public string FullFilePath { get; private set; }
Expand Down Expand Up @@ -161,7 +168,7 @@
/// An array containing the intensities of the reporter ions for isobaric mass tags.
/// If multiplex quantification wasn't performed, this will be null
/// </summary>
public double[]? IsobaricMassTagReporterIonIntensities { get; private set; }

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / macos-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / ubuntu-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / windows-latest

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / Search with Built

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / Create Installer Artifact

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / Create Installer Artifact

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / Validate Installer Contents

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

Check warning on line 171 in MetaMorpheus/EngineLayer/SpectralMatch.cs

View workflow job for this annotation

GitHub Actions / Test on Windows

The annotation for nullable reference types should only be used in code within a '#nullable' annotations context.

public IEnumerable<SpectralMatchHypothesis> BestMatchingBioPolymersWithSetMods
{
Expand Down
10 changes: 9 additions & 1 deletion MetaMorpheus/EngineLayer/Util/Precursor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,19 @@ public Precursor(IsotopicEnvelope envelope, double? intensity = null, double? fr
/// </summary>
public int EnvelopePeakCount { get; init; }

/// <summary>
/// <summary>
/// The fraction of the intensity in the MS1 scan isolation window that is accounted for by this precursor
/// </summary>
public double? FractionalIntensity { get; init; }

/// <summary>
/// Method-agnostic envelope-quality score in [0, 1] from mzLib's DeconvolutionScorer, computed
/// at deconvolution time. 0 is the sentinel for "no envelope was deconvoluted" (e.g. the
/// scan-header-only precursor path) and is also returned by the scorer for a maximally bad
/// envelope, so the model cannot distinguish those two cases — accepted limitation for now.
/// </summary>
public double DeconvolutionScore { get; init; }

public bool Equals(Precursor? other, Tolerance mzTolerance)
{
if (other == null) return false;
Expand Down
2 changes: 1 addition & 1 deletion MetaMorpheus/GUI/GUI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
<PackageReference Include="Microsoft.ML.CpuMath" Version="3.0.1" />
<PackageReference Include="Microsoft.ML.FastTree" Version="3.0.1" />
<PackageReference Include="Microsoft.NETCore.App" Version="2.2.8" />
<PackageReference Include="mzLib" Version="1.0.578" />
<PackageReference Include="mzLib" Version="1.0.579" />
<PackageReference Include="Nett" Version="0.15.0" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="OxyPlot.Core" Version="2.0.0" />
Expand Down
9 changes: 8 additions & 1 deletion MetaMorpheus/GUI/MetaDraw/MetaDraw.xaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Window x:Class="MetaMorpheusGUI.MetaDraw"
<Window x:Class="MetaMorpheusGUI.MetaDraw"
x:Name="MetaDrawWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Expand Down Expand Up @@ -704,6 +704,13 @@
<local:ChimeraAnalysisTabView x:Name="ChimeraAnalysisTabView" />
</TabItem>

<!-- Mirror Plot tab -->
<TabItem Header="{Binding TabHeader}" IsEnabled="{Binding IsTabEnabled}" Background="DarkGray"
d:DataContext="{d:DesignInstance metaDraw:MirrorPlotTabViewModel, IsDesignTimeCreatable=True}"
DataContext="{Binding MirrorPlotTabViewModel, RelativeSource={RelativeSource AncestorType=Window}}">
<local:MirrorPlotTabView x:Name="MirrorPlotTabView" />
</TabItem>

<!--Deconvolution Exploration tab-->
<TabItem Header="{Binding TabHeader}" IsEnabled="{Binding IsTabEnabled}" Background="DarkGray"
d:DataContext="{d:DesignInstance guiFunctions:DeconExplorationTabViewModel, IsDesignTimeCreatable=True}"
Expand Down
53 changes: 37 additions & 16 deletions MetaMorpheus/GUI/MetaDraw/MetaDraw.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ public partial class MetaDraw : Window
private static List<string> AcceptedSpectralLibraryFormats = new List<string> { ".msp" };
private FragmentationReanalysisViewModel FragmentationReanalysisViewModel;
public ChimeraAnalysisTabViewModel ChimeraAnalysisTabViewModel { get; set; }
public MirrorPlotTabViewModel MirrorPlotTabViewModel { get; set; }
public DeconExplorationTabViewModel DeconExplorationViewModel { get; set; }
public BioPolymerTabViewModel BioPolymerTabViewModel { get; set; }

Expand All @@ -61,6 +62,7 @@ public MetaDraw(string[]? filesToLoad = null)

BioPolymerTabViewModel = new BioPolymerTabViewModel(MetaDrawLogic);
ChimeraAnalysisTabViewModel = new ChimeraAnalysisTabViewModel();
MirrorPlotTabViewModel = new MirrorPlotTabViewModel();
DeconExplorationViewModel = new DeconExplorationTabViewModel(MetaDrawLogic);

propertyView = new DataTable();
Expand Down Expand Up @@ -305,25 +307,37 @@ private void dataGridScanNums_SelectedCellsChanged(object sender, SelectedCellsC
double maxDisplayedPerRow = (int)Math.Round((UpperSequenceAnnotaiton.ActualWidth - 10) / MetaDrawSettings.AnnotatedSequenceTextSpacing, 0) + 7;
MetaDrawSettings.SequenceAnnotationSegmentPerRow = (int)Math.Floor(maxDisplayedPerRow / (double)(MetaDrawSettings.SequenceAnnotaitonResiduesPerSegment + 1));

// draw the annotated spectrum
MetaDrawLogic.DisplaySequences(stationarySequenceCanvas, scrollableSequenceCanvas, sequenceAnnotationCanvas, psm);
MetaDrawLogic.DisplaySpectrumMatch(plotView, psm, itemsControlSampleViewModel, out var errors);

// add ptm legend if desired
if (MetaDrawSettings.ShowLegend)
List<string> errors = null;
try
{
int descriptionLineCount = MetaDrawSettings.SpectrumDescription.Count(p => p.Value);
if (psm.Name.IsNotNullOrEmptyOrWhiteSpace())
// draw the annotated spectrum
MetaDrawLogic.DisplaySequences(stationarySequenceCanvas, scrollableSequenceCanvas,
sequenceAnnotationCanvas, psm);
MetaDrawLogic.DisplaySpectrumMatch(plotView, psm, itemsControlSampleViewModel, out errors);

// add ptm legend if desired
if (MetaDrawSettings.ShowLegend)
{
descriptionLineCount += (int)Math.Floor((psm.Name.Length - 20) / (double)SpectrumMatchPlot.MaxCharactersPerDescriptionLine);
int descriptionLineCount = MetaDrawSettings.SpectrumDescription.Count(p => p.Value);
if (psm.Name.IsNotNullOrEmptyOrWhiteSpace())
{
descriptionLineCount += (int)Math.Floor((psm.Name.Length - 20) /
(double)SpectrumMatchPlot
.MaxCharactersPerDescriptionLine);
}

if (psm.Accession.Length > 10)
descriptionLineCount++;
double verticalOffset = descriptionLineCount * 1.7 * MetaDrawSettings.SpectrumDescriptionFontSize;

PtmLegend = new PtmLegendViewModel(psm, verticalOffset);
ChildScanPtmLegendControl.DataContext = PtmLegend;
SequenceCoveragePtmLegendControl.DataContext = PtmLegend;
}
if (psm.Accession.Length > 10)
descriptionLineCount++;
double verticalOffset = descriptionLineCount * 1.4 * MetaDrawSettings.SpectrumDescriptionFontSize;

PtmLegend = new PtmLegendViewModel(psm, verticalOffset);
ChildScanPtmLegendControl.DataContext = PtmLegend;
SequenceCoveragePtmLegendControl.DataContext = PtmLegend;
}
catch (Exception ex)
{
MessageBox.Show("Error drawing spectrum and sequence: " + ex.Message);
}

//draw the sequence coverage if not crosslinked
Expand Down Expand Up @@ -498,6 +512,7 @@ private void RefreshPlotsAfterSettingsChange(object sender, MetaDrawSettingsChan
{
MetaDrawLogic.FilterPsms();
ChimeraAnalysisTabViewModel.ProcessChimeraData(MetaDrawLogic.FilteredListOfPsms.ToList(), MetaDrawLogic.MsDataFiles);
MirrorPlotTabViewModel.ProcessMirrorData(MetaDrawLogic.FilteredListOfPsms.ToList(), MetaDrawLogic.MsDataFiles);

foreach (var group in BioPolymerTabViewModel.AllGroups)
{
Expand All @@ -522,6 +537,11 @@ private void RefreshPlotsAfterSettingsChange(object sender, MetaDrawSettingsChan
ChimeraAnalysisTabViewModel.ChimeraSpectrumMatchPlot = new ChimeraSpectrumMatchPlot(ChimeraAnalysisTabView.ms2ChimeraPlot, selectedChimeraGroup);
ChimeraAnalysisTabViewModel.ChimeraDrawnSequence = new ChimeraDrawnSequence(ChimeraAnalysisTabView.chimeraSequenceCanvas, selectedChimeraGroup, ChimeraAnalysisTabViewModel);
}

if (MirrorPlotTabViewModel.SelectedLeftPsm != null && MirrorPlotTabViewModel.SelectedRightPsm != null)
{
MirrorPlotTabViewModel.RefreshPlot();
}
}

private async void loadFilesButton_Click(object sender, RoutedEventArgs e)
Expand Down Expand Up @@ -554,6 +574,7 @@ private async void loadFilesButton_Click(object sender, RoutedEventArgs e)
loadPsms: true,
loadLibraries: true,
chimeraTabViewModel: ChimeraAnalysisTabViewModel,
mirrorPlotTabViewModel: MirrorPlotTabViewModel,
bioPolymerTabViewModel: BioPolymerTabViewModel,
deconExplorationTabViewModel: DeconExplorationViewModel,
fragmentationReanalysisViewModel: FragmentationReanalysisViewModel);
Expand Down
Loading
Loading