Refactoring: Python/SMT

This commit is contained in:
2026-04-10 14:30:46 +01:00
parent 6bddf4bf38
commit 554b34afcf
12 changed files with 20 additions and 87 deletions

View File

@@ -55,10 +55,7 @@ class ContextAutomaton(object):
return self._states[self._init_state]
def is_state(self, name):
if name in self._states:
return True
else:
return False
return name in self._states
def get_state_id(self, name):
try:
@@ -78,10 +75,7 @@ class ContextAutomaton(object):
print(state)
def is_valid_rs_set(self, elements):
if set(elements).issubset(self._reaction_system.background_set):
return True
else:
return False
return set(elements).issubset(self._reaction_system.background_set)
def is_valid_context(self, context):
return self.is_valid_rs_set(context)
@@ -95,7 +89,7 @@ class ContextAutomaton(object):
return new_set
def add_transition(self, src, context_set, dst):
if not type(context_set) is set and not type(context_set) is list:
if not isinstance(context_set, (set, list)):
print("Contexts set must be of type set or list")
if not self.is_valid_context(context_set):

View File

@@ -9,12 +9,9 @@ class ContextAutomatonWithConcentrations(ContextAutomaton):
super(ContextAutomatonWithConcentrations, self).__init__(reaction_system)
def is_valid_context(self, context):
if set([e for e, lvl in context]).issubset(
return set(e for e, lvl in context).issubset(
self._reaction_system.background_set
):
return True
else:
return False
)
def context2str(self, ctx):
if len(ctx) == 0:
@@ -26,7 +23,7 @@ class ContextAutomatonWithConcentrations(ContextAutomaton):
return s
def add_transition(self, src, context_set, dst):
if not type(context_set) is set and not type(context_set) is list:
if not isinstance(context_set, (set, list)):
print("Contexts set must be of type set or list")
if not self.is_valid_context(context_set):

View File

@@ -70,7 +70,7 @@ class ExtendedContextAutomaton(ContextAutomaton):
ctx_reactants, ctx_inhibitors, ctx_products = ctx_reaction
if not type(ctx_products) is set and not type(ctx_products) is list:
if not isinstance(ctx_products, (set, list)):
print("Contexts set (context products) must be of type set or list")
if not self.is_valid_rs_set(ctx_reactants):

View File

@@ -43,11 +43,8 @@ class ReactionSystem(object):
self.add_bg_set_entity(e)
def is_in_background_set(self, entity):
"""Checks if the given name is valid wrt the background set="""
if entity in self.background_set:
return True
else:
return False
"""Checks if the given name is valid wrt the background set"""
return entity in self.background_set
def get_entity_id(self, name):
try:

View File

@@ -18,9 +18,9 @@ class ReactionSystemWithConcentrations(ReactionSystem):
def add_bg_set_entity(self, e):
name = ""
def_max_conc = -1
if type(e) is tuple and len(e) == 2:
if isinstance(e, tuple) and len(e) == 2:
name, def_max_conc = e
elif type(e) is str:
elif isinstance(e, str):
name = e
print("\nWARNING: no maximal concentration level specified for:", e, "\n")
else:
@@ -46,18 +46,10 @@ class ReactionSystemWithConcentrations(ReactionSystem):
def is_valid_entity_with_concentration(self, e):
"""Sanity check for entities with concentration"""
if type(e) is tuple:
if len(e) == 2 and type(e[1]) is int:
return True
if isinstance(e, (tuple, list)) and len(e) == 2 and isinstance(e[1], int):
return True
if type(e) is list:
if len(e) == 2 and type(e[1]) is int:
return True
print("FATAL. Invalid entity+concentration: {:s}".format(e))
exit(1)
return False
raise RuntimeError("Invalid entity+concentration: " + repr(e))
def get_state_ids(self, state):
"""Returns entities of the given state without levels"""
@@ -415,33 +407,4 @@ class ReactionSystemWithConcentrations(ReactionSystem):
return rs
class ReactionSystemWithAutomaton(object):
def __init__(self, reaction_system, context_automaton):
self.rs = reaction_system
self.ca = context_automaton
def show(self, soft=False):
self.rs.show(soft)
self.ca.show()
def is_with_concentrations(self):
if not isinstance(self.rs, ReactionSystemWithConcentrations):
return False
if not isinstance(self.ca, ContextAutomatonWithConcentrations):
return False
return True
def sanity_check(self):
pass
def get_ordinary_reaction_system_with_automaton(self):
if not self.is_with_concentrations():
raise RuntimeError("Not RS/CA with concentrations")
ors = self.rs.get_reaction_system()
oca = self.ca.get_automaton_with_flat_contexts(ors)
return ReactionSystemWithAutomaton(ors, oca)
# EOF

View File

@@ -34,9 +34,9 @@ class ReactionSystemWithConcentrationsParam(ReactionSystem):
def add_bg_set_entity(self, e):
name = ""
def_max_conc = -1
if type(e) is tuple and len(e) == 2:
if isinstance(e, tuple) and len(e) == 2:
name, def_max_conc = e
elif type(e) is str:
elif isinstance(e, str):
name = e
print("\nWARNING: no maximal concentration level specified for:", e, "\n")
else:
@@ -80,18 +80,10 @@ class ReactionSystemWithConcentrationsParam(ReactionSystem):
def is_valid_entity_with_concentration(self, e):
"""Sanity check for entities with concentration"""
if type(e) is tuple:
if len(e) == 2 and type(e[1]) is int:
return True
if isinstance(e, (tuple, list)) and len(e) == 2 and isinstance(e[1], int):
return True
if type(e) is list:
if len(e) == 2 and type(e[1]) is int:
return True
print("FATAL. Invalid entity+concentration: {:s}".format(e))
exit(1)
return False
raise RuntimeError("Invalid entity+concentration: " + repr(e))
def is_valid_concentration_for_entity(self, entity, level):
"""Checks the concentration level for entity"""