Let's go to use MetExploreViz
We are going to use the MetExploreViz API Reference to integrate the library in a website.
First, you have to install MetExploreViz.
So we import MetExploreViz in your header:
<script type="text/javascript" src="js/metExploreViz/metexploreviz.js" charset="utf-8"> </script>
Create a division to integrate the visualisation:
<div class="visu" id="visu" style="width:100%; height:400px; "></div>
And load the library in the webpage:
<script type="text/javascript">
MetExploreViz.initFrame("visu");
</script>
In order for your project to be functional, it is necessary to use a server (local or remote).
When the library is installed we are able to launch drawing with files but we want to launch drawing programmatically. To be sure that MetExploreViz is defined we have to use all functions in this one:
MetExploreViz.onloadMetExploreViz(function(){
// All functions to interact with MetExploreViz
});
In this function you can call the function to launch the drawing:
var myJsonString = '{"nodes":[{"name":"aspartate transaminase","dbIdentifier":"R_ASPTA","ec":"2.6.1.1","id":"2405504","reactionReversibility":true,"biologicalType":"reaction"},{.....],"links":[{"id":"2405504 -- 1109303","source":1,"target":0,"interaction":"in","reversible":true},{....],"mappingdata":[{"name":"Global Mapping","targetLabel":"metaboliteId","mappings":[{"name":"Control Condition","data":[{"node":"1107024"},{"node":"1107031"},{"node":"1107950"}]}]}]}';
metExploreViz.GraphPanel.refreshPanel(myJsonString);
var myJsonString = '{"nodes":[{"name":"aspartate transaminase","dbIdentifier":"R_ASPTA","ec":"2.6.1.1","id":"2405504","reactionReversibility":true,"biologicalType":"reaction"},{.....],"links":[{"id":"2405504 -- 1109303","source":1,"target":0,"interaction":"in","reversible":true},{....],"mappingdata":[{"name":"Global Mapping","targetLabel":"metaboliteId","mappings":[{"name":"Control Condition","data":[{"node":"1107024"},{"node":"1107031"},{"node":"1107950"}]}]}]}';
//Run graph
metExploreViz.GraphPanel.refreshPanel(myJsonString, function(){
metExploreViz.onloadSession(function(){
// Interations with the network
});
});
The function metExploreViz.onloadSession()
allows to launch other functions only when the network is drew.
Once network drawing, it's possible to highlight nodes from data file.
Firtly, we have to load the data file, MetExploreViz allows this with the function metExploreViz.GraphMapping.loadDataTSV(url).
Then use the function metExploreViz.GraphMapping.mapNodes(fileName)
to map data on nodes.
MetExploreViz.onloadMetExploreViz(function(){
metExploreViz.onloadSession(function(){
//Load mapping
metExploreViz.GraphMapping.loadDataTSV("../mappTabMeta.tsv");
//Highlight
metExploreViz.GraphMapping.mapNodes("mappTabMeta.tsv");
});
});
To map data on nodes from data file, we have to load the data file with the same function that for highlight nodes.
Then use the function metExploreViz.GraphMapping.graphMappingDiscreteData(fileName, aCondition)
to highlight nodes.
MetExploreViz.onloadMetExploreViz(function(){
metExploreViz.onloadSession(function(){
metExploreViz.GraphMapping.loadDataTSV("../../files/mappTabMeta.tsv");
metExploreViz.GraphMapping.graphMappingDiscreteData("mappTabMeta.tsv", "3j");
});
});
MetExploreViz allows you to duplicate side compounds programmatically.
After network drawing you have to load side componds with the function metExploreViz.GraphNode.loadSideCompounds(arrayOfMetabolicDataBaseIdentifiers)
Then use the function metExploreViz.GraphNetwork.duplicateSideCompounds()
to duplicate the side compounds.
MetExploreViz.onloadMetExploreViz(function(){
metExploreViz.onloadSession(function(){
var sideCompounds = ["M_adp_m", "M_adp_c", "M_amp_c", "M_amp_m", "M_amp_r", "M_amp_x", "M_atp_x", "M_atp_r", "M_atp_m", "M_atp_c", "M_hco3_c", "M_hco3_m", "M_co2_c", "M_co2_x", "M_co2_m", "M_ppi_c", "M_ppi_x", "M_ppi_r", "M_ppi_m", "M_fad_m", "M_fadh2_m", "M_gtp_c", "M_h2o2_x", "M_pi_m", "M_pi_c", "M_nad_x", "M_nad_c", "M_nad_m", "M_nadh_x", "M_nadh_m", "M_nadh_c", "M_nadp_m", "M_nadp_r", "M_nadp_x", "M_nadph_x", "M_nadph_r", "M_nadph_m", "M_o2_x", "M_o2_r", "M_o2_m", "M_h_r", "M_h_x", "M_h_l", "M_h_m", "M_h_c", "M_h_e", "M_so4_l", "M_h2o_x", "M_h2o_l", "M_h2o_m", "M_h2o_r", "M_h2o_e", "M_h2o_c"];
metExploreViz.GraphNode.loadSideCompounds(sideCompounds);
metExploreViz.GraphNetwork.duplicateSideCompounds();
});
});
To launch sequentially and programmatically all functions. These allow to call callback function.
var myJsonString = '{"nodes":[{"name":"aspartate transaminase","dbIdentifier":"R_ASPTA","ec":"2.6.1.1","id":"2405504","reactionReversibility":true,"biologicalType":"reaction"},{.....],"links":[{"id":"2405504 -- 1109303","source":1,"target":0,"interaction":"in","reversible":true},{....],"mappingdata":[{"name":"Global Mapping","targetLabel":"metaboliteId","mappings":[{"name":"Control Condition","data":[{"node":"1107024"},{"node":"1107031"},{"node":"1107950"}]}]}]}';
MetExploreViz.onloadMetExploreViz(function(){ //Callback when library is loaded
metExploreViz.GraphPanel.refreshPanel(myJsonString,
function(){ //Callback when network is drew
metExploreViz.onloadSession(function(){
var mapJSON = metExploreViz.GraphUtils.parseWebServiceMapping(myJsonString);
//Load mapping
metExploreViz.GraphMapping.loadDataFromJSON(mapJSON);
//Highlight
metExploreViz.GraphMapping.mapNodes("Global Mapping"
,
function(){ //Callback when node are mapped
var sideCompounds = ["M_adp_m", "M_adp_c", "M_amp_c", "M_amp_m", "M_amp_r", "M_amp_x", "M_atp_x", "M_atp_r", "M_atp_m", "M_atp_c", "M_hco3_c", "M_hco3_m", "M_co2_c", "M_co2_x", "M_co2_m", "M_ppi_c", "M_ppi_x", "M_ppi_r", "M_ppi_m", "M_fad_m", "M_fadh2_m", "M_gtp_c", "M_h2o2_x", "M_pi_m", "M_pi_c", "M_nad_x", "M_nad_c", "M_nad_m", "M_nadh_x", "M_nadh_m", "M_nadh_c", "M_nadp_m", "M_nadp_r", "M_nadp_x", "M_nadph_x", "M_nadph_r", "M_nadph_m", "M_o2_x", "M_o2_r", "M_o2_m", "M_h_r", "M_h_x", "M_h_l", "M_h_m", "M_h_c", "M_h_e", "M_so4_l", "M_h2o_x", "M_h2o_l", "M_h2o_m", "M_h2o_r", "M_h2o_e", "M_h2o_c"];
metExploreViz.GraphNode.loadSideCompounds(sideCompounds);
metExploreViz.GraphNetwork.duplicateSideCompounds();
}
);
});
}
);
});
MetExplore team also develops webservice return file usable in MetExploreViz.
Several returns are allowed:
http://metexplore.toulouse.inra.fr:8080/metExploreWebService/graph/1363
http://metexplore.toulouse.inra.fr:8080/metExploreWebService/mapping/launchtokenmapping/inchi/1363
http://metexplore.toulouse.inra.fr:8080/metExploreWebService/mapping/launchtokenmapping/inchi/1363/filteredbypathways