[ismrmrd] 90/177: Added a couple of helper methods for sizes. Fixed some loop counters to use unsigned ints.

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Wed Jan 14 20:02:06 UTC 2015


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to annotated tag v1.1.0.beta.1
in repository ismrmrd.

commit 774accfbf359a9100079b68b3ecb6553ec3de45f
Author: Souheil Inati <souheil.inati at nih.gov>
Date:   Thu Sep 25 09:35:43 2014 -0400

    Added a couple of helper methods for sizes.  Fixed some loop counters to use unsigned ints.
---
 include/ismrmrd/ismrmrd.h                    |  4 ++++
 libsrc/ismrmrd.cpp                           | 11 +++++++++++
 utilities/generate_cartesian_shepp_logan.cpp | 13 +++++++------
 utilities/ismrmrd_phantom.cpp                |  4 ++--
 4 files changed, 24 insertions(+), 8 deletions(-)

diff --git a/include/ismrmrd/ismrmrd.h b/include/ismrmrd/ismrmrd.h
index ac4624e..09c3aaa 100644
--- a/include/ismrmrd/ismrmrd.h
+++ b/include/ismrmrd/ismrmrd.h
@@ -495,6 +495,10 @@ public:
     int32_t (&user_int())[ISMRMRD_USER_INTS];
     float (&user_float())[ISMRMRD_USER_FLOATS];
 
+    // Sizes
+    const size_t getNumberOfDataElements();
+    const size_t getNumberOfTrajElements();
+
     // Header, data and trajectory accessors
     AcquisitionHeader &getHead();
     void setHead(const AcquisitionHeader other);
diff --git a/libsrc/ismrmrd.cpp b/libsrc/ismrmrd.cpp
index 6b0a6b9..cfefd8d 100644
--- a/libsrc/ismrmrd.cpp
+++ b/libsrc/ismrmrd.cpp
@@ -215,6 +215,17 @@ float (&Acquisition::user_float()) [ISMRMRD_USER_FLOATS] {
     return head.user_float;
 }
 
+// Sizes
+const size_t Acquisition::getNumberOfDataElements() {
+    size_t num = head.number_of_samples * head.active_channels;
+    return num;
+}
+
+const size_t Acquisition::getNumberOfTrajElements() {
+    size_t num = head.number_of_samples * head.trajectory_dimensions;
+    return num;
+}
+
 // Data and Trajectory accessors
 AcquisitionHeader & Acquisition::getHead() {
     // This returns a reference
diff --git a/utilities/generate_cartesian_shepp_logan.cpp b/utilities/generate_cartesian_shepp_logan.cpp
index 975bdb5..6308065 100644
--- a/utilities/generate_cartesian_shepp_logan.cpp
+++ b/utilities/generate_cartesian_shepp_logan.cpp
@@ -101,7 +101,7 @@ int main(int argc, char** argv)
 	if (noise_calibration) {
             acq.setFlag(ISMRMRD_ACQ_IS_NOISE_MEASUREMENT);
             acq.number_of_samples(readout);
-            for (uint64_t s = 0; s < acq.number_of_samples()*acq.active_channels(); s++) {
+            for (size_t s = 0; s < acq.getNumberOfDataElements(); s++) {
                 acq.getData()[s] = 0.0;
             }
             add_noise(acq,noise_level);
@@ -109,20 +109,21 @@ int main(int argc, char** argv)
             d.appendAcquisition(acq);
 	}
 
-        //NDArray<complex_float_t> cm(dims);
+        NDArray<complex_float_t> cm(dims);
         std::cout << "FFT number 0" << std::endl;
         for (unsigned int r = 0; r < repetitions; r++) {
             for (unsigned int a = 0; a < acc_factor; a++) {
                 //for (size_t n=0; n<coil_images.getNumberOfElements(); n++) {
                 //    cm.getData()[n] = coil_images.getData()[n];
                 //}
-                NDArray<complex_float_t> cm = coil_images;
+                //NDArray<complex_float_t> cm = coil_images;
+                cm = coil_images;
                 fft2c(cm);
                 std::cout << "FFT number 1" << std::endl;
         
 
                 add_noise(cm,noise_level);
-                for (int i = a; i < matrix_size; i+=acc_factor) {
+                for (size_t i = a; i < matrix_size; i+=acc_factor) {
                     acq.clearAllFlags();
                     acq.number_of_samples(readout);
                     
@@ -136,7 +137,7 @@ int main(int argc, char** argv)
                     acq.idx().kspace_encode_step_1 = i;
                     acq.idx().repetition = r*acc_factor + a;
                     acq.sample_time_us() = 5.0;
-                    for (unsigned int c = 0; c < ncoils; c++) {
+                    for (size_t c = 0; c < ncoils; c++) {
                         memcpy(&(acq.getData()[c*readout]),
                                &(cm.getData()[c*matrix_size*readout + i*readout]),
                                sizeof(complex_float_t)*readout);
@@ -145,7 +146,7 @@ int main(int argc, char** argv)
                     if (store_coordinates) {
                         acq.trajectory_dimensions(2);
                         float ky = (1.0*i-(matrix_size>>1))/(1.0*matrix_size);
-                        for (int x = 0; x < readout; x++) {
+                        for (size_t x = 0; x < readout; x++) {
                             float kx = (1.0*x-(readout>>1))/(1.0*readout);
                             acq.getTraj()[x*2  ] = kx;
                             acq.getTraj()[x*2+1] = ky;
diff --git a/utilities/ismrmrd_phantom.cpp b/utilities/ismrmrd_phantom.cpp
index dd9250c..afa98de 100644
--- a/utilities/ismrmrd_phantom.cpp
+++ b/utilities/ismrmrd_phantom.cpp
@@ -83,7 +83,7 @@ boost::shared_ptr<NDArray<complex_float_t> > generate_birdcage_sensititivies(uns
 	boost::shared_ptr<NDArray<complex_float_t> > out(new NDArray<complex_float_t>(dims));
         memset(out->getData(), 0, out->getDataSize());
 
-	for (int c = 0; c < ncoils; c++) {
+	for (unsigned int c = 0; c < ncoils; c++) {
 		float coilx = relative_radius*std::cos(c*(2*3.14159265359/ncoils));
 		float coily = relative_radius*std::sin(c*(2*3.14159265359/ncoils));
 		float coil_phase = -c*(2*3.14159265359/ncoils);
@@ -130,7 +130,7 @@ int add_noise(Acquisition& a, float sd)
 	boost::variate_generator<boost::mt19937&,
 	                           boost::normal_distribution<float> > var_nor(get_noise_seed(), nd);
 
-	for (size_t i = 0; i < a.number_of_samples()*a.active_channels(); i++) {
+	for (size_t i = 0; i < a.getNumberOfDataElements(); i++) {
             a.getData()[i] += std::complex<float>(var_nor(), var_nor());
 	}
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ismrmrd.git



More information about the debian-science-commits mailing list