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

unit test do't run on file that is currently nor parsable by jsbml

parent a123fb58
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"
Pipeline #8039 passed
Showing
with 174 additions and 73 deletions
......@@ -5,8 +5,10 @@ import org.sbml.jsbml.ext.multi.MultiSpeciesType;
import lcsb.mapviewer.model.map.species.Element;
import lcsb.mapviewer.model.map.species.Species;
import lcsb.mapviewer.model.map.species.field.AbstractSiteModification;
import lcsb.mapviewer.model.map.species.field.ModificationResidue;
import lcsb.mapviewer.model.map.species.field.ModificationState;
import lcsb.mapviewer.model.map.species.field.TranscriptionSite;
/**
* Class responsible for providing identifiers of structures inside multi
......@@ -70,19 +72,20 @@ public final class MultiPackageNamingUtils {
return featureTypeId.startsWith(MINERVA_POSITION_TO_COMPARTMENT_PREFIX);
}
public static String getModificationFeatureId(Species species, Class<? extends ModificationResidue> class1) {
return MINERVA_MODIFICATION_TYPE_PREFIX + species.getClass().getSimpleName() + "_" + class1.getSimpleName();
}
public static String getModificationFeatureId(Species species, Class<? extends ModificationResidue> class1,
ModificationState state) {
String stateName = "null";
if (state != null) {
stateName = state.name();
public static String getModificationFeatureId(ModificationResidue mr) {
String stateSuffix = "";
if (mr instanceof AbstractSiteModification) {
if (((AbstractSiteModification) mr).getState() != null) {
stateSuffix = "_" + ((AbstractSiteModification) mr).getState().name();
} else {
stateSuffix = "_null";
}
} else if (mr instanceof TranscriptionSite) {
stateSuffix = "_" + ((TranscriptionSite) mr).getActive() + "_" + ((TranscriptionSite) mr).getDirection();
}
return MINERVA_MODIFICATION_TYPE_PREFIX + species.getClass().getSimpleName() + "_" + class1.getSimpleName() + "_"
+ stateName;
return MINERVA_MODIFICATION_TYPE_PREFIX + mr.getSpecies().getClass().getSimpleName() + "_"
+ mr.getClass().getSimpleName() + stateSuffix;
}
public static boolean isModificationFeatureId(String featureTypeString) {
......@@ -103,4 +106,26 @@ public final class MultiPackageNamingUtils {
return null;
}
public static Boolean getTranscriptionFactorActiveStateFromFeatureTypeName(String featureTypeString) {
String tmp[] = featureTypeString.split("_");
Boolean result = null;
if (tmp.length >= 2) {
if (tmp[tmp.length - 2].equalsIgnoreCase("TRUE")) {
result = true;
} else if (tmp[tmp.length - 2].equalsIgnoreCase("FALSE")) {
result = false;
}
}
return result;
}
public static String getTranscriptionFactorDirectionStateFromFeatureTypeName(String featureTypeString) {
String tmp[] = featureTypeString.split("_");
String result = null;
if (tmp.length >= 1) {
result = tmp[tmp.length - 1];
}
return result;
}
}
......@@ -120,15 +120,15 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
PossibleSpeciesFeatureValue value;
if (mr instanceof BindingRegion) {
feature = getBindingRegionFeature(mr.getSpecies(), speciesType);
feature = getBindingRegionFeature((BindingRegion) mr, speciesType);
} else if (mr instanceof CodingRegion) {
feature = getCodingRegionFeature(mr.getSpecies(), speciesType);
feature = getCodingRegionFeature((CodingRegion) mr, speciesType);
} else if (mr instanceof ProteinBindingDomain) {
feature = getProteinBindingDomainFeature(mr.getSpecies(), speciesType);
feature = getProteinBindingDomainFeature((ProteinBindingDomain) mr, speciesType);
} else if (mr instanceof RegulatoryRegion) {
feature = getRegulatoryRegionFeature(mr.getSpecies(), speciesType);
feature = getRegulatoryRegionFeature((RegulatoryRegion) mr, speciesType);
} else if (mr instanceof TranscriptionSite) {
feature = getTranscriptionSiteFeature(mr.getSpecies(), speciesType);
feature = getTranscriptionSiteFeature((TranscriptionSite) mr, speciesType);
} else if (mr instanceof ModificationSite) {
feature = getModificationSiteFeature((ModificationSite) mr, speciesType);
} else if (mr instanceof Residue) {
......@@ -142,40 +142,42 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
}
}
private SpeciesFeatureType getCodingRegionFeature(Species species, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(species, CodingRegion.class);
private SpeciesFeatureType getCodingRegionFeature(CodingRegion mr, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(mr);
String featureName = "Coding region";
return getOrCreateFeatureById(featureId, featureName, speciesType);
}
private SpeciesFeatureType getBindingRegionFeature(Species species, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(species, BindingRegion.class);
private SpeciesFeatureType getBindingRegionFeature(BindingRegion bindingRegion, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(bindingRegion);
String featureName = "Binding region";
return getOrCreateFeatureById(featureId, featureName, speciesType);
}
private SpeciesFeatureType getProteinBindingDomainFeature(Species species, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(species, ProteinBindingDomain.class);
private SpeciesFeatureType getProteinBindingDomainFeature(ProteinBindingDomain proteinBindingDomain,
MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(proteinBindingDomain);
String featureName = "Protein binding domain";
return getOrCreateFeatureById(featureId, featureName, speciesType);
}
private SpeciesFeatureType getRegulatoryRegionFeature(Species species, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(species, RegulatoryRegion.class);
private SpeciesFeatureType getRegulatoryRegionFeature(RegulatoryRegion regulatoryRegion,
MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(regulatoryRegion);
String featureName = "Regulatory region";
return getOrCreateFeatureById(featureId, featureName, speciesType);
}
private SpeciesFeatureType getTranscriptionSiteFeature(Species species, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(species, TranscriptionSite.class);
private SpeciesFeatureType getTranscriptionSiteFeature(TranscriptionSite transcriptionSite,
MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(transcriptionSite);
String featureName = "Transcription site";
return getOrCreateFeatureById(featureId, featureName, speciesType);
}
private SpeciesFeatureType getModificationSiteFeature(ModificationSite modificationSite,
MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(modificationSite.getSpecies(),
ModificationSite.class, modificationSite.getState());
String featureId = MultiPackageNamingUtils.getModificationFeatureId(modificationSite);
String featureName = "";
if (modificationSite.getState() != null) {
featureName = modificationSite.getState().getFullName();
......@@ -184,8 +186,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
}
private SpeciesFeatureType getResidueFeature(Residue residue, MultiSpeciesType speciesType) {
String featureId = MultiPackageNamingUtils.getModificationFeatureId(residue.getSpecies(), Residue.class,
residue.getState());
String featureId = MultiPackageNamingUtils.getModificationFeatureId(residue);
String featureName = "";
if (residue.getState() != null) {
featureName = residue.getState().getFullName();
......@@ -401,11 +402,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
private void createModificationGlyph(ModificationResidue mr, org.sbml.jsbml.Species sbmlSpecies) {
MultiSpeciesPlugin speciesExtension = (MultiSpeciesPlugin) sbmlSpecies.getExtension("multi");
SpeciesFeature feature = null;
String featureTypeId = MultiPackageNamingUtils.getModificationFeatureId(mr.getSpecies(), mr.getClass());
if (mr instanceof AbstractSiteModification) {
featureTypeId = MultiPackageNamingUtils.getModificationFeatureId(mr.getSpecies(), mr.getClass(),
((AbstractSiteModification) mr).getState());
}
String featureTypeId = MultiPackageNamingUtils.getModificationFeatureId(mr);
for (SpeciesFeature existingFeature : speciesExtension.getListOfSpeciesFeatures()) {
if (existingFeature.getSpeciesFeatureType().equals(featureTypeId)) {
feature = existingFeature;
......
......@@ -210,7 +210,10 @@ public class SbmlSpeciesParser extends SbmlElementParser<org.sbml.jsbml.Species>
} else if (MultiPackageNamingUtils.isModificationFeatureId(featureTypeString, TranscriptionSite.class)) {
mr = new TranscriptionSite();
if (minervaElement instanceof SpeciesWithTranscriptionSite) {
((SpeciesWithTranscriptionSite) minervaElement).addTranscriptionSite((TranscriptionSite) mr);
TranscriptionSite transcriptionSite = (TranscriptionSite) mr;
transcriptionSite.setActive(MultiPackageNamingUtils.getTranscriptionFactorActiveStateFromFeatureTypeName(featureTypeString));
transcriptionSite.setDirection(MultiPackageNamingUtils.getTranscriptionFactorDirectionStateFromFeatureTypeName(featureTypeString));
((SpeciesWithTranscriptionSite) minervaElement).addTranscriptionSite(transcriptionSite);
} else {
logger.warn(warnPrefix + "Object class doesn't support " + mr.getClass());
}
......
......@@ -12,7 +12,8 @@ import lcsb.mapviewer.converter.model.sbml.species.AllSbmlSpeciesTests;
AllSbmlSpeciesTests.class,
GenericSbmlParserTest.class,
GenericSbmlToXmlParserTest.class,
MultiSbmlParserTest.class,
CellDesignerToMultiExportTest.class,
MultiParserTest.class,
SbmlBioEntityExporterTest.class,
SbmlExporterTest.class,
SbmlExporterFromCellDesignerTest.class,
......
......@@ -4,7 +4,6 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
......@@ -13,7 +12,6 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -22,9 +20,6 @@ import org.junit.runners.Parameterized.Parameters;
import lcsb.mapviewer.converter.ConverterParams;
import lcsb.mapviewer.converter.IConverter;
import lcsb.mapviewer.converter.graphics.AbstractImageGenerator;
import lcsb.mapviewer.converter.graphics.NormalImageGenerator;
import lcsb.mapviewer.converter.graphics.PngImageGenerator;
import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
import lcsb.mapviewer.model.map.model.Model;
import lcsb.mapviewer.model.map.model.ModelComparator;
......@@ -43,7 +38,7 @@ public class CellDesignerToMultiExportTest {
@Parameters(name = "{index} : {0}")
public static Collection<Object[]> data() throws IOException {
Collection<Object[]> data = new ArrayList<Object[]>();
Files.walk(Paths.get("testFiles/multi")).forEach(fPath -> {
Files.walk(Paths.get("testFiles/cd_for_multi")).forEach(fPath -> {
if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
data.add(new Object[] { fPath });
}
......@@ -54,40 +49,23 @@ public class CellDesignerToMultiExportTest {
@Test
public void createModelTest() throws Exception {
try {
String dir = Files.createTempDirectory("sbml-temp-images-dir").toFile().getAbsolutePath();
IConverter converter = new SbmlParser();
IConverter converter = new CellDesignerXmlParser();
Model model = converter.createModel(new ConverterParams().filename(filePath.toString()));
model.setName(null);
// Create and display image of parsed map
AbstractImageGenerator.Params params = new AbstractImageGenerator.Params().height(model.getHeight())
.width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
NormalImageGenerator nig = new PngImageGenerator(params);
String pathWithouExtension = dir + "/"
+ filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".xml"));
String pngFilePath = pathWithouExtension.concat(".png");
nig.saveToFile(pngFilePath);
// Desktop.getDesktop().open(new File(pngFilePath));
CellDesignerXmlParser cellDesignerXmlParser = new CellDesignerXmlParser();
String xmlString = cellDesignerXmlParser.toXml(model);
SbmlExporter sbmlExporter = new SbmlExporter();
SbmlParser sbmlParser = new SbmlParser();
String xmlString = sbmlExporter.toXml(model);
InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
Model model2 = cellDesignerXmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
AbstractImageGenerator.Params params2 = new AbstractImageGenerator.Params().height(model2.getHeight())
.width(model2.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model2);
NormalImageGenerator nig2 = new PngImageGenerator(params2);
String pngFilePath2 = pathWithouExtension.concat("_2.png");
nig2.saveToFile(pngFilePath2);
Model model2 = sbmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
model2.setName(null);
assertNotNull(model2);
ModelComparator comparator = new ModelComparator(1.0);
assertEquals(0, comparator.compare(model, model2));
FileUtils.deleteDirectory(new File(dir));
} catch (Exception e) {
// TODO Auto-generated catch block
......
......@@ -22,7 +22,6 @@ import lcsb.mapviewer.converter.ConverterParams;
import lcsb.mapviewer.converter.IConverter;
import lcsb.mapviewer.model.map.model.Model;
import lcsb.mapviewer.model.map.model.ModelComparator;
import lcsb.mapviewer.model.map.reaction.Reaction;
@RunWith(Parameterized.class)
public class GenericSbmlToXmlParserTest {
......@@ -66,7 +65,7 @@ public class GenericSbmlToXmlParserTest {
+ filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".xml"));
String xmlFilePath = pathWithouExtension.concat(".xml");
converter.exportModelToFile(model, xmlFilePath);
Model model2 = converter.createModel(new ConverterParams().filename(xmlFilePath).sizeAutoAdjust(false));
model2.setName(null);
......
......@@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
......@@ -12,6 +13,7 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collection;
import org.apache.commons.io.FileUtils;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -20,25 +22,28 @@ import org.junit.runners.Parameterized.Parameters;
import lcsb.mapviewer.converter.ConverterParams;
import lcsb.mapviewer.converter.IConverter;
import lcsb.mapviewer.converter.graphics.AbstractImageGenerator;
import lcsb.mapviewer.converter.graphics.NormalImageGenerator;
import lcsb.mapviewer.converter.graphics.PngImageGenerator;
import lcsb.mapviewer.converter.model.celldesigner.CellDesignerXmlParser;
import lcsb.mapviewer.model.map.model.Model;
import lcsb.mapviewer.model.map.model.ModelComparator;
@RunWith(Parameterized.class)
public class MultiSbmlParserTest {
public class MultiParserTest {
static Logger logger = Logger.getLogger(MultiSbmlParserTest.class.getName());
static Logger logger = Logger.getLogger(MultiParserTest.class.getName());
private Path filePath;
public MultiSbmlParserTest(Path filePath) {
public MultiParserTest(Path filePath) {
this.filePath = filePath;
}
@Parameters(name = "{index} : {0}")
public static Collection<Object[]> data() throws IOException {
Collection<Object[]> data = new ArrayList<Object[]>();
Files.walk(Paths.get("testFiles/cd_for_multi")).forEach(fPath -> {
Files.walk(Paths.get("testFiles/multi")).forEach(fPath -> {
if (Files.isRegularFile(fPath) && fPath.toString().endsWith(".xml")) {
data.add(new Object[] { fPath });
}
......@@ -49,23 +54,40 @@ public class MultiSbmlParserTest {
@Test
public void createModelTest() throws Exception {
try {
IConverter converter = new CellDesignerXmlParser();
String dir = Files.createTempDirectory("sbml-temp-images-dir").toFile().getAbsolutePath();
IConverter converter = new SbmlParser();
Model model = converter.createModel(new ConverterParams().filename(filePath.toString()));
model.setName(null);
SbmlExporter sbmlExporter = new SbmlExporter();
SbmlParser sbmlParser = new SbmlParser();
String xmlString = sbmlExporter.toXml(model);
// Create and display image of parsed map
AbstractImageGenerator.Params params = new AbstractImageGenerator.Params().height(model.getHeight())
.width(model.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model);
NormalImageGenerator nig = new PngImageGenerator(params);
String pathWithouExtension = dir + "/"
+ filePath.getFileName().toString().substring(0, filePath.getFileName().toString().indexOf(".xml"));
String pngFilePath = pathWithouExtension.concat(".png");
nig.saveToFile(pngFilePath);
// Desktop.getDesktop().open(new File(pngFilePath));
CellDesignerXmlParser cellDesignerXmlParser = new CellDesignerXmlParser();
String xmlString = cellDesignerXmlParser.toXml(model);
InputStream is = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
Model model2 = sbmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
model2.setName(null);
Model model2 = cellDesignerXmlParser.createModel(new ConverterParams().inputStream(is).sizeAutoAdjust(false));
AbstractImageGenerator.Params params2 = new AbstractImageGenerator.Params().height(model2.getHeight())
.width(model2.getWidth()).nested(true).scale(1).level(20).x(0).y(0).model(model2);
NormalImageGenerator nig2 = new PngImageGenerator(params2);
String pngFilePath2 = pathWithouExtension.concat("_2.png");
nig2.saveToFile(pngFilePath2);
assertNotNull(model2);
ModelComparator comparator = new ModelComparator(1.0);
assertEquals(0, comparator.compare(model, model2));
FileUtils.deleteDirectory(new File(dir));
} catch (Exception e) {
// TODO Auto-generated catch block
......
......@@ -534,7 +534,6 @@ public class SbmlExporterTest {
@Test
public void testMultiExtensionTypeDefinition() throws Exception {
String structuralState = "xxx";
Model model = createEmptyModel();
GenericProtein element = new GenericProtein("id");
element.setName("test name");
......@@ -595,17 +594,17 @@ public class SbmlExporterTest {
Residue mr = new Residue("x1");
mr.setName("217U");
mr.setState(ModificationState.PHOSPHORYLATED);
mr.setPosition(new Point2D.Double(10,11));
mr.setPosition(new Point2D.Double(10, 11));
element.addResidue(mr);
mr = new Residue("Y");
mr.setName("218");
mr.setState(ModificationState.PHOSPHORYLATED);
mr.setPosition(new Point2D.Double(10,12));
mr.setPosition(new Point2D.Double(10, 12));
element.addResidue(mr);
mr = new Residue("Z");
mr.setName("219");
mr.setState(ModificationState.UBIQUITINATED);
mr.setPosition(new Point2D.Double(10,13));
mr.setPosition(new Point2D.Double(10, 13));
element.addResidue(mr);
model.addElement(element);
Model deserializedModel = getModelAfterSerializing(model);
......
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