wip: write msgPacked grid

This commit is contained in:
2025-05-04 16:11:14 +02:00
parent 263e8b0d7c
commit 59d3287738
7 changed files with 74 additions and 33 deletions

View File

@@ -9,6 +9,7 @@
<PackageVersion Include="Oceanbox.FvcomKit" Version="5.12.1" />
<PackageVersion Include="SDSLite-O" Version="2.7.2" />
<PackageVersion Include="Serilog" Version="4.2.0" />
<PackageVersion Include="MessagePack" Version="3.1.3"/>
<!-- CLI -->
<PackageVersion Include="Argu" Version="6.2.5" />
<PackageVersion Include="FsToolKit.ErrorHandling" Version="4.18.0" />

View File

@@ -203,16 +203,6 @@
"MathNet.Numerics": "5.0.0"
}
},
"MessagePack": {
"type": "Transitive",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"Microsoft.NET.StringTools": "17.11.4"
}
},
"MessagePack.Annotations": {
"type": "Transitive",
"resolved": "3.1.3",
@@ -409,6 +399,7 @@
"type": "Project",
"dependencies": {
"Fli": "[1.111.10, )",
"MessagePack": "[3.1.3, )",
"Oceanbox.FvcomKit": "[5.12.1, )",
"SDSLite-O": "[2.7.2, )",
"Serilog": "[4.2.0, )"
@@ -422,6 +413,17 @@
"dependencies": {
"FSharp.Core": "6.0.7"
}
},
"MessagePack": {
"type": "CentralTransitive",
"requested": "[3.1.3, )",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"Microsoft.NET.StringTools": "17.11.4"
}
}
}
}

View File

@@ -340,7 +340,7 @@ let main argv =
extendedGrid
useZfp
ds'
path
pathPrefix
Log.Verbose $"Wrote reduced grid to {path}"
| _ ->
Log.Warning

View File

@@ -221,16 +221,6 @@
"MathNet.Numerics": "5.0.0"
}
},
"MessagePack": {
"type": "Transitive",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"Microsoft.NET.StringTools": "17.11.4"
}
},
"MessagePack.Annotations": {
"type": "Transitive",
"resolved": "3.1.3",
@@ -435,10 +425,22 @@
"type": "Project",
"dependencies": {
"Fli": "[1.111.10, )",
"MessagePack": "[3.1.3, )",
"Oceanbox.FvcomKit": "[5.12.1, )",
"SDSLite-O": "[2.7.2, )",
"Serilog": "[4.2.0, )"
}
},
"MessagePack": {
"type": "CentralTransitive",
"requested": "[3.1.3, )",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"Microsoft.NET.StringTools": "17.11.4"
}
}
}
}

View File

@@ -4,6 +4,7 @@ open Gridding.Compress
open Oceanbox.FvcomKit
open Microsoft.Research.Science.Data
open Serilog
open MessagePack
let private bimap f (a, b) = f a, f b
@@ -451,6 +452,37 @@ let private writeElements
output.Commit()
output
[<MessagePackObject>]
type BinGrid = {
[<Key(0)>]
hash: byte array
[<Key(1)>]
vertices: (float * float) array
[<Key(2)>]
cells: (int * int * int) array
}
let _writeBinGrid (reducedGeometry: Reduce.ReducedGrid) (filename: string) =
Log.Verbose "MessagePacking grid geometry..."
try
let bg: BinGrid = {
hash = [||]
vertices = reducedGeometry.Nodes
cells = reducedGeometry.Elements
}
Log.Debug "Serializing..."
// FIXME: This crashes because of the openssl version, for some reason...
let bytes = MessagePackSerializer.Serialize(bg)
Log.Debug "Hashing object..."
let sha1 = System.Security.Cryptography.SHA1.Create()
let hash = sha1.ComputeHash(bytes)
let bg' = { bg with hash = hash }
let bytes' = MessagePackSerializer.Serialize(bg')
System.IO.File.WriteAllBytes(filename, bytes')
Log.Verbose $"Successfully wrote BinGrid to {filename}"
with e ->
Log.Error $"{e.Message}"
/// <summary>
/// Write a new grid based on an original grid using only data from the
/// nodes given by a reduced grid geometry
@@ -475,11 +507,11 @@ let writeReducedGrid
// NOTE: We create and close the file immediately in order to open it again
// with deflation turned off, for good read performance
let newFile = new NetCDF4.NetCDFDataSet(filename)
let newFile = new NetCDF4.NetCDFDataSet($"{filename}.nc")
newFile.Commit()
let uri = NetCDF4.NetCDFUri()
uri.FileName <- filename
uri.FileName <- $"{filename}.nc"
uri.OpenMode <- ResourceOpenMode.Open
uri.Deflate <- NetCDF4.DeflateLevel.Off
let file =
@@ -504,4 +536,6 @@ let writeReducedGrid
if useZfp then
writeSpeedsLossy reducedGeometry extendedGrid nodesToIndices grid input
// writeBinGrid reducedGeometry $"{filename}.bin"
file.Dispose()

View File

@@ -20,6 +20,7 @@
<PackageReference Include="SDSLite-O" />
<PackageReference Include="Serilog" />
<PackageReference Include="Fli" />
<PackageReference Include="MessagePack" />
</ItemGroup>
<ItemGroup>
<Content Include="lib\zfp_comp.so">

View File

@@ -29,6 +29,17 @@
"resolved": "0.14.0",
"contentHash": "bklebzRcXu7TBq3YdEc/H9WpMwIvIu4doA1QMAZTKvbHgKm/GH0wNW/A77JQ317mVUQ4tdgVXN1TrIc2Tpi8+g=="
},
"MessagePack": {
"type": "Direct",
"requested": "[3.1.3, )",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"Microsoft.NET.StringTools": "17.11.4"
}
},
"Oceanbox.FvcomKit": {
"type": "Direct",
"requested": "[5.12.1, )",
@@ -202,16 +213,6 @@
"MathNet.Numerics": "5.0.0"
}
},
"MessagePack": {
"type": "Transitive",
"resolved": "3.1.3",
"contentHash": "UiNv3fknvPzh5W+S0VV96R17RBZQQU71qgmsMnjjRZU2rtQM/XcTnOB+klT2dA6T1mxjnNKYrEm164AoXvGmYg==",
"dependencies": {
"MessagePack.Annotations": "3.1.3",
"MessagePackAnalyzer": "3.1.3",
"Microsoft.NET.StringTools": "17.11.4"
}
},
"MessagePack.Annotations": {
"type": "Transitive",
"resolved": "3.1.3",