From 6b7256b300b66908e61a13b44be1e4491b147afb Mon Sep 17 00:00:00 2001 From: bmazinng Date: Thu, 24 Feb 2022 13:14:52 +0100 Subject: [PATCH 1/9] resolved problem with missing components, testing input changed to the right place --- Testing/test_export_SBML.py | 6 +++--- eBCSgen/Core/Model.py | 7 ++++++- eBCSgen/Export/ModelSBML.py | 12 ++++++------ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Testing/test_export_SBML.py b/Testing/test_export_SBML.py index 886a71e..0c0b980 100644 --- a/Testing/test_export_SBML.py +++ b/Testing/test_export_SBML.py @@ -9,11 +9,11 @@ def setUp(self): model_parser = Parser("model") self.models_to_test = {} - with open("Testing/BCSL_models_for_SBML_export/general.txt", "r") as model_exp: + with open("BCSL_models_for_SBML_export/general.txt", "r") as model_exp: self.models_to_test["general"] = model_parser.parse(model_exp.read()).data - with open("Testing/BCSL_models_for_SBML_export/izomorphic.txt", "r") as model_izo: + with open("BCSL_models_for_SBML_export/izomorphic.txt", "r") as model_izo: self.models_to_test["general"] = model_parser.parse(model_izo.read()).data - with open("Testing/BCSL_models_for_SBML_export/transition.txt", "r") as model_transition: + with open("BCSL_models_for_SBML_export/transition.txt", "r") as model_transition: self.models_to_test["general"] = model_parser.parse(model_transition.read()).data def test_by_validator(self): diff --git a/eBCSgen/Core/Model.py b/eBCSgen/Core/Model.py index c2bcccd..5098ae4 100644 --- a/eBCSgen/Core/Model.py +++ b/eBCSgen/Core/Model.py @@ -311,7 +311,12 @@ def export_sbml(self) -> libsbml.SBMLDocument: unique_complexes, unique_params = self.create_unique_complexes_and_params() test_model.create_basic_species_types(self.atomic_signature, self.structure_signature) - test_model.create_all_species_compartments_and_complex_species_types(unique_complexes) + # print(self.structure_signature) + # print(type(self.structure_signature)) + # for s in self.structure_signature: + # print(s) + # print(type(s)) + test_model.create_all_species_compartments_and_complex_species_types(unique_complexes, self.structure_signature) test_model.create_all_reactions(self.rules) test_model.create_reaction_for_isomorphisms(unique_complexes) test_model.create_parameters(self.definitions, unique_params) diff --git a/eBCSgen/Export/ModelSBML.py b/eBCSgen/Export/ModelSBML.py index 081adaa..d1011ea 100644 --- a/eBCSgen/Export/ModelSBML.py +++ b/eBCSgen/Export/ModelSBML.py @@ -59,7 +59,7 @@ def create_species_types_from_structure(self, structs: dict): new_instance.setId(subcomponent) new_instance.setSpeciesType("st_{}".format(subcomponent)) - def create_species_type_from_complex(self, comp_agent: eBCSgen.Core.Complex.Complex): + def create_species_type_from_complex(self, comp_agent: eBCSgen.Core.Complex.Complex, structure_signature: dict): """ All complex agents are translated to SpeciesTypes Here @@ -75,10 +75,10 @@ def create_species_type_from_complex(self, comp_agent: eBCSgen.Core.Complex.Comp new_instance.setSpeciesType("st_{}".format(subcomponent)) agent = sorted(comp_agent.agents)[num] if isinstance(agent, eBCSgen.Core.Structure.StructureAgent): - for atomic in agent.composition: + for atomic_name in structure_signature[subcomponent]: # HERE THE LOOP SHOULD BE OVER SIGNATURE NOT JUST GIVEN AGENT comp_index = new_species_type.createSpeciesTypeComponentIndex() - comp_index.setId("{}_{}_{}".format(subcomponent, str(num), atomic.name)) - comp_index.setComponent(atomic.name) + comp_index.setId("{}_{}_{}".format(subcomponent, str(num), atomic_name)) + comp_index.setComponent(atomic_name) comp_index.setIdentifyingParent("{}_{}".format(subcomponent, str(num))) def create_basic_species_types(self, atomics: dict, structs: dict): @@ -163,7 +163,7 @@ def create_species(self, comp_agent: eBCSgen.Core.Complex.Complex): new_species.setId(comp_agent.to_SBML_species_code()) new_species.setName(str(comp_agent)) - def create_all_species_compartments_and_complex_species_types(self, unique_complexes: dict): + def create_all_species_compartments_and_complex_species_types(self, unique_complexes: dict, structure_signature:dict): """ Creates all compartments @@ -179,7 +179,7 @@ def create_all_species_compartments_and_complex_species_types(self, unique_compl # firstly as structs from signature and secondly as complex here # create species type from complex agent if it does not exist. if comp_agent.to_SBML_speciesTypes_code() not in self.finishedComplexTypes: - self.create_species_type_from_complex(comp_agent) + self.create_species_type_from_complex(comp_agent, structure_signature) self.finishedComplexTypes.append(comp_agent.to_SBML_speciesTypes_code()) for agent in unique_complexes[comp_agent]: From e166765d9fd772030a5f26be6d6cd59a2cfbf011 Mon Sep 17 00:00:00 2001 From: bmazinng Date: Thu, 24 Feb 2022 13:22:46 +0100 Subject: [PATCH 2/9] remove unnecessary comments --- eBCSgen/Core/Model.py | 5 ----- eBCSgen/Export/ModelSBML.py | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/eBCSgen/Core/Model.py b/eBCSgen/Core/Model.py index 5098ae4..453dc17 100644 --- a/eBCSgen/Core/Model.py +++ b/eBCSgen/Core/Model.py @@ -311,11 +311,6 @@ def export_sbml(self) -> libsbml.SBMLDocument: unique_complexes, unique_params = self.create_unique_complexes_and_params() test_model.create_basic_species_types(self.atomic_signature, self.structure_signature) - # print(self.structure_signature) - # print(type(self.structure_signature)) - # for s in self.structure_signature: - # print(s) - # print(type(s)) test_model.create_all_species_compartments_and_complex_species_types(unique_complexes, self.structure_signature) test_model.create_all_reactions(self.rules) test_model.create_reaction_for_isomorphisms(unique_complexes) diff --git a/eBCSgen/Export/ModelSBML.py b/eBCSgen/Export/ModelSBML.py index d1011ea..819af73 100644 --- a/eBCSgen/Export/ModelSBML.py +++ b/eBCSgen/Export/ModelSBML.py @@ -75,7 +75,7 @@ def create_species_type_from_complex(self, comp_agent: eBCSgen.Core.Complex.Comp new_instance.setSpeciesType("st_{}".format(subcomponent)) agent = sorted(comp_agent.agents)[num] if isinstance(agent, eBCSgen.Core.Structure.StructureAgent): - for atomic_name in structure_signature[subcomponent]: # HERE THE LOOP SHOULD BE OVER SIGNATURE NOT JUST GIVEN AGENT + for atomic_name in structure_signature[subcomponent]: comp_index = new_species_type.createSpeciesTypeComponentIndex() comp_index.setId("{}_{}_{}".format(subcomponent, str(num), atomic_name)) comp_index.setComponent(atomic_name) From 6f6c9ca6f909270dba5ad7d6fc931482ddc5a58c Mon Sep 17 00:00:00 2001 From: bmazinng Date: Thu, 24 Feb 2022 13:41:35 +0100 Subject: [PATCH 3/9] fixed path --- Testing/test_export_SBML.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Testing/test_export_SBML.py b/Testing/test_export_SBML.py index 0c0b980..886a71e 100644 --- a/Testing/test_export_SBML.py +++ b/Testing/test_export_SBML.py @@ -9,11 +9,11 @@ def setUp(self): model_parser = Parser("model") self.models_to_test = {} - with open("BCSL_models_for_SBML_export/general.txt", "r") as model_exp: + with open("Testing/BCSL_models_for_SBML_export/general.txt", "r") as model_exp: self.models_to_test["general"] = model_parser.parse(model_exp.read()).data - with open("BCSL_models_for_SBML_export/izomorphic.txt", "r") as model_izo: + with open("Testing/BCSL_models_for_SBML_export/izomorphic.txt", "r") as model_izo: self.models_to_test["general"] = model_parser.parse(model_izo.read()).data - with open("BCSL_models_for_SBML_export/transition.txt", "r") as model_transition: + with open("Testing/BCSL_models_for_SBML_export/transition.txt", "r") as model_transition: self.models_to_test["general"] = model_parser.parse(model_transition.read()).data def test_by_validator(self): From 64c5114e691a7d2bf27e4c2c4a1aafe7774cdf55 Mon Sep 17 00:00:00 2001 From: Matej Trojak Date: Wed, 2 Mar 2022 10:30:16 +0100 Subject: [PATCH 4/9] Fixed paths in SBML testing --- Testing/Output/general.xml | 533 ---------------------------------- Testing/Output/izomorphic.xml | 224 -------------- Testing/Output/transition.xml | 533 ---------------------------------- Testing/test_export_SBML.py | 10 +- 4 files changed, 7 insertions(+), 1293 deletions(-) delete mode 100644 Testing/Output/general.xml delete mode 100644 Testing/Output/izomorphic.xml delete mode 100644 Testing/Output/transition.xml diff --git a/Testing/Output/general.xml b/Testing/Output/general.xml deleted file mode 100644 index 6f97766..0000000 --- a/Testing/Output/general.xml +++ /dev/null @@ -1,533 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 - - - - - 3 - - - - - 1 - - - - - - - - - - - - - - - - - - - kcat1 - sp_2751658607694581207 - - - - - - - - - - - - - - - - - - - kcat1 - sp_2751658607694581207 - - - - - - - - - - - - - - - - - - - kcat1 - sp_2751658607694581207 - - - - - - - - - - - - - - - - - - - - - - kcat4 - sp_3027775558318027420 - sp_68043758809954281 - - - - Km - sp_68043758809954281 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Testing/Output/izomorphic.xml b/Testing/Output/izomorphic.xml deleted file mode 100644 index 6a105e7..0000000 --- a/Testing/Output/izomorphic.xml +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 - - - - - 1 - - - - - 1 - - - - - - - - - - - - - - - - kcat1 - sp_7737170631606804421 - - - - - - - - - - - - - - - - kcat2 - sp_5474352128751583709 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Testing/Output/transition.xml b/Testing/Output/transition.xml deleted file mode 100644 index 2c390f6..0000000 --- a/Testing/Output/transition.xml +++ /dev/null @@ -1,533 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 - - - - - 3 - - - - - 1 - - - - - - - - - - - - - - - - - - - kcat1 - sp_7737170631606804421 - - - - - - - - - - - - - - - - - - - kcat1 - sp_7737170631606804421 - - - - - - - - - - - - - - - - - - - - - - kcat4 - sp_5402253953277041498 - sp_6747440337412014771 - - - - Km - sp_6747440337412014771 - - - - - - - - - - - - - - - - - - - - kcat1 - sp_7737170631606804421 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Testing/test_export_SBML.py b/Testing/test_export_SBML.py index 886a71e..e8e19f1 100644 --- a/Testing/test_export_SBML.py +++ b/Testing/test_export_SBML.py @@ -1,5 +1,6 @@ import unittest import libsbml +import os from eBCSgen.Parsing.ParseBCSL import Parser @@ -9,12 +10,15 @@ def setUp(self): model_parser = Parser("model") self.models_to_test = {} + if not os.path.exists("Testing/Output/"): + os.mkdir("Testing/Output/") + with open("Testing/BCSL_models_for_SBML_export/general.txt", "r") as model_exp: self.models_to_test["general"] = model_parser.parse(model_exp.read()).data with open("Testing/BCSL_models_for_SBML_export/izomorphic.txt", "r") as model_izo: - self.models_to_test["general"] = model_parser.parse(model_izo.read()).data + self.models_to_test["izomorphic"] = model_parser.parse(model_izo.read()).data with open("Testing/BCSL_models_for_SBML_export/transition.txt", "r") as model_transition: - self.models_to_test["general"] = model_parser.parse(model_transition.read()).data + self.models_to_test["transition"] = model_parser.parse(model_transition.read()).data def test_by_validator(self): validator = libsbml.SBMLValidator() @@ -24,4 +28,4 @@ def test_by_validator(self): validator.setDocument(document) validator.validate() self.assertEqual(validator.getNumFailures(), 0) - libsbml.writeSBMLToFile(document, "../Export/Output/"+model+".xml") + libsbml.writeSBMLToFile(document, "Testing/Output/"+model+".xml") From ebe7c0dda0ceb5ae582ee8b011c9a273904b5a61 Mon Sep 17 00:00:00 2001 From: bmazinng Date: Fri, 25 Mar 2022 11:57:48 +0100 Subject: [PATCH 5/9] inital assignment fixed --- Testing/BCSL_models_for_SBML_export/ecad.txt | 0 Testing/BCSL_models_for_SBML_export/example.txt | 0 Testing/BCSL_models_for_SBML_export/test.txt | 0 eBCSgen/Core/Model.py | 8 +++++++- 4 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 Testing/BCSL_models_for_SBML_export/ecad.txt create mode 100644 Testing/BCSL_models_for_SBML_export/example.txt create mode 100644 Testing/BCSL_models_for_SBML_export/test.txt diff --git a/Testing/BCSL_models_for_SBML_export/ecad.txt b/Testing/BCSL_models_for_SBML_export/ecad.txt new file mode 100644 index 0000000..e69de29 diff --git a/Testing/BCSL_models_for_SBML_export/example.txt b/Testing/BCSL_models_for_SBML_export/example.txt new file mode 100644 index 0000000..e69de29 diff --git a/Testing/BCSL_models_for_SBML_export/test.txt b/Testing/BCSL_models_for_SBML_export/test.txt new file mode 100644 index 0000000..e69de29 diff --git a/eBCSgen/Core/Model.py b/eBCSgen/Core/Model.py index 453dc17..98700d2 100644 --- a/eBCSgen/Core/Model.py +++ b/eBCSgen/Core/Model.py @@ -344,10 +344,16 @@ def create_unique_complexes_and_params(self): unique_complexes[agent] = unique_complexes.get(agent, set() | {double_agent}) unique_params_from_rate = unique_params_from_rate.union(params) + for agent in initialization_complexes: double_agent = (agent, agent.to_SBML_species_code()) - unique_complexes[agent] = unique_complexes.get(agent, set() | {double_agent}) + + if agent not in unique_complexes: + unique_complexes[agent] = {double_agent} + else: + unique_complexes[agent] = unique_complexes[agent].union({double_agent}) for comp in unique_complexes: unique_complexes[comp] = list(unique_complexes[comp]) + return unique_complexes, unique_params_from_rate From ab9ed8994609989afefe6e50f0747870fbaac782 Mon Sep 17 00:00:00 2001 From: bmazinng Date: Fri, 25 Mar 2022 14:27:19 +0100 Subject: [PATCH 6/9] improved readability --- Testing/BCSL_models_for_SBML_export/ecad.txt | 0 Testing/BCSL_models_for_SBML_export/example.txt | 0 Testing/BCSL_models_for_SBML_export/test.txt | 0 eBCSgen/Core/Model.py | 8 ++------ 4 files changed, 2 insertions(+), 6 deletions(-) delete mode 100644 Testing/BCSL_models_for_SBML_export/ecad.txt delete mode 100644 Testing/BCSL_models_for_SBML_export/example.txt delete mode 100644 Testing/BCSL_models_for_SBML_export/test.txt diff --git a/Testing/BCSL_models_for_SBML_export/ecad.txt b/Testing/BCSL_models_for_SBML_export/ecad.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Testing/BCSL_models_for_SBML_export/example.txt b/Testing/BCSL_models_for_SBML_export/example.txt deleted file mode 100644 index e69de29..0000000 diff --git a/Testing/BCSL_models_for_SBML_export/test.txt b/Testing/BCSL_models_for_SBML_export/test.txt deleted file mode 100644 index e69de29..0000000 diff --git a/eBCSgen/Core/Model.py b/eBCSgen/Core/Model.py index 98700d2..d75acd9 100644 --- a/eBCSgen/Core/Model.py +++ b/eBCSgen/Core/Model.py @@ -341,17 +341,13 @@ def create_unique_complexes_and_params(self): for agent in agents: double_agent = (agent, agent.to_SBML_species_code()) - unique_complexes[agent] = unique_complexes.get(agent, set() | {double_agent}) + unique_complexes[agent] = unique_complexes.get(agent, set()) | {double_agent} unique_params_from_rate = unique_params_from_rate.union(params) for agent in initialization_complexes: double_agent = (agent, agent.to_SBML_species_code()) - - if agent not in unique_complexes: - unique_complexes[agent] = {double_agent} - else: - unique_complexes[agent] = unique_complexes[agent].union({double_agent}) + unique_complexes[agent] = unique_complexes.get(agent, set()) | {double_agent} for comp in unique_complexes: unique_complexes[comp] = list(unique_complexes[comp]) From 1c49073ed2dc58e0948a9caf27e4f6389b3a85ee Mon Sep 17 00:00:00 2001 From: bmazinng Date: Wed, 6 Apr 2022 13:33:43 +0200 Subject: [PATCH 7/9] Added usage of 'do not care state' for '_' literal in SpeciesFeatureValues --- eBCSgen/Export/ModelSBML.py | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/eBCSgen/Export/ModelSBML.py b/eBCSgen/Export/ModelSBML.py index 819af73..d685580 100644 --- a/eBCSgen/Export/ModelSBML.py +++ b/eBCSgen/Export/ModelSBML.py @@ -20,7 +20,11 @@ def __init__(self, level, version): def create_species_feature_type(self, new_species_type, atomic: str, atomics: dict): """ - Function creates species feature inside Atomic agent + Function creates species feature Type inside Atomic agent. adds all possible feature + values to ListOfPossibleFeatureValues of given speciesFeatureType. + If feature value os _, do not add it. + Later in creating of SpeciesFeature in model, we will not add _ but instead omit features specified. + Result will be do not care state :param new_species_type: libsbml object of new speciesType :param atomic: name of given atomic agent @@ -30,8 +34,9 @@ def create_species_feature_type(self, new_species_type, atomic: str, atomics: di new_feature_type.setId("{}_feature_type".format(atomic)) new_feature_type.setOccur(1) for feature_value in atomics: - new_feature_type.createPossibleSpeciesFeatureValue() \ - .setId("{}_{}".format(atomic, feature_value)) + if feature_value != "_": + new_feature_type.createPossibleSpeciesFeatureValue() \ + .setId("{}_{}".format(atomic, feature_value)) def create_species_types_from_atomic(self, atomics: dict): """ @@ -111,7 +116,11 @@ def set_species_feature(self, agent, plugin, component_ref, is_component: bool): Creates and sets up species feature If there are 2 or more agents in complex with the same name, reference can - distinguish between them by mentioning their parent structure agent too + distinguish between them by mentioning their parent structure agent too. + + If SpeciesFeature should be '_' program does not add this value. Semantics of this is + 'do not care' state in SBML-multi. For the refference see above method + create_species_feature_type(). :param agent: agent of given feature :param plugin: multi plugin to manipulate with species features @@ -123,8 +132,9 @@ def set_species_feature(self, agent, plugin, component_ref, is_component: bool): if is_component: sf.setComponent(component_ref) sf.setOccur(1) - sfv = sf.createSpeciesFeatureValue() - sfv.setValue("{}_{}".format(agent.name, agent.state)) + if agent.state != '_': + sfv = sf.createSpeciesFeatureValue() + sfv.setValue("{}_{}".format(agent.name, agent.state)) plugin.addSpeciesFeature(sf) def create_species_features(self, comp_agent: eBCSgen.Core.Complex.Complex, new_species_multi_plugin): From 8dab0b0c64c1a3add4008a2fb47b544493567021 Mon Sep 17 00:00:00 2001 From: Matej Trojak Date: Wed, 6 Apr 2022 17:34:29 +0200 Subject: [PATCH 8/9] Minor improvements in docstrings --- eBCSgen/Export/ModelSBML.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/eBCSgen/Export/ModelSBML.py b/eBCSgen/Export/ModelSBML.py index d685580..3ff5fad 100644 --- a/eBCSgen/Export/ModelSBML.py +++ b/eBCSgen/Export/ModelSBML.py @@ -20,11 +20,10 @@ def __init__(self, level, version): def create_species_feature_type(self, new_species_type, atomic: str, atomics: dict): """ - Function creates species feature Type inside Atomic agent. adds all possible feature - values to ListOfPossibleFeatureValues of given speciesFeatureType. - If feature value os _, do not add it. - Later in creating of SpeciesFeature in model, we will not add _ but instead omit features specified. - Result will be do not care state + Function creates species feature Type inside Atomic agent. + + Add all possible feature values to ListOfPossibleFeatureValues of given speciesFeatureType. + If feature value is '_', ignore itte :param new_species_type: libsbml object of new speciesType :param atomic: name of given atomic agent @@ -118,9 +117,7 @@ def set_species_feature(self, agent, plugin, component_ref, is_component: bool): If there are 2 or more agents in complex with the same name, reference can distinguish between them by mentioning their parent structure agent too. - If SpeciesFeature should be '_' program does not add this value. Semantics of this is - 'do not care' state in SBML-multi. For the refference see above method - create_species_feature_type(). + If SpeciesFeature should be '_', ignore it. This corresponds to any value. :param agent: agent of given feature :param plugin: multi plugin to manipulate with species features From f191d7556400782b2bf8038881b95246ee810c36 Mon Sep 17 00:00:00 2001 From: Matej Trojak Date: Wed, 6 Apr 2022 17:34:46 +0200 Subject: [PATCH 9/9] Update setup to version 2.0.3 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index b720373..a87ad98 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages setup(name='eBCSgen', - version='2.0', + version='2.0.3', description='eBSCgen is a tool for development and analysis of models written in Biochemical Space Language', url='https://github.com/sybila/eBCSgen', author='Mate Trojak',