Code Monkey home page Code Monkey logo

r3dmol's Introduction

r3dmol

CRAN status Codecov test coverage R-CMD-check Lifecycle: experimental Metacran downloads

This is an R package that provides support for 3Dmol.js as a htmlwidgets.

Installation

Important: This package is still very early in its development stages. Please give the repository a star on Github if you find the package is useful. In addition, we need your feedback to improve the package, feel free to create an issue if you have any question or feature requirement. You are more than welcome to submit a PR to make any feasible improvements.

You could install the released version of r3dmol from CRAN with:

install.packages("r3dmol")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("swsoyee/r3dmol")

Example

library(r3dmol)

r3dmol(                         # Set up the initial viewer
  viewer_spec = m_viewer_spec(
    cartoonQuality = 10,
    lowerZoomLimit = 50,
    upperZoomLimit = 350
  )
) %>%
  m_add_model(                  # Add model to scene
    data = pdb_6zsl,
    format = "pdb"
  ) %>%
  m_zoom_to() %>%               # Zoom to encompass the whole scene
  m_set_style(                  # Set style of structures
    style = m_style_cartoon(
      color = "#00cc96"
    )
  ) %>%
  m_set_style(                  # Set style of specific selection
    sel = m_sel(ss = "s"),      # (selecting by secondary)
    style = m_style_cartoon(
      color = "#636efa",
      arrows = TRUE
    )
  ) %>%
  m_set_style(                  # Style the alpha helix
    sel = m_sel(ss = "h"),      # (selecting by alpha helix)
    style = m_style_cartoon(
      color = "#ff7f0e"
    )
  ) %>%
  m_rotate(                     # Rotate the scene by given angle on given axis
    angle = 90,
    axis = "y"
  ) %>%
  m_spin()                      # Animate the scene by spinning it

spin demo
You can find more demo at here.

About 3Dmol.js

Nicholas Rego, David Koes, 3Dmol.js: molecular visualization with WebGL, Bioinformatics, Volume 31, Issue 8, 15 April 2015, Pages 1322–1324,

Code of Conduct

Please note that the r3dmol project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.

r3dmol's People

Contributors

bradyajohnston avatar dependabot[bot] avatar swsoyee avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

r3dmol's Issues

Methods support

  • addArrow(spec) → {$3Dmol.GLShape}
  • addAsOneMolecule(data, format) → {$3Dmol.GLModel}
  • addBox(spec) → {$3Dmol.GLShape}
  • addCurve(spec) → {$3Dmol.GLShape}
  • addCustom(spec) → {$3Dmol.GLShape}
  • addCylinder(spec) → {$3Dmol.GLShape}
  • addIsosurface(data, spec) → {$3Dmol.GLShape}
  • addLabel(text, options, sel, noshow) → {$3Dmol.Label}
  • addLine(spec) → {$3Dmol.GLShape}
  • addMesh(mesh, style) → {Number}
  • addModel(data, format, options) → {$3Dmol.GLModel}
  • addModels(data, format) → {Array.<$3Dmol.GLModel>}
  • addModelsAsFrames(data, format) → {$3Dmol.GLModel}
  • addPropertyLabels(prop, sel, style)
  • addResLabels(sel, style, byframe)
  • addShape(shapeSpec) → {$3Dmol.GLShape}
  • addSphere(spec) → {$3Dmol.GLShape}
  • addStyle(sel, style)
  • addSurface(type, style, atomsel, allsel, focus, surfacecallback) → {Promise}
  • addUnitCell(model, spec)
  • addVolumetricData(data, format, or) → {$3Dmol.GLShape} deprecated Use addIsosurface instead
  • addVolumetricRender(data, spec) → {$3Dmol.GLShape}
  • animate(options)
  • center(sel, animationDuration, fixedPath)
  • clear()
  • createModelFrom(sel, extract) → {$3Dmol.GLModel}
  • enableFog(fog)
  • exportJSON(includeStyles, modelID) → {string}
  • exportVRML()
  • fitSlab(sel)
  • getFrame()
  • getInternalState()
  • getModel(id) → {GLModel}
  • getNumFrames() → {number}
  • getPerceivedDistance() → {number}
  • getView() → {Array.}
  • isAnimated() → {boolean}
  • linkViewer(otherview)
  • mapAtomProperties(props,, sel)
  • pdbData(sel) → {string} (Same feature done by using {bio3d} #6 )
  • pngURI() (#27)
  • removeAllLabels()
  • removeAllModels()
  • removeAllShapes()
  • removeAllSurfaces()
  • removeLabel(label)
  • removeModel(model)
  • removeShape(shape)
  • removeSurface(surf)
  • removeUnitCell(model)
  • render()
  • replicateUnitCell(A, B, C, model)
  • resize()
  • rotate(angle, axis, animationDuration, fixedPath)
  • selectedAtoms(sel) → {Array.}
  • setAutoEyeSeparation() → {number}
  • setBackgroundColor(hex, a)
  • setClickable(sel, clickable, callback)
  • setColorByElement(sel, colors)
  • setColorByProperty(sel, prop, scheme)
  • setContainer(element)
  • setDefaultCartoonQuality()
  • setFrame(framenum) → {Promise}
  • setHeight(h)
  • setHoverable(sel, hoverable, hover_callback, unhover_callback)
  • setHoverDuration(hoverDuration)
  • setInternalState()
  • setLabelStyle(label, stylespec) → {$3Dmol.Label}
  • setLabelText(label, text) → {$3Dmol.Label}
  • setPerceivedDistance()
  • setProjection()
  • setSlab()
  • setStateChangeCallback()
  • setStyle(sel, style)
  • setSurfaceMaterialStyle(surf, style)
  • setView(arg)
  • setViewChangeCallback()
  • setViewStyle()
  • setWidth(w)
  • setZoomLimits()
  • spin(axis)
  • stopAnimate()
  • translate(x, y, animationDuration, fixedPath)
  • translateScene(x, y, animationDuration, fixedPath)
  • vibrate(numFrames, amplitude, bothWays, arrowSpec)
  • zoom(factor, animationDuration, fixedPath)
  • zoomTo(sel, animationDuration, fixedPath)

How to set the amino acid with special color?

Hi, Su

How to set certain amino acids with a special color?
See this demo trimer protein with 6 chains, including HA1: A, C, and E; HA2: B, D, and F.
My purpose is set the 206:220 on HA1 with red color (#e41a1c).
So, I try to use m_add_style and m_add_surface. But they look like do not as work as my desire.
Is there something wrong with my code?
image

rm(list=ls()); gc()
library(bio3d)
library(r3dmol)

p <- r3dmol() %>%
  m_add_model(data = m_fetch_pdb("6D7U", save.pdb = TRUE)) %>%
  m_add_model(data = m_bio3d(pdb)) %>%
#   m_set_style(style = m_style_cartoon(color = 'spectrum', ribbon = TRUE)) %>%
  m_set_style(style = m_style_cartoon()) %>% 
  m_add_outline() %>% 
#   m_set_style(style = c(m_style_cartoon(color = "spectrum", ribbon = TRUE), m_style_line())) %>% 
  m_add_surface(atomsel = m_sel(chain =c('A', 'B')), style = m_style_surface(opacity = 0.9, colorScheme="chain")) %>% 
  m_add_style(sel = m_sel(resi = c(206:220), chain="E"), style = m_style_sphere(scale = 0.5, color = "#e41a1c")) %>%
#   m_set_style(sel = m_sel(resi = c(206:220), chain = "A", byres = TRUE), style = m_style_cartoon(color = "red")) %>%
  m_add_surface(atomsel = m_sel(resi = c(206:220), chain = "C"), style = m_style_surface(opacity = 0.9, color = "#e41a1c")) %>%
#   m_add_line(start = m_sel(resi = 1:10, chain = "A"), end = m_sel(resi = 1:10, chain = "B"), spec = list(dashed = TRUE)) %>%
  m_add_label(text = "Site A", sel = m_sel( resi = 206:220, chain = "C"), style = m_style_label(borderColor = "green", borderThickness = 1, inFront = FALSE)) %>%
#   m_zoom_to(sel = m_sel(resi = c(206:220), chain = "A"))
#   m_set_zoom_limits(upper = 200, lower = 30)
    m_zoom_to()
p

Thanks,
Yang

Parts of structure disappear when rotating without m_zoom_to()

I have noticed that if I don't use m_zoom_to() then parts of the structure disappear as I rotate. I would like to be able to turn labels on and off in a Shiny app so I don't want it to reset the zoom level each time I change something.

model=r3dmol(                         # Set up the initial viewer
      viewer_spec = m_viewer_spec(
        cartoonQuality = 10,
        lowerZoomLimit = 50,
        upperZoomLimit = 1000
      )
    ) %>%
    m_add_model(                 # Add model to scene
        data = m_bio3d(bio3d::read.pdb("https://alphafold.ebi.ac.uk/files/AF-Q9Y6K1-F1-model_v4.pdb")),
        format = "pdb"
    )

Save image as PNG in Shiny with a download button

Hi @swsoyee ,
I have been trying to export the image generated through m_png() through a download button in Shiny, but I am not able to get that work. I have tried png-dev.off(), png::writePNG and also htmlWidgets-webshot but none of them worked for me. They work normally in an R environment but not in a shiny app download button. Here is the corresponding code from the server section of my app.R:

expression <- {
  r3dmol( viewer_spec = m_viewer_spec(cartoonQuality = 10, lowerZoomLimit = 50, upperZoomLimit = 350) ) %>%
    # Add model to scene
    m_add_model(data = pdb_file, format = "pdb") %>%
    # Zoom to encompass the whole scene
    m_zoom_to() %>%
    # Set style of structures
    m_set_style(style = m_style_cartoon(color = "#00cc96")) %>%
    # Set style of specific selection (selecting by secondary)
    m_set_style( sel = m_sel(ss = "s"), style = m_style_cartoon(color = "#636efa", arrows = TRUE) ) %>%
    # Style the alpha helix
    m_set_style( sel = m_sel(ss = "h"), style = m_style_cartoon(color = "#ff7f0e") ) 
}

output$pdb <- renderR3dmol(expression)

data2 <- reactiveValues()

data2$imageToSave <- renderImage({
  expression %>% m_png()
  })

output$downloadImage <- downloadHandler(
  filename = "AuxPhosImage.png",
  content = function(file){ 
    png::writePNG(data2$imageToSave)
  }
  )

I am using 'pdb' and 'downloadImage' in the 'ui' part as fluidRow(column(6, align="center", downloadButton('downloadImage','Download Image'), r3dmolOutput("pdb")).

I tried the same procedure for to save a ggplot object using ggsave which worked perfectly. But I am not able to get this working. One difference that I found is that this png from r3dmol is rendered into the 'viewer' but not the 'plot' section, for which the reason the png saving options are not working I guess, I might be wrong.

Any help is highly appreciated.

Thanks, Sumanth.

m_add_lines()

Support for creating multiple lines at once.

Currently, the m_add_line() will only create a single line from the two given points in space. Ideally I would like to be able to feed a vector / list of points into the start and end arguments, and it will create multiple lines.

I've tried playing around with looping over the m_add_line() multiple times, but it doesn't work properly. I don't know enough about the javascript side of things as to why it's not working, but would appreciate ideas as to how to get it to work.

Potential also for applying to m_add_cylinder(), m_add_sphere() etc

m_add_label() prints label at wrong position

Thank you for such a useful package -- I've found it much easier to use than some of the alternatives.

m_add_label prints a label, but if given m_vector3 coordinates, the label prints at the wrong position.

The following reprex shows this, using the example code from the help file. Here, I print 2 labels, at different positions (I just changed the signs of the coordinates and label colors) but the labels end up in the same position.

library(r3dmol)

r3dmol() %>%
  m_add_model(data = pdb_6zsl, format = "pdb") %>%
  m_add_label(
    text = "Label",
    sel = m_vector3(-6.89, 0.75, 0.35),
    style = m_style_label(
      backgroundColor = "#666666",
      backgroundOpacity = 0.9
    )
  ) %>%
  m_add_label(
    text = "Label2",
    sel = m_vector3(6.89, -0.75, -0.35),
    style = m_style_label(
      backgroundColor = "#000000",
      backgroundOpacity = 0.9
    )
  ) %>%
  m_zoom_to()

The positioning seems to work fine when given a residue number, but I'd like to be able to place labels outside of the molecular structure and connect them to the relevant location with an arrow. Also, m_vector3 works fine in other situations.

Color by b-factor (spectrum)

Thank you for the great package, it's really nice to use and makes protein vis in R easy!

I was wondering if maybe you know a way to color structures by b-factor using r3dmol? I've been checking 3dmol but I don't think they have implemented that functionality yet.
Unfortunately, I don't know any javascript and I am guessing this would have to be used as a colorfunction in the m_style_cartoon() function.

Do you maybe have any suggestions for this?

m_grid does not update in Shiny app with selectInput

Hi,

Thanks for making r3dmol. It's a really nice package and easy to use.

I'm using m_grid in a Shiny app with selectInput. But the output graphic is not updated when changing the input in the selection menu on the left.

The individual graphics are updated, but not the multi graphic.

And I get this error on the console:
Warning in renderWidget(instance) :
Ignoring explicitly provided widget ID "c6ce055b66d1daf14e50"; Shiny doesn't use them

Any idea why? and a possible solution?

Thanks in advance :)

Example below:

library(shiny)
library(r3dmol)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput("selected_id", "Choose a PDB ID:", choices=c("3G5X","7A2A","5IJ5")),
    ),
    mainPanel(
      ## Choose multi or individual, but not both at the same time
      r3dmolOutput(outputId = "structure_multi"),
      # r3dmolOutput(outputId = "structure_individual"),
      )
    )
  )
  
server <- function(input, output, session) {
  
  output$structure_individual <- renderR3dmol({
    r3dmol() %>%
      m_add_model(data = m_fetch_pdb(input$selected_id)) %>%
      m_zoom_to() %>%
      m_set_style(style = m_style_cartoon(color = "spectrum"))
    
  })
  
  output$structure_multi <- renderR3dmol({
    m1 <- r3dmol() %>%
      m_add_model(data = m_fetch_pdb(input$selected_id)) %>%
      m_zoom_to()
    
    m2 <- m1 %>%
      m_set_style(style = m_style_cartoon(color = "spectrum"))
    
    m3 <- m1 %>%
      m_set_style(style = m_style_stick())
    
    m4 <- m1 %>%
      m_set_style(style = m_style_sphere())
    m_grid(
      viewer = list(m1, m2, m3, m4),
      control_all = TRUE,
      viewer_config = m_viewer_spec(
        backgroundColor = "black"
      )
    )
    })
}


shinyApp(ui, server)

Layout Support

Enable multiple-viewer formatting like that demonstrated in the 3Dmol.js docs.

Again I tried having a go but don't know enough about javascript to have any success. Any advice would be appreciated.

Feature request: add colorfunc to argument to m_style_surface() and others

Hi,

Great package! I would like to color structures with customized values, like discussed in #45. The colorfunc argument is only available in m_style_cartoon but not other representation styles. I wonder if it is possible to add this argument to m_style_surface(), m_style_sphere() and m_style_stick().

Thank you!

CRAN outdates

Please briefly describe your problem and what output you expect.

I would expect CRAN to be reasonably up-to-date.

Bug about button layout

m_button() can't work well in rmarkdown post in v0.1.2.
Buttons are layouted to the edges bounded by the whole post, not the edges bounded by widgets.

How can I export this figure in the ShinyApp

image

p <- r3dmol(id = "demo_sdf", elementId = "demo_sdf") %>%
m_add_model(data = benz, format = "sdf") %>%
m_set_style(style = m_style_stick()) %>%
m_set_style(sel = m_sel(model = 0),
style = m_style_stick(colorScheme = "cyanCarbon")) %>%
m_zoom_to()

output$pic <- renderPlot({(p)}, res = 96)

I am using this R package for a new shiny app construction in my paper

I find when i render this picture, it only shows in the Rstudio Plot window instead of the web

How can i fix that problem?

Thank you so much !

Ps
this was a great and very useful R package for me ! Thanks again for this amazing work !

User-Friendly Functions

Hi swsoyee!

Firstly, great package. Once I got the hang of it, I have been really enjoying being able to visualise structures and analysis that I've been doing in 3D in my rmkarkdown documents.

Secondly, I don't really know any javascript, only R, so excuse any glaring errors that might end up breaking the package.

I found myself always having to look up the specifics of the documentation when trying to select atoms or add styles.

I've written a number of functions, that simply return a list, but give options for the user so they know what they can specify without having to lookup the documentation of 3dmol.js. I also made some that allowed for importing from bio3d objects and fetching directly from the PDB using bio3d as an intermediate. I know 3dmol.js has that option when using url calls, but I couldn't see a way set up yet using r3dmol.

example as such:

r3dmol() %>% 
  m_add_model(data = m_fetch_pdb("1bna")) %>% 
  m_set_style(style = list(cartoon = m_cartoon_style(color = 'spectrum'), 
                           stick = m_stick_style(), 
                           sphere = m_sphere_style(scale = 0.3))) %>% 
  m_zoom_to()

I've detailed them in this vignette and they're all uploaded on my own fork of this repo.

What do you think about the functions, to allow ease of use? I've found them very useful in my own work since starting to make them.

Do you think something like this might be implemented into the base r3dmol?

Implement `mapAtomProperties` function

@nnguyen19 Thanks for your feature request.
I have tried to implement the mapAtomProperties function, but I can't get any differences visually between with and without using mapAtomProperties.

Since I don't have an academic background in this area, I don't really understand what this function is used for.

Could you provide an example of what the visual difference is when using and not using this function?
So I can use it to test if my code is implement correctly.

Problems with Widget Resizing Inside `{xaringan}` slides

When rendering a widget with {xaringan} slides, the widget resizes strangely.

In the example below, when rendered, each time the browser window is resized, the widget resizes as well. The problem arises because the container the widget canvas resizes, then the container that the canvas is is also resizes, leading to exaggerated shrinking and growing of the widget.

---
title: "Protein Example"
output: 
  xaringan::moon_reader:
    css: xaringan-themer.css
    seal: false
    nature:

      highlightStyle: github
      highlightLines: true
      ratio: 16:9
      countIncrementalSlides: true
      navigation:
        scroll: false

---

## Protein Viewer

```{r echo=FALSE, message=FALSE}
library(r3dmol)
model <- r3dmol(width = 400, height = 400) %>%
  m_add_model(r3dmol::pdb_1j72) %>%
  m_set_style(m_style_cartoon(color = "spectrum")) %>%
  m_zoom_to()
model
```

Widget after render.

image

Widget after shrinking the browser window.

image

Widget after enlarging the browser window.

image

I have tested it with {plotly} and the same problem doesn't happen - so it is something specific with r3dmol / 3dmol.js that is causing the problem. I just don't know enough javascript to track it down.

> sessionInfo()
R version 4.1.0 (2021-05-18)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 11.4

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib

locale:
[1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods  
[7] base     

other attached packages:
[1] ggplot2_3.3.5 r3dmol_0.1.2 

loaded via a namespace (and not attached):
 [1] pillar_1.6.2         compiler_4.1.0      
 [3] sysfonts_0.8.5       tools_4.1.0         
 [5] digest_0.6.27        jsonlite_1.7.2      
 [7] evaluate_0.14        lifecycle_1.0.0     
 [9] tibble_3.1.3         gtable_0.3.0        
[11] viridisLite_0.4.0    pkgconfig_2.0.3     
[13] rlang_0.4.11         rstudioapi_0.13     
[15] cli_3.0.1            DBI_1.1.1           
[17] yaml_2.2.1           xfun_0.25           
[19] withr_2.4.2          showtextdb_3.0      
[21] xaringanthemer_0.4.0 knitr_1.33          
[23] dplyr_1.0.7          httr_1.4.2          
[25] generics_0.1.0       vctrs_0.3.8         
[27] htmlwidgets_1.5.3    DT_0.18             
[29] grid_4.1.0           tidyselect_1.1.1    
[31] glue_1.4.2           data.table_1.14.0   
[33] R6_2.5.1             fansi_0.5.0         
[35] plotly_4.9.4.1       xaringan_0.22       
[37] rmarkdown_2.10       purrr_0.3.4         
[39] tidyr_1.1.3          magrittr_2.0.1      
[41] scales_1.1.1         ellipsis_0.3.2      
[43] htmltools_0.5.1.1    rsconnect_0.8.24    
[45] showtext_0.9-4       assertthat_0.2.1    
[47] colorspace_2.0-2     utf8_1.2.2          
[49] lazyeval_0.2.2       munsell_0.5.0       
[51] crayon_1.4.1      

Addition of Interactive Buttons

Unsure how it would be implemented, but enabling the creation of buttons through functions that would resemble like that below (on the docs page:

I'm not wanting the complete functionality of {r3dmol} exposed in button form, but maybe enabling the creation of a button that could switch between cartoon or stick representation would good.

I am unsure if it is possible to implement this or not. I had an attempt and was unable to get it working, so your expertise would be appreciated.

m_png() with wrong result

Hi, @BradyAJohnston

Sorry about bothering you again.
The m_png looks like failed to export as the figure as plot.

The output
image

The plot
image

rm(list=ls()); gc()
library(bio3d)
library(r3dmol)

p <- r3dmol() %>%
  m_add_model(data = m_fetch_pdb("6D7U", save.pdb = TRUE)) %>%
  m_add_model(data = m_bio3d(pdb)) %>%
#   m_set_style(style = m_style_cartoon(color = 'spectrum', ribbon = TRUE)) %>%
  m_set_style(style = m_style_cartoon()) %>% 
  m_add_outline() %>% 
#   m_set_style(style = c(m_style_cartoon(color = "spectrum", ribbon = TRUE), m_style_line())) %>% 
  m_add_surface(atomsel = m_sel(chain =c('A', 'B')), style = m_style_surface(opacity = 0.9, colorScheme="chain")) %>% 
  m_add_style(sel = m_sel(resi = c(206:220), chain="E"), style = m_style_sphere(scale = 0.5, color = "#e41a1c")) %>%
#   m_set_style(sel = m_sel(resi = c(206:220), chain = "A", byres = TRUE), style = m_style_cartoon(color = "red")) %>%
  m_add_surface(atomsel = m_sel(resi = c(206:220), chain = "C"), style = m_style_surface(opacity = 0.9, color = "#e41a1c")) %>%
#   m_add_line(start = m_sel(resi = 1:10, chain = "A"), end = m_sel(resi = 1:10, chain = "B"), spec = list(dashed = TRUE)) %>%
  m_add_label(text = "Site A", sel = m_sel( resi = 206:220, chain = "C"), style = m_style_label(borderColor = "green", borderThickness = 1, inFront = FALSE)) %>%
#   m_zoom_to(sel = m_sel(resi = c(206:220), chain = "A"))
#   m_set_zoom_limits(upper = 200, lower = 30)
    m_zoom_to() %>%
## Convert widgets to PNG image
   m_png()

p
R version 4.0.5 (2021-03-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19042)

Matrix products: default

locale:
[1] LC_COLLATE=Chinese (Simplified)_China.936 
[2] LC_CTYPE=Chinese (Simplified)_China.936   
[3] LC_MONETARY=Chinese (Simplified)_China.936
[4] LC_NUMERIC=C                              
[5] LC_TIME=Chinese (Simplified)_China.936    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] forcats_0.5.1   stringr_1.4.0   dplyr_1.0.6     purrr_0.3.4    
 [5] readr_1.4.0     tidyr_1.1.3     tibble_3.1.1    ggplot2_3.3.3  
 [9] tidyverse_1.3.1 r3dmol_0.1.2    bio3d_2.4-1    

loaded via a namespace (and not attached):
 [1] Rcpp_1.0.6        lubridate_1.7.10  ps_1.6.0          assertthat_0.2.1 
 [5] digest_0.6.27     utf8_1.2.1        mime_0.10         IRdisplay_1.0    
 [9] R6_2.5.0          cellranger_1.1.0  repr_1.1.3        backports_1.2.1  
[13] reprex_2.0.0      evaluate_0.14     httr_1.4.2        pillar_1.6.0     
[17] rlang_0.4.11      uuid_0.1-4        readxl_1.3.1      rstudioapi_0.13  
[21] htmlwidgets_1.5.3 munsell_0.5.0     shiny_1.6.0       broom_0.7.6      
[25] compiler_4.0.5    httpuv_1.6.1      modelr_0.1.8      pkgconfig_2.0.3  
[29] base64enc_0.1-3   htmltools_0.5.1.1 tidyselect_1.1.1  fansi_0.4.2      
[33] withr_2.4.2       crayon_1.4.1      dbplyr_2.1.1      later_1.2.0      
[37] grid_4.0.5        jsonlite_1.7.2    xtable_1.8-4      gtable_0.3.0     
[41] lifecycle_1.0.0   DBI_1.1.1         magrittr_2.0.1    scales_1.1.1     
[45] cli_2.5.0         stringi_1.6.1     fs_1.5.0          promises_1.2.0.1 
[49] xml2_1.3.2        ellipsis_0.3.2    generics_0.1.0    vctrs_0.3.8      
[53] IRkernel_1.2      tools_4.0.5       glue_1.4.2        hms_1.0.0        
[57] parallel_4.0.5    fastmap_1.1.0     yaml_2.2.1        colorspace_2.0-1 
[61] rvest_1.0.0       pbdZMQ_0.3-5      haven_2.4.1  

Yang

Next Official Release

When do we want to push the next official release to CRAN? What sort of roadmap? Should it b1 0.1.2 or 0.2? We've added a lot of great features and I'd love to get it out to CRAN for people to use 😄

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.