Yes, that is the simplest solution, and it’s what I’m doing now. It’s not overly confusing for a reader, but it’s awkward to add new vignettes in the middle of the compilation order, as I then have to rename the others (or give the new vignette a weird name, e.g., “xtra-3b-de.Rmd” to get it to fall behind “xtra-3-var.Rmd”).
>From a practical perspective, this becomes particularly annoying when writing >links between vignettes, which needs to know the file name to construct the >URL (see BiocStyle::Biocpkg()). If the name is unintuitive and/or changes all >the time, these links become difficult to write. External links to vignettes >(e.g., in support site posts) would also become invalidated upon name changes. I guess I find it unpleasant to require the file name to conflate the description of the vignette with the compilation order, and I would like a more explicit mechanism to do this. -A > On 22 Dec 2018, at 19:00, Martin Morgan <mtmorgan.b...@gmail.com> wrote: > > ...but in the end isn't it just simpler to name your vignettes in collation > order? Who other than you will be able to parse what you've done? > > Martin > > On 12/22/18, 1:56 PM, "Bioc-devel on behalf of Michael Lawrence" > <bioc-devel-boun...@r-project.org on behalf of lawrence.mich...@gene.com> > wrote: > > Anything that eventually lands in inst/doc is a vignette, I think, so > there might be a hack around that. > > On Fri, Dec 21, 2018 at 11:26 PM Aaron Lun > <infinite.monkeys.with.keyboa...@gmail.com> wrote: >> >> I gave it a shot: >> >> https://github.com/LTLA/DrakeTest <https://github.com/LTLA/DrakeTest> >> >> This uses a single “controller” Rmd file to trigger Drake::make. Running >> this file will instruct Drake to compile all of the other vignettes >> following the desired dependency structure. >> >> The current sticking point is that I need to move the Drake-controlled Rmd >> files out of “vignettes/“, otherwise they’ll just be compiled as usual >> without consideration of their dependencies. This causes problems as R CMD >> BUILD only recognizes the controller Rmd file as the sole vignette, and >> doesn’t retain or index the HTML files produced from the other Rmd files as >> side-effects of running the controller. >> >> Are there any better ways to subvert the vignette building procedure to get >> the desired effect of running drake::make() and recognition of the resulting >> HTMLs as vignettes? >> >> -A >> >>> On 18 Dec 2018, at 17:41, Michael Lawrence <lawrence.mich...@gene.com> >>> wrote: >>> >>> Sounds like a use case for drake... >>> >>> On Tue, Dec 18, 2018 at 6:58 AM Aaron Lun >>> <infinite.monkeys.with.keyboa...@gmail.com >>> <mailto:infinite.monkeys.with.keyboa...@gmail.com>> wrote: >>> @Michael In this case, the resource produced by vignette X is a >>> SingleCellExperiment object containing the results of various processing >>> steps (normalization, clustering, etc.) described in that vignette. >>> >>> I can imagine a lazy evaluation model for this, but it wouldn’t be pretty. >>> If I had another vignette Y that depended on the SCE produced by vignette >>> X, I would need Y to execute all of the steps in X if X hadn’t already been >>> run before Y. This gets us into the territory of Makefile-like >>> dependencies, which seems even more complicated than simply specifying a >>> compilation order. >>> >>> You might ask why X and Y are split into two separate vignettes. The use of >>> different vignettes is motivated by the complexity of the workflows: >>> >>> - Vignette 1 demonstrates core processing steps for one read-based >>> single-cell RNAseq dataset. >>> - Vignette 2 demonstrates (slightly different) core steps for a UMI-based >>> dataset. >>> - … so on for a bunch of other core steps for different types of data. >>> - Vignette 6 demonstrates extra optional steps for the two SCEs produced by >>> vignettes 1 & 3. >>> - … and so on for a bunch of other optional steps. >>> >>> The separation between core and optional steps into separate documents is >>> desirable. From a pedagogical perspective, I would very much like to get >>> the reader through all the core steps before even considering the extra >>> steps, which would just be confusing if presented so early on. Previously, >>> everything was in a single document, which was difficult to read (for >>> users) and to debug (for me), especially because I had to use contrived >>> variable names to avoid clashes between different sections of the workflow >>> that did similar things. >>> >>> @Martin I’ve been using BiocFileCache for all of the online resources that >>> are used in the workflow. However, this is only for my (and the reader’s) >>> convenience. I use a local cache rather than the system default, to ensure >>> that the downloaded files are removed after package build. This is >>> intentional as it forces the package builder to try to re-download >>> resources when compiling the vignette, thus ensuring the validity of the >>> URLs. For a similar reason, I would prefer not to cache the result objects >>> for use in different R sessions. I could imagine caching the result objects >>> for use by a different vignette in the same build session, but this gets >>> back to the problem of ensuring that the result object is generated by one >>> vignette before it is needed by another vignette. >>> >>> -A >>> >>>> On 18 Dec 2018, at 14:14, Martin Morgan <mtmorgan.b...@gmail.com >>>> <mailto:mtmorgan.b...@gmail.com>> wrote: >>>> >>>> Also perhaps using BiocFileCache so that the result object is only >>>> generated once, then cached for future (different session) use. >>>> >>>> On 12/18/18, 8:35 AM, "Bioc-devel on behalf of Michael Lawrence" >>>> <bioc-devel-boun...@r-project.org >>>> <mailto:bioc-devel-boun...@r-project.org> on behalf of >>>> lawrence.mich...@gene.com <mailto:lawrence.mich...@gene.com>> wrote: >>>> >>>> I would recommend against dependencies across vignettes. Ideally someone >>>> can pick up a vignette and execute the code independently of any other >>>> documentation. Perhaps you could move the code generating those shared >>>> resources to the package. They could behave lazily, only generating the >>>> resource if necessary, otherwise reusing it. That would also make it easy >>>> for people to write their own documents using those resources. >>>> >>>> Michael >>>> >>>> On Tue, Dec 18, 2018 at 5:22 AM Aaron Lun < >>>> infinite.monkeys.with.keyboa...@gmail.com >>>> <mailto:infinite.monkeys.with.keyboa...@gmail.com>> wrote: >>>> >>>>> In a number of my workflow packages (e.g., simpleSingleCell), I rely on a >>>>> specific compilation order for my vignettes. This is because some >>>>> vignettes >>>>> set up resources or objects that are to be used by later vignettes. >>>>> >>>>> From what I understand, vignettes are compiled in alphanumeric ordering of >>>>> their file names. As such, I give my vignettes fairly structured names, >>>>> e.g., “work-1-reads.Rmd”, “work-2-umi.Rmd” and so on. >>>>> >>>>> However, it becomes rather annoying when I want to add a new vignette in >>>>> the middle somewhere. This results in some unnatural numberings, e.g., >>>>> “work-0”, “3b”, which are ugly and unintuitive. This is relevant as >>>>> BiocStyle::Biocpkg() links between vignettes require you to use the >>>>> destination vignette’s file name; so difficult names complicate linking, >>>>> especially if the names continually change to reflect new orderings. >>>>> >>>>> Is there an easier way to control vignette compilation order? WRE provides >>>>> no (obvious) guidance, so I would like to know what non-standard hacks are >>>>> known to work on the build machines. I can imagine something dirty whereby >>>>> one ”reference” vignette contains code to “rmarkdown::render" all other >>>>> vignettes in the specified order… ugh. >>>>> >>>>> -A >>>>> >>>>> _______________________________________________ >>>>> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing list >>>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel >>>>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel> >>>>> >>>>> >>>> >>>> [[alternative HTML version deleted]] >>>> >>>> _______________________________________________ >>>> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing list >>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel >>>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel> >>>> >>> >>> _______________________________________________ >>> Bioc-devel@r-project.org <mailto:Bioc-devel@r-project.org> mailing list >>> https://stat.ethz.ch/mailman/listinfo/bioc-devel >>> <https://stat.ethz.ch/mailman/listinfo/bioc-devel> >> >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> Bioc-devel@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/bioc-devel >> > > _______________________________________________ > Bioc-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/bioc-devel > _______________________________________________ Bioc-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel