diff --git a/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoaderSaverCatalog.cs b/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoaderSaverCatalog.cs new file mode 100644 index 0000000000..d697112719 --- /dev/null +++ b/src/Microsoft.ML.Data/DataLoadSave/Binary/BinaryLoaderSaverCatalog.cs @@ -0,0 +1,65 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using Microsoft.ML.Runtime; +using Microsoft.ML.Runtime.Data; +using Microsoft.ML.Runtime.Data.IO; + +namespace Microsoft.ML +{ + public static class BinaryLoaderSaverCatalog + { + /// + /// Read a data view from a Stream on a binary file using . + /// + /// The catalog. + /// The stream to read from. + public static IDataView ReadFromBinary(this DataOperations catalog, Stream stream) + { + Contracts.CheckValue(stream, nameof(stream)); + + var env = catalog.GetEnvironment(); + + var reader = new BinaryLoader(env, new BinaryLoader.Arguments(), stream); + return reader; + } + + /// + /// Read a data view from a binary file using . + /// + /// The catalog. + /// The path to the file to read from. + public static IDataView ReadFromBinary(this DataOperations catalog, string path) + { + Contracts.CheckNonEmpty(path, nameof(path)); + + var env = catalog.GetEnvironment(); + + var reader = new BinaryLoader(env, new BinaryLoader.Arguments(), path); + return reader; + } + + /// + /// Save the data view into a binary stream. + /// + /// The catalog. + /// The data view to save. + /// The stream to write to. + /// Whether to keep hidden columns in the dataset. + public static void SaveAsBinary(this DataOperations catalog, IDataView data, Stream stream, + bool keepHidden = false) + { + Contracts.CheckValue(catalog, nameof(catalog)); + Contracts.CheckValue(data, nameof(data)); + Contracts.CheckValue(stream, nameof(stream)); + + var env = catalog.GetEnvironment(); + var saver = new BinarySaver(env, new BinarySaver.Arguments()); + + using (var ch = env.Start("Saving data")) + DataSaverUtils.SaveDataView(ch, saver, data, stream, keepHidden); + } + } +}