Nano Hash - криптовалюты, майнинг, программирование

как связать локальный файл с html-запросом в блестящем UI.R?

У меня есть блестящее приложение, в котором я хотел бы иметь ссылки на внешний веб-инструмент (GenomeCompiler) для чтения файлов в папке приложения «~/www».

Пример html-кода от GenomeCompiler использует файл в веб-репозитории и отлично работает в приложении (см. код ниже). Ожидаемое поведение заключается в том, что после того, как вы запустите код (обратите внимание, что «исходный код» не будет работать, вам нужно запустить его для работы ShinyApp()), он откроет вкладку в веб-браузере (я использую Firefox) с ссылка под названием «плазмида1». Когда вы щелкаете по нему, открывается новая вкладка в браузере, которая загружает данные файла на веб-сайте GenomeCompiler и показывает окружность с аннотациями и другими данными.

##WORKING EXAMPLE
#Directory tree
#ui.R
#server.R
#www/OG34_OG34_pSF-OXB19.gb   # this is the file read by the tool, which can be downloaded and saved to the ~/www folder in the shiny app from the link:
#    <http://s3.amazonaws.com/gcc_production/plasmid_viewer/OG34_OG34_pSF-OXB19.gb>
library(shiny)
ui <- fluidPage(
# the GenomeCompiler supplied code is "https://designer.genomecompiler.com/plasmid_iframe?file_url=http://s3.amazonaws.com/gcc_production/plasmid_viewer/OG34_OG34_pSF-OXB19.gb"

  tags$a(href='https://designer.genomecompiler.com/plasmid_iframe?file_url=http://s3.amazonaws.com/gcc_production/plasmid_viewer/OG34_OG34_pSF-OXB19.gb', target='blank', 'plasmid1')
  )
server <- function(input, output){}

shinyApp(ui = ui, server = server)

Я хотел бы использовать этот подход для чтения файла в локальном блестящем каталоге «~/www», но не могу найти правильный синтаксис. В примере выше использовали

tags$a(href='https://designer.genomecompiler.com/plasmid_iframe?file_url=OG34_OG34_pSF-OXB19.gb', target='blank', 'plasmid1')
  )

но после загрузки веб-сайта геномкомпилятора выдается «ошибка загрузки файла (внутренняя ошибка сервера)». По своему невежеству я понимаю, что приложение работает локально, но этот внешний инструмент работает с другого адреса и поэтому не может видеть локальный файл приложения. Я предполагаю, что мне нужно указать инструменту местоположение локального файла с URL-адресом, но я не знаю, как это сделать. Кроме того, я читал, что Firefox и другие браузеры не позволяют читать локальные файлы из соображений безопасности, поэтому я хотел бы написать этот код правильно, чтобы я мог безопасно развернуть приложение в Интернете.

Я был бы признателен за помощь в использовании соответствующего синтаксиса или подхода для чтения локального файла приложения в инструменте.

Заранее спасибо!

19.08.2016

Ответы:


1

Вы можете указать на локальный файл, используя что-то вроде этого:

tags$a(href='data/plasmid1.txt', target='blank', 'plasmid1_localfile')

если вы хотите скачать файл:

tags$a(href='data/plasmid1.txt', target='blank', 'plasmid1_localfile', download = 'plasmid1.txt')

Примечание. plasmid1.txt (файл) должен находиться в папке www.

Вы можете попробовать этот простой пример:

Дерево каталогов

ui.R
server.R
www/data/plasmid1.txt

(создайте пустой текстовый файл с именем «plasmid1.txt»)

ui.R

library(shiny)

# Define UI for application that plots random distributions 
shinyUI(pageWithSidebar(

  # Application title
  headerPanel("Hello Shiny!"),

  # Sidebar with a slider input for number of observations
  sidebarPanel(
    sliderInput("obs", 
                "Number of observations:", 
                min = 1,
                max = 1000, 
                value = 500), 

# Line spacing
hr(),

# Adding the 'a' tag to the sidebar linking external file
tags$p("'a' tag linking external file"),
tags$a(href='https://designer.genomecompiler.com/plasmid_iframe?file_url=http://s3.amazonaws.com/gcc_production/plasmid_viewer/OG34_OG34_pSF-OXB19.gb', target='blank', 'plasmid1_URLfile'),

# Line spacing
hr(), 

# Adding the 'a' tag to the sidebar linking local file
tags$p("'a' tag linking local file"),
tags$a(href='data/plasmid1.txt', target='blank', 'plasmid1_localfile', download = 'plasmid1.txt')
),

  # Show a plot of the generated distribution
  mainPanel(
    plotOutput("distPlot")
  )
))

сервер.R

library(shiny)

# Define server logic required to generate and plot a random distribution
shinyServer(function(input, output) {

  # Expression that generates a plot of the distribution. The expression
  # is wrapped in a call to renderPlot to indicate that:
  #
  #  1) It is "reactive" and therefore should be automatically 
  #     re-executed when inputs change
  #  2) Its output type is a plot 
  #
  output$distPlot <- renderPlot({

    # generate an rnorm distribution and plot it
    dist <- rnorm(input$obs)
    hist(dist)
  })
})

Также см. это: как-добавить-ссылку-для-открытия-pdf-файла-в-новом-окне-из-my-r-shiny- приложение

19.08.2016
  • Спасибо за ответ и пример m00am, однако я имею в виду не пометить локальный файл напрямую, а добавить LOCAl_FILE в веб-запрос, как: designer.genomecompiler.com/plasmid_iframe?file_url=LOCAL_FILE. Вот что дает мне ошибку сервера, потому что где-то мой синтаксис неверен и локальный файл не вызывается. 19.08.2016
  • @RubenAlvarez Я думаю, что это возможно только в том случае, если вы развернете свое блестящее приложение, используя свой собственный блестящий сервер и сделаете доступными «извне» ваши локальные файлы (например, файл OG34_OG34_pSF-OXB19.gb). Поскольку серверу designer.genomecompiler.com/plasmid_iframe? нужен доступ к этим файлы из сети. 22.08.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..