GithubHelp home page GithubHelp logo

sbmlteam / jsbml Goto Github PK

View Code? Open in Web Editor NEW
36.0 26.0 24.0 308.56 MB

JSBML is a community-driven project to create a free, open-source, pure Java™ library for reading, writing, and manipulating SBML files (the Systems Biology Markup Language) and data streams. It is an alternative to the mixed Java/native code-based interface provided in libSBML.

Home Page: https://sbml.org/software/jsbml/

License: GNU Lesser General Public License v2.1

Java 99.42% Shell 0.08% HTML 0.04% CSS 0.21% Python 0.24%
sbml systems-biology java library parser-library modeling api

jsbml's People

Contributors

a1xt06 avatar alexander-doerr avatar anfark avatar bhavyejain avatar christophblessing avatar clemens82 avatar dependabot[bot] avatar devetter avatar draeger avatar enetz avatar haroldgomez avatar jakobmatthes avatar jdrudolph avatar kofiav avatar leabuchweitz avatar leandrohw avatar lisafalk avatar marine3 avatar meikeai avatar mephenor avatar mhucka avatar niko-rodrigue avatar onur101010 avatar pdp10 avatar rolandkeller5 avatar thesentry avatar tmhamm avatar tramyn avatar wrzodek avatar yvazirabad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsbml's Issues

getTypeCode missing

Create a Constants or JSBMLConstant class to store some constant variable like an Enum for the element type code that should return an int.

Reported by: niko-rodrigue

Change the License

We need to decide on the License to use and update all the header files accordingly.

Reported by: niko-rodrigue

KineticLaw remarks

timeUnits and substanceUnits missing (deprecated)

isSetXX missing

Do we need to have two class for Local and global parameter (different default for example I think) ?

Reported by: niko-rodrigue

Sbase interface remarks

This a set of remarks about the Sbase interface may be needing separate tracker item later on (or not) :

appendAnnotation missing

clone missing to force inheriting classes to implement it. cloneObject missing, do we need it ?

deleteXXX missing ?? we do not need it ? a bit similar to the unsetXXX functions that are present in some case.

equals missing ? do we need it on the interface ?

getAncestorOfType missing ? Would be nice to have

getNamespaces missing ? may be in an utility Class somewhere else

getTypeCode missing ==> specific tracker item created for this one.

hasCode missing

toSBML missing -> to take from the ebi library for example.

Reported by: niko-rodrigue

Return type of getParentSBMLObject

To ensure type consistency, each object should override this method and return the expected type of parental SBML object instead of just SBase.

Reported by: draeger

Model remarks

RemoveXX are missing.

all the units definition from SBML level 3 are missing.

model.findSymbol to update to support SpeciesReference (SBML level 3), eventualy reaction (SBML level 2).

Reported by: niko-rodrigue

Apache Digester Reader

Add an apache digester parser. Already implemented in the Ebi library, will wait a bit to see how we are dealing with SBML level 3 extension to add it or not.

Reported by: niko-rodrigue

Improve the documentation

the javadoc, write some web pages for the sourceforge project, tutorials, examples, ...

Reported by: niko-rodrigue

Annotations

It would be better to store the annotations in an Annotation object which contains the list of CVTerms and a String for the other elements which are not RDF annotations. Each element would have an Annotation annotation rather than a String annotation and a list of CVTerms. If the element is a Model, the Annotation element can store the modelHistory. However, all the methods getCVTerm, getModelHistory, etc should be kept to be close to libSBML.

Reported by: marine3

Rule remarks

suport for level 1 rules ??

unset missing

statechanged missing

Reported by: niko-rodrigue

ListOf extending AbstractSBase

Why not implementing Collection of List and extends AbstractSBase ?

This avoid a big repetition on our set of classes even if we are also redoing a part of the List interface.

Reported by: niko-rodrigue

String referencedID (compartmentID for Species)

To manage the elements referenced by other elements during the XML parsing (example of Species which contains a Compartment instance), we should add an instance variable String referencedElementID (for Species a String compartmentID) in the Elements which refer to other elements.
During the parsing, we can set the referenceElementID when we read an attribute of type SIdRef. When all the elements are created and initialized, we can finally set the referencedElement variable (Compartment compartment for Species).

Reported by: marine3

ChangeListener functions

Do we need them ? Is it already used by SBMLsqueezer and how ?
Is it a general or specific purpose ?

Anyway, plenty of stateChanged() call are missing in a majority of the classes.

Reported by: niko-rodrigue

DOM Reader/writer

Might be easier to implement and to support SBML level 3 with extensions. Better handling of namespace for example.

Reported by: niko-rodrigue

Use only class for class variables

Transform every basic types (boolean, int, double, ...) into a class to detect easily if it as been set or not.

Reported by: niko-rodrigue

Add more tests files

Add more tests files, both converting the libsbml java bindings ones and creating new ones.

Reported by: niko-rodrigue

ModelHistory

We nee to replace the private variable modifyed Date with a private collection of Date to support SBML level 3. (We can have several modified date)

Reported by: marine3

method to deal with default values

Follow up on the discussions on libsbml-development to know what to do for default values when saving an SBML level 3 model.

Reported by: niko-rodrigue

implement the functions converting ASTNode to infix formula

libsbml doc :

public static String formulaToString(ASTNode tree)
Converts an ASTNode formula to a text string using a specific syntax for mathematical formulas.

public static ASTNode parseFormula(String formula)
Parses a text-string mathematical formula and returns a representation as an Abstract Syntax Tree.

public static ASTNode readMathMLFromString(String xml)
Reads the MathML from the given XML string, constructs a corresponding abstract syntax tree, and returns a pointer to the root of the tree.

Reported by: niko-rodrigue

SBMLReader SBMLWriter interface

The interface should look like the one from libSBML c++ with only one or two functions.

We should create some package like org.sbml.jsbml.xml.libsbml, org.sbml.jsbml.xml.digester, org.sbml.jsbml.xml.dom that will include the implementation.
Not sure if we should put them all in the same project are create a separate project and jar for each of them.

Reported by: niko-rodrigue

patch to address parsing

Here's a patch that addresses the SBMLReader issue in the previous bug report - it wouldn't let me attach it to that issue. I've not built or tested this, so please treat it as an example of how it could be done.

Reported by: drdozer

implement a libsbml compatibility module

A libsbml compatibility module with interfaces and package 100% similar (or as close as possible) to the libsbml java bindings. Like that people would not have to change their code at all to switch from on framework to the other.

We also then can run the libsbml java bindings test cases without modification which is much more practical.

Reported by: niko-rodrigue

Improve the XML parser

try to improve the current parser or use an other parser to simplify the code (xstream is a good candidate)

it need to :

  • use reflection to see if an isSetXXX methods exist and use it before writing the XXX attributes
  • be able to read / write the ListOfXXX without too much code
  • be able to save / print part of a Model
  • be relatively quick when reading / writing large models (more than 10MB)
  • work well with namespaces
  • make it easy to add support for a level 3 package
  • be able to parse and wrote elements that it doesn't know

Reported by: niko-rodrigue

parse notes, annotation and math elements

implement XMLNode and then parse notes, annotation to XMLNode. Resolve any encodings problem on the way.

mathML should be parse into an ASTNode

Reported by: niko-rodrigue

SBMLDocument

Need to add attributes to support SBML level 3. Check libsbml.

Reported by: niko-rodrigue

read sbml from an arbitrary xml input source

SBMLReader has readSBMLFIle(File) and readSBML(String fileName). Internal to this code, it uses a WstxInputFactory instance. Could we have an additional convenience static method to read directly from a XMLEventReader2, so that we can feed it from e.g. an HTTP stream, or an in-memory string?

Reported by: *anonymous

convertToSI(Unit unit)

The implementation of the meethod public static UnitDefinition convertToSI(Unit unit) is still missing.

Reported by: draeger

Compartment remarks

unset functions missing

outside to deprecate and change implementation to support level 3 and level 1,2
compartmentType to deprecate or not following the result of the survey for level 3

Change Symbol to an interface and add the size attribute ?

Reported by: niko-rodrigue

Reaction remarks

unset missing
check stateChanged

isSetXX missing, will be added when we changed the type of boolean to Boolean.

Reported by: niko-rodrigue

readAttributes method

As libSBML, the different SBML elements should have a readAttribute method.

Reported by: marine3

AbstractSbase remarks

public AbstractSBase(SBase sb) additional annotation lost !!

appendNotes : check with libsbml implementation and set javadoc to explain behavior.

implementation of clone ??

equals : to check + do we really want to use the &= operator. Test on annotation ?? Check libsbml implementation

hasValidLevelVersionNamespaceCombination : modify to add level 3 support.

Reported by: niko-rodrigue

Javadoc from libsbml C++

Should we / could we re-use the javadoc generated by libsbml and how.

Check with libsbml team.

Reported by: niko-rodrigue

libSBMLio

When possible, try to support as much as possible of the libsbml APIs. We should aim to support libsbml 4.1 but 4.0.x or 3.x would be nice.

Reported by: niko-rodrigue

Species remarks

Reflect better the UML specifications, adding the appropriate attributes ?

speciesType to deprecate or not following the result of the survey for level 3

deprecate charge

spatialUnits is missing (deprecated but needed anyway)

unset functions missing

stateChanged missing

add ConvertionFactor

Reported by: niko-rodrigue

UnitDefinition isVariantXXX

isVariantXXX function differ from the libsbml 4 interface. Do we need them ? Check Libsbml implementation

Reported by: niko-rodrigue

SBML element constructors

create an empty constructor for each SBML element and set the different variables of an element with its setxxx methods.

Reported by: marine3

implementation of the toSBML() methods

LibSBML API contemplated a toSBML() method to all SBase inheritors that provided an SBML String representation of the element. This is not yet available in jsbml

Reported by: *anonymous

implementation of the getTypeCode() methods

http://sbml.org/Software/libSBML/docs/java-api/org/sbml/libsbml/SBase.html\#getTypeCode\(\)

public int getTypeCode()
Returns the libSBML type code for this object.

This method MAY return the typecode of this SBML object or it MAY return SBML_UNKNOWN. That is, subclasses of SBase are not required to implement this method to return a typecode. This method is meant primarily for the LibSBML C interface where class and subclass information is not readily available.

This function might be useful and we would have to implement it anyway for the libsbml-compat module. Would have to be expendable to work with level 3 packages.

Reported by: niko-rodrigue

SBMLDocument

Need to add attributes to support SBML level 3. Check libsbml.

Reported by: niko-rodrigue

Default values for level 2/3

Should we call the initDefault function in the constructor if SBML level <= 2 ?
Or not set anything and add some constant variable to store the default values, the getter would return either the set value or the default value.
Or not set anything and add some constant variable to store the default values, the getter would return either the set value or null.

Different behavior on different SBML level ?

Check what libsbml is doing.

Reported by: niko-rodrigue

FunctionDefinition remarks

Javadoc to update, important in particular when Exception can be throwned !!

stateChanged missing on some functions.

toSBML to implement.

missing functions : getArgument, getBody, getNumArguments,

Reported by: niko-rodrigue

LibSBML Reader

moved the four java files in the io package to io.libsbml package like this we can have a io.digester and/or io.dom package also in the same level.

Reported by: niko-rodrigue

Constraint

unset missing

setMessageString ? to be consistent with other functions and allow libsbml compatibility ?

Reported by: niko-rodrigue

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.