Can I publish a shiny app in a scientific journal? How / where?


#1

Hello! It is my first question here, I hope someone can help me.

I am developing a Shiny App to analyze a toxicological dataset as part of my PhD thesis in biology. Can I incorporate the app into a scientific publication? Where/How can I mention it? Is it possible to publish it somewhere?. Until now I will present it at LatinR conference (http://latin-r.com/).

Thank you
Florencia


#2

Hey @Flor . If you want others to able to access your app on the internet, the easiest place is probably shinyapps.io. There is a free tier, and there is even a plugin for publishing to it directly from the RStudio IDE. You can read the following for more info: https://shiny.rstudio.com/articles/shinyapps.html

If you want to "incorporate" or "embed" the app into a scientific publication, you can either reference with a link/URL or include embed it in a web-based publication by using an iframe. There is an example at http://shiny.rstudio.com/ . Hope that helps!


#3

Thank you @cole for your answer.
I consulted some people and I think I should change a little bit my question.
The question would be if is possible to publish a Shiny App as software itself (some people mention me recently some journals as bioinformatics, Journal of Statistical Software and journal of open science software) or it should be published as the methods part of a paper where the Shiny App is used as a tool to obtain results. Do you know which other journals are "friendly" with Shiny Apps?


#4

Since I don't have much experience with journals, I really cannot say. Perhaps someone with more experience will weigh in! My understanding is that most journals are text/image based and so would not support serving responsive content or Web Apps. A Shiny App is just like any other Web App, and so requires a "backend" / server side component, as well as the client-side JavaScript/HTML. At very least, I'm sure you could include the code in your paper, a link to the app if hosted elsewhere on ShinyApps.io, or a link to the github repo where your code is stored. The iframe might be an option, as I mentioned earlier, but I can think of a few reasons journals may not allow that behavior.

I'm not sure what you mean by:

question would be if is possible to publish a Shiny App as software itself

The Shiny App certainly could be the focus of your paper, if that's what you mean. And the Shiny App itself is certainly software. Are you talking about desktop software? The classic way of hosting shiny apps is as a web application that runs in a client's browser. There are also ways to wrap Shiny Apps as "Shiny Modules" or something of the like and publish them as packages. But I think I may be misunderstanding your intent.


#5

I haven't done this for my own papers, but I have developed a couple of visualisations to accompany colleagues' papers. The advice I'd give you depends on what you want to achieve. Do you want something to help readers of the paper explore the results, or do you want something to help non-readers (stakeholders, the public) digest them?

I want a resource to assist readers of my paper/users of my data

The easiest option is to put your Shiny app up on shinyapps.io (along with instructions for users to deploy it locally if they have R running, so that they can use it in the event you've blown the free tier) and link to it in the paper. If the journal has some sort of capability for accompanying visuals and it allows general iframe embeds, use that; if not, just link to it in the abstract or intro. You might also want to consider getting a separate DOI either for the dataset or just for the Shiny app, if it's complex enough to be considered a 'product' in its own right.

Following on from that, if you want this to be a product that researchers or stakeholders access when they want to work with this data, you could choose to:

  • Have it hosted (on shinyapps.io or elsewhere) and accessed as a web app. This will either come with usage limits or ongoing costs, so you'll need to do some budgeting.
  • Have people run it on their local R installations. There're a few ways to do this, but they all assume that users have R installed and at least enough knowledge to type in an expression to run the app. If you go this route, I would probably consider creating an R package to distribute your app and the starter function.
  • Package your Shiny app as a downloadable executable. There're also a few options for this, and I'm not super experienced with them. You might also find that the options vary a little depending on the platforms (Windows, Mac, Linux) you're targeting.

I want to get eyeballs on my work

If you want something that'll help the public or stakeholders understand, or something to help put a spotlight on the paper, I'd skip Shiny entirely and use htmlwidgets. Media attention on papers—either social or traditional—is going to hit in a wave and then die off quickly, so you need something that you can receive a lot of traffic within a day or two without bankrupting you. Packages that work with htmlwidgets can output a self-contained HTML file, and that file can be deployed to static hosts like GitHub Pages and Netlify and receive basically unlimited traffic for free.

In this case, it's helpful if your journal can embed the visuals in an iframe, but it's not super necessary because you can just write a press release and embed it in that. Even better, if you include the embed code in the press release, reporters can jut copy it straight into their reports and include the visuals in their news articles. In fact, you can open up the htmlwidgets output file, pop a Google Analytics code in there and track how news organisations use your work.

I did this for a colleague's paper on heatwaves late last year. It was a fantastic paper, so it would've done brilliantly anyway, but it was great to see the visuals included in a lot of domestic and international media reports, and it gave us a lot of insight into how the story was picked up.

We saw a lot of traffic within 24-48 hours of press release and another massive surge domestically later that week when a couple of other bits of work were released that tied in well (the reporter had decided to publish them all at once). We also saw smaller surges weeks-to-months later when various outlets used the work in features on heatwaves, as well as on subsequent heatwaves later in the summer—whether older articles were being re-run by outlets or users were simply seeking them out on their own, I'm not sure.

The downsides of using htmlwidgets over Shiny are:

  • No reactivity. Some htmlwidgets packages, like Plotly for R, feature limited interacitvity like zooming or brushing, but essentially everything needs to be 'pre-crunched': you won't be running any R code when your users access the visuals.
  • Since everything is rendered in the browser, plot complexity is limited by the abilities of your users' devices, and it's going to be variable. You might want to test how your visuals look and perform on a few desktops and phones (especially if you're shooting for media attention: lots of media traffic will come in over mobile). It'll probably be fine, but things like 1000+ points or many layers of spatial data could slow things down. In the exampleI included above, I wasn't great at working with Leaflet, and the map ended up rather bloated, even with me simplifying the regions to cut the polygon count (which also resulted in some weird looking seams). Not a big problem given it rarely headlined articles, but something to keep in mind.

#6

You can upload your app to github, connect zenodo (https://zenodo.org/), make a release on GtiHub and get DOI from zenodo. Then reference to your app is DOI, that could be merged with some "Availible on-line bla-bla-bla.shinyapps.io".

If you are interested in writing a paper about your app --- it will be the same. Write a separate paper describing something with DOI you abtained previously.


#7

Hi @Flor,

I don't have experience first-hand with this, but saw some cases in the past. For example, Jeff Leek and others from JHU published this with a companion Shiny app.

Another example from the PeerJ preprints here, specifically about a Shiny application.

Hope it helps.


#8

In the spirit of collecting examples...here is an example of a paper in PLOS ONE describing a shiny app as an interactive decision support tool.


#9

More information that can be useful if someone has the same question
https://www.software.ac.uk/which-journals-should-i-publish-my-software