<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.2 20190208//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd"><article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="other" dtd-version="1.2" xml:lang="en">
    <front>
        <journal-meta>
            <journal-id journal-id-type="pmc">Gates Open Res</journal-id>
            <journal-title-group>
                <journal-title>Gates Open Research</journal-title>
            </journal-title-group>
            <issn pub-type="epub">2572-4754</issn>
            <publisher>
                <publisher-name>F1000 Research Limited</publisher-name>
                <publisher-loc>London, UK</publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.12688/gatesopenres.15268.1</article-id>
            <article-categories>
                <subj-group subj-group-type="heading">
                    <subject>Software Tool Article</subject>
                </subj-group>
                <subj-group>
                    <subject>Articles</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title>Introducing 
                    <italic>qrlabelr</italic>: Fast user-friendly software for machine- and human-readable labels in agricultural research and development</article-title>
                <fn-group content-type="pub-status">
                    <fn>
                        <p>[version 1; peer review: 2 approved, 1 approved with reservations]</p>
                    </fn>
                </fn-group>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Kena</surname>
                        <given-names>Alexander</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Conceptualization</role>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Visualization</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <uri content-type="orcid">https://orcid.org/0000-0003-3385-4945</uri>
                    <xref ref-type="corresp" rid="c1">a</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Ogoe</surname>
                        <given-names>Ebenezer</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Software</role>
                    <role content-type="http://credit.niso.org/">Visualization</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Original Draft Preparation</role>
                    <uri content-type="orcid">https://orcid.org/0000-0001-7642-6292</uri>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Cruet-Burgos</surname>
                        <given-names>Clara</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Validation</role>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Agyare</surname>
                        <given-names>Richard</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Validation</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                    <xref ref-type="aff" rid="a3">3</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Adoma</surname>
                        <given-names>Naomi</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Validation</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                    <xref ref-type="aff" rid="a4">4</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Annor</surname>
                        <given-names>Benjamin</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Validation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a2">2</xref>
                </contrib>
                <contrib contrib-type="author" corresp="no">
                    <name>
                        <surname>Raymundo</surname>
                        <given-names>Rubi</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Validation</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Morris</surname>
                        <given-names>Geoffrey</given-names>
                    </name>
                    <role content-type="http://credit.niso.org/">Funding Acquisition</role>
                    <role content-type="http://credit.niso.org/">Supervision</role>
                    <role content-type="http://credit.niso.org/">Writing &#x2013; Review &amp; Editing</role>
                    <xref ref-type="corresp" rid="c2">b</xref>
                    <xref ref-type="aff" rid="a1">1</xref>
                </contrib>
                <aff id="a1">
                    <label>1</label>Soil and Crop Sciences, Colorado State University, Fort Collins, Colorado, 80523, USA</aff>
                <aff id="a2">
                    <label>2</label>Crop and Soil Sciences, Kwame Nkrumah University of Science and Technology, Kumasi, Ashanti, PMB, Ghana</aff>
                <aff id="a3">
                    <label>3</label>Council for Scientific and Industrial Research-Savanna Agricultural Research Institute, Nyankpala/Tamale, Northern region, Ghana</aff>
                <aff id="a4">
                    <label>4</label>Council for Scientific and Industrial Research-Crops Research Institute, Fumesua/Kumasi, Ashanti, Ghana</aff>
            </contrib-group>
            <author-notes>
                <corresp id="c1">
                    <label>a</label>
                    <email xlink:href="mailto:alexander.kena@colostate.edu">alexander.kena@colostate.edu</email>
                </corresp>
                <corresp id="c2">
                    <label>b</label>
                    <email xlink:href="mailto:geoff.morris@colostate.edu">geoff.morris@colostate.edu</email>
                </corresp>
                <fn fn-type="conflict">
                    <p>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>27</day>
                <month>3</month>
                <year>2024</year>
            </pub-date>
            <pub-date pub-type="collection">
                <year>2024</year>
            </pub-date>
            <volume>8</volume>
            <elocation-id>28</elocation-id>
            <history>
                <date date-type="accepted">
                    <day>23</day>
                    <month>2</month>
                    <year>2024</year>
                </date>
            </history>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2024 Kena A et al.</copyright-statement>
                <copyright-year>2024</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access article distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <self-uri content-type="pdf" xlink:href="https://gatesopenresearch.org/articles/8-28/pdf"/>
            <abstract>
                <p>The advent of modern tools in agricultural experiments, digital data collection, and high-throughput phenotyping have necessitated field plot labels that are both machine- and human-readable. Such labels are usually made with commercial software, which are often inaccessible to under-funded research programs in developing countries. The availability of free fit-for-purpose label design software to under-funded research programs in developing countries would address one of the main roadblocks to modernizing agricultural research. The goal was to develop a new open-source software with design features well-suited for field trials and other agricultural experiments. We report here 
                    <italic toggle="yes">qrlabelr</italic>, a new software for creating print-ready plot labels that builds on the foundation of an existing open-source program. The 
                    <italic toggle="yes">qrlabelr</italic> software offers more flexibility in the label design steps, guarantees true string fidelity after QR encoding, and provides faster label generation to users. The new software is available as an R package and offers customizable functions for generating plot labels. For non-R users or beginners in R programming, the package provides an interactive Shiny app version that can be launched from R locally or accessed online at 
                    <ext-link ext-link-type="uri" xlink:href="https://bit.ly/3Sud4xy">https://bit.ly/3Sud4xy</ext-link>. The design philosophy of this new program emphasizes the adoption of best practices in plot label design to enhance reproducibility, tracking, and accurate data curation in agricultural research and development studies.</p>
            </abstract>
            <kwd-group kwd-group-type="author">
                <kwd>Agricultural experiments</kwd>
                <kwd>plot labels</kwd>
                <kwd>open-source software</kwd>
                <kwd>QR codes</kwd>
            </kwd-group>
            <funding-group>
                <award-group id="fund-1" xlink:href="http://dx.doi.org/10.13039/100000865">
                    <funding-source>Gates Foundation</funding-source>
                    <award-id>deleteINV-039575</award-id>
                </award-group>
                <award-group id="fund-2" xlink:href="http://dx.doi.org/10.13039/100000200">
                    <funding-source>United States Agency for International Development</funding-source>
                    <award-id>7200AA-19LE-00005</award-id>
                </award-group>
                <funding-statement>This study was supported by funding to G.P.M. from Alliance Bioversity-CIAT under the project "Artemis - Phenotyping technologies to enable on-farm breeding" (project principal investigator David Guerena) funded by the Gates Foundation. This publication is made possible by the generous support of the American people through the United States Agency of International Development (USAID). The contents are the responsibility of the authors and do not necessarily reflect the views of USAID or the United States Government. Program activities are funded by the USAID through the Innovation Lab for Crop Improvement under Cooperative Agreement No. 7200AA-19LE-00005.</funding-statement>
                <funding-statement>
                    <italic>The funders had no role in study design, data collection and analysis, decision to publish, or preparation of the manuscript.</italic>
                </funding-statement>
            </funding-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="intro">
            <title>Introduction</title>
            <p>The introduction of digital data collection and high-throughput phenotyping tools in modern field trials, has made it imperative to design experimental plot labels that are both machine- and human-readable. A machine- and human-readable plot label, by design, displays meaningful human-legible texts about experimental plots alongside a machine-decodable barcode that stores unique identifiers for each plot (
                <xref ref-type="bibr" rid="ref-8">Copp 
                    <italic toggle="yes">et al.</italic>, 2014</xref>; 
                <xref ref-type="bibr" rid="ref-10">Diazgranados &amp; Funk, 2013</xref>; 
                <xref ref-type="bibr" rid="ref-37">Wu 
                    <italic toggle="yes">et al.</italic>, 2020a</xref>). The capacity to easily create machine-readable plot labels would ensure the safe deployment of these modern tools in field experiments (
                <xref ref-type="bibr" rid="ref-22">Rife &amp; Poland, 2014</xref>).</p>
            <p>The addition of barcodes to plot labels has been shown to be useful in enhancing the reproducibility of experiments, tracking, and accurate data curation (
                <xref ref-type="bibr" rid="ref-6">Baker, 2016</xref>; 
                <xref ref-type="bibr" rid="ref-8">Copp 
                    <italic toggle="yes">et al.</italic>, 2014</xref>). Since humans cannot naturally read barcodes, a machine-readable label becomes human-readable when it shows meaningful texts about experimental plots alongside the barcode. It is best practice for each plot label to display alongside a barcode, human-readable texts such as plot number, replication number, plot position or coordinates in a grid layout, entry name or treatment assigned to the plot, and trial location.</p>
            <p>To easily generate machine- and human-readable plot labels, agricultural researchers in advanced programs mostly resort to the use of licensed commercial software such as BarTender
                <sub>&#x00ae;</sub> (
                <ext-link ext-link-type="uri" xlink:href="https://www.seagullscientific.com/">https://www.seagullscientific.com/</ext-link>) or MS Office. However, resource-limited researchers working at the various National Agricultural Research and Extension Systems (NARES) in the Global South, typically do not have budget lines to acquire these licensed software or may find the process of generating plot labels using these software cumbersome and complicated. Consequently, such programs resort to the use of error-prone and time-consuming hand-written labels, or labels that are not machine-readable. The lack of free and accessible software for creating both machine- and human-readable field plot labels precludes these researchers from benefiting from the deployment of digital data collection and high-throughput phenotyping tools (
                <xref ref-type="bibr" rid="ref-22">Rife &amp; Poland, 2014</xref>).</p>
            <p>To this end, open-source software provides a viable alternative to licensed commercial software. However, existing open-source software for creating plot labels affixed with barcodes, 
                <italic toggle="yes">baRcodeR</italic> (
                <xref ref-type="bibr" rid="ref-38">Wu 
                    <italic toggle="yes">et al.</italic>, 2020b</xref>) may not be fit for purpose with respect to designing machine- and human-readable labels for field experiments. The 
                <italic toggle="yes">baRcodeR</italic> package was developed using the R programming language (
                <xref ref-type="bibr" rid="ref-21">R Core Team, 2022</xref>) and became available on the Comprehensive R Archive Network (CRAN) as a package in 2018. This open-source software, however, has a design bias toward generating machine-readable labels, and does not allow for the incorporation of additional meaningful human-readable text items about experimental plots and trials.</p>
            <p>Among barcodes, the Quick Response (QR) codes offer better features including high data encoding capacity, small printout size, as well as dirt and damage resistance. The 
                <italic toggle="yes">baRcodeR</italic> package provides a QR code generation functionality for label design. However, 
                <italic toggle="yes">baRcodeR</italic> does not support additional text customization, and most importantly, generated QR codes lack true string fidelity when scanned. When strings separated by underscores are submitted to the 
                <italic toggle="yes">baRcodeR</italic> software, it replaces them with hyphens before generating QR codes. This unexpected behavior creates a mismatch and tracking problems during data collection. This is because strings returned from QR code scans would differ from the original strings which had underscores in the researcher&#x2019;s fieldbook. Another notable deficiency of the 
                <italic toggle="yes">baRcodeR</italic> package with regard to its QR code generation functionality is that it is slow and time intensive as the number of QR codes to generate increases. This undesirable feature stems from the use of the 
                <italic toggle="yes">qrcode</italic> package (
                <xref ref-type="bibr" rid="ref-18">Onkelinx &amp; Teh, 2022</xref>) in R that is not C-backed. These deficiencies make the 
                <italic toggle="yes">baRcodeR</italic> software unsuitable for creating plot labels to support research. The mismatching behavior makes its labels incompatible with the popular open-source digital data collection app, Field Book (
                <xref ref-type="bibr" rid="ref-22">Rife &amp; Poland, 2014</xref>).</p>
            <p>Our goal was to develop a new open-source software for machine- and human-readable plot labels with design features that are well-suited for field trials and experiments and facilitate best practices in breeding operations and data management. We report here the 
                <italic toggle="yes">qrlabelr</italic> package as a new open-source program for creating print-ready plot labels that are both machine- and human-readable. This new program reimagined the 
                <italic toggle="yes">baRcodeR</italic> software and built on its foundation by harnessing new capabilities available in the R programming language. The new software offers flexibility in the label design steps; guarantees true string fidelity after QR encoding; and provides faster plot label generation even though it incorporates more information into the label. The software is available as an R package and offers customizable functions for generating plot labels. For non-R users or beginners in R programming, the package provides an interactive Shiny app version that can be launched from R locally or accessed online.</p>
        </sec>
        <sec sec-type="methods">
            <title>Methods</title>
            <p>We developed 
                <italic toggle="yes">qrlabelr</italic> as an R package to provide a free and accessible software environment to the agricultural research community in the developing world. R&#x2019;s modern features support the development and incorporation of interactive web applications that can be run locally on a machine or deployed to a server for online access. R packages are instrumental in organizing, encapsulating, and distributing code, making them an indispensable asset for reproducible research in the R programming ecosystem.</p>
            <sec>
                <title>Package structure</title>
                <p>We describe the key components and directories of the 
                    <italic toggle="yes">qrlabelr</italic> package in 
                    <xref ref-type="fig" rid="f1">Figure 1</xref>. This structure follows best practices recommended for R package development to ensure efficient organization, reusability, and sharing with the R community.</p>
                <fig fig-type="figure" id="f1" orientation="portrait" position="float">
                    <label>Figure 1. </label>
                    <caption>
                        <title>The purpose and structure of the qrlabelr package.</title>
                        <p>(
                            <bold>A</bold>) The purpose of the 
                            <italic toggle="yes">qrlabelr</italic> package is to aid electronic data capture using digital data collection tools such as Field Book. (
                            <bold>B</bold>) The package provides two main options for label design using either customizable functions in R or a user-friendly Shiny app.  The &#x2018;data&#x2019; folder contains exported sample field book data based on complete and incomplete block designs. The &#x2018;inst&#x2019; folder consists of scripts and supporting files for the user-friendly shiny app. The 'man' folder comprises manual pages for our package functions, which provide detailed documentation for individual functions, including descriptions, usage examples, and arguments. The &#x2018;R&#x2019; folder includes scripts for all exported functions for qrlabelr that can be invoked in R. The &#x2018;tests&#x2019; folder has scripts for automated unit testing of all functions and data files in qrlabelr via the testthat package. The &#x2018;vignette&#x2019; folder contains a detailed user guide for functions and use cases for qrlabelr. The DESCRIPTION file is made up of metadata about the package, such as the package name, version, author information, license, and specification of dependencies on other R packages. The NAMESPACE file defines the package's namespace, specifying which functions and objects are meant to be accessible to users. Folders are highlighted in grey color and other standalone files are highlighted in red. Package components associated with the shiny app are highlighted in light blue, whereas all other files are highlighted in green color.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure1.gif"/>
                </fig>
                <p>The 
                    <italic toggle="yes">qrlabelr</italic> package comprises core R functions stored in the &#x2018;R&#x2019; folder; a 'man' folder for function and exported data documentation; an &#x2018;inst&#x2019; folder for files associated with its shiny app; as well as a DESCRIPTION file for package metadata, and an NAMESPACE file to manage function accessibility and encapsulation.</p>
            </sec>
            <sec>
                <title>Package development tools</title>
                <p>We used RStudio&#x2019;s package build tools (
                    <xref ref-type="bibr" rid="ref-20">Posit team, 2023</xref>) to create, write, organize, and test scripts for 
                    <italic toggle="yes">qrlabelr</italic>. The 
                    <italic toggle="yes">devtools</italic> (v.2.4.5) (
                    <xref ref-type="bibr" rid="ref-34">Wickham 
                        <italic toggle="yes">et al.</italic>, 2022b</xref>) and 
                    <italic toggle="yes">usethis</italic> (v.2.2.2) (
                    <xref ref-type="bibr" rid="ref-28">Wickham 
                        <italic toggle="yes">et al.</italic>, 2023a</xref>) packages facilitated Git and GitHub integration for version control and tracking. We used the 
                    <italic toggle="yes">testthat</italic> package (v.3.2.0) (
                    <xref ref-type="bibr" rid="ref-35">Wickham 
                        <italic toggle="yes">et al.</italic>, 2023e</xref>) to write unit tests for all exported functions in 
                    <italic toggle="yes">qrlabelr</italic>. We obtained code/test coverage for 
                    <italic toggle="yes">qrlabelr</italic> using the 
                    <italic toggle="yes">covr</italic> package (v.3.6.3) (
                    <xref ref-type="bibr" rid="ref-13">Hester 
                        <italic toggle="yes">et al.</italic>, 2023</xref>). The 
                    <italic toggle="yes">qrlabelr</italic> package has a code coverage of 94% (
                    <ext-link ext-link-type="uri" xlink:href="https://app.codecov.io/gh/awkena/qrlabelr">https://app.codecov.io/gh/awkena/qrlabelr</ext-link>).</p>
                <p>To check the 
                    <italic toggle="yes">qrlabelr</italic> compatibility with various operating system (OS) platforms, we used a variety of approaches. First, we used the 
                    <italic toggle="yes">devtools::check()</italic> function to perform R-CMD-check. Second, we setup a GitHub Action Workflow to automatically run R-CMD-check on macos-latest (release), windows-latest (release), ubuntu-latest (devel), ubuntu-latest (release), and ubuntu-latest (oldrel-1) after every commit. Third, we performed further checks on Ubuntu Linux 20.04.1 LTS, R-release, GCC, Fedora Linux, R-devel, clang, gfortran, and Windows Server 2022, R-devel, 64 bit using the 
                    <italic toggle="yes">check_for_cran()</italic> function in the 
                    <italic toggle="yes">rhub</italic> package (v.1.1.2) (
                    <xref ref-type="bibr" rid="ref-9">Cs&#x00e1;rdi 
                        <italic toggle="yes">et al.</italic>, 2022</xref>).</p>
                <p>We specified the dependencies of 
                    <italic toggle="yes">qrlabelr</italic> (
                    <xref ref-type="table" rid="T1">Table 1</xref>) in the package DESCRIPTION file using the 
                    <italic toggle="yes">usethis::use_package()</italic> function. To create the vignette for 
                    <italic toggle="yes">qrlabelr</italic>, we used 
                    <italic toggle="yes">usethis::use_vignette()</italic> function to setup the metadata for the vignette. The vignette builder for 
                    <italic toggle="yes">qrlabelr</italic> is the 
                    <italic toggle="yes">knitr</italic> package. Similarly, we used the 
                    <italic toggle="yes">usethis::use_readme_rmd() devtools::build_readme()</italic> functions to create the README file for 
                    <italic toggle="yes">qrlabelr</italic>.</p>
                <table-wrap id="T1" orientation="portrait" position="anchor">
                    <label>Table 1. </label>
                    <caption>
                        <title>Dependencies for the 
                            <italic toggle="yes">qrlabelr</italic> package functionality.</title>
                    </caption>
                    <table content-type="article-table" frame="hsides">
                        <thead>
                            <tr>
                                <th align="left" colspan="1" rowspan="1" valign="top">Package</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Minimum
                                    <break/> version</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Description</th>
                                <th align="left" colspan="1" rowspan="1" valign="top">Author(s)</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">argonDash</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.2.0</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Argon Shiny dashboard template</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-11">Granjon (2019a)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">argonR</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.2.0</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">R interface to Argon HTML design</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-12">Granjon (2019b)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">assertthat</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.2.1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Easy Pre and Post Assertions</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-27">Wickham (2019)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">bslib</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.4.2</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Custom 'Bootstrap' 'Sass' Themes for 'shiny' and 'rmarkdown'</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-25">Sievert 
                                        <italic toggle="yes">et al.</italic> (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">dplyr</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.0.10</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">A fast, consistent tool for working with data frame like objects, both in 
                                    <break/>memory and out of memory</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-29">Wickham 
                                        <italic toggle="yes">et al.</italic> (2023b)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">desplot</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.10</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Plotting Field Plans for Agricultural Experiments</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-36">Wright (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">ggplot2</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 3.4.2</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Create Elegant Data Visualisations Using the Grammar of Graphics</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-30">Wickham 
                                        <italic toggle="yes">et al.</italic> (2023c)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">purrr</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.0.1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">A complete and consistent functional programming toolkit for R</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-33">Wickham and Henry (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">QBMS</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.9.1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">QBMS: Query the Breeding Management System(s)</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-3">Al-Shamaa 
                                        <italic toggle="yes">et al.</italic> (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">qrencoder</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.1.0</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Quick response code (QR Code) / matrix barcode creator</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-23">Rudis (2016)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">raster</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 3.6.23</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Geographic data analysis and modeling. Reading, writing, manipulating,
                                    <break/> analyzing and modeling of spatial data</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-14">Hijmans 
                                        <italic toggle="yes">et al.</italic> (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">reactable</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.4.3</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Interactive data tables for R, based on the React Table JavaScript library</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-15">Lin 
                                        <italic toggle="yes">et al.</italic> (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">readxl</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.4.1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Read Excel Files</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-32">Wickham 
                                        <italic toggle="yes">et al.</italic> (2023d)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">shiny</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.7.5.1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Makes it incredibly easy to build interactive web applications with R</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-7">Chang 
                                        <italic toggle="yes">et al.</italic> (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">shinyBS</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.61.1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Twitter bootstrap bomponents for Shiny</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-5">Bailey (2022)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">shinycssloaders</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.0.0</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Add loading animations to a 'shiny' output while it is recalculating</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-24">Sali 
                                        <italic toggle="yes">et al.</italic> (2020)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">shinyjs</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 2.1.0</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Easily improve the user experience of your Shiny apps in seconds</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-4">Attali (2021)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">shinyWidgets</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 0.7.6</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Collection of custom input controls and user interface components for
                                    <break/> 'Shiny' applications</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-19">Perrier 
                                        <italic toggle="yes">et al.</italic> (2023)</xref>
                                </td>
                            </tr>
                            <tr>
                                <td align="left" colspan="1" rowspan="1" valign="top">uuid</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">&#x2265; 1.1-1</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">Tools for generating and handling of UUIDs</td>
                                <td align="left" colspan="1" rowspan="1" valign="top">
                                    <xref ref-type="bibr" rid="ref-26">Urbanek and Tso (2022)</xref>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </table-wrap>
                <p>To document exported functions and data in 
                    <italic toggle="yes">qrlabelr</italic>, we invoked the 
                    <italic toggle="yes">devtools::document()</italic> function which converted R
                    <italic toggle="yes">oxygen2</italic> (v.7.2.3) (
                    <xref ref-type="bibr" rid="ref-31">Wickham 
                        <italic toggle="yes">et al.</italic>, 2022a</xref>) comments, examples and tags into documentations.</p>
                <p>Having passed all CRAN checks on all OS platforms, we submitted 
                    <italic toggle="yes">qrlabelr</italic> to CRAN for release via the 
                    <italic toggle="yes">devtools::release()</italic> function.</p>
            </sec>
            <sec>
                <title>Requirements</title>
                <p>Running the 
                    <italic toggle="yes">qrlabelr</italic> package on a local computer requires specific packages detailed in 
                    <xref ref-type="table" rid="T1">Table 1</xref>. These dependency packages are installed automatically during package installation of 
                    <italic toggle="yes">qrlabelr</italic> in R.</p>
            </sec>
            <sec>
                <title>Installation</title>
                <p>To install the stable version of 
                    <italic toggle="yes">qrlabelr</italic> (v.0.2.0) from CRAN, users need to have R (&gt;= v.4.1.0) and the RStudio IDE installed first. Before installation, R and RStudio, as well as already installed packages, must be up to date. Next, users can install the package via different command lines. First, users can open RStudio and install the package and its dependencies:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; install.packages("qrlabelr", dependencies = TRUE)</styled-content>
                    </preformat>
                </p>
                <p>Second, users can install the development version of 
                    <italic toggle="yes">qrlabelr</italic> from GitHub:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; install.packages("devtools")
&gt; devtools::install_github("awkena/qrlabelr")</styled-content>
                    </preformat>
                </p>
                <p>Once the installation is complete, users can load the package by entering the following command in the console:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; library(qrlabelr)</styled-content>
                    </preformat>
                </p>
            </sec>
        </sec>
        <sec>
            <title>Main features of the 
                <italic toggle="yes">qrlabelr</italic> package</title>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package is software for both R and non-R users</title>
                <p>The 
                    <italic toggle="yes">qrlabelr</italic> package offers two user-centered options for creating labels affixed with QR codes (
                    <xref ref-type="fig" rid="f2">Figure 2A</xref>). The app is user-friendly, allowing users to create accurate and highly informative plot labels similar to those generated by commercial software.</p>
                <fig fig-type="figure" id="f2" orientation="portrait" position="float">
                    <label>Figure 2. </label>
                    <caption>
                        <title>Designing custom print-ready machine- and human-readable plot labels that are compatible with widely used label templates using the 
                            <italic toggle="yes">qrlabelr</italic> package.</title>
                        <p>
                            <bold>A</bold>&#x2013;
                            <bold>C</bold>: The two user-centered options provided by 
                            <italic toggle="yes">qrlabelr</italic> both take a field/study book with plot or sample attributes as input data from either local or BrAPI-supported databases; generate QR codes using unique plot or sample IDs (
                            <bold>D</bold>); and combine the generated QR code with human-readable texts to design machine- and human-readable labels (
                            <bold>E</bold>). The program accepts custom page and label dimension parameters to make the labels print-ready on common label templates for thermal or ink/laser-jet printing (
                            <bold>F</bold>).</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure2.gif"/>
                </fig>
                <p>The first option provides a helper function to access an interactive Shiny app (EasyQrlabelr) for R-beginners or non-R users who may find working in R uncomfortable. This option facilitates users to run the Shiny app using their computer as a host without an internet connection. The second option involves the use of customizable functions to create rectangular field plot labels or any rectangular general-purpose labels embossed with QR codes. This option is for R users who can automatize these functions.</p>
                <p>Both the Shiny app and customizable functions deliver the exact same features, so it all comes down to a user's preference.</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package uses a multi-column field or study book as input data</title>
                <p>To use 
                    <italic toggle="yes">qrlabelr</italic>, one must first generate a field or study book that shows plot or sample attributes (
                    <xref ref-type="fig" rid="f2">Figure 2C</xref>). Typically, we create plot attributes in the field book based on the experimental design and treatment randomization. Following best practices, we recommend the inclusion of the grid coordinates of plots (row and column/range numbers of plots) in the field book for field plot labels.</p>
                <p>There are free open-source softwares such as the 
                    <italic toggle="yes">FielDHub</italic> package (
                    <xref ref-type="bibr" rid="ref-17">Murillo 
                        <italic toggle="yes">et al.</italic>, 2021</xref>), which users can use to easily generate an input field book for plot label design in 
                    <italic toggle="yes">qrlabelr</italic>. Other user-preferred software such as the breeding management system (BMS) can equally be used to generate an input field book if desired.</p>
                <p>In R, import the input field book as a data frame. In the Shiny app, suitable file formats for import into the application are standard UTF-8 encoded comma delimited or separated values (.csv) or MS-Excel (.xls/.xlsx) files. There are no restrictions on the order of columns or column names in the input data. We, however, recommend the use of concise and meaningful column names to easily identify the information they carry (
                    <xref ref-type="fig" rid="f2">Figure 2C</xref>).</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package is BrAPI-compliant</title>
                <p>Users can import input data directly from BrAPI-supported breeding databases such as 
                    <ext-link ext-link-type="uri" xlink:href="https://bmspro.io/">BMS</ext-link> and 
                    <ext-link ext-link-type="uri" xlink:href="https://breedbase.org/">Breedbase</ext-link> into 
                    <italic toggle="yes">qrlabelr</italic> in R or using the shiny app (
                    <xref ref-type="fig" rid="f2">Figure 2B</xref>). This interoperability functionality, via the 
                    <italic toggle="yes">QBMS</italic> package, enhances flexibility in data import into 
                    <italic toggle="yes">qrlabelr</italic> and allows for seamless communication between 
                    <italic toggle="yes">qrlabelr</italic> and breeding databases. This eliminates the need to download trial or study books designed for experiments or seed sample lists from these databases before importing from local sources into 
                    <italic toggle="yes">qrlabelr</italic>.</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package designs print-ready machine- and human-readable labels</title>
                <p>The software allows users to design rectangular labels that display both human-readable texts and a machine-readable QR code (
                    <xref ref-type="fig" rid="f2">Figure 2D-E</xref>). The program uses designated unique identifiers for each plot or sample to generate QR codes (
                    <xref ref-type="fig" rid="f2">Figure 2D</xref>). The type of label to design determines the specific human-readable texts to show on the label (
                    <xref ref-type="fig" rid="f3">Figure 3</xref>). The available label types are field plot and general-purpose labels.</p>
                <fig fig-type="figure" id="f3" orientation="portrait" position="float">
                    <label>Figure 3. </label>
                    <caption>
                        <title>Text orientation formats in 
                            <italic toggle="yes">qrlabelr</italic>.</title>
                        <p>
                            <bold>A</bold>: Landscape text orientation format showing nine (9) delineated text positions and 1 QR code position for any rectangular label. 
                            <bold>B</bold>: An example of a rectangular label designed using the landscape text orientation format. 
                            <bold>C</bold>: Portrait text orientation format showing ten (10) delineated text positions and 1 QR code position for any rectangular label. 
                            <bold>D</bold>: An example of a rectangular label designed using the portrait text orientation format in 
                            <italic toggle="yes">qrlabelr</italic>. The choice of either a portrait or landscape text orientation format is based on the user&#x2019;s preference.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure3.gif"/>
                </fig>
                <p>The field plot label option is available through the 
                    <bold>
                        <italic toggle="yes">field_label()</italic>
                    </bold> function in R, or the 
                    <bold>&#x2018;Field plot label</bold>&#x2019; in the Shiny app. In R, the general-purpose label option is available via the 
                    <bold>
                        <italic toggle="yes">gp_label()</italic>
                    </bold> and the 
                    <bold>
                        <italic toggle="yes">gp_label_portrait()</italic>
                    </bold> customizable functions. In the Shiny app, users can access the general-purpose label option through the 
                    <bold>&#x2018;General-purpose landscape text label&#x2019;</bold> and the 
                    <bold>&#x2018;General-purpose portrait text label&#x2019;</bold> options. </p>
                <p>Generally, the user can pass any text under any of the columns contained in the input data to the program for onward display on the label. This flexibility makes 
                    <italic toggle="yes">qrlabelr</italic> more user-friendly with generated labels showing more meaningful information.</p>
                <p>PDF files are the main output files from 
                    <italic toggle="yes">qrlabelr</italic>. The program uses page and label dimension settings that are compatible with widely used label templates supplied by popular vendors to generate the PDF files (
                    <xref ref-type="fig" rid="f2">Figure 2F</xref>). Users can, thus, design any rectangular label by passing custom page and label dimension parameters to the program. The program saves the generated PDF file automatically to the working directory in R. In the Shiny app, users can download the PDF output using download buttons.</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package provides landscape and portrait text orientation formats</title>
                <p>The 
                    <italic toggle="yes">qrlabelr</italic> package can design rectangular labels in a landscape or portrait text orientation (
                    <xref ref-type="fig" rid="f3">Figure 3</xref>). The landscape text orientation format comes with nine (9) delineated text positions in addition to the QR code position (
                    <xref ref-type="fig" rid="f3">Figure 3A</xref>). In the portrait text orientation format, ten (10) delineated text positions are available to users (
                    <xref ref-type="fig" rid="f3">Figure 3B</xref>). Users can fill out these delineated text positions with human-readable texts based on their preference.</p>
                <p>For a field plot label option, the program uses a landscape text orientation by default. 
                    <xref ref-type="fig" rid="f3">Figure 3A</xref> shows how the program maps the nine (9) text positions by default to the fixed human-readable texts on the label. The two top-left row positions map to Plot ID and Row ID. The two top-right row positions map to Rep ID and Column/Range ID. The program maps the three center-right row positions to the intra-block ID number if present, seed source for entries (optional) and name of researcher (optional). Finally, the two bottom-left row positions map to the Location of experiment or trial and Entry/Treatment name, respectively.</p>
                <p>Users can, however, override these default mappings for field plot labels with their preferred texts via the general-purpose label option.</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package implements a faster C-compiled QR code generation library</title>
                <p>Affixing QR codes on plot labels makes them machine-readable for easy plot identification and tracking. However, generating QR codes from strings could be computationally intensive depending on the number and length of strings to encode into QR codes, and the error correction level for the QR codes.</p>
                <p>To generate labels embossed with QR codes faster in R, we implemented a C-compiled and backed library for QR code generation in 
                    <italic toggle="yes">qrlabelr</italic> (
                    <xref ref-type="bibr" rid="ref-23">Rudis, 2016</xref>). The helper function, 
                    <bold>
                        <italic toggle="yes">make_qrcode()</italic>
                    </bold> guarantees faster QR code generation when we micro-benchmarked it against an equivalent function in the 
                    <italic toggle="yes">baRcodeR</italic> package (
                    <xref ref-type="fig" rid="f4">Figure 4</xref>). Using the 
                    <italic toggle="yes">microbenchmark</italic> package (
                    <xref ref-type="bibr" rid="ref-16">Mersmann 
                        <italic toggle="yes">et al.</italic>, 2023</xref>) in R, we submitted 200 unique plot IDs to the QR code generating functions in both packages and measured the average time it took to complete QR code generation for 100 independent runs. To test the hypothesis that the QR code generation functionality in the qrlabelr package is faster than its equivalent in the baRcodeR package, we used two computers with different processor speed. 
                    <xref ref-type="fig" rid="f4">Figure 4A</xref> shows the microbenchmarking results for the two packages on a 64-bit operating system, x64-based Windows HP PC with 8 cores, an Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz 2.30 GHz processor; and an installed RAM of 16.0 GB (15.7 GB usable). Similarly, 
                    <xref ref-type="fig" rid="f4">Figure 4B</xref> shows the microbenchmarking results for the two packages on a aarch64-apple-darwin20 (64-bit) MacBook Pro computer with 12 cores; Apple M2 Max chip; and a 32 GB memory; running under the Sonoma 14.2 MacOS. Our results indicate that the 
                    <bold>
                        <italic toggle="yes">make_qrcode()</italic>
                    </bold> function in 
                    <italic toggle="yes">qrlabelr</italic> is at least 60 times faster than its equivalent function in the 
                    <italic toggle="yes">baRcodeR</italic> package (
                    <xref ref-type="fig" rid="f4">Figure 4A and B</xref>). </p>
                <fig fig-type="figure" id="f4" orientation="portrait" position="float">
                    <label>Figure 4. </label>
                    <caption>
                        <title>Microbenchmarking the QR code generation functions in 
                            <italic toggle="yes">qrlabelr</italic> and 
                            <italic toggle="yes">baRcodeR</italic> packages.</title>
                        <p>The microbenchmarking measured the time used by the two packages to generate 200 QR codes on a Windows PC (
                            <bold>A</bold>) and a MacBook Pro (
                            <bold>B</bold>). The Windows PC had 8 cores; Processor: Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz 2.30 GHz; Installed RAM: 16.0 GB (15.7 GB usable); System type: 64-bit operating system, x64-based. The MacBook Pro had 12 cores; Chip: Apple M2 Max; Memory: 32 GB; macOS: Sonoma 14.2; Platform: aarch64-apple-darwin20 (64-bit). Table inset is the summary statistics for the two packages for 100 microbenchmarking runs measured in milliseconds (rounded to three significant figures). The results show that the QR code generation function in 
                            <italic toggle="yes">qrlabelr</italic> is at least 60 times faster than the equivalent function in the 
                            <italic toggle="yes">baRcodeR</italic> package (t-statistic = -136.11; df = 99.1; p value &lt; 2.2e-16 on the Windows PC; and t-statistic = -858.14; df = 99.4; p value &lt; 2.2e-16 on the MacBook Pro).</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure4.gif"/>
                </fig>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package supports best practices for generating unique plot IDs</title>
                <p>The string for generating QR codes must be unique for each plot or sample, and possibly informative. For field plot label design, we implemented three methods for passing unique IDs for each plot to the 
                    <italic toggle="yes">make_qrcode()</italic> function in 
                    <italic toggle="yes">qrlabelr</italic>. These methods are 
                    <bold>reproducible unique IDs</bold> (RUID), 
                    <bold>universal unique IDs</bold> (UUID), and 
                    <bold>custom unique IDs</bold> (custom).</p>
                <p>RUIDs are informative and can be regenerated when provided with the same input field book. For field experiments or trials, we recommend the use of RUIDs. In 
                    <italic toggle="yes">qrlabelr</italic>, we generate RUIDs by concatenating LOCATION and year of the experiment, trial name, PLOT, ROW and COLUMN/RANGE IDs for each experimental plot (
                    <xref ref-type="fig" rid="f5">Figure 5</xref>). For instance, the RUID 
                    <bold>BAMBEY2023_PYT_1001_1_1</bold>, represents a unique ID for a plot in location Bambey, in year 2023, in a preliminary yield trial (PYT) and plot number of 1001 with the grid coordinates Row 1 and Column 1.</p>
                <fig fig-type="figure" id="f5" orientation="portrait" position="float">
                    <label>Figure 5. </label>
                    <caption>
                        <title>Fidelity of string encoding into QR codes in 
                            <italic toggle="yes">baRcodeR</italic> versus 
                            <italic toggle="yes">qrlabelr</italic> packages.</title>
                        <p>
                            <bold>A</bold>. QR encoding in 
                            <italic toggle="yes">baRcodeR</italic> replaces underscores in the string with hyphens, causing mismatching problems during digital data collection. The 
                            <italic toggle="yes">qrlabelr</italic> package guarantees true string fidelity after QR encoding (
                            <bold>B</bold>).</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure5.gif"/>
                </fig>
                <p>The UUID method, if selected, produces random time-based unique IDs that are not reproducible and informative, but are highly unique due to their pseudo-random nature.</p>
                <p>Users can define their own unique IDs and pass them to the program to generate QR codes if the custom unique ID method is selected. The custom unique ID method must only be used when the input field book contains a column representing unique IDs suitable for QR code generation, as shown in 
                    <xref ref-type="fig" rid="f2">Figure 2C</xref>.</p>
                <p>Selecting either the RUID or UUID method triggers the program to update the input field book by appending the RUIDs or UUIDs generated to the input field book. The program then automatically saves the updated field book to the working directory in R. A download button for updated field book is available in the Shiny app.</p>
                <p>Users can set the desired error correction level (ecl) for generating QR codes. The ecl indicates how much of the QR code is used up for error correction. There are four levels, with 0 (7%) being the lowest level and 3 (30%) being the highest value. For field experiments, we recommend setting the error correction level to 3 (30%) to make them dirt and damage- resistant.</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package guarantees true string fidelity during QR code generation</title>
                <p>To prevent mismatching and tracking problems on the field during data collection, the fidelity of the strings encoded into QR codes must not be compromised. The characters in the strings used for QR encoding must be the same characters returned when one scans the QR code. To demonstrate this, we generated QR codes with the string &#x2018;BAMBEY2023_PYT_1001_1_1&#x2019; utilizing the existing baRcodeR package and our newly developed 
                    <italic toggle="yes">qrlabelr</italic> package (
                    <xref ref-type="fig" rid="f5">Figure 5</xref>). The 
                    <italic toggle="yes">baRcodeR</italic> package replaced the underscores with hyphens, resulting in a modified string: &#x2018;BAMBEY2023-PYT-1001-1-1&#x2019; (
                    <xref ref-type="fig" rid="f5">Figure 5A</xref>). Our program, on the other hand, maintained true string fidelity after QR encoding (
                    <xref ref-type="fig" rid="f5">Figure 5B</xref>).</p>
            </sec>
            <sec>
                <title>The 
                    <italic toggle="yes">qrlabelr</italic> package includes rich documentation and helpful examples</title>
                <p>Adequate documentation is a cornerstone of R package development. It serves the crucial purpose of explaining the package's functions, classes, and data structures, making it comprehensible and user-friendly. This section delves into the documentation and examples aspect of our R package development process.</p>
            </sec>
            <sec>
                <title>Documentation Practices</title>
                <p>As mentioned earlier, we employed 
                    <italic toggle="yes">Roxygen2</italic>, a widely-used documentation system in the R community, to create clear and consistent documentation for our functions. 
                    <italic toggle="yes">Roxygen2</italic> is integrated seamlessly with RStudio, streamlining the documentation process. Each function in the package was meticulously documented, including a title, description, usage, arguments, and details regarding the function's output. This ensured that users could easily understand the purpose and functionality of every function. We adhered to a standardized format for documenting functions to promote uniformity and ease of use for both new and experienced R users.</p>
            </sec>
            <sec>
                <title>Examples and Use Cases</title>
                <p>In addition to documentation, we provided practical examples and use cases for each function in our package. These examples were carefully crafted to illustrate how to use the functions effectively for various real-world scenarios. Use cases ranged from basic examples for beginners to more advanced scenarios for experienced users. This approach ensured that users of different skill levels could benefit from our package. Our examples included sample input data, function calls, and expected output. This approach facilitates user understanding and encourages the adoption and exploration of our package's capabilities.</p>
            </sec>
            <sec>
                <title>Vignettes</title>
                <p>For a more in-depth understanding of complex procedures or workflows within our package, we created vignettes. Vignettes are comprehensive documents that provide step-by-step guidance, along with real data and results. These vignettes covered specific topics or tasks, guiding users through intricate analyses and showcasing the power and versatility of the various functions in our package. Our commitment to comprehensive documentation, practical examples, and user engagement ensures that our R package is approachable and valuable to a diverse user base. By providing clear, well-documented functions and illustrative examples, we empower users to effectively harness the capabilities of the functions in our package.</p>
            </sec>
        </sec>
        <sec>
            <title>Operation</title>
            <sec>
                <title>Launch the Shiny app (EasyQrlabelr) to access a user-friendly GUI of 
                    <italic toggle="yes">qrlabelr</italic>
                </title>
                <p>To create rectangular labels using the Shiny app, a user must launch the application either from R or the web. Running the application locally from R is recommended, as it cushions users from unstable internet connectivity. To launch the application from R in your default browser, run this code in the R console:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; qrlabelr::run_app()</styled-content>
                    </preformat>
                </p>
                <p>This command line opens a new window in your default web browser that shows the EasyQrlabelr Shiny app. The Welcome page provides an overview of the Shiny app, and some quick instructions to get started. A description of the main pages or tabs available in the Shiny app, corresponding features, and the sequential flow of information required to design any rectangular label are depicted in 
                    <xref ref-type="fig" rid="f6">Figure 6</xref>.</p>
                <fig fig-type="figure" id="f6" orientation="portrait" position="float">
                    <label>Figure 6. </label>
                    <caption>
                        <title>A schematic of the sequential flow of information and steps for creating machine and human-readable labels using the Shiny app in 
                            <italic toggle="yes">qrlabelr</italic>.</title>
                        <p>On launching the Shiny app, the program automatically imports a table of common label templates comprising 13 preset templates for designing labels. This imported table is displayed in the Template setup tab and allows the program to determine the page and label setup information when a user selects any of the 13 predefined templates. The app requires users to import a field/study book into the program to be used as input data for QR code generation and human-readable texts in the Label information tab. The app then passes user-defined parameters in the Label information, Page setup and Label setup tabs to the Generate label tab to derive labels as a PDF file for download. Circles represent in-built or user imported data inputs, rectangles represent app tabs and their main functionalities.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure6.gif"/>
                </fig>
                <p>To successfully generate labels, a user must provide the required inputs by moving from the 
                    <bold>Import fieldbook tab</bold> &#x2192; 
                    <bold>Label information tab</bold> &#x2192; 
                    <bold>Template setup tab</bold> &#x2192; 
                    <bold>Page setup tab</bold> &#x2192; 
                    <bold>Label setup and preview tab</bold> &#x2192; 
                    <bold>Generate labels tab.</bold> </p>
                <p>The Shiny app offers a wide range of customization options for designing labels. Users can choose from a variety of different templates, label type, and font styles to create labels that meet their specific needs and preferences.</p>
            </sec>
            <sec>
                <title>Invoke customizable functions to create labels in R</title>
                <p>Four customizable functions are available in R to create labels (
                    <xref ref-type="fig" rid="f1">Figure 1</xref>). These functions are the 
                    <bold>
                        <italic toggle="yes">create_label(), field_label(), gp_label(),</italic>
                    </bold> and the 
                    <bold>
                        <italic toggle="yes">gp_label_portrait().</italic>
                    </bold> The 
                    <italic toggle="yes">create_label()</italic> function is the main function for creating labels with a landscape text orientation format, and it is invoked in the 
                    <italic toggle="yes">field_label()</italic>, and 
                    <italic toggle="yes">gp_label()</italic> wrapper functions. The 
                    <italic toggle="yes">gp_label_portrait()</italic> function is a standalone function for creating any general-purpose label in a portrait text orientation.</p>
            </sec>
            <sec>
                <title>Use the customizable 
                    <italic toggle="yes">field_label()</italic> function to create field plot labels in R</title>
                <p>The 
                    <italic toggle="yes">field_label()</italic> function creates rectangular field plot labels in a landscape text orientation based on a label template. It takes arguments for creating field plot labels and passes them to the 
                    <italic toggle="yes">create_label()</italic> function. Users can define the page setting and label dimension parameters by using specific arguments for the parameters.</p>
                <p>For instance, the code snippet below shows how users can use the the 
                    <italic toggle="yes">field_label()</italic> function based on the 
                    <ext-link ext-link-type="uri" xlink:href="https://www.avery.com/blank/labels/94241">Avery 94241 template</ext-link>:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; library(qrlabelr)
&gt; field_label(
  dat = qrlabelr::square_lattice,
  wdt = 5, 
  hgt = 2,
  page_wdt = 8.5, 
  page_hgt = 11,
  top_mar = 0.75, 
  bot_mar = 0.75, 
  left_mar = 1.75, 
  right_mar = 1.75, 
  numrow = 4L, 
  numcol = 1L, 
  filename = "mylabel", 
  font_sz = 20, 
  Trial = "PYT", 
  Year = 2023, 
  family = "sans", 
  rounded = TRUE, 
  IBlock = TRUE,
  get_unique_id = "ruid", 
  rname = "AW Kena", 
  seed_source = TRUE, 
  seed_source_id = "SEED_SOURCE",
  ec_level = 3)</styled-content>
                    </preformat>
                </p>
                <p>To see a detailed documentation for the 
                    <italic toggle="yes">field_label()</italic> function in RStudio, run the following codes in the R console:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; ?qrlabelr::field_label</styled-content>
                    </preformat>
                </p>
            </sec>
            <sec>
                <title>Use the customizable 
                    <italic toggle="yes">gp_label()</italic> and 
                    <italic toggle="yes">gp_label_portrait()</italic> functions to create general-purpose labels in R</title>
                <p>The 
                    <italic toggle="yes">gp_label()</italic> and the 
                    <italic toggle="yes">gp_label_portrait()</italic> functions allow for specific user-defined or preferred human-readable texts on a label. These functions give a lot of control and flexibility to users with respect to what human-readable texts, their position, and orientation on the label.</p>
                <p>To create any general-purpose label based on the 
                    <ext-link ext-link-type="uri" xlink:href="https://www.avery.com/blank/labels/94220">Avery 94220 template</ext-link> with a landscape text orientation, invoke the 
                    <italic toggle="yes">gp_label()</italic> function as shown in the code snippet below:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; library(qrlabelr)
&gt; dat &lt;- qrlabelr::square_lattice # Input field book
# Add unique IDs for each plot to input field book
&gt; dat$ids &lt;- paste0(dat$LOCATION,'2023', '_PYT', '_', dat$PLOT, '_', dat$ROW, '_', dat$COLUMN)
&gt; gp_label(
  dat = dat,
  wdt = 2,
  hgt = 1, 
  page_wdt = 8.5, 
  page_hgt = 11,
  top_mar = 0.625,
  bot_mar = 0.625,
  left_mar = 0.625,
  right_mar = 0.625,
  numrow = 8L,
  numcol = 3L,
  filename = 'PlotLabel',
  get_unique_id = 'custom',
  unique_id = 'ids',
  font_sz = 10,
  family = 'sans',
  top_left_txt1 = 'Plot:',
  top_left_txt2 = 'Row:', 
  top_right_txt1 = 'Rep:',
  top_right_txt2 = 'Col:',
  center_right_txt1 = 'iBlock:',
  center_right_txt2 = 'Seed:',
  center_right_txt3 = 'Adoma',
  top_left_id1 = 'PLOT',
  top_left_id2 = 'ROW',
  top_right_id1 = 'REP',
  top_right_id2 = 'COLUMN',
  center_right_id1 = 'IBLOCK',
  center_right_id2 = 'SEED_SOURCE',
  bottom_left_id1 = 'ids',
  bottom_left_id2 = 'TREATMENT',
  ec_level = 1)</styled-content>
                    </preformat>
                </p>
                <p>The above arguments are passed to the create_label() function to generate the desired labels based on the defined page setting and label dimension parameters.</p>
                <p>The code snippet below demonstrates how to use the 
                    <italic toggle="yes">gp_label_portrait()</italic> function in R.</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; library(qrlabelr)
&gt; dat &lt;- qrlabelr::square_lattice # Input field book
# Add unique IDs for each plot to input field book
&gt; dat$ids &lt;- paste0(dat$LOCATION,'2023', '_PYT', '_', dat$PLOT, '_', dat$ROW, '_', dat$COLUMN)
&gt; gp_label_portrait(
  dat = dat,
  wdt = 2,
  hgt = 1, 
  page_wdt = 8.5, 
  page_hgt = 11,
  top_mar = 0.625,
  bot_mar = 0.625,
  left_mar = 0.625,
  right_mar = 0.625,
  numrow = 8L,
  numcol = 3L,
  filename = 'PlotLabel',
  font_sz = 10,
  family = 'sans', 
  rounded = TRUE,
  bot_txt1 = 'Rubi', 
  cent_txt2 = 'Rep:',  
  cent_txt3 = 'R:', 
  cent_txt4 = 'r:', 
  top_txt1 = 'P:', 
  top_txt2 = 'B:',
  bot_txt2_id = 'ids',
  bot_txt3_id = 'LOCATION',
  cent_txt1_id = 'TREATMENT', 
  cent_txt2_id = 'REP', 
  cent_txt3_id = 'COLUMN', 
  cent_txt4_id = 'ROW', 
  top_txt1_id = 'PLOT',
  top_txt2_id = 'IBLOCK',
  top_txt3_id = 'SEED_SOURCE',
  unique_id = 'ids',
  ec_level = 1)</styled-content>
                    </preformat>
                </p>
                <p>A detailed documentation for the 
                    <italic toggle="yes">gp_label()</italic> and the 
                    <italic toggle="yes">gp_label_portrait()</italic> functions in RStudio can be found by running the following codes in the R console:</p>
                <p>
                    <preformat orientation="portrait" position="float" preformat-type="computer code" xml:space="preserve">
                        <styled-content style="font-weight:bold;">&gt; ?qrlabelr::gp_label
&gt; ?qrlabelr::gp_label_portrait</styled-content>
                    </preformat>
                </p>
            </sec>
            <sec>
                <title>Examples of real use cases of the 
                    <italic toggle="yes">qrlabelr</italic> package</title>
                <p>Our study followed-up researchers utilizing 
                    <italic toggle="yes">qrlabelr</italic> for various applications (
                    <xref ref-type="fig" rid="f7">Figure 7</xref>). Some cases comprise design labels for field experiments, greenhouse experiments, and seed samples for storage (
                    <xref ref-type="fig" rid="f7">Figure 7A&#x2013;C</xref>). These labels were designed using the following templates: Online Label RL2800 template (thermal printing), Online Label OL5125 template (Laser-jet printing), Avery 94237 template, (Laser-jet printing) and the Avery 94207 template (Laser-jet printing).</p>
                <fig fig-type="figure" id="f7" orientation="portrait" position="float">
                    <label>Figure 7. </label>
                    <caption>
                        <p>Real use examples of the 
                            <italic toggle="yes">qrlabelr</italic> package for designing machine- and human-readable plot and seed sample labels (
                            <bold>A</bold> &#x2013; 
                            <bold>C</bold>) in the US and in Africa (
                            <bold>D</bold> &#x2013; 
                            <bold>F</bold>). 
                            <bold>A</bold> &#x2013; 
                            <bold>C</bold>: Installed labels from field and greenhouse experiments at Colorado State University (CSU), Fort Collins, USA, printed on weather-proof label paper based on templates by popular vendors; Panels D &#x2013; F: Installed field plot labels from breeding pipelines fields at the Council for Scientific and Industrial Research-Savannah Agricultural Research Institute (CSIR-SARI), Kwame Nkrumah University of Science and Technology (KNUST), Kumasi, Ghana; National Semi Arid Resources Research Institute (NaSARRI), Uganda. In Panels D &#x2013; F, the researchers printed plot labels on ordinary A4 sheets using an inkjet printer, and afterwards made the labels waterproof/weatherproof through heat-seal lamination.</p>
                    </caption>
                    <graphic orientation="portrait" position="float" xlink:href="https://gatesopenresearch-files.f1000.com/manuscripts/16616/89331cb0-61df-46bb-918d-e7e318659fe9_figure7.gif"/>
                </fig>
                <p>We collaborated with research programs in Ghana (West Africa) and Uganda, (East Africa) which had no access to weatherproof labels and thermal printers. To address this limitation, we improvised a cost-saving method to get labels printed and weatherproofed (
                    <xref ref-type="fig" rid="f7">Figure 7D&#x2013;E</xref>). This improvised method utilized available stationery resources readily at the disposal of these programs. Specifically, researchers utilized our package to print plot labels on ordinary A4 sheets using an inkjet printer, and afterwards made waterproof/weatherproof through heat-seal lamination (
                    <xref ref-type="fig" rid="f7">Figure 7D&#x2013;E</xref>). These heat-sealed laminated labels lasted about 4&#x2013;5 months when used in the field.</p>
            </sec>
        </sec>
        <sec sec-type="conclusions">
            <title>Conclusions</title>
            <p>We developed the 
                <italic toggle="yes">qrlabelr</italic> package as an improvement of the 
                <italic toggle="yes">baRcodeR</italic> package to design machine- and human-readable plot labels that are well-suited for field trials. Its enhanced features offer users more flexibility in plot label design options both in R or via the Shiny app. The availability and easy accessibility of the 
                <italic toggle="yes">qrlabelr</italic> package to under-funded research programs in developing countries would address one of the main roadblocks to modernizing agricultural research. The design philosophy of our new program emphasizes the adoption of best practices in field plot label design to enhance reproducibility, tracking, and accurate data curation.</p>
        </sec>
        <sec>
            <title>Ethical considerations</title>
            <p>In line with ethical considerations, it is imperative to highlight that we maintain a commitment to user data privacy and security. Our application does not retain or store any user-submitted data for any purpose. Additionally, we do not preserve copies of the generated PDF outputs that contain plot labels. Users are strongly encouraged to download their results onto a suitable medium for offline access and future reference. This commitment to data protection ensures the privacy and confidentiality of user information.</p>
        </sec>
    </body>
    <back>
        <sec sec-type="data-availability">
            <title>Data availability</title>
            <p>Microbenchmarking data generated on Windows PC and MacBook Pro computers available on GitHub at 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/awkena/qrlabelr_manuscript">https://github.com/awkena/qrlabelr_manuscript</ext-link>. Also available are the scripts for generating the data and plots for 
                <xref ref-type="fig" rid="f4">Figure 4</xref>. The archived source code is available at 
                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.10636681">https://doi.org/10.5281/zenodo.10636681</ext-link>, (
                <xref ref-type="bibr" rid="ref-1">Alexander Wireko Kena, 2024a</xref>) and has GNU General Public License, version 3 (GPL-3).</p>
        </sec>
        <sec>
            <title>Software availability</title>
            <p>The 
                <italic toggle="yes">qrlabelr</italic> software is currently available as an R package with its source code hosted on GitHub at 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/awkena/qrlabelr">https://github.com/awkena/qrlabelr</ext-link>. The archived source code can be downloaded from Zenodo at 
                <ext-link ext-link-type="uri" xlink:href="https://doi.org/10.5281/zenodo.10636597">https://doi.org/10.5281/zenodo.10636597</ext-link> (
                <xref ref-type="bibr" rid="ref-2">Alexander Wireko Kena, 2024b</xref>). Users can freely access the package source code, which is available for download or cloning from our GitHub repository using the link above. It is important to note that users are bound by the rights and limitations defined by the GNU General Public License, version 3 (GPL-3). This license ensures that our software remains open and accessible to the community while maintaining the ethical and legal guidelines associated with open-source software distribution.</p>
        </sec>
        <ack>
            <title>Acknowledgments</title>
            <p>The authors gratefully acknowledge the help of Peter Selby, Kelly Robbins (Cornell University, Ithaca, NY, USA), and Trevor Rife (Clemson University, Clemson, SC, USA) for their help in making 
                <italic toggle="yes">qrlabelr</italic> BrAPI compliant. We thank Eres Ekwori (Makerere University, Kampala, Uganda) and Samuel Oppong Abebrese (Crop Adaptation Lab, Colorado State University, Fort Collins, CO, USA) for providing us with images of labeled field and greenhouse plants, respectively. </p>
        </ack>
        <ref-list>
            <ref id="ref-3">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Al-Shamaa</surname>
                            <given-names>K</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Crimi</surname>
                            <given-names>MO</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kehel</surname>
                            <given-names>Z</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>QBMS: Query the Breeding Management System(s).</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/QBMS/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-4">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Attali</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>shinyjs: Easily Improve the User Experience of Your Shiny Apps in Seconds.</article-title>
                    <year> 2021</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rdrr.io/cran/shinyjs/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-5">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Bailey</surname>
                            <given-names>E</given-names>
                        </name>
</person-group>:
                    <article-title>shinyBS: Twitter Bootstrap Components for Shiny.</article-title>
                    <year> 2022</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rdrr.io/cran/shinyBS/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-6">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Baker</surname>
                            <given-names>M</given-names>
                        </name>
</person-group>:
                    <article-title>1,500 scientists lift the lid on reproducibility.</article-title>
                    <source>

                        <italic toggle="yes">Nature.</italic>
</source>
                    <year>2016</year>;<volume>533</volume>(<issue>7604</issue>):<fpage>452</fpage>&#x2013;<lpage>454</lpage>.
                    <pub-id pub-id-type="pmid">27225100</pub-id>
                    <pub-id pub-id-type="doi">10.1038/533452a</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-7">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Chang</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cheng</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Allaire</surname>
                            <given-names>JJ</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>shiny: Web Application Framework for R.</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/shiny/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-8">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Copp</surname>
                            <given-names>AJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Kennedy</surname>
                            <given-names>TA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Muehlbauer</surname>
                            <given-names>JD</given-names>
                        </name>
</person-group>:
                    <article-title>Barcodes Are a Useful Tool for Labeling and Tracking Ecological Samples.</article-title>
                    <source>

                        <italic toggle="yes">Bull Ecol Soc Am.</italic>
</source>
                    <year>2014</year>;<volume>95</volume>(<issue>3</issue>):<fpage>293</fpage>&#x2013;<lpage>300</lpage>.
                    <pub-id pub-id-type="doi">10.1890/0012-9623-95.3.293</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-9">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Cs&#x00e1;rdi</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Salmon</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Consortium</surname>
                            <given-names>R</given-names>
                        </name>
</person-group>:
                    <article-title>rhub: Connect to &#x201c;R-hub&#x201d;.</article-title>
                    <year> 2022</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://r-hub.github.io/rhub/#:~:text=The rhub packages use the,hub Linux platforms via Docker.">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-10">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Diazgranados</surname>
                            <given-names>M</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Funk</surname>
                            <given-names>VA</given-names>
                        </name>
</person-group>:
                    <article-title>Utility of QR codes in biological collections.</article-title>
                    <source>

                        <italic toggle="yes">PhytoKeys.</italic>
</source>
                    <year>2013</year>; (<issue>25</issue>):<fpage>21</fpage>&#x2013;<lpage>34</lpage>.
                    <pub-id pub-id-type="pmid">24198709</pub-id>
                    <pub-id pub-id-type="doi">10.3897/phytokeys.25.5175</pub-id>
                    <pub-id pub-id-type="pmcid">3819127</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-11">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Granjon</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>argonDash: Argon Shiny Dashboard Template.</article-title>
                    <year> 2019a</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/argonDash/argonDash.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-12">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Granjon</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>argonR: R Interface to Argon HTML Design.</article-title>
                    <year> 2019b</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://github.com/RinteRface/argonR">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-13">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hester</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ligtenberg</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>M&#x00fc;ller</surname>
                            <given-names>K</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>covr: Test Coverage for Packages.</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/covr/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-14">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Hijmans</surname>
                            <given-names>RJ</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Van Etten</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Sumner</surname>
                            <given-names>M</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>raster: Geographic Data Analysis and Modeling.</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/raster/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-1">
                <mixed-citation publication-type="data">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Kena</surname>
                            <given-names>AW</given-names>
                        </name>
</person-group>:
                    <data-title>awkena/qrlabelr_manuscript: Microbenchmarking data and scripts for qrlabelr (v0.2.0).</data-title>
                    <source> Zenodo.</source>(Data),<year>2024a</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.doi.org/10.5281/zenodo.10636681">http://www.doi.org/10.5281/zenodo.10636681</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-2">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Kena</surname>
                            <given-names>AW</given-names>
                        </name>
</person-group>:
                    <article-title>awkena/qrlabelr: qrlabelr (v0.2.0) package.</article-title>
                    <source> Zenodo.</source>(Software),<year>2024b</year>.
                    <ext-link ext-link-type="uri" xlink:href="http://www.doi.org/10.5281/zenodo.10636597">http://www.doi.org/10.5281/zenodo.10636597</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-15">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Lin</surname>
                            <given-names>G</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Linsley</surname>
                            <given-names>T</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Russell</surname>
                            <given-names>K</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>reactable: Interactive Data Tables for R.</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/reactable/reactable.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-16">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Mersmann</surname>
                            <given-names>O</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Beleites</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hurling</surname>
                            <given-names>R</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>microbenchmark: Accurate Timing Functions.</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rdrr.io/cran/microbenchmark/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-17">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Murillo</surname>
                            <given-names>DA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Gezan</surname>
                            <given-names>SA</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Heilman</surname>
                            <given-names>AM</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>FielDHub: A Shiny App for Design of Experiments in Life Sciences.</article-title>
                    <source>

                        <italic toggle="yes">J Open Source Softw.</italic>
</source>
                    <year>2021</year>;<volume>6</volume>(<issue>61</issue>):
                    <elocation-id>3122</elocation-id>.
                    <pub-id pub-id-type="doi">10.21105/joss.03122</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-18">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Onkelinx</surname>
                            <given-names>T. (Author of the reimplemented, Teh, V. (Original)</given-names>
                        </name>
</person-group>:
                    <article-title>qrcode: Generate QRcodes with R.</article-title>
                    <year>2022</year>.</mixed-citation>
            </ref>
            <ref id="ref-19">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Perrier</surname>
                            <given-names>V</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Meyer</surname>
                            <given-names>F</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Granjon</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>shinyWidgets: Custom Inputs Widgets for Shiny.</article-title>
                    <year> 2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rdrr.io/cran/shinyWidgets/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-20">
                <mixed-citation publication-type="journal">
                    <collab>Posit team</collab>:
                    <article-title>RStudio: Integrated Development Environment for R.</article-title>Posit Software, PBC, Boston, MA,<year>2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.kdnuggets.com/2011/03/rstudio-ide-for-r.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-21">
                <mixed-citation publication-type="book">
                    <collab>R Core Team</collab>:
                    <article-title>R: A language and environment for statistical computing</article-title>. R Foundation for Statistical Computing, Vienna, Austria,<year>2022</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://www.R-project.org/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-22">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Rife</surname>
                            <given-names>TW</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Poland</surname>
                            <given-names>JA</given-names>
                        </name>
</person-group>:
                    <article-title>Field Book: An Open-Source Application for Field Data Collection on Android.</article-title>
                    <source>

                        <italic toggle="yes">Crop Sci.</italic>
</source>
                    <year>2014</year>;<volume>54</volume>(<issue>4</issue>):<fpage>1624</fpage>&#x2013;<lpage>1627</lpage>.
                    <pub-id pub-id-type="doi">10.2135/cropsci2013.08.0579</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-23">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Rudis</surname>
                            <given-names>B</given-names>
                        </name>
</person-group>:
                    <article-title>qrencoder: Quick Response Code (QR Code) / Matrix Barcode Creator</article-title>.<year>2016</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/qrencoder/qrencoder.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-24">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sali</surname>
                            <given-names>A</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hass</surname>
                            <given-names>L</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Attali</surname>
                            <given-names>D</given-names>
                        </name>
</person-group>:
                    <article-title>shinycssloaders: Add Loading Animations to a &#x201c;shiny&#x201d; Output While It&#x2019;s Recalculating</article-title>.<year>2020</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/shinycssloaders/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-25">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Sievert</surname>
                            <given-names>C</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cheng</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Aden-Buie</surname>
                            <given-names>G</given-names>
                        </name>
</person-group>:
                    <article-title>bslib: Custom &#x201c;Bootstrap&#x201d; &#x201c;Sass&#x201d; Themes for &#x201c;shiny&#x201d; and &#x201c;rmarkdown&#x201d;</article-title>.<year>2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rdrr.io/cran/bslib/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-26">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Urbanek</surname>
                            <given-names>S</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Ts&#x2019;o</surname>
                            <given-names>T</given-names>
                        </name>
</person-group>:
                    <article-title>uuid: Tools for Generating and Handling of UUIDs</article-title>.<year>2022</year>.</mixed-citation>
            </ref>
            <ref id="ref-27">
                <mixed-citation publication-type="web">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>:
                    <article-title>assertthat: Easy Pre and Post Assertions</article-title>.<year>2019</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/assertthat/assertthat.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-28">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bryan</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Barrett</surname>
                            <given-names>M</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>usethis: Automate Package and Project Setup</article-title>.<year>2023a</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://usethis.r-lib.org/reference/usethis-package.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-29">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Bryan</surname>
                            <given-names>J</given-names>
                        </name>
</person-group>
                    <person-group>

                        <collab>, Posit, attribution), P. (Copyright holder of all R. code and all C. code without explicit copyright, code), M.K. (Author of included R., code), K.V. (Author of included libxls, code), C.L. (Author of included libxls, code), B.C. (Author of included libxls, code), D.H. (Author of included libxls, code), E.M. (Author of included libxls)</collab>
</person-group>:
                    <article-title>readxl: Read Excel Files</article-title>.<year>2023b</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/readxl/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-30">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chang</surname>
                            <given-names>W</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Henry</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics</article-title>.<year>2023c</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://search.r-project.org/CRAN/refmans/ggplot2/html/ggplot2-package.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-31">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Danenberg</surname>
                            <given-names>P</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Cs&#x00e1;rdi</surname>
                            <given-names>G</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>roxygen2: In-Line Documentation for R</article-title>.<year>2022a</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://rdrr.io/cran/roxygen2/">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-32">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Fran&#x00e7;ois</surname>
                            <given-names>R</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Henry</surname>
                            <given-names>L</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>dplyr: A Grammar of Data Manipulation</article-title>.<year>2023d</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/dplyr/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-33">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Henry</surname>
                            <given-names>L</given-names>
                        </name>
</person-group>:
                    <article-title>purrr: Functional Programming Tools</article-title>.<year>2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/purrr/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-34">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Hester</surname>
                            <given-names>J</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Chang</surname>
                            <given-names>W</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>devtools: Tools to Make Developing R Packages Easier</article-title>.<year>2022b</year>.</mixed-citation>
            </ref>
            <ref id="ref-35">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wickham</surname>
                            <given-names>H</given-names>
                        </name>
</person-group>
                    <person-group>

                        <collab>, Software, P., PBC, utils::recover()), R.C. team (Implementation of</collab>
</person-group>:
                    <article-title>testthat: Unit Testing for R</article-title>.<year>2023e</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/testthat/index.html">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-36">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wright</surname>
                            <given-names>K</given-names>
                        </name>
</person-group>:
                    <article-title>desplot: Plotting Field Plans for Agricultural Experiments</article-title>.<year>2023</year>.
                    <ext-link ext-link-type="uri" xlink:href="https://cran.r-project.org/web/packages/desplot/desplot.pdf">Reference Source</ext-link>
                </mixed-citation>
            </ref>
            <ref id="ref-37">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wu</surname>
                            <given-names>Y</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Lougheed</surname>
                            <given-names>DR</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Lougheed</surname>
                            <given-names>SC</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>
                        <italic toggle="yes">baRcodeR</italic>: An open-source R package for sample labelling.</article-title>
                    <source>

                        <italic toggle="yes">Methods Ecol Evol.</italic>
</source>
                    <year>2020a</year>;<volume>11</volume>:<fpage>980</fpage>&#x2013;<lpage>985</lpage>.
                    <pub-id pub-id-type="doi">10.1111/2041-210X.13405</pub-id>
                </mixed-citation>
            </ref>
            <ref id="ref-38">
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">

                        <name name-style="western">
                            <surname>Wu</surname>
                            <given-names>Y</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Lougheed</surname>
                            <given-names>DR</given-names>
                        </name>

                        <name name-style="western">
                            <surname>Lougheed</surname>
                            <given-names>SC</given-names>
                        </name>

                        <etal/>
</person-group>:
                    <article-title>
                        <italic toggle="yes">baRcodeR</italic>: An open-source R package for sample labelling.</article-title>
                    <source>

                        <italic toggle="yes">Methods Ecol Evol.</italic>
</source>
                    <year>2020b</year>;<volume>11</volume>:<fpage>980</fpage>&#x2013;<lpage>985</lpage>.
                    <pub-id pub-id-type="doi">10.1111/2041-210X.13405</pub-id>
                </mixed-citation>
            </ref>
        </ref-list>
    </back>
    <sub-article article-type="reviewer-report" id="report36569">
        <front-stub>
            <article-id pub-id-type="doi">10.21956/gatesopenres.16616.r36569</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Tiago</surname>
                        <given-names>Olivoto</given-names>
                    </name>
                    <xref ref-type="aff" rid="r36569a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-0241-9636</uri>
                </contrib>
                <aff id="r36569a1">
                    <label>1</label>Universidade Federal de Santa Catarina, Florian&#x00f3;polis, State of Santa Catarina, Brazil</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>17</day>
                <month>7</month>
                <year>2024</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2024 Tiago O</copyright-statement>
                <copyright-year>2024</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport36569" related-article-type="peer-reviewed-article" xlink:href="10.12688/gatesopenres.15268.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The article "Introducing qrlabelr: Fast user-friendly software for machine- and human-readable labels in agricultural research and development" by Alexander Kena et al. presents a new open-source software package, qrlabelr, designed to create print-ready plot labels that are both machine- and human-readable. The qrlabelr package, available in R, offers customizable functions and an interactive Shiny app to facilitate the creation of these labels. The software guarantees true string fidelity after QR encoding and provides faster label generation compared to existing solutions. The article details the software&#x2019;s development, features, and practical applications in agricultural research.</p>
            <p> The article is well-structured, following a logical flow from the introduction of the problem, through the development and features of the software, to practical applications and conclusions.</p>
            <p> I have a few suggestions to the authors regarding some code bugs I&#x2019;ve faced while testing the package and how they can be potentially fixed</p>
            <p> 
                <bold>get_unique_id argument in gp_label()</bold>
            </p>
            <p> The function returns an error when get_unique_id is not declared. This probably occurs here 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/awkena/qrlabelr/blob/12003c4c97d1e291f3c8c5329ddf1948eca4151c/R/all_new_functions.R#L1215">https://github.com/awkena/qrlabelr/blob/12003c4c97d1e291f3c8c5329ddf1948eca4151c/R/all_new_functions.R#L1215</ext-link>
            </p>
            <p> Suggestion</p>
            <p> </p>
            <p> &#x00a0; if (get_unique_id[1] == "uuid") {</p>
            <p> &#x00a0;&#x00a0;&#x00a0; UNIQUE_ID &lt;- uuid::UUIDgenerate(use.time = TRUE, n = nrow(dat), output = "string")</p>
            <p> &#x00a0;&#x00a0;&#x00a0;</p>
            <p> &#x00a0; } else if (get_unique_id[1] == "custom") {</p>
            <p> &#x00a0;&#x00a0;&#x00a0; UNIQUE_ID &lt;- dat[, unique_id]</p>
            <p> &#x00a0; }</p>
            <p> </p>
            <p> Set a default value for unique_id</p>
            <p> If I set get_unique_id = &#x201c;custom&#x201d;, and I do not have a &#x201c;unique_id&#x201d; column, the function returns the following error&#x2026;This is probably occurs here</p>
            <p> 
                <ext-link ext-link-type="uri" xlink:href="https://github.com/awkena/qrlabelr/blob/12003c4c97d1e291f3c8c5329ddf1948eca4151c/R/all_new_functions.R#L323-L328">https://github.com/awkena/qrlabelr/blob/12003c4c97d1e291f3c8c5329ddf1948eca4151c/R/all_new_functions.R#L323-L328</ext-link>
            </p>
            <p> </p>
            <p> </p>
            <p> 
                <bold>Function to Create Unique IDs</bold>
            </p>
            <p> Add a utility function to create unique IDs if they are not present. This function can concatenate specified columns to generate a unique ID.</p>
            <p> add_unique_id &lt;- function(df, ...) {</p>
            <p> &#x00a0;&#x00a0;&#x00a0; if(!"unique_id" %in% colnames(df)) {</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; cols &lt;- as.character(substitute(list(...)))[-1]</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; df$unique_id &lt;- apply(df[, cols], 1, function(row) {</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; row &lt;- sapply(row, function(x) trimws(as.character(x))) # Convert to character and trim whitespace</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; paste(row, collapse = "_")</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; })</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; return(df)</p>
            <p> &#x00a0;&#x00a0;&#x00a0; } else {</p>
            <p> &#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0;&#x00a0; message("`unique_id` column already exists in the data frame. Skipping...")</p>
            <p> &#x00a0;&#x00a0;&#x00a0; }</p>
            <p> }</p>
            <p> </p>
            <p> 
                <bold>Performance Benchmarking</bold>
            </p>
            <p> The authors says that &#x201c;generating QR codes from strings could be computationally intensive depending on the number and length of strings to encode into QR codes, and the error correction level for the QR codes&#x201d;. So, I would suggest comparing the performance of long (UUIDs) vs shorter unique IDs as well as for the different error correction levels. This should make more robust the comparison of the proposed package with existing solutions.</p>
            <p> </p>
            <p> 
                <bold>Enhanced Plot Generation in add_border Function</bold>
            </p>
            <p> To produce a field sketch with two locations, I first needed to filter the data for each location. To improve this function, I would suggest first checking if the LOCATION column has more than one level and using a loop to generate plots for each level. This will simplify the generation of multiple field layouts.</p>
            <p> </p>
            <p> &#x00a0;&#x00a0;&#x00a0; for (loc in unique(dat$LOCATION)) {</p>
            <p> # make the plot here</p>
            <p> ggplot(dat[dat$LOCATION == loc, ], &#x2026;.)</p>
            <p> &#x00a0;&#x00a0;&#x00a0; }</p>
            <p> </p>
            <p> 
                <bold>Shiny App Improvements</bold>
            </p>
            <p> The shiny app is well designed and worked well in some tests I&#x2019;ve made. One suggestion would to add an option in the template setup tab to allow users to "save my own template". This will enhance user experience by enabling the reuse of customized templates.</p>
            <p> By addressing these points, the article will be more scientifically sound and user-friendly, enhancing the overall utility and impact of the qrlabelr package.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Plant breeding, experimental statistics with experience in developing R and shiny apps for R</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report36567">
        <front-stub>
            <article-id pub-id-type="doi">10.21956/gatesopenres.16616.r36567</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Hershberger</surname>
                        <given-names>Jenna</given-names>
                    </name>
                    <xref ref-type="aff" rid="r36567a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-3147-6867</uri>
                </contrib>
                <aff id="r36567a1">
                    <label>1</label>Clemson University, Clemson, South Carolina, USA</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>17</day>
                <month>7</month>
                <year>2024</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2024 Hershberger J</copyright-statement>
                <copyright-year>2024</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport36567" related-article-type="peer-reviewed-article" xlink:href="10.12688/gatesopenres.15268.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve-with-reservations</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>
                <bold>Summary</bold>
            </p>
            <p> This manuscript provides a description of a new R package and R Shiny application for agricultural research label creation. The app addresses a need for an open-source method for label generation in plant breeding and genetics research.&#x00a0;</p>
            <p> 
                <bold>General comments</bold> 
                <list list-type="bullet">
                    <list-item>
                        <p>Why is baRcodeR specifically called out and discussed so deeply throughout the manuscript?&#x00a0;&#x00a0;The introduction focuses on the negative aspects of the software to a level that borders on inappropriate, and it is repeatedly referred to throughout the rest of the manuscript in a negative way. Was it created for another use case? Why not contribute to baRcodeR and instead create a new package? Please elaborate on this. Further, baRcodeR is not the only open-source software that can be used for creating plot labels, and Breedbase is one example of another software that can create barcode labels for agricultural research. There are multiple R and python packages/libraries that do this as well.&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>Does this software work for other brands of thermal printers? Do you have a list of compatible hardware?</p>
                    </list-item>
                    <list-item>
                        <p>"Shiny" is capitalized in some cases and not in others. For example, it is capitalized in the abstract but not in Figure 1. Please make this more consistent.</p>
                    </list-item>
                    <list-item>
                        <p>The plural for "software" is written as "software" and "softwares" in this manuscript. From a quick search, the correct plural form does not include an s at the end.</p>
                    </list-item>
                    <list-item>
                        <p>The term field book is also inconsistent throughout the manuscript, written as both one and two words. This is also true in the Shiny app. Please make this consistent.</p>
                    </list-item>
                    <list-item>
                        <p>BrAPI and the functionality it adds should be introduced in the introduction, as this is a major benefit of this package.</p>
                    </list-item>
                    <list-item>
                        <p>I recommend moving Table 1 to supplementary files. It would be more useful for users to have a table of functions from the package in the main text rather than the dependencies, especially considering they are automatically installed when the user installs qrlabelr.</p>
                    </list-item>
                    <list-item>
                        <p>The labels produced by this package have a wide variety of font sizes and alignment within the same label. Please consider standardizing this more for improved human readability.</p>
                    </list-item>
                    <list-item>
                        <p>This package makes many assumptions about what breeding programs need, but many of the hard-coded assumptions do not work across crops or programs.&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>The language in the manuscript has tone that resembles a sales pitch at times. The "Vignettes" section is a strong example of this tone. Please consider adding more details on the vignettes themselves rather than declaring the value of the vignettes in this section.</p>
                    </list-item>
                    <list-item>
                        <p>Why does the Shiny app have a different name than the R package? This could add confusion for users, especially given the inconsistent capitalization of the names. The url for the app encoded in the short url in the abstract includes "easyplotlabelr," which is not the name of the title of the page, "EasyQrlabelr," adding additional confusion.</p>
                    </list-item>
                    <list-item>
                        <p>The website title on the Shiny app includes dark text on a dark background. Consider changing this to increase accessibility.</p>
                    </list-item>
                    <list-item>
                        <p>The code snippets in the "Operation" section may be a better fit for a supplementary document, maybe an R script with the examples.</p>
                    </list-item>
                </list> &#x00a0;</p>
            <p> 
                <bold>Specific comments</bold>
            </p>
            <p> Abstract 
                <list list-type="bullet">
                    <list-item>
                        <p>Multiple comparisons are mentioned ("more flexibility" and "faster"), but it is not clear what qrlabelr is being compared to.</p>
                    </list-item>
                    <list-item>
                        <p>Consider removing the link in the abstract, changing it to a full link, or at least including the name of the software rather than random numbers and letters in the shortened URL. Using a URL shortener creates a dependency on this third party to maintain your link, which may add risk of link rot.&#x00a0;</p>
                    </list-item>
                </list> Introduction 
                <list list-type="bullet">
                    <list-item>
                        <p>There is an unnecessary comma in the first sentence.</p>
                    </list-item>
                    <list-item>
                        <p>The last sentence in the second paragraph is awkwardly worded. Consider revising.</p>
                    </list-item>
                    <list-item>
                        <p>In the first sentence of the third paragraph, please consider replacing "in advanced programs" with something more neutral such as "using barcodes." This sentence also includes BarTender with a link but does not spell out Microsoft. Please make references to software consistent in terms of names/links.</p>
                    </list-item>
                    <list-item>
                        <p>The second sentence of the third paragraph does not need a comma after South.</p>
                    </list-item>
                    <list-item>
                        <p>In the fifth paragraph, please describe how QR codes provide "dirt and damage resistance."</p>
                    </list-item>
                    <list-item>
                        <p>In the last paragraph in the introduction, the sentence that starts with "The new software offers" should have commas in place of the semicolons.</p>
                    </list-item>
                </list> Methods 
                <list list-type="bullet">
                    <list-item>
                        <p>The second paragraph under the "Package structure" heading has a mix of semicolons and commas. Please revise for consistency.</p>
                    </list-item>
                    <list-item>
                        <p>In the second paragraph under the "Package development tools" header, "GitHub Action Workflow" should be "GitHub Actions Workflow."</p>
                    </list-item>
                    <list-item>
                        <p>In the third paragraph under the "Package development tools" header, the word "setup" is a noun only and should be split into two words because it is not used as a noun here.</p>
                    </list-item>
                    <list-item>
                        <p>The last word of the fourth paragraph under the "Package development tools" header should be singular.</p>
                    </list-item>
                    <list-item>
                        <p>Under the "Installation" heading, why is RStudio required for installation? Can the package not be run solely on the command line or in a Jupyter notebook?&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>Please clarify the installation instructions to make it clear that these are two different installation options rather than two sequential steps. As written, this is not clear.</p>
                    </list-item>
                </list> Main features of the qrlabelr package 
                <list list-type="bullet">
                    <list-item>
                        <p>In the second paragraph, the sentence that starts with "This option facilitates" is awkwardly worded. Please revise.</p>
                    </list-item>
                    <list-item>
                        <p>What is meant by the term "customizable functions?" Does this just mean that the user can adjust the output using parameters? Or can users change the functions themselves?</p>
                    </list-item>
                    <list-item>
                        <p>"Automate" may be more appropriate than "automatize," as it is used to refer to software rather than personal behavior.</p>
                    </list-item>
                    <list-item>
                        <p>In the paragraph following the "The qrlabelr package is BrAPI-compliant" heading, BMS and Breedbase are hyperlinks, but elsewhere urls are written out. Please make this more consistent. The phrase "interoperability functionality" is awkward and should be reworded.</p>
                    </list-item>
                    <list-item>
                        <p>Under the heading "The qrlabelr package designs print-ready machine- and human-readable labels," the sentence that starts with "The type of label to design" is awkwardly worded. Please revise for clarity.</p>
                    </list-item>
                    <list-item>
                        <p>In the paragraph beginning with "Generally, the use can," the phrases "more user-friendly" and "more meaningful information" are used, but the package is not compared with anything else. More user-friendly than what?</p>
                    </list-item>
                    <list-item>
                        <p>Under the heading that starts with "The qrlabelr package provides landscape and portrait&#x2026;," why is the default field plot label landscape? Please describe this reasoning. "iBlock" is not a common term in plant breeding. Incomplete blocks are often labeled as blocks on field tags. Why not include "Block" rather than "iBlock" here to have the default more aligned with a larger number of field designs?</p>
                    </list-item>
                    <list-item>
                        <p>In the second paragraph under the heading that starts with "The qrlabelr package implements a faster C-compiled&#x2026;," there is a citation in the first sentence. Please name the library being cited. The next sentence has an unnecessary comma. Later in this paragraph, the word "speed" should be plural in the sentence ending with "different processor speed."&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>In the paragraph following the header "The qrlabelr package supports best practices&#x2026;," the phrase "and possibly informative" is unnecessary in the first sentence.</p>
                    </list-item>
                    <list-item>
                        <p>Please capitalize the acronym "ECL." What does the percentage in parentheses following the ECL levels indicate? It may be useful to add more information on error correction for the reader to help explain how this increases damage resistance.</p>
                    </list-item>
                </list> Operation 
                <list list-type="bullet">
                    <list-item>
                        <p>In the second paragraph under the heading "Examples of real use cases of the qrlabelr package," the term "followed-up" does not make sense. Do you mean "followed up with" or "followed?" Additionally, collaborations with research programs in Ghana are mentioned, but the program is not listed in the acknowledgments despite the Ugandan program being mentioned. The comma in this sentence is not in the right place.</p>
                    </list-item>
                </list> Software availability 
                <list list-type="bullet">
                    <list-item>
                        <p>This package is on CRAN, but its presence there is not included in this software availability statement.</p>
                    </list-item>
                </list> References 
                <list list-type="bullet">
                    <list-item>
                        <p>The reference for the readxl R package includes specific author contributions, which is inconsistent with the other references. Please correct this.</p>
                    </list-item>
                    <list-item>
                        <p>Most R packages contain specific citation recommendations, but these are not used in the reference section for this manuscript. Please double check all R package references.</p>
                    </list-item>
                </list> Figure 1 
                <list list-type="bullet">
                    <list-item>
                        <p>Consider adding the Field Book logo rather than a screenshot for consistency. The Field Book app name is two words, but it is shown as "FieldBook" in this figure.</p>
                    </list-item>
                </list> Figure 3 
                <list list-type="bullet">
                    <list-item>
                        <p>The use of numbers in this figure is very confusing. For example, in Figure 3C, "10. Position 3" has mixed numbers. Why give two separate number labels to the same location? Please simplify this.</p>
                    </list-item>
                    <list-item>
                        <p>In Figure 3B, why are fields 5, 6, and 7 not left aligned together?&#x00a0;</p>
                    </list-item>
                    <list-item>
                        <p>In general, the wide number of font sizes is very distracting on these labels.</p>
                    </list-item>
                    <list-item>
                        <p>Why are there only nine fields in the landscape orientation but 10 in the portrait orientation? This does not seem to be described in the text.</p>
                    </list-item>
                </list> Figure 4 
                <list list-type="bullet">
                    <list-item>
                        <p>Please standardize the numbers on the y-axis, either using scientific notation on both or neither. Consider using a faceted plot created by ggplot2::facet_grid() or ggplot2::facet_wrap() so the scales match between the two subplots.</p>
                    </list-item>
                </list> Figure 6 
                <list list-type="bullet">
                    <list-item>
                        <p>This figure is not easy to follow. Please revise for clarity. The caption mentions 13 template labels, but these are not described in this manuscript. Consider adding this description in supplemental table format.</p>
                    </list-item>
                </list>
            </p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>Plant breeding and genetics, R package development</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard, however I have significant reservations, as outlined above.</p>
        </body>
    </sub-article>
    <sub-article article-type="reviewer-report" id="report36564">
        <front-stub>
            <article-id pub-id-type="doi">10.21956/gatesopenres.16616.r36564</article-id>
            <title-group>
                <article-title>Reviewer response for version 1</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author">
                    <name>
                        <surname>Correndo</surname>
                        <given-names>Adrian</given-names>
                    </name>
                    <xref ref-type="aff" rid="r36564a1">1</xref>
                    <role>Referee</role>
                    <uri content-type="orcid">https://orcid.org/0000-0002-4172-289X</uri>
                </contrib>
                <aff id="r36564a1">
                    <label>1</label>Department of Plant Agriculture, University of Guelph, Guelph, Canada</aff>
            </contrib-group>
            <author-notes>
                <fn fn-type="conflict">
                    <p>
                        <bold>Competing interests: </bold>No competing interests were disclosed.</p>
                </fn>
            </author-notes>
            <pub-date pub-type="epub">
                <day>17</day>
                <month>7</month>
                <year>2024</year>
            </pub-date>
            <permissions>
                <copyright-statement>Copyright: &#x00a9; 2024 Correndo A</copyright-statement>
                <copyright-year>2024</copyright-year>
                <license xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>This is an open access peer review report distributed under the terms of the Creative Commons Attribution Licence, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.</license-p>
                </license>
            </permissions>
            <related-article ext-link-type="doi" id="relatedArticleReport36564" related-article-type="peer-reviewed-article" xlink:href="10.12688/gatesopenres.15268.1"/>
            <custom-meta-group>
                <custom-meta>
                    <meta-name>recommendation</meta-name>
                    <meta-value>approve</meta-value>
                </custom-meta>
            </custom-meta-group>
        </front-stub>
        <body>
            <p>The article is overall well written, with a clear statement of need, a comparison to the most relevant alternative option in R, description of structure and functionality. Moreover, I really liked how the authors clearly documented the process to create the different package-components, test it, host it on GitHub, and added continuous integration.</p>
            <p> </p>
            <p> The package looks like a good tool, Congratulations! I would try to implement it myself and recommend others for field experiments labelling.</p>
            <p> </p>
            <p> Below authors may find some feedback. I hope it helps to polish the article.</p>
            <p> </p>
            <p> 1.&#x00a0;&#x00a0;The "Main features" section, which I think it would be better if its subsections are numerated. Also, I strongly advise to remove the first words saying "The qrlabelr package...". That looks like an advertisement. This text could be perfectly removed and will not affect the meaning of subtitles.</p>
            <p> </p>
            <p> 2. I suggest to remove Figure 4. I think this figure and related text in the article as they are not essential content. If it were a machine learning package where the time and computing capacity for running algorithms are more crucial...but not for a package that simply creates labels. I don't think anybody would be too concern about it.</p>
            <p> </p>
            <p> 3. Operation section. I think it would really benefit from adding numbers to the subtitles (i.e. 1-Shiny-App, 2- Create labels in R)</p>
            <p> </p>
            <p> 4. Shiny-App. I couldn't find within the article text a link to the web-based "EasyQrlabelr". Could you please add it? Many users may prefer run it on the web rather than local, so it would be a good option.</p>
            <p> </p>
            <p> 5. I may also suggest adding a screenshot of the EasyQrlabelr shiny-app. I think that would be better than even Figure 6.</p>
            <p>Are the conclusions about the tool and its performance adequately supported by the findings presented in the article?</p>
            <p>Yes</p>
            <p>Is the rationale for developing the new software tool clearly explained?</p>
            <p>Yes</p>
            <p>Is the description of the software tool technically sound?</p>
            <p>Yes</p>
            <p>Are sufficient details of the code, methods and analysis (if applicable) provided to allow replication of the software development and its use by others?</p>
            <p>Yes</p>
            <p>Is sufficient information provided to allow interpretation of the expected output datasets and any results generated using the tool?</p>
            <p>Yes</p>
            <p>Reviewer Expertise:</p>
            <p>cropping systems, sustainability, soil fertility, crop nutrition</p>
            <p>I confirm that I have read this submission and believe that I have an appropriate level of expertise to confirm that it is of an acceptable scientific standard.</p>
        </body>
    </sub-article>
</article>
