Skip to content

Commit

Permalink
ref: numpy int deprecation warnings, typing, move sinogram generator …
Browse files Browse the repository at this point in the history
…in tests to separate file

Thanks Stefan Zanko @SZanko
  • Loading branch information
SZanko committed Feb 22, 2021
1 parent 93416b3 commit 79cd3a5
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 111 deletions.
4 changes: 2 additions & 2 deletions radontea/_alg_bpj.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ def backproject(sinogram: np.ndarray, angles: np.ndarray,
pad = 0
order = ln

padl = np.int32(np.ceil(pad / 2))
padr = np.int32(pad - padl)
padl = int(np.ceil(pad / 2))
padr = int(pad - padl)

if padval is None:
if verbose > 0:
Expand Down
3 changes: 2 additions & 1 deletion radontea/_threed.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ def do_work(in_queue, out_list, count, max_count):

def volume_recon(func2d: Callable, sinogram: np.ndarray = None,
angles: np.ndarray = None,
count=None, max_count=None, ncpus=None, **kwargs):
count=None, max_count=None, ncpus=None,
**kwargs) -> np.ndarray:
"""Slice-wise 3D inversion of the Radon transform
Computes the slice-wise 3D inverse of the Radon transform using
Expand Down
23 changes: 23 additions & 0 deletions tests/sinogram.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
"""Creates a sinogram for testing purposes"""
import numpy as np


def create_test_sino(A, N):
"""
Creates test sinogram.
"""
resar = np.zeros((A, N), dtype=float)
angles = np.linspace(0, np.pi, A, endpoint=False)
x = np.linspace(-N/2, N/2, N, endpoint=True)
dev = np.sqrt(N/2)
off = N/7
for ii in range(A):
# Gaussian distribution sinogram
x0 = np.cos(angles[ii])*off
y = np.exp(-(x-x0)**2/dev**2)
resar[ii] = y

# some normalization, so that max of Radon-inversion
# is about 1.
resar = 2 * dev * resar / resar.max()
return resar, angles
24 changes: 2 additions & 22 deletions tests/test_alg_art.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,11 @@
import numpy as np

import radontea


def create_test_sino(A, N):
"""
Creates test sinogram.
"""
resar = np.zeros((A, N), dtype=float)
angles = np.linspace(0, np.pi, A, endpoint=False)
x = np.linspace(-N/2, N/2, N, endpoint=True)
dev = np.sqrt(N/2)
off = N/7
for ii in range(A):
# Gaussian distribution sinogram
x0 = np.cos(angles[ii])*off
y = np.exp(-(x-x0)**2/dev**2)
resar[ii] = y

# some normalization, so that max of Radon-inversion
# is about 1.
resar = 2 * dev * resar / resar.max()
return resar, angles
import sinogram


def test_2d_art():
sino, angles = create_test_sino(A=100, N=100)
sino, angles = sinogram.create_test_sino(A=100, N=100)
r = radontea.art(sino, angles)

# np.savetxt('outfile.txt', np.array(r).flatten().view(float), fmt="%.8f")
Expand Down
25 changes: 3 additions & 22 deletions tests/test_alg_bpj.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,11 @@

import radontea


def create_test_sino(A, N):
"""
Creates test sinogram.
"""
resar = np.zeros((A, N), dtype=float)
angles = np.linspace(0, np.pi, A, endpoint=False)
x = np.linspace(-N/2, N/2, N, endpoint=True)
dev = np.sqrt(N/2)
off = N/7
for ii in range(A):
# Gaussian distribution sinogram
x0 = np.cos(angles[ii])*off
y = np.exp(-(x-x0)**2/dev**2)
resar[ii] = y

# some normalization, so that max of Radon-inversion
# is about 1.
resar = 2 * dev * resar / resar.max()
return resar, angles
import sinogram


def test_2d_backproject():
sino, angles = create_test_sino(A=100, N=100)
sino, angles = sinogram.create_test_sino(A=100, N=100)
r = radontea.backproject(sino, angles, padding=True)

# np.savetxt('outfile.txt', np.array(r).flatten().view(float), fmt="%.8f")
Expand All @@ -41,7 +22,7 @@ def test_3d_backproject():
M = 30
N = 100

sino, angles = create_test_sino(A=100, N=100)
sino, angles = sinogram.create_test_sino(A=100, N=100)
sino3d = np.zeros((A, M, N), dtype=float)
for ii in range(M):
sino3d[:, ii, :] = sino
Expand Down
23 changes: 2 additions & 21 deletions tests/test_alg_fmp.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,11 @@

import radontea


def create_test_sino(A, N):
"""
Creates test sinogram.
"""
resar = np.zeros((A, N), dtype=float)
angles = np.linspace(0, np.pi, A, endpoint=False)
x = np.linspace(-N/2, N/2, N, endpoint=True)
dev = np.sqrt(N/2)
off = N/7
for ii in range(A):
# Gaussian distribution sinogram
x0 = np.cos(angles[ii])*off
y = np.exp(-(x-x0)**2/dev**2)
resar[ii] = y

# some normalization, so that max of Radon-inversion
# is about 1.
resar = 2 * dev * resar / resar.max()
return resar, angles
import sinogram


def test_2d_fmp():
sino, angles = create_test_sino(A=100, N=101)
sino, angles = sinogram.create_test_sino(A=100, N=101)
r = radontea.fourier_map(sino, angles)

# np.savetxt('outfile.txt', np.array(r).flatten().view(float), fmt="%.8f")
Expand Down
24 changes: 2 additions & 22 deletions tests/test_alg_int.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,11 @@
import numpy as np

import radontea


def create_test_sino(A, N):
"""
Creates test sinogram.
"""
resar = np.zeros((A, N), dtype=float)
angles = np.linspace(0, np.pi, A, endpoint=False)
x = np.linspace(-N/2, N/2, N, endpoint=True)
dev = np.sqrt(N/2)
off = N/7
for ii in range(A):
# Gaussian distribution sinogram
x0 = np.cos(angles[ii])*off
y = np.exp(-(x-x0)**2/dev**2)
resar[ii] = y

# some normalization, so that max of Radon-inversion
# is about 1.
resar = 2 * dev * resar / resar.max()
return resar, angles
import sinogram


def test_2d_int():
sino, angles = create_test_sino(A=20, N=30)
sino, angles = sinogram.create_test_sino(A=20, N=30)
r = radontea.integrate(sino, angles)

# np.savetxt('outfile.txt', np.array(r).flatten().view(float), fmt="%.8f")
Expand Down
23 changes: 2 additions & 21 deletions tests/test_alg_sart.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,11 @@

import radontea


def create_test_sino(A, N):
"""
Creates test sinogram.
"""
resar = np.zeros((A, N), dtype=float)
angles = np.linspace(0, np.pi, A, endpoint=False)
x = np.linspace(-N/2, N/2, N, endpoint=True)
dev = np.sqrt(N/2)
off = N/7
for ii in range(A):
# Gaussian distribution sinogram
x0 = np.cos(angles[ii])*off
y = np.exp(-(x-x0)**2/dev**2)
resar[ii] = y

# some normalization, so that max of Radon-inversion
# is about 1.
resar = 2 * dev * resar / resar.max()
return resar, angles
import sinogram


def test_2d_sart():
sino, angles = create_test_sino(A=100, N=100)
sino, angles = sinogram.create_test_sino(A=100, N=100)
r = radontea.sart(sino, angles)

# np.savetxt('outfile.txt', np.array(r).flatten().view(float), fmt="%.8f")
Expand Down

0 comments on commit 79cd3a5

Please sign in to comment.