diff options
| author | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2015-06-26 12:20:44 +0200 | 
|---|---|---|
| committer | Willem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl> | 2015-06-26 12:20:44 +0200 | 
| commit | 47b520d51fc4fc49db992b9117f6c0abfa8152b5 (patch) | |
| tree | 8f494a765a3607afd1c9bac9c592f30536b950a1 | |
| parent | 9f86a4c3f20ac8785f80288ec4cdefe79ed67e68 (diff) | |
| parent | 62f3aa5792011792db866ce0841c8d164aa9a34d (diff) | |
Merge branch 'master'
| -rw-r--r-- | .gitignore | 31 | ||||
| -rw-r--r-- | matlab/mex/astra_mex_c.cpp | 4 | ||||
| -rw-r--r-- | matlab/mex/astra_mex_projector3d_c.cpp | 8 | ||||
| -rw-r--r-- | matlab/mex/astra_mex_projector_c.cpp | 9 | ||||
| -rw-r--r-- | matlab/mex/mexHelpFunctions.cpp | 6 | ||||
| -rw-r--r-- | matlab/tools/astra_create_reconstruction_cuda.m | 2 | ||||
| -rw-r--r-- | python/astra/projector3d_c.pyx | 10 | ||||
| -rw-r--r-- | python/astra/projector_c.pyx | 10 | ||||
| -rw-r--r-- | python/astra/utils.pyx | 11 | ||||
| -rw-r--r-- | python/docSRC/operator.rst | 4 | ||||
| -rw-r--r-- | src/ParallelProjectionGeometry2D.cpp | 5 | 
11 files changed, 82 insertions, 18 deletions
| diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ec0eafb --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +.*.swp +.*.swo +*~ +*.orig +*.rej +.nfs* + +/python/build/* +/python/finalbuild/* +/python/dist/* +/python/astra/*.pyc +/python/astra/*.cpp +/python/astra/*.c +/python/astra/config.pxi + +/build/linux/.libs/* +/build/linux/Makefile +/build/linux/aclocal.m4 +/build/linux/autom4te.cache/* +/build/linux/config.guess +/build/linux/config.log +/build/linux/config.status +/build/linux/config.sub +/build/linux/configure +/build/linux/cuda/* +/build/linux/install-sh +/build/linux/libastra.la +/build/linux/libtool +/build/linux/ltmain.sh +/build/linux/src/* +/build/linux/matlab/* diff --git a/matlab/mex/astra_mex_c.cpp b/matlab/mex/astra_mex_c.cpp index 4a331f5..a9b9654 100644 --- a/matlab/mex/astra_mex_c.cpp +++ b/matlab/mex/astra_mex_c.cpp @@ -36,9 +36,9 @@ $Id$  #include "mexInitFunctions.h"  #include "astra/Globals.h" - +#ifdef ASTRA_CUDA  #include "../cuda/2d/darthelper.h" - +#endif  using namespace std;  using namespace astra; diff --git a/matlab/mex/astra_mex_projector3d_c.cpp b/matlab/mex/astra_mex_projector3d_c.cpp index c3b547f..e25802c 100644 --- a/matlab/mex/astra_mex_projector3d_c.cpp +++ b/matlab/mex/astra_mex_projector3d_c.cpp @@ -137,7 +137,9 @@ void astra_mex_projector3d_get_projection_geometry(int nlhs, mxArray* plhs[], in  	// step3: get projection_geometry and turn it into a MATLAB struct  	if (1 <= nlhs) { -		plhs[0] = configToStruct(pProjector->getProjectionGeometry()->getConfiguration()); +		Config *cfg = pProjector->getProjectionGeometry()->getConfiguration(); +		plhs[0] = configToStruct(cfg); +		delete cfg;  	}  } @@ -163,7 +165,9 @@ void astra_mex_projector3d_get_volume_geometry(int nlhs, mxArray* plhs[], int nr  	// step3: get projection_geometry and turn it into a MATLAB struct  	if (1 <= nlhs) { -		plhs[0] = configToStruct(pProjector->getVolumeGeometry()->getConfiguration()); +		Config *cfg = pProjector->getVolumeGeometry()->getConfiguration(); +		plhs[0] = configToStruct(cfg); +		delete cfg;  	}  } diff --git a/matlab/mex/astra_mex_projector_c.cpp b/matlab/mex/astra_mex_projector_c.cpp index 204ba8e..bf701af 100644 --- a/matlab/mex/astra_mex_projector_c.cpp +++ b/matlab/mex/astra_mex_projector_c.cpp @@ -160,7 +160,9 @@ void astra_mex_projector_projection_geometry(int nlhs, mxArray* plhs[], int nrhs  	// step3: get projection_geometry and turn it into a MATLAB struct  	if (1 <= nlhs) { -		plhs[0] = configToStruct(pProjector->getProjectionGeometry()->getConfiguration()); +		Config *cfg =  pProjector->getProjectionGeometry()->getConfiguration(); +		plhs[0] = configToStruct(cfg); +		delete cfg;  	}  } @@ -189,8 +191,9 @@ void astra_mex_projector_volume_geometry(int nlhs, mxArray* plhs[], int nrhs, co  	// step3: get projection_geometry and turn it into a MATLAB struct  	if (1 <= nlhs) { -		plhs[0] = configToStruct(pProjector->getVolumeGeometry()->getConfiguration()); - +		Config *cfg = pProjector->getVolumeGeometry()->getConfiguration(); +		plhs[0] = configToStruct(cfg); +		delete cfg;  	}  } diff --git a/matlab/mex/mexHelpFunctions.cpp b/matlab/mex/mexHelpFunctions.cpp index 87a9672..58e84d2 100644 --- a/matlab/mex/mexHelpFunctions.cpp +++ b/matlab/mex/mexHelpFunctions.cpp @@ -336,7 +336,11 @@ mxArray* XMLNodeToStruct(astra::XMLNode node)  		// option  		if (subnode.getName() == "Option") { -			mOptions[subnode.getAttribute("key")] = stringToMxArray(subnode.getAttribute("value")); +			if(subnode.hasAttribute("value")){ +				mOptions[subnode.getAttribute("key")] = stringToMxArray(subnode.getAttribute("value")); +			}else{ +				mOptions[subnode.getAttribute("key")] = stringToMxArray(subnode.getContent()); +			}  		}  		// regular content diff --git a/matlab/tools/astra_create_reconstruction_cuda.m b/matlab/tools/astra_create_reconstruction_cuda.m index 7d9e1dd..7d0421c 100644 --- a/matlab/tools/astra_create_reconstruction_cuda.m +++ b/matlab/tools/astra_create_reconstruction_cuda.m @@ -45,7 +45,7 @@ if strcmp(rec_type,'')  end  % configure -cfg = astra_struct('SIRT_CUDA'); +cfg = astra_struct(rec_type);  cfg.ProjectionGeometry = proj_geom;  cfg.ReconstructionGeometry = vol_geom;  cfg.ProjectionDataId = sinogram_id; diff --git a/python/astra/projector3d_c.pyx b/python/astra/projector3d_c.pyx index 8b978d7..aec9cde 100644 --- a/python/astra/projector3d_c.pyx +++ b/python/astra/projector3d_c.pyx @@ -87,12 +87,18 @@ cdef CProjector3D * getObject(i) except NULL:  def projection_geometry(i):      cdef CProjector3D * proj = getObject(i) -    return utils.configToDict(proj.getProjectionGeometry().getConfiguration()) +    cdef Config * cfg = proj.getProjectionGeometry().getConfiguration() +    dct = utils.configToDict(cfg) +    del cfg +    return dct  def volume_geometry(i):      cdef CProjector3D * proj = getObject(i) -    return utils.configToDict(proj.getVolumeGeometry().getConfiguration()) +    cdef Config * cfg = proj.getVolumeGeometry().getConfiguration() +    dct = utils.configToDict(cfg) +    del cfg +    return dct  def weights_single_ray(i, projection_index, detector_index): diff --git a/python/astra/projector_c.pyx b/python/astra/projector_c.pyx index 9aa868e..77c64a4 100644 --- a/python/astra/projector_c.pyx +++ b/python/astra/projector_c.pyx @@ -91,12 +91,18 @@ cdef CProjector2D * getObject(i) except NULL:  def projection_geometry(i):      cdef CProjector2D * proj = getObject(i) -    return utils.configToDict(proj.getProjectionGeometry().getConfiguration()) +    cdef Config * cfg = proj.getProjectionGeometry().getConfiguration() +    dct = utils.configToDict(cfg) +    del cfg +    return dct  def volume_geometry(i):      cdef CProjector2D * proj = getObject(i) -    return utils.configToDict(proj.getVolumeGeometry().getConfiguration()) +    cdef Config * cfg = proj.getVolumeGeometry().getConfiguration() +    dct = utils.configToDict(cfg) +    del cfg +    return dct  def weights_single_ray(i, projection_index, detector_index): diff --git a/python/astra/utils.pyx b/python/astra/utils.pyx index ddb37aa..260c308 100644 --- a/python/astra/utils.pyx +++ b/python/astra/utils.pyx @@ -95,7 +95,8 @@ cdef void readDict(XMLNode root, _dc):              if val.size == 0:                  break              listbase = root.addChildNode(item) -            data = <double*>np.PyArray_DATA(np.ascontiguousarray(val,dtype=np.float64))  +            contig_data = np.ascontiguousarray(val,dtype=np.float64) +            data = <double*>np.PyArray_DATA(contig_data)               if val.ndim == 2:                  listbase.setContent(data, val.shape[1], val.shape[0], False)              elif val.ndim == 1: @@ -129,7 +130,8 @@ cdef void readOptions(XMLNode node, dc):                  break              listbase = node.addChildNode(six.b('Option'))              listbase.addAttribute(< string > six.b('key'), < string > item) -            data = <double*>np.PyArray_DATA(np.ascontiguousarray(val,dtype=np.float64))  +            contig_data = np.ascontiguousarray(val,dtype=np.float64) +            data = <double*>np.PyArray_DATA(contig_data)              if val.ndim == 2:                  listbase.setContent(data, val.shape[1], val.shape[0], False)              elif val.ndim == 1: @@ -202,7 +204,10 @@ cdef XMLNode2dict(XMLNode node):      while it != nodes.end():          subnode = deref(it)          if castString(subnode.getName())=="Option": -            opts[castString(subnode.getAttribute('key'))] = stringToPythonValue(subnode.getAttribute('value')) +            if subnode.hasAttribute('value'): +                opts[castString(subnode.getAttribute('key'))] = stringToPythonValue(subnode.getAttribute('value')) +            else: +                opts[castString(subnode.getAttribute('key'))] = stringToPythonValue(subnode.getContent())          else:              dct[castString(subnode.getName())] = stringToPythonValue(subnode.getContent())          inc(it) diff --git a/python/docSRC/operator.rst b/python/docSRC/operator.rst index f5369fa..fe500ba 100644 --- a/python/docSRC/operator.rst +++ b/python/docSRC/operator.rst @@ -1,7 +1,7 @@ -OpTomo class: the :mod:`operator` module +OpTomo class: the :mod:`optomo` module  ============================================== -.. automodule:: astra.operator +.. automodule:: astra.optomo      :members:      :undoc-members:      :show-inheritance: diff --git a/src/ParallelProjectionGeometry2D.cpp b/src/ParallelProjectionGeometry2D.cpp index 699e141..7260b83 100644 --- a/src/ParallelProjectionGeometry2D.cpp +++ b/src/ParallelProjectionGeometry2D.cpp @@ -180,6 +180,11 @@ Config* CParallelProjectionGeometry2D::getConfiguration() const  	cfg->self.addChildNode("DetectorCount", getDetectorCount());  	cfg->self.addChildNode("DetectorWidth", getDetectorWidth());  	cfg->self.addChildNode("ProjectionAngles", m_pfProjectionAngles, m_iProjectionAngleCount); +	if(m_pfExtraDetectorOffset!=NULL){ +		XMLNode opt = cfg->self.addChildNode("Option"); +		opt.addAttribute("key","ExtraDetectorOffset"); +		opt.setContent(m_pfExtraDetectorOffset, m_iProjectionAngleCount); +	}  	return cfg;  }  //---------------------------------------------------------------------------------------- | 
