code: def test_evaluate_quantecon(self):
      # check against example in https://python.quantecon.org/opt_transport.html
      # with normalization
      p = pd.Series([50, 100, 150])
      q = pd.Series([25, 115, 60, 30, 70])
      C = np.array(
          [
              [10, 15, 20, 20, 40],
              [20, 40, 15, 30, 30],
              [30, 35, 40, 55, 25],
          ]
      )
      expected = 24.083333
      actual = _evaluate(p, q, cost_matrix=C)
      assert abs(expected - actual) < 1e-6
  
imports: import numpy
  import pandas
  from aif360.metrics.ot_metric import _normalize, _transform, _evaluate
  from aif360.sklearn.metrics import ot_distance
  from ot import emd2
  import unittest
  from unittest import TestCase
label_desc: Use image node_id 1 for calling the TestEvaluate obj's underlying member method code with example usage: obj.test_evaluate_quantecon() without return types