<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<graphic-notation appVersion="0.8.0" version="0.8.0">
<properties>
<property name="compartmentType" short-description="compartmentType" type="String" value=""/>
<property name="label" short-description="label" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
</properties>
<nodes>
<node icon="icon0" kernelType="biouml.standard.type.Protein" type="Protein">
<propertyRef name="label" value=""/>
<propertyRef name="modification" value=""/>
<propertyRef name="proteinType" value=""/>
</node>
<node icon="icon1" isCompartment="true" type="Compartment">
<propertyRef name="compartmentType" value=""/>
</node>
<node icon="icon2" type="Unknown"/>
</nodes>
<edges>
<edge icon="icon3" type="simpleEdge"/>
</edges>
<reactions>
<reaction icon="icon4" type="Reaction"/>
</reactions>
<viewOptions/>
<viewBuilder prototype="biouml.model.DefaultDiagramViewBuilder">
<nodeView type="Unknown"><![CDATA[function f(container, node, options, g)
{
    var title = new TextView("?",options.getDiagramTitleFont(), g);
    container.add(title, CompositeView.X_CC | CompositeView.Y_CC);
    return false;
}]]></nodeView>
<nodeView type="simpleEdge"><![CDATA[function f(container, edge, options, g)
{
    var pen, brush;
    brush = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    var arrow = new ArrowView(pen, brush, JSUtility.getPath(edge), null, ArrowView.createTriangleTip(pen, brush, 15, 5));
    container.add(arrow);
    return false;
}]]></nodeView>
<nodeView type="Reaction"><![CDATA[function f(container, de, options, g, isNode, role)
{
    var d, pen, brush;
    d = new Dimension(2,1);
    brush = new Brush(new Color(0.0, 0.0, 0.0));
    pen = options.getDefaultPen();
    if(isNode)
    {
        var box1 = new BoxView(pen, brush, 0, -5, d.width, d.height);
        container.add(box1);
        var box2 = new BoxView(pen, brush, 0, 5, d.width, d.height);
        container.add(box2);
    }
    else
    {
        var path = JSUtility.getPath(de);
        if(role == 'product')
        {
            var arrow1 = new ArrowView(pen, brush, path.xpoints[0], path.ypoints[0]-4, path.xpoints[1], path.ypoints[1]-4, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            container.add(arrow1);
            var arrow2 = new ArrowView(pen, brush, path.xpoints[0], path.ypoints[0]+6, path.xpoints[1], path.ypoints[1]+6, null, null);
            container.add(arrow2);
        }
        else if(role == 'reactant')
        {
            var arrow1 = new ArrowView(pen, brush, path.xpoints[0], path.ypoints[0]+6, path.xpoints[1], path.ypoints[1]+6, null, ArrowView.createTriangleTip(pen, brush, 15, 5));
            container.add(arrow1);
            var arrow2 = new ArrowView(pen, brush, path.xpoints[0], path.ypoints[0]-4, path.xpoints[1], path.ypoints[1]-4, null, null);
            container.add(arrow2);
        }
        else
        {
            var arrow = new ArrowView(pen, brush, path, ArrowView.createTriangleTip(pen, brush, 15, 5), null);
            container.add(arrow);
        }
    }
    return false;
}]]></nodeView>
<nodeView type="Compartment"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = node.getValue("shapeSize", null);
    if(d.width == 0 && d.height == 0)
    {
        d.width = 150;
        d.height = 100;
    }
    brush = new Brush(new Color(1.0, 1.0, 0.7));
    pen = options.getDefaultPen();
    
    var type = node.getValue("compartmentType", "E1");
    if(type == "E1")
    {
        var x = new Array (d.width/2,d.width,0);
        var y = new Array (0,d.height,d.height);
        var box = new PolygonView(pen, brush, x, y);
    }
    else if(type == "E2")
    {
        var x = new Array (d.height/3,0,d.width/2,d.width,d.width-d.height/3);
        var y = new Array (d.height,d.height*2/5,0,d.height*2/5,d.height);
        var box = new PolygonView(pen, brush, x, y);
    }
    else if(type == "E3")
    {
        var x = new Array (d.height/3,0,d.height/3,d.width-d.height/3,d.width,d.width-d.height/3);
        var y = new Array (0,d.height/2,d.height,d.height,d.height/2,0);
        var box = new PolygonView(pen, brush, x, y);
    }
    else if(type == "DUB")
    {
        var rect = new RoundRectangle2D.Float(0, 0, d.width, d.height, 20, 20);
        var box = new BoxView(pen, brush, rect);
    }
    else if(type == "UBP")
    {
        var x = new Array (d.height/3,0,d.width,d.width-d.height/3);
        var y = new Array (d.height,0, 0, d.height);
        var box = new PolygonView(pen, brush, x, y);
    }
    container.add(box);
    var title = new TextView(node.getValue('title', ''), options.getNodeTitleFont(), g);
    container.add(title, CompositeView.X_CC | CompositeView.Y_BT, new Point(0, 0));
    
    return false;
}]]></nodeView>
<nodeView type="Protein"><![CDATA[function f(container, node, options, g)
{
    var d, pen, brush;
    d = new Dimension(30,30);
    var proteinType = node.getValue('proteinType', null);
    
    if(proteinType == "catalytic")
    {
        brush = new Brush(new Color(0.9, 0.6, 0.2));
    }
    else if(proteinType == "adaptor")
    {
        brush = new Brush(new Color(0.5, 0.7, 1.0));
    }
    else if(proteinType == "partner")
    {
        brush = new Brush(new Color(0.7, 0.7, 0.7));
    }
    else if(proteinType == "target recognizing")
    {
        brush = new Brush(new Color(0.0, 1.0, 0.0));
    }
    else if(proteinType == "simple")
    {
        brush = new Brush(new Color(0.9, 0.5, 0.9));
    }
    else
    {
        brush = new Brush(new Color(1.0, 0.7, 0.6));
    }
    
    if(proteinType == "constant module")
    {
        brush = new Brush(new Color(1.0, 1.0, 1.0));
        var x = new Array (0,d.height/3,d.width*1.3,d.width*1.3,d.height/3);
        var y = new Array (d.height/2,0, 0, d.height, d.height);
        var box = new PolygonView(null, brush, x, y);
        container.add(box);
        brush = new Brush(new Color(0.8, 0.2, 0.2));
        var x = new Array (5,d.height/3+3,d.width*1.3-3,d.width*1.3-3,d.height/3+3);
        var y = new Array (d.height/2,3, 3, d.height-3, d.height-3);
        var box = new PolygonView(null, brush, x, y);
        container.add(box);
    }
    else
    {
        pen = options.getDefaultPen();
        var ellipse = new EllipseView(pen, brush, 0, 0, d.width, d.height);
        container.add(ellipse);
    }
    
    var modification = node.getValue('modification', null);
    if(modification == "ubiquitylation" || modification == "phosphorylation")
    {
        var mod = new EllipseView(pen,  new Brush(new Color(1.0, 1.0, 1.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(-3, -3));
        var modText;
        if(modification == "ubiquitylation")
        {
            modText = new TextView("U", options.getNodeTitleFont(), g);
        }
        else
        {
            modText = new TextView("P", options.getNodeTitleFont(), g);
        }
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(3, 0));
    }
    else if(modification == "mutation")
    {
        var mod = new EllipseView(pen,  new Brush(new Color(1.0, 1.0, 1.0)), 0, 0, 20, 20);
        container.add(mod, CompositeView.X_CC | CompositeView.Y_CC, new Point(0, 0));
    }
    else if(modification == "unfolded")
    {
        var x = new Array (22,1,5);
        var y = new Array (25,29,8);
        var t = new Array (0,1,0);
        var mod1 = new FigureView(pen,  new Brush(new Color(1.0, 1.0, 1.0)), x, y, t);
        container.add(mod1);
        x = new Array (25,29,8);
        y = new Array (22,1,5);
        t = new Array (0,1,0);
        var mod2 = new FigureView(pen,  new Brush(new Color(1.0, 1.0, 1.0)), x, y, t);
        container.add(mod2);
    }
    else if(modification == "mono" || modification == "auto")
    {
        var mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(-3, -3));
        var modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(3, 0));
    }
    else if(modification == "pluri")
    {
        var mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(-3, -3));
        var modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(3, 0));
        var mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_BB, new Point(0, -3));
        var modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_BB, new Point(3, 0));
    }
    else if(modification == "multi" || modification == "K11 multi" || modification == "K48 multi" || modification == "K63 multi" || modification == "K29 multi" || modification == "elongation")
    {
        var mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(-3, -3));
        var modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(3, 0));
        mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(-15, -3));
        modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(3, 0));
        mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(10, -11));
        modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(12, 1));
        mod = new EllipseView(pen,  new Brush(new Color(1.0, 0.0, 0.0)), 0, 0, 15, 15);
        container.add(mod, CompositeView.X_RR | CompositeView.Y_TT, new Point(-5, -3));
        modText = new TextView("U", options.getNodeTitleFont(), g);
        container.add(modText, CompositeView.X_RR | CompositeView.Y_TT, new Point(3, 0));
        if(modification == "K11 multi")
        {
            modText = new TextView("K11", options.getNodeTitleFont(), g);
            container.add(modText, CompositeView.X_RR | CompositeView.Y_BB, new Point(-3, 0));
        }
        else if(modification == "K29 multi")
        {
            modText = new TextView("K29", options.getNodeTitleFont(), g);
            container.add(modText, CompositeView.X_RR | CompositeView.Y_BB, new Point(-3, 0));
        }
        else if(modification == "K48 multi")
        {
            modText = new TextView("K48", options.getNodeTitleFont(), g);
            container.add(modText, CompositeView.X_RR | CompositeView.Y_BB, new Point(-3, 0));
        }
        else if(modification == "K63 multi")
        {
            modText = new TextView("K63", options.getNodeTitleFont(), g);
            container.add(modText, CompositeView.X_RR | CompositeView.Y_BB, new Point(-3, 0));
        }
        else if(modification == "elongation")
        {
            modText = new TextView("elon", options.getNodeTitleFont(), g);
            container.add(modText, CompositeView.X_RR | CompositeView.Y_BB, new Point(-3, 0));
        }
    }
    
    var titleString = node.getValue('label', null);
    if(titleString != null)
    {
        var title = new TextView(titleString, options.getNodeTitleFont(), g);
        container.add(title, CompositeView.X_CC | CompositeView.Y_BT, new Point(0, 0));
    }
    return false;
}]]></nodeView>
</viewBuilder>
<icons/>
<semanticController prototype="biouml.model.DefaultSemanticController"/>
<examples>
<example name="test1">
<diagram diagramType="biouml.model.xml.XmlDiagramType" notation="">
<diagramInfo/>
<layouterInfo>
<o n="layouterInfo" t="ru.biosoft.graph.ForceDirectedLayouter">
<v>
<wi n="initialPlacement" v="1"/>
<wi n="edgeLength" v="150"/>
<wf n="repulsion" v="1.0"/>
<wi n="repulsionDistance" v="10"/>
<wf n="gravity" v="0.06"/>
<wi n="orientation" v="0"/>
<wi n="distanceMethod" v="0"/>
<wf n="attraction" v="1.0"/>
<wf n="magneticIntencity" v="0.0"/>
<wi n="iterationNumber" v="100"/>
<wf n="minTemperature" v="0.0"/>
<wf n="maxTemperature" v="0.0"/>
<o n="dpl" t="ru.biosoft.graph.DiagonalPathLayouter">
<v>
<wi n="lineDistance" v="10"/>
<o n="selfLoopLayouter" t="ru.biosoft.graph.SelfLoopLayouter">
<v>
<wi n="loopLength" v="30"/>
</v>
</o>
</v>
</o>
<wb n="horisontalMovementAllowed" v="true"/>
<wb n="verticalMovementAllowed" v="true"/>
<o n="pathWeighter" t="ru.biosoft.graph.PathWeighter">
<v>
<wi n="bendPenalty" v="500"/>
<wi n="confluencePenalty" v="5"/>
<wi n="lengthPenalty" v="1"/>
</v>
</o>
<o n="sl" t="ru.biosoft.graph.SubgraphLayouter">
<v>
<wi n="layerDeltaX" v="350"/>
<wi n="layerDeltaY" v="350"/>
</v>
</o>
</v>
</o>
</layouterInfo>
<compartmentInfo color="255,255,255" height="150" kernel="stub/test1" kernel_type="info-diagram" shape="0" width="150" x="0" y="0"/>
<nodes>
<node height="50" kernel="stub/Reaction_0" kernel_type="Reaction" width="50" x="600" y="165">
<property elementType="String" name="nodeRoles" short-description="nodeRoles" type="array">
<item>reactant</item>
<item>product</item>
<item>modifier</item>
<item>modifier</item>
</property>
<property elementType="String" name="nodes" short-description="nodes" type="array">
<item>p2</item>
<item>p3</item>
<item>comp3</item>
<item>comp4</item>
</property>
</node>
<node kernel="stub/bnfdg" kernel_type="Protein" title="bnfdg" x="233" y="410">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="elongation"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/bythbyg" kernel_type="Protein" title="bythbyg" width="50" x="155" y="355">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="auto"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<compartment>
<compartmentInfo color="255,255,255" height="64" kernel="stub/comp1" kernel_type="Compartment" shape="0" width="113" x="36" y="28"/>
<nodes>
<node height="50" kernel="stub/node1" kernel_type="Protein" width="50" x="74" y="49">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
</nodes>
<edges/>
<property name="compartmentType" short-description="compartmentType" type="String" value="E1"/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="70" kernel="stub/comp2" kernel_type="Compartment" shape="0" width="109" x="319" y="24"/>
<nodes/>
<edges/>
<property name="compartmentType" short-description="compartmentType" type="String" value="E2"/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="64" kernel="stub/comp3" kernel_type="Compartment" shape="0" width="72" x="558" y="26"/>
<nodes/>
<edges/>
<property name="compartmentType" short-description="compartmentType" type="String" value="E3"/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="81" kernel="stub/comp4" kernel_type="Compartment" shape="0" width="102" x="550" y="275"/>
<nodes/>
<edges/>
<property name="compartmentType" short-description="compartmentType" type="String" value="DUB"/>
</compartment>
<compartment>
<compartmentInfo color="255,255,255" height="0" kernel="stub/comp5" kernel_type="Compartment" shape="0" width="0" x="843" y="111"/>
<nodes/>
<edges/>
<property name="compartmentType" short-description="compartmentType" type="String" value="UBP"/>
</compartment>
<node height="50" kernel="stub/dfcdscf" kernel_type="Protein" width="50" x="256" y="321">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="K48 multi"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/fdvdfsvdfsv" kernel_type="Protein" title="fdvdfsvdfsv" width="50" x="64" y="354">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="K29 multi"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node kernel="stub/hnjgfhjd" kernel_type="Protein" title="hnjgfhjd" x="373" y="429">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="pluri"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/modtest" kernel_type="Protein" width="50" x="90" y="271">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="ubiquitylation"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/moduletest" kernel_type="Protein" width="50" x="809" y="309">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value="constant module"/>
</node>
<node height="50" kernel="stub/p2" kernel_type="Protein" width="50" x="464" y="158">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/p3" kernel_type="Protein" width="50" x="718" y="153">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/qqqe1" kernel_type="Protein" width="50" x="281" y="248">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="multi"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/qqqw" kernel_type="Protein" width="50" x="303" y="156">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value="target recognizing"/>
</node>
<node height="50" kernel="stub/qqqw2" kernel_type="Protein" width="50" x="348" y="153">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value="simple"/>
</node>
<node height="50" kernel="stub/qqqw3" kernel_type="Protein" width="50" x="140" y="272">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="phosphorylation"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/qqqw4" kernel_type="Protein" width="50" x="191" y="270">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="mutation"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/qqqw6" kernel_type="Protein" width="50" x="238" y="262">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="mono"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/qww5" kernel_type="Protein" width="50" x="48" y="272">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="unfolded"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/test111" kernel_type="Protein" width="50" x="172" y="160">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value="catalytic"/>
</node>
<node height="50" kernel="stub/test112" kernel_type="Protein" width="50" x="214" y="157">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value="adaptor"/>
</node>
<node height="50" kernel="stub/test113" kernel_type="Protein" width="50" x="259" y="156">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value=""/>
<property name="proteinType" short-description="proteinType" type="String" value="partner"/>
</node>
<node height="50" kernel="stub/ttt" kernel_type="Unknown" width="50" x="91" y="145"/>
<node height="50" kernel="stub/vfvdfvdf" kernel_type="Protein" width="50" x="343" y="318">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="K63 multi"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
<node height="50" kernel="stub/wedqwdqw" kernel_type="Protein" width="50" x="334" y="246">
<property name="label" short-description="label" type="String" value=""/>
<property name="modification" short-description="modification" type="String" value="K11 multi"/>
<property name="proteinType" short-description="proteinType" type="String" value=""/>
</node>
</nodes>
<edges>
<edge in="comp1" kernel="stub/simpleEdge_0: $comp1 to $comp2" kernel_type="simpleEdge" out="comp2">
<path>
<segment segmentType="moveTo" x0="149" y0="67"/>
<segment segmentType="lineTo" x0="319" y0="66"/>
</path>
</edge>
<edge in="comp2" kernel="stub/simpleEdge_0: $comp2 to $comp3" kernel_type="simpleEdge" out="comp3">
<path>
<segment segmentType="moveTo" x0="428" y0="66"/>
<segment segmentType="lineTo" x0="558" y0="65"/>
</path>
</edge>
<edge in="p3" kernel="stub/simpleEdge_0: $p3 to $comp5" kernel_type="simpleEdge" out="comp5">
<path>
<segment segmentType="moveTo" x0="748" y0="168"/>
<segment segmentType="lineTo" x0="843" y0="168"/>
</path>
</edge>
</edges>
<filters>
<a n="filters" t="[Lbiouml.model.DiagramFilter;">
<v/>
</a>
</filters>
</diagram>
</example>
</examples>
</graphic-notation>
