Skip to content
Snippets Groups Projects
Commit eaea8d6f authored by Piotr Gawron's avatar Piotr Gawron
Browse files

parsing of global parameters supported

parent 54134e72
No related branches found
No related tags found
1 merge request!186Resolve "upload of sbml"
......@@ -27,10 +27,13 @@ public class SbmlExporter {
compartmentExporter);
SbmlReactionExporter reactionExporter = new SbmlReactionExporter(layout, model, speciesExporter, compartmentExporter);
SbmlUnitExporter unitExporter = new SbmlUnitExporter(model);
SbmlParameterExporter parameterExporter = new SbmlParameterExporter(model);
compartmentExporter.exportElements(result);
speciesExporter.exportElements(result);
reactionExporter.exportElements(result);
unitExporter.exportUnits(result);
parameterExporter.exportParameter(result);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
......
package lcsb.mapviewer.converter.model.sbml;
import org.apache.log4j.Logger;
import org.sbml.jsbml.Parameter;
import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
import lcsb.mapviewer.model.map.model.Model;
public class SbmlParameterExporter {
Logger logger = Logger.getLogger(SbmlParameterExporter.class);
private Model minervaModel;
public SbmlParameterExporter(lcsb.mapviewer.model.map.model.Model minervaModel) {
this.minervaModel = minervaModel;
}
public void exportParameter(org.sbml.jsbml.Model result) {
for (SbmlParameter unit : minervaModel.getParameters()) {
result.addParameter(createParameter(unit));
}
}
private Parameter createParameter(SbmlParameter unit) {
Parameter result = new Parameter();
result.setName(unit.getName());
result.setValue(unit.getValue());
result.setId(unit.getParameterId());
result.setUnits(unit.getUnits().getUnitId());
return result;
}
}
package lcsb.mapviewer.converter.model.sbml;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.apache.log4j.Logger;
import org.sbml.jsbml.ListOf;
import org.sbml.jsbml.Model;
import lcsb.mapviewer.model.map.kinetics.SbmlParameter;
public class SbmlParameterParser extends SbmlBioEntityParser {
Logger logger = Logger.getLogger(SbmlParameterParser.class);
public SbmlParameterParser(lcsb.mapviewer.model.map.model.Model minervaModel) {
this.minervaModel = minervaModel;
}
protected SbmlParameter parse(org.sbml.jsbml.Parameter unitDefinition, Model sbmlModel) {
SbmlParameter result = new SbmlParameter(unitDefinition.getId());
result.setName(unitDefinition.getName());
result.setValue(unitDefinition.getValue());
result.setUnits(minervaModel.getUnitsByUnitId(unitDefinition.getUnits()));
return result;
}
protected ListOf<org.sbml.jsbml.Parameter> getSbmlElementList(Model sbmlModel) {
return sbmlModel.getListOfParameters();
}
public Collection<SbmlParameter> parseList(Model sbmlModel) {
List<SbmlParameter> result = new ArrayList<>();
for (org.sbml.jsbml.Parameter unitDefinition : getSbmlElementList(sbmlModel)) {
result.add(parse(unitDefinition, sbmlModel));
}
return result;
}
}
......@@ -66,6 +66,7 @@ public class SbmlParser implements IConverter {
SbmlSpeciesParser speciesParser = new SbmlSpeciesParser(layout, model);
SbmlReactionParser reactionParser = new SbmlReactionParser(layout, model, speciesParser, compartmentParser);
SbmlUnitsParser unitParser = new SbmlUnitsParser(model);
SbmlParameterParser parameterParser = new SbmlParameterParser(model);
Set<MiriamData> annotations = compartmentParser.parseAnnotation(sbmlModel.getAnnotation());
if (annotations.size() > 0) {
......@@ -73,6 +74,7 @@ public class SbmlParser implements IConverter {
}
model.addUnits(unitParser.parseList(sbmlModel));
model.addParameters(parameterParser.parseList(sbmlModel));
model.addElements(compartmentParser.parseList(sbmlModel));
model.addElements(speciesParser.parseList(sbmlModel));
......@@ -104,14 +106,11 @@ public class SbmlParser implements IConverter {
if (sbmlModel.getEventAssignmentCount() > 0) {
throw new NotImplementedException("EventAssignemnts not implemented for model");
}
if (sbmlModel.getFunctionDefinitionCount() > 0) {
throw new NotImplementedException("FunctionDefinition not implemented for model");
}
if (sbmlModel.getInitialAssignmentCount() > 0) {
throw new NotImplementedException("InitialAssignment not implemented for model");
}
if (sbmlModel.getParameterCount() > 0) {
throw new NotImplementedException("Parameter not implemented for model");
if (sbmlModel.getFunctionDefinitionCount() > 0) {
throw new NotImplementedException("Function not implemented for model");
}
if (sbmlModel.getRuleCount() > 0) {
throw new NotImplementedException("Rule not implemented for model");
......
......@@ -59,6 +59,19 @@ public class SbmlParserTest {
}
}
@Test
public void testParseGlobalParameters() throws FileNotFoundException, InvalidInputDataExecption {
Model model = parser
.createModel(new ConverterParams().filename("testFiles/layoutExample/kinetic_global_paramter.xml"));
assertTrue("There should be a kinetic parameter defined", model.getParameters().size() > 0);
}
@Test
public void testParseFunctions() throws FileNotFoundException, InvalidInputDataExecption {
Model model = parser.createModel(new ConverterParams().filename("testFiles/layoutExample/kinetic_function.xml"));
assertTrue("There should be a kinetic function defined", model.getFunctions().size() > 0);
}
@Test
public void testParseSpecies() throws FileNotFoundException, InvalidInputDataExecption {
Model model = parser
......
<?xml version="1.0" encoding="UTF-8"?>
<sbml level="2" version="3" xmlns="http://www.sbml.org/sbml/level2/version3">
<model name="EnzymaticReaction">
<listOfParameters>
<parameter metaid="param_id" id="param_id" name="Parameter name" value="12" units="volume"/>
</listOfParameters>
<listOfUnitDefinitions>
<unitDefinition id="per_second">
<listOfUnits>
<unit kind="second" exponent="-1"/>
</listOfUnits>
</unitDefinition>
<unitDefinition id="litre_per_mole_per_second">
<listOfUnits>
<unit kind="mole" exponent="-1"/>
<unit kind="litre" exponent="1"/>
<unit kind="second" exponent="-1"/>
</listOfUnits>
</unitDefinition>
</listOfUnitDefinitions>
<listOfCompartments>
<compartment id="cytosol" size="1e-14"/>
</listOfCompartments>
<listOfSpecies>
<species compartment="cytosol" id="ES" initialAmount="0" name="ES"/>
<species compartment="cytosol" id="P" initialAmount="0" name="P"/>
<species compartment="cytosol" id="S" initialAmount="1e-20" name="S"/>
<species compartment="cytosol" id="E" initialAmount="5e-21" name="E"/>
</listOfSpecies>
<listOfReactions>
<reaction id="veq">
<listOfReactants>
<speciesReference species="E"/>
<speciesReference species="S"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="ES"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci>cytosol</ci>
<apply>
<minus/>
<apply>
<times/>
<ci>kon</ci>
<ci>E</ci>
<ci>S</ci>
</apply>
<apply>
<times/>
<ci>koff</ci>
<ci>ES</ci>
</apply>
</apply>
</apply>
</math>
<listOfParameters>
<parameter id="kon" value="1000000" units="litre_per_mole_per_second"/>
<parameter id="koff" value="0.2" units="per_second"/>
</listOfParameters>
</kineticLaw>
</reaction>
<reaction id="vcat" reversible="false">
<listOfReactants>
<speciesReference species="ES"/>
</listOfReactants>
<listOfProducts>
<speciesReference species="E"/>
<speciesReference species="P"/>
</listOfProducts>
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci>cytosol</ci>
<ci>kcat</ci>
<ci>ES</ci>
</apply>
</math>
<listOfParameters>
<parameter id="kcat" value="0.1" units="per_second"/>
</listOfParameters>
</kineticLaw>
</reaction>
</listOfReactions>
</model>
</sbml>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment