code: def get_wigner(z, freq, sample_freq, histbins=200, show_plot=False):
      
      
      phase, phase_slices = extract_slices(z, freq, sample_freq, show_plot=False)
  
      counts_array, bin_edges = histogram_phase(phase_slices, phase, histbins, show_plot=show_plot)
  
      diff = bin_edges[1] - bin_edges[0]
      bin_centres = bin_edges[:-1] + diff
  
      iradon_output = _iradon_sart(counts_array, theta=phase)
  
      #_plt.imshow(iradon_output, extent=[bin_centres[0], bin_centres[-1], bin_centres[0], bin_centres[-1]])
      #_plt.show()
  
      return iradon_output, bin_centres
docs: Calculates an approximation to the wigner quasi-probability distribution
      by splitting the z position array into slices of the length of one period
      of the motion. This slice is then associated with phase from -180 to 180
      degrees. These slices are then histogramed in order to get a distribution
      of counts of where the particle is observed at each phase. The 2d array
      containing the counts varying with position and phase is then passed through
      the inverse radon transformation using the Simultaneous Algebraic 
      Reconstruction Technique approximation from the scikit-image package.
  
      Parameters
      ----------
      z : ndarray
          trace of z motion
      freq : float
          frequency of motion
      sample_freq : float
          sample frequency of the z array
      histbins : int, optional (default=200)
          number of bins to use in histogramming data for each phase
      show_plot : bool, optional (default=False)
          Whether or not to plot the phase distribution
  
      Returns
      -------
      iradon_output : ndarray
          2d array of size (histbins x histbins)
      bin_centres : ndarray
          positions of the bin centres