docs: def JMS_to_Fierz_lep(C, ddll):
      """From JMS to semileptonic Fierz basis for Class V.
      `ddll` should be of the form 'sbl_enu_tau', 'dbl_munu_e' etc."""
      if ddll[:2] == 'uc':
          s = uflav[ddll[0]]
          b = uflav[ddll[1]]
          q = 'u'
      else:
          s = dflav[ddll[0]]
          b = dflav[ddll[1]]
          q = 'd'
      l = lflav[ddll[4:ddll.find('n')]]
      lp = lflav[ddll[ddll.find('_',5)+1:len(ddll)]]
      ind = ddll.replace('l_','').replace('nu_','')
      return {
          'F' + ind + '9' : C["V" + q + "eLR"][s, b, l, lp] / 2
                            + C["Ve" + q + "LL"][l, lp, s, b] / 2,
          'F' + ind + '10' : C["V" + q + "eLR"][s, b, l, lp] / 2
                             - C["Ve" + q + "LL"][l, lp, s, b] / 2,
          'F' + ind + 'S' : C["Se" + q + "RL"][lp, l, b, s].conj() / 2
                            + C["Se" + q + "RR"][l, lp, s, b] / 2,
          'F' + ind + 'P' : - C["Se" + q + "RL"][lp, l, b, s].conj() / 2
                            + C["Se" + q + "RR"][l, lp, s, b] / 2,
          'F' + ind + 'T' : C["Te" + q + "RR"][l, lp, s, b] / 2
                            + C["Te" + q + "RR"][lp, l, b, s].conj() / 2,
          'F' + ind + 'T5' : C["Te" + q + "RR"][l, lp, s, b] / 2
                             - C["Te" + q + "RR"][lp, l, b, s].conj() / 2,
          'F' + ind + '9p' : C["Ve" + q + "LR"][l, lp, s, b] / 2
                             + C["Ve" + q + "RR"][l, lp, s, b] / 2,
          'F' + ind + '10p' : -C["Ve" + q + "LR"][l, lp, s, b] / 2
                              + C["Ve" + q + "RR"][l, lp, s, b] / 2,
          'F' + ind + 'Sp' : C["Se" + q + "RL"][l, lp, s, b] / 2
                             + C["Se" + q + "RR"][lp, l, b, s].conj() / 2,
          'F' + ind + 'Pp' : C["Se" + q + "RL"][l, lp, s, b] / 2
                              - C["Se" + q + "RR"][lp, l, b, s].conj() / 2,
          }