예제 #1
0
파일: Peak.cs 프로젝트: vnbhatia/triplet
 public Peak(double mz, double intensity, IonSpectrum spectrum)
 {
     this.mz = mz;
     this.intensity = intensity;
     this.spectrum = spectrum;
     this.consecutiveNeutralLossIndex = 0;
 }
예제 #2
0
 public static bool AreEqual(IonSpectrum a, IonSpectrum b)
 {
     if (a.lineIndex_begin == b.lineIndex_begin && a.lineIndex_end == b.lineIndex_end && a.title == b.title &&
         a.pepmass == b.pepmass && a.pepmass_intensity == b.pepmass_intensity && a.charge == b.charge && a.z == b.z &&
         a.retentionTime == b.retentionTime && a.scans == b.scans && a.isPositiveIonMode == b.isPositiveIonMode)
     {
         if (a.peaks.Count == b.peaks.Count)
         {
             return true;
         }
     }
     return false;
 }
예제 #3
0
        public SpectrumViewer(IonSpectrum spectrum, List<Peak> peaks)
        {
            InitializeComponent();
            this.Activate();
            this.Focus();
            this.Topmost = true;
            this.Title = "Spectrum Viewer - " + spectrum.title;

            // Set up LineSeries Chart - see example at http://wpf.codeplex.com/discussions/232267
            this.spectrum = spectrum;
            DataContext = this;

            _data = new ObservableCollection<KeyValuePair<double, double>>();
            foreach (Peak p in spectrum.peaks)
                data.Add(new KeyValuePair<double, double>(p.mz, p.intensity));

            _highlightedPeaks = new ObservableCollection<KeyValuePair<double, double>>();
            foreach (Peak p in peaks)
                _highlightedPeaks.Add(new KeyValuePair<double, double>(p.mz, p.intensity));
        }
예제 #4
0
        public IonSpectrum getIonSpectrum2()
        {
            IonSpectrum expectedSpectrum2 = new IonSpectrum();
            expectedSpectrum2.title = "File565 Spectrum2 scans: 4";
            expectedSpectrum2.pepmass = "506.38400";
            expectedSpectrum2.pepmass_intensity = "3076.27000";
            expectedSpectrum2.charge = "2+";
            expectedSpectrum2.retentionTime = 2;
            expectedSpectrum2.scans = 4;

            expectedSpectrum2.AddPeak(157.043, 5.19905);
            expectedSpectrum2.AddPeak(175.127, 5.34553);
            expectedSpectrum2.AddPeak(202.957, 4.52134);
            expectedSpectrum2.AddPeak(208.036, 2.51525);
            expectedSpectrum2.AddPeak(216.957, 2.84039);
            expectedSpectrum2.AddPeak(221.419, 3.91015);
            expectedSpectrum2.AddPeak(223.048, 4.78027);
            expectedSpectrum2.AddPeak(228.053, 3.37681);
            expectedSpectrum2.AddPeak(228.835, 1.09891);
            expectedSpectrum2.AddPeak(230.047, 4.48171);
            expectedSpectrum2.AddPeak(246.991, 7.47876);
            expectedSpectrum2.AddPeak(260.046, 4.58196);
            expectedSpectrum2.AddPeak(265.090, 5.2341);
            expectedSpectrum2.AddPeak(265.811, 12.9218);
            expectedSpectrum2.AddPeak(268.218, 3.58545);
            expectedSpectrum2.AddPeak(269.078, 5.97038);

            return expectedSpectrum2;
        }
예제 #5
0
        public IonSpectrum getIonSpectrum1()
        {
            IonSpectrum expectedSpectrum1 = new IonSpectrum();
            expectedSpectrum1.title = "File565 Spectrum1 scans: 3";
            expectedSpectrum1.pepmass = "508.90073";
            expectedSpectrum1.pepmass_intensity = "1994.07000";
            expectedSpectrum1.charge = "2+";
            expectedSpectrum1.retentionTime = 2;
            expectedSpectrum1.scans = 3;

            expectedSpectrum1.AddPeak(170.084, 1.30444);
            expectedSpectrum1.AddPeak(195.201, 3.68346);
            expectedSpectrum1.AddPeak(202.326, 7.06028);
            expectedSpectrum1.AddPeak(211.204, 3.53445);
            expectedSpectrum1.AddPeak(213.118, 2.86394);
            expectedSpectrum1.AddPeak(221.046, 8.60954);
            expectedSpectrum1.AddPeak(239.047, 2.50649);

            return expectedSpectrum1;
        }
예제 #6
0
        //
        //You can use the following additional attributes as you write your tests:
        //
        public static bool AreSpectraEqual(IonSpectrum spectrum1, IonSpectrum spectrum2)
        {
            if (spectrum1 == null || spectrum2 == null)
            {
                if (spectrum1 == spectrum2)
                    return true;
                else
                    return false;
            }
            if (spectrum1.title != spectrum2.title)
                return false;
            if (spectrum1.pepmass != spectrum2.pepmass)
                return false;
            if (spectrum1.charge != spectrum2.charge)
                return false;
            if (spectrum1.retentionTime != spectrum2.retentionTime)
                return false;
            if (spectrum1.scans != spectrum2.scans)
                return false;

            if (spectrum1.peaks.Count != spectrum2.peaks.Count)
                return false;

            for (int i = 0; i < spectrum1.peaks.Count; i++)
            {
                if (spectrum1.peaks[i].mz != spectrum2.peaks[i].mz)
                    return false;
                if (spectrum1.peaks[i].intensity != spectrum2.peaks[i].intensity)
                    return false;
            }

            return true;
        }
예제 #7
0
        public IonSpectrum getTestIonSpectrum()
        {
            IonSpectrum spectrum = new IonSpectrum();
            spectrum.charge = "2+";

            // Add a phosphate neutral loss series
            spectrum.AddPeak(228.2, 100);
            spectrum.AddPeak(179.2, 90);
            spectrum.AddPeak(130.3, 76);

            // Add a near-miss phosphate peaks
            spectrum.AddPeak(179.39, 84);
            spectrum.AddPeak(132.0, 80);

            // Add some random noise
            spectrum.AddPeak(140.17, 48);
            spectrum.AddPeak(130.1, 10);
            spectrum.AddPeak(77, 33);
            spectrum.AddPeak(61.9, 2);
            spectrum.AddPeak(35, 11);
            spectrum.AddPeak(33, 19);
            spectrum.AddPeak(31, 7);
            spectrum.AddPeak(22, 24);

            return spectrum;
        }
예제 #8
0
파일: MGFFile.cs 프로젝트: vnbhatia/triplet
        public IonSpectrum parseSpectrum(int ionStartLineIndex, System.IO.StreamReader sr)
        {
            IonSpectrum spectrum = null;
            bool isInsideIonSpectrum = false;

            int i = ionStartLineIndex;
            if (i < 0)
                return null;

            string line = "";
            isInsideIonSpectrum = true; // We're assuming the passed "sr" variable is currently AT the "BEGIN IONS" line
            spectrum = new IonSpectrum();
            spectrum.lineIndex_begin = i;

            while((line = sr.ReadLine()) != null)
            {
                i++;

                if (isInsideIonSpectrum)
                {
                    if (line.Contains("TITLE="))
                        spectrum.title = line.Substring(6);
                    else if (line.Contains("PEPMASS="))
                    {
                        string[] pepmassInfo = line.Substring(8).Split(' ');
                        if (pepmassInfo.Length == 2)
                        {
                            spectrum.pepmass = pepmassInfo[0];
                            spectrum.pepmass_intensity = pepmassInfo[1];
                        }
                        else if (pepmassInfo.Length == 1)
                            spectrum.pepmass = pepmassInfo[0];
                    }
                    else if (line.Contains("CHARGE="))
                        spectrum.charge = line.Substring(7);
                    else if (line.Contains("RTINSECONDS="))
                        spectrum.retentionTime = Double.Parse(line.Substring(12));
                    else if (line.Contains("SCANS="))
                        spectrum.scans = Int32.Parse(line.Substring(6));
                    else if (line.Trim().Equals("END IONS"))
                    {
                        isInsideIonSpectrum = false;
                        spectrum.lineIndex_end = i;
                        break;
                    }
                    else
                    {
                        string[] tokens = line.Trim().Split(' ');
                        if (tokens.Length != 2)
                            Console.WriteLine("Failed to parse the line, " + line + ". Skipping line.");
                        else
                        {
                            try
                            {
                                double mz = Double.Parse(tokens[0]);
                                double intensity = Double.Parse(tokens[1]);
                                spectrum.AddPeak(mz, intensity);
                            }
                            catch
                            {
                                Console.WriteLine("Failed to parse the line, " + line + ". Skipping line.");
                            }
                        }
                    }
                }
            }

            if (isInsideIonSpectrum)
            {
                Console.WriteLine("Warning: An ion's MS2 spectrum was not closed by the line, END IONS.");
                spectrum.lineIndex_end = -1;
            }

            return spectrum;
        }