docs: def compute_skew_stats(intra, inter):
      """Returns two dictionaries reporting (skew, skew_pval) for all groups"""
      # Intra (within a group) stats
      intra_skew = {}
      for k, v in intra.items():
          skew = st.skew(v)
          try:
              skew_zstat, skew_pval = st.skewtest(v)
          except ValueError:  # if sample size too small
              skew_zstat, skew_pval = (0, 1)
          intra_skew[k] = (skew, skew_zstat, skew_pval)
  
      # Inter (between groups) stats
      inter_skew = {}
      for k, v in inter.items():
          # Inter skew stats
          skew_sep = st.skew(v.flatten())
          try:
              skew_sep_zstat, skew_sep_pval = st.skewtest(v.flatten())
          except ValueError:
              skew_sep_zstat, skew_sep_pval = (0, 1)
          inter_skew['-'.join(k)] = (skew_sep, skew_sep_zstat, skew_sep_pval)
  
          # Significance of difference between intra and inter distributions
          for intra_key in k:
              try:
                  separation_zstat, separation_pval = mannwhitneyu(intra[intra_key],
                                                                   v.flatten(),
                                                                   alternative='less')
              except ValueError:  # All numbers are identical in mannwhitneyu
                  separation_zstat, separation_pval = (0, 1)
              inter_skew['{}<{}'.format(intra_key, '-'.join(k))] = (separation_zstat, separation_pval)
  
      return intra_skew, inter_skew