summaryrefslogtreecommitdiffstats
path: root/python/astra/data3d.py
diff options
context:
space:
mode:
authorWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2015-04-15 14:27:52 +0200
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2015-04-15 14:27:52 +0200
commit66968b3886b3800afcecf8f089962f87243cf4b1 (patch)
tree7b162a87427c18eb37446d7f98a1e376ef5da73d /python/astra/data3d.py
parent9458268a8b9192af98fc1b88bf0a5fbbc7696a77 (diff)
parent40475404d83d74d7b5db3f71ea1488a6de10ccc5 (diff)
downloadastra-66968b3886b3800afcecf8f089962f87243cf4b1.tar.gz
astra-66968b3886b3800afcecf8f089962f87243cf4b1.tar.bz2
astra-66968b3886b3800afcecf8f089962f87243cf4b1.tar.xz
astra-66968b3886b3800afcecf8f089962f87243cf4b1.zip
Merge branch 'master' into volgeom3d
Diffstat (limited to 'python/astra/data3d.py')
-rw-r--r--python/astra/data3d.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/python/astra/data3d.py b/python/astra/data3d.py
index a2e9201..e5ef6b0 100644
--- a/python/astra/data3d.py
+++ b/python/astra/data3d.py
@@ -24,6 +24,7 @@
#
#-----------------------------------------------------------------------
from . import data3d_c as d
+import numpy as np
def create(datatype,geometry,data=None):
"""Create a 3D object.
@@ -39,6 +40,27 @@ def create(datatype,geometry,data=None):
"""
return d.create(datatype,geometry,data)
+def link(datatype, geometry, data):
+ """Link a 3D numpy array with the toolbox.
+
+ :param datatype: Data object type, '-vol' or '-sino'.
+ :type datatype: :class:`string`
+ :param geometry: Volume or projection geometry.
+ :type geometry: :class:`dict`
+ :param data: Numpy array to link
+ :type data: :class:`numpy.ndarray`
+ :returns: :class:`int` -- the ID of the constructed object.
+
+ """
+ if not isinstance(data,np.ndarray):
+ raise ValueError("Input should be a numpy array")
+ if not data.dtype==np.float32:
+ raise ValueError("Numpy array should be float32")
+ if not (data.flags['C_CONTIGUOUS'] and data.flags['ALIGNED']):
+ raise ValueError("Numpy array should be C_CONTIGUOUS and ALIGNED")
+ return d.create(datatype,geometry,data,True)
+
+
def get(i):
"""Get a 3D object.
@@ -90,6 +112,17 @@ def get_geometry(i):
"""
return d.get_geometry(i)
+def change_geometry(i, geometry):
+ """Change the geometry of a 3D object.
+
+ :param i: ID of object.
+ :type i: :class:`int`
+ :param geometry: Volume or projection geometry.
+ :type geometry: :class:`dict`
+
+ """
+ return d.change_geometry(i, geometry)
+
def dimensions(i):
"""Get dimensions of a 3D object.