This page will be used for discussion on how to extend BioPAX to allow storage of visual information on top of the biological model. I tried to make a summary of the ideas that have been proposed so far in our email threads and added my own ideas about a possible implementation. If you have comments, please modify the text below directly and add discussion items marked with a timestamp/username (using <nowiki></nowiki>). -[[User:Thomas|thomas]] 16:22, 19 June 2008 (CEST)
BioPAX + Coordinates
Extend the BioPAX OWL model directly with support for visual information on top of the model. One way to do this is to add a set of utility classes that allow you to link visual information to other classes:
- view
- ELEMENT: reference to a viewElement
- viewElement
- X, Y: coordinates of the element in the view
- MODEL: reference to a BioPAX element (e.g. physicalEntityParticipant)
This approach makes it possible to create multiple views for the same BioPAX model. Below is an example of a simple BioPAX model representing the Reactome reaction that represents the release of Cytochrome C from the mitochondria. Note that I left out a lot of code to make it more readable.
<bp:biochemicalReaction rdf:ID="Release_of_Cytochrome_c_from_mitochondria">
<bp:LEFT rdf:resource="#Cytochrome_c__mitochondrial_intermembrane_space_" />
<bp:RIGHT rdf:resource="#Cytochrome_c__cytosol_" />
<bp:NAME rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Release of Cytochrome c from mitochondria</bp:NAME>
</bp:biochemicalReaction>
<bp:sequenceParticipant rdf:ID="Cytochrome_c__mitochondrial_intermembrane_space_">
<bp:PHYSICAL-ENTITY rdf:resource="#UniProt_P99999_Cytochrome_c" />
</bp:sequenceParticipant>
<bp:openControlledVocabulary rdf:ID="mitochondrial_intermembrane_space">
<bp:TERM rdf:datatype="http://www.w3.org/2001/XMLSchema#string">mitochondrial intermembrane space</bp:TERM>
<bp:XREF rdf:resource="#GO_0005758" />
</bp:openControlledVocabulary>
<bp:sequenceParticipant rdf:ID="Cytochrome_c__cytosol_">
<bp:PHYSICAL-ENTITY rdf:resource="#UniProt_P99999_Cytochrome_c" />
</bp:sequenceParticipant>
<bp:openControlledVocabulary rdf:ID="cytosol">
<bp:TERM rdf:datatype="http://www.w3.org/2001/XMLSchema#string">cytosol</bp:TERM>
<bp:XREF rdf:resource="#GO_0005829" />
</bp:openControlledVocabulary>
<bp:protein rdf:ID="UniProt_P99999_Cytochrome_c">
<bp:DATA-SOURCE rdf:resource="#ReactomeDataSource" />
<bp:ORGANISM rdf:resource="#Homo_sapiens" />
<bp:NAME rdf:datatype="http://www.w3.org/2001/XMLSchema#string">UniProt:P99999 Cytochrome c</bp:NAME>
<bp:XREF rdf:resource="#UniProt_P99999" />
</bp:protein>
Using the new classes, a view for this BioPAX model could then be defined by the code below:
<view rdf:ID="v1"> <ELEMENT rdf:resource="#ve_cc_mit"/> <ELEMENT rdf:resource="#ve_cc_cyt"/> <ELEMENT rdf:resource="#ve_trans"/> </view> <viewElement rdf:ID="ve_cc_mit"> <MODEL rdf:resource="#Cytochrome_c__mitochondrial_intermembrane_space_"/> <X>25</X> <Y>25</Y> </viewElement> <viewElement rdf:ID="ve_cc_cyt"> <MODEL rdf:resource="#Cytochrome_c__cytosol_"/> <X>125</X> <Y>125</Y> </viewElement> <viewElement rdf:ID="ve_trans"> <MODEL rdf:resource="#Release_of_Cytochrome_c_from_mitochondria"/> <X>75</X> <Y>75</Y> </viewElement>
This will allow a viewer (e.g. Cytoscape) to layout the nodes according to predefined coordinates:
Discussion
- I added the X and Y coordinates as elements, since that seems to be the default in BioPAX. Maybe it would be more clear if they are attributes (<code><viewElement x="10" y="10/></code>), but I'm not sure if that would give valid OWL. - [[User:Thomas|thomas]] 16:22, 19 June 2008 (CEST)
BioPAX + SVG
Make a connection between BioPAX and SVG (Scalable Vector Graphics). SVG is then be responsible for storing all visual information that will be linked to the BioPAX model. This would make it possible to store exact graphical representations, using shapes, lines and text.
This could be implemented as an extension to the "BioPAX + Coordinates" approach in the previous section. Since we need some code to bind SVG to BioPAX anyway, we could use the visual utility classes (view and viewElement). If we allow these classes to include a snippet of SVG code, they would be able to draw themselves. A view of the BioPAX model from the previous section could then be:
<view rdf:ID="v1_svg"> <ELEMENT rdf:resource="#ve_cc_mit"/> <ELEMENT rdf:resource="#ve_cc_cyt"/> <ELEMENT rdf:resource="#ve_trans"/> <ELEMENT rdf:resource="#ve_mit"/> </view> <viewElement rdf:ID="ve_cc_mit"> <MODEL rdf:resource="#Cytochrome_c__mitochondrial_intermembrane_space_"/> <X>40</X> <Y>40</Y> <svg> <svg:rect x="0" y="0" width="20" height="15"/> <svg:text x="0" y="7" >CytoC</svg:text> </svg> </viewElement> <viewElement rdf:ID="ve_cc_cyt"> <MODEL rdf:resource="#Cytochrome_c__cytosol_"/> <X>120</X> <Y>120</Y> <svg> <svg:rect x="0" y="0" width="20" height="15"/> <svg:text x="0" y="7">CytoC</svg:text> </svg> </viewElement> <viewElement rdf:ID="ve_trans"> <MODEL rdf:resource="#Release_of_Cytochrome_c_from_mitochondria"/> <X>65</X> <Y>55</Y> <svg> <svg:path d="M 0,0 L 60,60" style="marker-end:url(#Arrow1Lend)"/> </svg> </viewElement> <viewElement rdf:ID="ve_mit"> <MODEL rdf:resource="#mitochondrial_intermembrane_space"/> <X>0</X> <Y>0</Y> <svg> <svg:rect x="0" y="0" width=150 height="100" /> <svg:path d="M 0,0 C 20 30 C ..." style="stroke:#ffae7d;"/> <svg:text x="20" y="10">Mitochondrion</svg:text> </svg> </viewElement>
Note that I left out a lot of SVG code (e.g. the style attributes) to make the example readable. When rendered by a viewer, it would look something like this:
This approach would allow any tool to draw a view of a BioPAX model easily, using the available SVG libraries in different programming languages.
Note that in this example, I made the coordinates used in the SVG snipped relative to the location of the viewElement. This would make it easy to include/exclude parts of a view into other views.
Discussion
BioPAX + GPML
Don't extend BioPAX directly, but make a connection between BioPAX and GPML. Similar to SVG, but now using GPML as visual format.
Discussion
Attachments
- Reactome_cyc_transport.png (10.4 KB) - added by martijn 13 months ago.
- 800px-Test-svg.png (39.5 KB) - added by martijn 13 months ago.


