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(); }
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(); }
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 }); }