Example #1
0
 public AnalysisRow (object queryRow, DataFilter dataFilter)
 {
     DataFilter = dataFilter;
     Analysis = (DataModel.Analysis) queryRow;
 }
Example #2
0
 public AnalysisRow(object queryRow, DataFilter dataFilter)
 {
     DataFilter = dataFilter;
     Analysis   = (DataModel.Analysis)queryRow;
 }
Example #3
0
            public PeptideSpectrumMatchRow(object[] queryRow, DataFilter dataFilter, IList<Grouping<GroupBy>> checkedGroupings)
            {
                DataFilter = dataFilter;

                int column = -1;
                Spectrum = (DataModel.Spectrum) queryRow[++column];
                Source = (DataModel.SpectrumSource) queryRow[++column];
                Group = (DataModel.SpectrumSourceGroup) queryRow[++column];
                Analysis = (DataModel.Analysis) queryRow[++column];

                PeptideSpectrumMatchId = Convert.ToInt64(queryRow[++column]);
                Rank = Convert.ToInt32(queryRow[++column]);
                Charge = Convert.ToInt32(queryRow[++column]);
                QValue = Convert.ToDouble(queryRow[++column]);

                ObservedMass = Convert.ToDouble(queryRow[++column]);
                double monoisotopicError = Convert.ToDouble(queryRow[++column]);
                double averageError = Convert.ToDouble(queryRow[++column]);

                // if absolute value of monoisotopic error is less than absolute value of average error
                // or if the monoisotopic error is nearly a multiple of a neutron mass,
                // then treat the mass as monoisotopic
                if (PeptideSpectrumMatch.GetSmallerMassError(monoisotopicError, averageError) == monoisotopicError)
                    ExactMass = ObservedMass - monoisotopicError;
                else
                    ExactMass = ObservedMass - averageError;

                string modificationString = (string) queryRow[++column];
                ModifiedSequence = (string) queryRow[++column];

                if (!String.IsNullOrEmpty(modificationString) && modificationString.Contains('@'))
                {
                    // build modified sequence
                    var modifications = modificationString.Split(' ').Last()
                                                          .Split(',')
                                                          .Select(o => o.Split('@'))
                                                          .Select(o => new { Offset = Convert.ToInt32(o[1]), DeltaMass = Convert.ToDouble(o[0]) })
                                                          .OrderByDescending(o => o.Offset);

                    var sb = new StringBuilder(ModifiedSequence);
                    string formatString = "[{0}]";
                    foreach (var mod in modifications)
                        if (mod.Offset == int.MinValue)
                            sb.Insert(0, String.Format(formatString, mod.DeltaMass));
                        else if (mod.Offset == int.MaxValue)
                            sb.AppendFormat(formatString, mod.DeltaMass);
                        else
                            sb.Insert(mod.Offset + 1, String.Format(formatString, mod.DeltaMass));

                    ModifiedSequence = sb.ToString();
                }

                // if not grouping by Spectrum, use Spectrum as the key column
                if (checkedGroupings.Count(o => o.Mode == GroupBy.Spectrum) == 0)
                {
                    Key = Spectrum.NativeID;

                    // try to abbreviate, e.g. "controllerType=0 controllerNumber=1 scan=123" -> "0.1.123"
                    try { Key = pwiz.CLI.msdata.id.abbreviate(Key); }
                    catch { }

                    // if not grouping by Source, prepend Spectrum.Source to the NativeID
                    if (checkedGroupings.Count(o => o.Mode == GroupBy.Source) == 0)
                        Key = (Group.Name + "/" + Source.Name + "/" + Key).Replace("//", "/");
                }
                else
                    Key = Rank.ToString();
            }