From ef4d25f62b4473cdca7cdfcba5f1a956a14e1251 Mon Sep 17 00:00:00 2001 From: Mark Driver <mdd31@cam.ac.uk> Date: Mon, 24 Jul 2017 10:01:54 +0100 Subject: [PATCH] added method to do polynomial analysis on a subset of points. --- .../polynomialanalysis/polynomialplotting.py | 10 ++++++++++ .../polynomialplottingtest.py | 15 +++++++++++++++ .../test/resources/water_poly_fit_subset.csv | 3 +++ 3 files changed, 28 insertions(+) create mode 100644 solventmapcreator/test/resources/water_poly_fit_subset.csv diff --git a/solventmapcreator/polynomialanalysis/polynomialplotting.py b/solventmapcreator/polynomialanalysis/polynomialplotting.py index d7fdbd1..9c4faab 100644 --- a/solventmapcreator/polynomialanalysis/polynomialplotting.py +++ b/solventmapcreator/polynomialanalysis/polynomialplotting.py @@ -31,6 +31,16 @@ def parse_energies_create_plot_input_data(free_energy_filename, polynomial_order plot_data['figure_label'] = free_energy_filename.replace('.xml', '') return plot_data +def parse_energies_and_output_poly_data_subset(free_energy_filename, order_list, poly_filename, subset_list): + """This reads in the energy information, and then selects teh subset of + points to carry out the analysis on, outputs the polynomial information to file. + """ + datapoints = parse_free_energy_from_file_with_data_arrays(free_energy_filename) + datapoints_subset = datapoints.createDatapointsSubGroup(subset_list) + datapoints_subset.createDataArrays() + return write_poly_data_to_file(datapoints_subset, order_list, poly_filename) + + def parse_energies_and_output_poly_data(free_energy_filename, order_list, poly_filename): """This reads in the energy information, and then outputs the polynomial information to file. diff --git a/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py b/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py index 3a50db7..5b01f83 100644 --- a/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py +++ b/solventmapcreator/test/polynomialanalysistest/polynomialplottingtest.py @@ -30,6 +30,8 @@ class PolynomialPlottingTestCase(unittest.TestCase): del self.expected_datapoints if os.path.isfile("actual_water_poly_fit.csv"): os.remove("actual_water_poly_fit.csv") + if os.path.isfile("actual_water_poly_fit_subset.csv"): + os.remove("actual_water_poly_fit_subset.csv") def test_parse_energies_create_plot_input_data(self): """Test to see expected plot data is returned. """ @@ -69,6 +71,19 @@ class PolynomialPlottingTestCase(unittest.TestCase): else: LOGGER.debug("assert equal string") self.assertEqual(actual_dict[key], expected_dict[key]) + def test_parse_energies_and_output_poly_data_subset(self): + """Test to see if expected_fit is done on a smaller subset of points. + """ + expected_file_name = "resources/water_poly_fit_subset.csv" + actual_file_name = "actual_water_poly_fit_subset.csv" + subset_list = ["-5.400solute", "-4.300solute", "-9.100solute", "-11.100solute", "-15.400solute"] + poly_file_out = polynomialplotting.parse_energies_and_output_poly_data_subset("resources/water.xml", [2, 4], actual_file_name, subset_list) + self.assertEqual(0, poly_file_out) + with open(expected_file_name, 'r') as exp_file: + exp_file_lines = exp_file.readlines() + with open(actual_file_name, 'r') as act_file: + act_file_lines = act_file.readlines() + self.assertListEqual(act_file_lines, exp_file_lines) def test_parse_energies_and_output_poly_data(self): """Test to see if expected polynomial fit information is outputted to file. """ diff --git a/solventmapcreator/test/resources/water_poly_fit_subset.csv b/solventmapcreator/test/resources/water_poly_fit_subset.csv new file mode 100644 index 0000000..bd92d55 --- /dev/null +++ b/solventmapcreator/test/resources/water_poly_fit_subset.csv @@ -0,0 +1,3 @@ +Order RMSE Covariance Coefficients +2 0.0188857 0.0017833 6.3245323 2.8927088 -0.0017566 +4 0.0000000 5.0388427 2.2906276 -0.0985583 -0.0064807 -0.0001546 -- GitLab