code: def brent_optimise(node1, node2, min_brlen=0.001, max_brlen=10, verbose=False):
      
      from scipy.optimize import minimize_scalar
      wrapper = BranchLengthOptimiser(node1, node2, (min_brlen + max_brlen) / 2.)
      n = minimize_scalar(lambda x: -wrapper(x)[0], method='brent', bracket=(min_brlen, max_brlen))['x']
      if verbose:
          logger.info(wrapper)
      if n < min_brlen:
          n = min_brlen
          wrapper(n)
      return n, -1 / wrapper.get_d2lnl(n)
docs: Optimise ML distance between two partials. min and max set brackets