code: def dlogpdf_df(self, f, y, Y_metadata=None):
          
          if isinstance(self.gp_link, link_functions.Identity):
              return self.dlogpdf_dlink(f, y, Y_metadata=Y_metadata)
          else:
              inv_link_f = self.gp_link.transf(f)
              dlogpdf_dlink = self.dlogpdf_dlink(inv_link_f, y, Y_metadata=Y_metadata)
              dlink_df = self.gp_link.dtransf_df(f)
              return chain_1(dlogpdf_dlink, dlink_df)
docs: Evaluates the link function link(f) then computes the derivative of log likelihood using it
          Uses the Faa di Bruno's formula for the chain rule
  
          .. math::
              \\frac{d\\log p(y|\\lambda(f))}{df} = \\frac{d\\log p(y|\\lambda(f))}{d\\lambda(f)}\\frac{d\\lambda(f)}{df}
  
          :param f: latent variables f
          :type f: Nx1 array
          :param y: data
          :type y: Nx1 array
          :param Y_metadata: Y_metadata which is not used in student t distribution - not used
          :returns: derivative of log likelihood evaluated for this point
          :rtype: 1xN array