public MoleculeInfo(string name, string formula, int charge, double mz, double monoMass, double averageMass, IsotopeLabelType isotopeLabelType, ExplicitRetentionTimeInfo explicitRetentionTime, ExplicitTransitionGroupValues explicitTransitionGroupValues, string note) { Name = name; Formula = formula; Charge = charge; Mz = mz; MonoMass = monoMass; AverageMass = averageMass; IsotopeLabelType = isotopeLabelType; ExplicitRetentionTime = explicitRetentionTime; ExplicitTransitionGroupValues = explicitTransitionGroupValues; Note = note; }
/// <summary> /// For creating at the Molecule level (create molecule and first transition group) or modifying at the transition level /// Null values imply "don't ask user for this" /// </summary> public EditCustomMoleculeDlg(SkylineWindow parent, string title, Identity initialId, IEnumerable<Identity> existingIds, int minCharge, int maxCharge, SrmSettings settings, string defaultName, string defaultFormula, int? defaultCharge, ExplicitTransitionGroupValues explicitAttributes, ExplicitRetentionTimeInfo explicitRetentionTime, IsotopeLabelType defaultIsotopeLabelType, bool enableFormulaEditing = true) { Text = title; _parent = parent; _initialId = initialId; _existingIds = existingIds; _minCharge = minCharge; _maxCharge = maxCharge; _transitionSettings = settings != null ? settings.TransitionSettings : null; _peptideSettings = settings != null ? settings.PeptideSettings : null; InitializeComponent(); NameText = defaultName; var needOptionalValuesBox = explicitRetentionTime != null || explicitAttributes != null; var heightDelta = 0; if (explicitAttributes == null) { ResultExplicitTransitionGroupValues = null; labelCollisionEnergy.Visible = false; textCollisionEnergy.Visible = false; labelSLens.Visible = false; textSLens.Visible = false; labelCompensationVoltage.Visible = false; textCompensationVoltage.Visible = false; labelConeVoltage.Visible = false; textConeVoltage.Visible = false; labelDriftTimeHighEnergyOffsetMsec.Visible = false; textDriftTimeHighEnergyOffsetMsec.Visible = false; labelDriftTimeMsec.Visible = false; textDriftTimeMsec.Visible = false; if (needOptionalValuesBox) { // We blanked out everything but the retention time var vmargin = labelRetentionTime.Location.Y; var newHeight = textRetentionTime.Location.Y + textRetentionTime.Height + vmargin; heightDelta = groupBoxOptionalValues.Height - newHeight; groupBoxOptionalValues.Height = newHeight; } } else { ResultExplicitTransitionGroupValues = new ExplicitTransitionGroupValues(explicitAttributes); } string labelAverage = defaultCharge.HasValue ? Resources.EditCustomMoleculeDlg_EditCustomMoleculeDlg_A_verage_m_z_ : Resources.EditCustomMoleculeDlg_EditCustomMoleculeDlg_A_verage_mass_; string labelMono = defaultCharge.HasValue ? Resources.EditCustomMoleculeDlg_EditCustomMoleculeDlg__Monoisotopic_m_z_ : Resources.EditCustomMoleculeDlg_EditCustomMoleculeDlg__Monoisotopic_mass_; _formulaBox = new FormulaBox(Resources.EditMeasuredIonDlg_EditMeasuredIonDlg_Ion__chemical_formula_, labelAverage, labelMono, defaultCharge) { Formula = defaultFormula, Location = new Point(textName.Left, textName.Bottom + 12) }; Controls.Add(_formulaBox); _formulaBox.TabIndex = 2; _formulaBox.Enabled = enableFormulaEditing; bool needCharge = defaultCharge.HasValue; textCharge.Visible = labelCharge.Visible = needCharge; Charge = defaultCharge ?? 0; if (needOptionalValuesBox && !needCharge) { heightDelta += groupBoxOptionalValues.Location.Y - labelCharge.Location.Y; groupBoxOptionalValues.Location = new Point(groupBoxOptionalValues.Location.X, labelCharge.Location.Y); } if (explicitRetentionTime == null) { // Don't ask user for retetention times RetentionTime = null; RetentionTimeWindow = null; labelRetentionTime.Visible = false; labelRetentionTimeWindow.Visible = false; textRetentionTime.Visible = false; textRetentionTimeWindow.Visible = false; if (needOptionalValuesBox) { var rtHeight = labelCollisionEnergy.Location.Y - labelRetentionTimeWindow.Location.Y; groupBoxOptionalValues.Height -= rtHeight; heightDelta += rtHeight; } } else { RetentionTime = explicitRetentionTime.RetentionTime; RetentionTimeWindow = explicitRetentionTime.RetentionTimeWindow; } if (!needOptionalValuesBox) { groupBoxOptionalValues.Visible = false; heightDelta = groupBoxOptionalValues.Height; } // Initialize label if (settings != null && defaultIsotopeLabelType != null) { _driverLabelType = new PeptideSettingsUI.LabelTypeComboDriver(comboIsotopeLabelType, settings.PeptideSettings.Modifications, null, null, null, null) { SelectedName = defaultIsotopeLabelType.Name }; } else { comboIsotopeLabelType.Visible = false; labelIsotopeLabelType.Visible = false; } Height -= heightDelta; }
public SrmDocument ConvertToExplicitRetentionTimes(SrmDocument document, double timeOffset, double winOffset) { for (bool changing = true; changing;) { changing = false; foreach (var peptideGroupDocNode in document.MoleculeGroups) { var pepGroupPath = new IdentityPath(IdentityPath.ROOT, peptideGroupDocNode.Id); foreach (var nodePep in peptideGroupDocNode.Molecules) { var pepPath = new IdentityPath(pepGroupPath, nodePep.Id); var rt = nodePep.AverageMeasuredRetentionTime; if (rt.HasValue) { double? rtWin = document.Settings.PeptideSettings.Prediction.MeasuredRTWindow; var explicitRetentionTimeInfo = new ExplicitRetentionTimeInfo(rt.Value+timeOffset, rtWin+winOffset); if (!explicitRetentionTimeInfo.Equals(nodePep.ExplicitRetentionTime)) { document = (SrmDocument)document.ReplaceChild(pepPath.Parent, nodePep.ChangeExplicitRetentionTime(explicitRetentionTimeInfo)); changing = true; break; } } } if (changing) break; } } return document; }
public PeptideDocNode ChangeExplicitRetentionTime(ExplicitRetentionTimeInfo prop) { return ChangeProp(ImClone(this), im => im.ExplicitRetentionTime = prop); }
/// <summary> /// For modifying at the Molecule level /// </summary> public EditCustomMoleculeDlg(SkylineWindow parent, string title, SrmSettings settings, string defaultName, string defaultFormula, ExplicitRetentionTimeInfo explicitRetentionTime) : this(parent, title, null, null, 0, 0, null, defaultName, defaultFormula, null, null, explicitRetentionTime, null, false) { }
// Note: this potentially returns a node with a different ID, which has to be Inserted rather than Replaced public PeptideDocNode ChangeCustomIonValues(SrmSettings settings, DocNodeCustomIon customIon, ExplicitRetentionTimeInfo explicitRetentionTime) { var newPeptide = new Peptide(customIon); Helpers.AssignIfEquals(ref newPeptide, Peptide); if (Equals(Peptide, newPeptide)) { return Equals(ExplicitRetentionTime, explicitRetentionTime) ? this : ChangeExplicitRetentionTime(explicitRetentionTime); } else { // ID Changes impact all children, because IDs have back pointers to their parents var children = new List<TransitionGroupDocNode>(); foreach (var nodeGroup in TransitionGroups) { children.Add(nodeGroup.UpdateSmallMoleculeTransitionGroup(newPeptide, null, settings)); } return new PeptideDocNode(newPeptide, settings, ExplicitMods, SourceKey, explicitRetentionTime, children.ToArray(), AutoManageChildren); } }
public PeptideDocNode(Peptide id, SrmSettings settings, ExplicitMods mods, ModifiedSequenceMods sourceKey, string standardType, int? rank, ExplicitRetentionTimeInfo explicitRetentionTimeInfo, Annotations annotations, Results<PeptideChromInfo> results, TransitionGroupDocNode[] children, bool autoManageChildren) : base(id, annotations, children, autoManageChildren) { ExplicitMods = mods; SourceKey = sourceKey; GlobalStandardType = standardType; Rank = rank; ExplicitRetentionTime = explicitRetentionTimeInfo; Results = results; BestResult = CalcBestResult(); if (settings != null) { var calcPre = settings.GetPrecursorCalc(IsotopeLabelType.light, ExplicitMods); ModifiedSequence = calcPre.GetModifiedSequence(Peptide.Sequence, false); ModifiedSequenceDisplay = calcPre.GetModifiedSequence(Peptide.Sequence, true); } }
public PeptideDocNode(Peptide id, SrmSettings settings, ExplicitMods mods, ModifiedSequenceMods sourceKey, ExplicitRetentionTimeInfo explicitRetentionTime, TransitionGroupDocNode[] children, bool autoManageChildren) : this(id, settings, mods, sourceKey, null, null, explicitRetentionTime, Annotations.EMPTY, null, children, autoManageChildren) { }
public PeptideDocNode(Peptide id, ExplicitMods mods = null, ExplicitRetentionTimeInfo explicitRetentionTime = null) : this(id, null, mods, null, null, null, explicitRetentionTime, Annotations.EMPTY, null, new TransitionGroupDocNode[0], true) { }
public bool Equals(ExplicitRetentionTimeInfo other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; return Equals(other.RetentionTime, RetentionTime) && Equals(other.RetentionTimeWindow, RetentionTimeWindow); }