/// <summary> /// Illustrate how to make calls to deisotope a spectrum. /// </summary> /// <param name="dataAccess"></param> private void DeisotopeTest(IMsdrDataReader dataAccess) { IMsdrPeakFilter filter1 = new MsdrPeakFilter(); filter1.AbsoluteThreshold = 10; filter1.RelativeThreshold = 0.1; filter1.MaxNumPeaks = 0;//no limit on max number of peaks IMsdrChargeStateAssignmentFilter csaFilter = new MsdrChargeStateAssignmentFilter(); IBDASpecFilter f = new BDASpecFilter(); f.SpectrumType = SpecType.MassSpectrum; IBDAMSScanFileInformation msscanFileInfo = dataAccess.MSScanFileInformation; int numSpectra = (int)msscanFileInfo.TotalScansPresent; int nNonEmptyCount = 0; // just deisotope the first 10 non-empty spectra for (int i = 0; i < numSpectra; i++) { IBDASpecData spec = dataAccess.GetSpectrum(i, filter1, filter1);//same peak filter used for both MS and MS2 spectra (you can pass in 2 different filters) println("Original spectrum has " + spec.TotalDataPoints + " points"); if (spec.XArray.Length > 0) { ++nNonEmptyCount; } if (nNonEmptyCount > 10) { break; } dataAccess.Deisotope(spec, csaFilter); println(" Deisotoped spectrum has " + spec.TotalDataPoints + " points"); } }
private void DoSpectrumExtractionTestWithStorage(IMsdrDataReader dataAccess) { IMsdrPeakFilter filter1 = new MsdrPeakFilter(); filter1.AbsoluteThreshold = 10; filter1.RelativeThreshold = 0.1; filter1.MaxNumPeaks = 0; IBDAMSScanFileInformation msscanFileInfo = dataAccess.MSScanFileInformation; int numSpectra = (int)msscanFileInfo.TotalScansPresent; for (int i = 0; i < numSpectra; i++) { IBDASpecData spec = dataAccess.GetSpectrum(i, filter1, filter1, DesiredMSStorageType.PeakElseProfile); println("Spectrum " + i.ToString() + "has " + spec.TotalDataPoints + " points"); } }
private List <IonPolarity> GetScanIonPolarities(IDataAccess dataAccess) { List <IonPolarity> rv = new List <IonPolarity>(); IonPolarity polaritiesInFile = IonPolarity.Unassigned; IBDAFileInformation fileInfo = dataAccess.FileInformation; if (fileInfo.IsMSDataPresent()) { IBDAMSScanFileInformation msInfo = fileInfo.MSScanFileInformation; IBDAMSScanTypeInformation scanInfo = msInfo.GetMSScanTypeInformation(MSScanType.Scan); if (scanInfo != null) { polaritiesInFile = scanInfo.IonPolarities; } } if (polaritiesInFile == IonPolarity.Unassigned) { UserMessage msg = new UserMessage(0, string.Empty, ProgramModule.CoreFacades, DACoreFacadeMessages.MSG_MFE_NoMsScanData); throw new MSDAApplicationException(msg as IUserMessage); } switch (polaritiesInFile) { case IonPolarity.Mixed: rv.Add(IonPolarity.Positive); rv.Add(IonPolarity.Negative); break; case IonPolarity.Positive: rv.Add(IonPolarity.Positive); break; case IonPolarity.Negative: rv.Add(IonPolarity.Negative); break; default: break; } return(rv); }
private void PrintMSScanInfo(IMsdrDataReader dataAccess) { ////////////////////////////////////// ///MSScan.bin information ///////////////////////////////////////// IBDAMSScanFileInformation msscan = dataAccess.FileInformation.MSScanFileInformation; //TotalScansPresent println("Total # of Scans: " + msscan.TotalScansPresent); //SpectraFormat println("Spectral Format: " + msscan.SpectraFormat); //is fixed cycle length? println("Is fixed cycle length data present? " + msscan.IsFixedCycleLengthDataPresent()); //is multiple spectra per scan present? println("Is multiple spectra per scan present? " + msscan.IsMultipleSpectraPerScanPresent()); //IonPolarity println("Ion Polarity: " + msscan.IonPolarity); //MSLevel println("MS Level: " + msscan.MSLevel); //IonModes println("Ionization Mode: " + msscan.IonModes); //DeviceType println("Device Type: " + msscan.DeviceType); //CollisionEnergy print("Collision Energies: "); double[] collisionEnergy = msscan.CollisionEnergy; if (collisionEnergy.Length == 0) { println("None"); } else { for (int i = 0; i < collisionEnergy.Length; i++) { if (i == collisionEnergy.Length - 1)//last one { println(Convert.ToString(collisionEnergy[i])); } else { print(Convert.ToString(collisionEnergy[i]) + ", "); } } } //FragmentorVoltages print("Fragmentor Voltages: "); double[] fragVolt = msscan.FragmentorVoltage; if (fragVolt.Length == 0) { println("None"); } else { for (int i = 0; i < fragVolt.Length; i++) { if (i == fragVolt.Length - 1)//last one { println(Convert.ToString(fragVolt[i])); } else { print(Convert.ToString(fragVolt[i] + ", ")); } } } //MRMTransitions print("MRM transitions: "); IRange[] mrmTrans = msscan.MRMTransitions; if (mrmTrans.Length == 0) { println("None"); } else { for (int i = 0; i < mrmTrans.Length; i++) { if (i == mrmTrans.Length - 1)//last one { println(Convert.ToString(mrmTrans[i].Start) + "->" + Convert.ToString(mrmTrans[i].End)); } else { print(Convert.ToString(mrmTrans[i].Start) + "->" + Convert.ToString(mrmTrans[i].End) + ", "); } } } //SIMIons double[] simIons = msscan.SIMIons; print("SIM ions: "); if (simIons.Length == 0) { println("None"); } else { for (int i = 0; i < simIons.Length; i++) { if (i == simIons.Length - 1) { println(Convert.ToString(simIons[i])); } else { print(Convert.ToString(simIons[i]) + ", "); } } } //ScanMethodNumbers print("Scan Method Numbers: "); int[] scanMethodNums = msscan.ScanMethodNumbers; if (scanMethodNums.Length == 0) { println("None"); } else { for (int i = 0; i < scanMethodNums.Length; i++) { if (i == scanMethodNums.Length - 1)//last one { println(Convert.ToString(scanMethodNums[i])); } else { print(Convert.ToString(scanMethodNums[i]) + ", "); } } } //ScanTypesInformationCount println("Scan Type Count: " + msscan.ScanTypesInformationCount); //ScanTypes println("Scan types: " + msscan.ScanTypes); StringBuilder buf = new StringBuilder(); IBDAMSScanTypeInformation[] types = msscan.GetMSScanTypeInformation(); foreach (IBDAMSScanTypeInformation type in types) { double[] mz = type.MzOfInterest; buf.Append("MS scan type: " + type.MSScanType + ", " + type.IonPolarities); if (mz != null && mz.Length > 0) { buf.Append(", m/z of interest = "); for (int i = 0; i < mz.Length; i++) { if (i == mz.Length - 1)//last one { buf.Append(mz[i]); } else { buf.Append(mz[i] + ", "); } } } buf.AppendLine(); } print(buf.ToString()); }