code: def vm_step(self, freeze=()):
      classes = list(range(self.nclasses))
      for i in freeze:
          classes.remove(i)
  
      for i in classes:
          P = self.ppm[..., i][self.mask].ravel()
          Z = nonzero(P.sum())
          tmp = self.data.T * P.T
          mu = tmp.sum(1) / Z
          mu_ = mu.reshape((len(mu), 1))
          sigma = np.dot(tmp, self.data) / Z - np.dot(mu_, mu_.T)
          self.mu[i] = mu
          self.sigma[i] = sigma
  
file_path: nipy/nipy/algorithms/segmentation/segmentation.py
imports: import numpy
  from ._segmentation import _interaction_energy, _ve_step
label_desc: Use image node_id 3 for calling the Segmentation obj's underlying member method code with example usage: obj.vm_step(freeze) without return types