From 9490f7de98ff6fa690f17f085e2112083e5e98c5 Mon Sep 17 00:00:00 2001
From: Stephan Seitz <stephan.seitz@fau.de>
Date: Wed, 26 Feb 2020 10:51:26 +0100
Subject: [PATCH] Make ConeBeamProjector.from_conrad_config less hacky

---
 src/pyronn_torch/conebeam.py | 29 +++++++++++++++++------------
 1 file changed, 17 insertions(+), 12 deletions(-)

diff --git a/src/pyronn_torch/conebeam.py b/src/pyronn_torch/conebeam.py
index 7fb1204..ffc2479 100644
--- a/src/pyronn_torch/conebeam.py
+++ b/src/pyronn_torch/conebeam.py
@@ -97,20 +97,25 @@ class ConeBeamProjector:
 
     @classmethod
     def from_conrad_config(cls):
-        obj = cls(*([None]*7))
         import pyconrad.autoinit
         import pyconrad.config
-        obj._volume_shape = pyconrad.config.get_reco_shape()
-        obj._volume_spacing = pyconrad.config.get_reco_spacing()
-        obj._volume_origin = pyconrad.config.get_reco_origin()
-        obj._projection_shape = pyconrad.config.get_sino_shape()
-        obj._projection_spacing = [pyconrad.config.get_geometry().getPixelDimensionY(),
-                                   pyconrad.config.get_geometry().getPixelDimensionX()]
-        obj._projection_origin = [pyconrad.config.get_geometry().getDetectorOffsetV(),
-                                  pyconrad.config.get_geometry().getDetectorOffsetU()]
-        obj._projection_matrices_numpy = pyconrad.config.get_projection_matrices()
-
-        obj._calc_inverse_matrices()
+        volume_shape = pyconrad.config.get_reco_shape()
+        volume_spacing = pyconrad.config.get_reco_spacing()
+        volume_origin = pyconrad.config.get_reco_origin()
+        projection_shape = pyconrad.config.get_sino_shape()
+        projection_spacing = [pyconrad.config.get_geometry().getPixelDimensionY(),
+                              pyconrad.config.get_geometry().getPixelDimensionX()]
+        projection_origin = [pyconrad.config.get_geometry().getDetectorOffsetV(),
+                             pyconrad.config.get_geometry().getDetectorOffsetU()]
+        projection_matrices = pyconrad.config.get_projection_matrices()
+
+        obj = cls(volume_shape,
+                  volume_spacing,
+                  volume_origin,
+                  projection_shape,
+                  projection_spacing,
+                  projection_origin,
+                  projection_matrices)
         return obj
 
     def new_volume_tensor(self, requires_grad=False):
-- 
GitLab