def proximal_numpy(self, in_arr, tau, out = None): res = regularisers.TNV(in_arr, self.regularisation_parameter, self.iterationsTNV, self.tolerance) return res, []
def proximal_numpy(self, in_arr, tau): if in_arr.ndim != 3: # https://github.com/vais-ral/CCPi-Regularisation-Toolkit/blob/413c6001003c6f1272aeb43152654baaf0c8a423/src/Python/src/cpu_regularisers.pyx#L584-L588 raise ValueError('Only 3D data is supported. Passed data has {} dimensions'.format(in_arr.ndim)) res = regularisers.TNV(in_arr, self.alpha * tau, self.max_iteration, self.tolerance) return res, []
def proximal(self, x, tau, out=None): in_arr = np.asarray(x.as_array(), dtype=np.float32, order='C') res = regularisers.TNV(in_arr, self.regularisation_parameter, self.iterationsTNV, self.tolerance) if out is not None: out.fill(res) else: out = x.copy() out.fill(res) return out
def proximal(self, x, tau, out=None): pars = {'algorithm' : TNV, \ 'input' : np.asarray(x.as_array(), dtype=np.float32),\ 'regularisation_parameter':self.regularisation_parameter, \ 'number_of_iterations' :self.iterationsTNV,\ 'tolerance_constant':self.tolerance} res = regularisers.TNV(pars['input'], pars['regularisation_parameter'], pars['number_of_iterations'], pars['tolerance_constant']) #self.info = info if out is not None: out.fill(res) else: out = x.copy() out.fill(res) return out
def test_functionality_TNV(self): # fake a 2D+channel image d = dataexample.SYNCHROTRON_PARALLEL_BEAM_DATA.get() ig = ImageGeometry(160, 135, channels=91) data = ig.allocate(None) data.fill(d) del d datarr = data.as_array() from cil.plugins.ccpi_regularisation.functions import TNV from ccpi.filters import regularisers tau = 1. # CIL defaults outrgl = regularisers.TNV(datarr, 1, 100, 1e-6 ) fcil = TNV() outcil = fcil.proximal(data, tau=tau) np.testing.assert_almost_equal(outrgl, outcil.as_array())