private void UpdateMeasuredDriftTimesControl(IonMobilityPredictor predictor) { // List any measured ion mobility values, taking care to show only those matching display units gridMeasuredDriftTimes.Rows.Clear(); if (predictor == null) { return; } _predictor = (_predictor ?? IonMobilityPredictor.EMPTY).ChangeMeasuredIonMobilityValues(predictor.MeasuredMobilityIons); Units = _predictor.GetIonMobilityUnits(); var units = Units; if (predictor.MeasuredMobilityIons != null) { bool hasHighEnergyOffsets = predictor.MeasuredMobilityIons.Any(p => p.Value.HighEnergyIonMobilityValueOffset != 0); cbOffsetHighEnergySpectra.Checked = hasHighEnergyOffsets; foreach (var p in predictor.MeasuredMobilityIons) { var ccs = p.Value.CollisionalCrossSectionSqA.HasValue ? string.Format("{0:F04}", p.Value.CollisionalCrossSectionSqA.Value) // Not L10N : string.Empty; var im = p.Value.IonMobility.Units == units ? p.Value.IonMobility.Mobility : null; var imOffset = p.Value.IonMobility.Units == units ? p.Value.HighEnergyIonMobilityValueOffset : 0; var chargeOrAdductString = _smallMoleculeUI ? p.Key.Adduct.AdductFormula : p.Key.Charge.ToString(LocalizationHelper.CurrentCulture); if (hasHighEnergyOffsets) { gridMeasuredDriftTimes.Rows.Add(p.Key.Target, chargeOrAdductString, im.HasValue ? im.Value.ToString(LocalizationHelper.CurrentCulture) : string.Empty, ccs, imOffset.ToString(LocalizationHelper.CurrentCulture) ); } else { gridMeasuredDriftTimes.Rows.Add(p.Key.Target, chargeOrAdductString, im.HasValue ? im.Value.ToString(LocalizationHelper.CurrentCulture) : string.Empty, ccs ); } } } else { cbOffsetHighEnergySpectra.Checked = false; } }
public ExplicitTransitionGroupValues(double?explicitCollisionEnergy, double?explicitIonMobility, double?explicitIonMobilityHighEnergyOffset, MsDataFileImpl.eIonMobilityUnits explicitIonMobilityUnits, double?explicitCollisionalCrossSectionSqA, double?explicitSLens, double?explicitConeVoltage, double?explicitDeclusteringPotential, double?explicitCompensationVoltage) { CollisionEnergy = explicitCollisionEnergy; IonMobility = explicitIonMobility; IonMobilityHighEnergyOffset = explicitIonMobilityHighEnergyOffset; IonMobilityUnits = explicitIonMobilityUnits; CollisionalCrossSectionSqA = explicitCollisionalCrossSectionSqA; SLens = explicitSLens; ConeVoltage = explicitConeVoltage; DeclusteringPotential = explicitDeclusteringPotential; CompensationVoltage = explicitCompensationVoltage; }
public ExplicitTransitionGroupValues ChangeIonMobility(double?imNew, MsDataFileImpl.eIonMobilityUnits unitsNew) { var explicitTransitionGroupValues = ChangeProp(ImClone(this), (im, v) => im.IonMobility = v, imNew); return(ChangeProp(ImClone(explicitTransitionGroupValues), (im, v) => im.IonMobilityUnits = v, unitsNew)); }
public Dictionary <LibKey, IonMobilityAndCCS> GetTableMeasuredIonMobility(bool useHighEnergyOffsets, MsDataFileImpl.eIonMobilityUnits units) { var e = new CancelEventArgs(); var dict = new Dictionary <LibKey, IonMobilityAndCCS>(); foreach (DataGridViewRow row in _gridMeasuredDriftTimePeptides.Rows) { if (row.IsNewRow) { continue; } string seq; if (!ValidateSequence(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_SEQUENCE], out seq)) { return(null); } Adduct charge; if (!ValidateCharge(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_CHARGE], out charge)) { return(null); } double mobility; if (!ValidateDriftTime(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_ION_MOBILITY], out mobility)) { return(null); } double?ccs; if (!ValidateCCS(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_CCS], out ccs)) { return(null); } double highEnergyOffset = 0; // Set default value in case user does not provide one if (useHighEnergyOffsets && !ValidateHighEnergyDriftTimeOffset(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_HIGH_ENERGY_OFFSET], out highEnergyOffset)) { return(null); } var ionMobility = IonMobilityValue.GetIonMobilityValue(mobility, units); try { dict.Add(new LibKey(seq, charge.AdductCharge), IonMobilityAndCCS.GetIonMobilityAndCCS(ionMobility, ccs, highEnergyOffset)); } // ReSharper disable once EmptyGeneralCatchClause catch { // just take the first seen } } return(dict); }
public void SetIonMobilityUnits(MsDataFileImpl.eIonMobilityUnits units) { Units = units; }
public Dictionary <LibKey, IonMobilityAndCCS> GetTableMeasuredIonMobility(bool useHighEnergyOffsets, MsDataFileImpl.eIonMobilityUnits units) { var e = new CancelEventArgs(); var dict = new Dictionary <LibKey, IonMobilityAndCCS>(); foreach (DataGridViewRow row in _gridMeasuredDriftTimePeptides.Rows) { if (row.IsNewRow) { continue; } string seq; if (!ValidateSequence(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_SEQUENCE], out seq)) { return(null); } // OK, we have a non-empty "sequence" string, but is that actually a peptide or a molecule? // See if there's anything in the document whose text representation matches what's in the list var target = Program.MainWindow.Document.Molecules.Select(m => m.Target).FirstOrDefault(t => seq.Equals(t.ToString())); if (target == null || target.IsEmpty) { // Does seq evaluate as a peptide? target = !seq.All(c => char.IsUpper(c) || char.IsDigit(c) || "[+-,.]()".Contains(c)) // Not L10N ? new Target(CustomMolecule.FromSerializableString(seq)) : Target.FromSerializableString(seq); } Adduct charge; if (!ValidateCharge(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_CHARGE], target.IsProteomic, out charge)) { return(null); } double mobility; if (!ValidateDriftTime(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_ION_MOBILITY], out mobility)) { return(null); } double?ccs; if (!ValidateCCS(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_CCS], out ccs)) { return(null); } double highEnergyOffset = 0; // Set default value in case user does not provide one if (useHighEnergyOffsets && !ValidateHighEnergyDriftTimeOffset(e, row.Cells[EditDriftTimePredictorDlg.COLUMN_HIGH_ENERGY_OFFSET], out highEnergyOffset)) { return(null); } var ionMobility = IonMobilityValue.GetIonMobilityValue(mobility, units); try { dict.Add(new LibKey(target, charge), IonMobilityAndCCS.GetIonMobilityAndCCS(ionMobility, ccs, highEnergyOffset)); } // ReSharper disable once EmptyGeneralCatchClause catch { // just take the first seen } } return(dict); }
} // This is private to force use of GetTransitionGroupIonMobilityInfo (for memory efficiency, as most uses are empty) // Serialization support public static TransitionGroupIonMobilityInfo GetTransitionGroupIonMobilityInfo(double?ccs, double?ionMobilityMS1, double?ionMobilityFragment, double?ionMobilityWindow, MsDataFileImpl.eIonMobilityUnits units) { if (ccs.HasValue || ionMobilityMS1.HasValue || ionMobilityFragment.HasValue || ionMobilityWindow.HasValue) { return new TransitionGroupIonMobilityInfo() { CollisionalCrossSection = ccs, IonMobilityMS1 = ionMobilityMS1, IonMobilityFragment = ionMobilityFragment, IonMobilityWindow = ionMobilityWindow, IonMobilityUnits = units } } ; return(EMPTY); }