diff --git a/src/assembly/Comprehensive/MsImaging/Metadata.vb b/src/assembly/Comprehensive/MsImaging/Metadata.vb index 7de404a5b7..788af8f9de 100644 --- a/src/assembly/Comprehensive/MsImaging/Metadata.vb +++ b/src/assembly/Comprehensive/MsImaging/Metadata.vb @@ -45,13 +45,18 @@ Namespace MsImaging Public Function GetMetadata() As Dictionary(Of String, String) - Return New Dictionary(Of String, String) From { + Dim datalist As New Dictionary(Of String, String) From { {"width", scan_x}, {"height", scan_y}, - {"resolution", resolution}, - {"mzmin", mass_range.Min}, - {"mzmax", mass_range.Max} + {"resolution", resolution} } + + If Not mass_range Is Nothing Then + datalist!mzmin = mass_range.Min + datalist!mzmax = mass_range.Max + End If + + Return datalist End Function End Class diff --git a/src/assembly/Comprehensive/MsImaging/MsImagingRaw.vb b/src/assembly/Comprehensive/MsImaging/MsImagingRaw.vb index f58309de54..f1fac213b4 100644 --- a/src/assembly/Comprehensive/MsImaging/MsImagingRaw.vb +++ b/src/assembly/Comprehensive/MsImaging/MsImagingRaw.vb @@ -59,6 +59,7 @@ Imports BioNovoGene.Analytical.MassSpectrometry.Assembly.mzData.mzWebCache Imports BioNovoGene.Analytical.MassSpectrometry.Math.Spectra Imports Microsoft.VisualBasic.CommandLine.InteropService.Pipeline Imports Microsoft.VisualBasic.ComponentModel.Ranges.Model +Imports Microsoft.VisualBasic.DataStorage.netCDF.Components Imports Microsoft.VisualBasic.Imaging.Math2D Imports Microsoft.VisualBasic.Language Imports Microsoft.VisualBasic.Linq @@ -131,6 +132,9 @@ Namespace MsImaging Dim pixels As New List(Of ScanMS1) Dim cutoff As New RelativeIntensityCutoff(intocutoff) Dim metadata As New Metadata + Dim mzmin As New List(Of Double) + Dim mzmax As New List(Of Double) + Dim mzvals As Double() If progress Is Nothing Then progress = Sub(msg) @@ -141,12 +145,19 @@ Namespace MsImaging ' each row is a small sample in current sample batch For Each row As mzPack In src pixels += row.MeasureRow(yscale, correction, cutoff, sumNorm, labelPrefix, progress) + mzvals = row.MS.Select(Function(a) a.mz).IteratesALL.ToArray + + If mzvals.Length > 0 Then + mzmin.Add(mzvals.Min) + mzmax.Add(mzvals.Max) + End If Next Dim polygon As New Polygon2D(pixels.Select(Function(scan) scan.GetMSIPixel)) metadata.scan_x = polygon.xpoints.Max metadata.scan_y = polygon.ypoints.Max + metadata.mass_range = New DoubleRange(mzmin.Min, mzmax.Max) Return New mzPack With { .MS = pixels.ToArray, diff --git a/src/mzkit b/src/mzkit index 4a5519161d..64e1b02017 160000 --- a/src/mzkit +++ b/src/mzkit @@ -1 +1 @@ -Subproject commit 4a5519161dcf3020308dc3315f7dfc3a61fa943e +Subproject commit 64e1b02017f23628eba99cb88e7dbab7fe23153f