Wednesday, July 6, 2016

Week 10

Hello all,

This week, I have been working on the actual conversion from SBML Layout to CellDesigner Annotation.  I have started the conversions for species and compartment using the informations from their glyphs. The chart below shows how much I have covered so far for conversion. Blue means it's completed, red means it's not yet completed, green means it's unconvertable.




Another thing I have been doing is that I have been creating a command line interface.

git clone https://github.com/funasoul/celldesigner-parser
mvn install
java -jar celldesigner-parser-0.0.1-SNAPSHOT-jar-with-dependencies.jar  input.xml [output.xml] [CD2Layout / Layout2CD]

First create the runnable jar file with maven. Then run the jar with arguments input file, path to output (optional), and which direction CellDesigner to Layout or Layout to CellDesigner (optional).


Also, I tried to provide a visual aid on the progress I have made, however CellDesigner can't read my converted model yet. Currently something is wrong with the Species Alias and throws an exception. For next week, my first goal is to get some graphical output on the converted model.

Here are the result I get for my current implementation.

Layout model

CellDesigner Annotation Model



One last thing. I have noticed an error when unmarshaling the SBML file.  In the kinetic law, the math equation is converted in the wrong form.

Original Model is written like on the below.
    <mathml:math>
                        <mathml:apply>
                            <mathml:times/>
                            <mathml:ci> k1 </mathml:ci>
                            <mathml:ci> s1 </mathml:ci>
                        </mathml:apply>
                    </mathml:math>

When unmarshaled, the duplicating ci attribute is removed.
   <mathml:math>
                        <mathml:apply>
                            <mathml:ci> k1 </mathml:ci>
                            <mathml:times/>
                        </mathml:apply>
                    </mathml:math>


So whenever I convert the model to SBML Layout to CellDesigner Annotation, it changes the equation.  I presume something might be wrong with the MathML schema (sbml-mathml.xsd). 

Tuesday, June 28, 2016

First week for converting Layout to CellDesigner Annotation

Hello all,

Last week, I  have mentioned that there are still few attributes in the CellDesigner annotation to be converted. Before working the conversion for the other direction, I have implemented the conversions for links and bezier curves.



As for the conversion of SBML Layout to CellDesigner Annotation,  I have been working on the APIs for SBML objects such as Species and for inputs/outputs. The basic algorithm for the conversions with be as follow.

  1. Read model with JSBML
  2. Downgrade 1. to Level 2 Version 4
  3. Unmarshal 2. as string
  4. From 1. convert the Layout attributes to 3.
So far, I have created the basic algorithms above and have created model with empty CellDesigner annotation. Below are the progress I have made so far. For next week, I will be starting on converting each type of glyphs.




Wednesday, June 22, 2016

Half way through

Hello all,

This week is midterm evaluation week. Which means that I am half way through the GSoC program. This week, I have been working on the conversion of complex species and edit points for branched reactions.



Since it's midterm week, I have created a diagram to show how much of the conversion from CellDesigner Annotation to SBML layout has been completed. All items in blue are the ones that have been covered and are able to convert. Items in red are annotations that have not yet been implemented.  From this diagram, you can tell that I still need to work with reactant / product links, residues, beziers, and boolean. 



For my initial plan, I had my midterm goal set as completing the conversion of CellDesigner Annotation to SBML Layout.  The converter still have some missing features, but I have roughly accomplished my goal.  As for my next goal, I will be working on the conversion from SBML Layout to CellDesigner Annotation and will have a converter that converts both ways.




Tuesday, June 14, 2016

Hello everyone,


Since last week,  I have been working with the conversion of reactions.  This week, I have been mainly working on edit points (reaction with bending lines) and modifiers. Here are some diagrams that I have accomplished .




For next week, I will continue working on the conversion of reaction. Heterodimers, dissociation, and truncation reaction with edit points, species complex,  bezier curves, and residue are the things left to be completed. And since it is midterm evaluation next week, I am hoping to complete the CellDesigner annotation conversion to SBML Layout by then.

Wednesday, June 8, 2016

Hi everyone,

Last week,  I have successfully converted the compartment and species from CellDesigner annotation to SBML Layout.  Since then, I have been working on converting the reaction. So far, I have partial completed converting reaction.

For now, I have completed conversions reactions with straight lines and heterodimer association, dissociation. and truncation. Below are some of the models I have successfully converted.

original model  1                                   converted model 1



original model  2                                   converted model 2


heterodimer original                               heterodimer converted


dissociation original                                  dissocation converted



truncation original                                  truncation converted


combined original                                                      combined converted

For next week, I will be working on reactions with bending lines, reactions with modifiers, bezier lines and complexes.  And I am hoping to complete the conversion from CellDesigner annotation to SBML Layout  before the midterm evaluation.

Tuesday, May 31, 2016

CellDesigner → SBML

Hello all,

Last week, I have created APIs from schemas.  Using the APIs, I have tested if I can get the attributes from XML. With the test, I have figured out that I could not obtain the celldesigner:reactionType attributes (already fixed).

For the past week,  I have been implementing the converter that converts CellDesigner annotation to SBML Layout. The brief outline of the converter is as follow.


  1. Read XML using the generated APIs
  2. Read XML using JSBML
  3. Copy datas from 1. to the wrappers which were implemented last week
  4. From 3. copy the necessary datas into 2. 
So far, I have implemented conversion of compartment and speciesAlias. Figures shown below are the original model created with CellDesigner and the output model visualized with SBML Layout Viewer. As you can see, most diagrams are in the same layout. However the text for each diagram still needs some adjustments. 




For next week, I will be implementing the conversion of reactions (the lines show in the diagram). And I am hoping to  start the conversion from SBML layout to CellDesigner.



Tuesday, May 24, 2016

Coding Period begins

Hello everyone,

This week has been the most productive so far and I was able to start coding on schedule.


Last week,  I had some trouble generating APIs from 3 schemas (CellDesigner.xsd, sbml-level2-v4.xsd, and  sbmlCellDesignerExtension_v4_2.xsd) with JAXB. By removing the annotation definition in sbml-level2-v4.xsd and changing the element in CellDesigner.xsd, my mentor and I have succeeded generating the APIs from schemas.  It still needs testing but I was able to obtain the CellDesigner extension from species. Below are all the classes that have been generated.




For the generated APIs, I have been creating some utility classes for easier use. Since CellDesigner annotates model, compartment, species, reaction,  speciesReference, and modifiedSpeciesReference, I have created wrapper classes to easily access the extended attributes for all of them. And also for speciesAlias.

For next week, I will do mainly two things. First is to test the generated APIs for the CellDesigner extended attributes. Second thing is to create classes that clones from unmarshalled data structure to the wrapper classes. Once I have checked that all datas are stored properly, I will start implementing the actual converter.