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

export contains list of species type for multi package

parent 7b958814
No related branches found
No related tags found
2 merge requests!630WIP: Resolve "The privileges of a new user are not saved in some cases",!560Resolve "add support for modifications and states in sbml export/import"
......@@ -16,6 +16,8 @@ import org.sbml.jsbml.SBMLWriter;
import org.sbml.jsbml.ext.layout.Dimensions;
import org.sbml.jsbml.ext.layout.Layout;
import org.sbml.jsbml.ext.layout.LayoutModelPlugin;
import org.sbml.jsbml.ext.multi.MultiModelPlugin;
import org.sbml.jsbml.ext.multi.MultiSpeciesType;
import org.sbml.jsbml.ext.render.GlobalRenderInformation;
import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
......@@ -26,7 +28,9 @@ import lcsb.mapviewer.converter.model.sbml.reaction.SbmlReactionExporter;
import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesExporter;
import lcsb.mapviewer.converter.model.sbml.units.SbmlUnitExporter;
import lcsb.mapviewer.model.map.InconsistentModelException;
import lcsb.mapviewer.model.map.species.Element;
import lcsb.mapviewer.model.map.species.Species;
import lcsb.mapviewer.modelutils.map.ElementUtils;
public class SbmlExporter {
......@@ -79,6 +83,10 @@ public class SbmlExporter {
layout = createSbmlLayout(model, result);
}
if (usedExtensions.contains(SbmlExtension.MULTI)) {
createSbmlMultiPlugin(model, result);
}
SbmlCompartmentExporter compartmentExporter = new SbmlCompartmentExporter(layout, model, usedExtensions);
SbmlBioEntityExporter<Species, org.sbml.jsbml.Species> speciesExporter = new SbmlSpeciesExporter(layout, model,
usedExtensions,
......@@ -132,6 +140,20 @@ public class SbmlExporter {
return layout;
}
public MultiModelPlugin createSbmlMultiPlugin(lcsb.mapviewer.model.map.model.Model model, Model result) {
MultiModelPlugin multiPlugin = new MultiModelPlugin(result);
result.addExtension("multi", multiPlugin);
for (Class<? extends Element> clazz : new ElementUtils().getAvailableElementSubclasses()) {
if (Species.class.isAssignableFrom(clazz)) {
MultiSpeciesType speciesType = new MultiSpeciesType();
speciesType.setName(clazz.getSimpleName());
speciesType.setId("minerva_species_type_" + clazz.getSimpleName());
multiPlugin.getListOfSpeciesTypes().add(speciesType);
}
}
return multiPlugin;
}
/**
* Creates SBML render plugin for SBML model.
*
......
......@@ -18,6 +18,7 @@ import java.util.Set;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.reflections.Reflections;
import org.sbml.jsbml.ext.multi.MultiModelPlugin;
import lcsb.mapviewer.common.Configuration;
import lcsb.mapviewer.converter.ConverterParams;
......@@ -362,10 +363,10 @@ public class SbmlExporterTest {
SbmlExporter exporter = new SbmlExporter();
exporter.removeSbmlExtensions(Arrays.asList(SbmlExtension.values()));
exporter.addSbmlExtension(SbmlExtension.LAYOUT);
Model model = createModelWithReaction();
String xml = exporter.toXml(model);
assertTrue(xml.contains("layout:listOfLayouts"));
}
......@@ -373,10 +374,10 @@ public class SbmlExporterTest {
public void testExportWithoutLayoutExtension() throws Exception {
SbmlExporter exporter = new SbmlExporter();
exporter.removeSbmlExtensions(Arrays.asList(SbmlExtension.values()));
Model model = createModelWithReaction();
String xml = exporter.toXml(model);
assertFalse(xml.contains("layout:listOfLayouts"));
}
......@@ -386,10 +387,10 @@ public class SbmlExporterTest {
exporter.removeSbmlExtensions(Arrays.asList(SbmlExtension.values()));
exporter.addSbmlExtension(SbmlExtension.LAYOUT);
exporter.addSbmlExtension(SbmlExtension.RENDER);
Model model = createModelWithReaction();
String xml = exporter.toXml(model);
assertTrue(xml.contains("render:listOfRenderInformation"));
}
......@@ -398,11 +399,24 @@ public class SbmlExporterTest {
SbmlExporter exporter = new SbmlExporter();
exporter.removeSbmlExtensions(Arrays.asList(SbmlExtension.values()));
exporter.addSbmlExtension(SbmlExtension.LAYOUT);
Model model = createModelWithReaction();
String xml = exporter.toXml(model);
assertFalse(xml.contains("render:listOfRenderInformation"));
}
@Test
public void testExportWithoutMultiExtensionSupportSpeciesTypes() throws Exception {
SbmlExporter exporter = new SbmlExporter();
exporter.removeSbmlExtensions(Arrays.asList(SbmlExtension.values()));
exporter.addSbmlExtension(SbmlExtension.MULTI);
org.sbml.jsbml.Model sbmlModel = exporter.toSbmlDocument(createModelWithReaction()).getModel();
MultiModelPlugin multiPlugin = (MultiModelPlugin) sbmlModel.getExtension("multi");
assertNotNull("Multi plugin is not present in sbml model", multiPlugin);
assertTrue("Species types are not exported", multiPlugin.getListOfSpeciesTypes().size() > 0);
}
}
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