├── .Rbuildignore ├── .dockerignore ├── .gitignore ├── .repro ├── Dockerfile_apt ├── Dockerfile_base ├── Dockerfile_manual ├── Dockerfile_packages ├── Makefile_Docker └── Makefile_Rmds ├── CODE_OF_CONDUCT.md ├── Dockerfile ├── LICENSE.md ├── Makefile ├── R ├── bibliography.R ├── hash.R ├── link.R ├── simulation.R └── simulation_funs.R ├── README.Rmd ├── README.md ├── abstract.Rmd ├── chicago2.bst ├── data ├── overview.csv ├── sd3.csv └── simulation_results.csv ├── images ├── idea-change.png ├── modified.pdf ├── modified.png ├── nutshell.pdf └── nutshell.svg ├── install.Rmd ├── install.md ├── journalnames.tex ├── logo-ccby.pdf ├── logo-mdpi.pdf ├── logo-orcid.pdf ├── logo-updates.pdf ├── manuscript.Rmd ├── manuscript.tex ├── mdpi.bst ├── mdpi.cls ├── packages.bib ├── preregistration.Rmd ├── preregistration.bib ├── references.bib ├── repro-tutorial.Rproj └── repro_log.R /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^LICENSE\.md$ 2 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | *.tar.gz 2 | *.sif 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .Rproj.user 2 | .Rhistory 3 | .RData 4 | .Ruserdata 5 | .Rdata 6 | .httr-oauth 7 | .DS_Store 8 | *.html 9 | *.pdf 10 | apa7.csl 11 | .ssh/ 12 | .local/ 13 | .pki/ 14 | .cache/ 15 | *.svg 16 | *.png 17 | *.sif 18 | *.rds 19 | *.tex 20 | *.tar.gz 21 | temp.bib 22 | *.log 23 | *.zip 24 | data/data.csv 25 | *.aux 26 | *.out 27 | .bash_history 28 | .wget-hsts 29 | -------------------------------------------------------------------------------- /.repro/Dockerfile_apt: -------------------------------------------------------------------------------- 1 | RUN apt-get update -y && apt-get install -y inkscape 2 | -------------------------------------------------------------------------------- /.repro/Dockerfile_base: -------------------------------------------------------------------------------- 1 | FROM rocker/verse:4.0.4 2 | ARG BUILD_DATE=2021-05-06 3 | WORKDIR /home/rstudio 4 | RUN MRAN=https://mran.microsoft.com/snapshot/${BUILD_DATE} \ 5 | && echo MRAN=$MRAN >> /etc/environment \ 6 | && export MRAN=$MRAN \ 7 | && echo "options(repos = c(CRAN='$MRAN'), download.file.method = 'libcurl')" >> /usr/local/lib/R/etc/Rprofile.site 8 | -------------------------------------------------------------------------------- /.repro/Dockerfile_manual: -------------------------------------------------------------------------------- 1 | RUN Rscript -e 'tinytex::tlmgr_install(c("epstopdf-pkg", "mdwtools", "booktabs", "framed", "fancyvrb", "geometry", "infwarerr", "pdftexcmds", "xcolor", "etoolbox", "kvsetkeys", "ltxcmds", "kvoptions", "iftex", "amsmath", "auxhook", "auxhook", "bigintcalc", "bitset", "etexcmds", "gettitlestring", "hycolor", "hyperref", "intcalc", "kvdefinekeys", "letltxmacro", "pdfescape", "refcount", "rerunfilecheck", "stringenc", "uniquecounter", "zapfding", "colortbl", "soul", "multirow", "microtype", "totcount", "amscls", "hyphenat", "natbib", "footmisc", "newfloat", "caption", "texlive-scripts", "fancyhdr", "grfext", "lastpage", "palatino", "ec", "lineno", "float", "setspace", "enumitem", "psnfss", "symbol", "titlesec", "tabto-ltx", "fp", "ms", "pgf", "fpl", "mathpazo", "dvips", "upquote", "draftwatermark", "changepage", "frankenstein", "was", "pbox", "paracol", "ragged2e", "tocloft", "enotez", "koma-script", "everysel", "translations", "seqsplit"))' 2 | -------------------------------------------------------------------------------- /.repro/Dockerfile_packages: -------------------------------------------------------------------------------- 1 | RUN install2.r --error --skipinstalled \ 2 | furrr \ 3 | future.batchtools \ 4 | gert \ 5 | here \ 6 | knitr \ 7 | lavaan \ 8 | moments \ 9 | pander \ 10 | patchwork \ 11 | renv \ 12 | report \ 13 | rticles \ 14 | slider \ 15 | targets \ 16 | tidyverse \ 17 | usethis 18 | RUN installGithub.r \ 19 | aaronpeikert/repro@15a069 \ 20 | rstudio/webshot2@f62e743 21 | -------------------------------------------------------------------------------- /.repro/Makefile_Docker: -------------------------------------------------------------------------------- 1 | ### Docker Options ### 2 | # --user indicates which user to emulate 3 | # -v which directory on the host should be accessable in the container 4 | # the last argument is the name of the container which is the project name 5 | DFLAGS = --rm $(DUSER) -v "$(DDIR)":"$(DHOME)" $(PROJECT) 6 | DCMD = run 7 | DHOME = /home/rstudio/ 8 | 9 | # docker for windows needs a pretty unusual path specification 10 | # which needs to be specified *manually* 11 | ifeq ($(WINDOWS),TRUE) 12 | ifndef WINDIR 13 | $(error WINDIR is not set) 14 | endif 15 | DDIR := $(WINDIR) 16 | # is meant to be empty 17 | UID := 18 | DUSER := 19 | else 20 | DDIR := $(CURDIR) 21 | UID = $(shell id -u) 22 | DUSER = --user $(UID) 23 | endif 24 | 25 | ### Docker Command ### 26 | 27 | ifeq ($(DOCKER),TRUE) 28 | DRUN := docker $(DCMD) $(DFLAGS) 29 | WORKDIR := $(DHOME) 30 | endif 31 | 32 | ### Docker Image ### 33 | 34 | docker: build 35 | build: Dockerfile 36 | docker build -t $(PROJECT) . 37 | rebuild: 38 | docker build --no-cache --pull -t $(PROJECT) . 39 | save-docker: $(PROJECT).tar.gz 40 | $(PROJECT).tar.gz: 41 | docker save $(PROJECT):latest | gzip > $@ 42 | 43 | singularity: $(PROJECT).sif 44 | 45 | $(PROJECT).sif: docker 46 | singularity build $@ docker-daemon://$(PROJECT):latest 47 | -------------------------------------------------------------------------------- /.repro/Makefile_Rmds: -------------------------------------------------------------------------------- 1 | install.md: install.Rmd R/link.R 2 | $(RUN1) Rscript -e 'rmarkdown::render("$(WORKDIR)/$<", "all")' $(RUN2) 3 | 4 | manuscript.pdf: manuscript.Rmd data/simulation_results.csv R/simulation.R R/simulation_funs.R R/link.R temp.bib images/nutshell.pdf references.bib 5 | $(RUN1) Rscript -e 'rmarkdown::render("$(WORKDIR)/$<", "all")' $(RUN2) 6 | 7 | preregistration.pdf: preregistration.Rmd preregistration.bib 8 | $(RUN1) Rscript -e 'rmarkdown::render("$(WORKDIR)/$<", "all")' $(RUN2) 9 | 10 | README.md: README.Rmd images/nutshell.svg 11 | $(RUN1) Rscript -e 'rmarkdown::render("$(WORKDIR)/$<", "all")' $(RUN2) 12 | 13 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards 42 | of acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies 54 | when an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail 56 | address, posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at [INSERT CONTACT 63 | METHOD]. All complaints will be reviewed and investigated promptly and fairly. 64 | 65 | All community leaders are obligated to respect the privacy and security of the 66 | reporter of any incident. 67 | 68 | ## Enforcement Guidelines 69 | 70 | Community leaders will follow these Community Impact Guidelines in determining 71 | the consequences for any action they deem in violation of this Code of Conduct: 72 | 73 | ### 1. Correction 74 | 75 | **Community Impact**: Use of inappropriate language or other behavior deemed 76 | unprofessional or unwelcome in the community. 77 | 78 | **Consequence**: A private, written warning from community leaders, providing 79 | clarity around the nature of the violation and an explanation of why the 80 | behavior was inappropriate. A public apology may be requested. 81 | 82 | ### 2. Warning 83 | 84 | **Community Impact**: A violation through a single incident or series of 85 | actions. 86 | 87 | **Consequence**: A warning with consequences for continued behavior. No 88 | interaction with the people involved, including unsolicited interaction with 89 | those enforcing the Code of Conduct, for a specified period of time. This 90 | includes avoiding interactions in community spaces as well as external channels 91 | like social media. Violating these terms may lead to a temporary or permanent 92 | ban. 93 | 94 | ### 3. Temporary Ban 95 | 96 | **Community Impact**: A serious violation of community standards, including 97 | sustained inappropriate behavior. 98 | 99 | **Consequence**: A temporary ban from any sort of interaction or public 100 | communication with the community for a specified period of time. No public or 101 | private interaction with the people involved, including unsolicited interaction 102 | with those enforcing the Code of Conduct, is allowed during this period. 103 | Violating these terms may lead to a permanent ban. 104 | 105 | ### 4. Permanent Ban 106 | 107 | **Community Impact**: Demonstrating a pattern of violation of community 108 | standards, including sustained inappropriate behavior, harassment of an 109 | individual, or aggression toward or disparagement of classes of individuals. 110 | 111 | **Consequence**: A permanent ban from any sort of public interaction within the 112 | community. 113 | 114 | ## Attribution 115 | 116 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 117 | version 2.0, 118 | available at https://www.contributor-covenant.org/version/2/0/ 119 | code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at https:// 128 | www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Generated by repro: do not edit by hand 2 | # Please edit Dockerfiles in .repro/ 3 | FROM rocker/verse:4.0.4 4 | ARG BUILD_DATE=2021-05-06 5 | WORKDIR /home/rstudio 6 | RUN MRAN=https://mran.microsoft.com/snapshot/${BUILD_DATE} \ 7 | && echo MRAN=$MRAN >> /etc/environment \ 8 | && export MRAN=$MRAN \ 9 | && echo "options(repos = c(CRAN='$MRAN'), download.file.method = 'libcurl')" >> /usr/local/lib/R/etc/Rprofile.site 10 | RUN Rscript -e 'tinytex::tlmgr_install(c("epstopdf-pkg", "mdwtools", "booktabs", "framed", "fancyvrb", "geometry", "infwarerr", "pdftexcmds", "xcolor", "etoolbox", "kvsetkeys", "ltxcmds", "kvoptions", "iftex", "amsmath", "auxhook", "auxhook", "bigintcalc", "bitset", "etexcmds", "gettitlestring", "hycolor", "hyperref", "intcalc", "kvdefinekeys", "letltxmacro", "pdfescape", "refcount", "rerunfilecheck", "stringenc", "uniquecounter", "zapfding", "colortbl", "soul", "multirow", "microtype", "totcount", "amscls", "hyphenat", "natbib", "footmisc", "newfloat", "caption", "texlive-scripts", "fancyhdr", "grfext", "lastpage", "palatino", "ec", "lineno", "float", "setspace", "enumitem", "psnfss", "symbol", "titlesec", "tabto-ltx", "fp", "ms", "pgf", "fpl", "mathpazo", "dvips", "upquote", "draftwatermark"))' 11 | RUN apt-get update -y && apt-get install -y inkscape 12 | RUN install2.r --error --skipinstalled \ 13 | furrr \ 14 | future.batchtools \ 15 | gert \ 16 | here \ 17 | knitr \ 18 | lavaan \ 19 | moments \ 20 | pander \ 21 | patchwork \ 22 | renv \ 23 | report \ 24 | rticles \ 25 | slider \ 26 | targets \ 27 | tidyverse \ 28 | usethis 29 | RUN installGithub.r \ 30 | aaronpeikert/repro@15a069 \ 31 | rstudio/webshot2@f62e743 32 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Attribution 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution 4.0 International Public License 58 | 59 | By exercising the Licensed Rights (defined below), You accept and agree 60 | to be bound by the terms and conditions of this Creative Commons 61 | Attribution 4.0 International Public License ("Public License"). To the 62 | extent this Public License may be interpreted as a contract, You are 63 | granted the Licensed Rights in consideration of Your acceptance of 64 | these terms and conditions, and the Licensor grants You such rights in 65 | consideration of benefits the Licensor receives from making the 66 | Licensed Material available under these terms and conditions. 67 | 68 | 69 | Section 1 -- Definitions. 70 | 71 | a. Adapted Material means material subject to Copyright and Similar 72 | Rights that is derived from or based upon the Licensed Material 73 | and in which the Licensed Material is translated, altered, 74 | arranged, transformed, or otherwise modified in a manner requiring 75 | permission under the Copyright and Similar Rights held by the 76 | Licensor. For purposes of this Public License, where the Licensed 77 | Material is a musical work, performance, or sound recording, 78 | Adapted Material is always produced where the Licensed Material is 79 | synched in timed relation with a moving image. 80 | 81 | b. Adapter's License means the license You apply to Your Copyright 82 | and Similar Rights in Your contributions to Adapted Material in 83 | accordance with the terms and conditions of this Public License. 84 | 85 | c. Copyright and Similar Rights means copyright and/or similar rights 86 | closely related to copyright including, without limitation, 87 | performance, broadcast, sound recording, and Sui Generis Database 88 | Rights, without regard to how the rights are labeled or 89 | categorized. For purposes of this Public License, the rights 90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 91 | Rights. 92 | 93 | d. Effective Technological Measures means those measures that, in the 94 | absence of proper authority, may not be circumvented under laws 95 | fulfilling obligations under Article 11 of the WIPO Copyright 96 | Treaty adopted on December 20, 1996, and/or similar international 97 | agreements. 98 | 99 | e. Exceptions and Limitations means fair use, fair dealing, and/or 100 | any other exception or limitation to Copyright and Similar Rights 101 | that applies to Your use of the Licensed Material. 102 | 103 | f. Licensed Material means the artistic or literary work, database, 104 | or other material to which the Licensor applied this Public 105 | License. 106 | 107 | g. Licensed Rights means the rights granted to You subject to the 108 | terms and conditions of this Public License, which are limited to 109 | all Copyright and Similar Rights that apply to Your use of the 110 | Licensed Material and that the Licensor has authority to license. 111 | 112 | h. Licensor means the individual(s) or entity(ies) granting rights 113 | under this Public License. 114 | 115 | i. Share means to provide material to the public by any means or 116 | process that requires permission under the Licensed Rights, such 117 | as reproduction, public display, public performance, distribution, 118 | dissemination, communication, or importation, and to make material 119 | available to the public including in ways that members of the 120 | public may access the material from a place and at a time 121 | individually chosen by them. 122 | 123 | j. Sui Generis Database Rights means rights other than copyright 124 | resulting from Directive 96/9/EC of the European Parliament and of 125 | the Council of 11 March 1996 on the legal protection of databases, 126 | as amended and/or succeeded, as well as other essentially 127 | equivalent rights anywhere in the world. 128 | 129 | k. You means the individual or entity exercising the Licensed Rights 130 | under this Public License. Your has a corresponding meaning. 131 | 132 | 133 | Section 2 -- Scope. 134 | 135 | a. License grant. 136 | 137 | 1. Subject to the terms and conditions of this Public License, 138 | the Licensor hereby grants You a worldwide, royalty-free, 139 | non-sublicensable, non-exclusive, irrevocable license to 140 | exercise the Licensed Rights in the Licensed Material to: 141 | 142 | a. reproduce and Share the Licensed Material, in whole or 143 | in part; and 144 | 145 | b. produce, reproduce, and Share Adapted Material. 146 | 147 | 2. Exceptions and Limitations. For the avoidance of doubt, where 148 | Exceptions and Limitations apply to Your use, this Public 149 | License does not apply, and You do not need to comply with 150 | its terms and conditions. 151 | 152 | 3. Term. The term of this Public License is specified in Section 153 | 6(a). 154 | 155 | 4. Media and formats; technical modifications allowed. The 156 | Licensor authorizes You to exercise the Licensed Rights in 157 | all media and formats whether now known or hereafter created, 158 | and to make technical modifications necessary to do so. The 159 | Licensor waives and/or agrees not to assert any right or 160 | authority to forbid You from making technical modifications 161 | necessary to exercise the Licensed Rights, including 162 | technical modifications necessary to circumvent Effective 163 | Technological Measures. For purposes of this Public License, 164 | simply making modifications authorized by this Section 2(a) 165 | (4) never produces Adapted Material. 166 | 167 | 5. Downstream recipients. 168 | 169 | a. Offer from the Licensor -- Licensed Material. Every 170 | recipient of the Licensed Material automatically 171 | receives an offer from the Licensor to exercise the 172 | Licensed Rights under the terms and conditions of this 173 | Public License. 174 | 175 | b. No downstream restrictions. You may not offer or impose 176 | any additional or different terms or conditions on, or 177 | apply any Effective Technological Measures to, the 178 | Licensed Material if doing so restricts exercise of the 179 | Licensed Rights by any recipient of the Licensed 180 | Material. 181 | 182 | 6. No endorsement. Nothing in this Public License constitutes or 183 | may be construed as permission to assert or imply that You 184 | are, or that Your use of the Licensed Material is, connected 185 | with, or sponsored, endorsed, or granted official status by, 186 | the Licensor or others designated to receive attribution as 187 | provided in Section 3(a)(1)(A)(i). 188 | 189 | b. Other rights. 190 | 191 | 1. Moral rights, such as the right of integrity, are not 192 | licensed under this Public License, nor are publicity, 193 | privacy, and/or other similar personality rights; however, to 194 | the extent possible, the Licensor waives and/or agrees not to 195 | assert any such rights held by the Licensor to the limited 196 | extent necessary to allow You to exercise the Licensed 197 | Rights, but not otherwise. 198 | 199 | 2. Patent and trademark rights are not licensed under this 200 | Public License. 201 | 202 | 3. To the extent possible, the Licensor waives any right to 203 | collect royalties from You for the exercise of the Licensed 204 | Rights, whether directly or through a collecting society 205 | under any voluntary or waivable statutory or compulsory 206 | licensing scheme. In all other cases the Licensor expressly 207 | reserves any right to collect such royalties. 208 | 209 | 210 | Section 3 -- License Conditions. 211 | 212 | Your exercise of the Licensed Rights is expressly made subject to the 213 | following conditions. 214 | 215 | a. Attribution. 216 | 217 | 1. If You Share the Licensed Material (including in modified 218 | form), You must: 219 | 220 | a. retain the following if it is supplied by the Licensor 221 | with the Licensed Material: 222 | 223 | i. identification of the creator(s) of the Licensed 224 | Material and any others designated to receive 225 | attribution, in any reasonable manner requested by 226 | the Licensor (including by pseudonym if 227 | designated); 228 | 229 | ii. a copyright notice; 230 | 231 | iii. a notice that refers to this Public License; 232 | 233 | iv. a notice that refers to the disclaimer of 234 | warranties; 235 | 236 | v. a URI or hyperlink to the Licensed Material to the 237 | extent reasonably practicable; 238 | 239 | b. indicate if You modified the Licensed Material and 240 | retain an indication of any previous modifications; and 241 | 242 | c. indicate the Licensed Material is licensed under this 243 | Public License, and include the text of, or the URI or 244 | hyperlink to, this Public License. 245 | 246 | 2. You may satisfy the conditions in Section 3(a)(1) in any 247 | reasonable manner based on the medium, means, and context in 248 | which You Share the Licensed Material. For example, it may be 249 | reasonable to satisfy the conditions by providing a URI or 250 | hyperlink to a resource that includes the required 251 | information. 252 | 253 | 3. If requested by the Licensor, You must remove any of the 254 | information required by Section 3(a)(1)(A) to the extent 255 | reasonably practicable. 256 | 257 | 4. If You Share Adapted Material You produce, the Adapter's 258 | License You apply must not prevent recipients of the Adapted 259 | Material from complying with this Public License. 260 | 261 | 262 | Section 4 -- Sui Generis Database Rights. 263 | 264 | Where the Licensed Rights include Sui Generis Database Rights that 265 | apply to Your use of the Licensed Material: 266 | 267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 268 | to extract, reuse, reproduce, and Share all or a substantial 269 | portion of the contents of the database; 270 | 271 | b. if You include all or a substantial portion of the database 272 | contents in a database in which You have Sui Generis Database 273 | Rights, then the database in which You have Sui Generis Database 274 | Rights (but not its individual contents) is Adapted Material; and 275 | 276 | c. You must comply with the conditions in Section 3(a) if You Share 277 | all or a substantial portion of the contents of the database. 278 | 279 | For the avoidance of doubt, this Section 4 supplements and does not 280 | replace Your obligations under this Public License where the Licensed 281 | Rights include other Copyright and Similar Rights. 282 | 283 | 284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 285 | 286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 296 | 297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 306 | 307 | c. The disclaimer of warranties and limitation of liability provided 308 | above shall be interpreted in a manner that, to the extent 309 | possible, most closely approximates an absolute disclaimer and 310 | waiver of all liability. 311 | 312 | 313 | Section 6 -- Term and Termination. 314 | 315 | a. This Public License applies for the term of the Copyright and 316 | Similar Rights licensed here. However, if You fail to comply with 317 | this Public License, then Your rights under this Public License 318 | terminate automatically. 319 | 320 | b. Where Your right to use the Licensed Material has terminated under 321 | Section 6(a), it reinstates: 322 | 323 | 1. automatically as of the date the violation is cured, provided 324 | it is cured within 30 days of Your discovery of the 325 | violation; or 326 | 327 | 2. upon express reinstatement by the Licensor. 328 | 329 | For the avoidance of doubt, this Section 6(b) does not affect any 330 | right the Licensor may have to seek remedies for Your violations 331 | of this Public License. 332 | 333 | c. For the avoidance of doubt, the Licensor may also offer the 334 | Licensed Material under separate terms or conditions or stop 335 | distributing the Licensed Material at any time; however, doing so 336 | will not terminate this Public License. 337 | 338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 339 | License. 340 | 341 | 342 | Section 7 -- Other Terms and Conditions. 343 | 344 | a. The Licensor shall not be bound by any additional or different 345 | terms or conditions communicated by You unless expressly agreed. 346 | 347 | b. Any arrangements, understandings, or agreements regarding the 348 | Licensed Material not stated herein are separate from and 349 | independent of the terms and conditions of this Public License. 350 | 351 | 352 | Section 8 -- Interpretation. 353 | 354 | a. For the avoidance of doubt, this Public License does not, and 355 | shall not be interpreted to, reduce, limit, restrict, or impose 356 | conditions on any use of the Licensed Material that could lawfully 357 | be made without permission under this Public License. 358 | 359 | b. To the extent possible, if any provision of this Public License is 360 | deemed unenforceable, it shall be automatically reformed to the 361 | minimum extent necessary to make it enforceable. If the provision 362 | cannot be reformed, it shall be severed from this Public License 363 | without affecting the enforceability of the remaining terms and 364 | conditions. 365 | 366 | c. No term or condition of this Public License will be waived and no 367 | failure to comply consented to unless expressly agreed to by the 368 | Licensor. 369 | 370 | d. Nothing in this Public License constitutes or may be interpreted 371 | as a limitation upon, or waiver of, any privileges and immunities 372 | that apply to the Licensor or You, including from the legal 373 | processes of any jurisdiction or authority. 374 | 375 | 376 | ======================================================================= 377 | 378 | Creative Commons is not a party to its public 379 | licenses. Notwithstanding, Creative Commons may elect to apply one of 380 | its public licenses to material it publishes and in those instances 381 | will be considered the “Licensor.” The text of the Creative Commons 382 | public licenses is dedicated to the public domain under the CC0 Public 383 | Domain Dedication. Except for the limited purpose of indicating that 384 | material is shared under a Creative Commons public license or as 385 | otherwise permitted by the Creative Commons policies published at 386 | creativecommons.org/policies, Creative Commons does not authorize the 387 | use of the trademark "Creative Commons" or any other trademark or logo 388 | of Creative Commons without its prior written consent including, 389 | without limitation, in connection with any unauthorized modifications 390 | to any of its public licenses or any other arrangements, 391 | understandings, or agreements concerning use of licensed material. For 392 | the avoidance of doubt, this paragraph does not form part of the 393 | public licenses. 394 | 395 | Creative Commons may be contacted at creativecommons.org. 396 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | PROJECT := reprotutorial 2 | WORKDIR := $(CURDIR) 3 | 4 | # list below your targets and their recipies 5 | all: install.md README.md manuscript.pdf preregistration.pdf 6 | 7 | manuscript.tex: manuscript.pdf 8 | 9 | submission.zip: manuscript.pdf manuscript.tex manuscript.Rmd journalnames.tex mdpi.bst mdpi.cls logo-updates.pdf journalnames.tex chicago2.bst manuscript_files/ *.bib 10 | $(RUN1) zip -r $@ $^ $(RUN2) 11 | 12 | figures.zip: images/ manuscript_files/ 13 | $(RUN1) zip -r $@ $^ $(RUN2) 14 | 15 | data/MACH_data.zip: 16 | $(RUN1) curl https://openpsychometrics.org/_rawdata/MACH_data.zip -o $@ $(RUN2) 17 | 18 | data/data.csv: data/MACH_data.zip 19 | $(RUN1) unzip -p $< MACH_data/data.csv > $@ $(RUN2) 20 | 21 | data/simulation_results.csv: R/simulation.R R/simulation_funs.R 22 | $(RUN1) Rscript -e 'source("$<")' $(RUN2) 23 | 24 | simulated_data.csv: R/simulation.R 25 | $(RUN1) Rscript -e 'source("R/simulate.R")' $(RUN2) 26 | 27 | data/sd3.csv: R/simulation_funs.R 28 | $(RUN1) Rscript -e 'source("$<"); set.seed(1235); readr::write_csv(generate_data(500), "data/sd3.csv")' $(RUN2) 29 | 30 | images/nutshell.pdf: images/nutshell.svg 31 | inkscape --export-area-page --export-filename=$@ $< 32 | 33 | apa7.csl: 34 | $(RUN1) wget -O $@ https://raw.githubusercontent.com/citation-style-language/styles/master/apa.csl $(RUN2) 35 | 36 | temp.bib: R/bibliography.R references.bib 37 | $(RUN1) Rscript -e 'source("$<")' $(RUN2) 38 | 39 | ### Wrap Commands ### 40 | # if a command is to be send to another process e.g. a container/scheduler use: 41 | # $(RUN1) mycommand --myflag $(RUN2) 42 | RUN1 = $(QRUN1) $(SRUN) $(DRUN) 43 | RUN2 = $(QRUN2) 44 | 45 | ### Rmd's ### 46 | include .repro/Makefile_Rmds 47 | 48 | ### Docker ### 49 | # this is a workaround for windows users 50 | # please set WINDOWS=TRUE and adapt WINPATH if you are a windows user 51 | # note the unusual way to specify the path 52 | WINPATH = //c/Users/someuser/Documents/myproject/ 53 | include .repro/Makefile_Docker 54 | 55 | -------------------------------------------------------------------------------- /R/bibliography.R: -------------------------------------------------------------------------------- 1 | knitr::write_bib( 2 | c( 3 | .packages(), 4 | "repro", 5 | "here", 6 | "rticles", 7 | "gert", 8 | "bookdown", 9 | "lavaan", 10 | "knitr", 11 | "targets", 12 | "renv", 13 | "tidyverse" 14 | ), 15 | here::here("packages.bib") 16 | ) 17 | cat(c(readLines(here::here("packages.bib")), "\n", readLines(here::here("references.bib"))), 18 | sep = "\n", 19 | file = here::here("temp.bib")) 20 | -------------------------------------------------------------------------------- /R/hash.R: -------------------------------------------------------------------------------- 1 | #----hash---- 2 | # compute hash using md5 3 | hash <- digest::digest(res, "md5") 4 | if(hash != "e9e0dfe4b4753c1e00bb02e4205d8772"){ 5 | warning("Mismatch between original and current simulations!\nHash now is:\n '", hash, "'") 6 | } 7 | -------------------------------------------------------------------------------- /R/link.R: -------------------------------------------------------------------------------- 1 | link <- function(link, linktext = link, footnote = link != linktext, file = here::here("links.txt")){ 2 | markdown <- paste0("[", linktext, "](", link, ")") 3 | if(footnote){ 4 | ref <- gsub("[^a-zA-Z]*", "", linktext) 5 | markdown <- paste0(markdown, "[^", ref, "]", collapse = "") 6 | cat(paste0("[^", ref, "]: ", link, "\n"), file = file, append = TRUE) 7 | } 8 | return(markdown) 9 | } 10 | 11 | link_index <- function(file = here::here("links.txt")){ 12 | if(file.exists("links.txt")){ 13 | links <- readLines(file) 14 | cat(links, sep = "\n") 15 | file.remove(file) 16 | invisible() 17 | } else return(invisible()) 18 | } 19 | -------------------------------------------------------------------------------- /R/simulation.R: -------------------------------------------------------------------------------- 1 | library(furrr) 2 | library(tidyverse) 3 | source(here::here("R", "simulation_funs.R")) 4 | # if you have access to a hpc envir specify this in R/hpc.R 5 | # see https://github.com/aaronpeikert/repro-tutorial/blob/hpc/R/hpc.R 6 | # or `git checkout hpc R/hpc.R` 7 | # if no hpc is availible we use local multicore with all available cores 8 | # to speed up consider reduce nsim; increase nstep ↓↓↓ 9 | 10 | hpc_config <- here::here("R", "hpc.R") 11 | if(fs::file_exists(hpc_config)){ 12 | source(hpc_config) 13 | } else { 14 | plan(list(transparent, 15 | tweak(multisession))) 16 | } 17 | 18 | setup <- tidyr::expand_grid( 19 | n = c(10, seq(100, 1000, 100)), 20 | df = 8, # skew = sqrt(8/df) 21 | d = seq(0, .5, 0.05), 22 | i = 10) 23 | res_raw %<-% simulation_study(setup, 10000, 1235) 24 | 25 | res <- res_raw %>% 26 | group_by(across(-results)) %>% 27 | unnest_wider(results) %>% 28 | summarise(power = mean(p_value < 0.025), 29 | cohend_mean = mean(cohend), 30 | cohend_sd = sd(cohend), 31 | .groups = "drop") 32 | fs::dir_create(here::here("data")) 33 | write_csv(res, here::here("data", "simulation_results.csv")) 34 | 35 | res %>% 36 | ggplot(aes(n, power, color = d, group = d)) + 37 | geom_line() + 38 | theme_minimal() + 39 | NULL 40 | -------------------------------------------------------------------------------- /R/simulation_funs.R: -------------------------------------------------------------------------------- 1 | #----simulate_data---- 2 | simulate_data <- function(n, df, d, i){ 3 | # groups have same size 4 | stopifnot(n %% 2L == 0L) 5 | gender <- rep(c(0L, 1L), each = n/2) 6 | # use Chi^2 distributed random data for some skew 7 | rand <- matrix(rchisq(n * i, df/i), ncol = i) # sum of n chisq has df of n*df 8 | d_scaled <- d * sqrt(2*df)/i # scale d to express sd units (var(chisq) = 2df) 9 | # add difference only to group coded with `1` 10 | effect <- rand + d_scaled * gender 11 | # name items 12 | colnames(effect) <- paste0("mach", seq_len(i)) 13 | effect <- as.data.frame(effect) 14 | # recode gender from numeric to factor 15 | effect$gender <- factor(gender, levels = c(1L, 0L), labels = c("male", "female")) 16 | return(effect) 17 | } 18 | 19 | #----planned_analysis---- 20 | planned_analysis <- function(data, use_rank = "skew", skew_cutoff = 1){ 21 | # average over all variable supplied, except gender 22 | machiavellianism <- rowMeans(data["gender" != names(data)], na.rm = TRUE) 23 | # discard rows that only contain NAs 24 | data <- data[!is.na(machiavellianism),] 25 | machiavellianism <- machiavellianism[!is.na(machiavellianism)] 26 | # assure gender is factor 27 | gender <- as.factor(data$gender) 28 | # note skewness and decide t.test vs wilcox based on it 29 | skew <- moments::skewness(machiavellianism) 30 | # skewness cutoff 31 | if(use_rank == "skew")use_rank <- abs(skew) > skew_cutoff 32 | if(use_rank){ 33 | # t.test + rank = wilcox test 34 | machiavellianism <- rank(machiavellianism) 35 | } 36 | test <- t.test(machiavellianism ~ gender) 37 | # return a bunch of information 38 | list(test = test, skew = skew, use_rank = use_rank, n = length(gender)) 39 | } 40 | 41 | #----report_analysis---- 42 | report_analysis <- function(analysis, cat = TRUE) { 43 | params <- report::report_parameters(analysis$test) 44 | table <- attributes(params)$table 45 | model <- report::report_model(analysis$test, table = table) 46 | if (analysis$use_rank) 47 | model <- 48 | stringr::str_replace(model, 49 | fixed("Welch Two Sample t-test"), 50 | "Mann--Whitney--Wilcoxon test") 51 | out <- stringr::str_c("The ", model, " suggests that the effect is ", params, sep = "") 52 | if(cat){ 53 | cat(out) 54 | return(invisible(out)) 55 | } else { 56 | return(out) 57 | } 58 | } 59 | 60 | #----extract_funs---- 61 | #t2d <- function(t, n1, n2)t * sqrt(((n1 + n2)/(n1 * n2)) * (n1 + n2)/(n1 + n2 -2)) 62 | t2d <- function(test){ 63 | unname(2 * test$statistic/sqrt(test$parameter)) 64 | } 65 | parameter_recovery <- function(n, df, d, i, rank = FALSE){ 66 | t2d(planned_analysis(simulate_data(n, df, d, i), rank)$test$statistic, n/2, n/2) 67 | } 68 | 69 | extract_results <- function(analysis){ 70 | list(cohend = t2d(analysis$test), 71 | p_value = analysis$test$p.value, 72 | skew = analysis$skew) 73 | } 74 | 75 | #----simulation_study---- 76 | simulation_study_ <- function(setup){ 77 | all_steps <- purrr::compose(extract_results, planned_analysis, simulate_data) 78 | out <- dplyr::mutate(setup, results = furrr::future_pmap(setup, all_steps, .options = furrr::furrr_options(seed = TRUE))) 79 | #tidyr::unnest(out, results) 80 | out 81 | } 82 | 83 | simulation_study <- function(setup, k, seed = NULL){ 84 | furrr::future_map_dfr(seq_len(k), function(irrelevant)simulation_study_(setup), .options = furrr::furrr_options(seed = seed)) 85 | } 86 | -------------------------------------------------------------------------------- /README.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: github_document 3 | repro: 4 | images: 5 | - images/nutshell.svg 6 | --- 7 | 8 | 9 | 10 | # A Hitchhiker's Guide to Reproducible Research 11 | 12 | 13 | 14 | [![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) 15 | 16 | Preregistration as Code: [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5170740.svg)](https://doi.org/10.5281/zenodo.5170740) 17 | 18 | Results after Preregistration: [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5171678.svg)](https://doi.org/10.5281/zenodo.5171678) 19 | 20 | [📃Preprint📃](https://www.doi.org/10.31234/osf.io/fwxs4) 21 | 22 | 23 | 24 | ## How to reproduce this manuscript 25 | 26 | To reproduce this project Git, Make, and Docker is required (see [the installation guide](https://github.com/aaronpeikert/repro-tutorial/blob/main/install.md)). 27 | 28 | Open the terminal, download the repository, and enter the directory: 29 | 30 | ```bash 31 | git clone https://github.com/aaronpeikert/repro-tutorial.git 32 | cd repro-tutorial 33 | ``` 34 | 35 | Then build the Docker image, and run Make: 36 | 37 | ```bash 38 | make docker && 39 | make -B DOCKER=TRUE 40 | ``` 41 | 42 | ## Abstract 43 | 44 | ```{r abstract, child = 'abstract.Rmd'} 45 | ``` 46 | 47 | ```{r, echo=FALSE} 48 | knitr::include_graphics("images/nutshell.svg") 49 | ``` 50 | 51 | ## Code of Conduct 52 | 53 | Please note that the repro-tutorial project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). 54 | By contributing to this project, you agree to abide by its terms. 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # A Hitchhiker’s Guide to Reproducible Research 5 | 6 | 7 | 8 | [![Project Status: Active – The project has reached a stable, usable 9 | state and is being actively 10 | developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) 11 | 12 | Preregistration as Code: 13 | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5170740.svg)](https://doi.org/10.5281/zenodo.5170740) 14 | 15 | Results after Preregistration: 16 | [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.5171678.svg)](https://doi.org/10.5281/zenodo.5171678) 17 | 18 | [📃Preprint📃](https://www.doi.org/10.31234/osf.io/fwxs4) 19 | 20 | 21 | 22 | ## How to reproduce this manuscript 23 | 24 | To reproduce this project Git, Make, and Docker is required (see [the 25 | installation 26 | guide](https://github.com/aaronpeikert/repro-tutorial/blob/main/install.md)). 27 | 28 | Open the terminal, download the repository, and enter the directory: 29 | 30 | ``` bash 31 | git clone https://github.com/aaronpeikert/repro-tutorial.git 32 | cd repro-tutorial 33 | ``` 34 | 35 | Then build the Docker image, and run Make: 36 | 37 | ``` bash 38 | make docker && 39 | make -B DOCKER=TRUE 40 | ``` 41 | 42 | ## Abstract 43 | 44 | Computational reproducibility is the ability to obtain identical results 45 | from the *same* data with the *same* computer code. It is a building 46 | block for transparent and cumulative science because it enables the 47 | originator and other researchers, on other computers and later in time, 48 | to reproduce and thus understand how results came about while avoiding a 49 | variety of errors that may lead to erroneous reporting of statistical 50 | and computational results. In this tutorial, we demonstrate how the R 51 | package `repro` supports researchers in creating fully computationally 52 | reproducible research projects with tools from the software engineering 53 | community. Building upon this notion of fully automated reproducibility 54 | we present several applications including the preregistration of 55 | research plans with code (Preregistration as Code, PAC). PAC eschews all 56 | ambiguity of traditional preregistration and offers several more 57 | advantages. Making technical advancements that serve reproducibility 58 | more widely accessible for researchers holds the potential to innovate 59 | the research process to become more productive, credible, and reliable. 60 | 61 | ![](images/nutshell.svg) 62 | 63 | ## Code of Conduct 64 | 65 | Please note that the repro-tutorial project is released with a 66 | [Contributor Code of 67 | Conduct](https://contributor-covenant.org/version/2/0/CODE_OF_CONDUCT.html). 68 | By contributing to this project, you agree to abide by its terms. 69 | -------------------------------------------------------------------------------- /abstract.Rmd: -------------------------------------------------------------------------------- 1 | Computational reproducibility is the ability to obtain identical results from the *same* data with the *same* computer code. It is a building block for transparent and cumulative science because it enables the originator and other researchers, on other computers and later in time, to reproduce and thus understand how results came about while avoiding a variety of errors that may lead to erroneous reporting of statistical and computational results. In this tutorial, we demonstrate how the R package `repro` supports researchers in creating fully computationally reproducible research projects with tools from the software engineering community. Building upon this notion of fully automated reproducibility we present several applications including the preregistration of research plans with code (Preregistration as Code, PAC). PAC eschews all ambiguity of traditional preregistration and offers several more advantages. Making technical advancements that serve reproducibility more widely accessible for researchers holds the potential to innovate the research process to become more productive, credible, and reliable. 2 | -------------------------------------------------------------------------------- /data/overview.csv: -------------------------------------------------------------------------------- 1 | Setup,"1. install package manager when necessary (Chocolately for Windows and Homebrew for Mac OS) 2 | 2. install R + Rstudio with package manager (see installation guide) 3 | 2. install `remotes` package with `install.packages(""remotes"")` 4 | 2. install `repro`-package with `remotes::install_github(""aaronpeikert/repro"")` 5 | 2. Check Git with `repro::check_git()` 6 | 2. Check Make with `repro::check_make()` 7 | 2. Check Docker with `repro::check_docker()` 8 | 2. Check GitHub with `repro::check_github()`" 9 | Planning Phase,"1. Create an R Project with `repro::use_repro_template()` or `Rstudio → File → New Project... → New Directory → New Project` 10 | 2. Create a project draft `RStudio → File → New File → Markdown File` 11 | 2. Enable Git with `usethis::use_git()` 12 | 2. Use Git with `gert::git_add()` & `gert::git_commit()` or Terminal or Rstudio Git Pane 13 | 2. Create a README with `usethis::use_readme_rmd()` 14 | 2. Add a Licences for Text (`usethis::use_ccby_license()`), Code (`usethis::use_mit_license()`) and Data (`usethis::use_cc0_license()`). 15 | 2. Create a Code of Conduct with `usethis::use_code_of_conduct()` 16 | 2. Publish to Github with `usethis::use_github()` 17 | 2. (optional) Simulate Data with package `simstudy` or other 18 | 2. (optional) Preregister Manuscript including Code by assigning a DOI (see Archival and Dissemination)" 19 | Analyzing Data,"1. Create dynamic manuscript `RStudio → File → New File → R Markdown… → From Template` with `rticles` package 20 | 2. add required packages to YAML metadata header 21 | 2. generate `Dockerfile`with `repro::automate_docker()` 22 | 2. add required scripts and data to YAML metadata header 23 | 2. generate `Makefile` with `repro::automate_make()` 24 | 2. reproduce with `repro::automate()` and `repro::rerun()` on any change" 25 | Archival and Dissemination,"1. Connect zenodo.org with GitHub on https://zenodo.org/account/settings/github/ 26 | 2. save docker image to file with `make save-docker` 27 | 3. (optional) if data is not committed to repository save hash of data and add synthetic data with `synthpop` package 28 | 4. Create release on GitHub, with rendered documents and docker image." 29 | -------------------------------------------------------------------------------- /data/simulation_results.csv: -------------------------------------------------------------------------------- 1 | n,df,d,i,power,cohend_mean,cohend_sd 2 | 10,8,0,10,0.0304,-0.00369756702720728,0.9337871910642171 3 | 10,8,0.05,10,0.0295,0.06816207345640077,0.9333755988643844 4 | 10,8,0.1,10,0.0287,0.1392578368322405,0.935217116339786 5 | 10,8,0.15000000000000002,10,0.0306,0.21108481605828883,0.9361656583271327 6 | 10,8,0.2,10,0.0323,0.28289845169821626,0.9375574231355849 7 | 10,8,0.25,10,0.0368,0.35437909612942564,0.9418000756888645 8 | 10,8,0.30000000000000004,10,0.0404,0.42538318997771146,0.9473655551242337 9 | 10,8,0.35000000000000003,10,0.0463,0.496877711996777,0.9533049035772628 10 | 10,8,0.4,10,0.0531,0.5688589761111518,0.9611472310527751 11 | 10,8,0.45,10,0.06,0.6402702814398007,0.9664668232525958 12 | 10,8,0.5,10,0.0667,0.7108104452134212,0.9737100669152207 13 | 100,8,0,10,0.0251,-0.0014553102169257907,0.20643639975410266 14 | 100,8,0.05,10,0.0307,0.05207517381882778,0.20640728467300076 15 | 100,8,0.1,10,0.0464,0.105516591539752,0.20653616070786301 16 | 100,8,0.15000000000000002,10,0.0729,0.15905904619353262,0.20684168501321085 17 | 100,8,0.2,10,0.1122,0.21230580513031302,0.20726983719000994 18 | 100,8,0.25,10,0.1664,0.26554900389199626,0.20782272980601835 19 | 100,8,0.30000000000000004,10,0.2364,0.3189405397045686,0.2085751837965054 20 | 100,8,0.35000000000000003,10,0.3196,0.3720317020688279,0.20955923767920107 21 | 100,8,0.4,10,0.4157,0.425375545909308,0.2107399117156733 22 | 100,8,0.45,10,0.521,0.4784323773113551,0.212143577120441 23 | 100,8,0.5,10,0.6207,0.5313140019154445,0.21335861588049035 24 | 200,8,0,10,0.0228,-2.9846500551621236e-4,0.14188145803091978 25 | 200,8,0.05,10,0.0333,0.052434385313417965,0.1419687676657336 26 | 200,8,0.1,10,0.065,0.10532334340201992,0.14218111071202016 27 | 200,8,0.15000000000000002,10,0.127,0.1580544828441871,0.14247691912285856 28 | 200,8,0.2,10,0.2153,0.21063593370865927,0.1427977825954086 29 | 200,8,0.25,10,0.3383,0.26333456863519733,0.14343361215245334 30 | 200,8,0.30000000000000004,10,0.4771,0.31583307587581333,0.14423737045532234 31 | 200,8,0.35000000000000003,10,0.6203,0.36824487386439364,0.1450017623644888 32 | 200,8,0.4,10,0.7454,0.4204641068925298,0.14586510361049368 33 | 200,8,0.45,10,0.8487,0.4722819189288654,0.1467567010060035 34 | 200,8,0.5,10,0.9166,0.5238957982390827,0.1478271524083574 35 | 300,8,0,10,0.0258,0.0011813043539561409,0.11677693950705138 36 | 300,8,0.05,10,0.0407,0.053679231197410485,0.116892832846227 37 | 300,8,0.1,10,0.0925,0.10605823226453946,0.11704424654918136 38 | 300,8,0.15000000000000002,10,0.1898,0.15840510150379442,0.11730898649057059 39 | 300,8,0.2,10,0.3265,0.21075064561452597,0.11764760862816076 40 | 300,8,0.25,10,0.4997,0.2628686274102682,0.11807676016625769 41 | 300,8,0.30000000000000004,10,0.672,0.3148430328936486,0.11873571203086021 42 | 300,8,0.35000000000000003,10,0.8117,0.3667751537270362,0.11927376460248577 43 | 300,8,0.4,10,0.9042,0.41829988442537003,0.11993798509277193 44 | 300,8,0.45,10,0.9592,0.4697789155908388,0.12060632248358075 45 | 300,8,0.5,10,0.9856,0.5209283375708741,0.12161566994592045 46 | 400,8,0,10,0.0256,-0.0011206467473985147,0.10096986680803004 47 | 400,8,0.05,10,0.0442,0.051293364055349296,0.10093396975589335 48 | 400,8,0.1,10,0.1167,0.10366897296983987,0.10101834010131676 49 | 400,8,0.15000000000000002,10,0.242,0.15589362951859895,0.10123640119020265 50 | 400,8,0.2,10,0.4248,0.2080390190222488,0.10159626726073635 51 | 400,8,0.25,10,0.6281,0.2600653955433407,0.10197886989790717 52 | 400,8,0.30000000000000004,10,0.7996,0.31199949277509187,0.1024816331331853 53 | 400,8,0.35000000000000003,10,0.9121,0.3635661577276782,0.10302157520967502 54 | 400,8,0.4,10,0.9672,0.41497723595161967,0.10358610207413269 55 | 400,8,0.45,10,0.9893,0.46619688492494876,0.10425670228090331 56 | 400,8,0.5,10,0.9977,0.5171183512815323,0.10490434743614195 57 | 500,8,0,10,0.0242,-8.050554930555384e-4,0.09043879316274932 58 | 500,8,0.05,10,0.0502,0.05151426803514818,0.09048162852159959 59 | 500,8,0.1,10,0.1417,0.10383170691346154,0.0906446771994627 60 | 500,8,0.15000000000000002,10,0.3045,0.15613218780005556,0.09088263373346847 61 | 500,8,0.2,10,0.5261,0.20815156945734378,0.09120479822263591 62 | 500,8,0.25,10,0.7377,0.2601637114162166,0.09151154621563644 63 | 500,8,0.30000000000000004,10,0.8833,0.31191456089152353,0.09207558151603051 64 | 500,8,0.35000000000000003,10,0.9612,0.3633936999471425,0.0926180391829968 65 | 500,8,0.4,10,0.9909,0.4146270260475097,0.09332190690778681 66 | 500,8,0.45,10,0.9986,0.465521312202411,0.09410602443205572 67 | 500,8,0.5,10,0.9997,0.5162256517178507,0.09492336068528211 68 | 600,8,0,10,0.0273,4.803699245135898e-5,0.08285819622283336 69 | 600,8,0.05,10,0.0572,0.05224840117888022,0.0827810865259902 70 | 600,8,0.1,10,0.1646,0.10440623239594556,0.08287588349567801 71 | 600,8,0.15000000000000002,10,0.3676,0.15652194600553002,0.08302448200283495 72 | 600,8,0.2,10,0.6188,0.20846034575572173,0.0832988019719662 73 | 600,8,0.25,10,0.816,0.26015355310892874,0.08350258540345154 74 | 600,8,0.30000000000000004,10,0.9348,0.3117574749891988,0.08385160452650306 75 | 600,8,0.35000000000000003,10,0.9849,0.36312853228300673,0.08439539780341557 76 | 600,8,0.4,10,0.9973,0.41396806492532007,0.08504620870344427 77 | 600,8,0.45,10,0.9993,0.4648238677013226,0.08593764699126008 78 | 600,8,0.5,10,1,0.5152259964289941,0.08652729049460338 79 | 700,8,0,10,0.0251,8.347784069529023e-4,0.07568136563056144 80 | 700,8,0.05,10,0.0631,0.05307075082581977,0.07568898936273548 81 | 700,8,0.1,10,0.1955,0.10525379718867627,0.07582467186065629 82 | 700,8,0.15000000000000002,10,0.4303,0.15737482690537485,0.0760167542066416 83 | 700,8,0.2,10,0.6945,0.20933239454725838,0.07630572785151168 84 | 700,8,0.25,10,0.8851,0.2610112735195511,0.07669120768901126 85 | 700,8,0.30000000000000004,10,0.9667,0.312512843589493,0.07715807896953002 86 | 700,8,0.35000000000000003,10,0.9947,0.36365106751663023,0.07771543226568942 87 | 700,8,0.4,10,0.9994,0.41450892866770755,0.07825563263146951 88 | 700,8,0.45,10,1,0.46519258713289624,0.07895220735335187 89 | 700,8,0.5,10,1,0.5155487946610011,0.07967762997752845 90 | 800,8,0,10,0.0244,8.253661800373417e-4,0.07035945568495551 91 | 800,8,0.05,10,0.0672,0.05298165516049049,0.07032343306383197 92 | 800,8,0.1,10,0.2227,0.10510758172390196,0.07046482210905011 93 | 800,8,0.15000000000000002,10,0.4845,0.15712906955349412,0.0707062504426722 94 | 800,8,0.2,10,0.7554,0.2090648698883268,0.07100710417022504 95 | 800,8,0.25,10,0.9231,0.26075135901959456,0.07136085288985546 96 | 800,8,0.30000000000000004,10,0.984,0.31230689234152326,0.07196347648190746 97 | 800,8,0.35000000000000003,10,0.9984,0.3633969491605072,0.07251567603193834 98 | 800,8,0.4,10,1,0.41406769319950915,0.07308077170773974 99 | 800,8,0.45,10,1,0.46457856076922605,0.07377377975865339 100 | 800,8,0.5,10,1,0.5148036182899117,0.07454936420924503 101 | 900,8,0,10,0.026,-3.9982444380395475e-4,0.06671936761558946 102 | 900,8,0.05,10,0.0727,0.05176977792085418,0.06679671484034032 103 | 900,8,0.1,10,0.2449,0.10391006668081544,0.06696218722360092 104 | 900,8,0.15000000000000002,10,0.5334,0.15592747713906507,0.06732602165067895 105 | 900,8,0.2,10,0.8037,0.2077964569439189,0.06762977321698017 106 | 900,8,0.25,10,0.9494,0.2594410887926023,0.06802541926110321 107 | 900,8,0.30000000000000004,10,0.9908,0.31096470918137664,0.06849732353313916 108 | 900,8,0.35000000000000003,10,0.9996,0.3619676207293033,0.06905397551525175 109 | 900,8,0.4,10,1,0.41263659133499236,0.06970009319900157 110 | 900,8,0.45,10,1,0.4628344477816144,0.07018230008456207 111 | 900,8,0.5,10,1,0.5128184206205271,0.07062434006096005 112 | 1000,8,0,10,0.0245,-0.001363263765469593,0.06333598708140331 113 | 1000,8,0.05,10,0.075,0.05081500566394723,0.06334967889075507 114 | 1000,8,0.1,10,0.2642,0.10293700753213221,0.06342239079529813 115 | 1000,8,0.15000000000000002,10,0.578,0.15488093638974393,0.06358879279086642 116 | 1000,8,0.2,10,0.8414,0.20675437320440632,0.0638892370050641 117 | 1000,8,0.25,10,0.9658,0.25842981668544335,0.06427045862879328 118 | 1000,8,0.30000000000000004,10,0.9962,0.30983498021184613,0.06476310693414682 119 | 1000,8,0.35000000000000003,10,0.9996,0.3609022343293466,0.06539313512597113 120 | 1000,8,0.4,10,1,0.4116242151241541,0.065955710694309 121 | 1000,8,0.45,10,1,0.46178505157072586,0.0665758817432032 122 | 1000,8,0.5,10,1,0.5116654099961008,0.06700331321281143 123 | -------------------------------------------------------------------------------- /images/idea-change.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/images/idea-change.png -------------------------------------------------------------------------------- /images/modified.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/images/modified.pdf -------------------------------------------------------------------------------- /images/modified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/images/modified.png -------------------------------------------------------------------------------- /images/nutshell.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/images/nutshell.pdf -------------------------------------------------------------------------------- /images/nutshell.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 37 | 63 | 66 | 73 | 77 | 84 | 88 | 90 | 92 | 99 | 106 | 113 | 114 | 115 | 117 | 119 | 126 | 133 | 140 | 141 | 142 | 144 | 146 | 153 | 160 | 167 | 168 | 169 | 170 | 173 | 180 | 187 | 194 | 201 | 202 | 205 | Docker documents software environment 220 | R Markdown generates dynamic documents 235 | Gittracksversions 250 | Makemanagesdependencies 265 | 272 | 279 | 286 | 293 | 300 | 307 | 314 | 321 | 323 | 330 | 337 | 344 | 351 | 352 | 354 | data/ 358 | 359 | 361 | iris_prepped.csv 365 | 366 | 369 | 371 | ... 375 | 376 | 377 | 379 | iris.csv 383 | 384 | 386 | LICENSE.md 390 | 391 | 393 | Dockerfile 397 | 398 | 400 | Makefile 404 | 405 | 407 | manuscript.pdf 411 | 412 | 414 | R/ 418 | 419 | 421 | manuscript.Rmd 425 | 426 | 428 | ... 432 | 433 | 435 | ... 439 | 440 | 442 | prepare_data.R 446 | 447 | 449 | reproducible.Rproj 453 | 454 | 456 | .git/ 460 | 461 | 463 | .gitignore 467 | 468 | 475 | 482 | 489 | 496 | 503 | 510 | 517 | Time 521 | 528 | 535 | 542 | 549 | 556 | 558 | 562 | 566 | 570 | 572 | 579 | 586 | 587 | 588 | 590 | B depends on A 594 | = 598 | 600 | 602 | B 606 | 607 | 609 | 611 | A 615 | 616 | 618 | 620 | 627 | 629 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 640 | 642 | 649 | 651 | 654 | 655 | 656 | 657 | 664 | 671 | 678 | 685 | 692 | 699 | 701 | Virtual Linux 705 | 706 | 708 | Operating system 712 | 713 | 715 | LaTex 719 | 720 | 722 | Packages 726 | 727 | 729 | R version 733 | 734 | Some software 745 | 747 | 754 | 756 | manuscript.pdf 760 | 761 | 763 | Some text. 767 | 768 | 770 | 774 | 780 | 786 | 792 | 798 | 804 | 810 | 816 | 818 | Petal.Length 822 | 823 | 825 | Petal.Width 829 | 830 | 831 | 832 | 833 | 834 | -------------------------------------------------------------------------------- /install.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Installation of Required Software" 3 | author: "Aaron Peikert" 4 | date: "05/01/2021" 5 | output: 6 | github_document: 7 | number_sections: true 8 | repro: 9 | packages: 10 | - here 11 | scripts: 12 | - R/link.R 13 | --- 14 | 15 | ```{r setup, include=FALSE} 16 | source(here::here("R", "link.R")) 17 | ``` 18 | 19 | 20 | # Why you want to use package managers 21 | 22 | Installing software can be a painful experience, especially if you have to sift through the documentation for multiple platforms. 23 | A package manager helps you to install, update and remove software on your computer, automating large parts of the process for you. 24 | Most importantly, the installation process is the same for every software, not unlike the appstore on your phone. 25 | Unfortunately though, it is not as pleasantly designed, but is used through the terminal. 26 | If the thought of using a terminal lets you hesitate, rest assured it is easier than you might think. 27 | 28 | 29 | # Windows 10 30 | 31 | ## How to open a terminal on Windows 10? 32 | 33 | 1. Press Windows 10 key + X. 34 | 2. Click on "Windows Powershell" or "Windows Powershell (Admin)" (if you are using Chocolately) 35 | 36 | ## How to install a package manager for Windows 10? 37 | 38 | `r link("https://chocolatey.org/", "Chocolately")` is a great package manager for Windows 10. 39 | You should follow these installation instructions: `r link("https://chocolatey.org/docs/installation")`, but if you are in a hurry: 40 | 41 | 1. Press Windows key + X, click on "Windows Powershell (Admin)". 42 | 2. Paste: `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))` 43 | 3. Press enter. 44 | 4. Close the PowerShell 45 | 46 | ## How to install R + Rstudio with a package manager? 47 | 48 | Since you probably already have R and RStudio you may skip this step. 49 | 50 | 1. Open a new terminal (Press Windows key + X, click on "Windows Powershell (Admin)"). 51 | 2. Paste `choco install -y r r.studio rtools` 52 | 3. Press enter 53 | 54 | ## How to install Git, Make, and Docker with a package manager? 55 | 56 | Please note that Docker does may not work on Windows 10 Home, because Docker requires a feature called virtualization which you may have to enable. In that case follow this [guide](https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization). This feature is usually enabled in Windows Pro or Education. 57 | On Windows Home, you also require the Windows Subsystem for Linux (WSL) as well as the WSL Ubuntu extension. 58 | 59 | 1. Open a new terminal (Press Windows key + X, click on “Windows 60 | Powershell (Admin)”). 61 | 2. Paste `choco install -y git make docker` 62 | 3. Press enter. 63 | 64 | On Windows Home and systems without Hyper V: 65 | 66 | 1. Open a new terminal (Press Windows key + X, click on “Windows 67 | Powershell (Admin)”). 68 | 2. Paste `choco install -y git make docker wsl` 69 | 3. Press enter. 70 | 4. Restart. 71 | 5. Open a new terminal (Press Windows key + X, click on “Windows 72 | Powershell (Admin)”). 73 | 6. Paste `choco install -y wsl-ubuntu-2004` 74 | 7. Press enter. 75 | 76 | # Mac OS 77 | 78 | ## How to open a terminal on Mac OS? 79 | 80 | 1. Press Command + Space. 81 | 2. Type "Terminal". 82 | 3. Press enter. 83 | 84 | ## How to install a package manager for Mac OS? 85 | 86 | `r link("https://brew.sh", "Homebrew")` is a great package manager for Mac OS. To install it: 87 | 88 | 1. Open a new terminal (Press Command + Space, type "Terminal", press enter). 89 | 2. Paste `xcode-select --install` and press enter to install xcode. 90 | 3. Paste: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`. 91 | 4. Press enter. 92 | 5. Close the terminal. 93 | 94 | ## How to install R + Rstudio with a package manager? 95 | 96 | Since you probably already have R and RStudio you may skip this step. 97 | 98 | 1. Open a new terminal (Press Command + Space, type "Terminal", press enter). 99 | 2. Paste `brew install r` and press enter to install R. 100 | 3. Paste `brew install --cask rstudio` and press enter to install RStudio. 101 | 102 | ## How to install Git, Make, and Docker with a package manager? 103 | 104 | 1. Open a new terminal (Press Command + Space, type "Terminal", press enter). 105 | 2. Paste `brew install git make docker`. 106 | 3. Press enter. 107 | 108 | ```{r link_index, results='asis', echo=FALSE} 109 | link_index() 110 | ``` 111 | -------------------------------------------------------------------------------- /install.md: -------------------------------------------------------------------------------- 1 | Installation of Required Software 2 | ================ 3 | Aaron Peikert 4 | 05/01/2021 5 | 6 | # 1 Why you want to use package managers 7 | 8 | Installing software can be a painful experience, especially if you have 9 | to sift through the documentation for multiple platforms. A package 10 | manager helps you to install, update and remove software on your 11 | computer, automating large parts of the process for you. Most 12 | importantly, the installation process is the same for every software, 13 | not unlike the appstore on your phone. Unfortunately though, it is not 14 | as pleasantly designed, but is used through the terminal. If the thought 15 | of using a terminal lets you hesitate, rest assured it is easier than 16 | you might think. 17 | 18 | # 2 Windows 10 19 | 20 | ## 2.1 How to open a terminal on Windows 10? 21 | 22 | 1. Press Windows 10 key + X. 23 | 2. Click on “Windows Powershell” or “Windows Powershell (Admin)” (if 24 | you are using Chocolately) 25 | 26 | ## 2.2 How to install a package manager for Windows 10? 27 | 28 | [Chocolately](https://chocolatey.org/)[1] is a great package manager for 29 | Windows 10. You should follow these installation instructions: 30 | , but if you are in a hurry: 31 | 32 | 1. Press Windows key + X, click on “Windows Powershell (Admin)”. 33 | 2. Paste: 34 | `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))` 35 | 3. Press enter. 36 | 4. Close the PowerShell 37 | 38 | ## 2.3 How to install R + Rstudio with a package manager? 39 | 40 | Since you probably already have R and RStudio you may skip this step. 41 | 42 | 1. Open a new terminal (Press Windows key + X, click on “Windows 43 | Powershell (Admin)”). 44 | 2. Paste `choco install -y r r.studio rtools` 45 | 3. Press enter 46 | 47 | ## 2.4 How to install Git, Make, and Docker with a package manager? 48 | 49 | Please note that Docker does may not work on Windows 10 Home, because 50 | Docker requires a feature called virtualization which you may have to 51 | enable. In that case follow this 52 | [guide](https://docs.docker.com/docker-for-windows/troubleshoot/#virtualization). 53 | This feature is usually enabled in Windows Pro or Education. On Windows 54 | Home, you also require the Windows Subsystem for Linux (WSL) as well as 55 | the WSL Ubuntu extension. 56 | 57 | 1. Open a new terminal (Press Windows key + X, click on “Windows 58 | Powershell (Admin)”). 59 | 2. Paste `choco install -y git make docker` 60 | 3. Press enter. 61 | 62 | On Windows Home and systems without Hyper V: 63 | 64 | 1. Open a new terminal (Press Windows key + X, click on “Windows 65 | Powershell (Admin)”). 66 | 2. Paste `choco install -y git make docker wsl` 67 | 3. Press enter. 68 | 4. Restart. 69 | 5. Open a new terminal (Press Windows key + X, click on “Windows 70 | Powershell (Admin)”). 71 | 6. Paste `choco install -y wsl-ubuntu-2004` 72 | 7. Press enter. 73 | 74 | # 3 Mac OS 75 | 76 | ## 3.1 How to open a terminal on Mac OS? 77 | 78 | 1. Press Command + Space. 79 | 2. Type “Terminal”. 80 | 3. Press enter. 81 | 82 | ## 3.2 How to install a package manager for Mac OS? 83 | 84 | [Homebrew](https://brew.sh)[2] is a great package manager for Mac OS. To 85 | install it: 86 | 87 | 1. Open a new terminal (Press Command + Space, type “Terminal”, press 88 | enter). 89 | 2. Paste `xcode-select --install` and press enter to install xcode. 90 | 3. Paste: 91 | `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`. 92 | 4. Press enter. 93 | 5. Close the terminal. 94 | 95 | ## 3.3 How to install R + Rstudio with a package manager? 96 | 97 | Since you probably already have R and RStudio you may skip this step. 98 | 99 | 1. Open a new terminal (Press Command + Space, type “Terminal”, press 100 | enter). 101 | 2. Paste `brew install r` and press enter to install R. 102 | 3. Paste `brew install --cask rstudio` and press enter to install 103 | RStudio. 104 | 105 | ## 3.4 How to install Git, Make, and Docker with a package manager? 106 | 107 | 1. Open a new terminal (Press Command + Space, type “Terminal”, press 108 | enter). 109 | 2. Paste `brew install git make docker`. 110 | 3. Press enter. 111 | 112 | [1] 113 | 114 | [2] 115 | -------------------------------------------------------------------------------- /journalnames.tex: -------------------------------------------------------------------------------- 1 | \DeclareOption{acoustics}{ \gdef\@journal{acoustics} \gdef\@journalshort{Acoustics} \gdef\@journalfull{Acoustics} \gdef\@doiabbr{acoustics} \gdef\@ISSN{2624-599X} } 2 | \DeclareOption{actuators}{ \gdef\@journal{actuators} \gdef\@journalshort{Actuators} \gdef\@journalfull{Actuators} \gdef\@doiabbr{act} \gdef\@ISSN{2076-0825} } 3 | \DeclareOption{addictions}{ \gdef\@journal{addictions} \gdef\@journalshort{Addictions} \gdef\@journalfull{Addictions} \gdef\@doiabbr{} \gdef\@ISSN{0006-0006} } 4 | \DeclareOption{admsci}{ \gdef\@journal{admsci} \gdef\@journalshort{Adm. Sci.} \gdef\@journalfull{Administrative Sciences} \gdef\@doiabbr{admsci} \gdef\@ISSN{2076-3387} } 5 | \DeclareOption{aerospace}{ \gdef\@journal{aerospace} \gdef\@journalshort{Aerospace} \gdef\@journalfull{Aerospace} \gdef\@doiabbr{aerospace} \gdef\@ISSN{2226-4310} } 6 | \DeclareOption{agriculture}{ \gdef\@journal{agriculture} \gdef\@journalshort{Agriculture} \gdef\@journalfull{Agriculture} \gdef\@doiabbr{agriculture} \gdef\@ISSN{2077-0472} } 7 | \DeclareOption{agriengineering}{ \gdef\@journal{agriengineering} \gdef\@journalshort{AgriEngineering} \gdef\@journalfull{AgriEngineering} \gdef\@doiabbr{agriengineering} \gdef\@ISSN{2624-7402} } 8 | \DeclareOption{agronomy}{ \gdef\@journal{agronomy} \gdef\@journalshort{Agronomy} \gdef\@journalfull{Agronomy} \gdef\@doiabbr{agronomy} \gdef\@ISSN{2073-4395} } 9 | \DeclareOption{algorithms}{ \gdef\@journal{algorithms} \gdef\@journalshort{Algorithms} \gdef\@journalfull{Algorithms} \gdef\@doiabbr{a} \gdef\@ISSN{1999-4893} } 10 | \DeclareOption{animals}{ \gdef\@journal{animals} \gdef\@journalshort{Animals} \gdef\@journalfull{Animals} \gdef\@doiabbr{ani} \gdef\@ISSN{2076-2615} } 11 | \DeclareOption{antibiotics}{ \gdef\@journal{antibiotics} \gdef\@journalshort{Antibiotics} \gdef\@journalfull{Antibiotics} \gdef\@doiabbr{antibiotics} \gdef\@ISSN{2079-6382} } 12 | \DeclareOption{antibodies}{ \gdef\@journal{antibodies} \gdef\@journalshort{Antibodies} \gdef\@journalfull{Antibodies} \gdef\@doiabbr{antib} \gdef\@ISSN{2073-4468} } 13 | \DeclareOption{antioxidants}{ \gdef\@journal{antioxidants} \gdef\@journalshort{Antioxidants} \gdef\@journalfull{Antioxidants} \gdef\@doiabbr{antiox} \gdef\@ISSN{2076-3921} } 14 | \DeclareOption{applsci}{ \gdef\@journal{applsci} \gdef\@journalshort{Appl. Sci.} \gdef\@journalfull{Applied Sciences} \gdef\@doiabbr{app} \gdef\@ISSN{2076-3417} } 15 | \DeclareOption{arts}{ \gdef\@journal{arts} \gdef\@journalshort{Arts} \gdef\@journalfull{Arts} \gdef\@doiabbr{arts} \gdef\@ISSN{2076-0752} } 16 | \DeclareOption{asc}{ \gdef\@journal{asc} \gdef\@journalshort{Autom. Syst. Control} \gdef\@journalfull{Automatic Systems and Control} \gdef\@doiabbr{} \gdef\@ISSN{} } 17 | \DeclareOption{asi}{ \gdef\@journal{asi} \gdef\@journalshort{Appl. Syst. Innov.} \gdef\@journalfull{Applied System Innovation} \gdef\@doiabbr{asi} \gdef\@ISSN{2571-5577} } 18 | \DeclareOption{atmosphere}{ \gdef\@journal{atmosphere} \gdef\@journalshort{Atmosphere} \gdef\@journalfull{Atmosphere} \gdef\@doiabbr{atmos} \gdef\@ISSN{2073-4433} } 19 | \DeclareOption{atoms}{ \gdef\@journal{atoms} \gdef\@journalshort{Atoms} \gdef\@journalfull{Atoms} \gdef\@doiabbr{atoms} \gdef\@ISSN{2218-2004} } 20 | \DeclareOption{axioms}{ \gdef\@journal{axioms} \gdef\@journalshort{Axioms} \gdef\@journalfull{Axioms} \gdef\@doiabbr{axioms} \gdef\@ISSN{2075-1680} } 21 | \DeclareOption{batteries}{ \gdef\@journal{batteries} \gdef\@journalshort{Batteries} \gdef\@journalfull{Batteries} \gdef\@doiabbr{batteries} \gdef\@ISSN{2313-0105} } 22 | \DeclareOption{bdcc}{ \gdef\@journal{bdcc} \gdef\@journalshort{Big Data Cogn. Comput.} \gdef\@journalfull{Big Data and Cognitive Computing} \gdef\@doiabbr{bdcc} \gdef\@ISSN{2504-2289} } 23 | \DeclareOption{behavsci}{ \gdef\@journal{behavsci} \gdef\@journalshort{Behav. Sci.} \gdef\@journalfull{Behavioral Sciences} \gdef\@doiabbr{bs} \gdef\@ISSN{2076-328X} } 24 | \DeclareOption{beverages}{ \gdef\@journal{beverages} \gdef\@journalshort{Beverages} \gdef\@journalfull{Beverages} \gdef\@doiabbr{beverages} \gdef\@ISSN{2306-5710} } 25 | \DeclareOption{bioengineering}{ \gdef\@journal{bioengineering} \gdef\@journalshort{Bioengineering} \gdef\@journalfull{Bioengineering} \gdef\@doiabbr{bioengineering} \gdef\@ISSN{2306-5354} } 26 | \DeclareOption{biology}{ \gdef\@journal{biology} \gdef\@journalshort{Biology} \gdef\@journalfull{Biology} \gdef\@doiabbr{biology} \gdef\@ISSN{2079-7737} } 27 | \DeclareOption{biomedicines}{ \gdef\@journal{biomedicines} \gdef\@journalshort{Biomedicines} \gdef\@journalfull{Biomedicines} \gdef\@doiabbr{biomedicines} \gdef\@ISSN{2227-9059} } 28 | \DeclareOption{biomimetics}{ \gdef\@journal{biomimetics} \gdef\@journalshort{Biomimetics} \gdef\@journalfull{Biomimetics} \gdef\@doiabbr{biomimetics} \gdef\@ISSN{2313-7673} } 29 | \DeclareOption{biomolecules}{ \gdef\@journal{biomolecules} \gdef\@journalshort{Biomolecules} \gdef\@journalfull{Biomolecules} \gdef\@doiabbr{biom} \gdef\@ISSN{2218-273X} } 30 | \DeclareOption{biosensors}{ \gdef\@journal{biosensors} \gdef\@journalshort{Biosensors} \gdef\@journalfull{Biosensors} \gdef\@doiabbr{bios} \gdef\@ISSN{2079-6374} } 31 | \DeclareOption{brainsci}{ \gdef\@journal{brainsci} \gdef\@journalshort{Brain Sci.} \gdef\@journalfull{Brain Sciences} \gdef\@doiabbr{brainsci} \gdef\@ISSN{2076-3425} } 32 | \DeclareOption{buildings}{ \gdef\@journal{buildings} \gdef\@journalshort{Buildings} \gdef\@journalfull{Buildings} \gdef\@doiabbr{buildings} \gdef\@ISSN{2075-5309} } 33 | \DeclareOption{cancers}{ \gdef\@journal{cancers} \gdef\@journalshort{Cancers} \gdef\@journalfull{Cancers} \gdef\@doiabbr{cancers} \gdef\@ISSN{2072-6694} } 34 | \DeclareOption{carbon}{ \gdef\@journal{carbon} \gdef\@journalshort{C} \gdef\@journalfull{C} \gdef\@doiabbr{c} \gdef\@ISSN{2311-5629} } 35 | \DeclareOption{catalysts}{ \gdef\@journal{catalysts} \gdef\@journalshort{Catalysts} \gdef\@journalfull{Catalysts} \gdef\@doiabbr{catal} \gdef\@ISSN{2073-4344} } 36 | \DeclareOption{cells}{ \gdef\@journal{cells} \gdef\@journalshort{Cells} \gdef\@journalfull{Cells} \gdef\@doiabbr{cells} \gdef\@ISSN{2073-4409} } 37 | \DeclareOption{ceramics}{ \gdef\@journal{ceramics} \gdef\@journalshort{Ceramics} \gdef\@journalfull{Ceramics} \gdef\@doiabbr{ceramics} \gdef\@ISSN{2571-6131} } 38 | \DeclareOption{challenges}{ \gdef\@journal{challenges} \gdef\@journalshort{Challenges} \gdef\@journalfull{Challenges} \gdef\@doiabbr{challe} \gdef\@ISSN{2078-1547} } 39 | \DeclareOption{chemengineering}{ \gdef\@journal{chemengineering} \gdef\@journalshort{ChemEngineering} \gdef\@journalfull{ChemEngineering} \gdef\@doiabbr{chemengineering} \gdef\@ISSN{2305-7084} } 40 | \DeclareOption{chemistry}{ \gdef\@journal{chemistry} \gdef\@journalshort{Chemistry} \gdef\@journalfull{Chemistry} \gdef\@doiabbr{chemistry} \gdef\@ISSN{2624-8549} } 41 | \DeclareOption{chemosensors}{ \gdef\@journal{chemosensors} \gdef\@journalshort{Chemosensors} \gdef\@journalfull{Chemosensors} \gdef\@doiabbr{chemosensors} \gdef\@ISSN{2227-9040} } 42 | \DeclareOption{children}{ \gdef\@journal{children} \gdef\@journalshort{Children} \gdef\@journalfull{Children} \gdef\@doiabbr{children} \gdef\@ISSN{2227-9067} } 43 | \DeclareOption{cleantechnol}{ \gdef\@journal{cleantechnol} \gdef\@journalshort{Clean Technol.} \gdef\@journalfull{Clean Technologies} \gdef\@doiabbr{cleantechnol} \gdef\@ISSN{2571-8797} } 44 | \DeclareOption{climate}{ \gdef\@journal{climate} \gdef\@journalshort{Climate} \gdef\@journalfull{Climate} \gdef\@doiabbr{cli} \gdef\@ISSN{2225-1154} } 45 | \DeclareOption{clockssleep}{ \gdef\@journal{clockssleep} \gdef\@journalshort{Clocks\&Sleep} \gdef\@journalfull{Clocks \& Sleep} \gdef\@doiabbr{clockssleep} \gdef\@ISSN{2624-5175} } 46 | \DeclareOption{cmd}{ \gdef\@journal{cmd} \gdef\@journalshort{Corros. Mater. Degrad.} \gdef\@journalfull{Corrosion and Materials Degradation} \gdef\@doiabbr{cmd} \gdef\@ISSN{2624-5558} } 47 | \DeclareOption{coatings}{ \gdef\@journal{coatings} \gdef\@journalshort{Coatings} \gdef\@journalfull{Coatings} \gdef\@doiabbr{coatings} \gdef\@ISSN{2079-6412} } 48 | \DeclareOption{colloids}{ \gdef\@journal{colloids} \gdef\@journalshort{Colloids Interfaces} \gdef\@journalfull{Colloids Interfaces} \gdef\@doiabbr{colloids} \gdef\@ISSN{2504-5377} } 49 | \DeclareOption{computation}{ \gdef\@journal{computation} \gdef\@journalshort{Computation} \gdef\@journalfull{Computation} \gdef\@doiabbr{computation} \gdef\@ISSN{2079-3197} } 50 | \DeclareOption{computers}{ \gdef\@journal{computers} \gdef\@journalshort{Computers} \gdef\@journalfull{Computers} \gdef\@doiabbr{computers} \gdef\@ISSN{2073-431X} } 51 | \DeclareOption{condensedmatter}{ \gdef\@journal{condensedmatter} \gdef\@journalshort{Condens. Matter} \gdef\@journalfull{Condensed Matter} \gdef\@doiabbr{condmat} \gdef\@ISSN{2410-3896} } 52 | \DeclareOption{cosmetics}{ \gdef\@journal{cosmetics} \gdef\@journalshort{Cosmetics} \gdef\@journalfull{Cosmetics} \gdef\@doiabbr{cosmetics} \gdef\@ISSN{2079-9284} } 53 | \DeclareOption{cryptography}{ \gdef\@journal{cryptography} \gdef\@journalshort{Cryptography} \gdef\@journalfull{Cryptography} \gdef\@doiabbr{cryptography} \gdef\@ISSN{2410-387X} } 54 | \DeclareOption{crystals}{ \gdef\@journal{crystals} \gdef\@journalshort{Crystals} \gdef\@journalfull{Crystals} \gdef\@doiabbr{cryst} \gdef\@ISSN{2073-4352} } 55 | \DeclareOption{dairy}{ \gdef\@journal{dairy} \gdef\@journalshort{Dairy} \gdef\@journalfull{Dairy} \gdef\@doiabbr{dairy} \gdef\@ISSN{2624-862X} } 56 | \DeclareOption{data}{ \gdef\@journal{data} \gdef\@journalshort{Data} \gdef\@journalfull{Data} \gdef\@doiabbr{data} \gdef\@ISSN{2306-5729} } 57 | \DeclareOption{dentistry}{ \gdef\@journal{dentistry} \gdef\@journalshort{Dent. J.} \gdef\@journalfull{Dentistry Journal} \gdef\@doiabbr{dj} \gdef\@ISSN{2304-6767} } 58 | \DeclareOption{designs}{ \gdef\@journal{designs} \gdef\@journalshort{Designs} \gdef\@journalfull{Designs} \gdef\@doiabbr{designs} \gdef\@ISSN{2411-9660} } 59 | \DeclareOption{diagnostics}{ \gdef\@journal{diagnostics} \gdef\@journalshort{Diagnostics} \gdef\@journalfull{Diagnostics} \gdef\@doiabbr{diagnostics} \gdef\@ISSN{2075-4418} } 60 | \DeclareOption{diseases}{ \gdef\@journal{diseases} \gdef\@journalshort{Diseases} \gdef\@journalfull{Diseases} \gdef\@doiabbr{diseases} \gdef\@ISSN{2079-9721} } 61 | \DeclareOption{diversity}{ \gdef\@journal{diversity} \gdef\@journalshort{Diversity} \gdef\@journalfull{Diversity} \gdef\@doiabbr{d} \gdef\@ISSN{1424-2818} } 62 | \DeclareOption{drones}{ \gdef\@journal{drones} \gdef\@journalshort{Drones} \gdef\@journalfull{Drones} \gdef\@doiabbr{drones} \gdef\@ISSN{2504-446X} } 63 | \DeclareOption{econometrics}{ \gdef\@journal{econometrics} \gdef\@journalshort{Econometrics} \gdef\@journalfull{Econometrics} \gdef\@doiabbr{econometrics} \gdef\@ISSN{2225-1146} } 64 | \DeclareOption{economies}{ \gdef\@journal{economies} \gdef\@journalshort{Economies} \gdef\@journalfull{Economies} \gdef\@doiabbr{economies} \gdef\@ISSN{2227-7099} } 65 | \DeclareOption{education}{ \gdef\@journal{education} \gdef\@journalshort{Educ. Sci.} \gdef\@journalfull{Education Sciences} \gdef\@doiabbr{educsci} \gdef\@ISSN{2227-7102} } 66 | \DeclareOption{electrochem}{ \gdef\@journal{electrochem} \gdef\@journalshort{Electrochem} \gdef\@journalfull{Electrochem} \gdef\@doiabbr{electrochem} \gdef\@ISSN{} } 67 | \DeclareOption{electronics}{ \gdef\@journal{electronics} \gdef\@journalshort{Electronics} \gdef\@journalfull{Electronics} \gdef\@doiabbr{electronics} \gdef\@ISSN{2079-9292} } 68 | \DeclareOption{energies}{ \gdef\@journal{energies} \gdef\@journalshort{Energies} \gdef\@journalfull{Energies} \gdef\@doiabbr{en} \gdef\@ISSN{1996-1073} } 69 | \DeclareOption{entropy}{ \gdef\@journal{entropy} \gdef\@journalshort{Entropy} \gdef\@journalfull{Entropy} \gdef\@doiabbr{e} \gdef\@ISSN{1099-4300} } 70 | \DeclareOption{environments}{ \gdef\@journal{environments} \gdef\@journalshort{Environments} \gdef\@journalfull{Environments} \gdef\@doiabbr{environments} \gdef\@ISSN{2076-3298} } 71 | \DeclareOption{epigenomes}{ \gdef\@journal{epigenomes} \gdef\@journalshort{Epigenomes} \gdef\@journalfull{Epigenomes} \gdef\@doiabbr{epigenomes} \gdef\@ISSN{2075-4655} } 72 | \DeclareOption{est}{ \gdef\@journal{est} \gdef\@journalshort{Electrochem. Sci. Technol.} \gdef\@journalfull{Electrochemical Science and Technology} \gdef\@doiabbr{} \gdef\@ISSN{} } 73 | \DeclareOption{fermentation}{ \gdef\@journal{fermentation} \gdef\@journalshort{Fermentation} \gdef\@journalfull{Fermentation} \gdef\@doiabbr{fermentation} \gdef\@ISSN{2311-5637} } 74 | \DeclareOption{fibers}{ \gdef\@journal{fibers} \gdef\@journalshort{Fibers} \gdef\@journalfull{Fibers} \gdef\@doiabbr{fib} \gdef\@ISSN{2079-6439} } 75 | \DeclareOption{fire}{ \gdef\@journal{fire} \gdef\@journalshort{Fire} \gdef\@journalfull{Fire} \gdef\@doiabbr{fire} \gdef\@ISSN{2571-6255} } 76 | \DeclareOption{fishes}{ \gdef\@journal{fishes} \gdef\@journalshort{Fishes} \gdef\@journalfull{Fishes} \gdef\@doiabbr{fishes} \gdef\@ISSN{2410-3888} } 77 | \DeclareOption{fluids}{ \gdef\@journal{fluids} \gdef\@journalshort{Fluids} \gdef\@journalfull{Fluids} \gdef\@doiabbr{fluids} \gdef\@ISSN{2311-5521} } 78 | \DeclareOption{foods}{ \gdef\@journal{foods} \gdef\@journalshort{Foods} \gdef\@journalfull{Foods} \gdef\@doiabbr{foods} \gdef\@ISSN{2304-8158} } 79 | \DeclareOption{forecasting}{ \gdef\@journal{forecasting} \gdef\@journalshort{Forecasting} \gdef\@journalfull{Forecasting} \gdef\@doiabbr{forecast} \gdef\@ISSN{2571-9394} } 80 | \DeclareOption{forests}{ \gdef\@journal{forests} \gdef\@journalshort{Forests} \gdef\@journalfull{Forests} \gdef\@doiabbr{f} \gdef\@ISSN{1999-4907} } 81 | \DeclareOption{fractalfract}{ \gdef\@journal{fractalfract} \gdef\@journalshort{Fractal Fract.} \gdef\@journalfull{Fractal and Fractional} \gdef\@doiabbr{fractalfract} \gdef\@ISSN{2504-3110} } 82 | \DeclareOption{futureinternet}{ \gdef\@journal{futureinternet} \gdef\@journalshort{Future Internet} \gdef\@journalfull{Future Internet} \gdef\@doiabbr{fi} \gdef\@ISSN{1999-5903} } 83 | \DeclareOption{futurephys}{ \gdef\@journal{futurephys} \gdef\@journalshort{Future Phys.} \gdef\@journalfull{Future Physics} \gdef\@doiabbr{futurephys} \gdef\@ISSN{2624-6503} } 84 | \DeclareOption{galaxies}{ \gdef\@journal{galaxies} \gdef\@journalshort{Galaxies} \gdef\@journalfull{Galaxies} \gdef\@doiabbr{galaxies} \gdef\@ISSN{2075-4434} } 85 | \DeclareOption{games}{ \gdef\@journal{games} \gdef\@journalshort{Games} \gdef\@journalfull{Games} \gdef\@doiabbr{g} \gdef\@ISSN{2073-4336} } 86 | \DeclareOption{gastrointestdisord}{ \gdef\@journal{gastrointestdisord} \gdef\@journalshort{Gastrointest. Disord.} \gdef\@journalfull{Gastrointestinal Disorders} \gdef\@doiabbr{gidisord} \gdef\@ISSN{2624-5647} } 87 | \DeclareOption{gels}{ \gdef\@journal{gels} \gdef\@journalshort{Gels} \gdef\@journalfull{Gels} \gdef\@doiabbr{gels} \gdef\@ISSN{2310-2861} } 88 | \DeclareOption{genealogy}{ \gdef\@journal{genealogy} \gdef\@journalshort{Genealogy} \gdef\@journalfull{Genealogy} \gdef\@doiabbr{genealogy} \gdef\@ISSN{2313-5778} } 89 | \DeclareOption{genes}{ \gdef\@journal{genes} \gdef\@journalshort{Genes} \gdef\@journalfull{Genes} \gdef\@doiabbr{genes} \gdef\@ISSN{2073-4425} } 90 | \DeclareOption{geohazards}{ \gdef\@journal{geohazards} \gdef\@journalshort{GeoHazards} \gdef\@journalfull{GeoHazards} \gdef\@doiabbr{geohazards} \gdef\@ISSN{2624-795X} } 91 | \DeclareOption{geosciences}{ \gdef\@journal{geosciences} \gdef\@journalshort{Geosciences} \gdef\@journalfull{Geosciences} \gdef\@doiabbr{geosciences} \gdef\@ISSN{2076-3263} } 92 | \DeclareOption{geriatrics}{ \gdef\@journal{geriatrics} \gdef\@journalshort{Geriatrics} \gdef\@journalfull{Geriatrics} \gdef\@doiabbr{geriatrics} \gdef\@ISSN{2308-3417} } 93 | \DeclareOption{hazardousmatters}{ \gdef\@journal{hazardousmatters} \gdef\@journalshort{Hazard. Matters} \gdef\@journalfull{Hazardous Matters} \gdef\@doiabbr{} \gdef\@ISSN{0014-0014} } 94 | \DeclareOption{healthcare}{ \gdef\@journal{healthcare} \gdef\@journalshort{Healthcare} \gdef\@journalfull{Healthcare} \gdef\@doiabbr{healthcare} \gdef\@ISSN{2227-9032} } 95 | \DeclareOption{heritage}{ \gdef\@journal{heritage} \gdef\@journalshort{Heritage} \gdef\@journalfull{Heritage} \gdef\@doiabbr{heritage} \gdef\@ISSN{2571-9408} } 96 | \DeclareOption{highthroughput}{ \gdef\@journal{highthroughput} \gdef\@journalshort{High-Throughput} \gdef\@journalfull{High-Throughput} \gdef\@doiabbr{ht} \gdef\@ISSN{2571-5135} } 97 | \DeclareOption{horticulturae}{ \gdef\@journal{horticulturae} \gdef\@journalshort{Horticulturae} \gdef\@journalfull{Horticulturae} \gdef\@doiabbr{horticulturae} \gdef\@ISSN{2311-7524} } 98 | \DeclareOption{humanities}{ \gdef\@journal{humanities} \gdef\@journalshort{Humanities} \gdef\@journalfull{Humanities} \gdef\@doiabbr{h} \gdef\@ISSN{2076-0787} } 99 | \DeclareOption{hydrology}{ \gdef\@journal{hydrology} \gdef\@journalshort{Hydrology} \gdef\@journalfull{Hydrology} \gdef\@doiabbr{hydrology} \gdef\@ISSN{2306-5338} } 100 | \DeclareOption{ijerph}{ \gdef\@journal{ijerph} \gdef\@journalshort{Int. J. Environ. Res. Public Health} \gdef\@journalfull{International Journal of Environmental Research and Public Health} \gdef\@doiabbr{ijerph} \gdef\@ISSN{1660-4601} } 101 | \DeclareOption{ijfs}{ \gdef\@journal{ijfs} \gdef\@journalshort{Int. J. Financial Stud.} \gdef\@journalfull{International Journal of Financial Studies} \gdef\@doiabbr{ijfs} \gdef\@ISSN{2227-7072} } 102 | \DeclareOption{ijgi}{ \gdef\@journal{ijgi} \gdef\@journalshort{ISPRS Int. J. Geo-Inf.} \gdef\@journalfull{ISPRS International Journal of Geo-Information} \gdef\@doiabbr{ijgi} \gdef\@ISSN{2220-9964} } 103 | \DeclareOption{ijms}{ \gdef\@journal{ijms} \gdef\@journalshort{Int. J. Mol. Sci.} \gdef\@journalfull{International Journal of Molecular Sciences} \gdef\@doiabbr{ijms} \gdef\@ISSN{1422-0067} } 104 | \DeclareOption{ijtpp}{ \gdef\@journal{ijtpp} \gdef\@journalshort{Int. J. Turbomach. Propuls. Power} \gdef\@journalfull{International Journal of Turbomachinery, Propulsion and Power} \gdef\@doiabbr{ijtpp} \gdef\@ISSN{2504-186X} } 105 | \DeclareOption{informatics}{ \gdef\@journal{informatics} \gdef\@journalshort{Informatics} \gdef\@journalfull{Informatics} \gdef\@doiabbr{informatics} \gdef\@ISSN{2227-9709} } 106 | \DeclareOption{information}{ \gdef\@journal{information} \gdef\@journalshort{Information} \gdef\@journalfull{Information} \gdef\@doiabbr{info} \gdef\@ISSN{2078-2489} } 107 | \DeclareOption{infrastructures}{ \gdef\@journal{infrastructures} \gdef\@journalshort{Infrastructures} \gdef\@journalfull{Infrastructures} \gdef\@doiabbr{infrastructures} \gdef\@ISSN{2412-3811} } 108 | \DeclareOption{inorganics}{ \gdef\@journal{inorganics} \gdef\@journalshort{Inorganics} \gdef\@journalfull{Inorganics} \gdef\@doiabbr{inorganics} \gdef\@ISSN{2304-6740} } 109 | \DeclareOption{insects}{ \gdef\@journal{insects} \gdef\@journalshort{Insects} \gdef\@journalfull{Insects} \gdef\@doiabbr{insects} \gdef\@ISSN{2075-4450} } 110 | \DeclareOption{instruments}{ \gdef\@journal{instruments} \gdef\@journalshort{Instruments} \gdef\@journalfull{Instruments} \gdef\@doiabbr{instruments} \gdef\@ISSN{2410-390X} } 111 | \DeclareOption{inventions}{ \gdef\@journal{inventions} \gdef\@journalshort{Inventions} \gdef\@journalfull{Inventions} \gdef\@doiabbr{inventions} \gdef\@ISSN{2411-5134} } 112 | \DeclareOption{iot}{ \gdef\@journal{iot} \gdef\@journalshort{IoT} \gdef\@journalfull{IoT} \gdef\@doiabbr{iot} \gdef\@ISSN{2624-831X} } 113 | \DeclareOption{j}{ \gdef\@journal{j} \gdef\@journalshort{J} \gdef\@journalfull{J} \gdef\@doiabbr{j} \gdef\@ISSN{2571-8800} } 114 | \DeclareOption{jcdd}{ \gdef\@journal{jcdd} \gdef\@journalshort{J. Cardiovasc. Dev. Dis.} \gdef\@journalfull{Journal of Cardiovascular Development and Disease} \gdef\@doiabbr{jcdd} \gdef\@ISSN{2308-3425} } 115 | \DeclareOption{jcm}{ \gdef\@journal{jcm} \gdef\@journalshort{J. Clin. Med.} \gdef\@journalfull{Journal of Clinical Medicine} \gdef\@doiabbr{jcm} \gdef\@ISSN{2077-0383} } 116 | \DeclareOption{jcp}{ \gdef\@journal{jcp} \gdef\@journalshort{J. Cybersecur. Priv.} \gdef\@journalfull{Journal of Cybersecurity and Privacy} \gdef\@doiabbr{jcp} \gdef\@ISSN{2624-800X} } 117 | \DeclareOption{jcs}{ \gdef\@journal{jcs} \gdef\@journalshort{J. Compos. Sci.} \gdef\@journalfull{Journal of Composites Science} \gdef\@doiabbr{jcs} \gdef\@ISSN{2504-477X} } 118 | \DeclareOption{jdb}{ \gdef\@journal{jdb} \gdef\@journalshort{J. Dev. Biol.} \gdef\@journalfull{Journal of Developmental Biology} \gdef\@doiabbr{jdb} \gdef\@ISSN{2221-3759} } 119 | \DeclareOption{jfb}{ \gdef\@journal{jfb} \gdef\@journalshort{J. Funct. Biomater.} \gdef\@journalfull{Journal of Functional Biomaterials} \gdef\@doiabbr{jfb} \gdef\@ISSN{2079-4983} } 120 | \DeclareOption{jfmk}{ \gdef\@journal{jfmk} \gdef\@journalshort{J. Funct. Morphol. Kinesiol.} \gdef\@journalfull{Journal of Functional Morphology and Kinesiology} \gdef\@doiabbr{jfmk} \gdef\@ISSN{2411-5142} } 121 | \DeclareOption{jimaging}{ \gdef\@journal{jimaging} \gdef\@journalshort{J. Imaging} \gdef\@journalfull{Journal of Imaging} \gdef\@doiabbr{jimaging} \gdef\@ISSN{2313-433X} } 122 | \DeclareOption{jintelligence}{ \gdef\@journal{jintelligence} \gdef\@journalshort{J. Intell.} \gdef\@journalfull{Journal of Intelligence} \gdef\@doiabbr{jintelligence} \gdef\@ISSN{2079-3200} } 123 | \DeclareOption{jlpea}{ \gdef\@journal{jlpea} \gdef\@journalshort{J. Low Power Electron. Appl.} \gdef\@journalfull{Journal of Low Power Electronics and Applications} \gdef\@doiabbr{jlpea} \gdef\@ISSN{2079-9268} } 124 | \DeclareOption{jmmp}{ \gdef\@journal{jmmp} \gdef\@journalshort{J. Manuf. Mater. Process.} \gdef\@journalfull{Journal of Manufacturing and Materials Processing} \gdef\@doiabbr{jmmp} \gdef\@ISSN{2504-4494} } 125 | \DeclareOption{jmse}{ \gdef\@journal{jmse} \gdef\@journalshort{J. Mar. Sci. Eng.} \gdef\@journalfull{Journal of Marine Science and Engineering} \gdef\@doiabbr{jmse} \gdef\@ISSN{2077-1312} } 126 | \DeclareOption{jnt}{ \gdef\@journal{jnt} \gdef\@journalshort{J. Nanotheranostics} \gdef\@journalfull{Journal of Nanotheranostics} \gdef\@doiabbr{jnt} \gdef\@ISSN{2624-845X} } 127 | \DeclareOption{jof}{ \gdef\@journal{jof} \gdef\@journalshort{J. Fungi} \gdef\@journalfull{Journal of Fungi} \gdef\@doiabbr{jof} \gdef\@ISSN{2309-608X} } 128 | \DeclareOption{joitmc}{ \gdef\@journal{joitmc} \gdef\@journalshort{J. Open Innov. Technol. Mark. Complex.} \gdef\@journalfull{Journal of Open Innovation: Technology, Market, and Complexity} \gdef\@doiabbr{joitmc} \gdef\@ISSN{2199-8531} } 129 | \DeclareOption{jpm}{ \gdef\@journal{jpm} \gdef\@journalshort{J. Pers. Med.} \gdef\@journalfull{Journal of Personalized Medicine} \gdef\@doiabbr{jpm} \gdef\@ISSN{2075-4426} } 130 | \DeclareOption{jrfm}{ \gdef\@journal{jrfm} \gdef\@journalshort{J. Risk Financial Manag.} \gdef\@journalfull{Journal of Risk and Financial Management} \gdef\@doiabbr{jrfm} \gdef\@ISSN{1911-8074} } 131 | \DeclareOption{jsan}{ \gdef\@journal{jsan} \gdef\@journalshort{J. Sens. Actuator Netw.} \gdef\@journalfull{Journal of Sensor and Actuator Networks} \gdef\@doiabbr{jsan} \gdef\@ISSN{2224-2708} } 132 | \DeclareOption{land}{ \gdef\@journal{land} \gdef\@journalshort{Land} \gdef\@journalfull{Land} \gdef\@doiabbr{land} \gdef\@ISSN{2073-445X} } 133 | \DeclareOption{languages}{ \gdef\@journal{languages} \gdef\@journalshort{Languages} \gdef\@journalfull{Languages} \gdef\@doiabbr{languages} \gdef\@ISSN{2226-471X} } 134 | \DeclareOption{laws}{ \gdef\@journal{laws} \gdef\@journalshort{Laws} \gdef\@journalfull{Laws} \gdef\@doiabbr{laws} \gdef\@ISSN{2075-471X} } 135 | \DeclareOption{life}{ \gdef\@journal{life} \gdef\@journalshort{Life} \gdef\@journalfull{Life} \gdef\@doiabbr{life} \gdef\@ISSN{2075-1729} } 136 | \DeclareOption{literature}{ \gdef\@journal{literature} \gdef\@journalshort{Literature} \gdef\@journalfull{Literature} \gdef\@doiabbr{} \gdef\@ISSN{2410-9789} } 137 | \DeclareOption{logistics}{ \gdef\@journal{logistics} \gdef\@journalshort{Logistics} \gdef\@journalfull{Logistics} \gdef\@doiabbr{logistics} \gdef\@ISSN{2305-6290} } 138 | \DeclareOption{lubricants}{ \gdef\@journal{lubricants} \gdef\@journalshort{Lubricants} \gdef\@journalfull{Lubricants} \gdef\@doiabbr{lubricants} \gdef\@ISSN{2075-4442} } 139 | \DeclareOption{machines}{ \gdef\@journal{machines} \gdef\@journalshort{Machines} \gdef\@journalfull{Machines} \gdef\@doiabbr{machines} \gdef\@ISSN{2075-1702} } 140 | \DeclareOption{magnetochemistry}{ \gdef\@journal{magnetochemistry} \gdef\@journalshort{Magnetochemistry} \gdef\@journalfull{Magnetochemistry} \gdef\@doiabbr{magnetochemistry} \gdef\@ISSN{2312-7481} } 141 | \DeclareOption{make}{ \gdef\@journal{make} \gdef\@journalshort{Mach. Learn. Knowl. Extr.} \gdef\@journalfull{Machine Learning and Knowledge Extraction} \gdef\@doiabbr{make} \gdef\@ISSN{2504-4990} } 142 | \DeclareOption{marinedrugs}{ \gdef\@journal{marinedrugs} \gdef\@journalshort{Mar. Drugs} \gdef\@journalfull{Marine Drugs} \gdef\@doiabbr{md} \gdef\@ISSN{1660-3397} } 143 | \DeclareOption{materials}{ \gdef\@journal{materials} \gdef\@journalshort{Materials} \gdef\@journalfull{Materials} \gdef\@doiabbr{ma} \gdef\@ISSN{1996-1944} } 144 | \DeclareOption{mathematics}{ \gdef\@journal{mathematics} \gdef\@journalshort{Mathematics} \gdef\@journalfull{Mathematics} \gdef\@doiabbr{math} \gdef\@ISSN{2227-7390} } 145 | \DeclareOption{mca}{ \gdef\@journal{mca} \gdef\@journalshort{Math. Comput. Appl.} \gdef\@journalfull{Mathematical and Computational Applications} \gdef\@doiabbr{mca} \gdef\@ISSN{2297-8747} } 146 | \DeclareOption{medicina}{ \gdef\@journal{medicina} \gdef\@journalshort{Medicina} \gdef\@journalfull{Medicina} \gdef\@doiabbr{medicina} \gdef\@ISSN{1010-660X} } 147 | \DeclareOption{medicines}{ \gdef\@journal{medicines} \gdef\@journalshort{Medicines} \gdef\@journalfull{Medicines} \gdef\@doiabbr{medicines} \gdef\@ISSN{2305-6320} } 148 | \DeclareOption{medsci}{ \gdef\@journal{medsci} \gdef\@journalshort{Med. Sci.} \gdef\@journalfull{Medical Sciences} \gdef\@doiabbr{medsci} \gdef\@ISSN{2076-3271} } 149 | \DeclareOption{membranes}{ \gdef\@journal{membranes} \gdef\@journalshort{Membranes} \gdef\@journalfull{Membranes} \gdef\@doiabbr{membranes} \gdef\@ISSN{2077-0375} } 150 | \DeclareOption{metabolites}{ \gdef\@journal{metabolites} \gdef\@journalshort{Metabolites} \gdef\@journalfull{Metabolites} \gdef\@doiabbr{metabo} \gdef\@ISSN{2218-1989} } 151 | \DeclareOption{metals}{ \gdef\@journal{metals} \gdef\@journalshort{Metals} \gdef\@journalfull{Metals} \gdef\@doiabbr{met} \gdef\@ISSN{2075-4701} } 152 | \DeclareOption{microarrays}{ \gdef\@journal{microarrays} \gdef\@journalshort{Microarrays} \gdef\@journalfull{Microarrays} \gdef\@doiabbr{} \gdef\@ISSN{2076-3905} } 153 | \DeclareOption{micromachines}{ \gdef\@journal{micromachines} \gdef\@journalshort{Micromachines} \gdef\@journalfull{Micromachines} \gdef\@doiabbr{mi} \gdef\@ISSN{2072-666X} } 154 | \DeclareOption{microorganisms}{ \gdef\@journal{microorganisms} \gdef\@journalshort{Microorganisms} \gdef\@journalfull{Microorganisms} \gdef\@doiabbr{microorganisms} \gdef\@ISSN{2076-2607} } 155 | \DeclareOption{minerals}{ \gdef\@journal{minerals} \gdef\@journalshort{Minerals} \gdef\@journalfull{Minerals} \gdef\@doiabbr{min} \gdef\@ISSN{2075-163X} } 156 | \DeclareOption{modelling}{ \gdef\@journal{modelling} \gdef\@journalshort{Modelling} \gdef\@journalfull{Modelling} \gdef\@doiabbr{} \gdef\@ISSN{0012-0012} } 157 | \DeclareOption{molbank}{ \gdef\@journal{molbank} \gdef\@journalshort{Molbank} \gdef\@journalfull{Molbank} \gdef\@doiabbr{M} \gdef\@ISSN{1422-8599} } 158 | \DeclareOption{molecules}{ \gdef\@journal{molecules} \gdef\@journalshort{Molecules} \gdef\@journalfull{Molecules} \gdef\@doiabbr{molecules} \gdef\@ISSN{1420-3049} } 159 | \DeclareOption{mps}{ \gdef\@journal{mps} \gdef\@journalshort{Methods Protoc.} \gdef\@journalfull{Methods and Protocols} \gdef\@doiabbr{mps} \gdef\@ISSN{2409-9279} } 160 | \DeclareOption{mti}{ \gdef\@journal{mti} \gdef\@journalshort{Multimodal Technol. Interact.} \gdef\@journalfull{Multimodal Technologies and Interaction} \gdef\@doiabbr{mti} \gdef\@ISSN{2414-4088} } 161 | \DeclareOption{nanomaterials}{ \gdef\@journal{nanomaterials} \gdef\@journalshort{Nanomaterials} \gdef\@journalfull{Nanomaterials} \gdef\@doiabbr{nano} \gdef\@ISSN{2079-4991} } 162 | \DeclareOption{ncrna}{ \gdef\@journal{ncrna} \gdef\@journalshort{Non-coding RNA} \gdef\@journalfull{Non-coding RNA} \gdef\@doiabbr{ncrna} \gdef\@ISSN{2311-553X} } 163 | \DeclareOption{ijns}{ \gdef\@journal{ijns} \gdef\@journalshort{Int. J. Neonatal Screen.} \gdef\@journalfull{International Journal of Neonatal Screening} \gdef\@doiabbr{ijns} \gdef\@ISSN{2409-515X} } 164 | \DeclareOption{neuroglia}{ \gdef\@journal{neuroglia} \gdef\@journalshort{Neuroglia} \gdef\@journalfull{Neuroglia} \gdef\@doiabbr{neuroglia} \gdef\@ISSN{2571-6980} } 165 | \DeclareOption{nitrogen}{ \gdef\@journal{nitrogen} \gdef\@journalshort{Nitrogen} \gdef\@journalfull{Nitrogen} \gdef\@doiabbr{nitrogen} \gdef\@ISSN{2504-3129} } 166 | \DeclareOption{notspecified}{ \gdef\@journal{notspecified} \gdef\@journalshort{Journal Not Specified} \gdef\@journalfull{Journal Not Specified} \gdef\@doiabbr{} \gdef\@ISSN{} } 167 | \DeclareOption{nutrients}{ \gdef\@journal{nutrients} \gdef\@journalshort{Nutrients} \gdef\@journalfull{Nutrients} \gdef\@doiabbr{nu} \gdef\@ISSN{2072-6643} } 168 | \DeclareOption{ohbm}{ \gdef\@journal{ohbm} \gdef\@journalshort{J. Otorhinolaryngol. Hear. Balance Med.} \gdef\@journalfull{Journal of Otorhinolaryngology, Hearing and Balance Medicine} \gdef\@doiabbr{ohbm} \gdef\@ISSN{2504-463X} } 169 | \DeclareOption{particles}{ \gdef\@journal{particles} \gdef\@journalshort{Particles} \gdef\@journalfull{Particles} \gdef\@doiabbr{particles} \gdef\@ISSN{2571-712X} } 170 | \DeclareOption{pathogens}{ \gdef\@journal{pathogens} \gdef\@journalshort{Pathogens} \gdef\@journalfull{Pathogens} \gdef\@doiabbr{pathogens} \gdef\@ISSN{2076-0817} } 171 | \DeclareOption{pharmaceuticals}{ \gdef\@journal{pharmaceuticals} \gdef\@journalshort{Pharmaceuticals} \gdef\@journalfull{Pharmaceuticals} \gdef\@doiabbr{ph} \gdef\@ISSN{1424-8247} } 172 | \DeclareOption{pharmaceutics}{ \gdef\@journal{pharmaceutics} \gdef\@journalshort{Pharmaceutics} \gdef\@journalfull{Pharmaceutics} \gdef\@doiabbr{pharmaceutics} \gdef\@ISSN{1999-4923} } 173 | \DeclareOption{pharmacy}{ \gdef\@journal{pharmacy} \gdef\@journalshort{Pharmacy} \gdef\@journalfull{Pharmacy} \gdef\@doiabbr{pharmacy} \gdef\@ISSN{2226-4787} } 174 | \DeclareOption{philosophies}{ \gdef\@journal{philosophies} \gdef\@journalshort{Philosophies} \gdef\@journalfull{Philosophies} \gdef\@doiabbr{philosophies} \gdef\@ISSN{2409-9287} } 175 | \DeclareOption{photonics}{ \gdef\@journal{photonics} \gdef\@journalshort{Photonics} \gdef\@journalfull{Photonics} \gdef\@doiabbr{photonics} \gdef\@ISSN{2304-6732} } 176 | \DeclareOption{physics}{ \gdef\@journal{physics} \gdef\@journalshort{Physics} \gdef\@journalfull{Physics} \gdef\@doiabbr{physics} \gdef\@ISSN{2624-8174} } 177 | \DeclareOption{plants}{ \gdef\@journal{plants} \gdef\@journalshort{Plants} \gdef\@journalfull{Plants} \gdef\@doiabbr{plants} \gdef\@ISSN{2223-7747} } 178 | \DeclareOption{plasma}{ \gdef\@journal{plasma} \gdef\@journalshort{Plasma} \gdef\@journalfull{Plasma} \gdef\@doiabbr{plasma} \gdef\@ISSN{2571-6182} } 179 | \DeclareOption{polymers}{ \gdef\@journal{polymers} \gdef\@journalshort{Polymers} \gdef\@journalfull{Polymers} \gdef\@doiabbr{polym} \gdef\@ISSN{2073-4360} } 180 | \DeclareOption{polysaccharides}{ \gdef\@journal{polysaccharides} \gdef\@journalshort{Polysaccharides} \gdef\@journalfull{Polysaccharides} \gdef\@doiabbr{} \gdef\@ISSN{} } 181 | \DeclareOption{preprints}{ \gdef\@journal{preprints} \gdef\@journalshort{Preprints} \gdef\@journalfull{Preprints} \gdef\@doiabbr{} \gdef\@ISSN{} } 182 | \DeclareOption{proceedings}{ \gdef\@journal{proceedings} \gdef\@journalshort{Proceedings} \gdef\@journalfull{Proceedings} \gdef\@doiabbr{proceedings} \gdef\@ISSN{2504-3900} } 183 | \DeclareOption{processes}{ \gdef\@journal{processes} \gdef\@journalshort{Processes} \gdef\@journalfull{Processes} \gdef\@doiabbr{pr} \gdef\@ISSN{2227-9717} } 184 | \DeclareOption{proteomes}{ \gdef\@journal{proteomes} \gdef\@journalshort{Proteomes} \gdef\@journalfull{Proteomes} \gdef\@doiabbr{proteomes} \gdef\@ISSN{2227-7382} } 185 | \DeclareOption{psych}{ \gdef\@journal{psych} \gdef\@journalshort{Psych} \gdef\@journalfull{Psych} \gdef\@doiabbr{psych} \gdef\@ISSN{2624-8611} } 186 | \DeclareOption{publications}{ \gdef\@journal{publications} \gdef\@journalshort{Publications} \gdef\@journalfull{Publications} \gdef\@doiabbr{publications} \gdef\@ISSN{2304-6775} } 187 | \DeclareOption{quantumrep}{ \gdef\@journal{quantumrep} \gdef\@journalshort{Quantum Rep.} \gdef\@journalfull{Quantum Reports} \gdef\@doiabbr{quantum} \gdef\@ISSN{2624-960X} } 188 | \DeclareOption{quaternary}{ \gdef\@journal{quaternary} \gdef\@journalshort{Quaternary} \gdef\@journalfull{Quaternary} \gdef\@doiabbr{quat} \gdef\@ISSN{2571-550X} } 189 | \DeclareOption{qubs}{ \gdef\@journal{qubs} \gdef\@journalshort{Quantum Beam Sci.} \gdef\@journalfull{Quantum Beam Science} \gdef\@doiabbr{qubs} \gdef\@ISSN{2412-382X} } 190 | \DeclareOption{reactions}{ \gdef\@journal{reactions} \gdef\@journalshort{Reactions} \gdef\@journalfull{Reactions} \gdef\@doiabbr{reactions} \gdef\@ISSN{2624-781X} } 191 | \DeclareOption{recycling}{ \gdef\@journal{recycling} \gdef\@journalshort{Recycling} \gdef\@journalfull{Recycling} \gdef\@doiabbr{recycling} \gdef\@ISSN{2313-4321} } 192 | \DeclareOption{religions}{ \gdef\@journal{religions} \gdef\@journalshort{Religions} \gdef\@journalfull{Religions} \gdef\@doiabbr{rel} \gdef\@ISSN{2077-1444} } 193 | \DeclareOption{remotesensing}{ \gdef\@journal{remotesensing} \gdef\@journalshort{Remote Sens.} \gdef\@journalfull{Remote Sensing} \gdef\@doiabbr{rs} \gdef\@ISSN{2072-4292} } 194 | \DeclareOption{reports}{ \gdef\@journal{reports} \gdef\@journalshort{Reports} \gdef\@journalfull{Reports} \gdef\@doiabbr{reports} \gdef\@ISSN{2571-841X} } 195 | \DeclareOption{resources}{ \gdef\@journal{resources} \gdef\@journalshort{Resources} \gdef\@journalfull{Resources} \gdef\@doiabbr{resources} \gdef\@ISSN{2079-9276} } 196 | \DeclareOption{risks}{ \gdef\@journal{risks} \gdef\@journalshort{Risks} \gdef\@journalfull{Risks} \gdef\@doiabbr{risks} \gdef\@ISSN{2227-9091} } 197 | \DeclareOption{robotics}{ \gdef\@journal{robotics} \gdef\@journalshort{Robotics} \gdef\@journalfull{Robotics} \gdef\@doiabbr{robotics} \gdef\@ISSN{2218-6581} } 198 | \DeclareOption{safety}{ \gdef\@journal{safety} \gdef\@journalshort{Safety} \gdef\@journalfull{Safety} \gdef\@doiabbr{safety} \gdef\@ISSN{2313-576X} } 199 | \DeclareOption{sci}{ \gdef\@journal{sci} \gdef\@journalshort{Sci} \gdef\@journalfull{Sci} \gdef\@doiabbr{sci} \gdef\@ISSN{2413-4155} } 200 | \DeclareOption{scipharm}{ \gdef\@journal{scipharm} \gdef\@journalshort{Sci. Pharm.} \gdef\@journalfull{Scientia Pharmaceutica} \gdef\@doiabbr{scipharm} \gdef\@ISSN{2218-0532} } 201 | \DeclareOption{sensors}{ \gdef\@journal{sensors} \gdef\@journalshort{Sensors} \gdef\@journalfull{Sensors} \gdef\@doiabbr{s} \gdef\@ISSN{1424-8220} } 202 | \DeclareOption{separations}{ \gdef\@journal{separations} \gdef\@journalshort{Separations} \gdef\@journalfull{Separations} \gdef\@doiabbr{separations} \gdef\@ISSN{2297-8739} } 203 | \DeclareOption{sexes}{ \gdef\@journal{sexes} \gdef\@journalshort{Sexes} \gdef\@journalfull{Sexes} \gdef\@doiabbr{} \gdef\@ISSN{2411-5118} } 204 | \DeclareOption{signals}{ \gdef\@journal{signals} \gdef\@journalshort{Signals} \gdef\@journalfull{Signals} \gdef\@doiabbr{signals} \gdef\@ISSN{2624-6120} } 205 | \DeclareOption{sinusitis}{ \gdef\@journal{sinusitis} \gdef\@journalshort{Sinusitis} \gdef\@journalfull{Sinusitis} \gdef\@doiabbr{sinusitis} \gdef\@ISSN{2309-107X} } 206 | \DeclareOption{smartcities}{ \gdef\@journal{smartcities} \gdef\@journalshort{Smart Cities} \gdef\@journalfull{Smart Cities} \gdef\@doiabbr{smartcities} \gdef\@ISSN{2624-6511} } 207 | \DeclareOption{sna}{ \gdef\@journal{sna} \gdef\@journalshort{Sinusitis Asthma} \gdef\@journalfull{Sinusitis and Asthma} \gdef\@doiabbr{sna} \gdef\@ISSN{2624-7003} } 208 | \DeclareOption{societies}{ \gdef\@journal{societies} \gdef\@journalshort{Societies} \gdef\@journalfull{Societies} \gdef\@doiabbr{soc} \gdef\@ISSN{2075-4698} } 209 | \DeclareOption{socsci}{ \gdef\@journal{socsci} \gdef\@journalshort{Soc. Sci.} \gdef\@journalfull{Social Sciences} \gdef\@doiabbr{socsci} \gdef\@ISSN{2076-0760} } 210 | \DeclareOption{soilsystems}{ \gdef\@journal{soilsystems} \gdef\@journalshort{Soil Syst.} \gdef\@journalfull{Soil Systems} \gdef\@doiabbr{soilsystems} \gdef\@ISSN{2571-8789} } 211 | \DeclareOption{sports}{ \gdef\@journal{sports} \gdef\@journalshort{Sports} \gdef\@journalfull{Sports} \gdef\@doiabbr{sports} \gdef\@ISSN{2075-4663} } 212 | \DeclareOption{standards}{ \gdef\@journal{standards} \gdef\@journalshort{Standards} \gdef\@journalfull{Standards} \gdef\@doiabbr{} \gdef\@ISSN{2305-6703} } 213 | \DeclareOption{stats}{ \gdef\@journal{stats} \gdef\@journalshort{Stats} \gdef\@journalfull{Stats} \gdef\@doiabbr{stats} \gdef\@ISSN{2571-905X} } 214 | \DeclareOption{surfaces}{ \gdef\@journal{surfaces} \gdef\@journalshort{Surfaces} \gdef\@journalfull{Surfaces} \gdef\@doiabbr{surfaces} \gdef\@ISSN{2571-9637} } 215 | \DeclareOption{surgeries}{ \gdef\@journal{surgeries} \gdef\@journalshort{Surgeries} \gdef\@journalfull{Surgeries} \gdef\@doiabbr{} \gdef\@ISSN{2017-2017} } 216 | \DeclareOption{sustainability}{ \gdef\@journal{sustainability} \gdef\@journalshort{Sustainability} \gdef\@journalfull{Sustainability} \gdef\@doiabbr{su} \gdef\@ISSN{2071-1050} } 217 | \DeclareOption{symmetry}{ \gdef\@journal{symmetry} \gdef\@journalshort{Symmetry} \gdef\@journalfull{Symmetry} \gdef\@doiabbr{sym} \gdef\@ISSN{2073-8994} } 218 | \DeclareOption{systems}{ \gdef\@journal{systems} \gdef\@journalshort{Systems} \gdef\@journalfull{Systems} \gdef\@doiabbr{systems} \gdef\@ISSN{2079-8954} } 219 | \DeclareOption{technologies}{ \gdef\@journal{technologies} \gdef\@journalshort{Technologies} \gdef\@journalfull{Technologies} \gdef\@doiabbr{technologies} \gdef\@ISSN{2227-7080} } 220 | \DeclareOption{test}{ \gdef\@journal{test} \gdef\@journalshort{Test} \gdef\@journalfull{Test} \gdef\@doiabbr{} \gdef\@ISSN{} } 221 | \DeclareOption{toxics}{ \gdef\@journal{toxics} \gdef\@journalshort{Toxics} \gdef\@journalfull{Toxics} \gdef\@doiabbr{toxics} \gdef\@ISSN{2305-6304} } 222 | \DeclareOption{toxins}{ \gdef\@journal{toxins} \gdef\@journalshort{Toxins} \gdef\@journalfull{Toxins} \gdef\@doiabbr{toxins} \gdef\@ISSN{2072-6651} } 223 | \DeclareOption{tropicalmed}{ \gdef\@journal{tropicalmed} \gdef\@journalshort{Trop. Med. Infect. Dis.} \gdef\@journalfull{Tropical Medicine and Infectious Disease} \gdef\@doiabbr{tropicalmed} \gdef\@ISSN{2414-6366} } 224 | \DeclareOption{universe}{ \gdef\@journal{universe} \gdef\@journalshort{Universe} \gdef\@journalfull{Universe} \gdef\@doiabbr{universe} \gdef\@ISSN{2218-1997} } 225 | \DeclareOption{urbansci}{ \gdef\@journal{urbansci} \gdef\@journalshort{Urban Sci.} \gdef\@journalfull{Urban Science} \gdef\@doiabbr{urbansci} \gdef\@ISSN{2413-8851} } 226 | \DeclareOption{vaccines}{ \gdef\@journal{vaccines} \gdef\@journalshort{Vaccines} \gdef\@journalfull{Vaccines} \gdef\@doiabbr{vaccines} \gdef\@ISSN{2076-393X} } 227 | \DeclareOption{vehicles}{ \gdef\@journal{vehicles} \gdef\@journalshort{Vehicles} \gdef\@journalfull{Vehicles} \gdef\@doiabbr{vehicles} \gdef\@ISSN{2624-8921} } 228 | \DeclareOption{vetsci}{ \gdef\@journal{vetsci} \gdef\@journalshort{Vet. Sci.} \gdef\@journalfull{Veterinary Sciences} \gdef\@doiabbr{vetsci} \gdef\@ISSN{2306-7381} } 229 | \DeclareOption{vibration}{ \gdef\@journal{vibration} \gdef\@journalshort{Vibration} \gdef\@journalfull{Vibration} \gdef\@doiabbr{vibration} \gdef\@ISSN{2571-631X} } 230 | \DeclareOption{viruses}{ \gdef\@journal{viruses} \gdef\@journalshort{Viruses} \gdef\@journalfull{Viruses} \gdef\@doiabbr{v} \gdef\@ISSN{1999-4915} } 231 | \DeclareOption{vision}{ \gdef\@journal{vision} \gdef\@journalshort{Vision} \gdef\@journalfull{Vision} \gdef\@doiabbr{vision} \gdef\@ISSN{2411-5150} } 232 | \DeclareOption{water}{ \gdef\@journal{water} \gdef\@journalshort{Water} \gdef\@journalfull{Water} \gdef\@doiabbr{w} \gdef\@ISSN{2073-4441} } 233 | \DeclareOption{wem}{ \gdef\@journal{wem} \gdef\@journalshort{Wildl. Ecol. Manag.} \gdef\@journalfull{Wildlife Ecology and Management} \gdef\@doiabbr{} \gdef\@ISSN{1234-4321} } 234 | \DeclareOption{wevj}{ \gdef\@journal{wevj} \gdef\@journalshort{World Electric Vehicle Journal} \gdef\@journalfull{World Electric Vehicle Journal} \gdef\@doiabbr{wevj} \gdef\@ISSN{2032-6653} } -------------------------------------------------------------------------------- /logo-ccby.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/logo-ccby.pdf -------------------------------------------------------------------------------- /logo-mdpi.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/logo-mdpi.pdf -------------------------------------------------------------------------------- /logo-orcid.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/logo-orcid.pdf -------------------------------------------------------------------------------- /logo-updates.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aaronpeikert/repro-tutorial/61e6ae22a27ccf28fe2c1c3fa97c19e1cfc84b96/logo-updates.pdf -------------------------------------------------------------------------------- /mdpi.bst: -------------------------------------------------------------------------------- 1 | %% Bibliography style for MDPI journals 2 | 3 | ENTRY 4 | { address 5 | archiveprefix % 6 | author 7 | booktitle 8 | chapter 9 | edition 10 | editor 11 | eprint % 12 | doi 13 | howpublished 14 | institution 15 | journal 16 | key 17 | month 18 | note 19 | number 20 | organization 21 | pages 22 | primaryclass % 23 | publisher 24 | school 25 | series 26 | title 27 | type 28 | volume 29 | year 30 | url 31 | urldate 32 | nationality 33 | } 34 | {} 35 | { label extra.label sort.label short.list } 36 | 37 | INTEGERS { output.state before.all mid.sentence after.sentence after.block after.item } 38 | 39 | FUNCTION {init.state.consts} 40 | { #0 'before.all := 41 | #1 'mid.sentence := 42 | #2 'after.sentence := 43 | #3 'after.block := 44 | #4 'after.item := 45 | } 46 | 47 | STRINGS { s t } 48 | 49 | FUNCTION {output.nonnull} 50 | { 's := 51 | output.state mid.sentence = 52 | { ", " * write$ } 53 | { output.state after.block = 54 | { add.period$ write$ 55 | newline$ 56 | "\newblock " write$ 57 | } 58 | { output.state before.all = 59 | 'write$ 60 | { output.state after.item = 61 | {"; " * write$} 62 | {add.period$ " " * write$} 63 | if$} 64 | if$ 65 | } 66 | if$ 67 | mid.sentence 'output.state := 68 | } 69 | if$ 70 | s 71 | } 72 | 73 | FUNCTION {output} 74 | { duplicate$ empty$ 75 | 'pop$ 76 | 'output.nonnull 77 | if$ 78 | } 79 | 80 | FUNCTION {output.check} 81 | { 't := 82 | duplicate$ empty$ 83 | { pop$ "empty " t * " in " * cite$ * warning$ } 84 | 'output.nonnull 85 | if$ 86 | } 87 | 88 | FUNCTION {output.checkwoa} 89 | { 't := 90 | duplicate$ empty$ 91 | { pop$ } 92 | 'output.nonnull 93 | if$ 94 | } 95 | 96 | FUNCTION {fin.entry} 97 | { add.period$ 98 | write$ 99 | newline$ 100 | } 101 | 102 | FUNCTION {new.block} 103 | { output.state before.all = 104 | 'skip$ 105 | { after.block 'output.state := } 106 | if$ 107 | } 108 | 109 | FUNCTION {new.sentence} 110 | { output.state after.block = 111 | 'skip$ 112 | { output.state before.all = 113 | 'skip$ 114 | { after.sentence 'output.state := } 115 | if$ 116 | } 117 | if$ 118 | } 119 | 120 | FUNCTION {not} 121 | { { #0 } 122 | { #1 } 123 | if$ 124 | } 125 | 126 | FUNCTION {and} 127 | { 'skip$ 128 | { pop$ #0 } 129 | if$ 130 | } 131 | 132 | FUNCTION {or} 133 | { { pop$ #1 } 134 | 'skip$ 135 | if$ 136 | } 137 | 138 | FUNCTION {new.block.checka} 139 | { empty$ 140 | 'skip$ 141 | 'new.block 142 | if$ 143 | } 144 | 145 | FUNCTION {new.block.checkb} 146 | { empty$ 147 | swap$ empty$ 148 | and 149 | 'skip$ 150 | 'new.block 151 | if$ 152 | } 153 | 154 | FUNCTION {new.sentence.checka} 155 | { empty$ 156 | 'skip$ 157 | 'new.sentence 158 | if$ 159 | } 160 | 161 | FUNCTION {new.sentence.checkb} 162 | { empty$ 163 | swap$ empty$ 164 | and 165 | 'skip$ 166 | 'new.sentence 167 | if$ 168 | } 169 | 170 | FUNCTION {field.or.null} 171 | { duplicate$ empty$ 172 | { pop$ "" } 173 | 'skip$ 174 | if$ 175 | } 176 | 177 | FUNCTION {emphasize} 178 | { duplicate$ empty$ 179 | { pop$ "" } 180 | { "{\em " swap$ * "}" * } 181 | if$ 182 | } 183 | 184 | FUNCTION {embolden} 185 | { duplicate$ empty$ 186 | { pop$ "" } 187 | { "{\bf " swap$ * "}" * } 188 | if$ 189 | } 190 | 191 | FUNCTION {website} 192 | { duplicate$ empty$ 193 | { pop$ "" } 194 | { "\url{" swap$ * "}" * } 195 | if$ 196 | } 197 | 198 | INTEGERS { nameptr namesleft numnames } 199 | 200 | FUNCTION {format.names} 201 | { 's := 202 | #1 'nameptr := 203 | s num.names$ 'numnames := 204 | numnames 'namesleft := 205 | { namesleft #0 > } 206 | { s nameptr "{vv~}{ll}{, jj}{, f{.}}." format.name$ 't := 207 | nameptr #1 > 208 | { namesleft #1 > 209 | { "; " * t * } 210 | { numnames #2 > 211 | { "" * } 212 | 'skip$ 213 | if$ 214 | t "others" = 215 | { " et~al." * } 216 | { "; " * t * } 217 | if$ 218 | } 219 | if$ 220 | } 221 | 't 222 | if$ 223 | nameptr #1 + 'nameptr := 224 | namesleft #1 - 'namesleft := 225 | } 226 | while$ 227 | } 228 | 229 | FUNCTION {format.key} 230 | { empty$ 231 | { key field.or.null } 232 | { "" } 233 | if$ 234 | } 235 | 236 | 237 | FUNCTION {format.authors} 238 | { author empty$ 239 | { "" } 240 | { author format.names } 241 | if$ 242 | } 243 | 244 | FUNCTION {format.editors} 245 | { editor empty$ 246 | { "" } 247 | { editor format.names 248 | editor num.names$ #1 > 249 | { ", Eds." * } 250 | { ", Ed." * } 251 | if$ 252 | } 253 | if$ 254 | } 255 | 256 | 257 | 258 | 259 | FUNCTION {format.title} 260 | { title empty$ 261 | { "" } 262 | { title} 263 | if$ 264 | } 265 | 266 | FUNCTION {format.number.patent} 267 | { number empty$ 268 | { "" } 269 | { nationality empty$ 270 | { number} 271 | { nationality " " * number *} 272 | if$ 273 | } 274 | if$ 275 | } 276 | 277 | FUNCTION {format.full.names} 278 | {'s := 279 | #1 'nameptr := 280 | s num.names$ 'numnames := 281 | numnames 'namesleft := 282 | { namesleft #0 > } 283 | { s nameptr 284 | "{vv~}{ll}" format.name$ 't := 285 | nameptr #1 > 286 | { 287 | namesleft #1 > 288 | { ", " * t * } 289 | { 290 | numnames #2 > 291 | { "," * } 292 | 'skip$ 293 | if$ 294 | t "others" = 295 | { " et~al." * } 296 | { " and " * t * } 297 | if$ 298 | } 299 | if$ 300 | } 301 | 't 302 | if$ 303 | nameptr #1 + 'nameptr := 304 | namesleft #1 - 'namesleft := 305 | } 306 | while$ 307 | } 308 | 309 | FUNCTION {author.editor.full} 310 | { author empty$ 311 | { editor empty$ 312 | { "" } 313 | { editor format.full.names } 314 | if$ 315 | } 316 | { author format.full.names } 317 | if$ 318 | } 319 | 320 | 321 | 322 | FUNCTION {author.full} 323 | { author empty$ 324 | { "" } 325 | { author format.full.names } 326 | if$ 327 | } 328 | 329 | FUNCTION {editor.full} 330 | { editor empty$ 331 | { "" } 332 | { editor format.full.names } 333 | if$ 334 | } 335 | 336 | FUNCTION {make.full.names} 337 | { type$ "book" = 338 | type$ "inbook" = 339 | or 340 | 'author.editor.full 341 | { type$ "proceedings" = 342 | 'editor.full 343 | 'author.full 344 | if$ 345 | } 346 | if$ 347 | } 348 | 349 | FUNCTION {output.bibitem} 350 | { newline$ 351 | "\bibitem[" write$ 352 | label write$ 353 | ")" make.full.names duplicate$ short.list = 354 | { pop$ } 355 | { * } 356 | if$ 357 | "]{" * write$ 358 | cite$ write$ 359 | "}" write$ 360 | newline$ 361 | "" 362 | before.all 'output.state := 363 | } 364 | 365 | FUNCTION {n.dashify} 366 | { 't := 367 | "" 368 | { t empty$ not } 369 | { t #1 #1 substring$ "-" = 370 | { t #1 #2 substring$ "--" = not 371 | { "--" * 372 | t #2 global.max$ substring$ 't := 373 | } 374 | { { t #1 #1 substring$ "-" = } 375 | { "-" * 376 | t #2 global.max$ substring$ 't := 377 | } 378 | while$ 379 | } 380 | if$ 381 | } 382 | { t #1 #1 substring$ * 383 | t #2 global.max$ substring$ 't := 384 | } 385 | if$ 386 | } 387 | while$ 388 | } 389 | 390 | 391 | FUNCTION {format.date} 392 | { year empty$ 393 | { month empty$ 394 | { "" } 395 | { "there's a month but no year in " cite$ * warning$ 396 | month 397 | } 398 | if$ 399 | } 400 | { " " year embolden * } 401 | if$ 402 | } 403 | 404 | FUNCTION {format.bdate} 405 | { year empty$ 406 | { month empty$ 407 | { "" } 408 | { "there's a month but no year in " cite$ * warning$ 409 | month 410 | } 411 | if$ 412 | } 413 | { " " year * } 414 | if$ 415 | } 416 | 417 | FUNCTION {format.pdate} 418 | { year empty$ 419 | { month empty$ 420 | { "" } 421 | { "there's a month but no year in " cite$ * warning$ 422 | month 423 | } 424 | if$ 425 | } 426 | { month empty$ 427 | { " " year * } 428 | { " " month * ", " * year * } 429 | if$} 430 | if$ 431 | } 432 | 433 | FUNCTION {format.btitle} 434 | { title emphasize 435 | } 436 | 437 | FUNCTION {tie.or.space.connect} 438 | { duplicate$ text.length$ #3 < 439 | { "~" } 440 | { " " } 441 | if$ 442 | swap$ * * 443 | } 444 | 445 | FUNCTION {either.or.check} 446 | { empty$ 447 | 'pop$ 448 | { "can't use both " swap$ * " fields in " * cite$ * warning$ } 449 | if$ 450 | } 451 | 452 | FUNCTION {format.bvolume} 453 | { volume empty$ 454 | { "" } 455 | { "Vol." volume tie.or.space.connect 456 | series empty$ 457 | 'skip$ 458 | { ", " * series emphasize * } 459 | if$ 460 | "volume and number" number either.or.check 461 | } 462 | if$ 463 | } 464 | 465 | FUNCTION {format.number.series} 466 | { volume empty$ 467 | { number empty$ 468 | { series field.or.null } 469 | { output.state mid.sentence = 470 | { "number" } 471 | { "Number" } 472 | if$ 473 | number tie.or.space.connect 474 | series empty$ 475 | { "there's a number but no series in " cite$ * warning$ } 476 | { " in " * series * } 477 | if$ 478 | } 479 | if$ 480 | } 481 | { "" } 482 | if$ 483 | } 484 | 485 | FUNCTION {format.edition} 486 | { edition empty$ 487 | { "" } 488 | { output.state mid.sentence = 489 | { edition "l" change.case$ " ed." * } 490 | { edition "t" change.case$ " ed." * } 491 | if$ 492 | } 493 | if$ 494 | } 495 | 496 | INTEGERS { multiresult } 497 | 498 | FUNCTION {multi.page.check} 499 | { 't := 500 | #0 'multiresult := 501 | { multiresult not 502 | t empty$ not 503 | and 504 | } 505 | { t #1 #1 substring$ 506 | duplicate$ "-" = 507 | swap$ duplicate$ "," = 508 | swap$ "+" = 509 | or or 510 | { #1 'multiresult := } 511 | { t #2 global.max$ substring$ 't := } 512 | if$ 513 | } 514 | while$ 515 | multiresult 516 | } 517 | 518 | FUNCTION {format.pages} 519 | { pages empty$ 520 | { "" } 521 | { pages multi.page.check 522 | { "pp." pages n.dashify tie.or.space.connect } 523 | { "p." pages tie.or.space.connect } 524 | if$ 525 | } 526 | if$ 527 | } 528 | 529 | FUNCTION {format.vol.num.pages} 530 | { volume emphasize field.or.null 531 | number empty$ 532 | 'skip$ 533 | { 534 | volume empty$ 535 | { "there's a number but no volume in " cite$ * warning$ } 536 | 'skip$ 537 | if$ 538 | } 539 | if$ 540 | pages empty$ 541 | 'skip$ 542 | { duplicate$ empty$ 543 | { pop$ format.pages } 544 | { ",~" * pages n.dashify * } 545 | if$ 546 | } 547 | if$ 548 | } 549 | 550 | FUNCTION {format.chapter.pages} 551 | { chapter empty$ 552 | 'format.pages 553 | { type empty$ 554 | { "chapter" } 555 | { type "l" change.case$ } 556 | if$ 557 | chapter tie.or.space.connect 558 | pages empty$ 559 | 'skip$ 560 | { ", " * format.pages * } 561 | if$ 562 | } 563 | if$ 564 | } 565 | 566 | FUNCTION {format.in.ed.booktitle} 567 | { booktitle empty$ 568 | { "" } 569 | { editor empty$ 570 | { edition empty$ 571 | {"In " booktitle emphasize *} 572 | {"In " booktitle emphasize * ", " * edition * " ed." *} 573 | if$ 574 | } 575 | { edition empty$ 576 | {"In " booktitle emphasize * "; " * format.editors * } 577 | {"In " booktitle emphasize * ", " * edition * " ed." * "; " * format.editors * } 578 | if$ 579 | } 580 | if$ 581 | } 582 | if$ 583 | } 584 | 585 | FUNCTION {format.in.ed.booktitle.proc} 586 | { booktitle empty$ 587 | { "" } 588 | { editor empty$ 589 | { edition empty$ 590 | {" " booktitle *} 591 | {" " booktitle * ", " * edition * " ed." *} 592 | if$ 593 | } 594 | { edition empty$ 595 | {" " booktitle * "; " * format.editors * } 596 | {" " booktitle * ", " * edition * " ed." * "; " * format.editors * } 597 | if$ 598 | } 599 | if$ 600 | } 601 | if$ 602 | } 603 | 604 | FUNCTION {format.publisher.and.address} 605 | { publisher empty$ 606 | {""} 607 | { address empty$ 608 | {publisher } 609 | {publisher ": " * address *} 610 | if$ 611 | } 612 | if$ 613 | } 614 | 615 | 616 | 617 | FUNCTION {empty.misc.check} 618 | { author empty$ title empty$ howpublished empty$ 619 | month empty$ year empty$ note empty$ 620 | and and and and and 621 | { "all relevant fields are empty in " cite$ * warning$ } 622 | 'skip$ 623 | if$ 624 | } 625 | 626 | FUNCTION {format.thesis.type} 627 | { type empty$ 628 | 'skip$ 629 | { pop$ 630 | type "t" change.case$ 631 | } 632 | if$ 633 | } 634 | 635 | FUNCTION {format.tr.number} 636 | { type empty$ 637 | { "Technical Report" } 638 | 'type 639 | if$ 640 | number empty$ 641 | { "t" change.case$ } 642 | { number tie.or.space.connect } 643 | if$ 644 | } 645 | 646 | FUNCTION {format.article.crossref} 647 | { key empty$ 648 | { journal empty$ 649 | { "need key or journal for " cite$ * " to crossref " * crossref * 650 | warning$ 651 | "" 652 | } 653 | { "In \emph{" journal * "}" * } 654 | if$ 655 | } 656 | { "In " } 657 | if$ 658 | " \citet{" * crossref * "}" * 659 | } 660 | 661 | 662 | 663 | FUNCTION {format.book.crossref} 664 | { volume empty$ 665 | { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ 666 | "In " 667 | } 668 | { "Vol." volume tie.or.space.connect 669 | " of " * 670 | } 671 | if$ 672 | editor empty$ 673 | editor field.or.null author field.or.null = 674 | or 675 | { key empty$ 676 | { series empty$ 677 | { "need editor, key, or series for " cite$ * " to crossref " * 678 | crossref * warning$ 679 | "" * 680 | } 681 | { "{\em " * series * "\/}" * } 682 | if$ 683 | } 684 | { key * } 685 | if$ 686 | } 687 | { "" * } 688 | if$ 689 | " \cite{" * crossref * "}" * 690 | } 691 | 692 | FUNCTION {format.incoll.inproc.crossref} 693 | { editor empty$ 694 | editor field.or.null author field.or.null = 695 | or 696 | { key empty$ 697 | { booktitle empty$ 698 | { "need editor, key, or booktitle for " cite$ * " to crossref " * 699 | crossref * warning$ 700 | "" 701 | } 702 | { "In {\em " booktitle * "\/}" * } 703 | if$ 704 | } 705 | { "In " key * } 706 | if$ 707 | } 708 | { "In " * } 709 | if$ 710 | " \cite{" * crossref * "}" * 711 | } 712 | 713 | FUNCTION {format.website} 714 | { url empty$ 715 | { "" } 716 | { "" url website * 717 | urldate empty$ 718 | {"there is url but no urldate in " cite$ * warning$} 719 | { ", accessed on " * urldate *} 720 | if$ 721 | } 722 | if$ 723 | } 724 | 725 | 726 | %% the following function is modified from kp.bst at http://arxiv.org/hypertex/bibstyles/ 727 | FUNCTION {format.eprint} 728 | {eprint empty$ 729 | { ""} 730 | {primaryClass empty$ 731 | {" \href{http://xxx.lanl.gov/abs/" eprint * "}" * "{{\normalfont " * "[" * eprint * "]" * "}}" *} 732 | {archivePrefix empty$ 733 | {" \href{http://xxx.lanl.gov/abs/" eprint * "}" * "{{\normalfont " * "[" * "arXiv:" * primaryClass * "/" * eprint * "]" * "}}" *} 734 | {" \href{http://xxx.lanl.gov/abs/" eprint * "}" * "{{\normalfont " * "[" * archivePrefix * ":" * primaryClass * "/" * eprint * "]" * "}}" *} 735 | if$ 736 | } 737 | if$ 738 | } 739 | if$ 740 | } 741 | 742 | 743 | %% For printing DOI numbers (it is a hyperlink but printed in black) 744 | FUNCTION {format.doi} 745 | { doi empty$ 746 | { "" } 747 | {"\href{https://doi.org/" doi * "}" * } 748 | if$ 749 | } 750 | 751 | FUNCTION {formatfull.doi} 752 | { doi empty$ 753 | { "" } 754 | {"doi:{\changeurlcolor{black}\href{https://doi.org/" doi * "}{\detokenize{" * doi * "}}}" * } 755 | if$ 756 | } 757 | 758 | 759 | 760 | FUNCTION {article} 761 | { output.bibitem 762 | format.authors "author" output.check 763 | author format.key output 764 | new.block 765 | format.title "title" output.check 766 | new.block 767 | crossref missing$ 768 | { journal emphasize "journal" output.check 769 | format.date * format.vol.num.pages "" * output 770 | } 771 | { format.article.crossref output.nonnull 772 | format.pages output 773 | } 774 | if$ 775 | format.eprint output 776 | new.block 777 | note output 778 | formatfull.doi output 779 | fin.entry 780 | } 781 | 782 | FUNCTION {book} 783 | { output.bibitem 784 | author empty$ 785 | { format.editors "author and editor" output.check } 786 | { format.authors output.nonnull 787 | crossref missing$ 788 | { "author and editor" editor either.or.check } 789 | 'skip$ 790 | if$ 791 | } 792 | if$ 793 | new.block 794 | format.btitle "title" output.check 795 | format.edition output 796 | after.item 'output.state := 797 | crossref missing$ 798 | { format.bvolume output 799 | format.number.series output 800 | format.publisher.and.address "publisher" output.check 801 | %%% address output 802 | } 803 | { 804 | format.book.crossref output.nonnull 805 | } 806 | if$ 807 | format.bdate "year" output.check 808 | after.item 'output.state := 809 | format.chapter.pages output 810 | format.eprint output 811 | new.block 812 | note output 813 | formatfull.doi output 814 | fin.entry 815 | } 816 | 817 | FUNCTION {booklet} 818 | { output.bibitem 819 | format.authors output 820 | new.block 821 | format.title "title" output.check 822 | howpublished address new.block.checkb 823 | howpublished output 824 | address output 825 | format.bdate output 826 | format.eprint output 827 | new.block 828 | note output 829 | formatfull.doi output 830 | fin.entry 831 | } 832 | 833 | FUNCTION {inbook} 834 | { output.bibitem 835 | author empty$ 836 | { format.editors "author and editor" output.check } 837 | { format.authors output.nonnull 838 | crossref missing$ 839 | { "author and editor" editor either.or.check } 840 | 'skip$ 841 | if$ 842 | } 843 | if$ 844 | %%% new.block 845 | format.title "title" output.check 846 | new.block 847 | crossref missing$ 848 | { format.in.ed.booktitle "booktitle" output.check 849 | after.item 'output.state := 850 | format.number.series output 851 | %% new.sentence 852 | format.publisher.and.address "publisher" output.check 853 | format.bdate "year" output.check 854 | after.item 'output.state := 855 | format.bvolume output 856 | format.chapter.pages "chapter and pages" output.check 857 | 858 | } 859 | { format.chapter.pages "chapter and pages" output.check 860 | new.block 861 | format.book.crossref output.nonnull 862 | format.bdate "year" output.check 863 | } 864 | if$ 865 | format.eprint output 866 | new.block 867 | note output 868 | formatfull.doi output 869 | fin.entry 870 | } 871 | 872 | FUNCTION {incollection} 873 | { output.bibitem 874 | format.authors "author" output.check 875 | new.block 876 | format.title "title" output.check 877 | new.sentence 878 | crossref missing$ 879 | { format.in.ed.booktitle "booktitle" output.check 880 | after.item 'output.state := 881 | format.number.series output 882 | % new.sentence 883 | format.publisher.and.address "publisher" output.check 884 | format.bdate "year" output.check 885 | after.item 'output.state := 886 | format.bvolume output 887 | format.chapter.pages output 888 | } 889 | { format.incoll.inproc.crossref output.nonnull 890 | format.chapter.pages output 891 | } 892 | if$ 893 | format.eprint output 894 | new.block 895 | note output 896 | formatfull.doi output 897 | fin.entry 898 | } 899 | 900 | FUNCTION {inproceedings} 901 | { output.bibitem 902 | format.authors "author" output.check 903 | new.block 904 | format.title "title" output.check 905 | new.block 906 | crossref missing$ 907 | { format.in.ed.booktitle.proc "booktitle" output.check 908 | address empty$ 909 | { organization publisher new.sentence.checkb 910 | organization output 911 | publisher output 912 | format.bdate "year" output.check 913 | } 914 | { after.item 'output.state := 915 | organization output 916 | format.publisher.and.address output.nonnull 917 | format.bdate "year" output.check 918 | after.item 'output.state := 919 | } 920 | if$ 921 | format.number.series output 922 | format.bvolume output 923 | format.pages output 924 | } 925 | { format.incoll.inproc.crossref output.nonnull 926 | format.pages output 927 | } 928 | if$ 929 | format.eprint output 930 | new.block 931 | note output 932 | formatfull.doi output 933 | fin.entry 934 | } 935 | 936 | FUNCTION {conference} { inproceedings } 937 | 938 | FUNCTION {manual} 939 | { output.bibitem 940 | author empty$ 941 | { organization empty$ 942 | 'skip$ 943 | { organization output.nonnull 944 | address output 945 | } 946 | if$ 947 | } 948 | { format.authors output.nonnull } 949 | if$ 950 | new.block 951 | format.btitle "title" output.check 952 | author empty$ 953 | { organization empty$ 954 | { address new.block.checka 955 | address output 956 | } 957 | 'skip$ 958 | if$ 959 | } 960 | { organization address new.block.checkb 961 | organization output 962 | address output 963 | } 964 | if$ 965 | format.edition output 966 | format.bdate output 967 | format.eprint output 968 | new.block 969 | note output 970 | formatfull.doi output 971 | fin.entry 972 | } 973 | 974 | FUNCTION {mastersthesis} 975 | { output.bibitem 976 | format.authors "author" output.check 977 | new.block 978 | format.title "title" output.check 979 | new.block 980 | "Master's thesis" format.thesis.type output.nonnull 981 | school "school" output.check 982 | address output 983 | format.bdate "year" output.check 984 | format.eprint output 985 | new.block 986 | note output 987 | formatfull.doi output 988 | fin.entry 989 | } 990 | 991 | FUNCTION {misc} 992 | { output.bibitem 993 | format.authors output 994 | title howpublished new.block.checkb 995 | format.title output 996 | howpublished new.block.checka 997 | howpublished output 998 | format.bdate output 999 | format.eprint output 1000 | new.block 1001 | note output 1002 | formatfull.doi output 1003 | fin.entry 1004 | empty.misc.check 1005 | } 1006 | 1007 | FUNCTION {phdthesis} 1008 | { output.bibitem 1009 | format.authors "author" output.check 1010 | new.block 1011 | format.title "title" output.check 1012 | new.block 1013 | "PhD thesis" format.thesis.type output.nonnull 1014 | school "school" output.check 1015 | address output 1016 | format.bdate "year" output.check 1017 | format.eprint output 1018 | new.block 1019 | note output 1020 | formatfull.doi output 1021 | fin.entry 1022 | } 1023 | 1024 | FUNCTION {proceedings} 1025 | { output.bibitem 1026 | editor empty$ 1027 | { organization output } 1028 | { format.editors output.nonnull } 1029 | if$ 1030 | new.block 1031 | format.btitle "title" output.check 1032 | format.bvolume output 1033 | format.number.series output 1034 | address empty$ 1035 | { editor empty$ 1036 | { publisher new.sentence.checka } 1037 | { organization publisher new.sentence.checkb 1038 | organization output 1039 | } 1040 | if$ 1041 | publisher output 1042 | format.bdate "year" output.check 1043 | } 1044 | { address output.nonnull 1045 | format.bdate "year" output.check 1046 | new.sentence 1047 | editor empty$ 1048 | 'skip$ 1049 | { organization output } 1050 | if$ 1051 | publisher output 1052 | } 1053 | if$ 1054 | format.eprint output 1055 | new.block 1056 | note output 1057 | formatfull.doi output 1058 | fin.entry 1059 | } 1060 | 1061 | FUNCTION {techreport} 1062 | { output.bibitem 1063 | format.authors "author" output.check 1064 | new.block 1065 | format.title "title" output.check 1066 | new.block 1067 | format.tr.number output.nonnull 1068 | institution "institution" output.check 1069 | address output 1070 | format.bdate "year" output.check 1071 | format.eprint output 1072 | new.block 1073 | note output 1074 | formatfull.doi output 1075 | fin.entry 1076 | } 1077 | 1078 | FUNCTION {unpublished} 1079 | { output.bibitem 1080 | format.authors "author" output.check 1081 | new.block 1082 | format.title "title" output.check 1083 | format.eprint output 1084 | new.block 1085 | note output 1086 | formatfull.doi output 1087 | fin.entry 1088 | } 1089 | 1090 | FUNCTION {www} 1091 | { output.bibitem 1092 | format.authors "author" output.checkwoa 1093 | new.block 1094 | format.title "title" output.check 1095 | new.block 1096 | format.website "url" output.check 1097 | format.eprint output 1098 | new.block 1099 | note output 1100 | formatfull.doi output 1101 | fin.entry 1102 | } 1103 | 1104 | FUNCTION {patent} 1105 | { output.bibitem 1106 | format.authors "author" output.check 1107 | new.block 1108 | format.title "title" output.check 1109 | new.block 1110 | format.number.patent "number" output.check 1111 | mid.sentence 'output.state := 1112 | format.pdate "date" output.check 1113 | format.eprint output 1114 | new.block 1115 | note output 1116 | formatfull.doi output 1117 | fin.entry 1118 | } 1119 | 1120 | READ 1121 | 1122 | FUNCTION {sortify} 1123 | { purify$ 1124 | "l" change.case$ 1125 | } 1126 | 1127 | 1128 | INTEGERS { len } 1129 | 1130 | FUNCTION {chop.word} 1131 | { 's := 1132 | 'len := 1133 | s #1 len substring$ = 1134 | { s len #1 + global.max$ substring$ } 1135 | 's 1136 | if$ 1137 | } 1138 | 1139 | 1140 | FUNCTION {format.lab.names} 1141 | { 's := 1142 | s #1 "{vv~}{ll}" format.name$ 1143 | s num.names$ duplicate$ 1144 | #2 > 1145 | { pop$ " \em{et~al.}" * } 1146 | { #2 < 1147 | 'skip$ 1148 | { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = 1149 | { " \em{et~al.}" * } 1150 | { " and " * s #2 "{vv~}{ll}" format.name$ * } 1151 | if$ 1152 | } 1153 | if$ 1154 | } 1155 | if$ 1156 | } 1157 | 1158 | 1159 | FUNCTION {author.key.label} 1160 | { author empty$ 1161 | { key empty$ 1162 | { cite$ #1 #3 substring$ } 1163 | 'key 1164 | if$ 1165 | } 1166 | { author format.lab.names } 1167 | if$ 1168 | } 1169 | 1170 | FUNCTION {author.editor.key.label} 1171 | { author empty$ 1172 | { editor empty$ 1173 | { key empty$ 1174 | { cite$ #1 #3 substring$ } 1175 | 'key 1176 | if$ 1177 | } 1178 | { editor format.lab.names } 1179 | if$ 1180 | } 1181 | { author format.lab.names } 1182 | if$ 1183 | } 1184 | 1185 | FUNCTION {author.key.organization.label} 1186 | { author empty$ 1187 | { key empty$ 1188 | { organization empty$ 1189 | { cite$ #1 #3 substring$ } 1190 | { "The " #4 organization chop.word #3 text.prefix$ } 1191 | if$ 1192 | } 1193 | 'key 1194 | if$ 1195 | } 1196 | { author format.lab.names } 1197 | if$ 1198 | } 1199 | 1200 | FUNCTION {editor.key.organization.label} 1201 | { editor empty$ 1202 | { key empty$ 1203 | { organization empty$ 1204 | { cite$ #1 #3 substring$ } 1205 | { "The " #4 organization chop.word #3 text.prefix$ } 1206 | if$ 1207 | } 1208 | 'key 1209 | if$ 1210 | } 1211 | { editor format.lab.names } 1212 | if$ 1213 | } 1214 | 1215 | FUNCTION {calc.short.authors} 1216 | { type$ "book" = 1217 | type$ "inbook" = 1218 | or 1219 | 'author.editor.key.label 1220 | { type$ "proceedings" = 1221 | 'editor.key.organization.label 1222 | { type$ "manual" = 1223 | 'author.key.organization.label 1224 | 'author.key.label 1225 | if$ 1226 | } 1227 | if$ 1228 | } 1229 | if$ 1230 | 'short.list := 1231 | } 1232 | 1233 | FUNCTION {calc.label} 1234 | { calc.short.authors 1235 | short.list 1236 | "(" 1237 | * 1238 | year duplicate$ empty$ 1239 | short.list key field.or.null = or 1240 | { pop$ "" } 1241 | 'skip$ 1242 | if$ 1243 | * 1244 | 'label := 1245 | } 1246 | 1247 | INTEGERS { seq.num } 1248 | 1249 | FUNCTION {init.seq} 1250 | { #0 'seq.num :=} 1251 | 1252 | EXECUTE {init.seq} 1253 | 1254 | FUNCTION {int.to.fix} 1255 | { "000000000" swap$ int.to.str$ * 1256 | #-1 #10 substring$ 1257 | } 1258 | 1259 | 1260 | FUNCTION {presort} 1261 | { calc.label 1262 | label sortify 1263 | " " 1264 | * 1265 | seq.num #1 + 'seq.num := 1266 | seq.num int.to.fix 1267 | 'sort.label := 1268 | sort.label * 1269 | #1 entry.max$ substring$ 1270 | 'sort.key$ := 1271 | } 1272 | 1273 | ITERATE {presort} 1274 | 1275 | 1276 | STRINGS { longest.label last.label next.extra } 1277 | 1278 | INTEGERS { longest.label.width last.extra.num number.label } 1279 | 1280 | FUNCTION {initialize.longest.label} 1281 | { "" 'longest.label := 1282 | #0 int.to.chr$ 'last.label := 1283 | "" 'next.extra := 1284 | #0 'longest.label.width := 1285 | #0 'last.extra.num := 1286 | #0 'number.label := 1287 | } 1288 | 1289 | FUNCTION {forward.pass} 1290 | { last.label label = 1291 | { last.extra.num #1 + 'last.extra.num := 1292 | last.extra.num int.to.chr$ 'extra.label := 1293 | } 1294 | { "a" chr.to.int$ 'last.extra.num := 1295 | "" 'extra.label := 1296 | label 'last.label := 1297 | } 1298 | if$ 1299 | number.label #1 + 'number.label := 1300 | } 1301 | 1302 | FUNCTION {reverse.pass} 1303 | { next.extra "b" = 1304 | { "a" 'extra.label := } 1305 | 'skip$ 1306 | if$ 1307 | extra.label 'next.extra := 1308 | extra.label 1309 | duplicate$ empty$ 1310 | 'skip$ 1311 | { "{\natexlab{" swap$ * "}}" * } 1312 | if$ 1313 | 'extra.label := 1314 | label extra.label * 'label := 1315 | } 1316 | 1317 | EXECUTE {initialize.longest.label} 1318 | 1319 | ITERATE {forward.pass} 1320 | 1321 | REVERSE {reverse.pass} 1322 | 1323 | FUNCTION {begin.bib} 1324 | { "\begin{thebibliography}{-------}" 1325 | write$ newline$ 1326 | "\providecommand{\natexlab}[1]{#1}" 1327 | write$ newline$ 1328 | } 1329 | 1330 | EXECUTE {begin.bib} 1331 | 1332 | EXECUTE {init.state.consts} 1333 | 1334 | ITERATE {call.type$} 1335 | 1336 | FUNCTION {end.bib} 1337 | { newline$ 1338 | "\end{thebibliography}" write$ newline$ 1339 | } 1340 | 1341 | EXECUTE {end.bib} 1342 | 1343 | 1344 | -------------------------------------------------------------------------------- /packages.bib: -------------------------------------------------------------------------------- 1 | @Manual{R-base, 2 | title = {R: A Language and Environment for Statistical Computing}, 3 | author = {{R Core Team}}, 4 | organization = {R Foundation for Statistical Computing}, 5 | address = {Vienna, Austria}, 6 | year = {2021}, 7 | url = {https://www.R-project.org/}, 8 | } 9 | 10 | @Manual{R-bookdown, 11 | title = {bookdown: Authoring Books and Technical Documents with R Markdown}, 12 | author = {Yihui Xie}, 13 | year = {2020}, 14 | note = {R package version 0.21}, 15 | url = {https://github.com/rstudio/bookdown}, 16 | } 17 | 18 | @Manual{R-gert, 19 | title = {gert: Simple Git Client for R}, 20 | author = {Jeroen Ooms}, 21 | year = {2021}, 22 | note = {https://docs.ropensci.org/gert/ (website), 23 | https://github.com/r-lib/gert (devel), https://libgit2.org 24 | (upstream)}, 25 | } 26 | 27 | @Manual{R-here, 28 | title = {here: A Simpler Way to Find Your Files}, 29 | author = {Kirill Müller}, 30 | year = {2020}, 31 | note = {R package version 1.0.1}, 32 | url = {https://CRAN.R-project.org/package=here}, 33 | } 34 | 35 | @Manual{R-knitr, 36 | title = {knitr: A General-Purpose Package for Dynamic Report Generation in R}, 37 | author = {Yihui Xie}, 38 | year = {2021}, 39 | note = {R package version 1.33}, 40 | url = {https://yihui.org/knitr/}, 41 | } 42 | 43 | @Manual{R-lavaan, 44 | title = {lavaan: Latent Variable Analysis}, 45 | author = {Yves Rosseel and Terrence D. Jorgensen and Nicholas Rockwood}, 46 | year = {2021}, 47 | note = {R package version 0.6-8}, 48 | url = {https://lavaan.ugent.be}, 49 | } 50 | 51 | @Manual{R-renv, 52 | title = {renv: Project Environments}, 53 | author = {Kevin Ushey}, 54 | year = {2021}, 55 | note = {R package version 0.13.2}, 56 | url = {https://rstudio.github.io/renv/}, 57 | } 58 | 59 | @Manual{R-repro, 60 | title = {repro: Automated Setup of Reproducible Workflows and their Dependencies}, 61 | author = {Aaron Peikert and Andreas M. Brandmaier and Caspar J. {van Lissa}}, 62 | year = {2021}, 63 | note = {R package version 0.1.0}, 64 | url = {https://github.com/aaronpeikert/repro}, 65 | } 66 | 67 | @Manual{R-rticles, 68 | title = {rticles: Article Formats for R Markdown}, 69 | author = {JJ Allaire and Yihui Xie and {R Foundation} and Hadley Wickham and {Journal of Statistical Software} and Ramnath Vaidyanathan and {Association for Computing Machinery} and Carl Boettiger and {Elsevier} and Karl Broman and Kirill Mueller and Bastiaan Quast and Randall Pruim and Ben Marwick and Charlotte Wickham and Oliver Keyes and Miao Yu and Daniel Emaasit and Thierry Onkelinx and Alessandro Gasparini and Marc-Andre Desautels and Dominik Leutnant and {MDPI} and {Taylor and Francis} and Oğuzhan Öğreden and Dalton Hance and Daniel Nüst and Petter Uvesten and Elio Campitelli and John Muschelli and Alex Hayes and Zhian N. Kamvar and Noam Ross and Robrecht Cannoodt and Duncan Luguern and David M. Kaplan and Sebastian Kreutzer and Shixiang Wang and Jay Hesselberth and Christophe Dervieux}, 70 | year = {2021}, 71 | note = {R package version 0.19}, 72 | url = {https://github.com/rstudio/rticles}, 73 | } 74 | 75 | @Manual{R-targets, 76 | title = {targets: Dynamic Function-Oriented Make-Like Declarative Workflows}, 77 | author = {William Michael Landau}, 78 | year = {2021}, 79 | note = {R package version 0.4.2}, 80 | url = {https://CRAN.R-project.org/package=targets}, 81 | } 82 | 83 | @Manual{R-tidyverse, 84 | title = {tidyverse: Easily Install and Load the Tidyverse}, 85 | author = {Hadley Wickham}, 86 | year = {2019}, 87 | note = {http://tidyverse.tidyverse.org, 88 | https://github.com/tidyverse/tidyverse}, 89 | } 90 | 91 | @Book{bookdown2016, 92 | title = {bookdown: Authoring Books and Technical Documents with {R} Markdown}, 93 | author = {Yihui Xie}, 94 | publisher = {Chapman and Hall/CRC}, 95 | address = {Boca Raton, Florida}, 96 | year = {2016}, 97 | note = {ISBN 978-1138700109}, 98 | url = {https://github.com/rstudio/bookdown}, 99 | } 100 | 101 | @Book{knitr2015, 102 | title = {Dynamic Documents with {R} and knitr}, 103 | author = {Yihui Xie}, 104 | publisher = {Chapman and Hall/CRC}, 105 | address = {Boca Raton, Florida}, 106 | year = {2015}, 107 | edition = {2nd}, 108 | note = {ISBN 978-1498716963}, 109 | url = {https://yihui.org/knitr/}, 110 | } 111 | 112 | @InCollection{knitr2014, 113 | booktitle = {Implementing Reproducible Computational Research}, 114 | editor = {Victoria Stodden and Friedrich Leisch and Roger D. Peng}, 115 | title = {knitr: A Comprehensive Tool for Reproducible Research in {R}}, 116 | author = {Yihui Xie}, 117 | publisher = {Chapman and Hall/CRC}, 118 | year = {2014}, 119 | note = {ISBN 978-1466561595}, 120 | url = {http://www.crcpress.com/product/isbn/9781466561595}, 121 | } 122 | 123 | @Article{lavaan2012, 124 | title = {{lavaan}: An {R} Package for Structural Equation Modeling}, 125 | author = {Yves Rosseel}, 126 | journal = {Journal of Statistical Software}, 127 | year = {2012}, 128 | volume = {48}, 129 | number = {2}, 130 | pages = {1--36}, 131 | url = {https://www.jstatsoft.org/v48/i02/}, 132 | } 133 | 134 | @Article{targets2021, 135 | title = {The targets R package: a dynamic Make-like function-oriented pipeline toolkit for reproducibility and high-performance computing}, 136 | author = {William Michael Landau}, 137 | journal = {Journal of Open Source Software}, 138 | year = {2021}, 139 | volume = {6}, 140 | number = {57}, 141 | pages = {2959}, 142 | url = {https://doi.org/10.21105/joss.02959}, 143 | } 144 | 145 | @Article{tidyverse2019, 146 | title = {Welcome to the {tidyverse}}, 147 | author = {Hadley Wickham and Mara Averick and Jennifer Bryan and Winston Chang and Lucy D'Agostino McGowan and Romain François and Garrett Grolemund and Alex Hayes and Lionel Henry and Jim Hester and Max Kuhn and Thomas Lin Pedersen and Evan Miller and Stephan Milton Bache and Kirill Müller and Jeroen Ooms and David Robinson and Dana Paige Seidel and Vitalie Spinu and Kohske Takahashi and Davis Vaughan and Claus Wilke and Kara Woo and Hiroaki Yutani}, 148 | year = {2019}, 149 | journal = {Journal of Open Source Software}, 150 | volume = {4}, 151 | number = {43}, 152 | pages = {1686}, 153 | doi = {10.21105/joss.01686}, 154 | } 155 | 156 | -------------------------------------------------------------------------------- /preregistration.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "Preregistered as Code: Gender differences in Machiavellianism" 3 | date: "7/10/2021" 4 | author: 5 | - name: Aaron Peikert 6 | affil: 1, * 7 | orcid: 0000-0001-7813-818X 8 | - name: Caspar J. Van Lissa 9 | affil: 2, 3 10 | orcid: 0000-0002-0808-5024 11 | - name: Andreas M. Brandmaier 12 | affil: 1, 4 13 | orcid: 0000-0001-8765-6982 14 | affiliation: 15 | - num: 1 16 | address: | 17 | Center for Lifespan Psychology---Max Planck Institute for Human Development 18 | Lentzeallee 94, 14195 Berlin, Germany 19 | - num: 2 20 | address: | 21 | Department of Methodology & Statistics---Utrecht University faculty of Social and Behavioral Sciences, Utrecht, Netherlands 22 | - num: 3 23 | address: | 24 | Open Science Community Utrecht, Utrecht, Netherlands 25 | - num: 4 26 | address: | 27 | Max Planck UCL Centre for Computational Psychiatry and Ageing Research 28 | Berlin, Germany and London, UK 29 | # firstnote to eighthnote 30 | correspondence: | 31 | peikert@mpib-berlin.mpg.de 32 | journal: psych 33 | type: tutorial 34 | status: submit 35 | bibliography: preregistration.bib 36 | abstract: | 37 | We test for group differences in machiavellianism between self-identified males and females in the MACH-IV in a well powered preregistered study. 38 | keywords: | 39 | preregistration as code, power simulation, machiavellianism, gender 40 | output: rticles::mdpi_article 41 | header-includes: 42 | - \def\baselinestretch{0.98} 43 | - \usepackage{draftwatermark} 44 | --- 45 | 46 | \setlength{\bibsep}{0cm} 47 | \titlespacing{\section}{.1cm}{.1cm}{.1cm} 48 | \SetWatermarkText{PAC} 49 | 50 | ```{r setup, include=FALSE} 51 | library(tidyverse) 52 | library(report) 53 | source(here::here("R", "simulation_funs.R")) 54 | ``` 55 | 56 | 57 | # Theoretical Background 58 | 59 | Machiavellianism describes a personality dimension characterized by a cynical disregard of morals in the pursuit of one's own interest, e.g. through manipulation [@christie1970]. 60 | There is extensive literature reporting differences in the dark triad (narcissism, machiavellianism, and psychopathy) between self-identified males and females [@muris2017] but only few studies focus solely on machiavellianism. 61 | We aim to replicate the finding that males tend to have higher machiavellianism scores [@muris2017]. 62 | 63 | This research question serves as a testbed for preregistration as code (PAC) to examine if PAC is feasible under realistic conditions. 64 | In the PAC paradigm, all analysis code is written before real data are gathered or accessed the first time. 65 | 66 | ```{r, echo=FALSE} 67 | simulation_results <- 68 | readr::read_csv(here::here("data", "simulation_results.csv"), col_types = "ddddddd") 69 | ``` 70 | 71 | 72 | # Method 73 | 74 | We report how we determined our sample size, all data exclusions (if any), all manipulations, and all measures in the study [cf. @simmons2012]. We use data available from [openpsychometrics.org](https://openpsychometrics.org/_rawdata/) from the online version of the MACH-IV[@christie1970] and included participants that have responded to at least one machiavellianism item and reported their gender as either "male" or "female". 75 | 76 | 77 | 78 | We conduct a Student's t-test [@studentProbableErrorMean1908] with Welch's correction [@welchGeneralizationStudentProblem1947] of the average of machiavellianism items between the binary-coded gender groups. 79 | If the skew of this average is greater than 1.0 we conduct a supposedly more robust Mann--Whitney--Wilcoxon test [@Wilcoxon1945] instead. 80 | 81 | ```{r, echo=FALSE} 82 | choosen_power <- .8 83 | choosen_d <- .2 84 | minn <- 85 | filter(filter(simulation_results, d == choosen_d, power > choosen_power), 86 | n == min(n))$n 87 | ``` 88 | 89 | A simulation we conducted indicated that with a sample size of 90 | `r minn` for an alpha of .05 (two-sided) we achieve at least `r choosen_power*100`% power assuming a standardized effect size of d=`r choosen_d`. 91 | 92 | 93 | 94 | # Results 95 | 96 | ```{r, echo=FALSE, results='asis', warning=FALSE, message=FALSE} 97 | real_data <- here::here("data", "data.csv") 98 | simulated <- !fs::file_exists(real_data) 99 | if(simulated){ 100 | cat("\\textcolor{red}{The results are based on simulated data and must not be 101 | interpreted. They only serve to illustrate the result of the preregistered 102 | code.}") 103 | set.seed(1234) 104 | mach <- simulate_data(900, 8, 0.3, 10) 105 | } else { 106 | mach <- readr::read_delim(real_data, delim = "\t", na = c("", "NA", "NULL")) 107 | # only keep MACH items + gender 108 | mach <- dplyr::select(mach, dplyr::matches("^Q\\d+A$"), gender) 109 | # code gender according to codebook (3 would be other) 110 | mach <- 111 | dplyr::mutate(mach, gender = factor( 112 | gender, 113 | levels = 1:2, 114 | labels = c("male", "female") 115 | )) 116 | # some items are reversed, see https://core.ac.uk/download/pdf/38810542.pdf 117 | reversed_nr <- c(1, 15, 2, 12, 4, 11, 14, 19) 118 | reversed <- stringr::str_c("Q", reversed_nr, "A") 119 | mach <- dplyr::mutate(mach, dplyr::across(one_of(reversed), ~ 6 - .x)) 120 | } 121 | ``` 122 | 123 | 124 | 125 | ```{r, echo=FALSE, results='asis'} 126 | report_analysis(planned_analysis(mach)) 127 | ``` 128 | 129 | 130 | 131 | # Discussion 132 | 133 | This document only serves to illustrate Preregistration as Code. 134 | We, therefore, do not discuss the results. 135 | After we have acquired the data, we realized that we had to change the code for reading the data, including recoding gender, missing values and reversed items (see commit [6556a93](https://github.com/aaronpeikert/repro-tutorial/commit/6556a9395fcdd600b5b0c5358f92a2c6635ae360) and commit [9f7ab21](https://github.com/aaronpeikert/repro-tutorial/commit/9f7ab212dfaf84a0398752a4b80cf14c71000d00)). 136 | We do not believe that these changes influence the results substantively. 137 | 138 | 139 | \newpage 140 | # References 141 | -------------------------------------------------------------------------------- /preregistration.bib: -------------------------------------------------------------------------------- 1 | 2 | @article{muris2017, 3 | title = {The Malevolent Side of Human Nature}, 4 | author = {{Muris}, {Peter} and {Merckelbach}, {Harald} and {Otgaar}, {Henry} and {Meijer}, {Ewout}}, 5 | year = {2017}, 6 | month = {03}, 7 | date = {2017-03}, 8 | journal = {Perspectives on Psychological Science}, 9 | pages = {183--204}, 10 | volume = {12}, 11 | number = {2}, 12 | doi = {10.1177/1745691616666070}, 13 | url = {http://dx.doi.org/10.1177/1745691616666070}, 14 | langid = {en} 15 | } 16 | 17 | @article{simmons2012, 18 | title = {A 21 Word Solution}, 19 | author = {{Simmons}, {Joseph P.} and {Nelson}, {Leif D.} and {Simonsohn}, {Uri}}, 20 | year = {2012}, 21 | date = {2012}, 22 | journal = {SSRN Electronic Journal}, 23 | doi = {10.2139/ssrn.2160588}, 24 | url = {http://dx.doi.org/10.2139/ssrn.2160588}, 25 | langid = {en} 26 | } 27 | 28 | @book{christie1970, 29 | title = {Studies in Machiavellianism}, 30 | author = {{Christie}, {R.} and {Geis}, {F. L.}}, 31 | year = {1970}, 32 | publisher = {Academic Press}, 33 | address = {New York} 34 | } 35 | 36 | @article{studentProbableErrorMean1908, 37 | title = {The {{Probable Error}} of a {{Mean}}}, 38 | author = {{Student}}, 39 | date = {1908-03}, 40 | journaltitle = {Biometrika}, 41 | shortjournal = {Biometrika}, 42 | volume = {6}, 43 | pages = {1}, 44 | issn = {00063444}, 45 | doi = {10.2307/2331554}, 46 | eprint = {2331554}, 47 | eprinttype = {jstor}, 48 | number = {1} 49 | } 50 | 51 | @article{welchGeneralizationStudentProblem1947, 52 | title = {The {{Generalization}} of ‘{{Student}}'s’ {{Problem}} When {{Several Different Population Varlances}} Are {{Involved}}}, 53 | author = {Welch, B. L.}, 54 | date = {1947}, 55 | journaltitle = {Biometrika}, 56 | shortjournal = {Biometrika}, 57 | volume = {34}, 58 | pages = {28--35}, 59 | issn = {0006-3444, 1464-3510}, 60 | doi = {10.1093/biomet/34.1-2.28}, 61 | url = {https://academic.oup.com/biomet/article-lookup/doi/10.1093/biomet/34.1-2.28}, 62 | urldate = {2021-07-05}, 63 | langid = {english}, 64 | number = {1-2} 65 | } 66 | @article{Wilcoxon1945, 67 | doi = {10.2307/3001968}, 68 | url = {https://doi.org/10.2307/3001968}, 69 | year = {1945}, 70 | month = dec, 71 | publisher = {{JSTOR}}, 72 | volume = {1}, 73 | number = {6}, 74 | pages = {80}, 75 | author = {Frank Wilcoxon}, 76 | title = {Individual Comparisons by Ranking Methods}, 77 | journal = {Biometrics Bulletin} 78 | } 79 | -------------------------------------------------------------------------------- /references.bib: -------------------------------------------------------------------------------- 1 | @article{Peikert2019, 2 | title = {A Reproducible Data Analysis Workflow with {{R Markdown, Git, Make, and Docker}}}, 3 | author = {Peikert, Aaron and Brandmaier, Andreas M.}, 4 | year = {2021}, 5 | journal = {Quantitative and Computational Methods in Behavioral Sciences}, 6 | volume = {1}, 7 | pages = {e3763}, 8 | doi = {10.5964/qcmb.3763} 9 | } 10 | 11 | @book{popperLogicScientificDiscovery2002, 12 | title = {The Logic of Scientific Discovery}, 13 | author = {Popper, Karl R}, 14 | year = {2002}, 15 | publisher = {{Routledge}}, 16 | address = {{London}} 17 | } 18 | 19 | @article{obels2020, 20 | title = {Analysis of Open Data and Computational Reproducibility in Registered Reports in Psychology}, 21 | author = {Obels, Pepijn and Lakens, Daniel and Coles, Nicholas A and Gottfried, Jaroslav and Green, Seth A}, 22 | year = {2020}, 23 | journal = {Advances in Methods and Practices in Psychological Science}, 24 | volume = {3}, 25 | number = {2}, 26 | pages = {229--237}, 27 | publisher = {{SAGE Publications Sage CA: Los Angeles, CA}} 28 | } 29 | 30 | @article{NosekRevolution2018, 31 | title = {The Preregistration Revolution}, 32 | author = {Nosek, Brian A. and Ebersole, Charles R. and DeHaven, Alexander C. and Mellor, David T.}, 33 | year = {2018}, 34 | journal = {Proceedings of the National Academy of Sciences}, 35 | volume = {115}, 36 | number = {11}, 37 | pages = {2600--2606}, 38 | doi = {10.1073/pnas.1708274114} 39 | } 40 | 41 | @article{hardwicke2018, 42 | title = {Data Availability, Reusability, and Analytic Reproducibility: Evaluating the Impact of a Mandatory Open Data Policy at the Journal {{Cognition}}}, 43 | author = {Hardwicke, Tom E. and Mathur, Maya B. and MacDonald, Kyle and Nilsonne, Gustav and Banks, George C. and Kidwell, Mallory C. and Hofelich Mohr, Alicia and Clayton, Elizabeth and Yoon, Erica J. and Henry Tessler, Michael and Lenne, Richie L. and Altman, Sara and Long, Bria and Frank, Michael C.}, 44 | year = {2018}, 45 | journal = {Royal Society Open Science}, 46 | volume = {5}, 47 | number = {8}, 48 | eprint = {https://royalsocietypublishing.org/doi/pdf/10.1098/rsos.180448}, 49 | pages = {180448}, 50 | doi = {10.1098/rsos.180448} 51 | } 52 | 53 | @article{vuorreCuratingResearchAssets2018, 54 | title = {Curating {{Research Assets}}: A {{Tutorial}} on the {{Git Version Control System}}}, 55 | author = {Vuorre, Matti and Curley, James P.}, 56 | year = {2018}, 57 | journal = {Advances in Methods and Practices in Psychological Science}, 58 | volume = {1}, 59 | number = {2}, 60 | pages = {219--236}, 61 | doi = {10.1177/2515245918754826} 62 | } 63 | 64 | @article{bryanExcuseMeYou2018, 65 | title = {Excuse {{Me}}, {{Do You Have}} a {{Moment}} to {{Talk About Version Control}}?}, 66 | author = {Bryan, Jennifer}, 67 | year = {2018}, 68 | month = jan, 69 | journal = {The American Statistician}, 70 | volume = {72}, 71 | number = {1}, 72 | pages = {20--27}, 73 | doi = {10.1080/00031305.2017.1399928} 74 | } 75 | 76 | @article{nuijtenPrevalenceStatisticalReporting2016, 77 | title = {The Prevalence of Statistical Reporting Errors in Psychology (1985\textendash 2013)}, 78 | author = {Nuijten, Mich{\`e}le B. and Hartgerink, Chris H. J. and {van Assen}, Marcel A. L. M. and Epskamp, Sacha and Wicherts, Jelte M.}, 79 | year = {2016}, 80 | journal = {Behavior Research Methods}, 81 | volume = {48}, 82 | number = {4}, 83 | pages = {1205--1226}, 84 | doi = {10.3758/s13428-015-0664-2} 85 | } 86 | 87 | @book{knuthCWEBSystemStructured, 88 | title = {The {{CWEB System}} of {{Structured Documentation}}}, 89 | author = {Knuth, Donald E. and Levy, Silvio}, 90 | publisher = {Addison-Wesley Longman}, 91 | year = {1994} 92 | } 93 | 94 | @book{lamportLATEXDocumentPreparation1994, 95 | title = {{{LATEX}}: A Document Preparation System: User's Guide and Reference Manual}, 96 | author = {Lamport, Leslie}, 97 | year = {1994}, 98 | edition = {2nd}, 99 | publisher = {{Addison-Wesley}}, 100 | address = {{Reading, MA}}, 101 | isbn = {978-0-201-52983-8} 102 | } 103 | 104 | @manual{revealjs, 105 | type = {Manual}, 106 | title = {Revealjs: R Markdown Format for 'reveal.{{Js}}' Presentations}, 107 | author = {El Hattab, Hakim and Allaire, JJ}, 108 | year = {2017} 109 | } 110 | 111 | @manual{vitae, 112 | type = {Manual}, 113 | title = {Vitae: Curriculum Vitae for r Markdown}, 114 | author = {{O'Hara-Wild}, Mitchell and Hyndman, Rob}, 115 | year = {2021} 116 | } 117 | 118 | @article{boettigerIntroductionRockerDocker2017, 119 | title = {An Introduction to Rocker: Docker Containers for {{R}}}, 120 | shorttitle = {An {{Introduction}} to {{Rocker}}}, 121 | author = {Boettiger, Carl and Eddelbuettel, Dirk}, 122 | year = {2017}, 123 | journal = {The R Journal}, 124 | volume = {9}, 125 | number = {2}, 126 | pages = {527}, 127 | issn = {2073-4859}, 128 | doi = {10.32614/RJ-2017-065}, 129 | langid = {english} 130 | } 131 | 132 | @article{tidyverse, 133 | title = {Welcome to the {{tidyverse}}}, 134 | author = {Wickham, Hadley and Averick, Mara and Bryan, Jennifer and Chang, Winston and McGowan, Lucy D'Agostino and Fran{\c c}ois, Romain and Grolemund, Garrett and Hayes, Alex and Henry, Lionel and Hester, Jim and Kuhn, Max and Pedersen, Thomas Lin and Miller, Evan and Bache, Stephan Milton and M{\"u}ller, Kirill and Ooms, Jeroen and Robinson, David and Seidel, Dana Paige and Spinu, Vitalie and Takahashi, Kohske and Vaughan, Davis and Wilke, Claus and Woo, Kara and Yutani, Hiroaki}, 135 | year = {2019}, 136 | journal = {Journal of Open Source Software}, 137 | volume = {4}, 138 | number = {43}, 139 | pages = {1686}, 140 | doi = {10.21105/joss.01686} 141 | } 142 | 143 | @manual{usethis, 144 | type = {Manual}, 145 | title = {Usethis: Automate Package and Project Setup}, 146 | author = {Wickham, Hadley and Bryan, Jennifer}, 147 | year = {2021} 148 | } 149 | 150 | @manual{rstudio, 151 | type = {Manual}, 152 | title = {{{RStudio}}: Integrated Development Environment for r}, 153 | author = {{RStudio Team}}, 154 | year = {2021}, 155 | address = {{Boston, MA}}, 156 | organization = {{RStudio, PBC}} 157 | } 158 | 159 | @manual{papaja, 160 | type = {Manual}, 161 | title = {{{papaja}}: Create {{APA}} Manuscripts with {{R Markdown}}}, 162 | author = {Aust, Frederik and Barth, Marius}, 163 | year = {2020} 164 | } 165 | 166 | @article{report, 167 | title = {Automated Results Reporting as a Practical Tool to Improve Reproducibility and Methodological Best Practices Adoption}, 168 | author = {Makowski, Dominique and {Ben-Shachar}, Mattan S. and Patil, Indrajeet and L{\"u}decke, Daniel}, 169 | year = {2021}, 170 | journal = {CRAN} 171 | } 172 | 173 | @incollection{claerboutElectronicDocumentsGive1992, 174 | title = {Electronic Documents Give Reproducible Research a New Meaning}, 175 | booktitle = {{{SEG Technical Program Expanded Abstracts}} 1992}, 176 | author = {Claerbout, Jon F. and Karrenbach, Martin}, 177 | year = {1992}, 178 | series = {{{SEG Technical Program Expanded Abstracts}}}, 179 | pages = {601--604}, 180 | publisher = {{Society of Exploration Geophysicists}}, 181 | doi = {10.1190/1.1822162} 182 | } 183 | 184 | @book{xieMarkdownCookbook2020, 185 | title = {R Markdown Cookbook}, 186 | author = {Xie, Yihui and Dervieux, Christophe and Riederer, Emily}, 187 | year = {2020}, 188 | series = {The {{R Series}}}, 189 | edition = {First}, 190 | publisher = {{Taylor and Francis, CRC Press}}, 191 | address = {{Boca Raton}}, 192 | isbn = {978-0-367-56383-7 978-0-367-56382-0} 193 | } 194 | 195 | @article{vanlissa2020worcs, 196 | title = {{{WORCS}}: A Workflow for Open Reproducible Code in Science}, 197 | author = {van Lissa, Caspar J. and Brandmaier, Andreas M. and Brinkman, Loek and Lamprecht, Anna-Lena and Peikert, Aaron and Struiksma, Marijn E. and Vreede, Barbara M.I.}, 198 | year = {2021}, 199 | journal = {Data Science}, 200 | volume = {4}, 201 | number = {1}, 202 | pages = {29--49}, 203 | doi = {10.3233/DS-210031} 204 | } 205 | 206 | @article{silverSoftwareSimplified2017, 207 | title = {Software Simplified}, 208 | author = {Silver, Andrew}, 209 | year = {2017}, 210 | journal = {Nature}, 211 | volume = {546}, 212 | number = {7656}, 213 | pages = {173--174} 214 | } 215 | 216 | @article{wiebelsLeveragingContainersReproducible2021, 217 | title = {Leveraging {{Containers}} for {{Reproducible Psychological Research}}}, 218 | author = {Wiebels, Kristina and Moreau, David}, 219 | year = {2021}, 220 | journal = {Advances in Methods and Practices in Psychological Science}, 221 | volume = {4}, 222 | number = {2}, 223 | pages = {25152459211017853}, 224 | publisher = {{SAGE Publications Inc}}, 225 | doi = {10.1177/25152459211017853} 226 | } 227 | 228 | @book{parasuramanAutomationHumanPerformance2018, 229 | title = {Automation and {{Human Performance}}: Theory and {{Applications}}}, 230 | author = {Parasuraman, Raja and Mouloua, Mustapha}, 231 | year = {2019}, 232 | edition = {First}, 233 | publisher = {{CRC Press}}, 234 | address = {{Boca Raton, FL}}, 235 | isbn = {978-1-351-46504-5}, 236 | langid = {english}, 237 | } 238 | 239 | @book{xieMarkdownDefinitiveGuide2019, 240 | title = {R {{Markdown}}: The Definitive Guide}, 241 | shorttitle = {R {{Markdown}}}, 242 | author = {Xie, Yihui and Allaire, J. J. and Grolemund, Garrett}, 243 | year = {2019}, 244 | publisher = {{CRC Press}}, 245 | address = {{Boca Raton, FL}}, 246 | isbn = {978-0-429-78296-1} 247 | } 248 | 249 | @book{apa7, 250 | title = {Publication Manual of the {{American}} Psychological Association}, 251 | editor = {American Psychological Association}, 252 | year = {2019}, 253 | edition = {7th}, 254 | publisher = {{American Psychological Association}}, 255 | address = {{Washington, DC}} 256 | } 257 | 258 | @article{silberzahnManyAnalystsOne2018, 259 | title = {Many {{Analysts}}, {{One Data Set}}: Making {{Transparent How Variations}} in {{Analytic Choices Affect Results}}}, 260 | author = {Silberzahn, R. and Uhlmann, E. L. and Martin, D. P. and Anselmi, P. and Aust, F. and Awtrey, E. and Bahnik, S. and Bai, F. and Bannard, C. and Bonnier, E. and Carlsson, R. and Cheung, F. and Christensen, G. and Clay, R. and Craig, M. A. and Dalla Rosa, A. and Dam, L. and Evans, M. H. and Flores Cervantes, I. and Fong, N. and {Gamez-Djokic}, M. and Glenz, A. and {Gordon-McKeon}, S. and Heaton, T. J. and Hederos, K. and Heene, M. and Hofelich Mohr, A. J. and H{\"o}gden, F. and Hui, K. and Johannesson, M. and Kalodimos, J. and Kaszubowski, E. and Kennedy, D. M. and Lei, R. and Lindsay, T. A. and Liverani, S. and Madan, C. R. and Molden, D. and Molleman, E. and Morey, R. D. and Mulder, L. B. and Nijstad, B. R. and Pope, N. G. and Pope, B. and Prenoveau, J. M. and Rink, F. and Robusto, E. and Roderique, H. and Sandberg, A. and Schl{\"u}ter, E. and Sch{\"o}nbrodt, F. D. and Sherman, M. F. and Sommer, S. A. and Sotak, K. and Spain, S. and Sp{\"o}rlein, C. and Stafford, T. and Stefanutti, L. and Tauber, S. and Ullrich, J. and Vianello, M. and Wagenmakers, E.-J. and Witkowiak, M. and Yoon, S. and Nosek, B. A.}, 261 | year = {2018}, 262 | month = sep, 263 | journal = {Advances in Methods and Practices in Psychological Science}, 264 | volume = {1}, 265 | number = {3}, 266 | pages = {337--356}, 267 | issn = {2515-2459}, 268 | doi = {10.1177/2515245917747646} 269 | } 270 | 271 | @article{bowmanOSFPreregTemplate2020, 272 | title = {{{OSF Prereg Template}}}, 273 | author = {Bowman, Sara and DeHaven, Alexander and Errington, Tim and Hardwicke, Tom E. and Mellor, David Thomas and Nosek, Brian A. and Soderberg, Courtney K.}, 274 | year = {2020}, 275 | doi = {10.31222/osf.io/epgjd} 276 | } 277 | 278 | @article{bakkerEnsuringQualitySpecificity2020, 279 | title = {Ensuring the Quality and Specificity of Preregistrations}, 280 | author = {Bakker, Marjan and Veldkamp, Coosje L. S. and {van Assen}, Marcel A. L. M. and Crompvoets, Elise A. V. and Ong, How Hwee and Nosek, Brian A. and Soderberg, Courtney K. and Mellor, David and Wicherts, Jelte M.}, 281 | year = {2020}, 282 | journal = {PLOS Biology}, 283 | volume = {18}, 284 | number = {12}, 285 | pages = {e3000937}, 286 | doi = {10.1371/journal.pbio.3000937} 287 | } 288 | 289 | @article{bakkerRecommendationsPreregistrationsInternal2020, 290 | title = {Recommendations in Pre-Registrations and Internal Review Board Proposals Promote Formal Power Analyses but Do Not Increase Sample Size}, 291 | author = {Bakker, Marjan and Veldkamp, Coosje L. S. and {van den Akker}, Olmo R. and {van Assen}, Marcel A. L. M. and Crompvoets, Elise and Ong, How Hwee and Wicherts, Jelte M.}, 292 | year = {2020}, 293 | month = jul, 294 | journal = {PLOS ONE}, 295 | volume = {15}, 296 | number = {7}, 297 | pages = {e0236079}, 298 | doi = {10.1371/journal.pone.0236079} 299 | } 300 | 301 | @article{steegenMeasuringCrowdAgain2014, 302 | title = {Measuring the Crowd within Again: A Pre-Registered Replication Study}, 303 | author = {Steegen, Sara and Dewitte, Laura and Tuerlinckx, Francis and Vanpaemel, Wolf}, 304 | year = {2014}, 305 | journal = {Frontiers in Psychology}, 306 | volume = {5}, 307 | doi = {10.3389/fpsyg.2014.00786} 308 | } 309 | 310 | @article{morrisUsingSimulationStudies2019, 311 | title = {Using Simulation Studies to Evaluate Statistical Methods}, 312 | author = {Morris, Tim P. and White, Ian R. and Crowther, Michael J.}, 313 | year = {2019}, 314 | journal = {Statistics in Medicine}, 315 | volume = {38}, 316 | number = {11}, 317 | pages = {2074--2102}, 318 | doi = {10.1002/sim.8086} 319 | } 320 | 321 | @article{paxtonMonteCarloExperiments2001, 322 | title = {Monte {{Carlo Experiments}}: Design and {{Implementation}}}, 323 | shorttitle = {Monte {{Carlo Experiments}}}, 324 | author = {Paxton, Pamela and Curran, Patrick J. and Bollen, Kenneth A. and Kirby, Jim and Chen, Feinian}, 325 | year = {2001}, 326 | month = apr, 327 | journal = {Structural Equation Modeling: A Multidisciplinary Journal}, 328 | volume = {8}, 329 | number = {2}, 330 | pages = {287--312}, 331 | doi = {10.1207/S15328007SEM0802_7} 332 | } 333 | 334 | @article{skrondalDesignAnalysisMonte2000, 335 | title = {Design and {{Analysis}} of {{Monte Carlo Experiments}}: Attacking the {{Conventional Wisdom}}}, 336 | shorttitle = {Design and {{Analysis}} of {{Monte Carlo Experiments}}}, 337 | author = {Skrondal, Anders}, 338 | year = {2000}, 339 | journal = {Multivariate Behavioral Research}, 340 | volume = {35}, 341 | number = {2}, 342 | pages = {137--167}, 343 | doi = {10.1207/S15327906MBR3502_1} 344 | } 345 | 346 | @article{simstudy, 347 | title = {Simstudy: Illuminating Research Methods through Data Generation}, 348 | shorttitle = {Simstudy}, 349 | author = {Goldfeld, Keith and {Wujciak-Jens}, Jacob}, 350 | year = {2020}, 351 | journal = {Journal of Open Source Software}, 352 | volume = {5}, 353 | number = {54}, 354 | pages = {2763}, 355 | doi = {10.21105/joss.02763} 356 | } 357 | 358 | @article{goldfeldSimstudyIlluminatingResearch2020, 359 | title = {Simstudy: Illuminating Research Methods through Data Generation}, 360 | shorttitle = {Simstudy}, 361 | author = {Goldfeld, Keith and {Wujciak-Jens}, Jacob}, 362 | year = {2020}, 363 | journal = {Journal of Open Source Software}, 364 | volume = {5}, 365 | number = {54}, 366 | pages = {2763}, 367 | doi = {10.21105/joss.02763} 368 | } 369 | 370 | @manual{psych, 371 | type = {Manual}, 372 | title = {Psych: Procedures for Psychological, Psychometric, and Personality Research}, 373 | author = {Revelle, William}, 374 | year = {2021}, 375 | address = {{Evanston, Ill}}, 376 | organization = {{Northwestern University}} 377 | } 378 | 379 | @article{szollosi_is_2020, 380 | title = {Is {{Preregistration Worthwhile}}?}, 381 | author = {Szollosi, Aba and Kellen, David and Navarro, Danielle J. and Shiffrin, Richard and {van Rooij}, Iris and Van Zandt, Trisha and Donkin, Chris}, 382 | year = {2020}, 383 | journal = {Trends in Cognitive Sciences}, 384 | volume = {24}, 385 | number = {2}, 386 | pages = {94--95}, 387 | doi = {10.1016/j.tics.2019.11.009} 388 | } 389 | 390 | @article{nosekPreregistrationHardWorthwhile2019, 391 | title = {Preregistration {{Is Hard}}, {{And Worthwhile}}}, 392 | author = {Nosek, Brian A. and Beck, Emorie D. and Campbell, Lorne and Flake, Jessica K. and Hardwicke, Tom E. and Mellor, David T. and {van 't Veer}, Anna E. and Vazire, Simine}, 393 | year = {2019}, 394 | journal = {Trends in Cognitive Sciences}, 395 | volume = {23}, 396 | number = {10}, 397 | pages = {815--818}, 398 | doi = {10.1016/j.tics.2019.07.009} 399 | } 400 | 401 | @article{meehlTheoreticalRisksTabular1978, 402 | title = {Theoretical Risks and Tabular Asterisks: Sir {{Karl}}, {{Sir Ronald}}, and the Slow Progress of Soft Psychology}, 403 | shorttitle = {Theoretical Risks and Tabular Asterisks}, 404 | author = {Meehl, Paul E.}, 405 | year = {1978}, 406 | journal = {Journal of Consulting and Clinical Psychology}, 407 | volume = {46}, 408 | number = {4}, 409 | pages = {806--834}, 410 | doi = {10.1037/0022-006X.46.4.806} 411 | } 412 | 413 | @incollection{brandmaier22mlsem, 414 | title = {Machine-Learning Approaches to Structural Equation Modeling}, 415 | booktitle = {Handbook of Structural Equation Modeling}, 416 | author = {Brandmaier, A. M. and Jacobucci, R.C.}, 417 | editor = {Hoyle, R. H.}, 418 | year = {in press}, 419 | edition = {2nd rev.}, 420 | publisher = {{Guilford Press}} 421 | } 422 | 423 | @inproceedings{axelrodAdvancingArtSimulation1997, 424 | title = {Advancing the {{Art}} of {{Simulation}} in the {{Social Sciences}}}, 425 | booktitle = {Simulating {{Social Phenomena}}}, 426 | author = {Axelrod, Robert}, 427 | editor = {Conte, Rosaria and Hegselmann, Rainer and Terna, Pietro}, 428 | year = {1997}, 429 | series = {Lecture {{Notes}} in {{Economics}} and {{Mathematical Systems}}}, 430 | pages = {21--40}, 431 | publisher = {{Springer}}, 432 | address = {{Berlin}}, 433 | doi = {10.1007/978-3-662-03366-1_2}, 434 | isbn = {978-3-662-03366-1} 435 | } 436 | 437 | @article{braiekTestingMachineLearning2020, 438 | title = {On Testing Machine Learning Programs}, 439 | author = {Braiek, Houssem Ben and Khomh, Foutse}, 440 | year = {2020}, 441 | journal = {Journal of Systems and Software}, 442 | volume = {164}, 443 | pages = {110542}, 444 | doi = {10.1016/j.jss.2020.110542} 445 | } 446 | 447 | @article{nosekRegisteredReports2014, 448 | title = {Registered {{Reports}}}, 449 | author = {Nosek, Brian A. and Lakens, Dani{\"e}l}, 450 | year = {2014}, 451 | journal = {Social Psychology}, 452 | volume = {45}, 453 | number = {3}, 454 | pages = {137--141}, 455 | doi = {10.1027/1864-9335/a000192} 456 | } 457 | 458 | @article{chambersWhatNextRegistered2019, 459 | title = {What's next for {{Registered Reports}}?}, 460 | author = {Chambers, Chris}, 461 | year = {2019}, 462 | month = sep, 463 | journal = {Nature}, 464 | volume = {573}, 465 | number = {7773}, 466 | pages = {187--189}, 467 | doi = {10.1038/d41586-019-02674-6}, 468 | langid = {english} 469 | } 470 | 471 | @article{brandmaier2018precision, 472 | title = {Precision, Reliability, and Effect Size of Slope Variance in Latent Growth Curve Models: Implications for Statistical Power Analysis}, 473 | author = {Brandmaier, Andreas M. and {von Oertzen}, Timo and Ghisletta, Paolo and Lindenberger, Ulman and Hertzog, Christopher}, 474 | year = {2018}, 475 | journal = {Frontiers in Psychology}, 476 | volume = {9}, 477 | pages = {294}, 478 | doi = {10.3389/fpsyg.2018.00294} 479 | } 480 | 481 | @article{harrisonIntroductionMonteCarlo2010, 482 | title = {Introduction to {{Monte Carlo Simulation}}}, 483 | author = {Harrison, Robert L.}, 484 | year = {2010}, 485 | journal = {AIP Conference Proceedings}, 486 | volume = {1204}, 487 | number = {1}, 488 | pages = {17--21}, 489 | doi = {10.1063/1.3295638} 490 | } 491 | 492 | @inproceedings{raychaudhuriIntroductionMonteCarlo2008, 493 | title = {Introduction to {{Monte Carlo}} Simulation}, 494 | booktitle = {2008 {{Winter Simulation Conference}}}, 495 | author = {Raychaudhuri, Samik}, 496 | year = {2008}, 497 | month = dec, 498 | pages = {91--100}, 499 | issn = {1558-4305}, 500 | doi = {10.1109/WSC.2008.4736059}, 501 | eventtitle = {2008 {{Winter Simulation Conference}}} 502 | } 503 | 504 | 505 | @article{westonRecommendationsIncreasingTransparency2019, 506 | title = {Recommendations for {{Increasing}} the {{Transparency}} of {{Analysis}} of {{Preexisting Data Sets}}}, 507 | author = {Weston, Sara J. and Ritchie, Stuart J. and Rohrer, Julia M. and Przybylski, Andrew K.}, 508 | year = {2019}, 509 | journal = {Advances in Methods and Practices in Psychological Science}, 510 | volume = {2}, 511 | number = {3}, 512 | pages = {214--227}, 513 | doi = {10.1177/2515245919848684} 514 | } 515 | 516 | 517 | @misc{ICH1998, 518 | title = {E 9 {{Statistical Principles}} for {{Clinical Trials}}}, 519 | author = {{International Council for Harmonisation of Technical Requirements for Registration of Pharmaceuticals for Human Use}}, 520 | year = {1998}, 521 | langid = {english} 522 | } 523 | 524 | @article{thabaneTutorialPilotStudies2010, 525 | title = {A Tutorial on Pilot Studies: The What, Why and How}, 526 | shorttitle = {A Tutorial on Pilot Studies}, 527 | author = {Thabane, Lehana and Ma, Jinhui and Chu, Rong and Cheng, Ji and Ismaila, Afisi and Rios, Lorena P and Robson, Reid and Thabane, Marroon and Giangregorio, Lora and Goldsmith, Charles H}, 528 | year = {2010}, 529 | month = dec, 530 | journal = {BMC Medical Research Methodology}, 531 | volume = {10}, 532 | number = {1}, 533 | pages = {1}, 534 | issn = {1471-2288}, 535 | doi = {10.1186/1471-2288-10-1}, 536 | langid = {english} 537 | } 538 | 539 | @manual{pander, 540 | type = {Manual}, 541 | title = {Pander: An {R} 'pandoc' Writer}, 542 | author = {Dar{\'o}czi, Gergely and Tsegelskyi, Roman}, 543 | year = {2021} 544 | } 545 | 546 | @manual{stargazer, 547 | type = {Manual}, 548 | title = {Stargazer: Well-{{Formatted}} Regression and Summary Statistics Tables}, 549 | author = {Hlavac, Marek}, 550 | year = {2018}, 551 | address = {{Bratislava, Slovakia}}, 552 | organization = {{Central European Labour Studies Institute (CELSI)}} 553 | } 554 | 555 | @manual{apaTables, 556 | type = {Manual}, 557 | title = {{{apaTables}}: Create American Psychological Association ({{APA}}) Style Tables}, 558 | author = {Stanley, David}, 559 | year = {2021} 560 | } 561 | 562 | @article{yuanGuideStatisticalAnalysis2019, 563 | title = {Guide to the Statistical Analysis Plan}, 564 | author = {Yuan, Ian and Topjian, Alexis A. and Kurth, Charles D. and Kirschen, Matthew P. and Ward, Christopher G. and Zhang, Bingqing and Mensinger, Janell L.}, 565 | year = {2019}, 566 | journal = {Pediatric Anesthesia}, 567 | volume = {29}, 568 | number = {3}, 569 | pages = {237--242}, 570 | doi = {10.1111/pan.13576} 571 | } 572 | 573 | @article{fagerlandTtestsNonparametricTests2012, 574 | title = {T-Tests, Non-Parametric Tests, and Large {{Studies}}\textemdash a Paradox of Statistical Practice?}, 575 | author = {Fagerland, Morten W}, 576 | year = {2012}, 577 | journal = {BMC Medical Research Methodology}, 578 | volume = {12}, 579 | pages = {78}, 580 | doi = {10.1186/1471-2288-12-78} 581 | } 582 | 583 | @article{hortonStatisticalMethodsJournal2005, 584 | title = {Statistical {{Methods}} in the {{Journal}}}, 585 | author = {Horton, Nicholas J. and Switzer, Suzanne S.}, 586 | year = {2005}, 587 | journal = {New England Journal of Medicine}, 588 | volume = {353}, 589 | number = {18}, 590 | pages = {1977--1979}, 591 | doi = {10.1056/NEJM200511033531823} 592 | } 593 | 594 | @article{putnickMeasurementInvarianceConventions2016, 595 | title = {Measurement {{Invariance Conventions}} and {{Reporting}}: The {{State}} of the {{Art}} and {{Future Directions}} for {{Psychological Research}}}, 596 | author = {Putnick, Diane L. and Bornstein, Marc H.}, 597 | year = {2016}, 598 | journal = {Developmental review}, 599 | volume = {41}, 600 | eprint = {27942093}, 601 | pages = {71--90}, 602 | doi = {10.1016/j.dr.2016.06.004} 603 | } 604 | 605 | @article{frostCorrectingRegressionDilution2000, 606 | title = {Correcting for {{Regression Dilution Bias}}: Comparison of {{Methods}} for a {{Single Predictor Variable}}}, 607 | shorttitle = {Correcting for {{Regression Dilution Bias}}}, 608 | author = {Frost, Chris and Thompson, Simon G.}, 609 | year = {2000}, 610 | journal = {Journal of the Royal Statistical Society. Series A (Statistics in Society)}, 611 | volume = {163}, 612 | number = {2}, 613 | pages = {173--189}, 614 | publisher = {{[Wiley, Royal Statistical Society]}}, 615 | doi = {10.1111/1467-985x.00164} 616 | } 617 | 618 | 619 | @article{stonehouseRobustnessTestsCombined1998, 620 | title = {Robustness of the t and {{U}} Tests under Combined Assumption Violations}, 621 | author = {Stonehouse, John M. and Forrester, Guy J.}, 622 | year = {1998}, 623 | month = feb, 624 | journal = {Journal of Applied Statistics}, 625 | volume = {25}, 626 | number = {1}, 627 | pages = {63--74}, 628 | publisher = {{Taylor \& Francis}}, 629 | issn = {0266-4763}, 630 | doi = {10.1080/02664769823304} 631 | } 632 | 633 | @article{zimmermanRankTransformationsPower1993, 634 | title = {Rank Transformations and the Power of the {{Student}} t Test and {{Welch}} t' Test for Non-Normal Populations with Unequal Variances.}, 635 | author = {Zimmerman, Donald W. and Zumbo, Bruno D.}, 636 | year = {1993}, 637 | journal = {Canadian Journal of Experimental Psychology/Revue canadienne de psychologie exp\'erimentale}, 638 | volume = {47}, 639 | number = {3}, 640 | pages = {523--539}, 641 | issn = {1878-7290, 1196-1961}, 642 | doi = {10.1037/h0078850}, 643 | langid = {english} 644 | } 645 | 646 | @misc{zenodo, 647 | title = {Zenodo}, 648 | author = {{European Organization For Nuclear Research} and {OpenAIRE}}, 649 | year = {2013}, 650 | publisher = {{CERN}}, 651 | doi = {10.25495/7GXK-RD71}, 652 | langid = {english}, 653 | keywords = {Dataset,FOS: Physical sciences,Publication} 654 | } 655 | 656 | @article{rouderMinimizingMistakesPsychological2019, 657 | title = {Minimizing {{Mistakes}} in {{Psychological Science}}}, 658 | author = {Rouder, Jeffrey N. and Haaf, Julia M. and Snyder, Hope K.}, 659 | year = {2019}, 660 | journal = {Advances in Methods and Practices in Psychological Science}, 661 | volume = {2}, 662 | number = {1}, 663 | pages = {3--11}, 664 | doi = {10.1177/2515245918801915}, 665 | langid = {english} 666 | } 667 | 668 | @article{lakensImprovingTransparencyFalsifiability2021, 669 | title = {Improving {{Transparency}}, {{Falsifiability}}, and {{Rigor}} by {{Making Hypothesis Tests Machine}}-{{Readable}}}, 670 | author = {Lakens, Dani{\"e}l and DeBruine, Lisa M.}, 671 | year = {2021}, 672 | journal = {Advances in Methods and Practices in Psychological Science}, 673 | volume = {4}, 674 | number = {2}, 675 | pages = {2515245920970949}, 676 | doi = {10.1177/2515245920970949} 677 | } 678 | 679 | @article{arslanHowAutomaticallyDocument2019, 680 | title = {How to {{Automatically Document Data With}} the Codebook {{Package}} to {{Facilitate Data Reuse}}}, 681 | author = {Arslan, Ruben C.}, 682 | year = {2019}, 683 | journal = {Advances in Methods and Practices in Psychological Science}, 684 | volume = {2}, 685 | number = {2}, 686 | pages = {169--187}, 687 | issn = {2515-2459}, 688 | doi = {10.1177/2515245919838783} 689 | } 690 | 691 | @article{simonsValueDirectReplication2014, 692 | title = {The {{Value}} of {{Direct Replication}}}, 693 | author = {Simons, Daniel J.}, 694 | year = {2014}, 695 | journal = {Perspectives on Psychological Science}, 696 | volume = {9}, 697 | number = {1}, 698 | pages = {76--80}, 699 | publisher = {{SAGE Publications Inc}}, 700 | doi = {10.1177/1745691613514755} 701 | } 702 | 703 | @article{elliottLivingSystematicReviews2014, 704 | title = {Living {{Systematic Reviews}}: An {{Emerging Opportunity}} to {{Narrow}} the {{Evidence}}-{{Practice Gap}}}, 705 | author = {Elliott, Julian H. and Turner, Tari and Clavisi, Ornella and Thomas, James and Higgins, Julian P. T. and Mavergames, Chris and Gruen, Russell L.}, 706 | year = {2014}, 707 | journal = {PLoS Medicine}, 708 | volume = {11}, 709 | number = {2}, 710 | pages = {e1001603}, 711 | doi = {10.1371/journal.pmed.1001603} 712 | } 713 | 714 | @article{elifesciencespublicationsELifeLaunchesExecutable2020, 715 | title = {{{eLife}} Launches {{Executable Research Articles}} for Publishing Computationally Reproducible Results}, 716 | author = {{eLife Sciences Publications}}, 717 | year = {2020}, 718 | langid = {english}, 719 | organization = {{eLife}}, 720 | url = {https://elifesciences.org/for-the-press/eb096af1/elife-launches-executable-research-articles-for-publishing-computationally-reproducible-results} 721 | } 722 | 723 | @article{rouderWhatWhyHow2016, 724 | title = {The What, Why, and How of Born-Open Data}, 725 | author = {Rouder, Jeffrey N.}, 726 | year = {2016}, 727 | journal = {Behavior Research Methods}, 728 | volume = {48}, 729 | number = {3}, 730 | pages = {1062--1069}, 731 | doi = {10.3758/s13428-015-0630-z} 732 | } 733 | 734 | @article{kekecsRaisingValueResearch2019, 735 | title = {Raising the Value of Research Studies in Psychological Science by Increasing the Credibility of Research Reports: The {{Transparent Psi Project}} - {{Preprint}}}, 736 | shorttitle = {Raising the Value of Research Studies in Psychological Science by Increasing the Credibility of Research Reports}, 737 | author = {Kekecs, Zoltan and Aczel, Balazs and Palfi, Bence and Szaszi, Barnabas and Szecsi, Peter and Zrubka, Mark and Kovacs, Marton and Bakos, Bence E. and Cousineau, Denis and Tressoldi, Patrizio and Grassi, Massimo and Arnold, Dana and Evans, Thomas Rhys and Yamada, Yuki and Miller, Jeremy K. and Liu, Huanxu and Yonemitsu, Fumiya and Dubrov, Dmitrii}, 738 | year = {2020}, 739 | publisher = {{PsyArXiv}}, 740 | doi = {10.31234/osf.io/uwk7y} 741 | } 742 | 743 | @incollection{lanerganSoftwareEngineeringReusable1989, 744 | title = {Software Engineering with Reusable Designs and Code}, 745 | booktitle = {Software Reusability: Vol. 2, Applications and Experience}, 746 | author = {Lanergan, R. G. and Grasso, C. A.}, 747 | year = {1989}, 748 | month = jun, 749 | pages = {187--195}, 750 | publisher = {{Association for Computing Machinery}}, 751 | address = {{New York}}, 752 | isbn = {978-0-201-50018-9} 753 | } 754 | 755 | @inproceedings{al-badareenReusableSoftwareComponents2010, 756 | title = {Reusable Software Components Framework}, 757 | booktitle = {Proceedings of the {{European}} Conference of Systems, and {{European}} Conference of Circuits Technology and Devices, and {{European}} Conference of Communications, and {{European}} Conference on {{Computer}} Science}, 758 | author = {{Al-Badareen}, Anas Bassam and Selamat, Mohd Hasan and Jabar, Marzanah A. and Din, Jamilah and Turaev, Sherzod}, 759 | year = {2010}, 760 | month = nov, 761 | series = {{{ECS}}'10/{{ECCTD}}'10/{{ECCOM}}'10/{{ECCS}}'10}, 762 | pages = {126--130}, 763 | publisher = {{World Scientific and Engineering Academy and Society (WSEAS)}}, 764 | address = {{Stevens Point, WI}}, 765 | isbn = {978-960-474-250-9} 766 | } 767 | 768 | @article{schaffnerFutureScientificJournals1994, 769 | title = {The {{Future}} of {{Scientific Journals}}: Lessons from the {{Past}}}, 770 | author = {Schaffner, Ann C.}, 771 | year = {1994}, 772 | journal = {Information Technology and Libraries}, 773 | volume = {13}, 774 | number = {4}, 775 | pages = {239--47}, 776 | issn = {0730-9295} 777 | } 778 | 779 | @article{fitzgeraldTransformationOpenSource2006, 780 | title = {The {{Transformation}} of {{Open Source Software}}}, 781 | author = {Fitzgerald, Brian}, 782 | year = {2006}, 783 | journal = {MIS Quarterly}, 784 | volume = {30}, 785 | number = {3}, 786 | pages = {587--598}, 787 | doi = {10.2307/25148740} 788 | } 789 | 790 | @article{chaldecottHistoryScientificTechnical1965, 791 | title = {A {{History}} of {{Scientific}} and {{Technical Periodicals}}: The {{Origins}} and {{Development}} of the {{Scientific}} and {{Technological Press}}}, 792 | author = {Chaldecott, J. A.}, 793 | year = {1965}, 794 | journal = {The British Journal for the History of Science}, 795 | volume = {2}, 796 | number = {4}, 797 | pages = {360--361}, 798 | doi = {10.1017/S0007087400002557} 799 | } 800 | 801 | @article{sonnenburgNeedOpenSource2007, 802 | title = {The {{Need}} for {{Open Source Software}} in {{Machine Learning}}}, 803 | author = {Sonnenburg, S\"{o}ren and Braun, Mikio L. and Ong, Cheng Soon and Bengio, Samy and Bottou, Leon and Holmes, Geoffrey and LeCun, Yann and M\"{u}ller, Klaus-Robert and Pereira, Fernando and Rasmussen, Carl Edward and R\"{a}tsch, Gunnar and Sch\"{o}lkopf, Bernhard and Smola, Alexander and Vincent, Pascal and Weston, Jason and Williamson, Robert}, 804 | title = {The Need for Open Source Software in Machine Learning}, 805 | journal = {Journal of Machine Learning Research}, 806 | volume = {8}, 807 | year = {2007}, 808 | number = {81}, 809 | pages = {2443--2466} 810 | } 811 | 812 | @manual{officedown, 813 | type = {Manual}, 814 | title = {Officedown: Enhanced {{'R Markdown'}} Format for 'Word' and '{{PowerPoint}}'}, 815 | author = {Gohel, David and Ross, Noam}, 816 | year = {2021} 817 | } 818 | 819 | @manual{officer, 820 | type = {Manual}, 821 | title = {Officer: Manipulation of Microsoft Word and {{PowerPoint}} Documents}, 822 | author = {Gohel, David}, 823 | year = {2021} 824 | } 825 | 826 | @article{decosterOpportunisticBiasesTheir2015, 827 | title = {Opportunistic Biases: Their Origins, Effects, and an Integrated Solution}, 828 | shorttitle = {Opportunistic Biases}, 829 | author = {DeCoster, Jamie and Sparks, Erin A. and Sparks, Jordan C. and Sparks, Glenn G. and Sparks, Cheri W.}, 830 | year = {2015}, 831 | journal = {American Psychologist}, 832 | volume = {70}, 833 | number = {6}, 834 | pages = {499--514}, 835 | publisher = {{American Psychological Association}}, 836 | doi = {10.1037/a0039191} 837 | } 838 | 839 | @article{wichertsDegreesFreedomPlanning2016, 840 | title = {Degrees of {{Freedom}} in {{Planning}}, {{Running}}, {{Analyzing}}, and {{Reporting Psychological Studies}}: A {{Checklist}} to {{Avoid}} p-{{Hacking}}}, 841 | author = {Wicherts, Jelte M. and Veldkamp, Coosje L. S. and Augusteijn, Hilde E. M. and Bakker, Marjan and {van Aert}, Robbie C. M. and {van Assen}, Marcel A. L. M.}, 842 | year = {2016}, 843 | journal = {Frontiers in Psychology}, 844 | volume = {7}, 845 | pages = {1832}, 846 | doi = {10.3389/fpsyg.2016.01832} 847 | } 848 | 849 | @book{hastieElementsStatisticalLearning2017, 850 | title = {The Elements of Statistical Learning: Data Mining, Inference, and Prediction}, 851 | shorttitle = {The Elements of Statistical Learning}, 852 | author = {Hastie, Trevor and Tibshirani, Robert and Friedman, Jerome H.}, 853 | year = {2017}, 854 | series = {Springer Series in Statistics}, 855 | edition = {Second edition, corrected at 12th printing 2017}, 856 | publisher = {{Springer}}, 857 | address = {{New York, NY}}, 858 | isbn = {978-0-387-84858-7 978-0-387-84857-0}, 859 | langid = {english} 860 | } 861 | -------------------------------------------------------------------------------- /repro-tutorial.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: Default 4 | SaveWorkspace: Default 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: knitr 13 | LaTeX: XeLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | 17 | BuildType: Makefile 18 | -------------------------------------------------------------------------------- /repro_log.R: -------------------------------------------------------------------------------- 1 | # I try to log what I am doing 2 | if(!requireNamespace("remotes"))install.packages("remotes") 3 | remotes::install_github("aaronpeikert/repro") 4 | repro::use_repro_template() 5 | # ISSUE: https://github.com/aaronpeikert/repro/issues/53 6 | # manually add install.Rmd, delete examples 7 | # configure Docker and Make using repro: 8 | repro::check_make() 9 | repro::check_docker() 10 | repro::automate() 11 | 12 | # add git: 13 | repro::check_git() 14 | usethis::use_git() 15 | 16 | # add a readme: 17 | usethis::use_readme_rmd() 18 | # manually edit readme 19 | # add readme to makefile: 20 | repro::automate() 21 | # ISSUE: https://github.com/aaronpeikert/repro/issues/46 22 | system("make docker") 23 | system("make -B DOCKER=TRUE") 24 | # ISSUE: https://github.com/aaronpeikert/repro/issues/54 25 | # changed R version to 4.0.3 in Dockerfile 26 | git2r::add(".", c("Dockerfile", "Makefile", "README.Rmd", "README.md", "install.md", ".repro/Dockerfile_base", ".repro/Makefile_Rmds")) 27 | git2r::commit(".", "add README & build documents") 28 | 29 | # ignore htmls: 30 | usethis::use_git_ignore("*.html") 31 | git2r::add(".", c(".gitignore")) 32 | git2r::commit(".", "ignore htmls") 33 | 34 | 35 | # add a licence: 36 | usethis::use_ccby_license() 37 | git2r::add("." ,"LICENSE.md") 38 | git2r::commit(".", "usethis::use_ccby_license()") 39 | 40 | # add a code of conduct: 41 | usethis::use_code_of_conduct() 42 | # manually edit README.Rmd 43 | git2r::add("." ,"README.Rmd") 44 | git2r::add("." ,"CODE_OF_CONDUCT.md") 45 | system("make DOCKER=TRUE") 46 | git2r::add("." ,"README.md") 47 | git2r::commit(".", "usethis::use_code_of_conduct()") 48 | 49 | # use github: 50 | repro::check_github() 51 | # ISSUE: https://github.com/aaronpeikert/repro/issues/55 52 | usethis::use_github() 53 | 54 | # add autogenerated not so important files: 55 | git2r::add("." , c(".Rbuildignore", "repro-tutorial.Rproj")) 56 | git2r::commit(".", "add autogenerated not so important files") 57 | git2r::push() 58 | 59 | # update repro_log.R: 60 | git2r::add("." , c("repro_log.R")) 61 | git2r::commit(".", "update repro_log.R") 62 | git2r::push() 63 | 64 | # switch to a new branch to plan the content: 65 | git2r::branch_create(git2r::commits()[[1]] ,"plan") 66 | git2r::checkout(branch = "plan") 67 | file.create("manuscript.Rmd") 68 | 69 | usethis::use_git_ignore("*.pdf") 70 | --------------------------------------------------------------------------------