code: def partial_derivative_mu(mu, sigma, low, high, data):
          
          pd_mu = np.sum(data - mu) / sigma ** 2
          pd_mu -= len(data) * ((norm.pdf(low, mu, sigma) - norm.pdf(high, mu, sigma))
                                / (norm.cdf(high, mu, sigma) - norm.cdf(low, mu, sigma)))
          return -pd_mu
docs: The partial derivative with respect to the mean.
  
          Args:
              mu (float): the mean of the truncated normal
              sigma (float): the std of the truncated normal
              low (float): the lower truncation bound
              high (float): the upper truncation bound
              data (ndarray): the one dimension list of data points for which we want to calculate the likelihood
  
          Returns:
              float: the partial derivative evaluated at the given point