code: def separate_signals(data, w_idx=[1, 2, 3]):
     
     # The transients are the first dimension in the data
     idxes_w = np.zeros(data.shape[0], dtype=bool)
     idxes_w[w_idx] = True
     # Data with water unsuppressed (first four transients - we throw away the
     # first one which is probably crap):
     w_data = data[np.where(idxes_w)]
     # Data with water suppressed (the rest of the transients):
     idxes_nonw = np.zeros(data.shape[0], dtype=bool)
     idxes_nonw[np.where(~idxes_w)] = True
     idxes_nonw[0] = False
     w_supp_data = data[np.where(idxes_nonw)]
  
     return w_data, w_supp_data
docs: Separate the water and non-water data from each other
  
     Parameters
     ----------
     data : nd array
        FID signal with shape (transients, echos, coils, time-points)
  
     w_idx : list (optional)
        Indices into the 'transients' (0th) dimension of the data for the signal
        that is not water-suppressed
  
     Returns
     -------
     water_data, w_supp_data : tuple
         The first element is an array with the transients in the data in which
         no water suppression was applied. The second element is an array with
         the transients in which water suppression was applied