## ----setup, echo = FALSE, message = FALSE------------------------------------- knitr::opts_chunk$set(tidy = FALSE, comment = "#>") ## ----eval=FALSE--------------------------------------------------------------- # install.packages("remotes") # remotes::install_github("nvelden/NGLVieweR") ## ----eval=FALSE--------------------------------------------------------------- # #Load local pdb file # NGLVieweR("C:/7CID.pdb") %>% # addRepresentation("cartoon") # #Load protein by PDB code # NGLVieweR("7CID") %>% # addRepresentation("cartoon") ## ----Loading, echo=FALSE, screenshot.force=FALSE------------------------------ library(NGLVieweR) #Load local pdb file NGLVieweR("7CID") %>% addRepresentation("cartoon") ## ----eval=FALSE--------------------------------------------------------------- # library(NGLVieweR) # library(shiny) # NGLVieweR_example("basic") ## ----fileformat, screenshot.force=FALSE--------------------------------------- #Note that line formatting needs to be exact when reading from console! benz <- " 702 -OEChem-02271511112D 9 8 0 0 0 0 0 0 0999 V2000 0.5369 0.9749 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 1.4030 0.4749 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 2.2690 0.9749 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 1.8015 0.0000 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 1.0044 0.0000 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 1.9590 1.5118 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 2.8059 1.2849 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 2.5790 0.4380 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 0.0000 0.6649 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0 1 2 1 0 0 0 0 1 9 1 0 0 0 0 2 3 1 0 0 0 0 2 4 1 0 0 0 0 2 5 1 0 0 0 0 3 6 1 0 0 0 0 3 7 1 0 0 0 0 3 8 1 0 0 0 0 M END > 00001 > Solvent produced by yeast-based fermentation of sugars. $$$$ " NGLVieweR(benz, format="sdf") %>% addRepresentation("ball+stick") ## ----eval=FALSE--------------------------------------------------------------- # NGLVieweR("7CID") %>% # addRepresentation("cartoon") %>% # addRepresentation("ball+stick") ## ----structures, screenshot.force=FALSE--------------------------------------- NGLVieweR("7CID") %>% addRepresentation("cartoon", param = list(colorScheme = "residueindex") ) %>% addRepresentation("ball+stick", param = list( sele = "233-248", colorValue = "red", colorScheme = "element" ) ) %>% addRepresentation("surface", param = list( colorValue = "white", opacity = 0.1 ) ) ## ----representations, screenshot.force=FALSE---------------------------------- NGLVieweR("1CRN") %>% addRepresentation("cartoon", param = list(color = "blue")) %>% addStructure("1CRN") %>% addRepresentation("cartoon", param = list(color = "orange")) %>% setPosition(x = 20, y = 0, z = 0) %>% setRotation(x = 2, y = 0, z = 0, degrees = FALSE) %>% setScale(0.5) ## ----superpose, screenshot.force=FALSE---------------------------------------- NGLVieweR("1GZM") %>% addRepresentation("cartoon", param = list(color = "blue")) %>% addStructure("1U19") %>% addRepresentation("cartoon", param = list(color = "orange")) %>% setSuperpose( reference = 1, sele_reference = ":A", sele_target = ":A", superpose = TRUE ) ## ----stage, screenshot.force=FALSE-------------------------------------------- NGLVieweR("7CID") %>% stageParameters(backgroundColor = "white", zoomSpeed = 1) %>% addRepresentation("cartoon", param = list(name = "cartoon", colorScheme = "residueindex") ) %>% setSpin() ## ----labels, screenshot.force=FALSE------------------------------------------- NGLVieweR("7CID") %>% addRepresentation("cartoon") %>% addRepresentation("ball+stick", param = list( colorScheme = "element", colorValue = "yellow", sele = "20" )) %>% addRepresentation("label", param = list( sele = "20", labelType = "format", labelFormat = "[%(resname)s]%(resno)s", # or enter custom text labelGrouping = "residue", # or "atom" (eg. sele = "20:A.CB") color = "white", fontFamiliy = "sans-serif", xOffset = 1, yOffset = 0, zOffset = 0, fixedSize = TRUE, radiusType = 1, radiusSize = 1.5, # Label size showBackground = FALSE # backgroundColor="black", # backgroundOpacity=0.5 ) ) ## ----zoom, screenshot.force=FALSE--------------------------------------------- NGLVieweR("7CID") %>% addRepresentation("cartoon") %>% addRepresentation("ball+stick", param = list( colorScheme = "element", colorValue = "yellow", sele = "20" ) ) %>% addRepresentation("label", param = list( sele = "20", labelType = "format", labelFormat = "[%(resname)s]%(resno)s", # or enter custom text labelGrouping = "residue", # or "atom" (eg. sele = "20:A.CB") color = "white", xOffset = 1, fixedSize = TRUE, radiusType = 1, radiusSize = 1.5 ) # Label size ) %>% zoomMove( center = "20", zoom = "20", duration = 0, # animation time in ms z_offSet = -20 ) ## ----contact, screenshot.force=FALSE------------------------------------------ NGLVieweR("3RY2") %>% addRepresentation("cartoon") %>% addRepresentation("ball+stick", param = list( name = "biotin", colorvalue = "grey", colorScheme = "element", sele = "5001" ) ) %>% addRepresentation("ball+stick", param = list( name = "interacting", colorScheme = "element", colorValue = "green", sele = "23 or 27 or 43 or 45 or 128" ) ) %>% zoomMove( center = "27:B", zoom = "27:B", z_offSet = -20 ) %>% addRepresentation("contact", param = list( name = "contact", sele = "5001 or 23 or 27 or 43 or 45 or 128", filterSele = list("23 or 27 or 45 or 128", "5001"), labelVisible = TRUE, labelFixedSize = FALSE, labelUnit = "angstrom", # "", "angstrom", "nm" labelSize = 2 # hydrogenBond=TRUE, # weakHydrogenBond=FALSE, # waterHydrogenBond=FALSE, # backboneHydrogenBond=TRUE, # hydrophobic=FALSE, # halogenBond=TRUE, # ionicInteraction=TRUE, # metalCoordination=TRUE, # cationPi=TRUE, # piStacking=TRUE, # maxHydrophobicDist= 4.0, # maxHbondDist= 3.5, # maxHbondSulfurDist= 4.1, # maxHbondAccAngle= 45, # maxHbondDonAngle= 45, # maxHbondAccPlaneAngle= 90, # maxHbondDonPlaneAngle= 30, # maxPiStackingDist= 5.5, # maxPiStackingOffset= 2.0, # maxPiStackingAngle= 30, # maxCationPiDist= 6.0, # maxCationPiOffset= 2.0, # maxIonicDist= 5.0, # maxHalogenBondDist= 3.5, # maxHalogenBondAngle= 30, # maxMetalDist= 3.0, # refineSaltBridges= TRUE, # masterModelIndex= -1, # lineOfSightDistFactor= 1 ) ) ## ----eval=FALSE--------------------------------------------------------------- # library(shiny) # library(NGLVieweR) # ui <- fluidPage(NGLVieweROutput("structure")) # server <- function(input, output) { # output$structure <- renderNGLVieweR({ # NGLVieweR("7CID") %>% # addRepresentation("cartoon", # param = list( # name = "cartoon", color = # "residueindex" # ) # ) %>% # addRepresentation("ball+stick", # param = list( # name = "cartoon", # sele = "1-20", # colorScheme = "element" # ) # ) %>% # stageParameters(backgroundColor = "black") %>% # setQuality("high") %>% # setFocus(0) %>% # setSpin(TRUE) # }) # } # shinyApp(ui, server) ## ----echo=FALSE, fig.cap="A basic NGLVieweR Shiny app"------------------------ knitr::include_graphics("../man/figures/basic_shiny.PNG") ## ----eval=FALSE--------------------------------------------------------------- # library(shiny) # library(NGLVieweR) # # ui <- fluidPage( # titlePanel("Viewer with API inputs"), # sidebarLayout( # sidebarPanel( # textInput("selection", "Selection", "1-20"), # selectInput("type", "Type", c("ball+stick", "cartoon", "backbone")), # selectInput("color", "Color", c("orange", "grey", "white")), # actionButton("add", "Add"), # actionButton("remove", "Remove") # ), # mainPanel( # NGLVieweROutput("structure") # ) # ) # ) # # server <- function(input, output) { # output$structure <- renderNGLVieweR({ # NGLVieweR("7CID") %>% # addRepresentation("cartoon", # param = list(name = "cartoon", colorScheme = "residueindex") # ) %>% # stageParameters(backgroundColor = input$backgroundColor) %>% # setQuality("high") %>% # setFocus(0) %>% # setSpin(TRUE) # }) # # observeEvent(input$add, { # if (isolate(input$type) == "cartoon") { # # For cartoon, use the color parameter # NGLVieweR_proxy("structure") %>% # addSelection(isolate(input$type), # param = list( # name = "sel1", # sele = isolate(input$selection), # color = isolate(input$color) # ) # ) # } else { # # For other types, use colorValue # NGLVieweR_proxy("structure") %>% # addSelection(isolate(input$type), # param = list( # name = "sel1", # sele = isolate(input$selection), # colorValue = isolate(input$color) # ) # ) # } # }) # # observeEvent(input$remove, { # NGLVieweR_proxy("structure") %>% # removeSelection("sel1") # }) # } # # shinyApp(ui, server) ## ----echo=FALSE, fig.cap="NGLVieweR API in Shiny"----------------------------- knitr::include_graphics("../man/figures/API_shiny.PNG") ## ----eval=FALSE--------------------------------------------------------------- # library(shiny) # library(NGLVieweR) # library(stringr) # # ui <- fluidPage( # titlePanel("Viewer with click interaction"), # sidebarLayout( # sidebarPanel(verbatimTextOutput('selection')), # mainPanel(NGLVieweROutput("structure")) # ) # ) # # server <- function(input, output) { # output$structure <- renderNGLVieweR({ # NGLVieweR("3RY2") %>% # addRepresentation("cartoon") %>% # addRepresentation( # "ball+stick", # param = list( # name = "biotin", # colorvalue = "grey", # colorScheme = "element", # sele = "5001" # ) # ) %>% # zoomMove(center = "27:B", # zoom = "27:B", # z_offSet = -20) %>% # selectionParameters(3, "residue") #"atom" # }) # # #Save click selections # sele <- reactiveValues() # # observe({ # sele$aa <- # str_extract(input$structure_selection, "(?<=[\\[])(.*?)(?=\\])") # sele$aa_bond <- # str_extract(input$structure_selection, "(?<=[\\]])(.*?)(?=[:space:])") # sele$resiChain <- # str_extract(input$structure_selection, "(?<=[]])(.*?)(?=[.])") # sele$resi <- # str_extract(input$structure_selection, "(?<=[]])(.*?)(?=[:])") # sele$fileName <- # str_extract(input$structure_selection, "(?<=[(])(.*?)(?=[.])") # }) # # output$selection = renderPrint({ # #Full selection # print(input$structure_selection) # #Amino Acid # print(sele$aa) # #Bond # print(sele$aa_bond) # #Residue number + ChainNAme # print(sele$resiChain) # #Residue number # print(sele$resi) # #PDB name # print(sele$fileName) # #SelAround # print(input$structure_selAround) # }) # # observeEvent(input$structure_selAround, { # NGLVieweR_proxy("structure") %>% removeSelection("selAround") # # NGLVieweR_proxy("structure") %>% # addSelection( # "ball+stick", # param = # list( # name = "selAround", # sele = input$structure_selAround, # colorValue = "grey" # ) # ) # # }) # # observeEvent(sele$resiChain, { # #Remove any selections # NGLVieweR_proxy("structure") %>% removeSelection("label") # NGLVieweR_proxy("structure") %>% removeSelection("contact") # # #Add label and contacts # NGLVieweR_proxy("structure") %>% # # addSelection( # "label", # param = list( # name = "label", # sele = sele$resiChain, # labelType = "format", # labelFormat = "[%(resname)s]%(resno)s", # # or enter custom text # labelGrouping = "residue", # # or "atom" (eg. sele = "20:A.CB") # color = "white", # xOffset = 1, # fixedSize = TRUE, # radiusType = 1, # radiusSize = 1.5 # ) # ) %>% # addSelection( # "contact", # param = list( # name = "contact", # sele = "*", # #Select all residues # filterSele = # list(sele$resiChain, # Show bonds between selected residue # "*"), # # and all other residues # labelVisible = TRUE, # labelFixedSize = FALSE, # labelUnit = "angstrom", # # "", "angstrom", "nm" # labelSize = 2 # ) # ) # }) # # } # shinyApp(ui, server) ## ----echo=FALSE, fig.cap="Click interaction example in NGLVieweR"------------- knitr::include_graphics("../man/figures/click_interaction.PNG")