NGLVieweR can be used to visualize and interact with Protein Data Bank (PDB) and structural files in R and Shiny applications. It includes a set of API functions to manipulate the viewer after creation in Shiny.

NGLVieweR(data, format = NULL, width = NULL, height = NULL, elementId = NULL)

Arguments

data

A PDB entry code (e.g. "7CID"), the path to a structure file, or the file contents as a single string or a vector of lines (e.g. from readLines()). Files compressed with gzip, bzip2 or xz (.gz, .bz2, .xz) are decompressed.

format

Input format (cif, mmcif, mcif, pdb, ent, pqr, gro, sdf, sd, mol2), with or without a leading dot. Needed for file contents and for files without a recognisable extension. Binary formats such as MMTF are not supported. For a PDB entry code, "pdb" or "cif" picks the file downloaded from RCSB; without format the PDB-format file is used, and the mmCIF file if there is none (large entries such as ribosomes only exist as mmCIF). For such entries, format = "cif" saves the failed request for the PDB-format file.

width, height

Must be a valid CSS unit (like '100%', '400px', 'auto') or a number, which will be coerced to a string and have 'px' appended.

elementId

optional element Id

Value

A NGLVieweR htmlwidgets object.

Details

The package is based on the NGL.js JavaScript library. To see the full set of features please read the official manual of NGL.js.

See also

Examples


# Example 1: Most Basic
NGLVieweR("7CID") %>%
 addRepresentation("cartoon", 
 param = list(name = "cartoon", colorScheme="residueindex"))
# Example 2: Advanced NGLVieweR("7CID") %>% stageParameters(backgroundColor = "white") %>% setQuality("high") %>% setSpin(FALSE) %>% addRepresentation("cartoon", param = list( name = "cartoon", colorScheme = "residueindex" ) ) %>% addRepresentation("ball+stick", param = list( name = "ball+stick", colorValue = "red", colorScheme = "element", sele = "200" ) ) %>% addRepresentation("label", param = list( name = "label", sele = "200:A.O", showBackground = TRUE, backgroundColor = "black", backgroundMargin = 2, backgroundOpacity = 0.5, showBorder = TRUE, colorValue = "white" ) ) %>% addRepresentation("surface", param = list( name = "surface", colorValue = "white", opacity = 0.1 ) ) %>% zoomMove("200", "200", 2000, -20)
#---------------------Using Shiny------------------------- # App 1: Basic Example if (interactive()) { library(shiny) ui <- fluidPage(NGLVieweROutput("structure")) server <- function(input, output) { output$structure <- renderNGLVieweR({ NGLVieweR("7CID") %>% addRepresentation("cartoon", param = list( name = "cartoon", colorScheme = "residueindex" ) ) %>% addRepresentation("ball+stick", param = list( name = "ball+stick", sele = "1-20", colorScheme = "element" ) ) %>% stageParameters(backgroundColor = "black") %>% setQuality("high") %>% setFocus(0) %>% setSpin(TRUE) }) } shinyApp(ui, server) } # App 2: Example with API calls if (interactive()) { library(shiny) 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 = "black") %>% setQuality("high") %>% setFocus(0) %>% setSpin(TRUE) }) observeEvent(input$add, { 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) }