code: def eval_jacobian(self, ordered_parameters=[], **parameters):
          
          apply_func = parameters.pop('apply_func')
          evaluated_func = super(LogLikelihood, self).__call__(
              ordered_parameters, **parameters
          )
          evaluated_jac = super(LogLikelihood, self).eval_jacobian(
              ordered_parameters, **parameters
          )
  
          result = []
          for jac_comp in evaluated_jac:
              for df in jac_comp:
                  result.append(
                      - apply_func(
                          df.flatten() / evaluated_func
                      )
                  )
          else:
              return np.atleast_1d(np.squeeze(np.array(result)))
docs: Jacobian for log-likelihood is defined as :math:`\\nabla_{\\vec{p}}( \\log( L(\\vec{p} | \\vec{x})))`.
  
          :param parameters: values for the fit parameters.
          :param apply_func: Function to apply to each component before returning it.
              The default is to sum away along the datapoint dimension using `np.nansum`.
          :return: array of length number of ``Parameter``'s in the model, with all partial derivatives evaluated at p, data.