32 #ifndef GADGETS_LIBRARY 33 #define GADGETS_LIBRARY 47 virtual void set_property(
const char* prop,
const char* value) = 0;
48 virtual std::string value_of(
const char* prop) = 0;
49 virtual std::string vxml(
const std::string& label)
const = 0;
50 std::string xml(
const std::string& label =
"")
const 61 Gadget(std::string name, std::string dll, std::string cl) :
62 gadget_(name), dll_(dll)
67 virtual void set_property(
const char* prop,
const char* value)
71 virtual std::string value_of(
const char* prop)
75 void add_property(
const char* prop,
const char* value)
79 virtual std::string vxml(
const std::string& label)
const 81 std::string xml_script(
"<gadget>\n");
83 xml_script +=
" <name>" + label +
':' + gadget_ +
"</name>\n";
85 xml_script +=
" <name>" + gadget_ +
"</name>\n";
86 xml_script +=
" <dll>" + dll_ +
"</dll>\n";
87 xml_script +=
" <classname>" + class_ +
"</classname>\n";
88 #if defined(_MSC_VER) && _MSC_VER < 1900 89 std::map<std::string, std::string>::const_iterator it;
91 typename std::map<std::string, std::string>::const_iterator it;
93 for (it = par_.begin(); it != par_.end(); ++it) {
94 xml_script +=
" <property>\n";
95 xml_script +=
" <name>" + it->first +
"</name>\n"; \
96 xml_script +=
" <value>" + it->second +
"</value>\n"; \
97 xml_script +=
" </property>\n";
99 xml_script +=
"</gadget>\n";
106 std::map<std::string, std::string> par_;
115 static const char* class_name()
117 return "GadgetIsmrmrdAcquisitionMessageReader";
119 virtual void set_property(
const char* prop,
const char* value) {}
120 virtual std::string value_of(
const char* prop)
122 return std::string(
"");
124 virtual std::string vxml(
const std::string& label)
const {
125 std::string xml_script(
"<reader>\n");
126 xml_script +=
" <slot>1008</slot>\n";
127 xml_script +=
" <dll>gadgetron_mricore</dll>\n";
129 " <classname>GadgetIsmrmrdAcquisitionMessageReader</classname>\n";
130 xml_script +=
"</reader>\n";
141 static const char* class_name()
143 return "GadgetIsmrmrdAcquisitionMessageWriter";
145 virtual void set_property(
const char* prop,
const char* value) {}
146 virtual std::string value_of(
const char* prop)
148 return std::string(
"");
150 virtual std::string vxml(
const std::string& label)
const {
151 std::string xml_script(
"<writer>\n");
152 xml_script +=
" <slot>1008</slot>\n";
153 xml_script +=
" <dll>gadgetron_mricore</dll>\n";
155 " <classname>GadgetIsmrmrdAcquisitionMessageWriter</classname>\n";
156 xml_script +=
"</writer>\n";
166 static const char* class_name()
168 return "MRIImageReader";
170 virtual void set_property(
const char* prop,
const char* value) {}
171 virtual std::string value_of(
const char* prop)
173 return std::string(
"");
175 virtual std::string vxml(
const std::string& label)
const {
176 std::string xml_script(
"<reader>\n");
177 xml_script +=
" <slot>1022</slot>\n";
178 xml_script +=
" <dll>gadgetron_mricore</dll>\n";
180 " <classname>MRIImageReader</classname>\n";
181 xml_script +=
"</reader>\n";
195 static const char* class_name()
197 return "MRIImageWriter";
199 virtual void set_property(
const char* prop,
const char* value) {}
200 virtual std::string value_of(
const char* prop)
202 return std::string(
"");
204 virtual std::string vxml(
const std::string& label)
const {
205 std::string xml_script(
"<writer>\n");
206 xml_script +=
" <slot>1022</slot>\n";
207 xml_script +=
" <dll>gadgetron_mricore</dll>\n";
208 xml_script +=
" <classname>MRIImageWriter</classname>\n";
209 xml_script +=
"</writer>\n";
219 static const char* class_name()
221 return "DicomImageWriter";
223 virtual void set_property(
const char* prop,
const char* value) {}
224 virtual std::string value_of(
const char* prop)
226 return std::string(
"");
228 virtual std::string vxml(
const std::string& label)
const {
229 std::string xml_script(
"<writer>\n");
230 xml_script +=
" <slot>1018</slot>\n";
231 xml_script +=
" <dll>gadgetron_dicom</dll>\n";
232 xml_script +=
" <classname>DicomImageWriter</classname>\n";
233 xml_script +=
"</writer>\n";
241 Gadget(
"NoiseAdjust",
"gadgetron_mricore",
"NoiseAdjustGadget")
243 static const char* class_name()
245 return "NoiseAdjustGadget";
252 Gadget(
"PCACoil",
"gadgetron_mricore",
"PCACoilGadget")
254 static const char* class_name()
256 return "PCACoilGadget";
263 Gadget(
"CoilReduction",
"gadgetron_mricore",
"CoilReductionGadget")
265 add_property(
"coil_mask",
"");
266 add_property(
"coils_out",
"128");
268 static const char* class_name()
270 return "CoilReductionGadget";
277 Gadget(
"AsymmetricEcho",
"gadgetron_mricore",
278 "AsymmetricEchoAdjustROGadget")
280 static const char* class_name()
282 return "AsymmetricEchoAdjustROGadget";
289 Gadget(
"RemoveROOversampling",
"gadgetron_mricore",
290 "RemoveROOversamplingGadget")
292 static const char* class_name()
294 return "RemoveROOversamplingGadget";
301 Gadget(
"AccTrig",
"gadgetron_mricore",
"AcquisitionAccumulateTriggerGadget")
303 add_property(
"trigger_dimension",
"repetition");
304 add_property(
"sorting_dimension",
"slice");
306 static const char* class_name()
308 return "AcquisitionAccumulateTriggerGadget";
315 Gadget(
"Buff",
"gadgetron_mricore",
"BucketToBufferGadget")
317 add_property(
"N_dimension",
"");
318 add_property(
"S_dimension",
"");
319 add_property(
"split_slices",
"true");
320 add_property(
"ignore_segment",
"true");
321 add_property(
"verbose",
"true");
323 static const char* class_name()
325 return "BucketToBufferGadget";
332 Gadget(
"PrepRef",
"gadgetron_mricore",
333 "GenericReconCartesianReferencePrepGadget")
335 add_property(
"debug_folder",
"");
336 add_property(
"perform_timing",
"true");
337 add_property(
"verbose",
"true");
338 add_property(
"average_all_ref_N",
"true");
339 add_property(
"average_all_ref_S",
"true");
340 add_property(
"prepare_ref_always",
"true");
342 static const char* class_name()
344 return "GenericReconCartesianReferencePrepGadget";
351 Gadget(
"SimpleRecon",
"gadgetron_mricore",
"SimpleReconGadget")
353 static const char* class_name()
355 return "SimpleReconGadget";
362 Gadget(
"Recon",
"gadgetron_mricore",
"GenericReconCartesianFFTGadget")
364 add_property(
"image_series",
"0");
365 add_property(
"coil_map_algorithm",
"Inati");
366 add_property(
"debug_folder",
"");
367 add_property(
"perform_timing",
"true");
368 add_property(
"verbose",
"true");
370 static const char* class_name()
372 return "GenericReconCartesianFFTGadget";
379 Gadget(
"CartesianGrappa",
"gadgetron_mricore",
380 "GenericReconCartesianGrappaGadget")
382 add_property(
"image_series",
"0");
383 add_property(
"coil_map_algorithm",
"Inati");
384 add_property(
"downstream_coil_compression",
"true");
385 add_property(
"downstream_coil_compression_thres",
"0.01");
386 add_property(
"downstream_coil_compression_num_modesKept",
"0");
387 add_property(
"send_out_gfactor",
"true");
388 add_property(
"debug_folder",
"");
389 add_property(
"perform_timing",
"true");
390 add_property(
"verbose",
"true");
392 static const char* class_name()
394 return "GenericReconCartesianGrappaGadget";
401 Gadget(
"FOVAdjustment",
"gadgetron_mricore",
402 "GenericReconFieldOfViewAdjustmentGadget")
404 add_property(
"debug_folder",
"");
405 add_property(
"perform_timing",
"false");
406 add_property(
"verbose",
"false");
408 static const char* class_name()
410 return "GenericReconFieldOfViewAdjustmentGadget";
417 Gadget(
"Scaling",
"gadgetron_mricore",
418 "GenericReconImageArrayScalingGadget")
420 add_property(
"perform_timing",
"false");
421 add_property(
"verbose",
"false");
422 add_property(
"min_intensity_value",
"64");
423 add_property(
"max_intensity_value",
"4095");
424 add_property(
"scalingFactor",
"10.0");
425 add_property(
"use_constant_scalingFactor",
"true");
426 add_property(
"scalingFactor_dedicated",
"100.0");
427 add_property(
"auto_scaling_only_once",
"true");
429 static const char* class_name()
431 return "GenericReconImageArrayScalingGadget";
438 Gadget(
"FatWater",
"gadgetron_fatwater",
"FatWaterGadget")
440 static const char* class_name()
442 return "FatWaterGadget";
449 Gadget(
"ImageArraySplit",
"gadgetron_mricore",
"ImageArraySplitGadget")
451 static const char* class_name()
453 return "ImageArraySplitGadget";
460 Gadget(
"PhysioInterpolation",
"gadgetron_mricore",
"PhysioInterpolationGadget")
462 add_property(
"phases",
"30");
463 add_property(
"mode",
"0");
464 add_property(
"first_beat_on_trigger",
"true");
465 add_property(
"interp_method",
"BSpline");
467 static const char* class_name()
469 return "PhysioInterpolationGadget";
478 add_property(
"mode",
"0");
479 add_property(
"deviceno",
"0");
480 add_property(
"profiles_per_frame",
"0");
481 add_property(
"rotations_per_reconstruction",
"0");
482 add_property(
"frames_per_rotation",
"0");
483 add_property(
"buffer_frames_per_rotation",
"0");
484 add_property(
"buffer_length_in_rotations",
"1");
485 add_property(
"buffer_using_solver",
"false");
486 add_property(
"buffer_convolution_kernel_width",
"5.5");
487 add_property(
"buffer_convolution_oversampling_factor",
"1.25");
488 add_property(
"reconstruction_os_factor_x",
"1.0");
489 add_property(
"reconstruction_os_factor_y",
"1.0");
490 add_property(
"output_timing",
"false");
503 GPURadialPrepGadget(
"gpuRadialSensePrepGadget",
"gadgetron_gpuradial",
"gpuRadialSensePrepGadget")
505 static const char* class_name()
507 return "GPURadialSensePrepGadget";
513 GPUSenseGadget(std::string name, std::string dll, std::string cl) :
516 add_property(
"deviceno",
"0");
517 add_property(
"setno",
"0");
518 add_property(
"sliceno",
"0");
519 add_property(
"oversampling_factor",
"1.5");
520 add_property(
"kernel_width",
"5.5");
521 add_property(
"save_individual_frames",
"true");
522 add_property(
"output_convergence",
"false");
523 add_property(
"rotations_to_discard",
"0");
524 add_property(
"output_timing",
"false");
537 GPUSenseGadget(
"gpuCgSenseGadget",
"gadgetron_gpuparallelmri",
"gpuCgSenseGadget")
539 add_property(
"kappa",
"0.3");
540 add_property(
"number_of_iterations",
"5");
541 add_property(
"cg_limit",
"1e-6");
543 static const char* class_name()
545 return "GPUCGSenseGadget";
552 Gadget(
"Extract",
"gadgetron_mricore",
"ExtractGadget")
554 add_property(
"extract_mask",
"0");
555 add_property(
"extract_magnitude",
"true");
556 add_property(
"extract_real",
"false");
557 add_property(
"extract_imag",
"false");
558 add_property(
"extract_phase",
"false");
560 static const char* class_name()
562 return "ExtractGadget";
569 Gadget(
"AutoScale",
"gadgetron_mricore",
"AutoScaleGadget")
571 static const char* class_name()
573 return "AutoScaleGadget";
580 Gadget(
"ComplexToFloatAttrib",
"gadgetron_mricore",
"ComplexToFloatGadget")
582 static const char* class_name()
584 return "ComplexToFloatGadget";
593 std::string max_int) :
596 add_property(
"min_intensity",
"0");
597 add_property(
"max_intensity", max_int.c_str());
598 add_property(
"intensity_offset",
"0");
613 static const char* class_name()
615 return "FloatToUShortGadget";
623 "FloatToShortGadget",
"32767")
625 static const char* class_name()
627 return "FloatToShortGadget";
650 Gadget(
"ImageFinish",
"gadgetron_mricore",
"ImageFinishGadget")
652 static const char* class_name()
654 return "ImageFinishGadget";
661 Gadget(
"DicomFinish",
"gadgetron_dicom",
"DicomFinishGadget")
663 static const char* class_name()
665 return "DicomFinishGadget";
672 Gadget(
"AcquisitionFinish",
"gadgetron_mricore",
"AcquisitionFinishGadget")
674 static const char* class_name()
676 return "AcquisitionFinishGadget";
686 static const char* class_name()
688 return "SimpleReconGadgetSet";
690 virtual void set_property(
const char* prop,
const char* value)
694 aat_.set_property(prop, value);
698 bb_.set_property(prop, value);
700 THROW(
"unknown gadget parameter");
702 virtual std::string value_of(
const char* prop)
706 return aat_.value_of(prop);
710 return bb_.value_of(prop);
711 THROW(
"unknown gadget parameter");
713 virtual std::string vxml(
const std::string& label)
const 715 std::string xml_script;
716 xml_script += aat_.xml();
717 xml_script += bb_.xml();
718 xml_script += sr_.xml();
719 xml_script += ias_.xml();
Definition: gadget_lib.h:534
Class for a gadget xml-definition generator.
Definition: gadget_lib.h:59
Class for GadgetIsmrmrdAcquisitionMessageWriter gadget xml-definition generator.
Definition: gadget_lib.h:139
bool iequals(const std::string &a, const std::string &b)
Case insensitive string comparison, replaces boost::iequals.
Definition: iequals.cpp:7
Class for xml-definition generator for a simple fully sumpled reconstruction gadget set...
Definition: gadget_lib.h:684
Definition: gadget_lib.h:298
Case insensitive string comparison sirf::iequals.
Definition: gadget_lib.h:457
Definition: gadget_lib.h:312
Abstract base class for a gadget xml-definition generator.
Definition: gadget_lib.h:45
Definition: gadget_lib.h:577
Definition: gadget_lib.h:446
Definition: gadget_lib.h:329
Definition: gadget_lib.h:249
Definition: gadget_lib.h:435
Class for DicomImageWriter gadget xml-definition generator.
Definition: gadget_lib.h:217
Definition: gadget_lib.h:274
Definition: gadget_lib.h:473
Definition: gadget_lib.h:511
Definition: gadget_lib.h:238
Definition: gadget_lib.h:647
Definition: gadget_lib.h:376
Definition: gadget_lib.h:260
Class for MRIImageReader gadget xml-definition generator.
Definition: gadget_lib.h:164
Definition: gadget_lib.h:398
Definition: gadget_lib.h:286
Definition: gadget_lib.h:608
Definition: gadget_lib.h:566
Abstract data container.
Definition: GeometricalInfo.cpp:141
Definition: gadget_lib.h:186
Definition: gadget_lib.h:669
Class for MRIImageWriter gadget xml-definition generator.
Definition: gadget_lib.h:193
Definition: gadget_lib.h:414
Definition: gadget_lib.h:348
Definition: gadget_lib.h:359
Class for GadgetIsmrmrdAcquisitionMessageReader gadget xml-definition generator.
Definition: gadget_lib.h:113
Definition: gadget_lib.h:658
Definition: gadget_lib.h:588
Definition: gadget_lib.h:500
Definition: gadget_lib.h:619