FAQ | This is a LIVE service | Changelog

Skip to content
Snippets Groups Projects
Commit 68d5b110 authored by Mark Driver's avatar Mark Driver
Browse files

update to add boolean in methods to determine which SSIP description to use.

Described in issue #3. This is just for the processing of a phase information csv file, CLI update to follow.
parent 00fce002
No related branches found
No related tags found
No related merge requests found
......@@ -34,16 +34,18 @@ LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.WARN)
NAME_INCHIKEY_MAP = pureinf.get_name_inchikey_mapping()
INCHIKEY_SSIP_FILE_DICT = pureinf.get_ssip_file_dict()
INCHIKEY_POLARISED_SSIP_FILE_DICT = pureinf.get_ssip_file_dict()
INCHIKEY_UNPOLARISED_SSIP_FILE_DICT = pureinf.get_unpolarised_ssip_file_dict()
def convert_csv_file_to_phases(csv_filename):
def convert_csv_file_to_phases(csv_filename, unpolarised_ssips):
"""Read CSV file and convert contents to Phases.
Parameters
----------
csv_filename : str
CSV filename.
unpolarised_ssips : boolean
True if unpolarised SSIP descriptions are to be used.
Returns
-------
......@@ -52,7 +54,7 @@ def convert_csv_file_to_phases(csv_filename):
"""
csv_file_contents = read_csv_file(csv_filename)
return create_phases(csv_file_contents)
return create_phases(csv_file_contents, unpolarised_ssips)
def read_csv_file(csv_filename):
......@@ -74,13 +76,15 @@ def read_csv_file(csv_filename):
return [row for row in csv_reader]
def create_phases(csv_file_contents):
def create_phases(csv_file_contents, unpolarised_ssips):
"""Create Phases for csv file contents
Parameters
----------
csv_file_contents : list of lists
List of CSV file lines.
unpolarised_ssips : boolean
True if unpolarised SSIP descriptions are to be used.
Returns
-------
......@@ -90,11 +94,11 @@ def create_phases(csv_file_contents):
"""
phase_list = []
for csv_file_line in csv_file_contents:
phase_list.append(create_phase(csv_file_line))
phase_list.append(create_phase(csv_file_line, unpolarised_ssips))
return Phases(phase_list)
def create_phase(csv_file_line):
def create_phase(csv_file_line, unpolarised_ssips):
"""Create Phase from information list.
......@@ -102,6 +106,8 @@ def create_phase(csv_file_line):
----------
csv_file_line : list of str
line from CSV file.
unpolarised_ssips : boolean
True if unpolarised SSIP descriptions are to be used.
Returns
-------
......@@ -114,11 +120,11 @@ def create_phase(csv_file_line):
for i in range(1, len(csv_file_line), 2):
name = csv_file_line[i]
molefraction = float(csv_file_line[i + 1])
molecule_list.append(create_molecule(name, molefraction))
molecule_list.append(create_molecule(name, molefraction, unpolarised_ssips))
return Phase(molecule_list, temperature)
def create_molecule(name, molefraction):
def create_molecule(name, molefraction, unpolarised_ssips):
"""Create Molecule.
Parameters
......@@ -127,6 +133,8 @@ def create_molecule(name, molefraction):
Molecule name.
molefraction : float
mole fraction of molecule in phase.
unpolarised_ssips : boolean
True if unpolarised SSIP descriptions are to be used.
Raises
------
......@@ -141,7 +149,10 @@ def create_molecule(name, molefraction):
"""
try:
inchikey = NAME_INCHIKEY_MAP[name]
ssip_file_loc = INCHIKEY_SSIP_FILE_DICT[inchikey]
if unpolarised_ssips:
ssip_file_loc = INCHIKEY_UNPOLARISED_SSIP_FILE_DICT[inchikey]
else:
ssip_file_loc = INCHIKEY_POLARISED_SSIP_FILE_DICT[inchikey]
return Molecule(name, inchikey, ssip_file_loc, molefraction)
except KeyError as keyerr:
LOGGER.error("Invalid entry: %s Not found.", name)
......
......@@ -54,7 +54,7 @@ class PhaseCSVConverterTestCase(unittest.TestCase):
self.molecule = Molecule(
"water",
"XLYOFNOQVPJJNP-UHFFFAOYSA-N",
phasecsv.INCHIKEY_SSIP_FILE_DICT["XLYOFNOQVPJJNP-UHFFFAOYSA-N"],
phasecsv.INCHIKEY_POLARISED_SSIP_FILE_DICT["XLYOFNOQVPJJNP-UHFFFAOYSA-N"],
1.0,
)
self.phase = Phase([self.molecule], self.temperature)
......@@ -77,7 +77,7 @@ class PhaseCSVConverterTestCase(unittest.TestCase):
None.
"""
actual_phases = phasecsv.convert_csv_file_to_phases(self.example_csv)
actual_phases = phasecsv.convert_csv_file_to_phases(self.example_csv,False)
self.assertEqual(self.phases, actual_phases)
def test_read_csv_file(self):
......@@ -99,7 +99,7 @@ class PhaseCSVConverterTestCase(unittest.TestCase):
None.
"""
actual_phases = phasecsv.create_phases(self.csv_file_contents)
actual_phases = phasecsv.create_phases(self.csv_file_contents, False)
self.assertEqual(self.phases, actual_phases)
def test_create_phase(self):
......@@ -110,7 +110,7 @@ class PhaseCSVConverterTestCase(unittest.TestCase):
None.
"""
actual_phase = phasecsv.create_phase(["298.0", "water", "1.0"])
actual_phase = phasecsv.create_phase(["298.0", "water", "1.0"], False)
self.assertEqual(self.phase, actual_phase)
def test_create_molecule(self):
......@@ -121,7 +121,7 @@ class PhaseCSVConverterTestCase(unittest.TestCase):
None.
"""
actual_molecule = phasecsv.create_molecule("water", 1.0)
actual_molecule = phasecsv.create_molecule("water", 1.0, False)
self.assertEqual(self.molecule, actual_molecule)
def test_create_temperature(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment