Example #1
0
        private async void RecalculateSpectrum()
        {
            if (null == SpectrumSource)
            {
                return;
            }

            await Task.Delay(1);

            var bitmap = new WriteableBitmap(SpectrumSource.SliceCount, SpectrumSource.SamplesPerSlice, 96, 96, PixelFormats.Bgra32, null);

            byte[] data = new byte[SpectrumSource.SliceCount * SpectrumSource.SamplesPerSlice * 4];

            for (int xc = 0; xc < SpectrumSource.SliceCount; xc++)
            {
                for (int yc = 0; yc < SpectrumSource.SamplesPerSlice; yc++)
                {
                    var magNorm = (SpectrumSource.MagnitudeAt(xc, SpectrumSource.SamplesPerSlice - 1 - yc) -
                                   SpectrumSource.MinMagnitude) /
                                  (SpectrumSource.MaxMagnitude - SpectrumSource.MinMagnitude);

                    /*magNorm = Math.Log(magNorm,500)+1;
                     * magNorm = Math.Max(0, magNorm);*/

                    var col = GetColorForValue(magNorm);

                    data[(yc * SpectrumSource.SliceCount + xc) * 4]     = col.B; //b
                    data[(yc * SpectrumSource.SliceCount + xc) * 4 + 1] = col.G; //g
                    data[(yc * SpectrumSource.SliceCount + xc) * 4 + 2] = col.R;
                    data[(yc * SpectrumSource.SliceCount + xc) * 4 + 3] = col.A; //a
                }
            }

            bitmap.WritePixels(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight), data, bitmap.BackBufferStride, 0);

            Spectrum.Source = bitmap;
            Spectrum.InvalidateVisual();
        }
Example #2
0
        public static void AddSubsetPeakData (NHibernate.ISession session)
        {
            session.Transaction.Begin();
            session.Clear();
            foreach (SpectrumSource source in session.Query<SpectrumSource>())
            {
                var subsetPeakData = new msdata.MSData();
                subsetPeakData.id = subsetPeakData.run.id = source.Name;
                var spectrumList = new msdata.SpectrumListSimple();
                subsetPeakData.run.spectrumList = spectrumList;

                foreach (Spectrum spectrum in source.Spectra.OrderBy(o => o.Index))
                {
                    var spectrumData = new msdata.Spectrum();
                    spectrumData.id = spectrum.NativeID;
                    spectrumData.index = spectrum.Index;
                    spectrumData.setMZIntensityArrays(new List<double>() { 100, 200, 300, 400, 500 },
                                                      new List<double>() { 10, 20, 30, 40, 50 });
                    spectrumList.spectra.Add(spectrumData);
                }

                session.Evict(source);
                var newSource = new SpectrumSource(subsetPeakData)
                {
                    Id = source.Id,
                    Group = source.Group,
                    Name = source.Name,
                    URL = source.URL
                };
                session.Update(newSource);
            }
            session.Transaction.Commit();
        }
Example #3
0
        public void Add (SpectrumSource ss)
        {
            byte[] msdataBytes = null;
            if (ss.Metadata != null)
            {
                string tmpFilepath = Path.GetTempFileName() + ".mz5";
                msdata.MSDataFile.write(ss.Metadata, tmpFilepath,
                                        new msdata.MSDataFile.WriteConfig
                                        {
                                            format = MSDataFile.Format.Format_MZ5,
                                            compression = MSDataFile.Compression.Compression_Zlib
                                        });
                msdataBytes = File.ReadAllBytes(tmpFilepath);
                File.Delete(tmpFilepath);
            }

            insertRow(Table.SpectrumSource, new object[] {ss.Id, ss.Name, ss.URL, ss.Group.Id});
            insertRow(Table.SpectrumSourceMetadata, new object[] { ss.Id, msdataBytes });
        }