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 
13 #ifdef __cplusplus
14 #include <string>
15 namespace ISMRMRD {
16 extern "C" {
17 #endif
18 
28 typedef struct ISMRMRD_Dataset {
29  char *filename;
30  char *groupname;
31  int fileid;
33 
38 EXPORTISMRMRD int ismrmrd_init_dataset(ISMRMRD_Dataset *dset, const char *filename, const char *groupname);
39 
44 EXPORTISMRMRD int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool create_if_neded);
45 
50 EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset);
51 
58 EXPORTISMRMRD int ismrmrd_write_header(const ISMRMRD_Dataset *dset, const char *xmlstring);
59 
66 EXPORTISMRMRD char * ismrmrd_read_header(const ISMRMRD_Dataset *dset);
67 
73 EXPORTISMRMRD int ismrmrd_append_acquisition(const ISMRMRD_Dataset *dset, const ISMRMRD_Acquisition *acq);
74 
78 EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Acquisition *acq);
79 
83 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset);
84 
98 EXPORTISMRMRD int ismrmrd_append_image(const ISMRMRD_Dataset *dset, const char *varname,
99  const ISMRMRD_Image *im);
100 
105 EXPORTISMRMRD int ismrmrd_read_image(const ISMRMRD_Dataset *dset, const char *varname,
106  const uint32_t index, ISMRMRD_Image *im);
107 
111 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_images(const ISMRMRD_Dataset *dset, const char *varname);
112 
124 EXPORTISMRMRD int ismrmrd_append_array(const ISMRMRD_Dataset *dset, const char *varname,
125  const ISMRMRD_NDArray *arr);
126 
130 EXPORTISMRMRD int ismrmrd_read_array(const ISMRMRD_Dataset *dataset, const char *varname,
131  const uint32_t index, ISMRMRD_NDArray *arr);
132 
136 EXPORTISMRMRD uint32_t ismrmrd_get_number_of_arrays(const ISMRMRD_Dataset *dset, const char *varname);
137 
138 
139 #ifdef __cplusplus
140 } /* extern "C" */
141 
142 // ISMRMRD Dataset C++ Interface
143 class EXPORTISMRMRD Dataset {
144 public:
145  // Constructor and destructor
146  Dataset(const char* filename, const char* groupname, bool create_file_if_needed = true);
147  ~Dataset();
148 
149  // Methods
150  // XML Header
151  void writeHeader(const std::string &xmlstring);
152  void readHeader(std::string& xmlstring);
153  // Acquisitions
154  void appendAcquisition(const Acquisition &acq);
155  void readAcquisition(uint32_t index, Acquisition &acq);
156  uint32_t getNumberOfAcquisitions();
157  // Images
158  template <typename T> void appendImage(const std::string &var, const Image<T> &im);
159  void appendImage(const std::string &var, const ISMRMRD_Image *im);
160  template <typename T> void readImage(const std::string &var, uint32_t index, Image<T> &im);
161  uint32_t getNumberOfImages(const std::string &var);
162  // NDArrays
163  template <typename T> void appendNDArray(const std::string &var, const NDArray<T> &arr);
164  void appendNDArray(const std::string &var, const ISMRMRD_NDArray *arr);
165  template <typename T> void readNDArray(const std::string &var, uint32_t index, NDArray<T> &arr);
166  uint32_t getNumberOfNDArrays(const std::string &var);
167 
168 protected:
169  ISMRMRD_Dataset dset_;
170 };
171 
172 } /* ISMRMRD namespace */
173 #endif
174 
175 #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:490
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:28
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:786
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:143
Definition: ismrmrd.h:255
Definition: dataset.h:15
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:344
MR Image type.
Definition: ismrmrd.h:624
EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset)
Definition: dataset.c:926
Definition: ismrmrd.h:317
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