SBGN example - simple chemical

Top   Previous   Next

A simple chemical is defined by opposition to the macromolecule, as a chemical compound that is not formed by the covalent linking of pseudo-identical residues. Examples of simple chemicals are: an atom, a monoatomic ion, a salt, a radical, a solid metal, a crystal etc.

 

Specification

container:

A simple chemical is represented by a circular container.

label:

The identification of the simple chemical is carried by an unbordered box containing a string of characters. The characters may be distributed on several lines to improve readability, although this is not mandatory. The label box has to be attached to the center of the container box. Note that the label can spill-over from the container box.

auxiliary items:

A simple chemical can carry one or several units of information. A particular unit of information carries the physical type of the simple chemical.

 

name label SBO term

non-macromolecular ion mt:ion SBO:0000327

non-macromolecular radical mt:rad SBO:0000328

       

simple-chemical-sbgn

simple-chemical-biouml

SBGN specification

BioUML implementation

 

Formal definition
 

 

{

   var d, pen, brush;

   d = new Dimension(50,50);

   brush = new Brush(new Color(1.0, 0.9, 1.0));

   pen = options.getDefaultPen();

   var multimer = node.getValue("e;multimer"e;, 0);

   if(multimer>1)

   {

        var ellipse = new EllipseView(pen, brush, 5, 5, d.width, d.height);

        container.add(ellipse);

   }

   var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);

   container.add(ellipse);

   var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g);

   container.add(title, CompositeView.X_CC | CompositeView.Y_CC);

   if(multimer>1)

   {

        var mbox = new BoxView(pen, brush, d.width/2-10, -10, 20, 20);

        container.add(mbox);

        var mcount = new TextView(node.getValue('multimer', '...'), options.getNodeTitleFont(), g);

        var mPosition = new Point(d.width/2-5, 2);

        container.add(mcount, CompositeView.X_LL | CompositeView.Y_TT, mPosition);

   }

   return false;

}]]>