SIRF  3.4.0
cgadgetron.h
1 /*
2 SyneRBI Synergistic Image Reconstruction Framework (SIRF)
3 Copyright 2015 - 2021 Rutherford Appleton Laboratory STFC
4 Copyright 2020 - 2021 Physikalisch-Technische Bundesanstalt (PTB)
5 
6 This is software developed for the Collaborative Computational
7 Project in Synergistic Reconstruction for Biomedical Imaging (formerly CCP PETMR)
8 (http://www.ccpsynerbi.ac.uk/).
9 
10 Licensed under the Apache License, Version 2.0 (the "License");
11 you may not use this file except in compliance with the License.
12 You may obtain a copy of the License at
13 http://www.apache.org/licenses/LICENSE-2.0
14 Unless required by applicable law or agreed to in writing, software
15 distributed under the License is distributed on an "AS IS" BASIS,
16 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 See the License for the specific language governing permissions and
18 limitations under the License.
19 */
20 
21 #ifndef GADGETRON_C_INTERFACE
22 #define GADGETRON_C_INTERFACE
23 
24 #ifndef CGADGETRON_FOR_MATLAB
25 #define PTR_INT size_t
26 #define PTR_UINT64 size_t
27 #define PTR_FLOAT size_t
28 #define PTR_DOUBLE size_t
29 extern "C" {
30 #else
31 #define PTR_INT int*
32 #define PTR_UINT64 unsigned long long int*
33 #define PTR_FLOAT float*
34 #define PTR_DOUBLE double*
35 #endif
36 
38  //void* parameter(void* ptr, const char* obj, const char* name);
39  //void* setParameter
40  // (void* ptr, const char* obj, const char* par, const void* val);
41 
42  // common Object methods
43  void* cGT_newObject(const char* name);
44  void* cGT_parameter(void* ptr, const char* obj, const char* name);
45  void* cGT_setParameter
46  (void* ptr, const char* obj, const char* par, const void* val);
47 
48  // coil data methods
49  void* cGT_CoilSensitivities(const char* file);
50  void* cGT_computeCoilSensitivities(void* ptr_csms, void* ptr_acqs);
51  void* cGT_computeCoilImages(void* ptr_imgs, void* ptr_acqs);
52  void* cGT_computeCoilSensitivitiesFromCoilImages(void* ptr_csms, void* ptr_imgs);
53 
54  // acquisition model methods
55  void* cGT_AcquisitionModel(const void* ptr_acqs, const void* ptr_imgs);
56  void* cGT_setUpAcquisitionModel
57  (void* ptr_am, const void* ptr_acqs, const void* ptr_imgs);
58  void* cGT_setAcquisitionModelParameter
59  (void* ptr_am, const char* name, const void* ptr);
60  void* cGT_AcquisitionModelParameter(void* ptr_am, const char* name);
61  void* cGT_setCSMs(void* ptr_am, const void* ptr_csms);
62  void* cGT_acquisitionModelNorm(void* ptr_am, int num_iter, int verb);
63  void* cGT_AcquisitionModelForward(void* ptr_am, const void* ptr_imgs);
64  void* cGT_AcquisitionModelBackward(void* ptr_am, const void* ptr_acqs);
65 
66  // acquisition data methods
67  void* cGT_ISMRMRDAcquisitionsFromFile(const char* file);
68  void* cGT_ISMRMRDAcquisitionsFile(const char* file);
69  void* cGT_processAcquisitions(void* ptr_proc, void* ptr_input);
70  void* cGT_acquisitionFromContainer(void* ptr_acqs, unsigned int acq_num);
71  void* cGT_appendAcquisition(void* ptr_acqs, void* ptr_acq);
72  void* cGT_createEmptyAcquisitionData(void* ptr_ad);
73  void* cGT_getAcquisitionsSubset(void* ptr_acqs, PTR_INT const ptr_idx, PTR_INT const num_elem_subset);
74 
75  void* cGT_cloneAcquisitions(void* ptr_input);
76  void* cGT_sortAcquisitions(void* ptr_acqs);
77  void* cGT_sortAcquisitionsByTime(void* ptr_acqs);
78  void* cGT_setAcquisitionsInfo(void* ptr_acqs, const char* info);
79  void* cGT_setGRPETrajectory(void* ptr_acqs);
80  void* cGT_setRadial2DTrajectory(void* ptr_acqs);
81  void* cGT_setGoldenAngle2DTrajectory(void* ptr_acqs);
82  void* cGT_getDataTrajectory(void* ptr_acqs, PTR_FLOAT ptr_traj);
83  void* cGT_setDataTrajectory(void* ptr_acqs, int const traj_dim, size_t ptr_traj);
84  void* cGT_setTrajectoryType(void* ptr_acqs, int const traj_type);
85 
86 
87  void* cGT_setAcquisitionUserFloat(void* ptr_acqs, PTR_FLOAT ptr_floats, int idx);
88 
89  void* cGT_getAcquisitionDataDimensions(void* ptr_acqs, PTR_INT ptr_dim);
90  void* cGT_fillAcquisitionData(void* ptr_acqs, PTR_FLOAT ptr_z, int all);
91  void* cGT_fillAcquisitionDataFromAcquisitionData(void* ptr_dst, void* ptr_src);
92  void* cGT_acquisitionDataAsArray(void* ptr_acqs, PTR_FLOAT ptr_z, int all);
93  void* cGT_acquisitionParameterInfo(void* ptr_acqs, const char* name, PTR_INT info);
94  void* cGT_acquisitionParameterValuesInt(void* ptr_acqs, const char* name,
95  int from, int till, int n, PTR_UINT64 values);
96  void* cGT_acquisitionParameterValuesFloat(void* ptr_acqs, const char* name,
97  int from, int till, int n, PTR_FLOAT values);
98 
99  // image methods
100  void* cGT_reconstructImages(void* ptr_recon, void* ptr_input);
101  void* cGT_reconstructedImages(void* ptr_recon);
102  void* cGT_readImages(const char* file);
103  void* cGT_ImageFromAcquisitiondata(void* ptr_acqs);
104 
105  void* cGT_processImages(void* ptr_proc, void* ptr_input);
106  void* cGT_selectImages
107  (void* ptr_input, const char* attr, const char* target);
108  void* cGT_writeImages
109  (void* ptr_imgs, const char* out_file, const char* out_group);
110  void* cGT_imageWrapFromContainer(void* ptr_imgs, unsigned int img_num);
111  void* cGT_imageDataType(const void* ptr_x, int im_num);
112  void cGT_getImageDim(void* ptr_img, PTR_INT ptr_dim);
113  void* cGT_imageType(const void* ptr_img);
114  void* cGT_setImageType(const void* ptr_img, int image_type);
115  void* cGT_getImageDataAsFloatArray(void* ptr_imgs, PTR_FLOAT ptr_data);
116  void* cGT_setImageDataFromFloatArray(void* ptr_imgs, PTR_FLOAT ptr_data);
117  void* cGT_getImageDataAsCmplxArray(void* ptr_imgs, PTR_FLOAT ptr_z);
118  void* cGT_setImageDataFromCmplxArray(void* ptr_imgs, PTR_FLOAT ptr_z);
119  void* cGT_print_header(const void* ptr_imgs, const int im_idx);
120  void* cGT_realImageData(void* ptr_imgs, const char* way);
121 
122  // gadget chain methods
123  void* cGT_setHost(void* ptr_gc, const char* host);
124  void* cGT_setPort(void* ptr_gc, const char* port);
125  void* cGT_addReader(void* ptr_gc, const char* id, const void* ptr_r);
126  void* cGT_addWriter(void* ptr_gc, const char* id, const void* ptr_r);
127  void* cGT_addGadget(void* ptr_gc, const char* id, const void* ptr_r);
128  void* cGT_setGadgetProperty(void* ptr_g, const char* prop, const char* val);
129  void* cGT_setGadgetProperties(void* ptr_g, const char* props);
130  void* cGT_configGadgetChain(void* ptr_con, void* ptr_gc);
131  void* cGT_registerImagesReceiver(void* ptr_con, void* ptr_img);
132 
133  // gadgetron client methods
134  void* cGT_setConnectionTimeout(void* ptr_con, unsigned int timeout_ms);
135  void* cGT_connect(void* ptr_con, const char* host, const char* port);
136  void* cGT_sendConfigScript(void* ptr_con, const char* config);
137  void* cGT_sendConfigFile(void* ptr_con, const char* file);
138  void* cGT_sendParameters(void* ptr_con, const void* par);
139  void* cGT_sendParametersString(void* ptr_con, const char* par);
140  void* cGT_sendAcquisitions(void* ptr_con, void* ptr_dat);
141  void* cGT_sendImages(void* ptr_con, void* ptr_img);
142  void* cGT_disconnect(void* ptr_con);
143 
144 #ifndef CGADGETRON_FOR_MATLAB
145 }
146 #endif
147 
148 #endif