docs: def calc_fitness(self,X,labels,fit_choice,sel):
          """computes fitness of individual output yhat.
          yhat: output of a program.
          labels: correct outputs
          fit_choice: choice of fitness function
          """
  
          if 'lexicase' in sel:
              # return list(map(lambda yhat: self.f_vec[fit_choice](labels,yhat),X))
              return np.asarray(
                                [self.proper(self.f_vec[fit_choice](labels,
                                                          yhat)) for yhat in X],
                                                          order='F')
              # return list(Parallel(n_jobs=-1)(delayed(self.f_vec[fit_choice])(labels,yhat) for yhat in X))
          else:
              # return list(map(lambda yhat: self.f[fit_choice](labels,yhat),X))
              return np.asarray([self.f[fit_choice](labels,yhat) for yhat in X],
                              order='F').reshape(-1)