Beispiel #1
0
        private void ReadTic(ref Stopwatch sw, int[] frameNumbers)
        {
            IMidacMsFiltersChrom chromFilters = MidacFileAccess.DefaultMsChromFilters;

            if (rbAllIonsHigh.Enabled)
            {
                if (rbAllIonsHigh.Checked)
                {
                    chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                    chromFilters.FragmentationClass = FragmentationClass.HighEnergy;
                }
                else if (rbAllIonsLow.Checked)
                {
                    chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                    chromFilters.FragmentationClass = FragmentationClass.LowEnergy;
                }
            }


            sw.Start();
            IMidacChromDataMs chromData = m_reader.Chromatogram(ChromatogramType.TotalIon, false, chromFilters);

            float[] yArray = chromData.YArray;
            if (yArray != null)
            {
                for (int i = 0; i < yArray.Length; i++)
                {
                    m_tic += yArray[i];
                }
            }
            sw.Stop();
        }
Beispiel #2
0
        private void cbOpen_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtFilePath.Text))
            {
                MessageBox.Show("No input file is specified");
                return;
            }

            string filePath = txtFilePath.Text.Trim();

            if (!Directory.Exists(filePath))
            {
                MessageBox.Show(string.Format("Folder {0} does not exist.", filePath));
                return;
            }

            if (!MidacFileAccess.FileHasImsData(filePath))
            {
                lbFileContents.Text  = "File does not have IM-MS data (not opened)";
                lbFileContents2.Text = "";
                gbCCS.Enabled        = false;
                return;
            }

            if (m_reader != null)
            {
                m_reader.Close();
            }
            m_reader = null;

            // Returns a reader alredy opened to the specified file path
            m_reader          = MidacFileAccess.ImsDataReader(filePath);
            m_currentFilePath = filePath;

            // Get overall file metadata
            IMidacFileInfo fileInfo = m_reader.FileInfo;

            // show something about the contents of the file
            string tfsType = "";

            if (m_reader.HasPeakTfsSpectra)
            {
                tfsType += "Peak";
            }
            if (m_reader.HasProfileTfsSpectra)
            {
                tfsType += tfsType.Length > 0 ? " and Profile" : "Profile";
            }

            lbFileContents.Text = string.Format("{0} frames with max of {1} drift bins/frame; with {2} Total Frame Spectra for each frame",
                                                fileInfo.NumFrames,
                                                fileInfo.MaxNonTfsMsPerFrame,
                                                tfsType);

            gbCCS.Enabled        = m_reader.HasSingleFieldCcsInformation;
            lbFileContents2.Text = string.Format("{0} prepared for CCS conversions", m_reader.HasSingleFieldCcsInformation ? "Is" : "Is NOT");

            // If there are high/low fragmentation frames, find out how many
            if (fileInfo.HasHiLoFragData)
            {
                IMidacMsFiltersChrom chromFilters = MidacFileAccess.DefaultMsChromFilters;
                chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                chromFilters.FragmentationClass = FragmentationClass.HighEnergy;
                int numHighFrames = m_reader.FilteredFrameNumbers(chromFilters).Length;

                chromFilters.FragmentationClass = FragmentationClass.LowEnergy;
                int numLowFrames = m_reader.FilteredFrameNumbers(chromFilters).Length;

                rbAllIonsAll.Enabled    = true;
                rbAllIonsHigh.Enabled   = true;
                rbAllIonsLow.Enabled    = true;
                lbStatusAllIons.Visible = true;
                lbStatusAllIons.Text    = string.Format("{0} High-CE frames; {1} Low-CE frames", numHighFrames, numLowFrames);
            }
            else
            {
                rbAllIonsAll.Enabled    = false;
                rbAllIonsHigh.Enabled   = false;
                rbAllIonsLow.Enabled    = false;
                lbStatusAllIons.Visible = false;
            }

            // Force read of some data before we start; gets some assertions out of the way.
            IMidacUnitConverter converter = m_reader.FrameInfo(1).FrameUnitConverter;
        }
Beispiel #3
0
        private void cbReadFrameMs_Click(object sender, EventArgs e)
        {
            if (m_reader == null)
            {
                MessageBox.Show("File is not open");
                return;
            }

            int reps = 1;

            int.TryParse(txtReps.Text, out reps);

            try
            {
                int[] frameNumbers = null;
                if (rbAllIonsHigh.Enabled)
                {
                    IMidacMsFiltersChrom chromFilters = MidacFileAccess.DefaultMsChromFilters;
                    if (rbAllIonsHigh.Checked)
                    {
                        chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                        chromFilters.FragmentationClass = FragmentationClass.HighEnergy;
                    }
                    else if (rbAllIonsLow.Checked)
                    {
                        chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                        chromFilters.FragmentationClass = FragmentationClass.LowEnergy;
                    }
                    frameNumbers = m_reader.FilteredFrameNumbers(chromFilters);
                }
                else
                {
                    frameNumbers = new int[m_reader.FileInfo.NumFrames];
                    for (int i = 0; i < frameNumbers.Length; i++)
                    {
                        frameNumbers[i] = i + 1;
                    }
                }

                cbBrowse.Enabled         = false;
                cbOpen.Enabled           = false;
                cbReadProfileTfs.Enabled = false;
                cbReadFrameMs.Enabled    = false;
                gbProfileTfsFmt.Enabled  = false;

                // int numFrames = m_reader.FileInfo.NumFrames;
                int numDriftBins = m_reader.FileInfo.MaxNonTfsMsPerFrame;

                Stopwatch sw = new Stopwatch();
                sw.Reset();

                lbStatus.Text = "Processing";
                this.Refresh();
                m_msCount     = 0;
                m_tic         = 0.0;
                m_sumPoints   = 0;
                m_sumNzPoints = 0;
                ((MidacImsFileReader)m_reader).ClearCounts();

                for (int i = reps; i > 0; i--)
                {
                    if (rbFrameMsMidacSpecData.Checked)
                    {
                        ReadFrameMsMidacSpecData(MidacSpecFormat.Profile, ref sw, frameNumbers, numDriftBins);
                    }

                    if (rbFrameZtMsMidacSpecData.Checked)
                    {
                        ReadFrameMsMidacSpecData(MidacSpecFormat.ZeroTrimmed, ref sw, frameNumbers, numDriftBins);
                    }

                    if (rbFrameZbMsMidacSpecData.Checked)
                    {
                        ReadFrameMsMidacSpecData(MidacSpecFormat.ZeroBounded, ref sw, frameNumbers, numDriftBins);
                    }

                    if (rbFrameMdMsMidacSpecData.Checked)
                    {
                        ReadFrameMsMidacSpecData(MidacSpecFormat.Metadata, ref sw, frameNumbers, numDriftBins);
                    }

                    if (rbFrameMsReuseMidacSpecData.Checked)
                    {
                        ReadFrameMsReuseMidacSpecData(MidacSpecFormat.Profile, ref sw, frameNumbers, numDriftBins);
                    }

#if PNNL_VERSION
                    // placeholder for internal tests
                    if (rbFrameMsArrayOfIters.Checked)
                    {
                        ReadFrameMsArrayOfIters(ref sw, numFrames, numDriftBins);
                    }
#endif
                }
                ((MidacImsFileReader)m_reader).CheckCounts();

                m_msCount /= reps;
                double ticks        = sw.ElapsedTicks;
                double ticksPerSec  = Stopwatch.Frequency;
                double milliseconds = (1000.0 * ticks) / ticksPerSec / reps;
                m_tic         /= reps;
                m_sumPoints   /= reps;
                m_sumNzPoints /= reps;

                IMidacFileInfo info = m_reader.FileInfo;

                if (chkFrameMsDoSumming.Checked && !rbFrameMdMsMidacSpecData.Checked)
                {
                    lbStatus.Text =
                        string.Format("Done in {0:##,#.###} ms ({1:##,#.###} us/spectrum; {2:##,#} non-empty spectra; TIC = {3:##,#}; points = {4:##,#}; NZ = {5:##,#})",
                                      milliseconds,
                                      1000 * milliseconds / m_msCount,
                                      m_msCount,
                                      m_tic,
                                      m_sumPoints,
                                      m_sumNzPoints);
                }
                else
                {
                    // no TIC
                    lbStatus.Text =
                        string.Format("Done in {0:##,#.###} ms ({1:##,#.###} us/spectrum; {2:##,#} non-empty spectra; points = {3:##,#}; NZ = {4:##,#})",
                                      milliseconds,
                                      1000 * milliseconds / m_msCount,
                                      m_msCount,
                                      m_sumPoints,
                                      m_sumNzPoints);
                }
            }
            finally
            {
                cbBrowse.Enabled         = true;
                cbOpen.Enabled           = true;
                cbReadProfileTfs.Enabled = true;
                cbReadFrameMs.Enabled    = true;
                gbProfileTfsFmt.Enabled  = true;
            }
        }
Beispiel #4
0
        private void cbReadProfileTfs_Click(object sender, EventArgs e)
        {
            if (m_reader == null)
            {
                MessageBox.Show("File is not open");
                return;
            }
            if (!m_reader.HasProfileTfsSpectra)
            {
                MessageBox.Show("This files doesn't have profile Total Frame Sepctra");
                return;
            }


            int reps = 1;

            int.TryParse(txtReps.Text, out reps);

            // Get m/z ranges
            m_doTic    = rbChroTic.Checked;
            m_mzRanges = new List <IDoubleRange>();
            if (m_doTic)
            {
                double maxMz = m_reader.FileInfo.MaxFlightTimeBin;
                m_reader.FileUnitConverter.Convert(MidacUnits.FlightTimeBinIndex, MidacUnits.MassToCharge, ref maxMz);

                m_mzRanges.Add(new DoubleRange(5.0, maxMz, MidacUnits.MassToCharge));
            }
            else
            {
                IDoubleRange dr = GetMzRange(txtEic1.Text);
                if (!DoubleRange.IsNullOrEmpty(dr))
                {
                    m_mzRanges.Add(dr);
                }

                dr = GetMzRange(txtEic2.Text);
                if (!DoubleRange.IsNullOrEmpty(dr))
                {
                    m_mzRanges.Add(dr);
                }

                dr = GetMzRange(txtEic3.Text);
                if (!DoubleRange.IsNullOrEmpty(dr))
                {
                    m_mzRanges.Add(dr);
                }

                dr = GetMzRange(txtEic4.Text);
                if (!DoubleRange.IsNullOrEmpty(dr))
                {
                    m_mzRanges.Add(dr);
                }

                dr = GetMzRange(txtEic5.Text);
                if (!DoubleRange.IsNullOrEmpty(dr))
                {
                    m_mzRanges.Add(dr);
                }
            }

            m_ftBinRanges = new List <IIntRange>();
            IMidacUnitConverter converter = m_reader.FileUnitConverter;

            foreach (IDoubleRange mzRange in m_mzRanges)
            {
                IDoubleRange mzClone = mzRange.Clone();
                converter.Convert(MidacUnits.FlightTimeBinIndex, ref mzClone);
                m_ftBinRanges.Add(new IntRange((int)mzClone.Min, (int)mzClone.Max));
            }

            try
            {
                cbBrowse.Enabled         = false;
                cbOpen.Enabled           = false;
                cbReadProfileTfs.Enabled = false;
                cbReadFrameMs.Enabled    = false;
                gbProfileTfsFmt.Enabled  = false;

                int[] frameNumbers = null;
                if (rbAllIonsHigh.Enabled)
                {
                    IMidacMsFiltersChrom chromFilters = MidacFileAccess.DefaultMsChromFilters;
                    if (rbAllIonsHigh.Checked)
                    {
                        chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                        chromFilters.FragmentationClass = FragmentationClass.HighEnergy;
                    }
                    else if (rbAllIonsLow.Checked)
                    {
                        chromFilters.ApplicableFilters  = ApplicableFilters.FragmentationClass;
                        chromFilters.FragmentationClass = FragmentationClass.LowEnergy;
                    }
                    frameNumbers = m_reader.FilteredFrameNumbers(chromFilters);
                }
                else
                {
                    frameNumbers = new int[m_reader.FileInfo.NumFrames];
                    for (int i = 0; i < frameNumbers.Length; i++)
                    {
                        frameNumbers[i] = i + 1;
                    }
                }

                Stopwatch sw = new Stopwatch();
                sw.Reset();

                lbStatus.Text = "Processing";
                this.Refresh();

                m_msCount     = 0;
                m_tic         = 0.0;
                m_sumPoints   = 0;
                m_sumNzPoints = 0;

                for (int i = reps; i > 0; i--)
                {
                    if (rbProfTfsFrameInfo.Checked)
                    {
                        ReadFrameInfo(ref sw, frameNumbers);
                    }

#if ENABLE_MHDAC_TESTS
                    if (rbProfTfsMhdac.Checked)
                    {
                        ReadProfTfsMhdac(ref sw, frameNumbers);
                    }
#endif

                    if (rbProfTfsMidacSpecDataExternal.Checked)
                    {
                        ReadProfTfsMidacSpecDataExternal(MidacSpecFormat.Profile, ref sw, frameNumbers);
                    }

                    if (rbProfZtTfsMidacSpecDataExternal.Checked)
                    {
                        ReadProfTfsMidacSpecDataExternal(MidacSpecFormat.ZeroTrimmed, ref sw, frameNumbers);
                    }

                    if (rbProfZbTfsMidacSpecDataExternal.Checked)
                    {
                        ReadProfTfsMidacSpecDataExternal(MidacSpecFormat.ZeroBounded, ref sw, frameNumbers);
                    }

                    if (rbProfMdTfsMidacSpecDataExternal.Checked)
                    {
                        ReadProfTfsMidacSpecDataExternal(MidacSpecFormat.Metadata, ref sw, frameNumbers);
                    }

                    if (rbReadTic.Checked)
                    {
                        ReadTic(ref sw, frameNumbers);
                    }
#if INTERNAL_TEST
                    // placeholder for internal tests
#endif
                }

                double ticks        = sw.ElapsedTicks;
                double ticksPerSec  = Stopwatch.Frequency;
                double milliseconds = 1000.0 * ticks / ticksPerSec / reps;
                m_tic         /= reps;
                m_sumPoints   /= reps;
                m_sumNzPoints /= reps;
                m_msCount     /= reps;

                if (rbProfTfsFrameInfo.Checked)
                {
                    lbStatus.Text = string.Format("Done in {0:F3} ms ({1:F3} us/frame; {2} non-empty frames)",
                                                  milliseconds,
                                                  1000 * milliseconds / m_msCount,
                                                  m_msCount);
                }
                else if (rbReadTic.Checked)
                {
                    lbStatus.Text = string.Format("Done in {0:F3} ms; (TIC = {1})",
                                                  milliseconds,
                                                  m_tic);
                }
                else
                {
                    if (chkTfsDoSumming.Checked && !rbProfMdTfsMidacSpecDataExternal.Checked)
                    {
                        lbStatus.Text =
                            string.Format("Done in {0:##,0.###} ms ({1:##,0.###} us/frame; {2:##,0} non-empty spectra; TIC = {3:##,#}; Points = {4:##,0}; NZ = {5:##,0})",
                                          milliseconds,
                                          1000 * milliseconds / m_msCount,
                                          m_msCount,
                                          m_tic,
                                          m_sumPoints,
                                          m_sumNzPoints);
                    }
                    else
                    {
                        // no TIC value
                        lbStatus.Text =
                            string.Format("Done in {0:##,0.###} ms ({1:##,0.###} us/frame; {2:##,0} non-empty spectra; Points = {3:##,0}; NZ = {4:##,0})",
                                          milliseconds,
                                          1000 * milliseconds / m_msCount,
                                          m_msCount,
                                          m_sumPoints,
                                          m_sumNzPoints);
                    }
                }
            }
            finally
            {
                cbBrowse.Enabled         = true;
                cbOpen.Enabled           = true;
                cbReadProfileTfs.Enabled = true;
                cbReadFrameMs.Enabled    = true;
                gbProfileTfsFmt.Enabled  = true;
            }
        }