---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[32], line 9
5 print(A, initial, data_reord)
8 # lsqr_simple = LSQR(initial=initial, operator=A, data=data_reord)
----> 9 cgls_simple = CGLS(initial=initial, operator=A, data=data_reord)
File ~/.conda/envs/cil/lib/python3.10/site-packages/cil/optimisation/algorithms/CGLS.py:72, in CGLS.__init__(self, initial, operator, data, **kwargs)
70 initial = operator.domain_geometry().allocate(0)
71 if initial is not None and operator is not None and data is not None:
---> 72 self.set_up(initial=initial, operator=operator, data=data)
File ~/.conda/envs/cil/lib/python3.10/site-packages/cil/optimisation/algorithms/CGLS.py:91, in CGLS.set_up(self, initial, operator, data)
88 self.x = initial.copy()
89 self.operator = operator
---> 91 self.r = data - self.operator.direct(self.x)
92 self.s = self.operator.adjoint(self.r)
94 self.p = self.s.copy()
File ~/.conda/envs/cil/lib/python3.10/site-packages/cil/plugins/astra/operators/ProjectionOperator.py:161, in ProjectionOperator_ag.direct(self, IM, out)
144 def direct(self, IM, out=None):
145 '''Applies the direct of the operator i.e. the forward projection.
146
147 Parameters
(...)
158 The processed data. Suppressed if `out` is passed
159 '''
--> 161 return self.operator.direct(IM, out=out)
File ~/.conda/envs/cil/lib/python3.10/site-packages/cil/plugins/astra/operators/AstraProjector2D.py:82, in AstraProjector2D.direct(self, x, out)
66 '''Applies the direct of the operator i.e. the forward projection.
67
68 Parameters
(...)
79 The processed data. Suppressed if `out` is passed
80 '''
81 self.fp.set_input(x)
---> 82 return self.fp.get_output(out = out)
File ~/.conda/envs/cil/lib/python3.10/site-packages/cil/framework/processors.py:119, in Processor.get_output(self, out)
116 raise ValueError('Output data not compatible with processor')
118 if self.output is None or self.shouldRun:
--> 119 out = self.process(out=out)
120 if self.store_output:
121 self.output = out.copy()
File ~/.conda/envs/cil/lib/python3.10/site-packages/cil/plugins/astra/processors/AstraForwardProjector2D.py:115, in AstraForwardProjector2D.process(self, out)
111 new_shape_ig = [x if x>0 else 1 for x in new_shape_ig]
113 IM_data_temp = IM.as_array().reshape(new_shape_ig)
--> 115 sinogram_id, arr_out = astra.create_sino(IM_data_temp, self.proj_id)
116 astra.data2d.delete(sinogram_id)
118 arr_out = np.squeeze(arr_out)
File ~/.conda/envs/cil/lib/python3.10/site-packages/astra/creators.py:385, in create_sino(data, proj_id, returnData, gpuIndex)
367 def create_sino(data, proj_id, returnData=True, gpuIndex=None):
368 """Create a forward projection of an image (2D).
369
370 :param data: Image data or ID.
(...)
383 order.
384 """
--> 385 proj_geom = projector.projection_geometry(proj_id)
386 vol_geom = projector.volume_geometry(proj_id)
388 if isinstance(data, np.ndarray):
File ~/.conda/envs/cil/lib/python3.10/site-packages/astra/projector.py:66, in projection_geometry(i)
58 def projection_geometry(i):
59 """Get projection geometry of a projector.
60
61 :param i: ID of projector.
(...)
64
65 """
---> 66 return p.projection_geometry(i)
File astra/projector_c.pyx:97, in astra.projector_c.projection_geometry()
File astra/projector_c.pyx:88, in astra.projector_c.getObject()
TypeError: an integer is required
However, the actual reason the code fails is because of capitalising "GPU" when calling ProjectionOperator. The line should be
A = ProjectionOperator(ig, ag, device="gpu"), but this is not clear from the stack trace.
Thanks Mariam! Perhaps when we set up the Projection operator, it should check if the string passed to the device argument is one of a set of allowed strings and then print a suitable error message if not.
Description
When running the following code:
The stack trace shows:
However, the actual reason the code fails is because of capitalising "GPU" when calling ProjectionOperator. The line should be
A = ProjectionOperator(ig, ag, device="gpu")
, but this is not clear from the stack trace.Environment
Output: 24.2.1.dev1+g83894302 g83894302 3.10.15 | packaged by conda-forge | (main, Sep 30 2024, 17:51:04) [GCC 13.3.0] linux