The R markdown is available from the pulldown menu for Code
at the upper-right, choose “Download Rmd”, or download
the Rmd from GitHub.
WikiPathways is a database of biological pathways maintained by and
for the scientific community. Each pathway model in the database is
annotated with database identifiers, which can be used for computation
and data visualization.
This workflow describes how to work with multiple WikiPathways
pathways in Cytoscape, specifically how to visualize multiple data
points on a set of pathways of interest. This analysis assumes that we
already have a list of pathways of interest. This list could come from
enrichment analysis, but could also be a list of pathways of interest
from prior knowledge.
The data we will be using for this workflow (E-GEOD-68086.csv) is
from a study investigating the RNA-seq signatures of platelets from
patients with various types of cancer, in an effort to develop a
platelet-based diagnostic (Best
et el., 2015). The data was downloaded from Expression
Atlas.
If you are continuing from the previous workflow, make sure the
session is saved and then select File → Close Session to start from
scratch.
Installation
if(!"RCy3" %in% installed.packages()){
install.packages("BiocManager")
BiocManager::install("RCy3")
}
library(RCy3)
Required software
RCy3 works by connecting with Cytoscape. You will need to install and
launch Cytoscape:
For this vignette, you’ll need the following apps:
#available in Cytoscape 3.7.0 and above
installApp('WikiPathways')
Import pathways into Cytoscape.
RCy3::commandsRun('wikipathways import-as-pathway id=WP179')
RCy3::commandsRun('wikipathways import-as-pathway id=WP2446')
RCy3::commandsRun('wikipathways import-as-pathway id=WP4830')
RCy3::commandsRun('wikipathways import-as-pathway id=WP707')
The 4 pathways will be listed as separate network collections in the
Network Panel.
Data Import
df <- read.csv(file="https://cytoscape.github.io/cytoscape-tutorials/protocols/data/E-GEOD-68086.csv", stringsAsFactors = FALSE)
RCy3::getNetworkList()
RCy3::loadTableData(df, data.key.column = "Gene.ID", table.key.column = "Ensembl", network = RCy3::getNetworkList()[1] )
RCy3::loadTableData(df, data.key.column = "Gene.ID", table.key.column = "Ensembl", network = RCy3::getNetworkList()[2] )
RCy3::loadTableData(df, data.key.column = "Gene.ID", table.key.column = "Ensembl", network = RCy3::getNetworkList()[3] )
RCy3::loadTableData(df, data.key.column = "Gene.ID", table.key.column = "Ensembl", network = RCy3::getNetworkList()[4] )
Each network should now have multiple extra columns corresponding to
fold change and p-value for several cancer types.
Data Visualization: Node Fill Color
To visualize the data on the pathways, we are going to use
Cytoscape’s built-in function for Custom Graphics to visualize the fold
change values for three cancer types: breast carcinoma, pancreatic
adenocarcinoma and colorectal carcinoma. For this particular workflow,
the visualized data points should be of the same type, for example fold
changes.
RCy3::setNodeCustomHeatMapChart(c('X.pancreatic.adenocarcinoma..vs..normal...foldChange','X.colorectal.carcinoma..vs..normal...foldChange','X.breast.carcinoma..vs..normal...foldChange'), colors=c('#FF0000','#FFFFFF','#0000FF','#FFFFFF'), style.name="WikiPathways")
The three data points are now visualized as vertical stripes, each
with a gradient from blue-red for fold change. Note that for this
particular graphic (heatmap with horizontal orientation), the data
points are displayed in the opposite order from how they were listed in
the Custom Graphics interface, so in this case from left to right it is
showing pancreatic adenocarcinoma vs normal, colorectal carcinoma vs
normal and breast carcinoma vs normal. # Saving and Exporting Data
Visualization
RCy3::saveSession('wikipathway-data-visualization-advanced')
RCy3::exportImage('wikipathway-data-visualization-advanced', type = "png")
LS0tCnRpdGxlOiAiV2lraVBhdGh3YXlzIERhdGEgVmlzdWFsaXphdGlvbiBBZHZhbmNlZCIKYXV0aG9yOiAiWWloYW5nIFhpbiwgS3Jpc3RpbmEgSGFuc3BlcnMgYW5kIEFsZXggUGljbyIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICBodG1sX25vdGVib29rOgogICAgdG9jX2Zsb2F0OiB5ZXMKICAgIGNvZGVfZm9sZGluZzogbm9uZQotLS0KYGBge3IgZWNobz1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGV2YWw9RkFMU0UKKQpgYGAKKlRoZSBSIG1hcmtkb3duIGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBwdWxsZG93biBtZW51IGZvciogQ29kZSAqYXQgdGhlIHVwcGVyLXJpZ2h0LCBjaG9vc2UgIkRvd25sb2FkIFJtZCIsIG9yIFtkb3dubG9hZCB0aGUgUm1kIGZyb20gR2l0SHViXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY3l0b3NjYXBlL2N5dG9zY2FwZS1hdXRvbWF0aW9uL21hc3Rlci9mb3Itc2NyaXB0ZXJzL1Ivbm90ZWJvb2tzL1dpa2lwYXRod2F5cy1kYXRhLXZpc3VhbGl6dGlvbi1iYXNpYy5SbWQpLioKCjxociAvPgpXaWtpUGF0aHdheXMgaXMgYSBkYXRhYmFzZSBvZiBiaW9sb2dpY2FsIHBhdGh3YXlzIG1haW50YWluZWQgYnkgYW5kIGZvciB0aGUgc2NpZW50aWZpYyBjb21tdW5pdHkuIEVhY2ggcGF0aHdheSBtb2RlbCBpbiB0aGUgZGF0YWJhc2UgaXMgYW5ub3RhdGVkIHdpdGggZGF0YWJhc2UgaWRlbnRpZmllcnMsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBjb21wdXRhdGlvbiBhbmQgZGF0YSB2aXN1YWxpemF0aW9uLgoKVGhpcyB3b3JrZmxvdyBkZXNjcmliZXMgaG93IHRvIHdvcmsgd2l0aCBtdWx0aXBsZSBXaWtpUGF0aHdheXMgcGF0aHdheXMgaW4gQ3l0b3NjYXBlLCBzcGVjaWZpY2FsbHkgaG93IHRvIHZpc3VhbGl6ZSBtdWx0aXBsZSBkYXRhIHBvaW50cyBvbiBhIHNldCBvZiBwYXRod2F5cyBvZiBpbnRlcmVzdC4gVGhpcyBhbmFseXNpcyBhc3N1bWVzIHRoYXQgd2UgYWxyZWFkeSBoYXZlIGEgbGlzdCBvZiBwYXRod2F5cyBvZiBpbnRlcmVzdC4gVGhpcyBsaXN0IGNvdWxkIGNvbWUgZnJvbSBlbnJpY2htZW50IGFuYWx5c2lzLCBidXQgY291bGQgYWxzbyBiZSBhIGxpc3Qgb2YgcGF0aHdheXMgb2YgaW50ZXJlc3QgZnJvbSBwcmlvciBrbm93bGVkZ2UuCgpUaGUgZGF0YSB3ZSB3aWxsIGJlIHVzaW5nIGZvciB0aGlzIHdvcmtmbG93IChFLUdFT0QtNjgwODYuY3N2KSBpcyBmcm9tIGEgc3R1ZHkgaW52ZXN0aWdhdGluZyB0aGUgUk5BLXNlcSBzaWduYXR1cmVzIG9mIHBsYXRlbGV0cyBmcm9tIHBhdGllbnRzIHdpdGggdmFyaW91cyB0eXBlcyBvZiBjYW5jZXIsIGluIGFuIGVmZm9ydCB0byBkZXZlbG9wIGEgcGxhdGVsZXQtYmFzZWQgZGlhZ25vc3RpYyAoW0Jlc3QgZXQgZWwuLCAyMDE1XShodHRwczovL3d3dy5jZWxsLmNvbS9jYW5jZXItY2VsbC9mdWxsdGV4dC9TMTUzNS02MTA4KDE1KTAwMzQ5LTkpKS4gVGhlIGRhdGEgd2FzIGRvd25sb2FkZWQgZnJvbSBbRXhwcmVzc2lvbiBBdGxhc10oaHR0cHM6Ly93d3cuZWJpLmFjLnVrL2d4YS9leHBlcmltZW50cy9FLUdFT0QtNjgwODYvRG93bmxvYWRzKS4KCklmIHlvdSBhcmUgY29udGludWluZyBmcm9tIHRoZSBwcmV2aW91cyB3b3JrZmxvdywgbWFrZSBzdXJlIHRoZSBzZXNzaW9uIGlzIHNhdmVkIGFuZCB0aGVuIHNlbGVjdCBGaWxlIOKGkiBDbG9zZSBTZXNzaW9uIHRvIHN0YXJ0IGZyb20gc2NyYXRjaC4KCiMgSW5zdGFsbGF0aW9uCmBgYHtyfQppZighIlJDeTMiICVpbiUgaW5zdGFsbGVkLnBhY2thZ2VzKCkpewogICAgaW5zdGFsbC5wYWNrYWdlcygiQmlvY01hbmFnZXIiKQogICAgQmlvY01hbmFnZXI6Omluc3RhbGwoIlJDeTMiKQp9CmxpYnJhcnkoUkN5MykKYGBgCgojIFJlcXVpcmVkIHNvZnR3YXJlClJDeTMgd29ya3MgYnkgY29ubmVjdGluZyB3aXRoIEN5dG9zY2FwZS4gWW91IHdpbGwgbmVlZCB0byBpbnN0YWxsIGFuZCBsYXVuY2ggQ3l0b3NjYXBlOgoKKiBEb3dubG9hZCB0aGUgbGF0ZXN0IEN5dG9zY2FwZSBmcm9tIGh0dHA6Ly93d3cuY3l0b3NjYXBlLm9yZy9kb3dubG9hZC5waHAKKiBDb21wbGV0ZSBpbnN0YWxsYXRpb24gd2l6YXJkCiogTGF1bmNoIEN5dG9zY2FwZQoKCmBgYHtyfQpjeXRvc2NhcGVQaW5nKCkKYGBgCgpGb3IgdGhpcyB2aWduZXR0ZSwgeW914oCZbGwgbmVlZCB0aGUgZm9sbG93aW5nIGFwcHM6IAoKKiBUaGUgW3dpa2lQYXRod2F5c10oaHR0cHM6Ly9hcHBzLmN5dG9zY2FwZS5vcmcvYXBwcy93aWtpcGF0aHdheXMpIGFwcAoKYGBge3J9CiNhdmFpbGFibGUgaW4gQ3l0b3NjYXBlIDMuNy4wIGFuZCBhYm92ZQppbnN0YWxsQXBwKCdXaWtpUGF0aHdheXMnKQpgYGAKCiMgSW1wb3J0IHBhdGh3YXlzIGludG8gQ3l0b3NjYXBlLgoKCmBgYHtyfQpSQ3kzOjpjb21tYW5kc1J1bignd2lraXBhdGh3YXlzIGltcG9ydC1hcy1wYXRod2F5IGlkPVdQMTc5JykKYGBgCgpgYGB7cn0KUkN5Mzo6Y29tbWFuZHNSdW4oJ3dpa2lwYXRod2F5cyBpbXBvcnQtYXMtcGF0aHdheSBpZD1XUDI0NDYnKQpgYGAKCmBgYHtyfQpSQ3kzOjpjb21tYW5kc1J1bignd2lraXBhdGh3YXlzIGltcG9ydC1hcy1wYXRod2F5IGlkPVdQNDgzMCcpCmBgYAoKYGBge3J9ClJDeTM6OmNvbW1hbmRzUnVuKCd3aWtpcGF0aHdheXMgaW1wb3J0LWFzLXBhdGh3YXkgaWQ9V1A3MDcnKQpgYGAKVGhlIDQgcGF0aHdheXMgd2lsbCBiZSBsaXN0ZWQgYXMgc2VwYXJhdGUgbmV0d29yayBjb2xsZWN0aW9ucyBpbiB0aGUgTmV0d29yayBQYW5lbC4KCgojIERhdGEgSW1wb3J0CgpgYGB7cn0KZGYgPC0gcmVhZC5jc3YoZmlsZT0iaHR0cHM6Ly9jeXRvc2NhcGUuZ2l0aHViLmlvL2N5dG9zY2FwZS10dXRvcmlhbHMvcHJvdG9jb2xzL2RhdGEvRS1HRU9ELTY4MDg2LmNzdiIsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSkKClJDeTM6OmdldE5ldHdvcmtMaXN0KCkKYGBgCgpgYGB7cn0KUkN5Mzo6bG9hZFRhYmxlRGF0YShkZiwgZGF0YS5rZXkuY29sdW1uID0gIkdlbmUuSUQiLCB0YWJsZS5rZXkuY29sdW1uID0gIkVuc2VtYmwiLCBuZXR3b3JrID0gUkN5Mzo6Z2V0TmV0d29ya0xpc3QoKVsxXSApCgpSQ3kzOjpsb2FkVGFibGVEYXRhKGRmLCBkYXRhLmtleS5jb2x1bW4gPSAiR2VuZS5JRCIsIHRhYmxlLmtleS5jb2x1bW4gPSAiRW5zZW1ibCIsIG5ldHdvcmsgPSBSQ3kzOjpnZXROZXR3b3JrTGlzdCgpWzJdICkKClJDeTM6OmxvYWRUYWJsZURhdGEoZGYsIGRhdGEua2V5LmNvbHVtbiA9ICJHZW5lLklEIiwgdGFibGUua2V5LmNvbHVtbiA9ICJFbnNlbWJsIiwgbmV0d29yayA9IFJDeTM6OmdldE5ldHdvcmtMaXN0KClbM10gKQoKUkN5Mzo6bG9hZFRhYmxlRGF0YShkZiwgZGF0YS5rZXkuY29sdW1uID0gIkdlbmUuSUQiLCB0YWJsZS5rZXkuY29sdW1uID0gIkVuc2VtYmwiLCBuZXR3b3JrID0gUkN5Mzo6Z2V0TmV0d29ya0xpc3QoKVs0XSApCgpgYGAKRWFjaCBuZXR3b3JrIHNob3VsZCBub3cgaGF2ZSBtdWx0aXBsZSBleHRyYSBjb2x1bW5zIGNvcnJlc3BvbmRpbmcgdG8gZm9sZCBjaGFuZ2UgYW5kIHAtdmFsdWUgZm9yIHNldmVyYWwgY2FuY2VyIHR5cGVzLgoKCiMgRGF0YSBWaXN1YWxpemF0aW9uOiBOb2RlIEZpbGwgQ29sb3IKVG8gdmlzdWFsaXplIHRoZSBkYXRhIG9uIHRoZSBwYXRod2F5cywgd2UgYXJlIGdvaW5nIHRvIHVzZSBDeXRvc2NhcGUncyBidWlsdC1pbiBmdW5jdGlvbiBmb3IgQ3VzdG9tIEdyYXBoaWNzIHRvIHZpc3VhbGl6ZSB0aGUgZm9sZCBjaGFuZ2UgdmFsdWVzIGZvciB0aHJlZSBjYW5jZXIgdHlwZXM6IGJyZWFzdCBjYXJjaW5vbWEsIHBhbmNyZWF0aWMgYWRlbm9jYXJjaW5vbWEgYW5kIGNvbG9yZWN0YWwgY2FyY2lub21hLiBGb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmtmbG93LCB0aGUgdmlzdWFsaXplZCBkYXRhIHBvaW50cyBzaG91bGQgYmUgb2YgdGhlIHNhbWUgdHlwZSwgZm9yIGV4YW1wbGUgZm9sZCBjaGFuZ2VzLgoKYGBge3J9ClJDeTM6OnNldE5vZGVDdXN0b21IZWF0TWFwQ2hhcnQoYygnWC5wYW5jcmVhdGljLmFkZW5vY2FyY2lub21hLi52cy4ubm9ybWFsLi4uZm9sZENoYW5nZScsJ1guY29sb3JlY3RhbC5jYXJjaW5vbWEuLnZzLi5ub3JtYWwuLi5mb2xkQ2hhbmdlJywnWC5icmVhc3QuY2FyY2lub21hLi52cy4ubm9ybWFsLi4uZm9sZENoYW5nZScpLCBjb2xvcnM9YygnI0ZGMDAwMCcsJyNGRkZGRkYnLCcjMDAwMEZGJywnI0ZGRkZGRicpLCBzdHlsZS5uYW1lPSJXaWtpUGF0aHdheXMiKQpgYGAKClRoZSB0aHJlZSBkYXRhIHBvaW50cyBhcmUgbm93IHZpc3VhbGl6ZWQgYXMgdmVydGljYWwgc3RyaXBlcywgZWFjaCB3aXRoIGEgZ3JhZGllbnQgZnJvbSBibHVlLXJlZCBmb3IgZm9sZCBjaGFuZ2UuIE5vdGUgdGhhdCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGdyYXBoaWMgKGhlYXRtYXAgd2l0aCBob3Jpem9udGFsIG9yaWVudGF0aW9uKSwgdGhlIGRhdGEgcG9pbnRzIGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIGZyb20gaG93IHRoZXkgd2VyZSBsaXN0ZWQgaW4gdGhlIEN1c3RvbSBHcmFwaGljcyBpbnRlcmZhY2UsIHNvIGluIHRoaXMgY2FzZSBmcm9tIGxlZnQgdG8gcmlnaHQgaXQgaXMgc2hvd2luZyBwYW5jcmVhdGljIGFkZW5vY2FyY2lub21hIHZzIG5vcm1hbCwgY29sb3JlY3RhbCBjYXJjaW5vbWEgdnMgbm9ybWFsIGFuZCBicmVhc3QgY2FyY2lub21hIHZzIG5vcm1hbC4KIyBTYXZpbmcgYW5kIEV4cG9ydGluZyBEYXRhIFZpc3VhbGl6YXRpb24KYGBge3J9ClJDeTM6OnNhdmVTZXNzaW9uKCd3aWtpcGF0aHdheS1kYXRhLXZpc3VhbGl6YXRpb24tYWR2YW5jZWQnKQpSQ3kzOjpleHBvcnRJbWFnZSgnd2lraXBhdGh3YXktZGF0YS12aXN1YWxpemF0aW9uLWFkdmFuY2VkJywgdHlwZSA9ICJwbmciKQpgYGAKCg==