Contributions
Contributions copied to clipboard
RBioFormats
Update the following URL to point to the GitHub repository of the package you wish to submit to Bioconductor
- Repository: https://github.com/aoles/RBioFormats
Confirm the following by editing each check box to '[x]'
-
[x] I understand that by submitting my package to Bioconductor, the package source and all review commentary are visible to the general public.
-
[x] I have read the Bioconductor Package Submission instructions. My package is consistent with the Bioconductor Package Guidelines.
-
[x] I understand Bioconductor Package Naming Policy and acknowledge Bioconductor may retain use of package name.
-
[x] I understand that a minimum requirement for package acceptance is to pass R CMD check and R CMD BiocCheck with no ERROR or WARNINGS. Passing these checks does not result in automatic acceptance. The package will then undergo a formal review and recommendations for acceptance regarding other Bioconductor standards will be addressed.
-
[x] My package addresses statistical or bioinformatic issues related to the analysis and comprehension of high throughput genomic data.
-
[x] I am committed to the long-term maintenance of my package. This includes monitoring the support site for issues that users may have, subscribing to the bioc-devel mailing list to stay aware of developments in the Bioconductor community, responding promptly to requests for updates from the Core team in response to changes in R or underlying software.
-
[x] I am familiar with the Bioconductor code of conduct and agree to abide by it.
I am familiar with the essential aspects of Bioconductor software management, including:
- [x] The 'devel' branch for new packages and features.
- [x] The stable 'release' branch, made available every six months, for bug fixes.
- [x] Bioconductor version control using Git (optionally via GitHub).
For questions/help about the submission process, including questions about the output of the automatic reports generated by the SPB (Single Package Builder), please use the #package-submission channel of our Community Slack. Follow the link on the home page of the Bioconductor website to sign up.
Hi @aoles
Thanks for submitting your package. We are taking a quick look at it and you will hear back from us soon.
The DESCRIPTION file for this package is:
Package: RBioFormats
Version: 0.99.0
BioFormats: 6.10.1
Title: R interface to Bio-Formats
Description: An R package which interfaces the OME Bio-Formats Java library to
allow reading of proprietary microscopy image data and metadata.
Encoding: UTF-8
Authors@R:
person("Andrzej", "Oleś", role = c("aut", "cre"),
email = "[email protected]",
comment = c(ORCID = "0000-0003-0285-2787")
)
biocViews: DataImport
BugReports: https://github.com/aoles/RBioFormats/issues
Depends:
rJava (>= 0.9-6)
Imports:
EBImage,
methods,
stats
Suggests:
BiocStyle,
knitr,
microbenchmark,
testthat,
XML
SystemRequirements: Java (>= 1.7)
License: GPL-3
VignetteBuilder: knitr
Collate:
'ImageMetadata.R'
'AnnotatedImage.R'
'RBioFormats.R'
'metadataAccessors.R'
'mockFile.R'
'read.image.R'
'read.metadata.R'
'read.omexml.R'
'utils.R'
'write.image.R'
'zzz.R'
RoxygenNote: 7.2.1
Please add an introductory paragraph to vignette indicating role in the Bioconductor ecosystem and general scientific value of the package, so that a newcomer to your package could appreciate its value.
A reviewer has been assigned to your package. Learn what to expect during the review process.
IMPORTANT: Please read this documentation for setting up remotes to push to git.bioconductor.org. It is required to push a version bump to git.bioconductor.org to trigger a new build.
Bioconductor utilized your github ssh-keys for git.bioconductor.org access. To manage keys and future access you may want to active your Bioconductor Git Credentials Account
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
On one or more platforms, the build results were: "WARNINGS". This may mean there is a problem with the package that you need to fix. Or it may mean that there is a problem with the build system itself.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
I've followed the instructions on setting up the remote upstream repo but for some reason I'm unable to push, see below. Any ideas?
$ git remote add upstream [email protected]:packages/RBioFormats.git
$ git remote -v
origin https://github.com/aoles/RBioFormats.git (fetch)
origin https://github.com/aoles/RBioFormats.git (push)
upstream [email protected]:packages/RBioFormats.git (fetch)
upstream [email protected]:packages/RBioFormats.git (push)
$ git fetch --all
Fetching origin
Fetching upstream
From git.bioconductor.org:packages/RBioFormats
* [new branch] master -> upstream/master
$ git push upstream master
FATAL: W any packages/RBioFormats a.oles DENIED by fallthru
(or you mis-spelled the reponame)
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Have you activated the GitCredentials account for ssh keys?
I think I see what the issue is. I tried an adjustment on our end. Can you please try again.
Received a valid push on git.bioconductor.org; starting a build for commit id: 42682939f2b135145b813f8497d78bee9687d663
Thanks a lot Lori for your prompt help! ❤️
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Received a valid push on git.bioconductor.org; starting a build for commit id: 3926416a8ef8715c0ea2e305bd079586b4eb3925
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Hi Andrzej, @aoles Thank you for your submission. Please see the review below. Best regards, Marcel
RBioFormats #2793
- Overall, the package looks to be in good shape.
- The classes exported are primarily S4. I don't really understand the need for S3 method definitions. Can you please clarify?
DESCRIPTION
- Consider adding a URL pointing to the GitHub repository landing page.
- Looks good.
NAMESPACE
- Looks good.
vignettes/
- Include an installation section with the
BiocManagercode needed to install the package from Bioconductor. - Have you considered using
xml2? If so, are there any advantages to usingXML? - Avoid mentioning the GitHub package in the vignette once the package has been accepted to Bioconductor.
- Remove the
htmlproduct from the folder. - Minor. It's more natural to use
libraryinstead ofrequirein the vignette. - Minor. For readability and maintenance, consider staying within the 80-width character limit in the vignette.
R
- I am not sure what is
print.AnnotatedImageneeded for when there is ashowmethod? - Consider using
setAsrather thanas.Image.AnnotatedImagecoercion. - It may be better to have explicit arguments in the constructor function, e.g.,
AnnotatedImage(Image = Image())and have the validity checks be part of the function. - There may be more value to using the
setClassgenerator function rather thannewwithin the constructor function. See https://stackoverflow.com/a/16248773 - Use the
metadataandmetadata<-generics inS4Vectorsand avoid creating ametadata<-generic - Consider adding robustness in terms of internet connectivity to
.bioformats_jar_url
tests
- Most functions have some coverage, consider adding coverage to those with 0%.
> covr::package_coverage()
RBioFormats Coverage: 60.00%
R/read.metadata.R: 0.00%
R/read.omexml.R: 0.00%
R/zzz.R: 5.26%
R/ImageMetadata.R: 5.71%
R/AnnotatedImage.R: 16.67%
R/utils.R: 16.67%
R/metadataAccessors.R: 51.28%
R/read.image.R: 87.50%
R/write.image.R: 91.30%
R/mockFile.R: 100.00%
/
- Move or remove the
miscdirectory from the top level
Received a valid push on git.bioconductor.org; starting a build for commit id: f1a33aa28c183d00ea50185c75c1efabd3f0dd53
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Does it really need to attach rJava to the search path?
Received a valid push on git.bioconductor.org; starting a build for commit id: 9441dffcd4b9128a511274f6d2eec467f162ec56
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Good catch @lawremi , thank you for pointing this out! I've moved rJava from Depends to Imports.
Received a valid push on git.bioconductor.org; starting a build for commit id: 00f2ca94ddc5ee42ebd64dc27c8848e604157934
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Received a valid push on git.bioconductor.org; starting a build for commit id: 0f8c8750a3a4b9cb6906566979641159ee6cf233
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Received a valid push on git.bioconductor.org; starting a build for commit id: fe9a97f5e2bba79a280528469d8cf20d532dcf07
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.
Dear Marcel @LiNk-NY,
Thank you very much for the thorough review of my package. Please find my inline answers below.
I really hope the package can still make it into the upcoming release.
Looking forward to hearing from you soon. Cheers!
* The classes exported are primarily S4. I don't really understand the need for S3 method definitions. Can you please clarify?
While indeed the classes are S4, there are a few S3 methods which come in handy when interacting with these classes such as print and as.Image. You will find more details in my comments below.
As for seriesCount I would say that from the practical point of view it probably doesn't make much difference whether it is defined as an S3 generic or a S4 method as long as it dispatches only on a single argument. The advantage of the S3 approach I see is that it avoids all of the S4 dispatch overhead. What would be the practical benefits of rewriting these methods to S4?
DESCRIPTION
* Consider adding a URL pointing to the GitHub repository landing page.
Done.
vignettes/
* Include an installation section with the `BiocManager` code needed to install the package from Bioconductor. * Have you considered using `xml2`? If so, are there any advantages to using `XML`? * Avoid mentioning the GitHub package in the vignette once the package has been accepted to Bioconductor. * Remove the `html` product from the folder. * Minor. It's more natural to use `library` instead of `require` in the vignette. * Minor. For readability and maintenance, consider staying within the 80-width character limit in the vignette.
I've addressed all of the above issues.
R
* I am not sure what is `print.AnnotatedImage` needed for when there is a `show` method?
The print methods are there primarily because, unlike the show generics, they can have additional arguments. These arguments allow for a handy way to control how the object data is being displayed. See the example use of short and list.len arguments in the package vignette.
* Consider using `setAs` rather than `as.Image.AnnotatedImage` coercion.
This one is actually quite tricky. As AnnotatedImage class contains its superclass Image normally there wouldn't be any need for defining the coercion explicitly. However, AnnotatedImage sets dimnames on .Data which might be undesired for Image. Consider the following example.
library(RBioFormats)
#> BioFormats library version 6.10.1
library(EBImage)
f <- system.file("images", "sample-color.png", package="EBImage")
img_ebimage <- readImage(f)
img_rbioformats <- read.image(f)
img_coerced <- as(img_rbioformats, "Image")
identical(img_ebimage, img_coerced)
#> [1] FALSE
identical(img_ebimage, unname(img_coerced))
#> [1] TRUE
identical(img_ebimage, as.Image(img_rbioformats))
#> [1] TRUE
In fact, as.Image.AnnotatedImage uses the default coercion method internally and just removes dimnames from its product. Because there is an as.Image generic already provided such solution seemed quite natural to me. Do you think there are better ways of addressing this?
* It may be better to have explicit arguments in the constructor function, e.g., `AnnotatedImage(Image = Image())` and have the validity checks be part of the function.
I've refactored the the code to provide default arguments in the constructor rather than in prototypeargument to setClass. I'm not sure, however, I understand the point about moving validity checks to the constructor. Could you maybe clarify please?
* There may be more value to using the `setClass` generator function rather than `new` within the constructor function. See https://stackoverflow.com/a/16248773
Thanks a lot for pointing this out. I've followed Martin's suggestions from the SO answer and I think they are a great improvement to the code and it's readability.
* Use the `metadata` and `metadata<-` generics in `S4Vectors` and avoid creating a `metadata<-` generic
Done.
tests
* Most functions have some coverage, consider adding coverage to those with 0%.
Improved coverage:
> covr::package_coverage()
RBioFormats Coverage: 70.75%
R/zzz.R: 15.79%
R/AnnotatedImage.R: 16.67%
R/ImageMetadata.R: 48.65%
R/metadataAccessors.R: 51.35%
R/read.metadata.R: 85.71%
R/read.image.R: 90.48%
R/write.image.R: 91.30%
R/mockFile.R: 100.00%
R/read.omexml.R: 100.00%
R/utils.R: 100.00%
/
* Move or remove the `misc` directory from the top level
I've listed the misc directory under .Rbuildignore such that it won't be included in the package tarball. I believe it is fine to keep the directory, especially considering that it takes up only a few KBytes on disk.
Please add an introductory paragraph to vignette indicating role in the Bioconductor ecosystem and general scientific value of the package, so that a newcomer to your package could appreciate its value.
Fair point, thanks a lot @vjcitn! I've added a brief introduction to the vignette as you recommended.
Hi Andrzej, @aoles Thank you for making those changes.
The
showgenerics, they can have additional arguments. These arguments allow for a handy way to control how the object data is being displayed. See the example use ofshortandlist.lenarguments in the package vignette.
It is a bit unusual to have a print for an S4 class but I suppose it doesn't hurt to have the additional print functionality around.
In fact,
as.Image.AnnotatedImageuses the default coercion method internally and just removesdimnamesfrom its product. Because there is anas.Imagegeneric already provided such solution seemed quite natural to me. Do you think there are better ways of addressing this?
It's more natural, I think, to coerce using the as("class", object) method with S4 classes. The dimnames can be removed with the coercion function definition. Generally, mixing syntax from both S3 and S4 might confuse users in the long run.
I've refactored the the code to provide default arguments in the constructor rather than in
prototypeargument tosetClass. I'm not sure, however, I understand the point about moving validity checks to the constructor. Could you maybe clarify please?
I meant that the validity checks could be part of the checks for the inputs in AnnotatedImage but they seem to be redundant because you are constructing Image from the ... inputs. According to ?validObject, the validity methods will be run for Image superclass so no need to check for is(object, "Image") as a validity method.
Note also that the metadata argument in AnnotatedImage could be made more flexible by supporting list inputs and / or taking the metadata from the Image(...) input.
Best regards, Marcel
Received a valid push on git.bioconductor.org; starting a build for commit id: 1e32300b0d6991e7798191b324acebc379a037bd
Dear Package contributor,
This is the automated single package builder at bioconductor.org.
Your package has been built on Linux, Mac, and Windows.
Congratulations! The package built without errors or warnings on all platforms.
Please see the build report for more details. This link will be active for 21 days.
Remember: if you submitted your package after July 7th, 2020,
when making changes to your repository push to
[email protected]:packages/RBioFormats to trigger a new build.
A quick tutorial for setting up remotes and pushing to upstream can be found here.