use of org.sbml.jsbml.SBMLDocument in project vcell by virtualcell.
the class SBMLUnitTranslatorTest method testSBMLtoVCell.
@Test
public void testSBMLtoVCell() throws XMLStreamException, IOException, SbmlException {
File[] sbmlFiles = getBiomodelsCuratedSBMLFiles();
// };
for (File sbmlFile : sbmlFiles) {
if (sbmlFile.getName().equals("BIOMD0000000539.xml")) {
System.err.println("skipping this model, seems like a bug in jsbml RenderParser.processEndDocument() ... line 403 ... wrong constant for extension name");
continue;
}
SBMLDocument doc = SBMLReader.read(sbmlFile);
BioModel bioModel = new BioModel(null);
VCUnitSystem unitSystem = bioModel.getModel().getUnitSystem();
Model sbmlModel = doc.getModel();
ListOf<UnitDefinition> listOfUnitDefinitions = sbmlModel.getListOfUnitDefinitions();
for (UnitDefinition sbmlUnitDef : listOfUnitDefinitions) {
VCUnitDefinition vcUnit = SBMLUnitTranslator.getVCUnitDefinition(sbmlUnitDef, unitSystem);
UnitDefinition new_sbmlUnitDef = SBMLUnitTranslator.getSBMLUnitDefinition(vcUnit, 3, 1, unitSystem);
VCUnitDefinition new_vcUnit = SBMLUnitTranslator.getVCUnitDefinition(new_sbmlUnitDef, unitSystem);
if (!vcUnit.getSymbol().equals(new_vcUnit.getSymbol())) {
System.err.println("orig vcUnit '" + vcUnit.getSymbol() + "' doesn't match new vcUnit '" + new_vcUnit.getSymbol() + "'");
}
// System.out.println("sbmlUnit = "+sbmlUnitDef.toString()+", vcUnit = "+vcUnit.getSymbol());
System.out.println("sbmlUnit(" + sbmlUnitDef.getClass().getName() + ", builtin=" + sbmlUnitDef.isVariantOfSubstance() + ") = " + sbmlUnitDef.toString() + ", id=" + sbmlUnitDef.getId() + ", name=" + sbmlUnitDef.getName() + ", vcUnit = " + vcUnit.getSymbol());
if (sbmlUnitDef.getNumUnits() > 1) {
System.out.println("vcUnit = " + vcUnit.getSymbol());
for (Unit unit : sbmlUnitDef.getListOfUnits()) {
try {
// VCUnitDefinition vcUnit = unitSystem.getInstance(unit.getKind().getName());
System.out.println(" vcUnit = " + unit);
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("found bigger unit, " + sbmlUnitDef);
}
}
if (sbmlFile == sbmlFiles[0]) {
System.out.println("sbml length unit = " + sbmlModel.getLengthUnitsInstance() + ", idref=" + sbmlModel.getLengthUnits());
System.out.println("sbml area unit = " + sbmlModel.getAreaUnitsInstance() + ", idref=" + sbmlModel.getAreaUnits());
System.out.println("sbml volume unit = " + sbmlModel.getVolumeUnitsInstance() + ", idref=" + sbmlModel.getVolumeUnits());
System.out.println("sbml time unit = " + sbmlModel.getTimeUnitsInstance() + ", idref=" + sbmlModel.getTimeUnits());
System.out.println("sbml extent unit = " + sbmlModel.getExtentUnitsInstance() + ", idref=" + sbmlModel.getExtentUnits());
System.out.println("sbml substance unit = " + sbmlModel.getSubstanceUnitsInstance() + ", idref=" + sbmlModel.getSubstanceUnits());
for (UnitDefinition sbmlUnitDef : sbmlModel.getListOfPredefinedUnitDefinitions()) {
if (sbmlUnitDef.getNumUnits() == 1 && sbmlUnitDef.getUnit(0).isAvogadro()) {
continue;
}
if (sbmlUnitDef.getNumUnits() == 1 && sbmlUnitDef.getUnit(0).isKatal()) {
continue;
}
VCUnitDefinition vcUnit = SBMLUnitTranslator.getVCUnitDefinition(sbmlUnitDef, unitSystem);
// System.out.println("sbmlUnit = "+sbmlUnitDef.toString()+", vcUnit = "+vcUnit.getSymbol());
System.out.println("sbmlUnit(" + sbmlUnitDef.getClass().getName() + ", builtin=" + sbmlUnitDef.isVariantOfSubstance() + ") = " + sbmlUnitDef.toString() + ", id=" + sbmlUnitDef.getId() + ", name=" + sbmlUnitDef.getName() + ", vcUnit = " + vcUnit.getSymbol());
// for (Unit unit : sbmlUnitDef.getListOfUnits()){
// try {
// VCUnitDefinition vcUnit = unitSystem.getInstance(unit.getKind().getName());
// System.out.println(" vcUnit = "+vcUnit.getSymbol());
// }catch (Exception e){
// e.printStackTrace();
// }
// }
}
}
}
}
use of org.sbml.jsbml.SBMLDocument in project vcell by virtualcell.
the class ProjectService method load.
public Task<Project, String> load(File root) {
final Task<Project, String> task = new Task<Project, String>() {
@Override
protected Project doInBackground() throws Exception {
Project project = new Project(root.getName());
String rootPath = root.getAbsolutePath();
File[] dataFiles = Paths.get(rootPath, "data").toFile().listFiles();
File[] geometryFiles = Paths.get(rootPath, "geometry").toFile().listFiles();
File[] modelDirectories = Paths.get(rootPath, "models").toFile().listFiles();
File[] resultsFiles = Paths.get(rootPath, "results").toFile().listFiles();
int numFiles = dataFiles.length + geometryFiles.length + modelDirectories.length + resultsFiles.length;
int numLoaded = 0;
if (dataFiles != null) {
for (File dataFile : dataFiles) {
try {
setSubtask(dataFile.getName());
Dataset data = datasetIOService.open(dataFile.getAbsolutePath());
project.getData().add(data);
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (geometryFiles != null) {
for (File geometryFile : geometryFiles) {
try {
setSubtask(geometryFile.getName());
Dataset geometry = datasetIOService.open(geometryFile.getAbsolutePath());
// Geometry datasets are saved as 8-bit images so we must convert back to 1-bit
if (geometry.firstElement() instanceof UnsignedByteType) {
@SuppressWarnings("unchecked") Img<UnsignedByteType> img = (Img<UnsignedByteType>) geometry.getImgPlus().getImg();
Img<BitType> converted = opService.convert().bit(img);
ImgPlus<BitType> convertedImgPlus = new ImgPlus<>(converted, geometry.getName());
geometry.setImgPlus(convertedImgPlus);
}
project.getGeometry().add(geometry);
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (modelDirectories != null) {
for (File modelDirectory : modelDirectories) {
setSubtask(modelDirectory.getName());
SBMLDocument sbmlDocument = null;
BufferedImage image = null;
File[] modelFiles = modelDirectory.listFiles();
System.out.println(modelFiles.length);
// Invalid model directory
if (modelFiles.length > 2)
continue;
for (File modelFile : modelFiles) {
System.out.println(modelFile.getName());
if (FilenameUtils.getExtension(modelFile.getName()).equals("xml")) {
sbmlDocument = new SBMLReader().readSBML(modelFile);
System.out.println("Loaded sbml");
} else if (FilenameUtils.getExtension(modelFile.getName()).equals("png")) {
image = ImageIO.read(modelFile);
System.out.println("Loaded image");
}
}
if (sbmlDocument != null) {
VCellModel vCellModel = new VCellModel(modelDirectory.getName(), null, sbmlDocument);
vCellModel.setImage(image);
project.getModels().add(vCellModel);
System.out.println("Added model");
}
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
}
}
if (resultsFiles != null) {
for (File resultsFile : resultsFiles) {
try {
setSubtask(resultsFile.getName());
Dataset results = datasetIOService.open(resultsFile.getAbsolutePath());
// Loading 1-dimensional tif images adds a dimension
// so must crop out empty dimensions
@SuppressWarnings("unchecked") ImgPlus<T> imgPlus = (ImgPlus<T>) results.getImgPlus();
int numDimensions = imgPlus.numDimensions();
long[] dimensions = new long[2 * imgPlus.numDimensions()];
for (int i = 0; i < numDimensions; i++) {
dimensions[i] = 0;
dimensions[i + numDimensions] = imgPlus.dimension(i) - 1;
}
FinalInterval interval = Intervals.createMinMax(dimensions);
ImgPlus<T> cropped = opService.transform().crop(imgPlus, interval, true);
results.setImgPlus(cropped);
project.getResults().add(results);
numLoaded++;
setProgress(numLoaded * 100 / numFiles);
} catch (IOException e) {
e.printStackTrace();
}
}
}
currentProjectRoot = root;
return project;
}
};
return task;
}
use of org.sbml.jsbml.SBMLDocument in project vcell by virtualcell.
the class VCellModelService method getModels.
public Task<List<VCellModel>, String> getModels(VCellService vCellService) {
final Task<List<VCellModel>, String> task = new Task<List<VCellModel>, String>() {
@Override
protected List<VCellModel> doInBackground() throws Exception {
boolean bIgnoreCertProblems = true;
boolean bIgnoreHostMismatch = true;
VCellApiClient vCellApiClient = null;
List<VCellModel> vCellModels = new ArrayList<VCellModel>();
try {
vCellApiClient = new VCellApiClient(HOST, PORT, bIgnoreCertProblems, bIgnoreHostMismatch);
vCellApiClient.authenticate("ImageJ", "richarddberlin", false);
BioModelsQuerySpec querySpec = new BioModelsQuerySpec();
querySpec.owner = "tutorial";
final BiomodelRepresentation[] biomodelReps = vCellApiClient.getBioModels(querySpec);
final int modelsToLoad = biomodelReps.length;
int modelsLoaded = 0;
for (BiomodelRepresentation biomodelRep : biomodelReps) {
setSubtask(biomodelRep.getName());
ApplicationRepresentation[] applicationReps = biomodelRep.getApplications();
if (applicationReps.length > 0) {
String vcml = getVCML(biomodelRep);
if (vcml != null) {
SBMLDocument sbml = vCellService.getSBML(vcml, applicationReps[0].getName());
VCellModel vCellModel = new VCellModel(biomodelRep.getName(), biomodelRep.getBmKey(), sbml);
vCellModels.add(vCellModel);
modelsLoaded++;
setProgress(modelsLoaded * 100 / modelsToLoad);
} else {
System.err.println("failed to return VCML for " + biomodelRep.bmKey);
}
}
}
} catch (Exception e) {
e.printStackTrace(System.out);
}
return vCellModels;
}
};
return task;
}
use of org.sbml.jsbml.SBMLDocument in project vcell by virtualcell.
the class VCellService method getSBML.
private static SBMLDocument getSBML(final SimulationServiceImpl client, final String vcml, final String applicationName) throws ThriftDataAccessException, XMLStreamException, IOException {
final String sbml;
try {
sbml = client.getSBML(vcml, applicationName);
} catch (final TException e) {
throw new IOException(e);
}
final SBMLReader reader = new SBMLReader();
final SBMLDocument document = reader.readSBMLFromString(sbml);
return document;
}
Aggregations