示例#1
0
        /// <summary>
        /// This routine gets the full list of Image Data for an MS Scan
        /// Populate dataList with data from GetMassSpectrum()
        /// Routine Requires sampleDataPos[][] to be populated
        /// </summary>
        private void PopulateListByScan()
        {
            AppContext.ProgressStart("Populating Imagelist...");

            try
            {
                if (this.binsize == 1)
                {
                    // Origianal working routine - works for no binning
                    for (int pointOnXAxis = 0; pointOnXAxis < this.numPointsOnXAxis; pointOnXAxis++)
                    {
                        for (int pointOnYAxis = 0; pointOnYAxis < this.numPointsOnYAxis; pointOnYAxis++)
                        {
                            int          currspecPoint  = this.sampleDataPos[pointOnXAxis][pointOnYAxis];
                            MassSpectrum spec           = this.msexperiment.GetMassSpectrum(currspecPoint);
                            int          specDataPoints = spec.NumDataPoints;

                            for (int specDataPoint = 0; specDataPoint < specDataPoints; specDataPoint++)
                            {
                                var specIndex = (int)((spec.GetXValue(specDataPoint) - this.minMass) / this.massStepSize);
                                this.dataList[specIndex][pointOnXAxis][pointOnYAxis] = (float)spec.GetYValue(specDataPoint);
                            }
                        }

                        AppContext.ProgressSetValue(100.0 * pointOnXAxis / this.numPointsOnXAxis);
                    }
                }
                else
                {
                    for (int pointOnXAxis = 0; pointOnXAxis < this.numPointsOnXAxis; pointOnXAxis++)
                    {
                        for (int pointOnYAxis = 0; pointOnYAxis < this.numPointsOnYAxis; pointOnYAxis++)
                        {
                            // 1) Declare local array
                            var fullArray   = new float[this.massSpecDataPoints];
                            var binnedArray = new float[this.binnedmassSpecDataPoints];

                            int          currspecPoint  = this.sampleDataPos[pointOnXAxis][pointOnYAxis];
                            MassSpectrum spec           = this.msexperiment.GetMassSpectrum(currspecPoint);
                            int          specDataPoints = spec.NumDataPoints;

                            // 1) Fill out a full array
                            for (int specDataPoint = 0; specDataPoint < specDataPoints; specDataPoint++)
                            {
                                var specIndex = (int)((spec.GetXValue(specDataPoint) - this.minMass) / this.massStepSize);
                                fullArray[specIndex] = (float)spec.GetYValue(specDataPoint);
                            }

                            // 2) Bin the full array
                            for (int binspecDataPoint = 0; binspecDataPoint < this.binnedmassSpecDataPoints; binspecDataPoint++)
                            {
                                float sumofIntensities = 0.0f;
                                for (int binindex = 0; binindex < this.binsize; binindex++)
                                {
                                    sumofIntensities += fullArray[(2 * binspecDataPoint) + binindex];
                                }

                                binnedArray[binspecDataPoint] = sumofIntensities / this.binsize;
                            }

                            // 3) Fill in contents of this.dataList[]
                            for (int binspecDataPoint = 0; binspecDataPoint < this.binnedmassSpecDataPoints; binspecDataPoint++)
                            {
                                this.dataList[binspecDataPoint][pointOnXAxis][pointOnYAxis] = binnedArray[binspecDataPoint];
                            }
                        }

                        AppContext.ProgressSetValue(100.0 * pointOnXAxis / this.numPointsOnXAxis);
                    }
                }
            }
            finally
            {
                AppContext.ProgressClear();
            }
        }