pymuster.core package
Submodules
pymuster.core.field_calculus module
Containing useful functions for field calculus
- pymuster.core.field_calculus.curl(J)
Returns the curl of a 3D field :param J: Jacobian of shape (batch_size, 3, 3, x, y, z)
- pymuster.core.field_calculus.determinant(J)
Computes the determinant of a 3x3 matrix
- pymuster.core.field_calculus.divergence(J)
Returns the divergence of a 3D field :param J: Jacobian of shape (batch_size, 3, 3, x, y, z)
- pymuster.core.field_calculus.forward_alpha(v_t, sp_tr, n_iter, dt=1)
helper function for step (4): Calculation of forward flows @param v_t: the velocity field @param sp_tr: the spatial transformer @return:
- pymuster.core.field_calculus.integrate_forward_flow(v, sp_tr, n_iter=5, dt=1)
implements step (4): Calculation of forward flows @return:
- pymuster.core.field_calculus.jacobian(x, pix_dim=(1.0, 1.0, 1.0), filter=False, midpoint=False)
Calculates the Jacobian of a 3D field :param x: tensor of shape (batch_size, channels, x, y, z)
- Returns:
jacobian of shape (batch_size, 3, channels, x, y, z)
- Return type:
J
- pymuster.core.field_calculus.laplacian(J, pix_dim=(1.0, 1.0, 1.0))
Return the second order jacobian of a field
pymuster.core.losses module
- class pymuster.core.losses.Fourier(filter_omega, img_size, pix_dim)
Bases:
object
Spatial jacobian loss using the fourier space.
- Parameters:
filter_omega (float) – The cutoff frequency of the filter
img_size (tuple) – The size of the image
pix_dim (tuple) – The pixel dimensions of the image
- filter(y)
- loss(y_true, y_pred, mask=None)
- class pymuster.core.losses.GaussNCC(filter_omega, img_size, pix_dim, reduce=True, scale_invariant=True)
Bases:
object
- loss(y_true, y_pred, mask=None)
- class pymuster.core.losses.GroupVELLN(kernal_size=7, kernal_type='gaussian', pix_dim=(1, 1, 1), img_size=(256, 256, 256))
Bases:
object
Variance Estimating Local Linear compansated Normal distribution loss
- Parameters:
kernal_size (int) – The size of the kernal used for calculating the local mean
- loss(images, masks=None)
- Parameters:
y_true (torch.Tensor) – The true field
y_pred (torch.Tensor) – The predicted field
mask (torch.Tensor) – The mask used for calculating the loss
- class pymuster.core.losses.LogLinLoss(kernal_size=7, kernal_type='gaussian', pix_dim=(1, 1, 1), img_size=(256, 256, 256), log_transform=True)
Bases:
object
Assuming I_ix = a_i I_x e find the I_ix that maximizes the likelihood of this model
- Parameters:
kernal_size (int) – The size of the kernal used for calculating the local mean
- loss(images, masks=None, sigma_beta=1.0)
- Parameters:
images (torch.Tensor) – the images warped to the same space
mask (torch.Tensor) – The mask used for calculating the loss
- class pymuster.core.losses.MSE
Bases:
object
Mean squared error loss.
- loss(y_true, y_pred, mask=None)
- class pymuster.core.losses.MutualInformation(sigma=0.1, num_bins=256, normalize=True, reduce=True)
Bases:
Module
- getMutualInformation(input1, input2)
input1: B, C, H, W, D input2: B, C, H, W, D
return: scalar
- jointPdf(kernel_values1, kernel_values2)
- loss(y_true, y_pred)
- marginalPdf(values)
- class pymuster.core.losses.NCC(kernal_size=7, reduce=True, scale_invariant=True)
Bases:
object
Normalized Local Cross Correlation.
- Parameters:
kernal_size (int) – The size of the kernal used for calculating the local mean
- loss(y_true, y_pred, mask=None)
- Parameters:
y_true (torch.Tensor) – The true field
y_pred (torch.Tensor) – The predicted field
mask (torch.Tensor) – The mask used for calculating the loss
- class pymuster.core.losses.NCCS(kernal_size=13)
Bases:
object
NCC with Sobel filter. See: https://doi.org/10.3390/app12062828
- Parameters:
kernal_size (int) – The size of the kernal used for calculating the local mean
- loss(y_true, y_pred, mask=None)
- class pymuster.core.losses.VELLN(kernal_size=7, kernal_type='gaussian', pix_dim=(1, 1, 1), img_size=(256, 256, 256))
Bases:
object
Variance Estimating Local Linear compansated Normal distribution loss
- Parameters:
kernal_size (int) – The size of the kernal used for calculating the local mean
- loss(y_true, y_pred, sigma_true, sigma_pred, mask=None)
- Parameters:
y_true (torch.Tensor) – The true field
y_pred (torch.Tensor) – The predicted field
mask (torch.Tensor) – The mask used for calculating the loss
- pymuster.core.losses.fourier_filter(img, filter_response, dims=(-3, -2, -1))
pymuster.core.utils module
- class pymuster.core.utils.RunningMeanVar(n=10)
Bases:
object
This class is used to calculate the mean and variance of the n last values .. rubric:: Example
>>> rmv = RunningMeanVar(n=10) >>> for i in range(100): >>> rmv.add(i) >>> print(rmv.mean())
- Parameters:
n – The number of values to use for calculating the mean and variance
- add(value)
Add a value to the running mean and variance :param value: The value to add
- mean()
Returns: The mean of the last n values
- var()
Returns: The variance of the last n values
- pymuster.core.utils.VectorPearsonCorrelation(x, y)
Calculates the Pearson correlation between two vectors sets :param x: (num_samples, num_features) :param y: (num_samples, num_features)
- pymuster.core.utils.get_color_wheel(x, y, r, rgb)
Create a color wheel :param x: x coordinate of the center of the color wheel :param y: y coordinate of the center of the color wheel :param r: radius of the color wheel :param rgb: rgb color of the color wheel
- pymuster.core.utils.get_dig_ind(N, offset)
Returns the indices of the diagonal elements of the offset diagonal matrices.
- pymuster.core.utils.grid(grid_size, grid_interval)
Constructs a 3d image of a grid with a given size For visualization purposes :param grid_size: (x, y, z) :param grid_interval: The interval between the grid lines
- pymuster.core.utils.plot_vector_field(deformation, axis, slice_in=None, vmax=None, color_wheel=True)
Visualize a vector field :param deformation: 3d tensor of shape [x, y, z, 3] :param slice_ind: slice to visualize :param axis: axis to visualize
- pymuster.core.utils.render_brain(img, theta, chi, N, zoom, gpu=False, alpha_mask=None)
Renderer for 3d brain output_image :param img: 3d brain image [x, y, z] :param theta: viewing angle rotate :param chi: viewing angle up and down :param N: camera grid resolution in x axis :param zoom: zoom factor
- pymuster.core.utils.view_brain(img, view_3d=False, gpu=False, vmax=None)
Visualize brain output_image :param img: 3d brain image tensor or numpy array [x, y, z] :param view_3d: if True, show 3d brain image
- pymuster.core.utils.view_stacked_brains(imgs, n, view_3d=False, gpu=False)
Place n brain views in a row :param imgs: tensor or numpy array of shape (n, 1, x, y, z) :param n: number of brain views to place in a row, is set to batch size if n > batch size :param view_3d: if True, render the 3d view. Might be slow