Exemple #1
0
        public Peak1DArray ReadSpectrumPeaks(string spectrumID)
        {
            RaiseDisposed();

            try
            {
                int sampleIndex, experimentIndex, scanIndex;
                Parse(spectrumID, out sampleIndex, out experimentIndex, out scanIndex);

                using (MassSpectrometerSample sample = batch.GetSample(sampleIndex).MassSpectrometerSample)
                    using (MSExperiment msExp = sample.GetMSExperiment(experimentIndex))
                    {
                        Clearcore2.Data.MassSpectrum ms = msExp.GetMassSpectrum(scanIndex);
                        Peak1DArray pa = new Peak1DArray(
                            BinaryDataCompressionType.NoCompression,
                            BinaryDataType.Float32,
                            BinaryDataType.Float32);

                        //Peak1D[] peaks = new Peak1D[ms.NumDataPoints];

                        //for (int i = 0; i < ms.NumDataPoints; i++)
                        //    peaks[i] = new Peak1D(ms.GetYValue(i), ms.GetXValue(i));

                        //pa.Peaks = MzLiteArray.ToMzLiteArray(peaks);

                        pa.Peaks = new WiffPeaksArray(ms);

                        return(pa);
                    }
            }
            catch (Exception ex)
            {
                throw new MzLiteIOException(ex.Message, ex);
            }
        }
Exemple #2
0
        private bool SqlTrySelect(string spectrumID, out Peak1DArray peaks)
        {
            SQLiteCommand cmd;

            if (!currentScope.TryGetCommand("SELECT_SPECTRUM_PEAKS_CMD", out cmd))
            {
                cmd = currentScope.PrepareCommand("SELECT_SPECTRUM_PEAKS_CMD", "SELECT PeakArray, PeakData FROM Spectrum WHERE SpectrumID = @spectrumID");
            }
            else
            {
                cmd.Parameters.Clear();
            }

            cmd.Parameters.AddWithValue("@spectrumID", spectrumID);

            using (SQLiteDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    peaks = MzLiteJson.FromJson <Peak1DArray>(reader.GetString(0));
                    decoder.Decode(reader.GetStream(1), peaks);
                    return(true);
                }
                else
                {
                    peaks = null;
                    return(false);
                }
            }
        }
Exemple #3
0
        private void WriteBinaryDataArrayList(Peak1DArray peaks)
        {
            writer.WriteStartElement("binaryDataArrayList");
            WriteXmlAttribute("count", "2");

            UserDescription mzParams = new UserDescription("mzParams");

            mzParams
            .SetMzArray()
            .SetCompression(BinaryDataCompressionType.NoCompression)
            .SetBinaryDataType(peaks.MzDataType);

            double[] mzValues = peaks.Peaks.Select(x => x.Mz).ToArray();
            WriteBinaryDataArray(mzValues, peaks.MzDataType, mzParams);

            UserDescription intParams = new UserDescription("intParams");

            intParams
            .SetIntensityArray().NoUnit()
            .SetCompression(BinaryDataCompressionType.NoCompression)
            .SetBinaryDataType(peaks.IntensityDataType);

            double[] intValues = peaks.Peaks.Select(x => x.Intensity).ToArray();
            WriteBinaryDataArray(intValues, peaks.IntensityDataType, intParams);

            writer.WriteEndElement();
        }
Exemple #4
0
        public void Insert(string runID, MassSpectrum spectrum, Peak1DArray peaks)
        {
            RaiseDisposed();
            RaiseNotInScope();

            try
            {
                SqlInsert(runID, spectrum, peaks);
            }
            catch (Exception ex)
            {
                throw new MzLiteIOException(ex.Message, ex);
            }
        }
Exemple #5
0
        public Peak2D[] GetMS2(
            IMzLiteDataReader dataReader,
            SwathQuery query,
            Func <IEnumerable <Peak1D>, RangeQuery, Peak1D> mzRangeSelector = null)
        {
            if (dataReader == null)
            {
                throw new ArgumentNullException("dataReader");
            }
            if (query == null)
            {
                throw new ArgumentNullException("query");
            }
            if (mzRangeSelector == null)
            {
                mzRangeSelector = GetClosestMz;
            }

            MSSwath swath = swathList.SearchClosestTargetMz(query);

            if (swath == null)
            {
                return(new Peak2D[0]);
            }

            SwathSpectrumEntry swathSpec = swath.SearchClosestRt(query);

            if (swathSpec == null)
            {
                return(new Peak2D[0]);
            }

            Peak1DArray spectrumPeaks = dataReader.ReadSpectrumPeaks(swathSpec.SpectrumID);

            Peak2D[] ms2Peaks = new Peak2D[query.CountMS2Masses];

            for (int i = 0; i < query.CountMS2Masses; i++)
            {
                RangeQuery           mzRange = query[i];
                IEnumerable <Peak1D> mzPeaks = BinarySearch.Search(spectrumPeaks.Peaks, mzRange, MzRangeCompare);
                Peak1D p = mzRangeSelector(mzPeaks, mzRange);
                ms2Peaks[i] = new Peak2D(p.Intensity, p.Mz, swathSpec.Rt);
            }

            return(ms2Peaks);
        }
Exemple #6
0
        private void SqlInsert(string runID, MassSpectrum spectrum, Peak1DArray peaks)
        {
            SQLiteCommand cmd;

            if (!currentScope.TryGetCommand("INSERT_SPECTRUM_CMD", out cmd))
            {
                cmd = currentScope.PrepareCommand("INSERT_SPECTRUM_CMD", "INSERT INTO Spectrum VALUES(@runID, @spectrumID, @description, @peakArray, @peakData);");
            }

            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@runID", runID);
            cmd.Parameters.AddWithValue("@spectrumID", spectrum.ID);
            cmd.Parameters.AddWithValue("@description", MzLiteJson.ToJson(spectrum));
            cmd.Parameters.AddWithValue("@peakArray", MzLiteJson.ToJson(peaks));
            cmd.Parameters.AddWithValue("@peakData", encoder.Encode(peaks));

            cmd.ExecuteNonQuery();
        }
Exemple #7
0
        public void WriteSpectrum(MassSpectrum ms, Peak1DArray peaks, int index)
        {
            try
            {
                if (ms == null)
                {
                    throw new ArgumentNullException("ms");
                }
                if (peaks == null)
                {
                    throw new ArgumentNullException("peaks");
                }
                if (index < 0)
                {
                    throw new ArgumentOutOfRangeException("idx");
                }

                EnsureWriteState(MzMLWriteState.SPECTRUM_LIST);

                writer.WriteStartElement("spectrum");

                WriteXmlAttribute("id", ms.ID, true);
                WriteXmlAttribute("index", index.ToString(formatProvider), true);
                WriteXmlAttribute("dataProcessingRef", ms.DataProcessingReference, false);
                WriteXmlAttribute("sourceFileRef", ms.SourceFileReference, false);
                WriteXmlAttribute("defaultArrayLength", peaks.Peaks.Length.ToString(formatProvider), true);

                WriteParamGroup(ms);

                WriteList("scanList", ms.Scans, WriteScan);
                WriteList("precursorList", ms.Precursors, WritePrecursor);
                WriteList("productList", ms.Products, WriteProduct);

                WriteBinaryDataArrayList(peaks);

                writer.WriteEndElement();
            }
            catch (Exception ex)
            {
                currentWriteState = MzMLWriteState.ERROR;
                throw new MzLiteIOException("Error writing mzml output file.", ex);
            }
        }
Exemple #8
0
        private Binary.Peak1DArray ReadSpectrumPeaks(int scanNo)
        {
            RaiseDisposed();

            try
            {
                int    peakArraySize    = 0;
                double controidPeakWith = 0;
                object massList         = null;
                object peakFlags        = null;

                rawFile.GetMassListFromScanNum(
                    ref scanNo,
                    null, 1, 0, 0, 0,
                    ref controidPeakWith,
                    ref massList,
                    ref peakFlags,
                    ref peakArraySize);

                double[,] peakData = massList as double[, ];

                Peak1DArray pa = new Peak1DArray(
                    BinaryDataCompressionType.NoCompression,
                    BinaryDataType.Float32,
                    BinaryDataType.Float32);

                //Peak1D[] peaks = new Peak1D[peakArraySize];

                //for (int i = 0; i < peakArraySize; i++)
                //    peaks[i] = new Peak1D(peakData[1, i], peakData[0, i]);

                //pa.Peaks = MzLiteArray.ToMzLiteArray(peaks);

                pa.Peaks = new ThermoPeaksArray(peakData, peakArraySize);

                return(pa);
            }
            catch (Exception ex)
            {
                throw new MzLiteIOException(ex.Message, ex);
            }
        }
Exemple #9
0
        public Peak1DArray ReadSpectrumPeaks(UInt64 spectrumId, bool getCentroids)
        {
            BafSqlSpectrum bafSpec = linq2BafSql.GetBafSqlSpectrum(this.linq2BafSql.Core, spectrumId);

            if (bafSpec == null)
            {
                throw new MzLiteIOException("No spectrum found for id: " + spectrumId);
            }

            Peak1DArray pa = new Peak1DArray(
                BinaryDataCompressionType.NoCompression,
                BinaryDataType.Float32,
                BinaryDataType.Float32);

            double[] masses;
            UInt32[] intensities;

            // if profile data available we prefer to get profile data otherwise centroided data (line spectra)
            if (getCentroids && bafSpec.LineMzId.HasValue && bafSpec.LineIntensityId.HasValue)
            {
                masses      = Baf2SqlWrapper.GetBafDoubleArray(baf2SqlHandle, bafSpec.LineMzId.Value);
                intensities = Baf2SqlWrapper.GetBafUInt32Array(baf2SqlHandle, bafSpec.LineIntensityId.Value);
            }
            else if (getCentroids == false && bafSpec.ProfileMzId.HasValue && bafSpec.ProfileIntensityId.HasValue)
            {
                masses      = Baf2SqlWrapper.GetBafDoubleArray(baf2SqlHandle, bafSpec.ProfileMzId.Value);
                intensities = Baf2SqlWrapper.GetBafUInt32Array(baf2SqlHandle, bafSpec.ProfileIntensityId.Value);
            }
            else
            {
                masses      = new double[0];
                intensities = new UInt32[0];
            }

            pa.Peaks = new BafPeaksArray(masses, intensities);

            return(pa);
        }
Exemple #10
0
 public Task InsertAsync(string runID, MassSpectrum spectrum, Peak1DArray peaks)
 {
     return(Task.Run(() => { Insert(runID, spectrum, peaks); }));
 }