From c715edd7f8b323b9214c4f9098f33e06f164af2a Mon Sep 17 00:00:00 2001
From: Mark Driver <mdd31@cantab.ac.uk>
Date: Tue, 22 Dec 2020 19:39:28 +0100
Subject: [PATCH] update to Phase, Phases and System to get name inchikey
 mapping.

This is required groundwork to solve Issue #12.
---
 phasecalculator/classes/phase.py               | 14 ++++++++++++++
 phasecalculator/classes/phases.py              | 14 ++++++++++++++
 phasecalculator/classes/system.py              | 11 +++++++++++
 phasecalculator/test/classestest/phasestest.py | 11 +++++++++++
 phasecalculator/test/classestest/phasetest.py  | 11 +++++++++++
 phasecalculator/test/classestest/systemtest.py | 12 ++++++++++++
 6 files changed, 73 insertions(+)

diff --git a/phasecalculator/classes/phase.py b/phasecalculator/classes/phase.py
index 741b753..41ee8f2 100755
--- a/phasecalculator/classes/phase.py
+++ b/phasecalculator/classes/phase.py
@@ -203,3 +203,17 @@ class Phase(object):
 
         """
         return [molecule.ssip_file_loc for molecule in self.molecule_list]
+    
+    def get_name_inchikey_map(self):
+        """Get the name inchikey mapping for all molecules in the phases.
+
+        Returns
+        -------
+        name_inchikey_map : dict
+            name: inchikey pairings for molecules.
+
+        """
+        name_inchikey_map = {}
+        for molecule in self.molecule_list:
+            name_inchikey_map[molecule.name] = molecule.inchikey
+        return name_inchikey_map
diff --git a/phasecalculator/classes/phases.py b/phasecalculator/classes/phases.py
index 67527cd..6b04fed 100755
--- a/phasecalculator/classes/phases.py
+++ b/phasecalculator/classes/phases.py
@@ -181,3 +181,17 @@ class Phases(object):
         for phase in self.phase_list:
             ssip_file_locations.extend(phase.get_ssip_file_locations())
         return set(ssip_file_locations)
+    
+    def get_name_inchikey_map(self):
+        """Get the name inchikey mapping for all molecules in the phases.
+
+        Returns
+        -------
+        name_inchikey_map : dict
+            name: inchikey pairings for molecules.
+
+        """
+        name_inchikey_map = {}
+        for phase in self.phase_list:
+            name_inchikey_map.update(phase.get_name_inchikey_map())
+        return name_inchikey_map
\ No newline at end of file
diff --git a/phasecalculator/classes/system.py b/phasecalculator/classes/system.py
index 33384d3..a09412c 100755
--- a/phasecalculator/classes/system.py
+++ b/phasecalculator/classes/system.py
@@ -268,6 +268,17 @@ class System(object):
 
         """
         return self.phases.get_ssip_file_locations()
+    
+    def get_name_inchikey_map(self):
+        """Get the name inchikey mapping for all molecules in the phases.
+
+        Returns
+        -------
+        name_inchikey_map : dict
+            name: inchikey pairings for molecules.
+
+        """
+        return self.phases.get_name_inchikey_map()
 
     def calc_fgip(self):
         """Boolean indicating whether to Calculate FGIP information for Phases.
diff --git a/phasecalculator/test/classestest/phasestest.py b/phasecalculator/test/classestest/phasestest.py
index 761dd6d..6eb8850 100755
--- a/phasecalculator/test/classestest/phasestest.py
+++ b/phasecalculator/test/classestest/phasestest.py
@@ -145,3 +145,14 @@ class PhasesTestCase(unittest.TestCase):
         expected_set = {self.molecule.ssip_file_loc}
         actual_set = self.phases.get_ssip_file_locations()
         self.assertSetEqual(expected_set, actual_set)
+    def test_get_name_inchikey_map(self):
+        """Test expected name: inchikey mapping is returned.
+
+        Returns
+        -------
+        None.
+
+        """
+        expected_dict = {'water': 'XLYOFNOQVPJJNP-UHFFFAOYSA-N'}
+        actual_dict = self.phases.get_name_inchikey_map()
+        self.assertDictEqual(expected_dict, actual_dict)
diff --git a/phasecalculator/test/classestest/phasetest.py b/phasecalculator/test/classestest/phasetest.py
index 1aeaa69..f650ece 100755
--- a/phasecalculator/test/classestest/phasetest.py
+++ b/phasecalculator/test/classestest/phasetest.py
@@ -138,3 +138,14 @@ class PhaseTestCase(unittest.TestCase):
         expected_list = [self.molecule.ssip_file_loc]
         actual_list = self.phase.get_ssip_file_locations()
         self.assertListEqual(expected_list, actual_list)
+    def test_get_name_inchikey_map(self):
+        """Test expected name: inchikey mapping is returned.
+
+        Returns
+        -------
+        None.
+
+        """
+        expected_dict = {'water': 'XLYOFNOQVPJJNP-UHFFFAOYSA-N'}
+        actual_dict = self.phase.get_name_inchikey_map()
+        self.assertDictEqual(expected_dict, actual_dict)
\ No newline at end of file
diff --git a/phasecalculator/test/classestest/systemtest.py b/phasecalculator/test/classestest/systemtest.py
index 2ca3cb4..e02dbeb 100755
--- a/phasecalculator/test/classestest/systemtest.py
+++ b/phasecalculator/test/classestest/systemtest.py
@@ -222,6 +222,18 @@ class SystemTestCase(unittest.TestCase):
         expected_set = {self.molecule.ssip_file_loc}
         actual_set = self.system.get_ssip_file_locations()
         self.assertSetEqual(expected_set, actual_set)
+    
+    def test_get_name_inchikey_map(self):
+        """Test expected name: inchikey mapping is returned.
+
+        Returns
+        -------
+        None.
+
+        """
+        expected_dict = {'water': 'XLYOFNOQVPJJNP-UHFFFAOYSA-N'}
+        actual_dict = self.system.get_name_inchikey_map()
+        self.assertDictEqual(expected_dict, actual_dict)
 
     def test_calc_fgip(self):
         """Test expected bool returned.
-- 
GitLab