docs: def app_score(self):
          """ Computes the area under the app curve. """
          # compute curve
          precisions, pct_pred_pos, taus = self.precision_pct_pred_pos_curve(interval=False)
  
          # compute area
          app = 0
          total = 0
          for k in range(len(precisions)-1):
              # read cur data
              cur_prec = precisions[k]
              cur_pp = pct_pred_pos[k]
              cur_tau = taus[k]
  
              # read next data
              next_prec = precisions[k+1]
              next_pp = pct_pred_pos[k+1]
              next_tau = taus[k+1]
              
              # approximate with rectangles
              mid_prec = (cur_prec + next_prec) / 2.0
              width_pp = np.abs(next_pp - cur_pp)
              app += mid_prec * width_pp
              total += width_pp
  
          return app