Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • eci/shinyscreen
  • miroslav.kratochvil/shinyscreen
2 results
Show changes
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{mk_combine_file}
\alias{mk_combine_file}
\title{Combine RMB Settings With Different Collisional Energies}
\usage{
mk_combine_file(sett_fns, fname)
}
\arguments{
\item{sett_fns}{A list of settings files.}
\item{fname}{The name of the combined file.}
}
\value{
fname
}
\description{
Combine the RMB settings files
}
\details{
Combine RMB settings with different collisional energies into one
settings file with multiple collisional energy entries.
}
\author{
Todor Kondić
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{mk_sett_file}
\alias{mk_sett_file}
\title{Generate RMassBank settings file.}
\usage{
mk_sett_file(sett_alist, file)
}
\arguments{
\item{sett_alist}{The named list of settings that are different
from the RMassBank defaults.}
\item{file}{The name of the YAML specification that will be merged
with the template Rmb settings file.}
}
\description{
Produce the Rmb Settings file
}
\details{
Produce the Rmb Settings file based on the customisation file in
YAML format.
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{no_drama_mkdir}
\alias{no_drama_mkdir}
\title{Create directories without drama}
\usage{
no_drama_mkdir(path)
}
\arguments{
\item{path}{Names of the directories.}
}
\value{
The character string containing the input argument \code{path}.
}
\description{
Create directories without drama.
}
\details{
Create directories without drama.
}
\author{
Todor Kondić
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/run.R
\name{presc.do}
\alias{presc.do}
\title{Prescreening on bunch of files.}
\usage{
presc.do(fn_data, fn_cmpd_l, mode, dest = ".", proc = F, ...)
}
\arguments{
\item{fn_data}{The mzML files. Basis for the out directory name
generation.}
\item{fn_cmpd_l}{The compound list.}
\item{mode}{RMB mode.}
\item{dest}{Destination directory.}
\item{proc}{Amount of processors, or FALSE.}
\item{fn_cmpd_list}{The compound list CSV.}
}
\value{
Nothing useful.
}
\description{
Do the prescreening.
}
\author{
Todor Kondić
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{presc.plot}
\alias{presc.plot}
\title{Plot the Output of Prescreen}
\usage{
presc.plot(prescdf, mode, out = "prescreen.pdf", fn_cmpd_l,
pal = "Dark2", cex = 0.75, rt_digits = 2, m_digits = 4)
}
\arguments{
\item{prescdf}{File table data-frame. See presc.shiny for details.}
\item{mode}{RMB mode.}
\item{out}{The name of the output file.}
\item{fn_cmpd_l}{The compound list name.}
\item{pal}{ColorBrewer palette name.}
\item{cex}{As in legend.}
\item{rt_digits}{Number of digits after the point for the retention time.}
\item{m_digits}{Number of digits after the point for the mass.}
\item{wd}{Sequence of data dirs containing the prescreen subdir.}
\item{digits}{Number of significant digits for peak ret times.}
}
\value{
Nothing useful.
}
\description{
Plot the output of prescreen.
}
\author{
Todor Kondić
Mira Narayanan
Anjana Elapavalore
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{presc.shiny}
\alias{presc.shiny}
\title{Prescreening with Shiny}
\usage{
presc.shiny(prescdf, mode, fn_cmpd_l, pal = "Dark2", cex = 0.75,
rt_digits = 2, m_digits = 4)
}
\arguments{
\item{prescdf}{File table data-frame. Columns: Files,ID,wd,tag,set_name ...}
\item{mode}{RMassBank mode.}
\item{fn_cmpd_l}{Compound list file name.}
\item{pal}{ColorBrewer palette.}
\item{cex}{Size of fonts.}
\item{rt_digits}{Number of decimal places for the retention time.}
\item{m_digits}{Number of decimal places for the mass.}
}
\value{
Nothing useful.
}
\description{
Prescreening using shiny interface.
}
\author{
Jessy Krier
Mira Narayanan
Hiba Mohammed Taha
Anjana Elapavalore
Todor Kondić
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{rendersmiles2}
\alias{rendersmiles2}
\title{Turn SMILES to an Image Using Online Resource}
\usage{
rendersmiles2(smiles, style = "cow", ...)
}
\arguments{
\item{smiles}{The SMILES string.}
\item{style}{Structure style.}
\item{...}{Hand over to renderurl.}
}
\value{
Nothing useful.
}
\description{
Render smiles from an online resource.
}
\author{
Todor Kondić
}
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/mix.R
\name{renderurl}
\alias{renderurl}
\title{Render Compound from an Online Resource}
\usage{
renderurl(depictURL, coords = c(0, 0, 100, 100),
filename = tempfile(fileext = ".svg"))
}
\arguments{
\item{depictURL}{The URL of the object to plot.}
\item{coords}{The positioning of the image (in data coords).}
\item{filename}{Temp filename.}
}
\value{
Nothing useful.
}
\description{
Helper function for rendersmiles2
}
\author{
Todor Kondić
}
#+TITLE: Empirical Notes on Shiny
- It used to be better for Shinyscreen to retain the bare minimum of
observers and keep as much of functionality as possible inside
reactive functions. The fluidity of UI experience was reported to be
better. Probably the logic of the application got better, too. But,
going full reactive can sometimes be exhausting. These days, we
build some stuff inside observers. All in moderation, though.
- Assignment to a reactive value does not add a dependency on that
value.
- A reactive values list is not adding a dependency on all its
members. Not even if it was nested inside some other reactive values
list.
- An ordinary list inside reactive values list, if used, will add
dependency on all its members. Even if only some of its members are
used, the dependency is on all the members.
- Recursive dependencies can get ugly. If really needed, do not
depend, but use isolate.
- Do *NOT* change the value of things you depend on. This creates
infinite loops. It may even work, but will be sloooow.
- Single output produced by any input from a group of inputs: separate
observers are needed do differentiate between which of the inputs
have been triggered.
- The only way to detect if the button press was acted upon in a
reactive expression that depends on multiple inputs is to raise a
flag, or write the state of the button when done.
- As development progresses, keep an observer that transforms
shinyscreen mess into the logics of the workflow. Then move out as
much of this as possible into reactive functions. Example,
Shinyscreen underlying script flow was first emulated by an
observer.