Tuesday, May 31, 2016

Week 6

Good news, over the last weekend I got some of the primary parts, mainly all the changes were done in the SetGetFunctions.py and it already generates code. Here are some snippets.

Here are the same functions from QualitativeSpecies.java: official JSBML example  and Deviser generated code.

But there were way more changes and other changes have to be done as well.

  1. Refactoring of the variables and class names has been performed.
  2. In BaseJavaFile.py: It was modified, but the main changes were done to the expand_attributes method, also a new dictionary value was added the "JClassType" for attributes. Since Java has both the primitive and the Class. Example int and Integer.
  3. Major changes in the SetGetFunctions.py, that included modifying write_set,write_get, write_is_set, write_unset and their submodules.
  4. All the changes were pushed to the fork.

Monday, May 23, 2016

Week 5

This week involved understanding the flow of the Deviser package, which included setting up many breakpoints for debugging in PyCharm.

Modules from code_files folder were copied and renamed to java_code_files. The idea is to reuse as much code as possible, also refactoring was performed using PyCharm.

JSBML repository was cloned from GitHub, as well as the fork  was updated to match with the master branch.

Next step will be to modify the SetGetFunctions, which is responsible for the attributes(the package based on the attributes generates the constructors as well as functions)as well as BaseJavaFile.

Monday, May 16, 2016

Week 4

This week was an interesting one.

It involved reading and comparing between the Deviser generated packages with the JSBML examples as well as delving in the references of C++, Java, JSBML.The work was done on the 5 packages(fbc, dyn, distrib,spatial,qual).
The diagrams for the JSBML examples were obtained through ObjectAid in Eclipse.

High resolution PDF links are posted.
Here's the meaning behind the coloured circles:

Green - similar in both LibSBML and JSBML
Blue - similar, but in a different location
Orange - similar, but with some differences
Red - not available in LibSBML

FBC package

dyn package




The major differences are observed in the qual package.

After that to have a better understanding of Deviser, which is written in Python, having a  class diagram would be helpful.In the end I installed pylint, which includes pyreverse and here's a PDF diagram,but need to have thorough look at the options.
Deviser classes

On a final note, the fork of the Deviser generates  the JSBML package folder structure as described in the JSBML Manual.

Monday, May 9, 2016

Week 3

Hi everyone!

There were couple of problems, that had to be solved.
Debugging  with Spyder was not as effective, nor comfortable for big project like this, so I set up PyCharm Community Edition, which has very robust debugging tools.
Creating UML diagrams for the SBML and JSBML extensions by hand was not effective and because of that I decided to find programs for the automatic generation of class diagrams and looked through programs such as Umbrello, ArgoUml, SmartUML and others, but in the end I installed ObjectAid for Eclipse, and Oovaide(https://github.com/animatedb/oovaide)
Here's the summary what was done during this weekend.

  1. Migrated from Spyder to PyCharm, Spyders' debugging tools are not as powerful as PyCharm.
  2. Eclipse was set up and all JSBML tests were passed.(Fig.1) 
  3. ObjectAid for Eclipse was set up for the automatic creation of  java class diagrams to aid analysis and comparison between SBML and JSBML extensions. (Fig.2)
  4. Oovaide was set up for the automatic creation of  c++ class diagrams, but it's not as powerful as ObjectAid.
    Fig.1. Passed JSBML tests.

Fig.2 ObjectAid created diagram for FBC extension

Sunday, May 1, 2016

Week 2

Hello all!

GSoC has been going on for a week, and the SBML and JSBML team and I have been getting to know one another through dozens of emails. Since this was my first time working with a highly established project such as Deviser and JSBML, there was a definite learning curve. Dr. Bergmann, Dr. Keating, Dr. Dräger and the rest of the team were incredibly patient with me.

So here's the summary what was done last week:

  1. Forked Deviser
  2. Added placeholder code for the generation of JSBML code.
  3. Created a UML diagramm of the Deviser's SBML code generation to see the interaction between the modules.
So next step will include:

  1. Analysis of the modules to see what can be reused
  2. The generation of the filestructure compatible with the JSBML
  3. Creation of the BaseJavaFile