Package de.gsi.dataset.utils
Class DataSetSerialiser
- java.lang.Object
-
- de.gsi.dataset.utils.DataSetUtilsHelper
-
- de.gsi.dataset.utils.DataSetSerialiser
-
public class DataSetSerialiser extends DataSetUtilsHelper
Class to efficiently serialise and de-serialise DataSet objects into binary byte arrays. The performance can be tuned through:- using floats (ie. memory-IO vs network-IO bound serialisation), or
- via
setDataLablesSerialised(boolean)(default: false) to control whether data labels and styles shall be processed - via
setMetaDataSerialised(boolean)(default: true) to control whether meta data shall be processed
- Author:
- rstein
-
-
Field Summary
-
Fields inherited from class de.gsi.dataset.utils.DataSetUtilsHelper
BYTE_ARRAY_CACHE_LOCK, byteArrayCache, STRING_BUFFER_CACHE_LOCK, stringBuilderCache
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedDataSetSerialiser()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description protected static booleancheckFieldCompatibility(BinarySerialiser.FieldHeader fieldHeader, java.lang.String fieldName, DataType requireDataType)static booleanisDataLablesSerialised()static booleanisMetaDataSerialised()static DataSetreadDataSetFromByteArray(FastByteBuffer readBuffer)Read a Dataset from a byte array containing comma separated values.
The data format is a custom extension of csv with an additional #-commented Metadata Header and a $-commented column header.static voidsetDataLablesSerialised(boolean state)static voidsetMetaDataSerialised(boolean state)protected static voidswallowRest(FastByteBuffer readBuffer, BinarySerialiser.FieldHeader fieldHeader)protected static double[]toDoubles(float[] input)protected static float[]toFloats(double[] input)protected static voidwriteDataLabelsToStream(FastByteBuffer buffer, DataSet dataSet)static voidwriteDataSetToByteArray(DataSet dataSet, FastByteBuffer buffer, boolean asFloat)Write data set into byte buffer.protected static voidwriteHeaderDataToStream(FastByteBuffer buffer, DataSet dataSet)protected static voidwriteMetaDataToStream(FastByteBuffer buffer, DataSet dataSet)protected static voidwriteNumericBinaryDataToBuffer(FastByteBuffer buffer, DataSet dataSet, boolean asFloat)-
Methods inherited from class de.gsi.dataset.utils.DataSetUtilsHelper
getCachedDoubleArray, getCachedStringBuilder, integralSimple, mean, readDoubleArrayFromBuffer, release, release, rootMeanSquare, toDoubleArray, toFloatArray, writeDoubleArrayAsFloatToByteBuffer, writeDoubleArrayToByteBuffer
-
-
-
-
Method Detail
-
isMetaDataSerialised
public static boolean isMetaDataSerialised()
-
setMetaDataSerialised
public static void setMetaDataSerialised(boolean state)
-
isDataLablesSerialised
public static boolean isDataLablesSerialised()
-
setDataLablesSerialised
public static void setDataLablesSerialised(boolean state)
-
writeDataSetToByteArray
public static void writeDataSetToByteArray(DataSet dataSet, FastByteBuffer buffer, boolean asFloat)
Write data set into byte buffer.- Parameters:
dataSet- The DataSet to exportbuffer- byte output buffer (N.B. keep caching this object)asFloat-true: encode data as binary floats (smaller size, performance), orfalseas double (better precision)
-
writeHeaderDataToStream
protected static void writeHeaderDataToStream(FastByteBuffer buffer, DataSet dataSet)
-
writeMetaDataToStream
protected static void writeMetaDataToStream(FastByteBuffer buffer, DataSet dataSet)
-
writeDataLabelsToStream
protected static void writeDataLabelsToStream(FastByteBuffer buffer, DataSet dataSet)
-
writeNumericBinaryDataToBuffer
protected static void writeNumericBinaryDataToBuffer(FastByteBuffer buffer, DataSet dataSet, boolean asFloat)
- Parameters:
buffer- FastByteBuffer to write binary data intodataSet- to be exportedasFloat-trueuse 32-bit floats (less memory, faster transfer) instead of 64-bit doubles (DataSet default, higher precision)
-
checkFieldCompatibility
protected static boolean checkFieldCompatibility(BinarySerialiser.FieldHeader fieldHeader, java.lang.String fieldName, DataType requireDataType)
-
readDataSetFromByteArray
public static DataSet readDataSetFromByteArray(FastByteBuffer readBuffer)
Read a Dataset from a byte array containing comma separated values.
The data format is a custom extension of csv with an additional #-commented Metadata Header and a $-commented column header. Expects the following columns in this order to be present: index, x, y, eyn, eyp.- Parameters:
readBuffer- FastByteBuffer (encapsulates byte array).- Returns:
- DataSet with the data and metadata read from the file
-
swallowRest
protected static void swallowRest(FastByteBuffer readBuffer, BinarySerialiser.FieldHeader fieldHeader)
-
toFloats
protected static float[] toFloats(double[] input)
-
toDoubles
protected static double[] toDoubles(float[] input)
-
-