Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix networks #155

Open
wants to merge 51 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
c1340b5
building_a_network_taping_approach
RiesBen Sep 3, 2024
ac3fc61
building_a_network_taping_approach
RiesBen Sep 3, 2024
1d8dd70
Merge branch 'main' into duckTapeNetwork
RiesBen Sep 3, 2024
6f9604e
taping update
RiesBen Sep 4, 2024
590d69c
tape nets
RiesBen Sep 4, 2024
60f4f41
cli fix
RiesBen Sep 4, 2024
9f442cf
cli fix
RiesBen Sep 4, 2024
0a2988c
formatting fix
RiesBen Sep 4, 2024
b2c81b1
Update tape_networks.py
RiesBen Sep 5, 2024
a3c15ff
Merge branch 'main' into duckTapeNetwork
RiesBen Sep 5, 2024
eb9c9e1
improve cli
RiesBen Sep 5, 2024
8c242d7
Saving transformations to json
hannahbaumann Sep 5, 2024
850fcee
Merge branch 'duckTapeNetwork' into write_AlchemicalNetwork
hannahbaumann Sep 5, 2024
5ce225e
small fix
hannahbaumann Sep 5, 2024
0714c24
filtering for only new tapes
RiesBen Sep 5, 2024
0ed4d30
trying to clean up and improve reading quality
RiesBen Sep 5, 2024
c346af0
Merge branch 'duckTapeNetwork' into write_AlchemicalNetwork
RiesBen Sep 5, 2024
5070695
Merge pull request #1 from RiesBen/write_AlchemicalNetwork
RiesBen Sep 5, 2024
ee419ab
a bit nicer output
RiesBen Sep 5, 2024
824e10b
fixing var names
RiesBen Sep 5, 2024
b11daee
Update industry_benchmarks/utils/tape_networks.py
RiesBen Sep 6, 2024
60d1426
Update industry_benchmarks/utils/tape_networks.py
RiesBen Sep 6, 2024
777273b
Update industry_benchmarks/utils/tape_networks.py
RiesBen Sep 6, 2024
d75b1d1
adding connectivity check
RiesBen Sep 6, 2024
ccb2cf3
adding connectivity check
RiesBen Sep 6, 2024
bd7b112
adding connectivity check
RiesBen Sep 6, 2024
4c654a1
ensuring taping, adding error
RiesBen Sep 6, 2024
4106921
Merge branch 'main' into duckTapeNetwork
RiesBen Sep 7, 2024
71768c0
Merge branch 'main' into duckTapeNetwork
IAlibay Sep 12, 2024
6c511b9
Start of changing this script to not depend on Konnektor
hannahbaumann Sep 17, 2024
388f487
Some fixes for the network fixing
hannahbaumann Sep 17, 2024
96a8d0d
Adding two tests
hannahbaumann Sep 18, 2024
09258f5
Add alchemical network for tests
hannahbaumann Sep 18, 2024
0c4b477
Merge branch 'main' into duckTapeNetwork
hannahbaumann Sep 30, 2024
5aa9ee0
Work towards fixing networks
IAlibay Oct 5, 2024
04e44e3
Various fixes
IAlibay Oct 5, 2024
7545c2e
Merge branch 'main' into fix_networks
IAlibay Oct 5, 2024
13a447a
delete useless files
IAlibay Oct 5, 2024
0537367
Merge branch 'fix_networks' of github.com:OpenFreeEnergy/IndustryBenc…
IAlibay Oct 5, 2024
3ad3d30
Fix networkx error
hannahbaumann Oct 7, 2024
82273aa
Merge branch 'main' into fix_networks
hannahbaumann Oct 7, 2024
8b7e881
Ensure both solvent and complex legs must be present
hannahbaumann Oct 7, 2024
b9926f8
Merge branch 'fix_networks' of https://github.com/OpenFreeEnergy/Indu…
hannahbaumann Oct 7, 2024
5e8f4e9
Some fixes
hannahbaumann Oct 7, 2024
8f7131f
Fix transformation filtering
hannahbaumann Oct 7, 2024
73b0e52
Add some tests for fix_network script
hannahbaumann Oct 7, 2024
e052ddd
Remove duplicate test files
hannahbaumann Oct 8, 2024
af5e58a
Save full LigandNetwork
hannahbaumann Oct 9, 2024
1931f4e
Add full bace results
hannahbaumann Oct 9, 2024
cc7bb79
Add eg5 results
hannahbaumann Oct 9, 2024
31c2ac1
Output ligand_network.graphml with only new edges
hannahbaumann Oct 10, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
630 changes: 630 additions & 0 deletions industry_benchmarks/utils/fix_networks.py

Large diffs are not rendered by default.

Empty file.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Empty file.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

96 changes: 96 additions & 0 deletions industry_benchmarks/utils/tests/test_fix_networks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
import pathlib
import pytest
from importlib import resources
import gufe
import os
import glob
from ..fix_networks import (
parse_alchemical_network,
parse_results,
alchemical_network_to_ligand_network,
fix_network,
)


@pytest.fixture
def results():
with resources.files("utils.tests.data.bace_results") as d:
yield glob.glob(f"{str(d)}/results_*_remove_edges/*json")


@pytest.fixture
def input_alchemical_network():
with resources.files("utils.tests.data.bace_results") as d:
yield str(d / "alchemicalNetwork/alchemical_network.json")


@pytest.fixture
def output_dir():
return pathlib.Path("utils/tests/data/bace_results/newNetwork")


@pytest.fixture
def expected_transformations():
return ["complex_spiro10_spiro1.json",
"complex_spiro1_spiro15.json",
"complex_spiro2_spiro15.json",
"complex_spiro5_spiro10.json",
"complex_spiro5_spiro6.json",
"complex_spiro6_spiro4.json",
"solvent_spiro10_spiro1.json",
"solvent_spiro1_spiro15.json",
"solvent_spiro2_spiro15.json",
"solvent_spiro5_spiro10.json",
"solvent_spiro5_spiro6.json",
"solvent_spiro6_spiro4.json",
"complex_spiro1_spiro10.json",
"complex_spiro15_spiro1.json",
"complex_spiro15_spiro2.json",
"complex_spiro10_spiro5.json",
"complex_spiro6_spiro5.json",
"complex_spiro4_spiro6.json",
"solvent_spiro1_spiro10.json",
"solvent_spiro15_spiro1.json",
"solvent_spiro15_spiro2.json",
"solvent_spiro10_spiro5.json",
"solvent_spiro6_spiro5.json",
"solvent_spiro4_spiro6.json",
"complex_spiro4_spiro10.json",
"complex_spiro10_spiro4.json",
"solvent_spiro4_spiro10.json",
"solvent_spiro10_spiro4.json",
]


def test_parse_alchemical_network(input_alchemical_network):
alchem_network = parse_alchemical_network(input_alchemical_network)
assert isinstance(alchem_network, gufe.AlchemicalNetwork)
# AlchemicalNetwork with 11 edges, meaning 22 transformations
assert len(alchem_network.edges) == 22


def test_parse_results(results, input_alchemical_network):
result_alchem_network = parse_results(results, input_alchemical_network)
assert isinstance(result_alchem_network, gufe.AlchemicalNetwork)
# only 6 edges (12 transformations) had completed successfully
assert len(result_alchem_network.edges) == 12
ligand_network = alchemical_network_to_ligand_network(result_alchem_network)
assert isinstance(ligand_network, gufe.LigandNetwork)
# The resulting LigandNetwork should have 6 edges
assert len(ligand_network.edges) == 6


def test_fix_network(results, input_alchemical_network, output_dir, expected_transformations, tmp_path):
temp_out_dir = tmp_path / output_dir
fix_network(results, input_alchemical_network, temp_out_dir)
assert os.path.isdir(temp_out_dir)
output_alchemical_network = temp_out_dir / 'alchemical_network.json'
assert output_alchemical_network.is_file()
new_transformations = glob.glob(f"{temp_out_dir}/transformations/*json")
# The direction of the transformation can switch, therefore include both
# directions in the expected_transformations
# Some of the scores of potential transformations are the same,
# therefore the new_transformations will not always be the same
assert len(new_transformations) == 12
for transform in new_transformations:
assert transform.split("/")[-1] in expected_transformations