diff --git a/.Rbuildignore b/.Rbuildignore index 5289726..f0642d6 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -11,3 +11,4 @@ ^docs$ ^pkgdown$ ^.lintr$ +^LICENSE\.md$ diff --git a/.github/workflows/rhub.yaml b/.github/workflows/rhub.yaml new file mode 100644 index 0000000..74ec7b0 --- /dev/null +++ b/.github/workflows/rhub.yaml @@ -0,0 +1,95 @@ +# R-hub's generic GitHub Actions workflow file. It's canonical location is at +# https://github.com/r-hub/actions/blob/v1/workflows/rhub.yaml +# You can update this file to a newer version using the rhub2 package: +# +# rhub::rhub_setup() +# +# It is unlikely that you need to modify this file manually. + +name: R-hub +run-name: "${{ github.event.inputs.id }}: ${{ github.event.inputs.name || format('Manually run by {0}', github.triggering_actor) }}" + +on: + workflow_dispatch: + inputs: + config: + description: 'A comma separated list of R-hub platforms to use.' + type: string + default: 'linux,windows,macos' + name: + description: 'Run name. You can leave this empty now.' + type: string + id: + description: 'Unique ID. You can leave this empty now.' + type: string + +jobs: + + setup: + runs-on: ubuntu-latest + outputs: + containers: ${{ steps.rhub-setup.outputs.containers }} + platforms: ${{ steps.rhub-setup.outputs.platforms }} + + steps: + # NO NEED TO CHECKOUT HERE + - uses: r-hub/actions/setup@v1 + with: + config: ${{ github.event.inputs.config }} + id: rhub-setup + + linux-containers: + needs: setup + if: ${{ needs.setup.outputs.containers != '[]' }} + runs-on: ubuntu-latest + name: ${{ matrix.config.label }} + strategy: + fail-fast: false + matrix: + config: ${{ fromJson(needs.setup.outputs.containers) }} + container: + image: ${{ matrix.config.container }} + + steps: + - uses: r-hub/actions/checkout@v1 + - uses: r-hub/actions/platform-info@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + - uses: r-hub/actions/setup-deps@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + - uses: r-hub/actions/run-check@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + + other-platforms: + needs: setup + if: ${{ needs.setup.outputs.platforms != '[]' }} + runs-on: ${{ matrix.config.os }} + name: ${{ matrix.config.label }} + strategy: + fail-fast: false + matrix: + config: ${{ fromJson(needs.setup.outputs.platforms) }} + + steps: + - uses: r-hub/actions/checkout@v1 + - uses: r-hub/actions/setup-r@v1 + with: + job-config: ${{ matrix.config.job-config }} + token: ${{ secrets.RHUB_TOKEN }} + - uses: r-hub/actions/platform-info@v1 + with: + token: ${{ secrets.RHUB_TOKEN }} + job-config: ${{ matrix.config.job-config }} + - uses: r-hub/actions/setup-deps@v1 + with: + job-config: ${{ matrix.config.job-config }} + token: ${{ secrets.RHUB_TOKEN }} + - uses: r-hub/actions/run-check@v1 + with: + job-config: ${{ matrix.config.job-config }} + token: ${{ secrets.RHUB_TOKEN }} diff --git a/DESCRIPTION b/DESCRIPTION index f119ca5..42ab14e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,7 +15,7 @@ Language: en-GB License: MIT + file LICENSE Encoding: UTF-8 Roxygen: list(markdown = TRUE) -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.2 Suggests: knitr, readxl, @@ -27,7 +27,6 @@ Imports: dplyr, futile.logger, ggplot2, - lifecycle, magrittr, rlang, runjags, @@ -38,4 +37,3 @@ Imports: Depends: R (>= 2.10) LazyData: true -VignetteBuilder: knitr diff --git a/LICENSE b/LICENSE index 261eeb9..0b1c244 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,2 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +YEAR: 2024 +COPYRIGHT HOLDER: rbqmR authors diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..e3f659c --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2024 rbqmR authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.Rmd b/README.Rmd index 87eb17b..d6cfa1e 100644 --- a/README.Rmd +++ b/README.Rmd @@ -31,7 +31,7 @@ devtools::load_all() [![Test Coverage](https://raw.githubusercontent.com/openpharma/rbqmR/_xml_coverage_reports/data/main/badge.svg)](https://github.com/openpharma/rbqmR/blob/_xml_coverage_reports/data/main/coverage.xml) ## Introduction -The purpose of the `rbqmR` package is to provide a repository of r-based tools for the implementation of risk-based quality management. +The purpose of the `rbqmR` package is to provide a repository of r-based tools for the implementation of risk-based quality management. Tools currently exist for @@ -446,8 +446,9 @@ getModelString("poisson") ``` ```{r, echo = FALSE} -# cat(stringr::str_replace_all(getModelString("poisson"), "\\n", "
")) +# nolint start cat(getModelString("poisson")) +# nolint end ``` Fitting the model is straightforward. diff --git a/README.bib b/README.bib index bd31170..7aa6301 100644 --- a/README.bib +++ b/README.bib @@ -23,8 +23,6 @@ @Article{KATZ number = {3}, pages = {469-474}, volume = {34}, - doi = {https://doi.org/10.2307/2530610}, - url = {https://www.jstor.org/stable/2530610}, } @Online{Transcelerate2020, diff --git a/README.md b/README.md index 31fb6d9..5d3e38b 100644 --- a/README.md +++ b/README.md @@ -52,152 +52,17 @@ data(berrySummary) berrySummary %>% kable(digits = c(0, 0, 0, 2)) ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-Site - -Subjects - -Events - -ObservedResponse -
-1 - -20 - -20 - -1.00 -
-2 - -10 - -4 - -0.40 -
-3 - -16 - -11 - -0.69 -
-4 - -19 - -10 - -0.53 -
-5 - -14 - -5 - -0.36 -
-6 - -46 - -36 - -0.78 -
-7 - -10 - -9 - -0.90 -
-8 - -9 - -7 - -0.78 -
-9 - -6 - -4 - -0.67 -
+| Site | Subjects | Events | ObservedResponse | +|-----:|---------:|-------:|-----------------:| +| 1 | 20 | 20 | 1.00 | +| 2 | 10 | 4 | 0.40 | +| 3 | 16 | 11 | 0.69 | +| 4 | 19 | 10 | 0.53 | +| 5 | 14 | 5 | 0.36 | +| 6 | 46 | 36 | 0.78 | +| 7 | 10 | 9 | 0.90 | +| 8 | 9 | 7 | 0.78 | +| 9 | 6 | 4 | 0.67 | The central tenet of the QTL methodology implemented in `rbqmR` is not that a current trial should behave in a similar fashion to a “similar” @@ -213,39 +78,39 @@ We fit the Bayesian Hierarchical Model described by Berry et al … fitted <- berrySummary %>% fitBayesBinomialModel(n = Subjects, r = Events) #> Loading required namespace: rjags -#> INFO [2024-06-17 07:55:30] Status of model fitting: OK +#> INFO [2024-11-01 09:17:12] Status of model fitting: OK fitted #> $tab -#> # A tibble: 20,000 × 4 +#> # A tibble: 20,232 × 4 #> p a b q #> -#> 1 0.814 6.46 2.41 76 -#> 2 0.854 7.28 2.79 84 -#> 3 0.753 6.34 3.09 62 -#> 4 0.691 8.96 3.68 49 -#> 5 0.690 9.58 3.74 48 -#> 6 0.706 8.13 2.52 52 -#> 7 0.583 8.45 3.63 27 -#> 8 0.624 6.44 3.67 34 -#> 9 0.664 3.95 3.65 43 -#> 10 0.608 6.91 3.48 31 -#> # ℹ 19,990 more rows +#> 1 0.491 9.73 2.87 15 +#> 2 0.693 8.69 2.84 49 +#> 3 0.508 5.32 2.22 16 +#> 4 0.795 4.87 2.32 72 +#> 5 0.923 3.27 2.23 94 +#> 6 0.464 3.99 2.18 12 +#> 7 0.613 3.06 2.48 33 +#> 8 0.551 3.53 2.20 22 +#> 9 0.635 4.92 2.42 37 +#> 10 0.612 5.61 3.99 33 +#> # ℹ 20,222 more rows #> #> $results #> -#> JAGS model summary statistics from 20000 samples (chains = 2; adapt+burnin = 5000): -#> -#> Lower95 Median Upper95 Mean SD Mode MCerr MC%ofSD SSeff -#> p[10] 0.36562 0.6991 0.99996 0.68282 0.17257 -- 0.0013713 0.8 15837 -#> a 2.2683 5.9563 9.9997 5.9373 2.2751 -- 0.056178 2.5 1640 -#> b 0.62627 2.6183 5.1708 2.7753 1.2508 -- 0.031487 2.5 1578 -#> -#> AC.10 psrf -#> p[10] 0.0094542 1 -#> a 0.21013 1.0011 -#> b 0.22843 1.0003 +#> JAGS model summary statistics from 20232 samples (chains = 2; adapt+burnin = 5000): +#> +#> Lower95 Median Upper95 Mean SD Mode MCerr MC%ofSD SSeff +#> p[10] 0.36447 0.69819 0.99969 0.68033 0.17298 -- 0.0013558 0.8 16279 +#> a 2.1999 5.8971 9.9992 5.8967 2.2932 -- 0.060553 2.6 1434 +#> b 0.57511 2.629 5.1368 2.7718 1.2458 -- 0.03174 2.5 1541 +#> +#> AC.10 psrf +#> p[10] -0.0109 1.0001 +#> a 0.2438 1.0016 +#> b 0.23706 1.0018 #> -#> Total time taken: 3.9 seconds +#> Total time taken: 1.9 seconds #> #> #> $status @@ -293,7 +158,7 @@ berrySummary %>% #> [1] "OK" #> #> $qtl -#> [1] 0.6828212 +#> [1] 0.6803784 #> #> $data #> # A tibble: 9 × 5 @@ -353,7 +218,7 @@ berrySummary %>% #> [1] "OK" #> #> $qtl -#> [1] 0.6991032 +#> [1] 0.6982975 #> #> $data #> # A tibble: 9 × 5 @@ -386,7 +251,7 @@ berrySummary %>% #> #> $qtl #> 10% -#> 0.4495861 +#> 0.4469523 #> #> $data #> # A tibble: 9 × 5 @@ -428,7 +293,7 @@ qtlProbInRange #> [1] "action" #> #> $qtl -#> [1] 0.46465 +#> [1] 0.4652531 #> #> $data #> # A tibble: 9 × 5 @@ -446,7 +311,7 @@ qtlProbInRange ``` Again, the QTL is breached, since the probability that the study-level -event rate is in the range \[0.5, 0.75\] is only 0.46. +event rate is in the range \[0.5, 0.75\] is only 0.47. #### Using an arbitrary criterion @@ -485,7 +350,7 @@ berrySummary %>% } ) #> $qtl -#> [1] 0.6828212 +#> [1] 0.6803784 #> #> $status #> [1] "Breach" @@ -536,17 +401,17 @@ The `quantiles` element of the return value contains the mappings from quantile of the posterior to observed values of the metric. For example, the first row of `rvSiteMetrics$quantiles` shows that the lower action limit is the 5th centile of the posterior, which corresponds to an event -probability of 0.366. +probability of 0.365. ``` r rvSiteMetrics$quantiles #> # A tibble: 4 × 4 #> Threshold Status Quantile p #> -#> 1 Lower action 0.05 0.366 -#> 2 Lower warn 0.2 0.543 -#> 3 Upper warn 0.8 0.838 -#> 4 Upper action 0.95 0.933 +#> 1 Lower action 0.05 0.365 +#> 2 Lower warn 0.2 0.538 +#> 3 Upper warn 0.8 0.834 +#> 4 Upper action 0.95 0.932 ``` As before, the `data` element of the list contains a copy of the site @@ -704,7 +569,7 @@ berrySummary %>% ) ) ) -#> Warning: The following aesthetics were dropped during statistical transformation: size +#> Warning: The following aesthetics were dropped during statistical transformation: size. #> ℹ This can happen when ggplot fails to infer the correct grouping structure in #> the data. #> ℹ Did you forget to specify a `group` aesthetic or to convert a numerical @@ -988,7 +853,7 @@ Fitting the model is straightforward. ``` r poissonFit <- cavalrySummary %>% fitBayesPoissonModel(Deaths, TotalTime) -#> INFO [2024-06-17 07:55:41] Status of model fitting: OK +#> INFO [2024-11-01 09:17:16] Status of model fitting: OK poissonFit$tab %>% createQtlPlot( metric = lambda, @@ -1005,9 +870,9 @@ poissonFit$tab %>% ``` r sessionInfo() -#> R version 4.3.1 (2023-06-16) -#> Platform: x86_64-pc-linux-gnu (64-bit) -#> Running under: Ubuntu 22.04.3 LTS +#> R version 4.4.1 (2024-06-14) +#> Platform: x86_64-pc-linux-gnu +#> Running under: Ubuntu 22.04.5 LTS #> #> Matrix products: default #> BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 @@ -1028,45 +893,43 @@ sessionInfo() #> [1] stats graphics grDevices utils datasets methods base #> #> other attached packages: -#> [1] rbqmR_0.0.0.9002 testthat_3.2.0 lubridate_1.9.3 forcats_1.0.0 -#> [5] stringr_1.5.0 dplyr_1.1.3 purrr_1.0.2 readr_2.1.4 -#> [9] tidyr_1.3.0 tibble_3.2.1 ggplot2_3.4.3 tidyverse_2.0.0 -#> [13] kableExtra_1.3.4 magrittr_2.0.3 +#> [1] rbqmR_0.0.0.9002 testthat_3.2.1.1 lubridate_1.9.3 forcats_1.0.0 +#> [5] stringr_1.5.1 dplyr_1.1.4 purrr_1.0.2 readr_2.1.5 +#> [9] tidyr_1.3.1 tibble_3.2.1 ggplot2_3.5.1 tidyverse_2.0.0 +#> [13] kableExtra_1.4.0 magrittr_2.0.3 #> #> loaded via a namespace (and not attached): -#> [1] tidyselect_1.2.0 viridisLite_0.4.2 farver_2.1.1 -#> [4] rjags_4-14 fastmap_1.1.1 promises_1.2.1 -#> [7] digest_0.6.33 timechange_0.2.0 mime_0.12 -#> [10] lifecycle_1.0.3 ellipsis_0.3.2 processx_3.8.2 -#> [13] compiler_4.3.1 rlang_1.1.1 tools_4.3.1 -#> [16] utf8_1.2.3 yaml_2.3.7 knitr_1.44 -#> [19] lambda.r_1.2.4 labeling_0.4.3 prettyunits_1.2.0 -#> [22] htmlwidgets_1.6.2 pkgbuild_1.4.2 xml2_1.3.5 -#> [25] pkgload_1.3.3 miniUI_0.1.1.1 withr_2.5.1 -#> [28] desc_1.4.2 grid_4.3.1 fansi_1.0.5 -#> [31] urlchecker_1.0.1 profvis_0.3.8 toOrdinal_1.3-0.0 -#> [34] xtable_1.8-4 colorspace_2.1-0 scales_1.2.1 -#> [37] cli_3.6.1 rmarkdown_2.25 crayon_1.5.2 -#> [40] generics_0.1.3 remotes_2.4.2.1 rstudioapi_0.15.0 -#> [43] httr_1.4.7 tzdb_0.4.0 sessioninfo_1.2.2 -#> [46] cachem_1.0.8 rvest_1.0.3 parallel_4.3.1 -#> [49] formatR_1.14 vctrs_0.6.3 devtools_2.4.5 -#> [52] webshot_0.5.5 callr_3.7.3 hms_1.1.3 -#> [55] systemfonts_1.0.5 glue_1.6.2 ps_1.7.5 -#> [58] stringi_1.7.12 gtable_0.3.4 futile.logger_1.4.3 -#> [61] later_1.3.1 munsell_0.5.0 pillar_1.9.0 -#> [64] brio_1.1.3 htmltools_0.5.6.1 R6_2.5.1 -#> [67] rprojroot_2.0.3 evaluate_0.22 shiny_1.7.5 -#> [70] lattice_0.21-9 highr_0.10 futile.options_1.0.1 -#> [73] memoise_2.0.1 httpuv_1.6.11 Rcpp_1.0.11 -#> [76] svglite_2.1.1 coda_0.19-4 xfun_0.40 -#> [79] fs_1.6.3 usethis_2.2.2 runjags_2.2.2-1.1 -#> [82] pkgconfig_2.0.3 +#> [1] toOrdinal_1.3-0.0 gtable_0.3.5 xfun_0.48 +#> [4] htmlwidgets_1.6.4 devtools_2.4.5 remotes_2.5.0 +#> [7] lattice_0.22-6 tzdb_0.4.0 vctrs_0.6.5 +#> [10] tools_4.4.1 generics_0.1.3 parallel_4.4.1 +#> [13] fansi_1.0.6 highr_0.11 pkgconfig_2.0.3 +#> [16] desc_1.4.3 lifecycle_1.0.4 farver_2.1.2 +#> [19] compiler_4.4.1 brio_1.1.5 munsell_0.5.1 +#> [22] runjags_2.2.2-4 httpuv_1.6.15 htmltools_0.5.8.1 +#> [25] usethis_3.0.0 yaml_2.3.10 crayon_1.5.3 +#> [28] pillar_1.9.0 later_1.3.2 urlchecker_1.0.1 +#> [31] ellipsis_0.3.2 cachem_1.1.0 sessioninfo_1.2.2 +#> [34] mime_0.12 tidyselect_1.2.1 digest_0.6.37 +#> [37] stringi_1.8.4 labeling_0.4.3 rprojroot_2.0.4 +#> [40] fastmap_1.2.0 grid_4.4.1 colorspace_2.1-1 +#> [43] cli_3.6.3 pkgbuild_1.4.4 utf8_1.2.4 +#> [46] withr_3.0.1 scales_1.3.0 promises_1.3.0 +#> [49] timechange_0.3.0 lambda.r_1.2.4 rmarkdown_2.28 +#> [52] futile.logger_1.4.3 rjags_4-16 hms_1.1.3 +#> [55] coda_0.19-4.1 memoise_2.0.1 shiny_1.9.1 +#> [58] evaluate_1.0.1 knitr_1.48 miniUI_0.1.1.1 +#> [61] viridisLite_0.4.2 futile.options_1.0.1 profvis_0.4.0 +#> [64] rlang_1.1.4 Rcpp_1.0.13 xtable_1.8-4 +#> [67] glue_1.8.0 formatR_1.14 xml2_1.3.6 +#> [70] pkgload_1.4.0 svglite_2.1.3 rstudioapi_0.16.0 +#> [73] R6_2.5.1 systemfonts_1.1.0 fs_1.6.4 ``` # References -
+
@@ -1092,7 +955,6 @@ Pharmaceutical Company.” *PharmaSUG*. Katz D, Azen SP, Baptista J. 1978. “Obtaining Confidence Intervals for the Risk Ratio in Cohort Studies.” *Biometrics* 34 (3): 469–74. -https://doi.org/.
diff --git a/man/figures/README-createQtlPlot-1.png b/man/figures/README-createQtlPlot-1.png index 61c5d75..94b0cf2 100644 Binary files a/man/figures/README-createQtlPlot-1.png and b/man/figures/README-createQtlPlot-1.png differ diff --git a/man/figures/README-unnamed-chunk-13-1.png b/man/figures/README-unnamed-chunk-13-1.png index efe91de..c861bf7 100644 Binary files a/man/figures/README-unnamed-chunk-13-1.png and b/man/figures/README-unnamed-chunk-13-1.png differ diff --git a/man/figures/README-unnamed-chunk-14-1.png b/man/figures/README-unnamed-chunk-14-1.png index 4eb4862..9117ba1 100644 Binary files a/man/figures/README-unnamed-chunk-14-1.png and b/man/figures/README-unnamed-chunk-14-1.png differ diff --git a/man/figures/README-unnamed-chunk-25-1.png b/man/figures/README-unnamed-chunk-25-1.png index b44e682..5beda36 100644 Binary files a/man/figures/README-unnamed-chunk-25-1.png and b/man/figures/README-unnamed-chunk-25-1.png differ diff --git a/tests/testthat/test-createQtlBubblePlot.R b/tests/testthat/test-createQtlBubblePlot.R index d2e563b..1bb71fb 100644 --- a/tests/testthat/test-createQtlBubblePlot.R +++ b/tests/testthat/test-createQtlBubblePlot.R @@ -89,8 +89,7 @@ test_that("creatQtlBubblePlot output contains correct elements", { # labels expect_equal(p$labels, list("x" = "Snapshot", "y" = "ObservedResponse", "colour" = "Region", "size" = "Subjects", "group" = "Snapshot")) # guides - expect_equal(names(p$guides), "size") - expect_equal(p$guides$size, "none") + expect_equal(names(p$guides), c("guides", "super")) # With limit lines referenceLines <- list( @@ -119,6 +118,5 @@ test_that("creatQtlBubblePlot output contains correct elements", { # labels expect_equal(p$labels, list("x" = "Snapshot", "y" = "ObservedResponse", "colour" = "Region", "size" = "Subjects", "group" = "Snapshot", "yintercept" = "yintercept")) # guides - expect_equal(names(p$guides), "size") - expect_equal(p$guides$size, "none") + expect_equal(names(p$guides), c("guides", "super")) }) diff --git a/tests/testthat/test-createQtlPlot.R b/tests/testthat/test-createQtlPlot.R index b4652e9..890d9e0 100644 --- a/tests/testthat/test-createQtlPlot.R +++ b/tests/testthat/test-createQtlPlot.R @@ -58,5 +58,5 @@ test_that("createQtlPlot creates a valid ggplot object", { "fill" = fill, "weight" = weight )) # guides - expect_equal(names(p$guides), NULL) + expect_equal(names(p$guides), c("guides", "super")) })