diff options
author | Daan Pelt <daan.pelt@gmail.com> | 2015-04-30 11:02:50 +0200 |
---|---|---|
committer | Daan Pelt <daan.pelt@gmail.com> | 2015-04-30 11:56:09 +0200 |
commit | f69d9f6bc1704560518da3c30c46e495c0228aac (patch) | |
tree | ada5b18e9de0b195c6df99103a62674ebe6eac38 /python/astra/data3d_c.pyx | |
parent | 6fe3adab8ef3c9ab93a92c132f9809851a4dda74 (diff) | |
download | astra-f69d9f6bc1704560518da3c30c46e495c0228aac.tar.gz astra-f69d9f6bc1704560518da3c30c46e495c0228aac.tar.bz2 astra-f69d9f6bc1704560518da3c30c46e495c0228aac.tar.xz astra-f69d9f6bc1704560518da3c30c46e495c0228aac.zip |
Check data size when using 'link' function in Python
Diffstat (limited to 'python/astra/data3d_c.pyx')
-rw-r--r-- | python/astra/data3d_c.pyx | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/python/astra/data3d_c.pyx b/python/astra/data3d_c.pyx index 84472c1..30745b4 100644 --- a/python/astra/data3d_c.pyx +++ b/python/astra/data3d_c.pyx @@ -45,6 +45,13 @@ from .PyXMLDocument cimport XMLDocument cimport utils from .utils import wrap_from_bytes +from .pythonutils import geom_size + +import operator + +from six.moves import reduce + + cdef CData3DManager * man3d = <CData3DManager * >PyData3DManager.getSingletonPtr() cdef extern from *: @@ -61,6 +68,16 @@ def create(datatype,geometry,data=None, link=False): cdef CFloat32Data3DMemory * pDataObject3D cdef CConeProjectionGeometry3D* pppGeometry cdef CFloat32CustomMemory * pCustom + + if link: + geomSize = geom_size(geometry) + if len(data.shape)==1: + if data.size!=reduce(operator.mul,geomSize): + raise Exception("The dimensions of the data do not match those specified in the geometry.") + else: + if data.shape!=geomSize: + raise Exception("The dimensions of the data do not match those specified in the geometry.") + if datatype == '-vol': cfg = utils.dictToConfig(six.b('VolumeGeometry'), geometry) pGeometry = new CVolumeGeometry3D() |