diff options
author | epapoutsellis <epapoutsellis@gmail.com> | 2019-04-25 14:49:14 +0100 |
---|---|---|
committer | epapoutsellis <epapoutsellis@gmail.com> | 2019-04-25 14:49:14 +0100 |
commit | 08ebddb9ef5b6e1061473deb0d1eebe1ed88beb7 (patch) | |
tree | 6f97712cbdeed0cb432206f0ae325a6643fda5e5 /Wrappers/Python | |
parent | c6e217a527170c80933db0ec9247722a62221374 (diff) | |
download | astra-wrapper-08ebddb9ef5b6e1061473deb0d1eebe1ed88beb7.tar.gz astra-wrapper-08ebddb9ef5b6e1061473deb0d1eebe1ed88beb7.tar.bz2 astra-wrapper-08ebddb9ef5b6e1061473deb0d1eebe1ed88beb7.tar.xz astra-wrapper-08ebddb9ef5b6e1061473deb0d1eebe1ed88beb7.zip |
fix direct/adjoint for AstraMC
Diffstat (limited to 'Wrappers/Python')
-rwxr-xr-x | Wrappers/Python/ccpi/astra/ops.py | 69 |
1 files changed, 43 insertions, 26 deletions
diff --git a/Wrappers/Python/ccpi/astra/ops.py b/Wrappers/Python/ccpi/astra/ops.py index 009439f..3cc8453 100755 --- a/Wrappers/Python/ccpi/astra/ops.py +++ b/Wrappers/Python/ccpi/astra/ops.py @@ -157,7 +157,7 @@ class AstraProjector3DSimple(Operator): inputsize[0])) -class AstraProjectorMC(Operator): +class AstraProjectorMC(LinearOperator): """ASTRA Multichannel projector""" def __init__(self, geomv, geomp, device): super(AstraProjectorMC, self).__init__() @@ -179,38 +179,55 @@ class AstraProjectorMC(Operator): # Initialise empty for singular value. self.s1 = None - def direct(self, IM): +# def direct(self, IM): +# self.fp.set_input(IM) +# out = self.fp.get_output() +# return out +# +# def adjoint(self, DATA): +# self.bp.set_input(DATA) +# out = self.bp.get_output() +# return out + + + def direct(self, IM, out=None): self.fp.set_input(IM) - out = self.fp.get_output() - return out + + if out is None: + return self.fp.get_output() + else: + out.fill(self.fp.get_output()) - def adjoint(self, DATA): + def adjoint(self, DATA, out=None): self.bp.set_input(DATA) - out = self.bp.get_output() - return out + + if out is None: + return self.bp.get_output() + else: + out.fill(self.bp.get_output()) #def delete(self): # astra.data2d.delete(self.proj_id) - def get_max_sing_val(self): - if self.s1 is None: - self.s1, sall, svec = PowerMethodNonsquare(self,10) - return self.s1 - else: - return self.s1 - - def size(self): - # Only implemented for 2D - return ( (self.sinogram_geometry.angles.size, \ - self.sinogram_geometry.pixel_num_h), \ - (self.volume_geometry.voxel_num_x, \ - self.volume_geometry.voxel_num_y) ) - - def create_image_data(self): - inputsize = self.size()[1] - return DataContainer(numpy.random.randn(self.volume_geometry.channels, - inputsize[0], - inputsize[1])) +# def get_max_sing_val(self): +# if self.s1 is None: +# self.s1, sall, svec = PowerMethodNonsquare(self,10) +# return self.s1 +# else: +# return self.s1 +# +# def size(self): +# # Only implemented for 2D +# return ( (self.sinogram_geometry.angles.size, \ +# self.sinogram_geometry.pixel_num_h), \ +# (self.volume_geometry.voxel_num_x, \ +# self.volume_geometry.voxel_num_y) ) +# +# def create_image_data(self): +# inputsize = self.size()[1] +# return DataContainer(numpy.random.randn(self.volume_geometry.channels, +# inputsize[0], +# inputsize[1])) # def allocate_direct(self): # return self.create_image_data()def domain_geometry(self): |