# Make sure you run at least step 1 + step 2 before this
# the input for this optional step is one of the GO processes
# that you find in res.go.up.df or res.go.down.df
# the idea is that you find all genes that are associated
# with the process, make a PPI network, visualize the data
# and find drug targets
# so instead of finding the module from the large network,
# you define the module based on a process of interest
# #############################################
# GET GO TERM
# #############################################
# Check if Cytoscape is running
cytoscapePing()
## You are connected to Cytoscape!
# example "DNA replication"
# look up GO ID in the enrichment result tables
genes <- res.go@geneSets[go.term]
query <- format_csv(as.data.frame(genes[1]), col_names=F, escape = "double", eol =",")
commandsPOST(paste0('string protein query cutoff=0.99 newNetName="PPI network" query="',query,'" limit=0 species="Homo sapiens"'))
## SUID
## 308
analyzeNetwork()
## networkTitle nodeCount
## "STRING network - PPI network (undirected)" "324"
## edgeCount avNeighbors
## "340" "4.5174825174825175"
## diameter radius
## "12" "6"
## avSpl cc
## "4.276371515808136" "0.36543119472463637"
## density heterogeneity
## "0.03181325716536984" "0.901880488475771"
## centralization ncc
## "0.13200479472580162" "171"
## time
## "0.105"
RCy3::loadTableData(data=data, data.key.column = "GeneName", table = "node", table.key.column = "query term")
## [1] "Success: Data loaded in defaultnode table"
RCy3::createVisualStyle("log2FC vis")
RCy3::setNodeLabelMapping("display name", style.name = "log2FC vis")
## NULL
control.points <- c (-3.0, 0.0, 3.0)
colors <- c ('#5588DD', '#FFFFFF', '#DD8855')
setNodeColorMapping("log2FC", control.points, colors, style.name = "log2FC vis", default.color = "#C0C0C0")
## NULL
RCy3::setVisualStyle("log2FC vis")
## message
## "Visual Style applied."
RCy3::lockNodeDimensions("TRUE", "log2FC vis")
# Select significant genes and change border color
x <- RCy3::createColumnFilter('P.Value', 'P.Value', 0.05, "LESS_THAN")
## No edges selected.
RCy3::setNodeBorderColorBypass(x$nodes, new.colors = "#009900")
RCy3::setNodeBorderWidthBypass(x$nodes, new.sizes = 7)
RCy3::clearSelection()
# ==================================================================
# Extend the process PPI with known drug-target interactions from DrugBank
# ==================================================================
unzip(system.file("extdata","drugbank-5.1.0.xgmml.zip", package="rWikiPathways"), exdir = getwd())
drugbank <- file.path(getwd(), "drugbank-5.1.0.xgmml")
commandsRun(paste0('cytargetlinker extend idAttribute="GeneID" linkSetFiles="', drugbank, '"') )
## [1] "Extension step: 1" "Linkset: DrugBank_v5.1.0 (approved)"
## [3] "Added edges: 260" "Added nodes: 136"
commandsRun('cytargetlinker applyLayout network="current"')
my.drugs <- selectNodes("drug", by.col = "CTL.Type", preserve = FALSE)$nodes #easy way to collect node SUIDs by column value
clearSelection()
setNodeColorBypass(my.drugs, "#DD99FF")
setNodeShapeBypass(my.drugs, "hexagon")
drug.labels <- getTableColumns(columns=c("SUID","CTL.label"))
drug.labels <- na.omit(drug.labels)
mapply(function(x,y) setNodeLabelBypass(x,y), drug.labels$SUID, drug.labels$CTL.label)
## [[1]]
## NULL
##
## [[2]]
## NULL
##
## [[3]]
## NULL
##
## [[4]]
## NULL
##
## [[5]]
## NULL
##
## [[6]]
## NULL
##
## [[7]]
## NULL
##
## [[8]]
## NULL
##
## [[9]]
## NULL
##
## [[10]]
## NULL
##
## [[11]]
## NULL
##
## [[12]]
## NULL
##
## [[13]]
## NULL
##
## [[14]]
## NULL
##
## [[15]]
## NULL
##
## [[16]]
## NULL
##
## [[17]]
## NULL
##
## [[18]]
## NULL
##
## [[19]]
## NULL
##
## [[20]]
## NULL
##
## [[21]]
## NULL
##
## [[22]]
## NULL
##
## [[23]]
## NULL
##
## [[24]]
## NULL
##
## [[25]]
## NULL
##
## [[26]]
## NULL
##
## [[27]]
## NULL
##
## [[28]]
## NULL
##
## [[29]]
## NULL
##
## [[30]]
## NULL
##
## [[31]]
## NULL
##
## [[32]]
## NULL
##
## [[33]]
## NULL
##
## [[34]]
## NULL
##
## [[35]]
## NULL
##
## [[36]]
## NULL
##
## [[37]]
## NULL
##
## [[38]]
## NULL
##
## [[39]]
## NULL
##
## [[40]]
## NULL
##
## [[41]]
## NULL
##
## [[42]]
## NULL
##
## [[43]]
## NULL
##
## [[44]]
## NULL
##
## [[45]]
## NULL
##
## [[46]]
## NULL
##
## [[47]]
## NULL
##
## [[48]]
## NULL
##
## [[49]]
## NULL
##
## [[50]]
## NULL
##
## [[51]]
## NULL
##
## [[52]]
## NULL
##
## [[53]]
## NULL
##
## [[54]]
## NULL
##
## [[55]]
## NULL
##
## [[56]]
## NULL
##
## [[57]]
## NULL
##
## [[58]]
## NULL
##
## [[59]]
## NULL
##
## [[60]]
## NULL
##
## [[61]]
## NULL
##
## [[62]]
## NULL
##
## [[63]]
## NULL
##
## [[64]]
## NULL
##
## [[65]]
## NULL
##
## [[66]]
## NULL
##
## [[67]]
## NULL
##
## [[68]]
## NULL
##
## [[69]]
## NULL
##
## [[70]]
## NULL
##
## [[71]]
## NULL
##
## [[72]]
## NULL
##
## [[73]]
## NULL
##
## [[74]]
## NULL
##
## [[75]]
## NULL
##
## [[76]]
## NULL
##
## [[77]]
## NULL
##
## [[78]]
## NULL
##
## [[79]]
## NULL
##
## [[80]]
## NULL
##
## [[81]]
## NULL
##
## [[82]]
## NULL
##
## [[83]]
## NULL
##
## [[84]]
## NULL
##
## [[85]]
## NULL
##
## [[86]]
## NULL
##
## [[87]]
## NULL
##
## [[88]]
## NULL
##
## [[89]]
## NULL
##
## [[90]]
## NULL
##
## [[91]]
## NULL
##
## [[92]]
## NULL
##
## [[93]]
## NULL
##
## [[94]]
## NULL
##
## [[95]]
## NULL
##
## [[96]]
## NULL
##
## [[97]]
## NULL
##
## [[98]]
## NULL
##
## [[99]]
## NULL
##
## [[100]]
## NULL
##
## [[101]]
## NULL
##
## [[102]]
## NULL
##
## [[103]]
## NULL
##
## [[104]]
## NULL
##
## [[105]]
## NULL
##
## [[106]]
## NULL
##
## [[107]]
## NULL
##
## [[108]]
## NULL
##
## [[109]]
## NULL
##
## [[110]]
## NULL
##
## [[111]]
## NULL
##
## [[112]]
## NULL
##
## [[113]]
## NULL
##
## [[114]]
## NULL
##
## [[115]]
## NULL
##
## [[116]]
## NULL
##
## [[117]]
## NULL
##
## [[118]]
## NULL
##
## [[119]]
## NULL
##
## [[120]]
## NULL
##
## [[121]]
## NULL
##
## [[122]]
## NULL
##
## [[123]]
## NULL
##
## [[124]]
## NULL
##
## [[125]]
## NULL
##
## [[126]]
## NULL
##
## [[127]]
## NULL
##
## [[128]]
## NULL
##
## [[129]]
## NULL
##
## [[130]]
## NULL
##
## [[131]]
## NULL
##
## [[132]]
## NULL
##
## [[133]]
## NULL
##
## [[134]]
## NULL
##
## [[135]]
## NULL
##
## [[136]]
## NULL
# Try different layouts (e.g. yFiles organic layout) if nodes are overlapping too much
# Cytoscape > Layout menu!
exportImage(paste0(out.folder,'cluster-',cluster,'-with-drugs.png'), type='PNG', zoom=500) #.png; use zoom or width args to increase size/resolution
## file
## "/home/peipr/gits/BBS2061-breast-cancer/scripts/../output/cluster-3283-with-drugs.png"
# ==================================================================
# SAVING CYTOSCAPE SESSION
# ==================================================================
saveSession(paste0(out.folder,'breast-cancer-GO-PPI.cys'))
## OPTIONAL - FILTER network to only include drugs + targets
selectNodes(my.drugs)
## $nodes
## [1] 9200 9971 9464 9722 9980 9212 9473 9218 9734 9479 9992 10250 9227 9740 9998 9491
## [17] 9236 9749 9242 10010 9755 10268 9248 10274 9506 10019 9254 9512 10025 9770 9518 10031
## [33] 9263 9776 10289 9269 10037 9527 10295 9785 9275 10043 10301 9791 9281 10313 9290 10058
## [49] 9803 9548 9296 9809 9554 9302 10070 9563 10076 9308 9821 10082 9317 9830 10088 9323
## [65] 9581 10094 9839 9329 9587 9845 9335 10103 9593 9851 9341 9599 9089 9605 10118 9350
## [81] 9866 10124 9359 9617 9875 9365 10136 9881 9371 9629 9377 9635 9893 9383 10151 9641
## [97] 9899 9389 9647 9653 9398 9911 9143 9404 9149 9662 9410 9155 9668 10181 9926 9416
## [113] 9161 9674 10190 9422 9167 9680 9173 9686 10199 9947 9179 9692 9440 9953 9698 9188
## [129] 9446 10214 9959 9704 9194 9452 9965 9710
##
## $edges
## list()
selectFirstNeighbors()
## $nodes
## [1] 9200 5110 9722 9212 9218 9734 10250 9227 9740 9236 9749 9242 9755 10268 5660 9248
## [17] 10274 4645 9254 9770 9263 9776 10289 9269 5685 10295 9785 9275 10301 9791 9281 5700
## [33] 10313 5705 9290 9803 4685 9296 9809 5715 5205 9302 5210 9308 9821 5215 5730 9317
## [49] 9830 9323 9839 9329 9845 9335 9851 5755 9341 5760 9350 9866 9359 5775 9875 5780
## [65] 9365 4760 9881 5785 9371 5275 5790 9377 9893 9383 9899 4780 9389 5805 9398 4790
## [81] 9911 5305 9404 5820 5825 9410 9926 9416 4810 9422 5840 4305 9947 5855 9440 9953
## [97] 4835 9446 9959 9452 9965 5360 9971 5875 4855 9464 5880 5370 9980 5375 9473 9479
## [113] 9992 5385 5900 4365 9998 9491 10010 4380 5405 9506 10019 9512 10025 4905 4395 9518
## [129] 4910 10031 10037 4405 9527 10043 4925 4415 4420 10058 9548 5455 9554 5460 10070 5465
## [145] 9563 10076 10082 5475 10088 5480 9581 5485 10094 9587 4470 10103 5495 9593 4475 9599
## [161] 9089 9605 10118 10124 9617 5010 4500 10136 9629 5535 9635 5540 10151 9641 4525 9647
## [177] 9653 9143 9149 5565 9662 9155 9668 10181 9161 9674 10190 5070 9167 9680 9173 4565
## [193] 9686 10199 9179 9692 5600 9698 9188 4580 5605 10214 9704 4585 9194 5100 9710
##
## $edges
## list()
selected <- getSelectedNodes()
createSubnetwork("selected", "all")
## network
## 11122