public void Test1() { string path = @"D:\Raw\ZC_20171218_N14_R2.raw"; ISpectrumReader reader = new ThermoRawSpectrumReader(); LocalMaximaPicking picking = new LocalMaximaPicking(10); reader.Init(path); Dictionary <int, int> scanMap = new Dictionary <int, int>(); int current = -1; int start = reader.GetFirstScan(); int end = reader.GetLastScan(); for (int i = start; i < end; i++) { if (reader.GetMSnOrder(i) == 1) { current = i; } else if (reader.GetMSnOrder(i) == 2) { scanMap[i] = current; } } double searchRange = 1; int scan_num = 6223; if (scanMap.ContainsKey(scan_num)) { int paranet_scan = scanMap[scan_num]; ISpectrum ms1 = reader.GetSpectrum(paranet_scan); double mz = reader.GetPrecursorMass(scan_num, reader.GetMSnOrder(scan_num)); List <IPeak> ms1Peaks = FilterPeaks(ms1.GetPeaks(), mz, searchRange); if (ms1Peaks.Count() == 0) { return; } // insert pseudo peaks for large gap List <IPeak> peaks = new List <IPeak>(); double precision = 0.02; double last = ms1Peaks.First().GetMZ(); foreach (IPeak peak in ms1Peaks) { if (peak.GetMZ() - last > precision) { peaks.Add(new GeneralPeak(last + precision / 2, 0)); peaks.Add(new GeneralPeak(peak.GetMZ() - precision / 2, 0)); } peaks.Add(peak); last = peak.GetMZ(); } List <IPeak> majorPeaks = picking.Process(peaks); //Console.WriteLine("mz,intensity"); //foreach (IPeak pk in peaks) //{ // Console.WriteLine(pk.GetMZ().ToString() + "," + pk.GetIntensity().ToString()); //} Fourier charger = new Fourier(); int charge = charger.Charge(peaks, mz - searchRange, mz + searchRange); Patterson charger2 = new Patterson(); PattersonFourierCombine charger3 = new PattersonFourierCombine(); Console.WriteLine(charge.ToString() + " " + charger2.Charge(peaks, mz - searchRange, mz + searchRange).ToString() + " " + charger3.Charge(peaks, mz - searchRange, mz + searchRange).ToString()); } }
public void Test1() { string path = @"C:\Users\Rui Zhang\Downloads\ZC_20171218_C16_R1.raw"; ISpectrumReader reader = new ThermoRawSpectrumReader(); LocalMaximaPicking picking = new LocalMaximaPicking(10); reader.Init(path); Dictionary <int, List <int> > scanGroup = new Dictionary <int, List <int> >(); int current = -1; int start = reader.GetFirstScan(); int end = reader.GetLastScan(); for (int i = start; i < end; i++) { if (reader.GetMSnOrder(i) == 1) { current = i; scanGroup[i] = new List <int>(); } else if (reader.GetMSnOrder(i) == 2) { scanGroup[current].Add(i); } } double searchRange = 2; foreach (KeyValuePair <int, List <int> > ScanPair in scanGroup) { if (ScanPair.Value.Count > 0) { ISpectrum ms1 = reader.GetSpectrum(ScanPair.Key); List <IPeak> majorPeaks = picking.Process(ms1.GetPeaks()); foreach (int i in ScanPair.Value) { double mz = reader.GetPrecursorMass(i, reader.GetMSnOrder(i)); if (ms1.GetPeaks() .Where(p => p.GetMZ() > mz - searchRange && p.GetMZ() < mz + searchRange) .Count() == 0) { continue; } //Patterson charger = new Patterson(); if (ms1.GetPeaks() .Where(p => p.GetMZ() > mz - searchRange && p.GetMZ() < mz + searchRange) .Count() < 2) { continue; } Fourier charger = new Fourier(); int charge = charger.Charge(ms1.GetPeaks(), mz - searchRange, mz + searchRange); Patterson charger2 = new Patterson(); Console.WriteLine(charge.ToString() + " " + charger2.Charge(ms1.GetPeaks(), mz - searchRange, mz + searchRange).ToString()); } } } }