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

Add spectrum filter control to Import/Run Peptide Search wizard #3360

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -335,7 +335,7 @@ public MsconvertDdaConverter GetDdaConverter()

public DiaConverter GetDiaConverter()
{
return new DiaConverter(ImportPeptideSearch);
return new DiaConverter(ImportPeptideSearch, _fullScanSettingsControlGetter().FullScan.SpectrumFilter);
}

public HardklorDdaConverter GetHardklorConverter()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1025,7 +1025,8 @@ private void InitiateSearch()
? AbstractDdaConverter.MsdataFileFormat.mzML // Hardklor reads only mzML
: AbstractDdaConverter.MsdataFileFormat.mz5;
if (ImportPeptideSearch.DdaConverter == null &&
BuildPepSearchLibControl.DdaSearchDataSources.Any(f => ImportPeptideSearch.SearchEngine.GetSearchFileNeedsConversion(f, out requiredFormat)))
(BuildPepSearchLibControl.DdaSearchDataSources.Any(f => ImportPeptideSearch.SearchEngine.GetSearchFileNeedsConversion(f, out requiredFormat)))/* ||
!FullScan.SpectrumClassFilter.IsEmpty*/) // CONSIDER(MCC): consider spectrum filters in GetSearchFileNeedsConversion and apply them in Converter
{
if (IsFeatureDetectionWorkflow)
ImportPeptideSearch.DdaConverter = ConverterSettingsControl.GetHardklorConverter();
Expand Down Expand Up @@ -1292,6 +1293,8 @@ private bool UpdateFullScanSettings()
if (!FullScanSettingsControl.ValidateFullScanSettings(helper, out fullScan))
return false;

fullScan = fullScan.ChangeSpectrumFilter(TransitionSettingsControl.SpectrumFilter);

Helpers.AssignIfEquals(ref fullScan, TransitionSettings.FullScan);

var prediction = TransitionSettings.Prediction.ChangePrecursorMassType(precursorMassType);
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,18 @@
using System.Linq;
using System.Windows.Forms;
using pwiz.Common.Chemistry;
using pwiz.Common.DataBinding;
using pwiz.Common.DataBinding.Filtering;
using pwiz.Common.SystemUtil;
using pwiz.Skyline.Alerts;
using pwiz.Skyline.Controls;
using pwiz.Skyline.EditUI;
using pwiz.Skyline.Model;
using pwiz.Skyline.Model.Databinding;
using pwiz.Skyline.Model.DocSettings;
using pwiz.Skyline.Model.Results.Spectra;
using pwiz.Skyline.Properties;
using pwiz.Skyline.SettingsUI;
using pwiz.Skyline.Util;
using pwiz.Skyline.Util.Extensions;

Expand All @@ -19,6 +26,7 @@ public partial class TransitionSettingsControl : UserControl
{
private readonly IModifyDocumentContainer _documentContainer;
private readonly Dictionary<Control, Point> _originalLocations;
private SpectrumClassFilter _spectrumFilter;

public TransitionSettingsControl(IModifyDocumentContainer documentContainer)
{
Expand Down Expand Up @@ -53,13 +61,14 @@ public TransitionFilterAndLibrariesSettings(TransitionSettingsControl control)
: this(FixWhitespace(control.txtPeptidePrecursorCharges.Text),
FixWhitespace(control.txtPrecursorIonCharges.Text), FixWhitespace(control.txtIonTypes.Text),
control.ExclusionUseDIAWindow, control.IonMatchMzTolerance, control.MinIonCount, control.IonCount,
control.IonRangeFrom, control.IonRangeTo, control.MinIonMz, control.MaxIonMz)
control.IonRangeFrom, control.IonRangeTo, control.MinIonMz, control.MaxIonMz, control.SpectrumFilter)
{
}

public TransitionFilterAndLibrariesSettings(string peptidePrecursorCharges, string peptideIonCharges,
string peptideIonTypes, bool exclusionUseDiaWindow, MzTolerance ionMatchMzTolerance, int minIonCount,
int ionCount, string ionRangeFrom, string ionRangeTo, double minIonMz, double maxIonMz)
int ionCount, string ionRangeFrom, string ionRangeTo, double minIonMz, double maxIonMz,
SpectrumClassFilter spectrumClassFilter)
{
PeptidePrecursorCharges = peptidePrecursorCharges;
PeptideIonCharges = peptideIonCharges;
Expand All @@ -72,6 +81,7 @@ public TransitionFilterAndLibrariesSettings(string peptidePrecursorCharges, stri
IonRangeTo = ionRangeTo;
MinIonMz = minIonMz;
MaxIonMz = maxIonMz;
SpectrumClassFilter = spectrumClassFilter;
}

public static TransitionFilterAndLibrariesSettings GetDefault(TransitionSettings transitionSettings)
Expand All @@ -83,7 +93,7 @@ public static TransitionFilterAndLibrariesSettings GetDefault(TransitionSettings
transitionSettings.Libraries.MinIonCount,
transitionSettings.Libraries.IonCount, transitionSettings.Filter.FragmentRangeFirst.Label,
transitionSettings.Filter.FragmentRangeLast.Label, transitionSettings.Instrument.MinMz,
transitionSettings.Instrument.MaxMz);
transitionSettings.Instrument.MaxMz, new SpectrumClassFilter());
}

[Track]
Expand All @@ -108,6 +118,12 @@ public static TransitionFilterAndLibrariesSettings GetDefault(TransitionSettings
public double MinIonMz { get; private set; }
[Track]
public double MaxIonMz { get; private set; }
public SpectrumClassFilter SpectrumClassFilter { get; private set; }
[Track(defaultValues: typeof(DefaultValuesStringNullOrEmpty))]
public string SpectrumFilter
{
get { return SpectrumClassFilter.ToString(); }
}
}

public void SetFields(TransitionSettings settings)
Expand All @@ -133,6 +149,8 @@ public void SetFields(TransitionSettings settings)
}
MinIonMz = settings.Instrument.MinMz;
MaxIonMz = settings.Instrument.MaxMz;

SpectrumFilter = settings.FullScan.SpectrumClassFilter;
}

public bool IonFilter
Expand Down Expand Up @@ -241,6 +259,63 @@ public int MaxIonMz
set { txtMaxMz.Text = value.ToString(LocalizationHelper.CurrentCulture); }
}

public SpectrumClassFilter SpectrumFilter
{
get
{
return _spectrumFilter;
}
set
{
_spectrumFilter = value;
UpdateSpectrumFilterText();
}
}
private void btnEditSpectrumFilter_Click(object sender, EventArgs e)
{
EditSpectrumFilter();
}

private void UpdateSpectrumFilterText()
{
tbxSpectrumFilter.Text = SpectrumClassFilter.FromFilterPages(GetFilterPages()).GetText(true);
}

public FilterPages GetFilterPages()
{
var filterPages = SpectrumFilter.GetFilterPages();
if (filterPages.Pages.Contains(SpectrumClassFilter.GenericFilterPage))
{
return filterPages;
}

var requiredPages = new List<FilterPage>
{
SpectrumClassFilter.Ms1FilterPage,
SpectrumClassFilter.Ms2FilterPage
};

return TransitionSettingsUI.GetFilterPages(requiredPages, filterPages);
}

public void EditSpectrumFilter()
{
var skylineDataSchema = new SkylineDataSchema(_documentContainer, SkylineDataSchema.GetLocalizedSchemaLocalizer());
var rootColumn = ColumnDescriptor.RootColumn(skylineDataSchema, typeof(SpectrumClass));
var filterPages = GetFilterPages();
if (filterPages.Pages.Count == 0)
{
MessageDlg.Show(this, SettingsUIResources.TransitionSettingsUI_EditSpectrumFilter_MS1_or_MS_MS_filtering_must_be_enabled_on_the_Full_Scan_tab_in_order_to_use_this_feature_);
return;
}
using var dlg = new EditSpectrumFilterDlg(rootColumn, filterPages);
dlg.CreateCopyVisible = false;
if (dlg.ShowDialog(this) == DialogResult.OK)
{
SpectrumFilter = SpectrumClassFilter.FromFilterPages(dlg.FilterPages);
}
}

public void Initialize(ImportPeptideSearchDlg.Workflow workflow)
{
// Reset control locations, in case this isn't the first call to Initialize.
Expand Down Expand Up @@ -441,7 +516,9 @@ public TransitionSettings GetTransitionSettings(Form parent)
var libraries = new TransitionLibraries(new MzTolerance(ionMatchTolerance, ionMatchToleranceUnit), minIonCount, ionCount, TransitionLibraryPick.filter);
Helpers.AssignIfEquals(ref libraries, settings.Libraries);

return new TransitionSettings(settings.Prediction, filter, libraries, settings.Integration, instrument, settings.FullScan, settings.IonMobilityFiltering);
var fullScan = settings.FullScan.ChangeSpectrumFilter(SpectrumFilter);

return new TransitionSettings(settings.Prediction, filter, libraries, settings.Integration, instrument, fullScan, settings.IonMobilityFiltering);
}

private void comboMatchToleranceUnit_SelectedIndexChanged(object sender, EventArgs e)
Expand Down
Loading