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

sbml unit factors are exported and imported proeprly

parent 11ea9346
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",!494Conversion rest api scaling
......@@ -16,6 +16,7 @@ import org.sbml.jsbml.ext.render.RenderLayoutPlugin;
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.Species;
......
......@@ -32,6 +32,7 @@ import lcsb.mapviewer.converter.InvalidInputDataExecption;
import lcsb.mapviewer.converter.model.celldesigner.structure.ComplexSpeciesTest;
import lcsb.mapviewer.converter.model.sbml.reaction.SbmlReactionParser;
import lcsb.mapviewer.converter.model.sbml.species.SbmlSpeciesParser;
import lcsb.mapviewer.converter.model.sbml.units.SbmlUnitsParser;
import lcsb.mapviewer.model.map.BioEntity;
import lcsb.mapviewer.model.map.InconsistentModelException;
import lcsb.mapviewer.model.map.MiriamData;
......
package lcsb.mapviewer.converter.model.sbml;
package lcsb.mapviewer.converter.model.sbml.units;
import org.apache.log4j.Logger;
import org.sbml.jsbml.Unit;
import org.sbml.jsbml.UnitDefinition;
import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
import lcsb.mapviewer.model.map.kinetics.SbmlUnitTypeFactor;
import lcsb.mapviewer.model.map.model.Model;
public class SbmlUnitExporter {
Logger logger = Logger.getLogger(SbmlUnitExporter.class);
@SuppressWarnings("unused")
private static Logger logger = Logger.getLogger(SbmlUnitExporter.class);
private Model minervaModel;
public SbmlUnitExporter(lcsb.mapviewer.model.map.model.Model minervaModel) {
......@@ -24,6 +27,14 @@ public class SbmlUnitExporter {
UnitDefinition result = new UnitDefinition();
result.setId(unit.getUnitId());
result.setName(unit.getName());
for (SbmlUnitTypeFactor factor : unit.getUnitTypeFactors()) {
Unit sbmlUnit = new Unit();
sbmlUnit.setKind(UnitMapping.unitTypeToKind(factor.getUnitType()));
sbmlUnit.setExponent((double) factor.getExponent());
sbmlUnit.setMultiplier(factor.getMultiplier());
sbmlUnit.setScale(factor.getScale());
result.addUnit(sbmlUnit);
}
return result;
}
......
package lcsb.mapviewer.converter.model.sbml;
package lcsb.mapviewer.converter.model.sbml.units;
import java.util.ArrayList;
import java.util.Collection;
......@@ -7,8 +7,11 @@ import java.util.List;
import org.apache.log4j.Logger;
import org.sbml.jsbml.ListOf;
import org.sbml.jsbml.Model;
import org.sbml.jsbml.Unit;
import lcsb.mapviewer.converter.model.sbml.SbmlBioEntityParser;
import lcsb.mapviewer.model.map.kinetics.SbmlUnit;
import lcsb.mapviewer.model.map.kinetics.SbmlUnitTypeFactor;
public class SbmlUnitsParser extends SbmlBioEntityParser {
Logger logger = Logger.getLogger(SbmlUnitsParser.class);
......@@ -20,6 +23,12 @@ public class SbmlUnitsParser extends SbmlBioEntityParser {
protected SbmlUnit parse(org.sbml.jsbml.UnitDefinition unitDefinition, Model sbmlModel) {
SbmlUnit result = new SbmlUnit(unitDefinition.getId());
result.setName(unitDefinition.getName());
for (int i = 0; i < unitDefinition.getUnitCount(); i++) {
Unit sbmlUnit = unitDefinition.getUnit(i);
SbmlUnitTypeFactor factor = new SbmlUnitTypeFactor(UnitMapping.kindToUnitType(sbmlUnit.getKind()),
(int) sbmlUnit.getExponent(), sbmlUnit.getScale(), sbmlUnit.getMultiplier());
result.addUnitTypeFactor(factor);
}
return result;
}
......
package lcsb.mapviewer.converter.model.sbml.units;
import org.sbml.jsbml.Unit.Kind;
import lcsb.mapviewer.common.exception.InvalidArgumentException;
import lcsb.mapviewer.model.map.kinetics.SbmlUnitType;
public enum UnitMapping {
AMPERE(SbmlUnitType.AMPERE, Kind.AMPERE),
BECQUEREL(SbmlUnitType.BECQUEREL, Kind.BECQUEREL),
CANDELA(SbmlUnitType.CANDELA, Kind.CANDELA),
COULUMB(SbmlUnitType.COULUMB, Kind.COULOMB),
DIMENSIONLESS(SbmlUnitType.DIMENSIONLESS, Kind.DIMENSIONLESS),
FARAD(SbmlUnitType.FARAD, Kind.FARAD),
GRAM(SbmlUnitType.GRAM, Kind.GRAM),
GRAY(SbmlUnitType.GRAY, Kind.GRAY),
HENRY(SbmlUnitType.HENRY, Kind.HENRY),
HERTZ(SbmlUnitType.HERTZ, Kind.HERTZ),
ITEM(SbmlUnitType.ITEM, Kind.ITEM),
JOULE(SbmlUnitType.JOULE, Kind.JOULE),
KATAL(SbmlUnitType.KATAL, Kind.KATAL),
KELVIN(SbmlUnitType.KELVIN, Kind.KELVIN),
KILOGRAM(SbmlUnitType.KILOGRAM, Kind.KILOGRAM),
LITRE(SbmlUnitType.LITRE, Kind.LITRE),
LUMEN(SbmlUnitType.LUMEN, Kind.LUMEN),
LUX(SbmlUnitType.LUX, Kind.LUX),
METRE(SbmlUnitType.METRE, Kind.METRE),
MOLE(SbmlUnitType.MOLE, Kind.MOLE),
NEWTON(SbmlUnitType.NEWTON, Kind.NEWTON),
OHM(SbmlUnitType.OHM, Kind.OHM),
PASCAL(SbmlUnitType.PASCAL, Kind.PASCAL),
RADIAN(SbmlUnitType.RADIAN, Kind.RADIAN),
SECOND(SbmlUnitType.SECOND, Kind.SECOND),
SIEMENS(SbmlUnitType.SIEMENS, Kind.SIEMENS),
SIEVERT(SbmlUnitType.SIEVERT, Kind.SIEVERT),
STERADIAN(SbmlUnitType.STERADIAN, Kind.STERADIAN),
TESLA(SbmlUnitType.TESLA, Kind.TESLA),
VOLT(SbmlUnitType.VOLT, Kind.VOLT),
WATT(SbmlUnitType.WATT, Kind.WATT),
WEBER(SbmlUnitType.WEBER, Kind.WEBER);
private SbmlUnitType unitType;
private Kind sbmlUnitType;
UnitMapping(SbmlUnitType unitType, Kind sbmlUnitType) {
this.unitType = unitType;
this.sbmlUnitType = sbmlUnitType;
}
public static Kind unitTypeToKind(SbmlUnitType unitType) {
for (UnitMapping mapping : UnitMapping.values()) {
if (mapping.unitType == unitType) {
return mapping.sbmlUnitType;
}
}
throw new InvalidArgumentException("Unknown sbml unit type: " + unitType);
}
public static SbmlUnitType kindToUnitType(Kind kind) {
for (UnitMapping mapping : UnitMapping.values()) {
if (mapping.sbmlUnitType == kind) {
return mapping.unitType;
}
}
throw new InvalidArgumentException("Unknown sbml unit type: " + kind);
}
}
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