Skip to content

Commit

Permalink
convert DerringerSuichDesirability dict to func
Browse files Browse the repository at this point in the history
  • Loading branch information
ale94mleon committed Jul 25, 2022
1 parent 0af319e commit f4cc8fe
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 14 deletions.
18 changes: 9 additions & 9 deletions moldrug/fitness.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,10 +134,10 @@ def Cost(
for key in desirability[variable]:
if key == 'w':
w = desirability[variable][key]
elif key in utils.DerringerSuichDesirability:
d = utils.DerringerSuichDesirability[key](getattr(Individual, variable), **desirability[variable][key])
elif key in utils.DerringerSuichDesirability():
d = utils.DerringerSuichDesirability()[key](getattr(Individual, variable), **desirability[variable][key])
else:
raise RuntimeError(f"Inside the desirability dictionary you provided for the variable = {variable} a non implemented key = {key}. Only are possible: 'w' (standing for weight) and any possible Derringer-Suich desirability function: {utils.DerringerSuichDesirability.keys()}")
raise RuntimeError(f"Inside the desirability dictionary you provided for the variable = {variable} a non implemented key = {key}. Only are possible: 'w' (standing for weight) and any possible Derringer-Suich desirability function: {utils.DerringerSuichDesirability().keys()}")
base *= d**w
exponent += w
# Average
Expand Down Expand Up @@ -291,10 +291,10 @@ def CostMultiReceptors(
for key in desirability[variable]:
if key == 'w':
w = desirability[variable][key]
elif key in utils.DerringerSuichDesirability:
d = utils.DerringerSuichDesirability[key](getattr(Individual, variable), **desirability[variable][key])
elif key in utils.DerringerSuichDesirability():
d = utils.DerringerSuichDesirability()[key](getattr(Individual, variable), **desirability[variable][key])
else:
raise RuntimeError(f"Inside the desirability dictionary you provided for the variable = {variable} a non implemented key = {key}. Only are possible: 'w' (standing for weight) and any possible Derringer-Suich desirability function: {utils.DerringerSuichDesirability.keys()}. Only in the case of vina_scores [min and max] keys")
raise RuntimeError(f"Inside the desirability dictionary you provided for the variable = {variable} a non implemented key = {key}. Only are possible: 'w' (standing for weight) and any possible Derringer-Suich desirability function: {utils.DerringerSuichDesirability().keys()}. Only in the case of vina_scores [min and max] keys")
base *= d**w
exponent += w

Expand All @@ -303,10 +303,10 @@ def CostMultiReceptors(
for key in vina_desirability_section[vina_score_type]:
if key == 'w':
w = vina_desirability_section[vina_score_type][key]
elif key in utils.DerringerSuichDesirability:
d = utils.DerringerSuichDesirability[key](vina_score, **vina_desirability_section[vina_score_type][key])
elif key in utils.DerringerSuichDesirability():
d = utils.DerringerSuichDesirability()[key](vina_score, **vina_desirability_section[vina_score_type][key])
else:
RuntimeError(f"Inside the desirability dictionary you provided for the variable = vina_scores[{vina_score_type}] a non implemented key = {key}. Only are possible: 'w' (standing for weight) and any possible Derringer-Suich desirability function: {utils.DerringerSuichDesirability.keys()}.")
RuntimeError(f"Inside the desirability dictionary you provided for the variable = vina_scores[{vina_score_type}] a non implemented key = {key}. Only are possible: 'w' (standing for weight) and any possible Derringer-Suich desirability function: {utils.DerringerSuichDesirability().keys()}.")
base *= d**w
exponent += w

Expand Down
19 changes: 14 additions & 5 deletions moldrug/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,11 +322,20 @@ def NominalTheBest(Value:float, LowerLimit:float, Target:float, UpperLimit:float
else:
return 0.0

DerringerSuichDesirability = {
'LargerTheBest': LargerTheBest,
'SmallerTheBest': SmallerTheBest,
'NominalTheBest': NominalTheBest
}
def DerringerSuichDesirability():
"""A warper around the implemented desirability functions
Returns
-------
dict
A dict with key name of the desirability and value the corresponded function
"""
my_dict = {
'LargerTheBest': LargerTheBest,
'SmallerTheBest': SmallerTheBest,
'NominalTheBest': NominalTheBest
}
return my_dict
# Saving data
def full_pickle(title:str, data:object):
"""Normal pickle.
Expand Down

0 comments on commit f4cc8fe

Please sign in to comment.