ISMRMRD
ISMRM Raw Data Format
dataset.h
Go to the documentation of this file.
1 /* ISMRMRD Data Set */
2 
7 #pragma once
8 #ifndef ISMRMRD_DATASET_H
9 #define ISMRMRD_DATASET_H
10 
11 #include "ismrmrd/ismrmrd.h"
12 #include <hdf5.h>
13 
14 #ifdef __cplusplus
15 #include <string>
16 namespace ISMRMRD {
17 extern "C" {
18 #endif
19 
29 typedef struct ISMRMRD_Dataset {
30  char *filename;
31  char *groupname;
32  hid_t fileid;
34 
39 EXPORTISMRMRD int ismrmrd_init_dataset(ISMRMRD_Dataset *dset, const char *filename, const char *groupname);
40 
45 EXPORTISMRMRD int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool create_if_neded);
46 
51 EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset);
52 
59 EXPORTISMRMRD int ismrmrd_write_header(const ISMRMRD_Dataset *dset, const char *xmlstring);
60 
67 EXPORTISMRMRD char * ismrmrd_read_header(const ISMRMRD_Dataset *dset);
68 
74 EXPORTISMRMRD int ismrmrd_append_acquisition(const ISMRMRD_Dataset *dset, const ISMRMRD_Acquisition *acq);
75 
79 EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Acquisition *acq);
80 
84 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset);
85 
99 EXPORTISMRMRD int ismrmrd_append_image(const ISMRMRD_Dataset *dset, const char *varname,
100  const ISMRMRD_Image *im);
101 
106 EXPORTISMRMRD int ismrmrd_read_image(const ISMRMRD_Dataset *dset, const char *varname,
107  const uint32_t index, ISMRMRD_Image *im);
108 
112 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_images(const ISMRMRD_Dataset *dset, const char *varname);
113 
125 EXPORTISMRMRD int ismrmrd_append_array(const ISMRMRD_Dataset *dset, const char *varname,
126  const ISMRMRD_NDArray *arr);
127 
131 EXPORTISMRMRD int ismrmrd_read_array(const ISMRMRD_Dataset *dataset, const char *varname,
132  const uint32_t index, ISMRMRD_NDArray *arr);
133 
137 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_arrays(const ISMRMRD_Dataset *dset, const char *varname);
138 
139 
140 #ifdef __cplusplus
141 } /* extern "C" */
142 
143 // ISMRMRD Dataset C++ Interface
144 class EXPORTISMRMRD Dataset {
145 public:
146  // Constructor and destructor
147  Dataset(const char* filename, const char* groupname, bool create_file_if_needed = true);
148  ~Dataset();
149 
150  // Methods
151  // XML Header
152  void writeHeader(const std::string &xmlstring);
153  void readHeader(std::string& xmlstring);
154  // Acquisitions
155  void appendAcquisition(const Acquisition &acq);
156  void readAcquisition(uint32_t index, Acquisition &acq);
157  uint32_t getNumberOfAcquisitions();
158  // Images
159  template <typename T> void appendImage(const std::string &var, const Image<T> &im);
160  void appendImage(const std::string &var, const ISMRMRD_Image *im);
161  template <typename T> void readImage(const std::string &var, uint32_t index, Image<T> &im);
162  uint32_t getNumberOfImages(const std::string &var);
163  // NDArrays
164  template <typename T> void appendNDArray(const std::string &var, const NDArray<T> &arr);
165  void appendNDArray(const std::string &var, const ISMRMRD_NDArray *arr);
166  template <typename T> void readNDArray(const std::string &var, uint32_t index, NDArray<T> &arr);
167  uint32_t getNumberOfNDArrays(const std::string &var);
168 
169 protected:
170  ISMRMRD_Dataset dset_;
171 };
172 
173 } /* ISMRMRD namespace */
174 #endif
175 
176 #endif /* ISMRMRD_DATASET_H */
EXPORTISMRMRD int ismrmrd_init_dataset(ISMRMRD_Dataset *dset, const char *filename, const char *groupname)
Definition: dataset.c:852
MR Acquisition type.
Definition: ismrmrd.h:494
EXPORTISMRMRD int ismrmrd_write_header(const ISMRMRD_Dataset *dset, const char *xmlstring)
Definition: dataset.c:957
EXPORTISMRMRD int ismrmrd_append_image(const ISMRMRD_Dataset *dset, const char *varname, const ISMRMRD_Image *im)
Definition: dataset.c:1173
EXPORTISMRMRD int ismrmrd_append_acquisition(const ISMRMRD_Dataset *dset, const ISMRMRD_Acquisition *acq)
Definition: dataset.c:1089
Definition: dataset.h:29
EXPORTISMRMRD int ismrmrd_append_array(const ISMRMRD_Dataset *dset, const char *varname, const ISMRMRD_NDArray *arr)
Definition: dataset.c:1340
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset)
Definition: dataset.c:1074
EXPORTISMRMRD char * ismrmrd_read_header(const ISMRMRD_Dataset *dset)
Definition: dataset.c:1020
EXPORTISMRMRD int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool create_if_neded)
Definition: dataset.c:878
N-Dimensional array type.
Definition: ismrmrd.h:790
EXPORTISMRMRD int ismrmrd_read_image(const ISMRMRD_Dataset *dset, const char *varname, const uint32_t index, ISMRMRD_Image *im)
Definition: dataset.c:1265
Definition: dataset.h:144
Definition: ismrmrd.h:259
Definition: dataset.h:16
EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Acquisition *acq)
Definition: dataset.c:1133
struct ISMRMRD::ISMRMRD_Dataset ISMRMRD_Dataset
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_arrays(const ISMRMRD_Dataset *dset, const char *varname)
Definition: dataset.c:1388
Definition: ismrmrd.h:348
MR Image type.
Definition: ismrmrd.h:628
EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset)
Definition: dataset.c:926
Definition: ismrmrd.h:321
EXPORTISMRMRD int ismrmrd_read_array(const ISMRMRD_Dataset *dataset, const char *varname, const uint32_t index, ISMRMRD_NDArray *arr)
Definition: dataset.c:1409
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_images(const ISMRMRD_Dataset *dset, const char *varname)
Definition: dataset.c:1240