Пример #1
0
        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;
            }
        }
Пример #2
0
 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;
 }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
 public void SetIonMobilityUnits(MsDataFileImpl.eIonMobilityUnits units)
 {
     Units = units;
 }
Пример #6
0
        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);
        }
Пример #7
0
        }                                            // 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);
        }