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 @@ 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**. + +
![Figure 1. Databases of predicted regulatory effects of the Psmir pairs](nrFigure1.png){width=95%}
+ +
+ +
![Figure 2. Novel regulatory effect data](nrFigure2.png){width=95%}
+ +
+ +
![Figure 3. Correlation matrix, histogram, and probability distribution plots](nrFigure3.png){width=95%}
+ +
+ +
![Figure 4. Heatmap plot](nrFigure4.png){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**). + +
![Figure 5. Select small molecule-miRNA pairs by applying a small molecule filter ‘vorinostat’](nrFigure5.png){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**). + +
![Figure 6. Regulation types of vorinostat-miRNA pairs](nrFigure6.png){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**). + +
![Figure 7. Select small molecule-miRNA pairs by applying a miRNA filter.](nrFigure7.png){width=95%}
+ +
+ +
![Figure 8. Regulation types of small molecule-miR-7 pairs.](nrFigure8.png){width=95%}
+ +
+ +#### (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.](nrFigure9.png){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. + +
![Figure 10. Regulatory effects of small molecule pairs curated from Verse.](nrFigure10.png){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**. + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +### 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**). + +
+ +
+ + +
+ +
+ +
+ +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**). + +
+ +
+ + +
+ +
+ +
+ +#### (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**). + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +#### (3). by multiple conditions + +Deepsmir-Web also allows users to screen the regulation pairs with +multiple conditions (**Figure 9**). + +
+ +
+ + +
+ +
+ +
+ +## 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. + +
+ +
+ + +
+ +
+ +
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. + +
![Figure 1. Drug-cancer associations](dsFigure1.png){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 + +
![Figure 2. Discovering drugs for colon cancer.](dsFigure2.png){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. + +
![Figure 3. Details of selecting arsenic trioxide for treating colon cancer.](dsFigure3.png){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**). + +
![Figure 4. Regulation information of miRNAs related to colon cancer.](dsFigure4.png){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**). + +
![Figure 5. Regulation information of has-let-7a related to colon cancer.](dsFigure5.png){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** 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 + +
+ +
+ + +
+ +
+ +
+ +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. + +
+ +
+ + +
+ +
+ +
+ +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**). + +
+ +
+ + +
+ +
+ +
+ +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**). + +
+ +
+ + +
+ +
+ +
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. + +
![Figure 1. Heatmap of drug-cancer associations](hmFigure1.png){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. + +
![Figure 2. Select a certain area.](hmFigure2.png){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**). + +
![Figure 3. Zoom-in of a certain area.](hmFigure3.png){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. + +
+ +
+ + +
+ +
+ +
+ +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. + +
+ +
+ + +
+ +
+ +
+ +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**). + +
+ +
+ + +
+ +
+ +
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()) +```