Exemple #1
0
        /// <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");
            }
        }
Exemple #2
0
        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");
            }
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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());
        }