From 9deae2f5b825be62ede4ea21fc3c5dc72c3594bd Mon Sep 17 00:00:00 2001
From: Mark Driver <mdd31@cam.ac.uk>
Date: Thu, 10 Aug 2017 22:10:11 +0100
Subject: [PATCH] update to use new polynomial calculation method.

---
 .../polynomialcomparison.py                   | 10 ++++++---
 .../polynomialcomparisontest.py               | 22 ++++++++++++++++---
 2 files changed, 26 insertions(+), 6 deletions(-)

diff --git a/solventmapcreator/polynomialanalysis/polynomialcomparison.py b/solventmapcreator/polynomialanalysis/polynomialcomparison.py
index ee9c0e5..57359d9 100644
--- a/solventmapcreator/polynomialanalysis/polynomialcomparison.py
+++ b/solventmapcreator/polynomialanalysis/polynomialcomparison.py
@@ -8,7 +8,7 @@ Script for the comparison of the polynomial fits of different solvents.
 
 import logging
 import numpy as np
-import numpy.polynomial.polynomial as poly
+import solventmapcreator.polynomialanalysis.polynomialvaluecalculator as polyvalcalc
 import scipy.spatial.distance as sciptdist
 
 logging.basicConfig()
@@ -128,10 +128,14 @@ def calculate_polynomial_values_from_dict(x_values, solvent_info_dict, polynomia
 def get_polynomial_coefficients(solvent_info_dict, polynomial_order):
     """This returns the polynomial coefficients for the selected order.
     """
-    return solvent_info_dict[polynomial_order]["coefficients"]
+    if "positive" in solvent_info_dict[polynomial_order].keys():
+        return {"positive":solvent_info_dict[polynomial_order]["positive"]["coefficients"],
+                "negative":solvent_info_dict[polynomial_order]["negative"]["coefficients"]}
+    else:
+        return solvent_info_dict[polynomial_order]["coefficients"]
 
 
 def calculate_polynomial_values(x_values, polynomial_coefficients):
     """This returns the values for the given polynomial function coefficients.
     """
-    return poly.polyval(x_values, polynomial_coefficients)
+    return polyvalcalc.calculate_polynomial_values(x_values, polynomial_coefficients)
diff --git a/solventmapcreator/test/polynomialanalysistest/polynomialcomparisontest.py b/solventmapcreator/test/polynomialanalysistest/polynomialcomparisontest.py
index 999d8fc..84fb2fa 100644
--- a/solventmapcreator/test/polynomialanalysistest/polynomialcomparisontest.py
+++ b/solventmapcreator/test/polynomialanalysistest/polynomialcomparisontest.py
@@ -22,20 +22,30 @@ class PolynomialComparisonTestCase(unittest.TestCase):
         """Set up before tests
         """
         self.poly_data_by_solvent_id = {"poly_fit":{2:{"coefficients":np.array([0.0, 
-                                                                                             0.0, 1.0]),
+                                                                                0.0, 1.0]),
                                                                 "RMSE":0.0254303,
                                                                 "order":2,
                                                                 "covar":0.0008143}},
                                         "poly_fit2":{2:{"coefficients":np.array([1.0, 
-                                                                                          0.0, 1.0]),
+                                                                                 0.0, 1.0]),
                                                                  "RMSE":0.0354303,
                                                                  "order":2,
                                                                  "covar":0.0008143}},
                                         "poly_fit3":{2:{"coefficients":np.array([0.0, 
-                                                                                          0.0, 2.0]),
+                                                                                 0.0, 2.0]),
                                                                  "RMSE":0.0354303,
                                                                  "order":2,
                                                                  "covar":0.0008143}}}
+        self.poly_data2 = {"poly_fit":{2:{"positive":{"coefficients":np.array([0.0, 
+                                                                               0.0, 1.0]),
+                                                      "RMSE":0.0254303,
+                                                      "order":2,
+                                                      "covar":0.0008143}},
+                                          "negative":{"coefficients":np.array([0.0, 
+                                                                               0.0, 1.0]),
+                                                      "RMSE":0.0254303,
+                                                      "order":2,
+                                                      "covar":0.0008143}}}
         self.x_values = np.array([-2.0, -1.0, 0.0, 1.0, 2.0])
         self.poly_values_dict = {"poly_fit":np.array([4.0, 1.0, 0.0, 1.0, 4.0]),
                                  "poly_fit2":np.array([5.0, 2.0, 1.0, 2.0, 5.0]), 
@@ -166,6 +176,12 @@ class PolynomialComparisonTestCase(unittest.TestCase):
         expected_coefficients = np.array([0.0, 0.0, 1.0])
         actual_coefficients = polynomialcomparison.get_polynomial_coefficients(self.poly_data_by_solvent_id["poly_fit"], 2)
         np.testing.assert_array_almost_equal(expected_coefficients, actual_coefficients)
+        expected_coefficient_dict = {"positive":np.array([0.0, 0.0, 1.0]),
+                                     "negative":np.array([0.0, 0.0, 1.0])}
+        actual_coefficent_dict = polynomialcomparison.get_polynomial_coefficients(self.poly_data2["poly_fit"], 2)
+        for key in expected_coefficient_dict.keys():
+            np.testing.assert_array_almost_equal(expected_coefficient_dict[key],
+                                                 actual_coefficent_dict[key])
     def test_calculate_polynomial_values(self):
         """Test to see if expected values are returned.
         """
-- 
GitLab