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 "ismrmrd/waveform.h"
13 #include <hdf5.h>
14 
15 #ifdef __cplusplus
16 #include <string>
17 namespace ISMRMRD {
18 extern "C" {
19 #endif
20 
30 typedef struct ISMRMRD_Dataset {
31  char *filename;
32  char *groupname;
33  hid_t fileid;
35 
40 EXPORTISMRMRD int ismrmrd_init_dataset(ISMRMRD_Dataset *dset, const char *filename, const char *groupname);
41 
46 EXPORTISMRMRD int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool create_if_neded);
47 
52 EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset);
53 
60 EXPORTISMRMRD int ismrmrd_write_header(const ISMRMRD_Dataset *dset, const char *xmlstring);
61 
68 EXPORTISMRMRD char * ismrmrd_read_header(const ISMRMRD_Dataset *dset);
69 
75 EXPORTISMRMRD int ismrmrd_append_acquisition(const ISMRMRD_Dataset *dset, const ISMRMRD_Acquisition *acq);
76 
80 EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Acquisition *acq);
81 
85 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset);
86 
92 EXPORTISMRMRD int ismrmrd_append_waveform(const ISMRMRD_Dataset *dset, const ISMRMRD_Waveform *wav);
93 
97 EXPORTISMRMRD int ismrmrd_read_waveform(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Waveform* wav);
98 
102 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_waveforms(const ISMRMRD_Dataset *dset);
116 EXPORTISMRMRD int ismrmrd_append_image(const ISMRMRD_Dataset *dset, const char *varname,
117  const ISMRMRD_Image *im);
118 
123 EXPORTISMRMRD int ismrmrd_read_image(const ISMRMRD_Dataset *dset, const char *varname,
124  const uint32_t index, ISMRMRD_Image *im);
125 
129 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_images(const ISMRMRD_Dataset *dset, const char *varname);
130 
142 EXPORTISMRMRD int ismrmrd_append_array(const ISMRMRD_Dataset *dset, const char *varname,
143  const ISMRMRD_NDArray *arr);
144 
148 EXPORTISMRMRD int ismrmrd_read_array(const ISMRMRD_Dataset *dataset, const char *varname,
149  const uint32_t index, ISMRMRD_NDArray *arr);
150 
154 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_arrays(const ISMRMRD_Dataset *dset, const char *varname);
155 
156 
157 #ifdef __cplusplus
158 } /* extern "C" */
159 
160 // ISMRMRD Dataset C++ Interface
161 class EXPORTISMRMRD Dataset {
162 public:
163  // Constructor and destructor
164  Dataset(const char* filename, const char* groupname, bool create_file_if_needed = true);
165  ~Dataset();
166 
167  // Methods
168  // XML Header
169  void writeHeader(const std::string &xmlstring);
170  void readHeader(std::string& xmlstring);
171  // Acquisitions
172  void appendAcquisition(const Acquisition &acq);
173  void readAcquisition(uint32_t index, Acquisition &acq);
174  uint32_t getNumberOfAcquisitions();
175  // Images
176  template <typename T> void appendImage(const std::string &var, const Image<T> &im);
177  void appendImage(const std::string &var, const ISMRMRD_Image *im);
178  template <typename T> void readImage(const std::string &var, uint32_t index, Image<T> &im);
179  uint32_t getNumberOfImages(const std::string &var);
180  // NDArrays
181  template <typename T> void appendNDArray(const std::string &var, const NDArray<T> &arr);
182  void appendNDArray(const std::string &var, const ISMRMRD_NDArray *arr);
183  template <typename T> void readNDArray(const std::string &var, uint32_t index, NDArray<T> &arr);
184  uint32_t getNumberOfNDArrays(const std::string &var);
185 
186  //Waveforms
187  void appendWaveform(const Waveform &wav);
188  void readWaveform(uint32_t index, Waveform & wav);
189  uint32_t getNumberOfWaveforms();
190 protected:
191  ISMRMRD_Dataset dset_;
192 };
193 
194 } /* ISMRMRD namespace */
195 #endif
196 
197 #endif /* ISMRMRD_DATASET_H */
ISMRMRD::ismrmrd_read_header
EXPORTISMRMRD char * ismrmrd_read_header(const ISMRMRD_Dataset *dset)
Definition: dataset.c:1088
ISMRMRD::Dataset
Definition: dataset.h:161
ISMRMRD::Image
MR Image type.
Definition: ismrmrd.h:636
ISMRMRD::ismrmrd_append_waveform
EXPORTISMRMRD int ismrmrd_append_waveform(const ISMRMRD_Dataset *dset, const ISMRMRD_Waveform *wav)
Definition: dataset.c:1409
ISMRMRD::ismrmrd_append_image
EXPORTISMRMRD int ismrmrd_append_image(const ISMRMRD_Dataset *dset, const char *varname, const ISMRMRD_Image *im)
Definition: dataset.c:1241
ISMRMRD::ismrmrd_read_waveform
EXPORTISMRMRD int ismrmrd_read_waveform(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Waveform *wav)
Definition: dataset.c:1451
ISMRMRD::ismrmrd_get_number_of_arrays
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_arrays(const ISMRMRD_Dataset *dset, const char *varname)
Definition: dataset.c:1552
ISMRMRD::ISMRMRD_Waveform
Definition: waveform.h:39
ISMRMRD::ismrmrd_get_number_of_acquisitions
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset)
Definition: dataset.c:1142
ismrmrd.h
ISMRMRD::ismrmrd_read_array
EXPORTISMRMRD int ismrmrd_read_array(const ISMRMRD_Dataset *dataset, const char *varname, const uint32_t index, ISMRMRD_NDArray *arr)
Definition: dataset.c:1573
ISMRMRD::ISMRMRD_Dataset
struct ISMRMRD::ISMRMRD_Dataset ISMRMRD_Dataset
ISMRMRD::ismrmrd_write_header
EXPORTISMRMRD int ismrmrd_write_header(const ISMRMRD_Dataset *dset, const char *xmlstring)
Definition: dataset.c:1025
ISMRMRD::Acquisition
MR Acquisition type.
Definition: ismrmrd.h:502
ISMRMRD::ismrmrd_get_number_of_images
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_images(const ISMRMRD_Dataset *dset, const char *varname)
Definition: dataset.c:1308
ISMRMRD::ismrmrd_read_image
EXPORTISMRMRD int ismrmrd_read_image(const ISMRMRD_Dataset *dset, const char *varname, const uint32_t index, ISMRMRD_Image *im)
Definition: dataset.c:1333
ISMRMRD::ismrmrd_close_dataset
EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset)
Definition: dataset.c:994
ISMRMRD::ismrmrd_init_dataset
EXPORTISMRMRD int ismrmrd_init_dataset(ISMRMRD_Dataset *dset, const char *filename, const char *groupname)
Definition: dataset.c:920
ISMRMRD::NDArray
N-Dimensional array type.
Definition: ismrmrd.h:798
ISMRMRD::ismrmrd_get_number_of_waveforms
EXPORTISMRMRD uint32_t ismrmrd_get_number_of_waveforms(const ISMRMRD_Dataset *dset)
Definition: dataset.c:1489
ISMRMRD::ismrmrd_append_acquisition
EXPORTISMRMRD int ismrmrd_append_acquisition(const ISMRMRD_Dataset *dset, const ISMRMRD_Acquisition *acq)
Definition: dataset.c:1157
ISMRMRD::ismrmrd_append_array
EXPORTISMRMRD int ismrmrd_append_array(const ISMRMRD_Dataset *dset, const char *varname, const ISMRMRD_NDArray *arr)
Definition: dataset.c:1504
ISMRMRD::ISMRMRD_NDArray
Definition: ismrmrd.h:349
ISMRMRD::ISMRMRD_Image
Definition: ismrmrd.h:322
ISMRMRD::ismrmrd_open_dataset
EXPORTISMRMRD int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool create_if_neded)
Definition: dataset.c:946
ISMRMRD::ismrmrd_read_acquisition
EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Acquisition *acq)
Definition: dataset.c:1201
ISMRMRD::Waveform
Definition: waveform.h:65
ISMRMRD::ISMRMRD_Acquisition
Definition: ismrmrd.h:260
ISMRMRD
Definition: dataset.h:17
ISMRMRD::ISMRMRD_Dataset
Definition: dataset.h:30