On 03/31/2017 08:21 AM, Kevin RUE wrote:
Hi Martin,

Thanks a lot for systematically identifying the issue.

Looking at the issue for GOexpress now, I realise that the issue is not
in GOexpress itself, but actually within the VennDiagram package that
GOexpress imports. You actually captured that in your report:

"GOexpress","_VennDiagram_","GOexpress.Rcheck/GOexpress-Ex.Rout","VennDiagram::adjust.venn","VennDiagram/R/adjust.venn.R#42
 "

In your report, GOexpress is the only Bioconductor in this situation.
I can (and will) attempt to contact the maintainer of VennDiagram, but
it just makes me wonder if you have another suggestion to deal with this
kind of issue (/i.e./, imported packages not conforming to BioC
guidelines). Is this going to raise Warnings or Errors in BiocCheck ? If
so, should we ignore such packages altogether, as long as those packages
raise check issues?

Actually, the report was generated by an R-core member, Tomas Kalibera and the more extensive version includes all CRAN and Bioc packages. It reflects a general effort to address these and then make them errors, rather than warnings -- R CMD check would then fail.

Package dependencies are interesting. They are obviously hugely important to reduce redundant code, and to fix bugs once in a single place. But they also carry with them an additional maintenance cost. If VennDiagram is central to your package, especially if it implements complicated functionality, then definitely the balance is in favor of depending on it, and working with the maintainer to address problems that you discover.

The Bioc requirements are really about your package, especially enforcing adequate documentation.

Martin


As a side note, I have actually already been going through GOexpress to
prepare a new major version of GOexpress (2.x.x) that will introduce S4
where relevant, and break down large functions into more sensibly-sized
steps. However, most likely that won't be ready for the next BioC release.

Best,
Kevin


On Wed, Mar 29, 2017 at 10:44 PM, Martin Morgan
<martin.mor...@roswellpark.org <mailto:martin.mor...@roswellpark.org>>
wrote:

    On 03/29/2017 05:37 PM, Martin Morgan wrote:

        Bioc developers,

        R emits a warning when a condition test has length > 1

        $ R --vanilla

            if (letters == "a") TRUE

        [1] TRUE
        Warning message:
        In if (letters == "a") TRUE :
          the condition has length > 1 and only the first element will
        be used

        These are almost always programming errors.

        R-3-4-branch and R-devel can be configured to report such errors, as
        described on the help page for, e.g., `?"if"`

        $ _R_CHECK_LENGTH_1_CONDITION_=TRUE R --vanilla

            if (letters=="a") TRUE

        Error in if (letters == "a") TRUE : the condition has length > 1

        The attached file (thanks to Tomas Kalibera) summarizes Bioconductor
        code that triggers this type of error.


    Second try on the attachment

    r = read.csv("long-conditional-bioc.txt")



        If you maintain one of these packages (appearing in either column),
        please address the error. And of course as a developer, please avoid
        making the error in the future!

            r = read.csv("long-conditional-bioc.csv")
            r[, c("FailedPackage", "Srcref")]

           FailedPackage                                          Srcref
        1     biovizBase               biovizBase/R/crunch-method.R#295
        2  branchpointer               branchpointer/R/makeRegions.R#41
        3       Cardinal                        Cardinal/R/spatial.R#57
        4      debrowser                       debrowser/R/heatmap.R#38
        5        DMRcate                        DMRcate/R/DMR.plot.R#13
        6      exomePeak                          exomePeak/R/RMT.R#119
        7          fabia                           fabia/R/fabia.R#1504
        8   GenomeInfoDb             GenomicFeatures/R/TxDb-class.R#377
        9         Glimma                           Glimma/R/hexcol.R#32
        10     GOexpress                 VennDiagram/R/adjust.venn.R#42
        11      GUIDEseq GUIDEseq/R/offTargetAnalysisOfPeakRegions.R#95
        12      hapFabia  hapFabia/R/methods-IBDsegmentList-class.R#110
        13     MassArray                   MassArray/R/convControl.R#26
        14    methylPipe                methylPipe/R/Allfunctions.R#635
        15        NOISeq               NOISeq/R/biodetection.plot.R#157
        16      pathview                  pathview/R/geneannot.map.R#31
        17      phyloseq              phyloseq/R/multtest-wrapper.R#101
        18         rHVDM              rHVDM/R/measurementerrorHVDM.R#23
        19          SEPA                  SEPA/R/truetimevisualize.R#28
        20      SPLINTER                 SPLINTER/R/main_splinter.R#817

        As an example the GenomeInfoDb package (row 8) has this complete
        record

        FailedPackage "GenomeInfoDb"
        IfPackage     "GenomicFeatures"
        File          "GenomeInfoDb.Rcheck/GenomeInfoDb-Ex.Rout"
        Function      "S4 Method seqlevels<-:GenomeInfoDb defined in
        namespace
                       GenomicFeatures with signature TxDb has this body."
        Srcref        "GenomicFeatures/R/TxDb-class.R#377 "

        The problem was from

          GenomicFeatures/R/TxDb-class.R#377

        which has

            mode <- GenomeInfoDb:::getSeqlevelsReplacementMode(value,
        x_seqlevels0)
            if (mode == -2L) {

        I looked at

            GenomeInfoDb:::getSeqlevelsReplacementMode

        function (new_seqlevels, old_seqlevels)
        {
            ...

        and saw that its code returns a vector with length > 1 intentionally
        under some specific circumstances. Also, all other uses of the
        return
        value of this function (in the GenomeInfoDb and GenomicFeatures
        package)
        test for identity of the return value via `identical()`, which
        is always
        a scalar. This suggests the fix

        GenomicFeatures$ svn diff R/TxDb-class.R
        Index: R/TxDb-class.R
        ===================================================================
        --- R/TxDb-class.R    (revision 127829)
        +++ R/TxDb-class.R    (working copy)
        @@ -374,7 +374,7 @@
             ## detect the situation where the user intention is to
        subset the
        "real"
             ## seqlevels.
             mode <- GenomeInfoDb:::getSeqlevelsReplacementMode(value,
        x_seqlevels0)
        -    if (mode == -2L) {
        +    if (identical(mode, -2L)) {
                 ## "subsetting of the real seqlevels" mode
                 x$user_seqlevels <- value
                 x$user2seqlevels0 <- match(value, x_seqlevels0)

        I did do some more digging around.

        From the report, the failure was detected while running the
        example page
        script generated while checking GenomeInfoDb.

          GenomeInfoDb.Rcheck/GenomeInfoDb-Ex.Rout

        So I generated this

          R CMD build --no-build-vignettes GenomeInfoDb
          R CMD check GenomeInfoDb_1.27.11.tar.gz

        and processed it to find the error

          _R_CHECK_LENGTH_1_CONDITION_=TRUE R -f
        GenomeInfoDb.Rcheck/GenomeInfoDb-Ex.R

        It failed while running the example on the help page with name
        "seqlevels-wrapper"

            ### Name: seqlevels-wrappers
            ### Title: Convenience wrappers to the seqlevels() getter
            and setter
            ### Aliases: seqlevels-wrappers keepSeqlevels dropSeqlevels

        renameSeqlevels

            ###   restoreSeqlevels standardChromosomes
            keepStandardChromosomes
            ### Keywords: methods utilities

            ### ** Examples

        ...

            renameSeqlevels(txdb, sub("chr", "CH", seqlevels(txdb)))

        Error in if (mode == -2L) { : the condition has length > 1
        Calls: renameSeqlevels -> seqlevels<- -> seqlevels<-
        Execution halted

        I then could get a relatively simple reproducible example in R with

        $ _R_CHECK_LENGTH_1_CONDITION_=TRUE R --vanilla

            suppressPackageStartupMessages(library(GenomeInfoDb))
            example("seqlevels-wrappers")


        After installing the updated GenomicFeatures package, the error
        did not
        occur. Likewise, running GenomeInfoDb-Ex.R did not generate any
        errors.

        Martin


        This email message may contain legally privileged and/or
        confidential
        information.  If you are not the intended recipient(s), or the
        employee
        or agent responsible for the delivery of this message to the
        intended
        recipient(s), you are hereby notified that any disclosure, copying,
        distribution, or use of this email message is prohibited.  If
        you have
        received this message in error, please notify the sender
        immediately by
        e-mail and delete this email message from your computer. Thank you.
        _______________________________________________
        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>



    This email message may contain legally privileged and/or
    confidential information.  If you are not the intended recipient(s),
    or the employee or agent responsible for the delivery of this
    message to the intended recipient(s), you are hereby notified that
    any disclosure, copying, distribution, or use of this email message
    is prohibited.  If you have received this message in error, please
    notify the sender immediately by e-mail and delete this email
    message from your computer. Thank you.

    _______________________________________________
    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>




This email message may contain legally privileged and/or...{{dropped:2}}

_______________________________________________
Bioc-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/bioc-devel

Reply via email to