forked from enviPath/enviPy
...
This commit is contained in:
@ -35,6 +35,7 @@ from epdb.models import (
|
||||
RuleBasedRelativeReasoning,
|
||||
Scenario,
|
||||
SequentialRule,
|
||||
Setting,
|
||||
SimpleAmbitRule,
|
||||
SimpleRDKitRule,
|
||||
SimpleRule,
|
||||
@ -1258,3 +1259,46 @@ class PathwayUtils:
|
||||
res[edge.url] = rule_chain
|
||||
|
||||
return res
|
||||
|
||||
def _find_intermediates(self, data_pathway, pred_pathway):
|
||||
pass
|
||||
|
||||
def engineer(self, setting: "Setting"):
|
||||
from epdb.logic import SPathway
|
||||
|
||||
# get a fresh copy
|
||||
pw = Pathway.objects.get(id=self.pathway.pk)
|
||||
|
||||
root_nodes = [n.default_node_label.smiles for n in pw.root_nodes]
|
||||
|
||||
if len(root_nodes) != 1:
|
||||
logger.warning(f"Pathway {pw.name} has {len(root_nodes)} root nodes")
|
||||
return
|
||||
|
||||
spw = SPathway(root_nodes[0], None, setting)
|
||||
|
||||
level = 0
|
||||
while not spw.done:
|
||||
spw.predict_step(from_depth=level)
|
||||
level += 1
|
||||
|
||||
# Generate Node / SMILES mapping
|
||||
node_mapping = {}
|
||||
from utilities.chem import FormatConverter
|
||||
|
||||
for node in pw.nodes:
|
||||
for snode in spw.smiles_to_node.values():
|
||||
data_smiles = node.default_node_label.smiles
|
||||
pred_smiles = snode.smiles
|
||||
|
||||
data_key = FormatConverter.InChIKey(data_smiles.replace("~", ""))
|
||||
pred_key = FormatConverter.InChIKey(pred_smiles.replace("~", ""))
|
||||
|
||||
if data_key == pred_key:
|
||||
node_mapping[snode] = node
|
||||
|
||||
print(node_mapping)
|
||||
|
||||
return spw
|
||||
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user