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

export of species type added

parent 388ff9b0
No related branches found
No related tags found
1 merge request!186Resolve "upload of sbml"
package lcsb.mapviewer.converter.model.sbml.species;
import java.util.HashSet;
import java.util.Set;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
......@@ -18,6 +18,7 @@ import lcsb.mapviewer.model.map.species.ReceptorProtein;
import lcsb.mapviewer.model.map.species.Rna;
import lcsb.mapviewer.model.map.species.SimpleMolecule;
import lcsb.mapviewer.model.map.species.Species;
import lcsb.mapviewer.model.map.species.TruncatedProtein;
import lcsb.mapviewer.model.map.species.Unknown;
public enum SBOTermSpeciesType {
......@@ -27,6 +28,7 @@ public enum SBOTermSpeciesType {
DRUG(Drug.class, new String[] { "SBO:0000298" }), //
GENE(Gene.class, new String[] { "SBO:0000243" }), //
GENERIC_PROTEIN(GenericProtein.class, new String[] { "SBO:0000252" }), //
TRUNCATED_PROTEIN(TruncatedProtein.class, new String[] {}, new String[] { "SBO:0000252" }), //
ION(Ion.class, new String[] { "SBO:0000327" }), //
ION_CHANNEL(IonChannelProtein.class, new String[] { "SBO:0000284" }), //
PHENOTYPE(Phenotype.class, new String[] { "SBO:0000358" }), //
......@@ -37,7 +39,8 @@ public enum SBOTermSpeciesType {
;
private static Logger logger = Logger.getLogger(SBOTermSpeciesType.class);
private Set<String> sboTerms = new HashSet<>();
private List<String> sboTerms = new ArrayList<>();
private List<String> exportSboTerms = new ArrayList<>();
Class<? extends Species> clazz;
private SBOTermSpeciesType(Class<? extends Species> clazz, String[] inputSboTerms) {
......@@ -47,6 +50,16 @@ public enum SBOTermSpeciesType {
}
}
private SBOTermSpeciesType(Class<? extends Species> clazz, String[] inputSboTerms, String[] outputSboTerms) {
this.clazz = clazz;
for (String string : inputSboTerms) {
sboTerms.add(string);
}
for (String string : outputSboTerms) {
exportSboTerms.add(string);
}
}
public static Class<? extends Species> getTypeSBOTerm(String sboTerm) {
if (sboTerm == null || sboTerm.isEmpty()) {
return SimpleMolecule.class;
......@@ -65,4 +78,25 @@ public enum SBOTermSpeciesType {
}
return result;
}
public static String getTermByType(Class<? extends Species> clazz) {
for (SBOTermSpeciesType term : values()) {
if (clazz.equals(term.clazz)) {
return term.getSBO();
}
}
logger.warn("Cannot find SBO term for class: " + clazz);
return null;
}
private String getSBO() {
if (sboTerms.size() != 0) {
return sboTerms.get(0);
}
if (exportSboTerms.size() != 0) {
return exportSboTerms.get(0);
}
logger.warn("Cannot find SBO term for class: " + clazz);
return null;
}
}
......@@ -24,6 +24,7 @@ public class SbmlSpeciesExporter extends SbmlElementExporter<Species, org.sbml.j
@Override
public org.sbml.jsbml.Species createSbmlElement(Species element) throws InconsistentModelException {
org.sbml.jsbml.Species result = getSbmlModel().createSpecies("species_" + (getNextId()));
result.setSBOTerm(SBOTermSpeciesType.getTermByType(element.getClass()));
if (element.getCompartment() != null) {
result.setCompartment(compartmentExporter.getSbmlElement(element.getCompartment(), null));
}
......
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