20#include <lal/LALInference.h>
21#include <lal/LALInferenceVCSInfo.h>
22#include <lal/H5FileIO.h>
23#include <lal/LALVCSInfoType.h>
24#include <lal/LALInferenceHDF5.h>
37 printf(
"File %s is size %jd bytes\n",
filename,(intmax_t) st.st_size);
47 if (st.st_size!=0)
return(1);
57 LALH5File *h5file,
const char *codename,
const char *runID)
78 char *column_names[Nvary];
79 size_t column_offsets[Nvary];
84 for (
size_t i = 0;
i < Nvary;
i ++)
88 column_names[
i] = malloc(column_name_len + 1);
90 column_names[
i], column_name_len + 1, dataset,
i);
110 "%s: Unknown type code column_type=%i\n", __func__, column_type);
126 for (
size_t i = 0;
i < Nsamples;
i++)
131 char pname[] =
"FIELD_NNN_VARY";
132 snprintf(pname,
sizeof(pname),
"FIELD_%d_VARY",
i);
140 for (
UINT4 i = 0;
i < Nsamples;
i++)
143 va[
i], column_names[
j],
144 data + type_size *
i + column_offsets[
j],
145 column_types[
j], vary[
j]);
148 for (
size_t i = 0;
i < Nvary;
i++)
149 free(column_names[
i]);
153 for (
size_t i = 0;
i < Nfixed;
i ++)
163 if (strcmp(pname,
"CLASS") == 0 ||
164 strcmp(pname,
"VERSION") == 0 ||
165 strcmp(pname,
"TITLE") == 0 ||
166 strncmp(pname,
"FIELD_", 6) == 0)
continue;
187 "%s: Unknown type code laltype=%i\n", __func__, laltype);
192 for (
UINT4 j = 0;
j < Nsamples;
j++)
207 const char *TableName)
217 const char *column_names[varsArray[0]->
dimension];
219 size_t type_size = 0;
220 size_t column_offsets[varsArray[0]->
dimension];
221 size_t column_sizes[varsArray[0]->
dimension];
223 char *fixed_names[varsArray[0]->
dimension];
229 varitem = varitem->next)
231 switch(varitem->vary)
239 switch (varitem->type)
255 "LALInferenceType %i for parameter %s not "
256 "implemented for HDF5, ignoring\n",
257 varitem->type, varitem->name);
260 vary[Nvary] = varitem->vary;
261 column_types[Nvary] = tp;
262 column_sizes[Nvary] =
sz;
263 column_offsets[Nvary] = type_size;
265 column_names[Nvary++] = varitem->name;
269 fixed_names[Nfixed++] = varitem->name;
285 data + type_size *
i + column_offsets[
j], var, column_sizes[
j]);
291 column_names, column_types, column_offsets, type_size);
294 dataset, column_offsets, column_sizes,
N, type_size,
data);
302 INT4 value = vary[
i];
303 char pname[] =
"FIELD_NNN_VARY";
304 snprintf(pname,
sizeof(pname),
"FIELD_%d_VARY",
i);
313 gdataset, varsArray[0], fixed_names[
i]);
337 "LALInferenceType %i for parameter %s not "
338 "implemented for HDF5 attribute, ignoring",
type,
name);
struct tagLALH5File LALH5File
struct tagLALH5Dataset LALH5Dataset
void(* lalAbortHook)(const char *,...)
int LALInferenceCheckNonEmptyFile(char *filename)
Returns 1 if a non-empty file exists, 0 otherwise.
int LALInferencePrintCheckpointFileInfo(char *filename)
Prints the size of the file.
int LALInferenceH5DatasetToVariablesArray(LALH5Dataset *dataset, LALInferenceVariables ***varsArray, UINT4 *N)
const char LALInferenceHDF5PosteriorSamplesDatasetName[]
int LALInferenceH5VariablesArrayToDataset(LALH5File *h5file, LALInferenceVariables *const *const varsArray, UINT4 N, const char *TableName)
LALH5File * LALInferenceH5CreateGroupStructure(LALH5File *h5file, const char *codename, const char *runID)
Create a HDF5 heirarchy in the given LALH5File reference /codename/runID/ Returns a LALH5File pointer...
static void LALInferenceH5VariableToAttribute(LALH5Generic gdataset, LALInferenceVariables *vars, char *name)
const char LALInferenceHDF5NestedSamplesDatasetName[]
const LALVCSInfoList lalInferenceVCSInfoList
NULL-terminated list of VCS and build information for LALInference and its dependencies
void XLALH5FileClose(LALH5File UNUSED *file)
LALTYPECODE XLALH5AttributeQueryScalarType(const LALH5Generic UNUSED object, const char UNUSED *key)
size_t XLALH5DatasetQueryNPoints(LALH5Dataset UNUSED *dset)
void XLALH5DatasetFree(LALH5Dataset UNUSED *dset)
int XLALH5AttributeQueryName(char UNUSED *name, size_t UNUSED size, const LALH5Generic UNUSED object, int UNUSED pos)
size_t XLALH5DatasetQueryNBytes(LALH5Dataset UNUSED *dset)
LALH5File * XLALH5GroupOpen(LALH5File UNUSED *file, const char UNUSED *name)
int XLALH5AttributeAddScalar(LALH5Generic UNUSED object, const char UNUSED *key, const void UNUSED *value, LALTYPECODE UNUSED dtype)
int XLALH5FileAddStringAttribute(LALH5File UNUSED *file, const char UNUSED *key, const char UNUSED *value)
int XLALH5AttributeQueryScalarValue(void UNUSED *value, const LALH5Generic UNUSED object, const char UNUSED *key)
int XLALH5DatasetQueryData(void UNUSED *data, LALH5Dataset UNUSED *dset)
size_t XLALH5AttributeQueryN(const LALH5Generic UNUSED object)
LALTYPECODE XLALH5TableQueryColumnType(const LALH5Dataset UNUSED *dset, int UNUSED pos)
size_t XLALH5TableQueryRowSize(const LALH5Dataset UNUSED *dset)
size_t XLALH5TableQueryNColumns(const LALH5Dataset UNUSED *dset)
int XLALH5TableQueryColumnName(char UNUSED *name, size_t UNUSED size, const LALH5Dataset UNUSED *dset, int UNUSED pos)
int XLALH5TableAppend(LALH5Dataset UNUSED *dset, const size_t UNUSED *offsets, const size_t UNUSED *colsz, size_t UNUSED nrows, size_t UNUSED rowsz, const void UNUSED *data)
size_t XLALH5TableQueryColumnOffset(const LALH5Dataset UNUSED *dset, int UNUSED pos)
LALH5Dataset * XLALH5TableAlloc(LALH5File UNUSED *file, const char UNUSED *name, size_t UNUSED ncols, const char UNUSED **cols, const LALTYPECODE UNUSED *types, const size_t UNUSED *offsets, size_t UNUSED rowsz)
LALInferenceVariableType LALInferenceGetVariableType(const LALInferenceVariables *vars, const char *name)
Get the LALInferenceVariableType of the parameter named name in vars.
void LALInferenceAddVariable(LALInferenceVariables *vars, const char *name, const void *value, LALInferenceVariableType type, LALInferenceParamVaryType vary)
Add a variable named name to vars with initial value referenced by value.
void * LALInferenceGetVariable(const LALInferenceVariables *vars, const char *name)
Return a pointer to the memory the variable vars is stored in specified by name User must cast this p...
LALInferenceVariableType
An enumerated type for denoting the type of a variable.
@ LALINFERENCE_PARAM_OUTPUT
A parameter that never changes, functions should respect this.
@ LALINFERENCE_PARAM_FIXED
A parameter that is cyclic, such as an angle between 0 and 2pi.
@ LALINFERENCE_PARAM_CIRCULAR
A parameter that simply has a maximum and a minimum.
@ LALINFERENCE_PARAM_LINEAR
@ LALINFERENCE_COMPLEX16_t
@ LALINFERENCE_COMPLEX8_t
void * XLALMalloc(size_t n)
void * XLALCalloc(size_t m, size_t n)
char * XLALVCSInfoString(const LALVCSInfoList vcs_list, const int verbose, const char *prefix)
#define XLAL_CHECK_ABORT(assertion)
int int XLALPrintWarning(const char *fmt,...) _LAL_GCC_PRINTF_FORMAT_(1
The LALInferenceVariableItem list node structure This should only be accessed using the accessor func...
The LALInferenceVariables structure to contain a set of parameters Implemented as a linked list of LA...