ISMRMRD
ISMRM Raw Data Format
Loading...
Searching...
No Matches
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>
17namespace ISMRMRD {
18extern "C" {
19#endif
20
30typedef struct ISMRMRD_Dataset {
31 char *filename;
32 char *groupname;
33 hid_t fileid;
34} ISMRMRD_Dataset;
35
40EXPORTISMRMRD int ismrmrd_init_dataset(ISMRMRD_Dataset *dset, const char *filename, const char *groupname);
41
46EXPORTISMRMRD int ismrmrd_open_dataset(ISMRMRD_Dataset *dset, const bool create_if_needed);
47
52EXPORTISMRMRD int ismrmrd_close_dataset(ISMRMRD_Dataset *dset);
53
60EXPORTISMRMRD int ismrmrd_write_header(const ISMRMRD_Dataset *dset, const char *xmlstring);
61
68EXPORTISMRMRD char * ismrmrd_read_header(const ISMRMRD_Dataset *dset);
69
75EXPORTISMRMRD int ismrmrd_append_acquisition(const ISMRMRD_Dataset *dset, const ISMRMRD_Acquisition *acq);
76
80EXPORTISMRMRD int ismrmrd_read_acquisition(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Acquisition *acq);
81
85EXPORTISMRMRD uint32_t ismrmrd_get_number_of_acquisitions(const ISMRMRD_Dataset *dset);
86
92EXPORTISMRMRD int ismrmrd_append_waveform(const ISMRMRD_Dataset *dset, const ISMRMRD_Waveform *wav);
93
97EXPORTISMRMRD int ismrmrd_read_waveform(const ISMRMRD_Dataset *dset, uint32_t index, ISMRMRD_Waveform* wav);
98
102EXPORTISMRMRD uint32_t ismrmrd_get_number_of_waveforms(const ISMRMRD_Dataset *dset);
116EXPORTISMRMRD int ismrmrd_append_image(const ISMRMRD_Dataset *dset, const char *varname,
117 const ISMRMRD_Image *im);
118
123EXPORTISMRMRD int ismrmrd_read_image(const ISMRMRD_Dataset *dset, const char *varname,
124 const uint32_t index, ISMRMRD_Image *im);
125
129EXPORTISMRMRD uint32_t ismrmrd_get_number_of_images(const ISMRMRD_Dataset *dset, const char *varname);
130
142EXPORTISMRMRD int ismrmrd_append_array(const ISMRMRD_Dataset *dset, const char *varname,
143 const ISMRMRD_NDArray *arr);
144
148EXPORTISMRMRD int ismrmrd_read_array(const ISMRMRD_Dataset *dataset, const char *varname,
149 const uint32_t index, ISMRMRD_NDArray *arr);
150
154EXPORTISMRMRD 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
161class EXPORTISMRMRD Dataset {
162public:
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();
190protected:
191 ISMRMRD_Dataset dset_;
192};
193
194} /* ISMRMRD namespace */
195#endif
196
197#endif /* ISMRMRD_DATASET_H */
MR Acquisition type.
Definition ismrmrd.h:504
Definition dataset.h:161
MR Image type.
Definition ismrmrd.h:638
N-Dimensional array type.
Definition ismrmrd.h:800
Definition dataset.h:30
Definition ismrmrd.h:324
Definition ismrmrd.h:351
Definition waveform.h:65