code: def partial_derivative_sigma(mu, sigma, low, high, data):
          
          pd_sigma = np.sum(-(1 / sigma) + ((data - mu) ** 2 / (sigma ** 3)))
          pd_sigma -= len(data) * (((low - mu) * norm.pdf(low, mu, sigma) - (high - mu) * norm.pdf(high, mu, sigma))
                                   / (sigma * (norm.cdf(high, mu, sigma) - norm.cdf(low, mu, sigma))))
          return -pd_sigma
docs: The partial derivative with respect to the standard deviation.
  
          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