code: def _gather_local_posterior(self, use_gather,
                                  gather_size, gather_offset):
          
          if use_gather:
              self.comm.Gather(self.local_posterior_,
                               self.gather_posterior, root=0)
          else:
              target = [
                  self.gather_posterior,
                  gather_size,
                  gather_offset,
                  MPI.DOUBLE]
              self.comm.Gatherv(self.local_posterior_, target)
          return self
docs: Gather/Gatherv local posterior
  
  
          Parameters
          ----------
          comm : object
              MPI communication group
  
          use_gather : boolean
              Whether to use Gather or Gatherv
  
          gather_size : 1D array
              The size of each local posterior
  
          gather_offset : 1D array
              The offset of each local posterior
  
  
          Returns
          -------
          HTFA
              Returns the instance itself.
  
  
          Notes
          -----
          We use numpy array rather than generic Python objects for MPI
          communication because Gatherv is only supported for the former.
          https://pythonhosted.org/mpi4py/usrman/tutorial.html