optim.ISTBlock#

class bartorch.optim.ISTBlock#

Bases: Module

One step of iterative soft thresholding, italgos.c’s ist.

Thresholds, then steps along A^H y - (A^H A + cclambda) x; output() thresholds once more, as BART does after its loop. With eigen the step is divided by the largest eigenvalue, estimated at start().

The term’s proximal operator is applied to the image, so its transform must be the identity: start() refuses a term such as FourierL1, Laplace or TotalVariation, which ADMMBlock and PRIDUBlock take.

start()#

The run’s state: the start, and A^H y kept for every step.

forward()#

Define the computation performed at every call.

Should be overridden by all subclasses.

Note

Although the recipe for forward pass needs to be defined within this function, one should call the Module instance afterwards instead of this since the former takes care of running the registered hooks while the latter silently ignores them.

output()#

The image, thresholded once more, as italgo_config leaves last false.