
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
HDF5-CSharp
Advanced tools
HDF5-CSharp helps in reading and writing hdf5 files for .net environments
In the example below an object is created with some arrays and other variables The object is written to a file and than read back in a new object.
private class TestClassWithArray
{
public double[] TestDoubles { get; set; }
public string[] TestStrings { get; set; }
public int TestInteger { get; set; }
public double TestDouble { get; set; }
public bool TestBoolean { get; set; }
public string TestString { get; set; }
}
var testClass = new TestClassWithArray() {
TestInteger = 2,
TestDouble = 1.1,
TestBoolean = true,
TestString = "test string",
TestDoubles = new double[] { 1.1, 1.2, -1.1, -1.2 },
TestStrings = new string[] { "one", "two", "three", "four" }
};
int fileId = Hdf5.CreateFile("testFile.H5");
Hdf5.WriteObject(fileId, testClass, "testObject");
TestClassWithArray readObject = new TestClassWithArray();
readObject = Hdf5.ReadObject(fileId, readObject, "testObject");
Hdf5.CloseFile(fileId);
/// <summary>
/// create a matrix and fill it with numbers
/// </summary>
/// <param name="offset"></param>
/// <returns>the matrix </returns>
private static double[,]createDataset(int offset = 0)
{
var dset = new double[10, 5];
for (var i = 0; i < 10; i++)
for (var j = 0; j < 5; j++)
{
double x = i + j * 5 + offset;
dset[i, j] = (j == 0) ? x : x / 10;
}
return dset;
}
// create a list of matrices
dsets = new List<double[,]> {
createDataset(),
createDataset(10),
createDataset(20) };
string filename = Path.Combine(folder, "testChunks.H5");
int fileId = Hdf5.CreateFile(filename);
// create a dataset and append two more datasets to it
using (var chunkedDset = new ChunkedDataset<double>("/test", fileId, dsets.First()))
{
foreach (var ds in dsets.Skip(1))
chunkedDset.AppendDataset(ds);
}
// read rows 9 to 22 of the dataset
ulong begIndex = 8;
ulong endIndex = 21;
var dset = Hdf5.ReadDataset<double>(fileId, "/test", begIndex, endIndex);
Hdf5.CloseFile(fileId);
for more example see unit test project
you can use the following two method to read the structure of an existing file:
string fileName = @"FileStructure.h5";
var tree =Hdf5.ReadTreeFileStructure(fileName);
var flat = Hdf5.ReadFlatFileStructure(fileName);
[AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
public sealed class Hdf5EntryNameAttribute : Attribute
{
public string Name { get; }
public Hdf5EntryNameAttribute(string name)
{
Name = name;
}
}
example:
private class TestClass : IEquatable<TestClass>
{
public int TestInteger { get; set; }
public double TestDouble { get; set; }
public bool TestBoolean { get; set; }
public string TestString { get; set; }
[Hdf5EntryNameAttribute("Test_time")]
public DateTime TestTime { get; set; }
}
public class Settings
{
public DateTimeType DateTimeType { get; set; }
public bool LowerCaseNaming { get; set; }
}
public enum DateTimeType
{
Ticks,
UnixTimeSeconds,
UnixTimeMilliseconds
}
usage:
[ClassInitialize()]
public static void ClassInitialize(TestContext context)
{
Hdf5.Hdf5Settings.LowerCaseNaming = true;
Hdf5.Hdf5Settings.DateTimeType = DateTimeType.UnixTimeMilliseconds;
}
public static class Hdf5Utils
{
public static Action<string> LogError;
public static Action<string> LogInfo;
public static Action<string> LogDebug;
public static Action<string> LogCritical;
}
in order to log errors use this code snippet:
Hdf5.Hdf5Settings.EnableErrorReporting(true);
Hdf5Utils.LogWarning = (string s) => {...}
Hdf5Utils.LogCritical = (string s) => {...}
Hdf5Utils.LogError = (string s) => {...}
FAQs
C# Wrapper for HDF.PInvoke Library
We found that hdf5-csharp demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.