class_docstr: A variational block based on Sriram et. al., "End-to-end variational networks for accelerated MRI reconstruction".
  It applies data consistency and refinement to the intermediate kspace and combines those results.
  
  Modified and adopted from: https://github.com/facebookresearch/fastMRI
  
  Args:
      refinement_model: the model used for refinement (typically a U-Net but can be any deep learning model
          that performs well when the input and output are in image domain (e.g., a convolutional network).
      spatial_dims: is 2 for 2D data and is 3 for 3D data
docstr: Applies data consistency to input x. Suppose x is an intermediate estimate of the kspace and ref_kspace
  is the reference under-sampled measurement. This function returns mask * (x - ref_kspace). View this as the
  residual between the original under-sampled kspace and the estimate given by the network.
  
  Args:
      x: 2D kspace (B,C,H,W,2) with the last dimension being 2 (for real/imaginary parts) and C denoting the
          coil dimension. 3D data will have the shape (B,C,H,W,D,2).
      ref_kspace: original under-sampled kspace with the same shape as x.
      mask: the under-sampling mask with shape (1,1,1,W,1) for 2D data or (1,1,1,1,D,1) for 3D data.
  
  Returns:
      Output of DC block with the same shape as x
docstr_tok: ["Applies","data","consistency","to","input","x",".","Suppose","x","is","an","intermediate","estimate","of","the","kspace","and","ref_kspace","is","the","reference","under-sampled","measurement",".","This","function","returns","mask","*","(","x","-","ref_kspace",")",".","View","this","as","the","residual","between","the","original","under-sampled","kspace","and","the","estimate","given","by","the","network",".","Args",":","x",":","2D","kspace","(","B",",","C",",","H",",","W,2",")","with","the","last","dimension","being","2","(","for","real\/imaginary","parts",")","and","C","denoting","the","coil","dimension",".","3D","data","will","have","the","shape","(","B",",","C",",","H",",","W",",","D,2",")",".","ref_kspace",":","original","under-sampled","kspace","with","the","same","shape","as","x.","mask",":","the","under-sampling","mask","with","shape","(","1,1,1",",","W,1",")","for","2D","data","or","(","1,1,1,1",",","D,1",")","for","3D","data",".","Returns",":","Output","of","DC","block","with","the","same","shape","as","x"]
code: def soft_dc(
      self, x: Tensor, ref_kspace: Tensor, mask: Tensor
  ) -> Tensor:
      """
      Applies data consistency to input x. Suppose x is an intermediate estimate of the kspace and ref_kspace
      is the reference under-sampled measurement. This function returns mask * (x - ref_kspace). View this as the
      residual between the original under-sampled kspace and the estimate given by the network.
  
      Args:
          x: 2D kspace (B,C,H,W,2) with the last dimension being 2 (for real/imaginary parts) and C denoting the
              coil dimension. 3D data will have the shape (B,C,H,W,D,2).
          ref_kspace: original under-sampled kspace with the same shape as x.
          mask: the under-sampling mask with shape (1,1,1,W,1) for 2D data or (1,1,1,1,D,1) for 3D data.
  
      Returns:
          Output of DC block with the same shape as x
      """
      return (
          torch.where(mask, x - ref_kspace, self.zeros) * self.dc_weight
      )
  
file_path: MONAI/monai/apps/reconstruction/networks/blocks/varnetblock.py
imports: from __future__ import annotations
  import torch
  import torch.nn
  from torch import Tensor
  from monai.apps.reconstruction.networks.nets.utils import sensitivity_map_expand, sensitivity_map_reduce
label_desc: Use image node_id 2 for calling the VarNetBlock obj's underlying member method code with example usage: obj.soft_dc(x, ref_kspace, mask) and returns: unknown