コード例 #1
0
        /// <summary>
        /// Illustrate how to use
        /// GetSpectrum(double retentionTime, MSScanType scanType, IonPolarity ionPolarity, IonizationMode ionMode, IMsdrPeakFilter peakFilter, bool peakFilterOnCentroid);
        /// Get a TIC, and then use the retention time array to access each scan.
        /// </summary>
        /// <param name="dataAccess"></param>
        private void DoSpectrumExtractionTest(IMsdrDataReader dataAccess)
        {
            IMsdrPeakFilter filter1 = new MsdrPeakFilter();

            filter1.AbsoluteThreshold = 10;
            filter1.RelativeThreshold = 0.1;
            filter1.MaxNumPeaks       = 0;

            IBDAChromFilter chromFilter = new BDAChromFilter();

            chromFilter.ChromatogramType     = ChromType.TotalIon;
            chromFilter.DesiredMSStorageType = DesiredMSStorageType.PeakElseProfile;

            IBDAChromData[] chroms = dataAccess.GetChromatogram(chromFilter);
            IBDAChromData   chrom  = chroms[0];

            double[] retTime = chrom.XArray;
            for (int i = 0; i < retTime.Length; i++)
            {
                println("Extract spectrum at RT=" + retTime[i]);
                //Get a spectrum without doing peak filtering if the spectrum is centroid
                //The peak filter passed in will be applied to profile spectrum, but not
                //centroid spectrum, because the flag peakFilterOnCentroid=false
                IBDASpecData spec = dataAccess.GetSpectrum(retTime[i], MSScanType.All, IonPolarity.Mixed, IonizationMode.Unspecified, filter1, false);//peakFilterOnCentroid=false

                /*//uncomment this section if you want to print out spectrum points
                 * double[] mzVals = spec.XArray;
                 * float[] aboundanceVals = spec.YArray;
                 * for (int j = 0; j < mzVals.Length; j++)
                 * {
                 * println(mzVals[j] + ", " + aboundanceVals[j]);
                 * }
                 */
                //Get a spectrum and apply peak filtering to it regardless profile or centroid

                IBDASpecData spec2 = dataAccess.GetSpectrum(retTime[i], MSScanType.All, IonPolarity.Mixed, IonizationMode.Unspecified, filter1, true);//peakFilterOnCentroid=true

                /*
                 * mzVals = spec.XArray;
                 * aboundanceVals = spec.YArray;
                 * for (int j = 0; j < mzVals.Length; j++)
                 * {
                 *   if (aboundanceVals[j] > 5000)
                 *   {
                 *       println(mzVals[j] + ", " + aboundanceVals[j]);
                 *   }
                 * }
                 */
                if (spec2.TotalDataPoints > spec.TotalDataPoints)
                {//since spec2 is always thresholded, it must have less than or equal # of points as spec
                    println("  Error: filtered spectrum contains more points than unfiltered spectrum!");
                }
            }
        }
コード例 #2
0
        public static IBDAChromData GetChromData(this IMsdrDataReader reader)
        {
            IBDAChromFilter chroFilter = new BDAChromFilter();

            chroFilter.ChromatogramType     = ChromType.TotalIon;
            chroFilter.DoCycleSum           = false;
            chroFilter.DesiredMSStorageType = DesiredMSStorageType.PeakElseProfile;

            IBDAChromData[] chro = reader.GetChromatogram(chroFilter);

            return(chro[0]);
        }
コード例 #3
0
        private static ITICData DOReadTICTest1(string FileName)  // data file name, such as c:\temp\mydata.d

        {
            IDataAccess dataAccessor = new DataAccess() as IDataAccess;

            string sFileName = string.Empty;

            try

            {
                double[] m_allRtArray = null;       // RT  x-value

                float[] m_allTicYArray = null;      // TIC y-values

                sFileName = FileName;

                dataAccessor.OpenDataFile(sFileName);

                var m_BDADataAccess = dataAccessor.BaseDataAccess;

                IBDAChromFilter psetfilter = new BDAChromFilter();

                psetfilter.ChromatogramType = ChromType.TotalIon;

                IBDAChromData[] chromarray = m_BDADataAccess.GetChromatogram(psetfilter);

                m_allRtArray = chromarray[0].XArray;

                m_allTicYArray = chromarray[0].YArray;

                TICData tICData = new TICData();
                tICData.SetTICData(m_allRtArray, m_allTicYArray);
                return(tICData);
            }

            catch (Exception ex)

            {
                // MessageBox.Show(ex.Message);
                throw;
            }

            finally

            {
                if (!string.IsNullOrEmpty(sFileName))
                {
                    dataAccessor.CloseDataFile();  // make sure the data file will be closed
                }
            }
        }
コード例 #4
0
        // Examine triggered MRM data file transition chromatograms to see which are
        // for primary transitions.
        private void TestIsPrimaryChrom(string tMrmFilePath)
        {
            IMsdrDataReader dataReader = new MassSpecDataReader();

            dataReader.OpenDataFile(tMrmFilePath);
            IBDAChromFilter filter = new BDAChromFilter();

            filter.ChromatogramType = ChromType.MultipleReactionMode;
            filter.MSScanTypeFilter = MSScanType.MultipleReaction;
            filter.ExtractOneChromatogramPerScanSegment = true;
            filter.DoCycleSum = false;

            IBDAChromData[] chroms = dataReader.GetChromatogram(filter);
            foreach (IBDAChromData chrom in chroms)
            {
                bool   val = chrom.IsPrimaryMrm;
                string s   = string.Format("{0}->{1}, {2}", chrom.MZOfInterest[0].Start, chrom.MeasuredMassRange[0].Start,
                                           val);
                println(s);
            }

            dataReader.CloseDataFile();
        }
コード例 #5
0
        private void GetAxisInformation(IMsdrDataReader dataAccess)
        {
            DataUnit        chromunit;
            DataValueType   chromvalueType;
            IBDAChromFilter filter = new BDAChromFilter();

            filter.ChromatogramType = ChromType.TotalIon;
            IBDAChromData[] chroms = dataAccess.GetChromatogram(filter);
            if (chroms.Length > 0)
            {
                chroms[0].GetXAxisInfoChrom(out chromunit, out chromvalueType);
                println("X Axis");
                println("======");
                println("Data Unit: " + BaseUtilities.GetEnumString(chromunit, true));
                println("Data Value type: " + BaseUtilities.GetEnumString(chromvalueType, true));

                chroms[0].GetYAxisInfoChrom(out chromunit, out chromvalueType);
                println("Y Axis");
                println("======");
                println("Data Unit: " + BaseUtilities.GetEnumString(chromunit, true));
                println("Data Value type: " + BaseUtilities.GetEnumString(chromvalueType, true));
                println(string.Empty);
            }
        }
コード例 #6
0
        /// <summary>
        /// EIC Extraction
        /// </summary>
        /// <param name="dataAccess"></param>
        private void ExtractEIC(IMsdrDataReader dataAccess)
        {
            IBDAChromFilter filter = new BDAChromFilter();

            filter.ChromatogramType = ChromType.ExtractedIon;
            IRange[] ranges = new IRange[1];
            ranges[0] = new CenterWidthRange(158, 1);//EC: center mass is 158 Da, with a 1 Da window
            // ranges[0] = new MinMaxRange(157.5, 158.5);//EC: this is another way to do the same thing
            filter.IncludeMassRanges = ranges;
            IBDAChromData[] chroms = dataAccess.GetChromatogram(filter);

            println("\n EIC EXTRACTION\n");
            string chromDesc = string.Empty;

            for (int i = 0; i < chroms.Length; i++)
            {
                chromDesc = "Chromatogram extracted with : Chromatogram type =" + chroms[i].ChromatogramType.ToString()
                            + " and Total Datapoints = " + chroms[i].TotalDataPoints.ToString()
                            + " for range = " + chroms[i].AcquiredTimeRange[0].Start.ToString()
                            + "-" + chroms[i].AcquiredTimeRange[0].End.ToString()
                            + Environment.NewLine;
                println(chromDesc);
            }
        }
コード例 #7
0
        /// <summary>
        /// Get all Product Ion MS/MS scans and print out the precursor and collision energy.
        /// </summary>
        private void GetPrecursorInfo(IMsdrDataReader dataAccess)
        {
            //Create a chromatogram filter to let the scans that match
            //the filter criteria to pass through
            IBDAChromFilter chromFilter = new BDAChromFilter();

            chromFilter.ChromatogramType     = ChromType.TotalIon;
            chromFilter.DesiredMSStorageType = DesiredMSStorageType.PeakElseProfile;//This means to use peak scans if available, otherwise use profile scans
            chromFilter.MSLevelFilter        = MSLevel.MSMS;
            chromFilter.MSScanTypeFilter     = MSScanType.ProductIon;
            IBDAChromData[] chroms = dataAccess.GetChromatogram(chromFilter);//expect 1 chromatogram because we're not asking it to separate by scan segments, etc.
            IBDAChromData   chrom  = chroms[0];

            double[] retTime = chrom.XArray;
            println("Get MS/MS spectra using retention time");

            for (int i = 0; i < retTime.Length; i++)
            {
                //for each retention time, get the corresponding scan
                //passing in null for peak filter means no peak threshold applied
                IBDASpecData spec = dataAccess.GetSpectrum(retTime[i], MSScanType.ProductIon, IonPolarity.Mixed, IonizationMode.Unspecified, null);
                print("RT=" + retTime[i] + ", ");
                int      precursorCount = 0;
                double[] precursorIons  = spec.GetPrecursorIon(out precursorCount);

                if (precursorCount == 1)
                {
                    print("Precursor Ions:");
                    for (int j = 0; j < precursorIons.Length; j++)
                    {
                        print(precursorIons[j] + " ");
                    }
                    println("");
                    int    charge;
                    double intensity;
                    if (spec.GetPrecursorCharge(out charge))
                    {
                        println("  charge: " + charge);
                    }
                    else
                    {
                        println("  no charge avaialble");
                    }
                    if (spec.GetPrecursorIntensity(out intensity))
                    {
                        println("  intensity: " + intensity);
                    }
                    else
                    {
                        println("  no intensity available");
                    }
                }
                else
                {
                    println("No precursor ions");
                }

                /*
                 * //Uncomment this if you want to print out x and y values of the spectrum.
                 * double[] mzVals = spec.XArray;
                 * float[] aboundanceVals = spec.YArray;
                 * println("RT=" + retTime[i]);
                 * for (int j = 0; j < mzVals.Length; j++)
                 * {
                 *  println(mzVals[j] + ", " + aboundanceVals[j]);
                 * }
                 */
            }
        }