cornucopia.kspace
ArrayCoilTransform
ArrayCoilTransform(ncoils=8, fwhm=0.5, diameter=0.8, jitter=0.01, unit='fov', shape=4, sos=True, *, shared=True, **kwargs)
Bases: NonFinalTransform
Generate and apply random coil sensitivities (real or complex)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ncoils
|
int
|
Number of complex receiver channels |
8
|
fwhm
|
float
|
Width of each receiver profile |
0.5
|
diameter
|
float
|
Diameter of the ellipsoid on wich receivers are centered |
0.8
|
jitter
|
float
|
Amount of jitter off the ellipsoid |
0.01
|
unit
|
(fov, vox)
|
Unit of |
'fov'
|
shape
|
int
|
Number of control points for the underlying smooth component. |
4
|
Other Parameters:
| Name | Type | Description |
|---|---|---|
returns |
[list or dict of] {'input', 'sos', 'uncombined', 'sens', 'netsens'}
|
Default is 'uncombined'.
|
shared |
(channels, tensors, channels + tensors, '')
|
Whether to share the sensitivities across channels/tensors |
SumOfSquaresTransform
IntraScanMotionTransform
IntraScanMotionTransform(shots=4, axis=-1, freq=True, pattern='sequential', translations=0.1, rotations=15, sos=True, coils=None, *, shared='channels', **kwargs)
Bases: NonFinalTransform
Model intra-scan motion
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
shots
|
int
|
Number of acquisition shots. The object is in a different position in each shot. |
4
|
axis
|
int
|
Axis along which shots are acquired (slice or phase-encode) |
-1
|
freq
|
bool
|
Motion happens across a phase-encode direction, which means that the k-space is build from pieces with different object position. This typically happens in "3D" acquisitions. If False, motion happens along the slice direction ("2D" acquisition). |
True
|
pattern
|
(sequential, random)
|
k-space (or slice) sampling pattern. This argument encodes the frequencies (or slices) that are acquired in each shot. The 'sequential' options assumes that frequencies are acquired in order. The 'random' option assumes that frequencies are randomly distributed across shots. |
'sequential'
|
translations
|
Sampler or float
|
Sampler (or upper-bound) for random translations (in % of FOV) |
0.1
|
rotations
|
Sampler or float
|
Sampler (or upper-bound) for random rotations (in deg) |
15
|
coils
|
Transform
|
A transform that generates a set of complex sensitivity profiles |
None
|
Other Parameters:
| Name | Type | Description |
|---|---|---|
returns |
[list or dict of] {'input', 'sos', 'uncombined', 'sens', 'netsens', 'flow', 'matrix', 'pattern'}
|
Default is 'sos'
|
shared |
(channels, tensors, channels + tensors, '')
|
Whether to share the parameters across channels/tensors |
FinalIntraScanMotionTransform
Bases: FinalTransform
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
motion
|
FinalTransform
|
|
required |
patterns
|
tensor
|
|
required |
sens
|
FinalTransform
|
|
None
|
axis
|
int
|
|
-1
|
SmallIntraScanMotionTransform
SmallIntraScanMotionTransform(translations=0.05, rotations=5, axis=-1, *, shared='channels', **kwargs)
Bases: IntraScanMotionTransform
Model intra-scan motion that happens once across k-space
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
translations
|
Sampler or float
|
Sampler (or upper-bound) for random translations (in % of FOV) |
0.05
|
rotations
|
Sampler or float
|
Sampler (or upper-bound) for random rotations (in deg) |
5
|
axis
|
int
|
Axis along which shots are acquired (slice or phase-encode) |
-1
|
shared
|
(channels, tensors, channels + tensors, '')
|
|
'channels'
|