diff --git a/.github/workflows/docker_build_push.yml b/.github/workflows/docker_build_push.yml
new file mode 100644
index 0000000..e1ab6ed
--- /dev/null
+++ b/.github/workflows/docker_build_push.yml
@@ -0,0 +1,45 @@
+name: DockerHub build and push
+
+on:
+ push:
+ tags:
+ - 'd*'
+ - 'v*'
+
+jobs:
+ push_to_registry:
+ name: Push Docker image to Docker Hub
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - dockerfile: ./Dockerfile
+ image: jinlongru/deepsmirud_web
+ permissions:
+ contents: read
+ packages: write
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v3
+
+ - name: Log in to Docker Hub
+ uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
+ with:
+ username: ${{ secrets.DOCKER_USER }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+
+ - name: Extract metadata (tags, labels) for Docker
+ id: meta
+ uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
+ with:
+ images: ${{ matrix.image }}
+
+ - name: Build and push Docker image
+ uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
+ with:
+ context: "."
+ file: ${{ matrix.dockerfile }}
+ push: true
+ tags: ${{ steps.meta.outputs.tags }}
+ labels: ${{ steps.meta.outputs.labels }}
\ No newline at end of file
diff --git a/.github/workflows/shinyapps_io.yml b/.github/workflows/shinyapps_io.yml
new file mode 100644
index 0000000..0ba3261
--- /dev/null
+++ b/.github/workflows/shinyapps_io.yml
@@ -0,0 +1,62 @@
+name: deploy shinyapps.io
+
+on:
+ push:
+ tags:
+ - 'shiny*'
+
+jobs:
+ shinyapps:
+
+ runs-on: ubuntu-latest
+ timeout-minutes: 90
+
+ env:
+ RENV_PATHS_ROOT: ~/.local/share/renv
+ SHINY_ACCOUNT: ${{ secrets.SHINY_ACCOUNT }}
+ SHINY_TOKEN: ${{ secrets.SHINY_TOKEN }}
+ SHINY_SECRET: ${{ secrets.SHINY_SECRET }}
+
+ steps:
+
+ # Check out code
+ - name: Checkout
+ uses: actions/checkout@v3
+
+ - name: R setup
+ uses: r-lib/actions/setup-r@v2
+ with:
+ # don't reinstall R
+ install-r: false
+ # use RStudio's CRAN mirror with precompiled binaries
+ use-public-rspm: true
+
+ - name: Install system dependencies
+ run: |
+ sudo apt-get update -y
+ sudo apt-get install -y libcurl4-openssl-dev
+ sudo apt-get install -y libssl-dev
+ sudo apt-get install -y libgsl-dev
+ sudo apt-get install -y libclang-dev
+
+ - name: Cache packages
+ uses: actions/cache@v3
+ with:
+ path: ${{ env.RENV_PATHS_ROOT }}
+ key: ${{ runner.os }}-renv-${{ hashFiles('**/renv.lock') }}
+ restore-keys: |
+ ${{ runner.os }}-renv-
+
+ - name: Restore packages
+ shell: Rscript {0}
+ run: |
+ if (!requireNamespace("renv", quietly = TRUE)) install.packages("renv")
+ renv::restore()
+
+ - name: Deploy to shinyapps.io
+ run: |
+ install.packages("rsconnect")
+ rsconnect::setAccountInfo(name="${{secrets.SHINY_ACC_NAME}}", token="${{secrets.TOKEN}}", secret="${{secrets.SECRET}}")
+ rsconnect::deployApp(appName = 'viroprofiler-viewer')
+ shell: Rscript {0}
+
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 7568895..5c090b9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,27 @@
-FROM --platform=linux/amd64 rocker/tidyverse:4.2.0
+FROM rocker/shiny-verse:4.2
LABEL author="Jinlong Ru"
-RUN R -e 'install.packages(c("remotes", "argparser"), repos="https://cloud.r-project.org/")'
-RUN R -e 'remotes::install_github("Jasonlinchina/RCSM")'
+# copy the app to the image
+ADD app /srv/shiny-server/
+COPY renv* /srv/shiny-server/
+
+WORKDIR /srv/shiny-server/
+
+RUN apt-get update && apt-get install -y \
+ libcurl4-gnutls-dev \
+ libssl-dev \
+ libgsl-dev \
+ libclang-dev
+
+# install R packages using renv
+RUN R -e "install.packages('renv')"
+RUN R -e "install.packages('Matrix', version='1.5-1')"
+RUN R -e "renv::install()"
+
+
+# select port
+EXPOSE 3838
+
+# run app
+CMD ["R", "-e", "shiny::runApp('/srv/shiny-server', host = '0.0.0.0', port = 3838)"]
diff --git a/R/data4heatmap.R b/R/data4heatmap.R
index 050341d..91409b8 100644
--- a/R/data4heatmap.R
+++ b/R/data4heatmap.R
@@ -1,6 +1,9 @@
+library(here)
+prj_path <- here()
+dpath <- here(prj_path, "data")
load(here(prj_path, "data/row_col_order.Rdata"))
-cmap_g1 <- readRDS(here(dpath, "GSEAweight1Score.rds"))
+cmap_g1 <- readRDS(here(dpath, "main/GSEAweight1Score.rds"))
cmap_rst <- cmap_g1
ftitle <- "GSEAweight1"
diff --git a/README.md b/README.md
index b12fd5e..621c23c 100644
--- a/README.md
+++ b/README.md
@@ -4,23 +4,52 @@
-The goal of DeepsmirUD_web is to ...
+Source code of the web interface of [DeepsmirUD](https://github.com/2003100127/deepsmirud).
-## Installation
+## How to run
-You can install the development version of DeepsmirUD_web from [GitHub](https://github.com/rujinlong/DeepsmirUD_web) with:
+Due to the computation resource limitation of the cloud service, it is
+highly recommened to run DeepsmirUD_web on your local computer. You
+could use one of following approaches,
-``` r
-# install.packages("devtools")
-devtools::install_github("rujinlong/DeepsmirUD_web")
+### Using Docker image (recommended)
+
+``` sh
+docker run --rm jinlongru/deepsmirud_web
+
+# if the default port 3838 is occupied, you could set a new port by adding `-p` option
+docker run --rm -p 3838:3838 jinlongru/deepsmirud_web
+```
+
+Then open your browser and visit `http://localhost:3838/` to use the DeepsmirUD database.
+
+### Run from GitHub
+
+You need to manually install dependent packages in `renv.lock` file before running the following command.
+
+``` sh
+# You need to install dependent packages manually
+R -e "shiny::runGitHub('DeepsmirUD_web/app', 'rujinlong', subdir = 'app')"
```
-## Example
+### Run a cloned version
-This is a basic example which shows you how to solve a common problem:
+You need to manually install dependent packages in `renv.lock` file before running the following command.
-``` r
-library(DeepsmirUD_web)
-## basic example code
+``` sh
+git clone https://github.com/rujinlong/DeepsmirUD_web.git
+R -e "shiny::runApp('DeepsmirUD_web/app')"
```
+### Online version
+
+[https://rujinlong.shinyapps.io/DeepsmirUD/](https://rujinlong.shinyapps.io/DeepsmirUD/)
+
+Please note that the online version is not stable and may not work properly.
+
+## Citation
+
+If you use DeepsmirUD in your research, please cite the following paper:
+
+> Sun, Jianfeng, Jinlong Ru, Zihao Chen, Fei Qi, Lorenzo Ramos-Mucci, Suyuan Chen, Adam P. Cribbs, Li Deng, and Xia Wang. "DeepsmirUD: Precise prediction of regulatory effects on miRNA expression mediated by small molecular compounds using competing deep learning frameworks." bioRxiv (2022).
+
diff --git a/app/app.R b/app/app.R
index 76e4cc4..ff63d70 100644
--- a/app/app.R
+++ b/app/app.R
@@ -3,24 +3,16 @@ library(shinythemes)
library(bslib)
library(here)
library(tidyverse)
-library(readxl)
library(reactable)
-library(heatmaply)
library(corrplot)
library(knitr)
library(markdown)
+library(plotly)
+library(shinycssloaders)
# ========== DATA =========
-fpath1 <- "data/data1.xlsx"
-fpath2 <- "data/data2.xlsx"
-fp_disease <- "data/disease.xlsx"
-fp_cmap <- "data/main/GSEAweight1Score.rds"
-fp_d2sm_heatmap <- "data/data4heatmap.rds"
-fp_profile <- "data/profiles_deepsmirud.rdata"
-df_disease <- read_excel(fp_disease, sheet = "mircancer")
-disease_names <- sort(unique(df_disease$disease_name))
-df_cmap <- readRDS(fp_cmap)
-load(fp_profile)
+fp_d2sm_heatmap <- "data/d4heatmap.rds"
+dsud <- read_rds("data/dsud_simple.rds")
# ============ HOME ========
main_Home <- fixedPage(
@@ -44,59 +36,99 @@ mainP_Doc <- fixedPage(
)
)
-navP_Doc <- tabPanel("Tutorial", mainP_Doc)
+mainP_web1 <- fixedPage(
+ withMathJax(includeMarkdown("www/tutorial1.md")),
+ hr(),
+ div(
+ class = "footer",
+ includeHTML("www/footer.html")
+ )
+)
+
+mainP_web2 <- fixedPage(
+ withMathJax(includeMarkdown("www/tutorial2.md")),
+ hr(),
+ div(
+ class = "footer",
+ includeHTML("www/footer.html")
+ )
+)
+
+mainP_web3 <- fixedPage(
+ withMathJax(includeMarkdown("www/tutorial3.md")),
+ hr(),
+ div(
+ class = "footer",
+ includeHTML("www/footer.html")
+ )
+)
+
+navP_Doc <- navbarMenu("Tutorial",
+ tabPanel("Novel regulatory effect", mainP_web1),
+ tabPanel("Drug-cancer association", mainP_web2),
+ tabPanel("Heatmap of drug-cancer associations", mainP_web3),
+ tabPanel("Video", mainP_Doc))
+# navP_Doc <- tabPanel("Tutorial", mainP_Doc)
# =========== TABLE ===========
sideP_TB <- sidebarPanel(
- uiOutput("data1_sheets"),
- selectizeInput('ds1_col1', label= "Filter by small molecule (compound)", choices = NULL, selected = NULL),
- selectizeInput('ds1_col4', label= "Filter by miRNA", choices = NULL, selected = NULL),
+ radioButtons("db", "Select database", dsud$dbs, selected = "unappv_0.01_non_op_down"),
width = 3
)
mainP_TB <- mainPanel(
tabsetPanel(
- tabPanel("Search Psmir",
- reactableOutput("tbl_data1"),
- hr(),
- conditionalPanel(condition="input.data1_sheets != 'Sheet1'",
+ tabPanel("Database overview", withSpinner(reactableOutput("overview"), type=7)),
+ tabPanel("Search",
+ withSpinner(reactableOutput("tbl_data1"), type=7),
+ ),
+ tabPanel("Plots",
+ conditionalPanel(condition="input.db != 'Sheet1'",
h4("Score distributions of different models"),
- plotlyOutput("df1_replot"),
+ withSpinner(plotlyOutput("df1_replot"), type=7),
hr(),
fluidRow(
- column(width = 4, h4("Correlation of models"), plotOutput("df1_clustermap")),
- column(width = 8, h4("Histogram of model scores"), plotlyOutput("df1_hist"))
- ),
+ column(width = 4, h4("Correlation of models"), withSpinner(plotOutput("df1_clustermap"), type=7)),
+ column(width = 8, h4("Histogram of model scores"), withSpinner(plotlyOutput("df1_hist"), type=7))
+ ),
hr(),
h4("Score distributions of different models"),
- plotlyOutput("df1_replot2"),
- hr(),
- h4("Heatmap"),
- plotlyOutput("heatmapPlot", height="900px"),
+ withSpinner(plotlyOutput("df1_replot2"), type=7),
+ # ns = NS(NULL)
+ ),
+ ),
+ tabPanel("Heatmap",
+ conditionalPanel(condition="input.db != 'Sheet1'",
+ withSpinner(plotlyOutput("heatmapPlot", height="1200px"), type=7),
# ns = NS(NULL)
- ),
),
- tabPanel("Search Verse", reactableOutput("tbl_data2"))
+ ),
),
width = 9
)
-navP_TB <- tabPanel("Novel regulatory effect",
- sidebarLayout(sideP_TB, mainP_TB))
+mainP_verse <- fluidPage(withSpinner(reactableOutput("tbl_data2"), type=7))
+
+navP_TB <- navbarMenu("Novel regularoty effect",
+ tabPanel("Psmir", sidebarLayout(sideP_TB, mainP_TB)),
+ tabPanel("Verse", mainP_verse))
+
+# navP_TB <- tabPanel("Novel regulatory effect",
+# sidebarLayout(sideP_TB, mainP_TB))
# =========== DISEASE ============
sideP_disease <- sidebarPanel(
- uiOutput("disease"),
+ selectizeInput("disease", "Select a disease", dsud$disease_names, selected = "acute myeloid leukemia"),
p("Select a disease to show it's potential drugs."),
width = 3
)
mainP_disease <- mainPanel(
tabsetPanel(
- tabPanel("Table", h3("Connectivity score"), reactableOutput("cmap_score"), hr(), h3("miRNA profile of DeepsmirUD predictions"), reactableOutput("tbl_disease_dsu"), hr(), h3("miRNA profile of the disease"), reactableOutput("tbl_disease_cancer")),
- tabPanel("Drug-cancer association heatmap", fluidRow(plotlyOutput("heatmap_d2sm", height="800px")))
+ tabPanel("Table", h3("Connectivity score"), withSpinner(reactableOutput("cmap_score"), type=7), hr(), h3("miRNA profile of DeepsmirUD predictions"), withSpinner(reactableOutput("tbl_disease_dsu"), type=7), hr(), h3("miRNA profile of the disease"), withSpinner(reactableOutput("tbl_disease_cancer"), type=7)),
+ tabPanel("Drug-cancer association heatmap", fluidRow(withSpinner(plotlyOutput("heatmap_d2sm", height="800px"), type=7)))
),
width = 9
)
@@ -124,57 +156,26 @@ ui <- navbarPage("DeepsmirUD-web", navP_Home, navP_Doc, navP_TB, navP_Disease, n
server <- function(input, output, session) {
- # ========== Dynamic UI: TABLE side ==========
- output$data1_sheets <- renderUI({
- selectInput("data1_sheets", "Select database", excel_sheets(fpath1))
- })
-
- observeEvent(df_data1(), {
- updateSelectizeInput(session, "ds1_col1",
- choices=sort(unique(df_data1()[["Small molecule"]])),
- server=TRUE,
- selected=F)
- })
-
- observeEvent(df_data1(), {
- updateSelectizeInput(session, "ds1_col4",
- choices=sort(unique(df_data1()[["MiRNA"]])),
- server=TRUE,
- selected=F)
- })
-
- # ============ Dynamic UI: DISEASE side =========
- output$disease <- renderUI({
- selectInput("disease", "Select disease", disease_names)
- })
-
# ========== SEARCH ALL =============
# -------------- search all: data -----------
+ output$overview <- renderReactable({
+ reactable(dsud[["db_overview"]])
+ })
+
df_data1 <- reactive({
- df <- read_excel(fpath1, sheet = input$data1_sheets)
+ dsud[[input$db]][["df"]]
})
# ----------- search all: table ----------
output$tbl_data1 <- renderReactable({
df <- df_data1()
- if (input$data1_sheets == "Sheet1") {
+ if (input$db == "Sheet1") {
reactable(df)
} else {
df_show <- df %>%
- mutate(across(where(is.numeric), round, 4))
- if (input$ds1_col1 != "" & input$ds1_col4 != "") {
- print("cond1")
- df_show <- df_show %>% dplyr::filter(`Small molecule` %in% input$ds1_col1, MiRNA %in% input$ds1_col4)
- } else if (input$ds1_col1 == "" & input$ds1_col4 != "") {
- print("cond2")
- df_show <- df_show %>%dplyr::filter(MiRNA %in% input$ds1_col4)
- } else if (input$ds1_col1 != "" & input$ds1_col4 == "") {
- print("cond3")
- df_show <- df_show %>%dplyr::filter(`Small molecule` %in% input$ds1_col1)
- }
- df_show %>%
- # reactable()
+ mutate(across(where(is.numeric), round, 4)) %>%
reactable(searchable = TRUE,
+ defaultPageSize = 10,
sortable = TRUE,
filterable = TRUE,
highlight = TRUE,
@@ -192,71 +193,58 @@ server <- function(input, output, session) {
}
)))
}
- })
+ }) %>%
+ bindCache(input$db)
# ------------ search all: figures ------------
df4plot <- reactive({
- df_data1() %>%
- dplyr::select(c(AlexNet, BiRNN, RNN, Seq2Seq, CNN, ConvMixer64, DSConv, LSTMCNN, MobileNetV2, ResNet18, ResNet50, SCAResNet18))
- # save(df, file = "~/df.Rdata")
- })
+ dsud[[input$db]][["df4plot"]]
+ }) %>%
+ bindCache(input$db)
df1 <- reactive({
- df <- df4plot()
- df %>%
- pivot_longer(names_to = "variable",
- values_to = "value",
- cols = colnames(.)) %>%
- mutate(a = sort(rep(1:nrow(df), ncol(df))) - 1)
- })
+ dsud[[input$db]][["df1"]]
+ }) %>%
+ bindCache(input$db)
# heatmap
output$heatmapPlot <- renderPlotly({
- df4plot() %>% heatmaply()
- })
+ dsud[[input$db]][["heatmapPlot"]]
+ }) %>%
+ bindCache(input$db)
# df1: replot
output$df1_replot <- renderPlotly({
- p <- df1() %>%
- ggplot(aes(x=a, y=value, color=variable)) +
- geom_line() +
- facet_wrap("variable")
- ggplotly(p)
- })
+ dsud[[input$db]][["df1_replot"]]
+ }) %>%
+ bindCache(input$db)
# df1: hist
output$df1_hist <- renderPlotly({
- p <- df1() %>%
- mutate(value = log10(value)) %>%
- ggplot(aes(x=value, fill=variable)) +
- geom_histogram(binwidth = 1)
- ggplotly(p)
- })
+ dsud[[input$db]][["df1_hist"]]
+ }) %>%
+ bindCache(input$db)
# df1: clustermap
output$df1_clustermap <- renderPlot({
- corrplot(cor(df4plot()))
- })
+ corrplot(cor(dsud[[input$db]][["df4plot"]]))
+ }) %>%
+ bindCache(input$db)
# df1: replot2
output$df1_replot2 <- renderPlotly({
- p <- df1() %>%
- ggplot(aes(x=a, y=value, size = value, color = variable)) +
- geom_point(alpha=0.3)
- ggplotly(p)
- })
+ dsud[[input$db]][["df1_replot2"]]
+ }) %>%
+ bindCache(input$db)
# =========== SEARCH VERSE ==============
- # ----------- search verse: data --------------
- df_data2 <- reactive({df <- read_excel(fpath2)})
-
- # ----------- search verse: table -------------
output$tbl_data2 <- renderReactable({
- df <- df_data2() %>%
+ df <- dsud[["df_verse"]] %>%
mutate(across(where(is.numeric), round, 4))
reactable(df,
searchable = TRUE,
+ defaultPageSize = 15,
sortable = TRUE,
wrap = FALSE,
resizable = TRUE,
@@ -279,20 +267,22 @@ server <- function(input, output, session) {
# ================ DISEASE: navP ============
# ----------- disease: data -----------
subset_disease <- reactive({
- df_disease %>%
+ dsud[["df_disease"]] %>%
dplyr::filter(disease_name == input$disease)
- })
+ }) %>%
+ bindCache(input$disease)
subset_dsu <- reactive({
- read_excel(fp_disease, sheet = "deepsmirud") %>%
+ dsud[["df_deepsmirud"]] %>%
dplyr::filter(mirna_baseid %in% unique(subset_disease()$mirna_baseid)) %>%
mutate(across(where(is.numeric), round, 4))
- })
+ }) %>%
+ bindCache(input$disease)
data_cmap_score <- reactive({
- df_cmap[[input$disease]] %>%
+ dsud[["df_cmap"]][[input$disease]] %>%
rownames_to_column("colnames_new") %>%
- left_join(df_smname_mapping, by = "colnames_new") %>%
+ left_join(dsud[["df_smname_mapping"]], by = "colnames_new") %>%
dplyr::select(-c(colnames_new, pValue)) %>%
column_to_rownames("colnames_old") %>%
mutate(Score = Score / 2) %>% # normalize score to [-1,1]
@@ -300,13 +290,14 @@ server <- function(input, output, session) {
dplyr::filter(pAdjValue <= 0.05) %>%
arrange(Score) %>%
rownames_to_column("compound_name")
- })
+ }) %>%
+ bindCache(input$disease)
# ----------- disease vis: Connectivity score ----------
output$cmap_score <- renderReactable({
data_cmap_score() %>%
# mutate(baidu=compound_name) %>%
- reactable(searchable = TRUE,
+ reactable(searchable = FALSE,
sortable = TRUE,
filterable = TRUE,
highlight = TRUE,
@@ -320,14 +311,15 @@ server <- function(input, output, session) {
# htmltools::tags$a(href = url, target = "_blank", as.character(value))
# })
))
- })
+ }) %>%
+ bindCache(input$disease)
output$tbl_disease_dsu <- renderReactable({
tbl_sub <- subset_dsu()
tbl_parent <- tbl_sub %>%
dplyr::select(sm_name, cid) %>%
- filter(sm_name %in% unique(data_cmap_score()$compound_name)) %>%
- distinct()
+ dplyr::filter(sm_name %in% unique(data_cmap_score()$compound_name)) %>%
+ dplyr::distinct()
reactable(tbl_parent, filterable = T, details = function(index) {
cid_miRNA_profile <- tbl_sub[tbl_sub$sm_name == tbl_parent$sm_name[index],]
@@ -339,27 +331,30 @@ server <- function(input, output, session) {
highlight = T,
filterable = T,
sortable = T,
- searchable = T)
+ searchable = F)
)
})
- })
+ }) %>%
+ bindCache(input$disease)
output$tbl_disease_cancer <- renderReactable({
subset_disease() %>%
# dplyr::select(-pubmed_article) %>%
# distinct() %>%
- reactable(searchable = TRUE,
+ reactable(searchable = FALSE,
sortable = TRUE,
filterable = TRUE,
highlight = TRUE,
resizable = TRUE,
wrap = FALSE)
- })
+ }) %>%
+ bindCache(input$disease)
# ------------ disease: heatmap --------------
output$heatmap_d2sm <- renderPlotly({
readRDS(fp_d2sm_heatmap)
- })
+ }) %>%
+ bindCache(fp_d2sm_heatmap)
}
shinyApp(ui = ui, server = server)
diff --git a/app/data/d4heatmap.rds b/app/data/d4heatmap.rds
new file mode 100644
index 0000000..eef03c6
Binary files /dev/null and b/app/data/d4heatmap.rds differ
diff --git a/app/data/data4heatmap.rds b/app/data/data4heatmap.rds
deleted file mode 100644
index 701afa1..0000000
Binary files a/app/data/data4heatmap.rds and /dev/null differ
diff --git a/app/data/dsud_simple.rds b/app/data/dsud_simple.rds
new file mode 100644
index 0000000..8bfd8cf
Binary files /dev/null and b/app/data/dsud_simple.rds differ
diff --git a/app/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf b/app/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf
index deb0a20..e4ea146 100644
--- a/app/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf
+++ b/app/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf
@@ -5,9 +5,9 @@ account: rujinlong
server: shinyapps.io
hostUrl: https://api.shinyapps.io/v1
appId: 6295477
-bundleId: 6098648
+bundleId: 6649165
url: https://rujinlong.shinyapps.io/DeepsmirUD/
-when: 1657818328.2335
-lastSyncTime: 1657818328.23351
+when: 1671313587.82385
+lastSyncTime: 1671313587.82392
asMultiple: FALSE
asStatic: FALSE
diff --git a/app/www/dsFigure1.png b/app/www/dsFigure1.png
new file mode 100644
index 0000000..96720f1
Binary files /dev/null and b/app/www/dsFigure1.png differ
diff --git a/app/www/dsFigure2.png b/app/www/dsFigure2.png
new file mode 100644
index 0000000..ecfbf87
Binary files /dev/null and b/app/www/dsFigure2.png differ
diff --git a/app/www/dsFigure3.png b/app/www/dsFigure3.png
new file mode 100644
index 0000000..fe72d03
Binary files /dev/null and b/app/www/dsFigure3.png differ
diff --git a/app/www/dsFigure4.png b/app/www/dsFigure4.png
new file mode 100644
index 0000000..6751d5a
Binary files /dev/null and b/app/www/dsFigure4.png differ
diff --git a/app/www/dsFigure5.png b/app/www/dsFigure5.png
new file mode 100644
index 0000000..0172e74
Binary files /dev/null and b/app/www/dsFigure5.png differ
diff --git a/app/www/footer.html b/app/www/footer.html
index e3167fe..3e34a17 100644
--- a/app/www/footer.html
+++ b/app/www/footer.html
@@ -1,3 +1,3 @@
- Updated: 2022-07-14
+
Updated: 2022-12-17
diff --git a/app/www/hmFigure1.png b/app/www/hmFigure1.png
new file mode 100644
index 0000000..667251f
Binary files /dev/null and b/app/www/hmFigure1.png differ
diff --git a/app/www/hmFigure2.png b/app/www/hmFigure2.png
new file mode 100644
index 0000000..29792cb
Binary files /dev/null and b/app/www/hmFigure2.png differ
diff --git a/app/www/hmFigure3.png b/app/www/hmFigure3.png
new file mode 100644
index 0000000..158b0dc
Binary files /dev/null and b/app/www/hmFigure3.png differ
diff --git a/app/www/nrFigure1.png b/app/www/nrFigure1.png
new file mode 100644
index 0000000..de56108
Binary files /dev/null and b/app/www/nrFigure1.png differ
diff --git a/app/www/nrFigure10.png b/app/www/nrFigure10.png
new file mode 100644
index 0000000..ceffa40
Binary files /dev/null and b/app/www/nrFigure10.png differ
diff --git a/app/www/nrFigure2.png b/app/www/nrFigure2.png
new file mode 100644
index 0000000..b057d1f
Binary files /dev/null and b/app/www/nrFigure2.png differ
diff --git a/app/www/nrFigure3.png b/app/www/nrFigure3.png
new file mode 100644
index 0000000..b249bf3
Binary files /dev/null and b/app/www/nrFigure3.png differ
diff --git a/app/www/nrFigure4.png b/app/www/nrFigure4.png
new file mode 100644
index 0000000..d1d01b2
Binary files /dev/null and b/app/www/nrFigure4.png differ
diff --git a/app/www/nrFigure5.png b/app/www/nrFigure5.png
new file mode 100644
index 0000000..bf49c07
Binary files /dev/null and b/app/www/nrFigure5.png differ
diff --git a/app/www/nrFigure6.png b/app/www/nrFigure6.png
new file mode 100644
index 0000000..0f55e11
Binary files /dev/null and b/app/www/nrFigure6.png differ
diff --git a/app/www/nrFigure7.png b/app/www/nrFigure7.png
new file mode 100644
index 0000000..7cc972c
Binary files /dev/null and b/app/www/nrFigure7.png differ
diff --git a/app/www/nrFigure8.png b/app/www/nrFigure8.png
new file mode 100644
index 0000000..cf233f2
Binary files /dev/null and b/app/www/nrFigure8.png differ
diff --git a/app/www/nrFigure9.png b/app/www/nrFigure9.png
new file mode 100644
index 0000000..2a09492
Binary files /dev/null and b/app/www/nrFigure9.png differ
diff --git a/app/www/tutorial1.Rmd b/app/www/tutorial1.Rmd
new file mode 100644
index 0000000..f39a3c5
--- /dev/null
+++ b/app/www/tutorial1.Rmd
@@ -0,0 +1,76 @@
+---
+title: "Novel regulatory effect"
+output:
+ github_document
+always_allow_html: true
+---
+
+Through the "Novel regulatory effect" tab, users are directed to access the information of regulatory effects of small molecule-miRNA pairs curated from Psmir and Verse.
+
+## 1. Curated small molecule-miRNA pairs from Psmir
+
+### Step 1. Database selection
+
+It provides a series of databases, which are made by using different p-values to filter data of the Psmir database. The databases are 0.05_op, 0.05_non_op, appv_0.01_op_up, appv_0.01_op_down, appv_0.01_non_op_up, appv_0.01_non_op_down, unappv_0.01_op_up, unappv_0.01_op_down, unappv_0.01_non_op_up, and unappv_0.01_non_op_down. appv is for FDA-approved. unappv is for FDA-unapproved. op is for overlapped, representing a miRNA or a small molecule in these small molecule-miRNA pairs are overlapped with miRNAs or small molecules in the DeepsmirUD training dataset. After the ‘0.05_non_op’ database is selected, tables and plots are loaded as in **Figure 1**.
+
+
{width=95%}
+
+
+
+{width=95%}
+
+
+
+{width=95%}
+
+
+
+{width=95%}
+
+
+
+### Step 2. Applying filters
+
+#### (1). by small molecules
+
+In a certain database, all small molecules are listed at dropdown ‘Filter by small molecule (compound)’ (**Figure 5**).
+
+{width=95%}
+
+
+
+If we drag the table scroll bar rightmost, it shows that miR-106b is upregulated by vorinostat and miR-1 is downregulated by vorinostat (**Figure 6**).
+
+{width=95%}
+
+
+
+#### (2). by miRNAs
+
+Similarly, we can select one of the miRNAs in the selected database to filter small molecule-miRNA pairs. There are 259 pairs left after a miR-7 filter is applied (**Figure 7** and **Figure 8**).
+
+{width=95%}
+
+
+
+{width=95%}
+
+
+
+#### (3). by multiple conditions
+
+Deepsmir-Web also allows users to screen the regulation pairs with multiple conditions (**Figure 9**).
+
+{width=95%}
+
+
+
+## 2. Curated small molecule-miRNA pairs from Verse
+
+Similarly, for getting the regulatory effects of the Verse pairs users can apply as the same precedures as in Psmir.
+
+{width=95%}
+
+
+
+
diff --git a/app/www/tutorial1.md b/app/www/tutorial1.md
new file mode 100644
index 0000000..463b85b
--- /dev/null
+++ b/app/www/tutorial1.md
@@ -0,0 +1,178 @@
+Novel regulatory effect
+================
+
+Through the “Novel regulatory effect” tab, users are directed to access
+the information of regulatory effects of small molecule-miRNA pairs
+curated from Psmir and Verse.
+
+## 1. Curated small molecule-miRNA pairs from Psmir
+
+### Step 1. Database selection
+
+It provides a series of databases, which are made by using different
+p-values to filter data of the Psmir database. The databases are
+0.05_op, 0.05_non_op, appv_0.01_op_up, appv_0.01_op_down,
+appv_0.01_non_op_up, appv_0.01_non_op_down, unappv_0.01_op_up,
+unappv_0.01_op_down, unappv_0.01_non_op_up, and unappv_0.01_non_op_down.
+appv is for FDA-approved. unappv is for FDA-unapproved. op is for
+overlapped, representing a miRNA or a small molecule in these small
+molecule-miRNA pairs are overlapped with miRNAs or small molecules in
+the DeepsmirUD training dataset. After the ‘0.05_non_op’ database is
+selected, tables and plots are loaded as in **Figure 1**.
+
+
+
+
+
+Figure 1. Databases of predicted
+regulatory effects of the Psmir pairs
+
+
+
+
+
+
+
+
+
+
+
+Figure 2. Novel regulatory effect
+data
+
+
+
+
+
+
+
+
+
+
+Figure 3. Correlation matrix, histogram,
+and probability distribution plots
+
+
+
+
+
+
+
+
+
+
+Figure 4. Heatmap plot
+
+
+
+
+
+
+### Step 2. Applying filters
+
+#### (1). by small molecules
+
+In a certain database, all small molecules are listed at dropdown
+‘Filter by small molecule (compound)’ (**Figure 5**).
+
+
+
+
+
+Figure 5. Select small molecule-miRNA
+pairs by applying a small molecule filter ‘vorinostat’
+
+
+
+
+
+
+If we drag the table scroll bar rightmost, it shows that miR-106b is
+upregulated by vorinostat and miR-1 is downregulated by vorinostat
+(**Figure 6**).
+
+
+
+
+
+Figure 6. Regulation types of
+vorinostat-miRNA pairs
+
+
+
+
+
+
+#### (2). by miRNAs
+
+Similarly, we can select one of the miRNAs in the selected database to
+filter small molecule-miRNA pairs. There are 259 pairs left after a
+miR-7 filter is applied (**Figure 7** and **Figure 8**).
+
+
+
+
+
+Figure 7. Select small molecule-miRNA
+pairs by applying a miRNA filter.
+
+
+
+
+
+
+
+
+
+
+Figure 8. Regulation types of small
+molecule-miR-7 pairs.
+
+
+
+
+
+
+#### (3). by multiple conditions
+
+Deepsmir-Web also allows users to screen the regulation pairs with
+multiple conditions (**Figure 9**).
+
+
+
+
+
+Figure 9. Small molecule-miRNA pairs
+filtered by multiple conditions.
+
+
+
+
+
+
+## 2. Curated small molecule-miRNA pairs from Verse
+
+Similarly, for getting the regulatory effects of the Verse pairs users
+can apply as the same precedures as in Psmir.
+
+
+
+
+
+Figure 10. Regulatory effects of small
+molecule pairs curated from Verse.
+
+
+
+
+
diff --git a/app/www/tutorial2.Rmd b/app/www/tutorial2.Rmd
new file mode 100644
index 0000000..48c7002
--- /dev/null
+++ b/app/www/tutorial2.Rmd
@@ -0,0 +1,42 @@
+---
+title: "Drug-cancer association"
+output:
+ github_document
+always_allow_html: true
+---
+
+Drugs can be discovered using DeepsmirUD-Web. drug-cancer associations are built by calculating their connectivity scores, which requires a miRNA-disease database and our predicted up- and down-regulated small molecule-miRNA pairs. The final predicted associations involve a total of 107 cancers and 1343 small molecules. The resulting negative score suggests the pharmaceutical potential of a SM to treat a disease, while the positive score suggests a cognate perturbation profile between the SM and the disease.
+
+{width=95%}
+
+
+
+**Figure 1** displays a workbench. Starting from selecting a certain cancer disease in the left dropdown, users will be allowed to access all drug potentials of small molecules for treating this disease in the first table on the right panel. There are three columns, compound_name, Score, pAdjValue, representing small molecule names, connectivity scores, and adjust p-values. The connectivity scores are set in ascending order by default, corresponding to highly druglike small molecules for this disease.
+
+### Step 1. Selecting a disease
+
+{width=95%}
+
+
+
+For example, the colon cancer is selected, a total of 111 small molecules are listed. At the compound_name item, users can click on the small molecule names and see the Google search result about their introduction.
+
+### Step 2. Selecting a small molecule or miRNA
+
+Apart from providing the final drug choices in the first table, DeepsmirUD-Web gives two additional tables to access the regulation information of miRNAs related to the small molecule (**Figure 3**) and the disease (**Figure 4**). User can put a small molecule name in the ‘Connectivity score’ table as well as the ‘miRNA profile of DeepsmirUD predictions’ table.
+
+{width=95%}
+
+
+
+For example, if arsenic trioxide is put in, its miRNA profile predicted by DeepsmirUD will be listed in the ‘miRNA profile of DeepsmirUD predictions’ table (**Figure 3**).
+
+{width=95%}
+
+
+
+For example, if the has-let-7a miRNA is put in the ‘miRNA profile of the disease’ table, the regulation information of miRNA related to the disease will be listed (**Figure 5**).
+
+{width=95%}
+
+
diff --git a/app/www/tutorial2.md b/app/www/tutorial2.md
new file mode 100644
index 0000000..7ace0dc
--- /dev/null
+++ b/app/www/tutorial2.md
@@ -0,0 +1,109 @@
+Drug-cancer association
+================
+
+Drugs can be discovered using DeepsmirUD-Web. drug-cancer associations
+are built by calculating their connectivity scores, which requires a
+miRNA-disease database and our predicted up- and down-regulated small
+molecule-miRNA pairs. The final predicted associations involve a total
+of 107 cancers and 1343 small molecules. The resulting negative score
+suggests the pharmaceutical potential of a SM to treat a disease, while
+the positive score suggests a cognate perturbation profile between the
+SM and the disease.
+
+
+
+
+
+Figure 1. Drug-cancer
+associations
+
+
+
+
+
+
+**Figure 1** displays a workbench. Starting from selecting a certain
+cancer disease in the left dropdown, users will be allowed to access all
+drug potentials of small molecules for treating this disease in the
+first table on the right panel. There are three columns, compound_name,
+Score, pAdjValue, representing small molecule names, connectivity
+scores, and adjust p-values. The connectivity scores are set in
+ascending order by default, corresponding to highly druglike small
+molecules for this disease.
+
+### Step 1. Selecting a disease
+
+
+
+
+
+Figure 2. Discovering drugs for colon
+cancer.
+
+
+
+
+
+
+For example, the colon cancer is selected, a total of 111 small
+molecules are listed. At the compound_name item, users can click on the
+small molecule names and see the Google search result about their
+introduction.
+
+### Step 2. Selecting a small molecule or miRNA
+
+Apart from providing the final drug choices in the first table,
+DeepsmirUD-Web gives two additional tables to access the regulation
+information of miRNAs related to the small molecule (**Figure 3**) and
+the disease (**Figure 4**). User can put a small molecule name in the
+‘Connectivity score’ table as well as the ‘miRNA profile of DeepsmirUD
+predictions’ table.
+
+
+
+
+
+Figure 3. Details of selecting arsenic
+trioxide for treating colon cancer.
+
+
+
+
+
+
+For example, if arsenic trioxide is put in, its miRNA profile predicted
+by DeepsmirUD will be listed in the ‘miRNA profile of DeepsmirUD
+predictions’ table (**Figure 3**).
+
+
+
+
+
+Figure 4. Regulation information of
+miRNAs related to colon cancer.
+
+
+
+
+
+
+For example, if the has-let-7a miRNA is put in the ‘miRNA profile of the
+disease’ table, the regulation information of miRNA related to the
+disease will be listed (**Figure 5**).
+
+
+
+
+
+Figure 5. Regulation information of
+has-let-7a related to colon cancer.
+
+
+
+
+
diff --git a/app/www/tutorial3.Rmd b/app/www/tutorial3.Rmd
new file mode 100644
index 0000000..518a220
--- /dev/null
+++ b/app/www/tutorial3.Rmd
@@ -0,0 +1,24 @@
+---
+title: "Heatmap of drug-cancer associations"
+output:
+ github_document
+always_allow_html: true
+---
+
+The heatmap is accessible through choosing ‘Drug-cancer ssociation heatmap’ under navigation mark ‘Drug-cancer association’. It records the connectivity scores of 107x1343 combinations of small molecules and cancer diseases. High drug potential is in blue and low drug potential is in red.
+
+{width=95%}
+
+
+
+Users can hover the cursor over any place in the heatmap and will see the connectivity score of a drug to treat a certain disease. For example, **Figure 1** shows a connectivity score of -1 of anabasine to treat lung cancer.
+
+{width=95%}
+
+
+
+Users can select a certain area (**Figure 3**) in blue to look into details since this area stores high-confidence drugs for disease treatment. The area will be enlarged to ease the further check (**Figure 3**).
+
+{width=95%}
+
+
diff --git a/app/www/tutorial3.md b/app/www/tutorial3.md
new file mode 100644
index 0000000..4af5517
--- /dev/null
+++ b/app/www/tutorial3.md
@@ -0,0 +1,57 @@
+Heatmap of drug-cancer associations
+================
+
+The heatmap is accessible through choosing ‘Drug-cancer ssociation
+heatmap’ under navigation mark ‘Drug-cancer association’. It records the
+connectivity scores of 107x1343 combinations of small molecules and
+cancer diseases. High drug potential is in blue and low drug potential
+is in red.
+
+
+
+
+
+Figure 1. Heatmap of drug-cancer
+associations
+
+
+
+
+
+
+Users can hover the cursor over any place in the heatmap and will see
+the connectivity score of a drug to treat a certain disease. For
+example, **Figure 1** shows a connectivity score of -1 of anabasine to
+treat lung cancer.
+
+
+
+
+
+Figure 2. Select a certain
+area.
+
+
+
+
+
+
+Users can select a certain area (**Figure 3**) in blue to look into
+details since this area stores high-confidence drugs for disease
+treatment. The area will be enlarged to ease the further check (**Figure
+3**).
+
+
+
+
+
+Figure 3. Zoom-in of a certain
+area.
+
+
+
+
+
diff --git a/renv.lock b/renv.lock
index c1216a9..3847c0a 100644
--- a/renv.lock
+++ b/renv.lock
@@ -1,6 +1,6 @@
{
"R": {
- "Version": "4.1.2",
+ "Version": "4.2.1",
"Repositories": [
{
"Name": "CRAN",
@@ -11,18 +11,18 @@
"Packages": {
"DBI": {
"Package": "DBI",
- "Version": "1.1.2",
+ "Version": "1.1.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "dcd1743af4336156873e3ce3c950b8b9",
+ "Hash": "b2866e62bab9378c3cc9476a1954226b",
"Requirements": []
},
"DT": {
"Package": "DT",
- "Version": "0.23",
+ "Version": "0.26",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "d8f1498dc47763ce4647c8d03214d30b",
+ "Hash": "c66a72c4d3499e14ae179ccb742e740a",
"Requirements": [
"crosstalk",
"htmltools",
@@ -35,18 +35,18 @@
},
"MASS": {
"Package": "MASS",
- "Version": "7.3-57",
+ "Version": "7.3-58.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "71476c1d88d1ebdf31580e5a257d5d31",
+ "Hash": "762e1804143a332333c054759f89a706",
"Requirements": []
},
"Matrix": {
"Package": "Matrix",
- "Version": "1.4-1",
+ "Version": "1.5-1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "699c47c606293bdfbc9fd78a93c9c8fe",
+ "Hash": "539dc0c0c05636812f1080f473d2c177",
"Requirements": [
"lattice"
]
@@ -59,19 +59,6 @@
"Hash": "470851b6d5d0ac559e9d01bb352b4021",
"Requirements": []
},
- "RCSM": {
- "Package": "RCSM",
- "Version": "0.3.0",
- "Source": "GitHub",
- "RemoteType": "github",
- "RemoteHost": "api.github.com",
- "RemoteRepo": "RCSM",
- "RemoteUsername": "Jasonlinchina",
- "RemoteRef": "HEAD",
- "RemoteSha": "8f1d614ffd400225566e93f16d95c824e8a1606b",
- "Hash": "c05ef24dd0da189cd03a66aa4eaecb24",
- "Requirements": []
- },
"RColorBrewer": {
"Package": "RColorBrewer",
"Version": "1.1-3",
@@ -82,18 +69,18 @@
},
"Rcpp": {
"Package": "Rcpp",
- "Version": "1.0.8.3",
+ "Version": "1.0.9",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "32e79b908fda56ee57fe518a8d37b864",
+ "Hash": "e9c08b94391e9f3f97355841229124f2",
"Requirements": []
},
"TSP": {
"Package": "TSP",
- "Version": "1.2-0",
+ "Version": "1.2-1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "899b641332e39cac5344448d882c3829",
+ "Hash": "ecd45bbf66cdc3bd4554154de9d253ab",
"Requirements": [
"foreach"
]
@@ -171,10 +158,10 @@
},
"broom": {
"Package": "broom",
- "Version": "0.8.0",
+ "Version": "1.0.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "fe13cb670e14da57fd7a466578db8ce5",
+ "Hash": "c90ff735b7812b60f067a3f7a3b4de63",
"Requirements": [
"backports",
"dplyr",
@@ -191,14 +178,16 @@
},
"bslib": {
"Package": "bslib",
- "Version": "0.3.1",
+ "Version": "0.4.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "56ae7e1987b340186a8a5a157c2ec358",
+ "Hash": "be5ee090716ce1671be6cd5d7c34d091",
"Requirements": [
+ "cachem",
"htmltools",
"jquerylib",
"jsonlite",
+ "memoise",
"rlang",
"sass"
]
@@ -216,10 +205,10 @@
},
"callr": {
"Package": "callr",
- "Version": "3.7.0",
+ "Version": "3.7.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "461aa75a11ce2400245190ef5d3995df",
+ "Hash": "358689cac9fe93b1bb3a19088d2dbed8",
"Requirements": [
"R6",
"processx"
@@ -238,13 +227,11 @@
},
"cli": {
"Package": "cli",
- "Version": "3.3.0",
+ "Version": "3.4.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "23abf173c2b783dcc43379ab9bba00ee",
- "Requirements": [
- "glue"
- ]
+ "Hash": "0d297d01734d2bcea40197bd4971a764",
+ "Requirements": []
},
"clipr": {
"Package": "clipr",
@@ -256,10 +243,10 @@
},
"cluster": {
"Package": "cluster",
- "Version": "2.1.3",
+ "Version": "2.1.4",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "c5f8447373ec2a0f593c694024e5b7ee",
+ "Hash": "5edbbabab6ce0bf7900a74fd4358628e",
"Requirements": []
},
"codetools": {
@@ -280,10 +267,10 @@
},
"commonmark": {
"Package": "commonmark",
- "Version": "1.8.0",
+ "Version": "1.8.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "2ba81b120c1655ab696c935ef33ea716",
+ "Hash": "b6e3e947d1d7ebf3d2bdcea1bde63fe7",
"Requirements": []
},
"conflicted": {
@@ -307,18 +294,18 @@
},
"cpp11": {
"Package": "cpp11",
- "Version": "0.4.2",
+ "Version": "0.4.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "fa53ce256cd280f468c080a58ea5ba8c",
+ "Hash": "ed588261931ee3be2c700d22e94a29ab",
"Requirements": []
},
"crayon": {
"Package": "crayon",
- "Version": "1.5.1",
+ "Version": "1.5.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "8dc45fd8a1ee067a92b85ef274e66d6a",
+ "Hash": "e8a1e41acf02548751f45c718d55aa6a",
"Requirements": []
},
"credentials": {
@@ -350,26 +337,26 @@
},
"curl": {
"Package": "curl",
- "Version": "4.3.2",
+ "Version": "4.3.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "022c42d49c28e95d69ca60446dbabf88",
+ "Hash": "0eb86baa62f06e8855258fa5a8048667",
"Requirements": []
},
"data.table": {
"Package": "data.table",
- "Version": "1.14.2",
+ "Version": "1.14.4",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "36b67b5adf57b292923f5659f5f0c853",
+ "Hash": "b9b912b41064aaa79270f24d123c887d",
"Requirements": []
},
"dbplyr": {
"Package": "dbplyr",
- "Version": "2.2.0",
+ "Version": "2.2.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "a6e4cc7b658d043806bc559ef42a1d2a",
+ "Hash": "f6c7eb9617e4d2a86bb7182fff99c805",
"Requirements": [
"DBI",
"R6",
@@ -391,10 +378,10 @@
},
"dendextend": {
"Package": "dendextend",
- "Version": "1.15.2",
+ "Version": "1.16.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "02dfbb2e6e66bbdc8eb245106366ccbf",
+ "Hash": "a4b6b1c544c040d8ca640f466f146e1f",
"Requirements": [
"ggplot2",
"magrittr",
@@ -403,10 +390,10 @@
},
"desc": {
"Package": "desc",
- "Version": "1.4.1",
+ "Version": "1.4.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "eebd27ee58fcc58714eedb7aa07d8ad1",
+ "Hash": "6b9602c7ebbe87101a9c8edb6e8b6d21",
"Requirements": [
"R6",
"cli",
@@ -415,18 +402,18 @@
},
"digest": {
"Package": "digest",
- "Version": "0.6.29",
+ "Version": "0.6.30",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "cf6b206a045a684728c3267ef7596190",
+ "Hash": "bf1cd206a5d170d132ef75c7537b9bdb",
"Requirements": []
},
"dplyr": {
"Package": "dplyr",
- "Version": "1.0.9",
+ "Version": "1.0.10",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "f0bda1627a7f5d3f9a0b5add931596ac",
+ "Hash": "539412282059f7f0c07295723d23f987",
"Requirements": [
"R6",
"generics",
@@ -442,10 +429,10 @@
},
"dtplyr": {
"Package": "dtplyr",
- "Version": "1.2.1",
+ "Version": "1.2.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "f5d195cd5fcc0a77499d9da698ef2ea3",
+ "Hash": "c5f8828a0b459a703db190b001ad4818",
"Requirements": [
"crayon",
"data.table",
@@ -483,10 +470,10 @@
},
"evaluate": {
"Package": "evaluate",
- "Version": "0.15",
+ "Version": "0.17",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "699a7a93d08c962d9f8950b2d7a227f1",
+ "Hash": "9171b012a55a1ef53f1442b1d798a3b4",
"Requirements": []
},
"fansi": {
@@ -499,10 +486,10 @@
},
"farver": {
"Package": "farver",
- "Version": "2.1.0",
+ "Version": "2.1.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "c98eb5133d9cb9e1622b8691487f11bb",
+ "Hash": "8106d78941f34855c440ddb946b8f7a5",
"Requirements": []
},
"fastmap": {
@@ -515,10 +502,10 @@
},
"fontawesome": {
"Package": "fontawesome",
- "Version": "0.2.2",
+ "Version": "0.3.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "55624ed409e46c5f358b2c060be87f67",
+ "Hash": "a36c4a3eade472039a3ec8cb824e6dc4",
"Requirements": [
"htmltools",
"rlang"
@@ -526,15 +513,19 @@
},
"forcats": {
"Package": "forcats",
- "Version": "0.5.1",
+ "Version": "0.5.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "81c3244cab67468aac4c60550832655d",
+ "Hash": "9d95bc88206321cd1bc98480ecfd74bb",
"Requirements": [
+ "cli",
"ellipsis",
+ "glue",
+ "lifecycle",
"magrittr",
"rlang",
- "tibble"
+ "tibble",
+ "withr"
]
},
"foreach": {
@@ -558,10 +549,10 @@
},
"gargle": {
"Package": "gargle",
- "Version": "1.2.0",
+ "Version": "1.2.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "9d234e6a87a6f8181792de6dc4a00e39",
+ "Hash": "cca71329ad88e21267f09255d3f008c2",
"Requirements": [
"cli",
"fs",
@@ -586,18 +577,18 @@
},
"generics": {
"Package": "generics",
- "Version": "0.1.2",
+ "Version": "0.1.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "177475892cf4a55865868527654a7741",
+ "Hash": "15e9634c0fcd294799e9b2e929ed1b86",
"Requirements": []
},
"gert": {
"Package": "gert",
- "Version": "1.6.0",
+ "Version": "1.9.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "98c014c4c933f23ea5a0321a4d0b588b",
+ "Hash": "9a091a6d2fb91e43afd4337e2dcef2e7",
"Requirements": [
"askpass",
"credentials",
@@ -628,10 +619,10 @@
},
"gh": {
"Package": "gh",
- "Version": "1.3.0",
+ "Version": "1.3.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "38c2580abbda249bd6afeec00d14f531",
+ "Hash": "b6a12054ee13dce0f6696c019c10e539",
"Requirements": [
"cli",
"gitcreds",
@@ -642,10 +633,10 @@
},
"gitcreds": {
"Package": "gitcreds",
- "Version": "0.1.1",
+ "Version": "0.1.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "f3aefccc1cc50de6338146b62f115de8",
+ "Hash": "ab08ac61f3e1be454ae21911eb8bc2fe",
"Requirements": []
},
"glue": {
@@ -681,10 +672,10 @@
},
"googlesheets4": {
"Package": "googlesheets4",
- "Version": "1.0.0",
+ "Version": "1.0.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "9a6564184dc4a81daea4f1d7ce357c6a",
+ "Hash": "3b449d5292327880fc6cb61d0b2e9063",
"Requirements": [
"cellranger",
"cli",
@@ -714,18 +705,18 @@
},
"gtable": {
"Package": "gtable",
- "Version": "0.3.0",
+ "Version": "0.3.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "ac5c6baf7822ce8732b343f14c072c4d",
+ "Hash": "36b4265fb818f6a342bed217549cd896",
"Requirements": []
},
"haven": {
"Package": "haven",
- "Version": "2.5.0",
+ "Version": "2.5.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "e3058e4ac77f4fa686f68a1838d5b715",
+ "Hash": "5b45a553fca2217a07b6f9c843304c44",
"Requirements": [
"cli",
"cpp11",
@@ -741,10 +732,10 @@
},
"heatmaply": {
"Package": "heatmaply",
- "Version": "1.3.0",
+ "Version": "1.4.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "7734720c8932fbaf8c2ff6833be6e351",
+ "Hash": "c731e66facc49c5b7854a09650a2ae21",
"Requirements": [
"RColorBrewer",
"assertthat",
@@ -784,10 +775,10 @@
},
"hms": {
"Package": "hms",
- "Version": "1.1.1",
+ "Version": "1.1.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "5b8a2dd0fdbe2ab4f6081e6c7be6dfca",
+ "Hash": "41100392191e1244b887878b533eea91",
"Requirements": [
"ellipsis",
"lifecycle",
@@ -798,10 +789,10 @@
},
"htmltools": {
"Package": "htmltools",
- "Version": "0.5.2",
+ "Version": "0.5.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "526c484233f42522278ab06fb185cb26",
+ "Hash": "6496090a9e00f8354b811d1a2d47b566",
"Requirements": [
"base64enc",
"digest",
@@ -823,10 +814,10 @@
},
"httpuv": {
"Package": "httpuv",
- "Version": "1.6.5",
+ "Version": "1.6.6",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "97fe71f0a4a1c9890e6c2128afa04bc0",
+ "Hash": "fd090e236ae2dc0f0cdf33a9ec83afb6",
"Requirements": [
"R6",
"Rcpp",
@@ -836,10 +827,10 @@
},
"httr": {
"Package": "httr",
- "Version": "1.4.3",
+ "Version": "1.4.4",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "88d1b310583777edf01ccd1216fb0b2b",
+ "Hash": "57557fac46471f0dbbf44705cc6a5c8c",
"Requirements": [
"R6",
"curl",
@@ -869,10 +860,10 @@
},
"isoband": {
"Package": "isoband",
- "Version": "0.2.5",
+ "Version": "0.2.6",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "7ab57a6de7f48a8dc84910d1eca42883",
+ "Hash": "cfdea9dea85c1a973991c8cbe299f4da",
"Requirements": []
},
"iterators": {
@@ -895,18 +886,18 @@
},
"jsonlite": {
"Package": "jsonlite",
- "Version": "1.8.0",
+ "Version": "1.8.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "d07e729b27b372429d42d24d503613a0",
+ "Hash": "8b1bd0be62956f2a6b91ce84fac79a45",
"Requirements": []
},
"knitr": {
"Package": "knitr",
- "Version": "1.39",
+ "Version": "1.40",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "029ab7c4badd3cf8af69016b2ba27493",
+ "Hash": "caea8b0f899a0b1738444b9bc47067e7",
"Requirements": [
"evaluate",
"highr",
@@ -952,11 +943,12 @@
},
"lifecycle": {
"Package": "lifecycle",
- "Version": "1.0.1",
+ "Version": "1.0.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "a6b6d352e3ed897373ab19d8395c98d0",
+ "Hash": "001cecbeac1cff9301bdc3775ee46a86",
"Requirements": [
+ "cli",
"glue",
"rlang"
]
@@ -980,6 +972,17 @@
"Hash": "7ce2733a9826b3aeb1775d56fd305472",
"Requirements": []
},
+ "markdown": {
+ "Package": "markdown",
+ "Version": "1.2",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Hash": "295690cfe43b7ea23de079b52c134b13",
+ "Requirements": [
+ "mime",
+ "xfun"
+ ]
+ },
"memoise": {
"Package": "memoise",
"Version": "2.0.1",
@@ -993,10 +996,10 @@
},
"mgcv": {
"Package": "mgcv",
- "Version": "1.8-40",
+ "Version": "1.8-41",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "c6b2fdb18cf68ab613bd564363e1ba0d",
+ "Hash": "6b3904f13346742caa3e82dd0303d4ad",
"Requirements": [
"Matrix",
"nlme"
@@ -1012,10 +1015,10 @@
},
"modelr": {
"Package": "modelr",
- "Version": "0.1.8",
+ "Version": "0.1.9",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "9fd59716311ee82cba83dc2826fc5577",
+ "Hash": "ce70fef14a09fd1cab1f3792a0e210c1",
"Requirements": [
"broom",
"magrittr",
@@ -1039,65 +1042,40 @@
},
"nlme": {
"Package": "nlme",
- "Version": "3.1-157",
+ "Version": "3.1-160",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "dbca60742be0c9eddc5205e5c7ca1f44",
+ "Hash": "02e3c6e7df163aafa8477225e6827bc5",
"Requirements": [
"lattice"
]
},
"openssl": {
"Package": "openssl",
- "Version": "2.0.2",
+ "Version": "2.0.4",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "6d3bef2e305f55c705c674653c7d7d3d",
+ "Hash": "e86c5ffeb8474a9e03d75f5d2919683e",
"Requirements": [
"askpass"
]
},
"packrat": {
"Package": "packrat",
- "Version": "0.8.0",
+ "Version": "0.8.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "15517f0f57129e93fba4cf40dcf88c2d",
+ "Hash": "d84055adcb6bb1f4f0ce8c5f235bc328",
"Requirements": []
},
- "patchwork": {
- "Package": "patchwork",
- "Version": "1.1.1",
- "Source": "Repository",
- "Repository": "CRAN",
- "Hash": "c446b30cb33ec125ff02588b60660ccb",
- "Requirements": [
- "ggplot2",
- "gtable"
- ]
- },
- "pheatmap": {
- "Package": "pheatmap",
- "Version": "1.0.12",
- "Source": "Repository",
- "Repository": "CRAN",
- "Hash": "db1fb0021811b6693741325bbe916e58",
- "Requirements": [
- "RColorBrewer",
- "gtable",
- "scales"
- ]
- },
"pillar": {
"Package": "pillar",
- "Version": "1.7.0",
+ "Version": "1.8.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "51dfc97e1b7069e9f7e6f83f3589c22e",
+ "Hash": "f2316df30902c81729ae9de95ad5a608",
"Requirements": [
"cli",
- "crayon",
- "ellipsis",
"fansi",
"glue",
"lifecycle",
@@ -1164,10 +1142,10 @@
},
"processx": {
"Package": "processx",
- "Version": "3.6.0",
+ "Version": "3.7.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "4acae60adac4791e8c8833d8494f270d",
+ "Hash": "f91df0f5f31ffdf88bc0b624f5ebab0f",
"Requirements": [
"R6",
"ps"
@@ -1188,7 +1166,7 @@
},
"projthis": {
"Package": "projthis",
- "Version": "0.0.0.9024",
+ "Version": "0.0.0.9025",
"Source": "GitHub",
"Remotes": "r-lib/testthat",
"RemoteType": "github",
@@ -1196,8 +1174,8 @@
"RemoteRepo": "projthis",
"RemoteUsername": "ijlyttle",
"RemoteRef": "HEAD",
- "RemoteSha": "0af4dac21057cd54af9ce5a1a058d0e0ac1adde9",
- "Hash": "a0f08aed00c50824ed94767ef1794176",
+ "RemoteSha": "901f08fb863004de78e49175e5ee6a58776f44bb",
+ "Hash": "924b974b6e2b0149adb0d5b1ae1fd27f",
"Requirements": [
"assertthat",
"callr",
@@ -1236,18 +1214,18 @@
},
"ps": {
"Package": "ps",
- "Version": "1.7.0",
+ "Version": "1.7.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "eef74b13f32cae6bb0d495e53317c44c",
+ "Hash": "8b93531308c01ad0e56d9eadcc0c4fcd",
"Requirements": []
},
"purrr": {
"Package": "purrr",
- "Version": "0.3.4",
+ "Version": "0.3.5",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "97def703420c8ab10d8f0e6c72101e02",
+ "Hash": "54842a2443c76267152eface28d9e90a",
"Requirements": [
"magrittr",
"rlang"
@@ -1255,10 +1233,10 @@
},
"qap": {
"Package": "qap",
- "Version": "0.1-1",
+ "Version": "0.1-2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "753e69deffc32851121955ea150ecf8d",
+ "Hash": "21c4fc168ebf32add2db6a358ce4714c",
"Requirements": []
},
"rappdirs": {
@@ -1295,10 +1273,10 @@
},
"readr": {
"Package": "readr",
- "Version": "2.1.2",
+ "Version": "2.1.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "9c59de1357dc209868b5feb5c9f0fe2f",
+ "Hash": "2dfbfc673ccb3de3d8836b4b3bd23d14",
"Requirements": [
"R6",
"cli",
@@ -1315,10 +1293,10 @@
},
"readxl": {
"Package": "readxl",
- "Version": "1.4.0",
+ "Version": "1.4.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "170c35f745563bb307e963bde0197e4f",
+ "Hash": "5c1fbc365ac0a3fe7728ac79108b8e64",
"Requirements": [
"cellranger",
"cpp11",
@@ -1370,10 +1348,10 @@
},
"reprex": {
"Package": "reprex",
- "Version": "2.0.1",
+ "Version": "2.0.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "911d101becedc0fde495bd910984bdc8",
+ "Hash": "d66fe009d4c20b7ab1927eb405db9ee2",
"Requirements": [
"callr",
"cli",
@@ -1381,6 +1359,7 @@
"fs",
"glue",
"knitr",
+ "lifecycle",
"rlang",
"rmarkdown",
"rstudioapi",
@@ -1401,18 +1380,18 @@
},
"rlang": {
"Package": "rlang",
- "Version": "1.0.2",
+ "Version": "1.0.6",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "04884d9a75d778aca22c7154b8333ec9",
+ "Hash": "4ed1f8336c8d52c3e750adcdc57228a7",
"Requirements": []
},
"rmarkdown": {
"Package": "rmarkdown",
- "Version": "2.14",
+ "Version": "2.17",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "31b60a882fabfabf6785b8599ffeb8ba",
+ "Hash": "e97c8be593e010f93520e8215c0f9189",
"Requirements": [
"bslib",
"evaluate",
@@ -1436,10 +1415,10 @@
},
"rsconnect": {
"Package": "rsconnect",
- "Version": "0.8.26",
+ "Version": "0.8.27",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "c274aa0076b1892bf702de3257e67275",
+ "Hash": "114103fbb50af041e93921ee67db8fa0",
"Requirements": [
"curl",
"digest",
@@ -1452,34 +1431,37 @@
},
"rstudioapi": {
"Package": "rstudioapi",
- "Version": "0.13",
+ "Version": "0.14",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "06c85365a03fdaf699966cc1d3cf53ea",
+ "Hash": "690bd2acc42a9166ce34845884459320",
"Requirements": []
},
"rvest": {
"Package": "rvest",
- "Version": "1.0.2",
+ "Version": "1.0.3",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "bb099886deffecd6f9b298b7d4492943",
+ "Hash": "a4a5ac819a467808c60e36e92ddf195e",
"Requirements": [
+ "cli",
+ "glue",
"httr",
"lifecycle",
"magrittr",
"rlang",
"selectr",
"tibble",
+ "withr",
"xml2"
]
},
"sass": {
"Package": "sass",
- "Version": "0.4.1",
+ "Version": "0.4.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "f37c0028d720bab3c513fd65d28c7234",
+ "Hash": "1b191143d7d3444d504277843f3a95fe",
"Requirements": [
"R6",
"fs",
@@ -1490,10 +1472,10 @@
},
"scales": {
"Package": "scales",
- "Version": "1.2.0",
+ "Version": "1.2.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "6e8750cdd13477aa440d453da93d5cac",
+ "Hash": "906cb23d2f1c5680b8ce439b44c6fa63",
"Requirements": [
"R6",
"RColorBrewer",
@@ -1518,10 +1500,10 @@
},
"seriation": {
"Package": "seriation",
- "Version": "1.3.5",
+ "Version": "1.3.6",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "023a937040569af2c643fd8281927706",
+ "Hash": "be12e2e87307ae806393c3f39c7c6bf1",
"Requirements": [
"MASS",
"TSP",
@@ -1534,10 +1516,10 @@
},
"shiny": {
"Package": "shiny",
- "Version": "1.7.1",
+ "Version": "1.7.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "00344c227c7bd0ab5d78052c5d736c44",
+ "Hash": "4f7970a3edb0a153ac6b376785a1944a",
"Requirements": [
"R6",
"bslib",
@@ -1561,6 +1543,18 @@
"xtable"
]
},
+ "shinycssloaders": {
+ "Package": "shinycssloaders",
+ "Version": "1.0.0",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Hash": "f39bb3c44a9b496723ec7e86f9a771d8",
+ "Requirements": [
+ "digest",
+ "glue",
+ "shiny"
+ ]
+ },
"shinythemes": {
"Package": "shinythemes",
"Version": "1.2.0",
@@ -1581,18 +1575,18 @@
},
"stringi": {
"Package": "stringi",
- "Version": "1.7.6",
+ "Version": "1.7.8",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "bba431031d30789535745a9627ac9271",
+ "Hash": "a68b980681bcbc84c7a67003fa796bfb",
"Requirements": []
},
"stringr": {
"Package": "stringr",
- "Version": "1.4.0",
+ "Version": "1.4.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "0759e6b6c0957edb1311028a49a35e76",
+ "Hash": "a66ad12140cd34d4f9dfcc19e84fc2a5",
"Requirements": [
"glue",
"magrittr",
@@ -1601,20 +1595,19 @@
},
"sys": {
"Package": "sys",
- "Version": "3.4",
+ "Version": "3.4.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "b227d13e29222b4574486cfcbde077fa",
+ "Hash": "34c16f1ef796057bfa06d3f4ff818a5d",
"Requirements": []
},
"tibble": {
"Package": "tibble",
- "Version": "3.1.7",
+ "Version": "3.1.8",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "08415af406e3dd75049afef9552e7355",
+ "Hash": "56b6934ef0f8c68225949a8672fe1a8f",
"Requirements": [
- "ellipsis",
"fansi",
"lifecycle",
"magrittr",
@@ -1626,10 +1619,10 @@
},
"tidyr": {
"Package": "tidyr",
- "Version": "1.2.0",
+ "Version": "1.2.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "d8b95b7fee945d7da6888cf7eb71a49c",
+ "Hash": "cdb403db0de33ccd1b6f53b83736efa8",
"Requirements": [
"cpp11",
"dplyr",
@@ -1646,24 +1639,25 @@
},
"tidyselect": {
"Package": "tidyselect",
- "Version": "1.1.2",
+ "Version": "1.2.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "17f6da8cfd7002760a859915ce7eef8f",
+ "Hash": "79540e5fcd9e0435af547d885f184fd5",
"Requirements": [
- "ellipsis",
+ "cli",
"glue",
- "purrr",
+ "lifecycle",
"rlang",
- "vctrs"
+ "vctrs",
+ "withr"
]
},
"tidyverse": {
"Package": "tidyverse",
- "Version": "1.3.1",
+ "Version": "1.3.2",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "fc4c72b6ae9bb283416bd59a3303bbab",
+ "Hash": "972389aea7fa1a34739054a810d0c6f6",
"Requirements": [
"broom",
"cli",
@@ -1698,10 +1692,10 @@
},
"tinytex": {
"Package": "tinytex",
- "Version": "0.39",
+ "Version": "0.42",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "29f67ab15405b390b90e56ff22198ead",
+ "Hash": "7629c6c1540835d5248e6e7df265fa74",
"Requirements": [
"xfun"
]
@@ -1762,16 +1756,33 @@
},
"vctrs": {
"Package": "vctrs",
- "Version": "0.4.1",
+ "Version": "0.5.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "8b54f22e2a58c4f275479c92ce041a57",
+ "Hash": "001fd6a5ebfff8316baf9fb2b5516dc9",
"Requirements": [
"cli",
"glue",
+ "lifecycle",
"rlang"
]
},
+ "vembedr": {
+ "Package": "vembedr",
+ "Version": "0.1.5",
+ "Source": "Repository",
+ "Repository": "CRAN",
+ "Hash": "a70fc1a38cb92dfb37402d3f920c351a",
+ "Requirements": [
+ "assertthat",
+ "glue",
+ "htmltools",
+ "httr",
+ "lifecycle",
+ "magrittr",
+ "stringr"
+ ]
+ },
"viridis": {
"Package": "viridis",
"Version": "0.6.2",
@@ -1786,18 +1797,18 @@
},
"viridisLite": {
"Package": "viridisLite",
- "Version": "0.4.0",
+ "Version": "0.4.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "55e157e2aa88161bdb0754218470d204",
+ "Hash": "62f4b5da3e08d8e5bcba6cac15603f70",
"Requirements": []
},
"vroom": {
"Package": "vroom",
- "Version": "1.5.7",
+ "Version": "1.6.0",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "976507b5a105bc3bdf6a5a5f29e0684f",
+ "Hash": "64f81fdead6e0d250fb041e175d123ab",
"Requirements": [
"bit64",
"cli",
@@ -1817,10 +1828,10 @@
},
"webshot": {
"Package": "webshot",
- "Version": "0.5.3",
+ "Version": "0.5.4",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "7261ab7f98e97c771217e6b87c085d6e",
+ "Hash": "cfd9342c76693ae53108a474aafa1641",
"Requirements": [
"callr",
"jsonlite",
@@ -1845,10 +1856,10 @@
},
"xfun": {
"Package": "xfun",
- "Version": "0.31",
+ "Version": "0.34",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "a318c6f752b8dcfe9fb74d897418ab2b",
+ "Hash": "9eba2411b0b1f879797141bd24df7407",
"Requirements": []
},
"xml2": {
@@ -1869,18 +1880,18 @@
},
"yaml": {
"Package": "yaml",
- "Version": "2.3.5",
+ "Version": "2.3.6",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "458bb38374d73bf83b1bb85e353da200",
+ "Hash": "9b570515751dcbae610f29885e025b41",
"Requirements": []
},
"zip": {
"Package": "zip",
- "Version": "2.2.0",
+ "Version": "2.2.1",
"Source": "Repository",
"Repository": "CRAN",
- "Hash": "c7eef2996ac270a18c2715c997a727c5",
+ "Hash": "a7e91189fa51d9029a30eba3831ce53f",
"Requirements": []
}
}
diff --git a/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf b/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf
new file mode 100644
index 0000000..57dd1bb
--- /dev/null
+++ b/rsconnect/shinyapps.io/rujinlong/DeepsmirUD.dcf
@@ -0,0 +1,13 @@
+name: DeepsmirUD
+title: DeepsmirUD
+username:
+account: rujinlong
+server: shinyapps.io
+hostUrl: https://api.shinyapps.io/v1
+appId: 6295477
+bundleId: 6636501
+url: https://rujinlong.shinyapps.io/DeepsmirUD/
+when: 1671030612.49394
+lastSyncTime: 1671030612.49399
+asMultiple: FALSE
+asStatic: FALSE
diff --git a/workflow/02-merge_data.Rmd b/workflow/02-merge_data.Rmd
new file mode 100644
index 0000000..39a6ca6
--- /dev/null
+++ b/workflow/02-merge_data.Rmd
@@ -0,0 +1,125 @@
+---
+title: "02-merge_data"
+date: "Compiled at `r format(Sys.time(), '%Y-%m-%d %H:%M:%S', tz = 'UTC')` UTC"
+output: github_document
+params:
+ name: "02-merge_data" # change if you rename file
+---
+
+```{r here, message=FALSE}
+here::i_am(paste0(params$name, ".Rmd"), uuid = "52a5df8e-e152-438e-ad43-1c23aab91a3c")
+```
+
+The purpose of this document is to merge multiple data for app.
+
+```{r packages}
+library("conflicted")
+library(tidyverse)
+library(plotly)
+prj_path <- normalizePath("..")
+```
+
+```{r directories}
+# create or *empty* the target directory, used to write this file's data:
+projthis::proj_create_dir_target(params$name, clean = TRUE)
+
+# function to get path to target directory: path_target("sample.csv")
+path_target <- projthis::proj_path_target(params$name)
+
+# function to get path to previous data: path_source("00-import", "sample.csv")
+path_source <- projthis::proj_path_source(params$name)
+```
+
+## Tasks
+
+```{r}
+fpath1 <- here::here(prj_path, "data/data1.xlsx")
+fpath2 <- here::here(prj_path, "data/data2.xlsx")
+fp_disease <- here::here(prj_path, "data/disease.xlsx")
+fp_cmap <- here::here(prj_path, "data/main/GSEAweight1Score.rds")
+fp_d2sm_heatmap <- here::here(prj_path, "data/d4heatmap.rds")
+
+
+fp_profile <- here::here(prj_path, "data/profiles_deepsmirud.rdata")
+df_disease <- read_excel(fp_disease, sheet = "mircancer")
+df_deepsmirud <- read_excel(fp_disease, sheet = "deepsmirud")
+disease_names <- sort(unique(df_disease$disease_name))
+df_cmap <- readRDS(fp_cmap)
+load(fp_profile)
+dbs <- excel_sheets(fpath1)
+dbs <- dbs[dbs!="Sheet1"]
+# df_verse <- read_excel(fpath2)
+
+dsud <- list(df_cmap = df_cmap,
+ df_verse = df_verse,
+ df_disease = df_disease,
+ df_deepsmirud = df_deepsmirud,
+ df_smname_mapping = df_smname_mapping,
+ profile_d2m = profile_d2m,
+ profile_s2m = profile_s2m,
+ disease_names = disease_names,
+ db_overview = read_excel(fpath1, sheet = "Sheet1"),
+ dbs = dbs)
+
+for (db in dbs) {
+ print(db)
+ dfraw <- read_excel(fpath1, sheet = db)
+ if (db == "0.05_op") {
+ df <- head(dfraw, 500)
+ } else {
+ df <- dfraw
+ }
+ df4plot <- df %>%
+ dplyr::select(c(AlexNet, BiRNN, RNN, Seq2Seq, CNN, ConvMixer64, DSConv, LSTMCNN, MobileNetV2, ResNet18, ResNet50, SCAResNet18))
+ df1 <- df4plot %>%
+ pivot_longer(names_to = "variable",
+ values_to = "value",
+ cols = colnames(.)) %>%
+ mutate(a = sort(rep(1:nrow(df4plot), ncol(df4plot))) - 1)
+
+ df1_replot <- ggplot(df1, aes(x=a, y=value, color=variable)) +
+ geom_line() +
+ facet_wrap("variable")
+ # df1_replot <- plot_ly(df1, x = ~a, y = ~value, color = ~variable, type = 'scatter', mode = 'lines', facet_col = ~variable)
+
+ df1_hist <- df1 %>%
+ mutate(value = log10(value)) %>%
+ ggplot(aes(x=value, fill=variable)) +
+ geom_histogram(binwidth = 1)
+ # df2 <- df1 %>% mutate(value = log10(value))
+ # df1_hist <- plot_ly(df2, x = ~value, color = ~variable, type = "histogram", histnorm = "probability density", nbinsx = 100)
+
+ df1_replot2 <- ggplot(df1, aes(x=a, y=value, size = value, color = variable)) +
+ geom_point(alpha=0.3)
+ # convert df1_replot2 to plotly
+ # df1_replot2 <- plot_ly(df1, x = ~a, y = ~value, color = ~variable, size = ~value, mode = "markers", alpha = 0.3, type = "scattergl")
+
+
+ dsud[[db]][["df4plot"]] <- df4plot
+ dsud[[db]][["df1"]] <- df1
+ dsud[[db]][["heatmapPlot"]] <- heatmaply(df4plot)
+ dsud[[db]][["df1_replot"]] <- ggplotly(df1_replot)
+ dsud[[db]][["df1_hist"]] <- ggplotly(df1_hist)
+ dsud[[db]][["df1_clustermap"]] <- corrplot(cor(df4plot))
+ dsud[[db]][["df1_replot2"]] <- ggplotly(df1_replot2)
+ dsud[[db]][["df"]] <- dfraw
+}
+
+dpath_dsud <- here::here(prj_path, "data/dsud_simple.rds")
+write_rds(dsud, file = dpath_dsud, compress = "xz")
+# dsud2 <- read_rds(dpath_dsud)
+#
+# plot_ly(df1, x = ~a, y = ~value, color = ~variable, size = ~value, alpha = 0.7, mode = "markers", type = "scattergl")
+# layout(xaxis = list(title = "Sample"), yaxis = list(title = "Expression"))
+#
+# dsud[["appv_0.01_non_op_down"]][["df1_replot2"]]
+```
+
+
+## Files written
+
+These files have been written to the target directory, ```r paste0("data/", params$name)```:
+
+```{r list-files-target}
+projthis::proj_dir_info(path_target())
+```