Skip to content

Commit

Permalink
great advance one more day and i got unifac
Browse files Browse the repository at this point in the history
  • Loading branch information
SalvadorBrandolin committed Oct 16, 2024
1 parent ed73bcc commit 3969995
Show file tree
Hide file tree
Showing 9 changed files with 133 additions and 84 deletions.
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ target-version = ["py310"]
[tool.pytest.ini_options]
markers = [
# Models markers
"UNIFAC: classic UNIFAC model tests",
"PSRK: predictive SRK model tests",
"Joback: Joback-Reid contribution model tests",
"unifac: classic UNIFAC model tests",
"psrk: predictive SRK model tests",
"joback: Joback-Reid contribution model tests",
# Tests cases markers
"acids: tests cases for acids",
"alcohols: tests cases for alcohols",
Expand Down
5 changes: 4 additions & 1 deletion tests/cases/epoxides.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
cases_module="epoxides",
r=None,
q=None,
unifac_result={"CH3": 1, "CH": 1, "CH2O": 1},
unifac_result=[
{"CH3": 1, "CH": 1, "CH2O": 1},
{"CH3": 1, "CH2": 1, "CHO": 1},
],
psrk_result={"CH3": 1, "H2COCH": 1},
joback_result={
"-CH3": 1,
Expand Down
22 changes: 11 additions & 11 deletions tests/cases/ethers.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH2O": 1, "CH": 4, "OH": 4},
unifac_result=[{'CH2': 1, 'CH': 3, 'OH': 4, 'CHO': 1}, {'CH': 4, 'OH': 4, 'CH2O': 1}],
psrk_result={"CH2O": 1, "CH": 4, "OH": 4},
joback_result={
"ring-CH2-": 1,
Expand Down Expand Up @@ -171,7 +171,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH2": 8, "CH": 1, "CH2O": 1, "CHO": 1},
unifac_result=[{'CH2': 8, 'CH': 1, 'CH2O': 1, 'CHO': 1}, {'CH2': 9, 'CHO': 2}],
psrk_result={"CH2": 8, "CH": 1, "CH2O": 1, "CHO": 1},
joback_result={
"ring-CH2-": 9,
Expand Down Expand Up @@ -270,7 +270,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 4, "CH2": 2, "CH": 4, "COO": 1, "CH2O": 1},
unifac_result=[{'CH3': 4, 'CH2': 2, 'CH': 4, 'CH2O': 1, 'COO': 1}, {'CH3': 4, 'CH2': 3, 'CH': 3, 'CHO': 1, 'COO': 1}],
psrk_result={"CH3": 4, "CH2": 2, "CH": 4, "COO": 1, "CH2O": 1},
joback_result={
"-CH3": 4,
Expand Down Expand Up @@ -333,7 +333,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 2, "CH": 1, "COO": 1, "CH3O": 1},
unifac_result=[{'CH3': 3, 'CHO': 1, 'COO': 1}, {'CH3': 2, 'CH': 1, 'CH3O': 1, 'COO': 1}],
psrk_result={"CH3": 2, "CH": 1, "COO": 1, "CH3O": 1},
joback_result={
"-CH3": 3,
Expand All @@ -348,7 +348,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 1, "CH2": 1, "COO": 1, "CH3O": 1},
unifac_result=[{'CH3': 2, 'CH2O': 1, 'COO': 1}, {'CH3': 1, 'CH2': 1, 'CH3O': 1, 'COO': 1}],
psrk_result={"CH3": 1, "CH2": 1, "COO": 1, "CH3O": 1},
joback_result={
"-CH3": 2,
Expand All @@ -373,7 +373,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3O": 2, "CH2O": 2, "CH": 1, "CH3": 1},
unifac_result=[{'CH3': 1, 'CH': 1, 'CH3O': 2, 'CH2O': 2}, {'CH3': 2, 'CH3O': 1, 'CH2O': 2, 'CHO': 1}, {'CH3': 1, 'CH2': 1, 'CH3O': 2, 'CH2O': 1, 'CHO': 1}],
psrk_result={"CH3O": 2, "CH2O": 2, "CH": 1, "CH3": 1},
joback_result={"-CH3": 3, "-CH2-": 2, ">CH-": 1, "-O- (non-ring)": 4},
),
Expand All @@ -383,7 +383,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 5, "CH": 1, "CHO": 2, "CH2O": 2},
unifac_result=[{"CH3": 5, "CH": 1, "CHO": 2, "CH2O": 2}, {'CH3': 5, 'CH2': 1, 'CH2O': 1, 'CHO': 3}],
psrk_result={"CH3": 5, "CH": 1, "CHO": 2, "CH2O": 2},
joback_result={"-CH3": 5, "-CH2-": 2, ">CH-": 3, "-O- (non-ring)": 4},
),
Expand All @@ -393,7 +393,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 6, "CH": 2, "CH2O": 4, "CHO": 2},
unifac_result=[{"CH3": 6, "CH": 2, "CH2O": 4, "CHO": 2}, {'CH3': 6, 'CH2': 1, 'CH': 1, 'CH2O': 3, 'CHO': 3}, {'CH3': 6, 'CH2': 2, 'CH2O': 2, 'CHO': 4}],
psrk_result={"CH3": 6, "CH": 2, "CH2O": 4, "CHO": 2},
joback_result={"-CH3": 6, "-CH2-": 4, ">CH-": 4, "-O- (non-ring)": 6},
),
Expand All @@ -403,7 +403,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 6, "CHO": 3, "CH2O": 3, "CH": 1},
unifac_result=[{"CH3": 6, "CHO": 3, "CH2O": 3, "CH": 1}, {'CH3': 6, 'CH2': 1, 'CH2O': 2, 'CHO': 4}],
psrk_result={"CH3": 6, "CHO": 3, "CH2O": 3, "CH": 1},
joback_result={"-CH3": 6, "-CH2-": 3, ">CH-": 4, "-O- (non-ring)": 6},
),
Expand All @@ -413,7 +413,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3": 4, "CHO": 1, "CH2O": 1, "CH": 1},
unifac_result=[{"CH3": 4, "CHO": 1, "CH2O": 1, "CH": 1}, {'CH3': 4, 'CH2': 1, 'CHO': 2}],
psrk_result={"CH3": 4, "CHO": 1, "CH2O": 1, "CH": 1},
joback_result={"-CH3": 4, "-CH2-": 1, ">CH-": 2, "-O- (non-ring)": 2},
),
Expand All @@ -433,7 +433,7 @@
cases_module="ethers",
r=None,
q=None,
unifac_result={"CH3O": 2, "CH2": 1},
unifac_result=[{"CH3O": 2, "CH2": 1}, {'CH3': 1, 'CH3O': 1, 'CH2O': 1}],
psrk_result={"CH3O": 2, "CH2": 1},
joback_result={"-CH3": 2, "-CH2-": 1, "-O- (non-ring)": 2},
),
Expand Down
10 changes: 0 additions & 10 deletions tests/cases/particulars.py
Original file line number Diff line number Diff line change
Expand Up @@ -595,16 +595,6 @@
psrk_result={"CF4": 1},
joback_result={">C<": 1, "-F": 4},
),
Case(
identifier="[O-][O+]=O",
identifier_type="smiles",
cases_module="particulars",
r=None,
q=None,
unifac_result={},
psrk_result={"O3": 1},
joback_result={"-O- (non-ring)": 1, "=O (other than above)": 2},
),
Case(
identifier="N(=O)Cl",
identifier_type="smiles",
Expand Down
81 changes: 64 additions & 17 deletions tests/cases/tcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
from .alcohols import alcohols_cases
from .aldehydes import aldehydes_cases
from .aromatics import aromatics_cases
from .case import Case
from .complex import complex_cases
from .epoxides import epoxides_cases
from .esters import esters_cases
Expand All @@ -16,7 +17,6 @@
from .particulars import particulars_cases
from .silicon import silicon_cases
from .sulfur import sulfur_cases
from .case import Case

import pytest

Expand All @@ -29,103 +29,150 @@

# Class to define the test class for each model.
class TCase(ABC):
"""Class to define the test class for each model.
This class is an abstract class that defines the structure of the test
class for each model. It defines the asserts method that should be
implemented in the subclasses, and the test methods for each type of
molecule. The test methods are parametrized with the solvers and the cases
of each type of molecule.
"""

@abstractmethod
def asserts(self, case: Case, solver: ILPSolver) -> None: ...

@pytest.mark.acids
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", acids_cases)
@pytest.mark.parametrize(
"case", acids_cases, ids=[c.identifier for c in acids_cases]
)
def test_acids(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.alcohols
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", alcohols_cases)
@pytest.mark.parametrize(
"case", alcohols_cases, ids=[c.identifier for c in alcohols_cases]
)
def test_alcohols(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.aldehydes
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", aldehydes_cases)
@pytest.mark.parametrize(
"case", aldehydes_cases, ids=[c.identifier for c in aldehydes_cases]
)
def test_aldehydes(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.aromatics
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", aromatics_cases)
@pytest.mark.parametrize(
"case", aromatics_cases, ids=[c.identifier for c in aromatics_cases]
)
def test_aromathics(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.complex
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", complex_cases)
@pytest.mark.parametrize(
"case", complex_cases, ids=[c.identifier for c in complex_cases]
)
def test_complex(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.epoxides
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", epoxides_cases)
@pytest.mark.parametrize(
"case", epoxides_cases, ids=[c.identifier for c in epoxides_cases]
)
def test_epoxides(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.esters
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", esters_cases)
@pytest.mark.parametrize(
"case", esters_cases, ids=[c.identifier for c in esters_cases]
)
def test_esters(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.ethers
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", ethers_cases)
@pytest.mark.parametrize(
"case", ethers_cases, ids=[c.identifier for c in ethers_cases]
)
def test_ethers(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.halogens
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", halogens_cases)
@pytest.mark.parametrize(
"case", halogens_cases, ids=[c.identifier for c in halogens_cases]
)
def test_halogens(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.hydrocarbons
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", hydrocarbons_cases)
@pytest.mark.parametrize(
"case",
hydrocarbons_cases,
ids=[c.identifier for c in hydrocarbons_cases],
)
def test_hydrocarbons(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.insaturated_hydrocarbons
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", insaturated_hydrocarbons_cases)
@pytest.mark.parametrize(
"case",
insaturated_hydrocarbons_cases,
ids=[c.identifier for c in insaturated_hydrocarbons_cases],
)
def test_insaturated_hydrocarbons(
self, case: Case, solver: ILPSolver
) -> None:
self.asserts(case, solver)

@pytest.mark.ketones
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", ketones_cases)
@pytest.mark.parametrize(
"case", ketones_cases, ids=[c.identifier for c in ketones_cases]
)
def test_ketones(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.nitrogen
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", nitrogen_cases)
@pytest.mark.parametrize(
"case", nitrogen_cases, ids=[c.identifier for c in nitrogen_cases]
)
def test_nitrogen(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.particulars
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", particulars_cases)
@pytest.mark.parametrize(
"case",
particulars_cases,
ids=[c.identifier for c in particulars_cases],
)
def test_particulars(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.silicon
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", silicon_cases)
@pytest.mark.parametrize(
"case", silicon_cases, ids=[c.identifier for c in silicon_cases]
)
def test_silicon(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)

@pytest.mark.sulfur
@pytest.mark.parametrize("solver", solvers)
@pytest.mark.parametrize("case", sulfur_cases)
@pytest.mark.parametrize(
"case", sulfur_cases, ids=[c.identifier for c in sulfur_cases]
)
def test_sulfur(self, case: Case, solver: ILPSolver) -> None:
self.asserts(case, solver)
Loading

0 comments on commit 3969995

Please sign in to comment.