bartorch.linop.Roll

bartorch.linop.Roll#

class bartorch.linop.Roll(shape, shift, axis=-1, mode='wrap')#

Shift along one axis, BART’s linop_shift.

With mode="wrap" this is torch.roll: what leaves one end comes back at the other. With another mode what leaves is dropped and what arrives is whatever that mode supplies, so the operator is no longer unitary.

Parameters:
  • shape (tuple of int) – The shape it maps to itself, C order.

  • shift (int) – How far to move, towards higher indices when positive.

  • axis (int) – Which axis to move along.

  • mode (str) – "wrap", "constant", "symmetric" or "reflect".

__init__(shape, shift, axis=-1, mode='wrap')#

Methods

A(x, **kwargs)

A x, under deepinv's name.

A_adjoint(y, **kwargs)

A^H y, under deepinv's name, recorded for autograd.

A_adjoint_A(x, **kwargs)

A^H A x, under deepinv's name, recorded for autograd.

A_dagger(y, **kwargs)

The pseudo-inverse, under deepinv's name.

__init__(shape, shift[, axis, mode])

adjoint(y[, out])

A^H y, without recording for autograd.

cogram()

A A^H as an operator.

conj()

conj(A): conjugate the input, apply, conjugate the output.

forward(x[, out])

A x, without recording for autograd.

gram()

A^H A as an operator.

normal(x[, out])

A^H A x.

opnorm()

The spectral norm, by BART's power iteration on A^H A.

pinv(y[, damp])

(A^H A + damp I)^-1 A^H y, the damped least-squares solution.

to_nonlinear()

The same operator as a NonlinearOperator.

Attributes

H

A^H, from BART's own adjoint constructor.

T

A^T, the adjoint without the conjugation, as conj(A).H.

codim_rank

How many axes the codomain has.

codim_shape

The codomain, under pyxu's name for it; the same as oshape.

codim_size

How many elements the codomain holds.

device

dim_rank

How many axes the domain has.

dim_shape

The domain, under pyxu's name for it; the same as ishape.

dim_size

How many elements the domain holds.

ishape

oshape