From c66f3bfa7ce924acf24667a30079722587203240 Mon Sep 17 00:00:00 2001 From: Chris Vernon Date: Tue, 2 May 2023 13:10:00 -0400 Subject: [PATCH] Initial commit --- .gitignore | 220 +++++++++++++++++++++++++++++++++++++++++++ LICENSE | 25 +++++ README.md | 41 ++++++++ figures/README.md | 1 + metarepo_template.md | 72 ++++++++++++++ workflow/README.md | 1 + 6 files changed, 360 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 figures/README.md create mode 100644 metarepo_template.md create mode 100644 workflow/README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6403680 --- /dev/null +++ b/.gitignore @@ -0,0 +1,220 @@ +# sys files +.DS_Store + +# ----------------- +# ---- PYTHON ----- +# ----------------- + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# ----------- +# ---- R ---- +# ----------- + +# ignore path +/bak + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# make dependency files +*.d +# emacs backup files +*~ +# Compiled Dynamic libraries +*.so +*.dylib +*.dll +# Compiled Static libraries +*.lai +*.la +*.a +*.lib +# Executables +*.exe +*.out +*.app +src/hector +src/hector-ext +src/hector-api +# Hector logs +logs/*.* +*.log +# OS-specific files +.DS_Store +.Trashes +*.swp +# Xcode build directories, schemes, and interface state +*.lock +*.xccheckout +*~.nib +build/ +DerivedData/ +xcodeuserstate +xcuserdata +project.xcworkspace/ +# Project files +project_files/*.* +Release +ipch +Run Test Cases +Debug +libs +project_files/visual_studio/ +project_files/VS/*.* +libs/ +*.kdev4 +*.sdf +*.suo +# Output +output/output* +# R +.Rhistory +R/batchrunner/*.pdf +R/batchrunner/*.csv +.Rapp.history +.Rproj.user +.RData +inst/doc +vignettes/rsconnect + + +# vignette caches +/vignettes/*_cache + +# Rstudio connect files +rsconnect +inst/shinyApp/temp.ini +inst/shinyApp/test.ini +packrat/lib*/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..27f16a2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2020, Joint Global Change Research Institute +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..7ed70fd --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +[![DOI](https://zenodo.org/badge/265119113.svg)](https://zenodo.org/badge/latestdoi/265119113) + +# metarepo +Template repository for a single point of access meta-repository to reproduce an experiment + +## Purpose +A meta-repository creates a single point of access for someone to find all of the components that were used to create a published work for the purpose of reproducibility. This repository should contain references to all minted data and software as well as house any ancillary code used to transform the source data, create figures for your publication, conduct the experiment, and / or execute the contributing software. + +## Using the template +Simply click `Use this template` on the main repository page (shows up to the left of `Clone or download`) and fill in your `Repository name`, the `Description`, select whether you want the repository to be `Public` or `Private`, and leave `Include all branches` unchecked. + +## Naming your meta-repository +The following naming conventions should be used when naming your repository: +- Single author: `lastname_year_journal` +- Multi author: `lastname-etal_year_journal` +- Multiple publications in the same journal: `lastname-etal_year-letter_journal` (e.g., `human-etal_2020-b_nature`) + +## Customize your `.gitignore` file +A general `.gitignore` for use with Python or R development is included. However, you may wish to customize this to the needs of your project. The `.gitignore` file lets Git know what to push to the remote repository and what needs to be ignored and stay local. + +## Suggestions +- Don't bog down your repository with a bunch of raw data. Instead archive and mint a DOI for your data and provide the reference in this repository with instructions for use. +- Create complete and tested documentation for how to use what is in this repository to reproduce your experiment. + +## Creating a minted release for your meta-repository +It is important to version and release your meta-repository as well due to changes that may occur during the publication review process. If you do not know how to conduct a release on GitHub when linked with Zenodo, please contact chris.vernon@pnnl.gov to get set up. + +## The meta-repository markdown template +A sample meta-repository template is provided in this repository in the file `metarepo_template.md`. + +To use it, do the following: +1. Create the template repository as mentioned above in [Using the template](#using-the-template) +2. Clone your new repository to you local machine +3. Change directories into your new meta-repository directory you just cloned +4. Run `git rm README.md` to delete this file (`README.md`) and commit it using `git commit -m 'remove instructions'` +5. Rename `metarepo_template.md` as `README.md` +6. Run `git add README.md` to stage the new file that will show up on load in your remote GitHub repository +7. Run `git rm metarepo_template.md` to remove the original template +8. Run `git commit -m 'set up new template as readme'` to set the changes +9. Run `git push` to send the changes to your remote GitHub repository +10. Modify the `README.md` file to represent your experiement and use the `add`, `commit`, `push` workflow to update your remote repository diff --git a/figures/README.md b/figures/README.md new file mode 100644 index 0000000..d865b2d --- /dev/null +++ b/figures/README.md @@ -0,0 +1 @@ +## This is the directory to place scripts or instructions in for recreating the figures that are represented in your publication diff --git a/metarepo_template.md b/metarepo_template.md new file mode 100644 index 0000000..50b72cd --- /dev/null +++ b/metarepo_template.md @@ -0,0 +1,72 @@ +_your zenodo badge here_ + +# lastname-etal_year_journal + +**A long-term global energy-economic model of carbon dioxide release from fossil fuel use** + +Jae Edmonds1\* and John Reilly1 + +1 Institute for Energy Analysis, Oak Ridge Associated Universities, 1346 Connecticut Avenue, NW, Washington, DC 20036, USA + +\* corresponding author: email@myorg.gov + +## Abstract +In this paper the authors develop a long-term global energy-economic model which is capable of assessing alternative energy evolutions over periods of up to 100 years. The authors have sought to construct the model so that it can perform its assigned task with as simple a modelling system as possible. The model structure is fully documented and a brief summary of results is given. + +## Journal reference +Edmonds, J., & Reilly, J. (1983). A long-term global energy-economic model of carbon dioxide release from fossil fuel use. Energy Economics, 5(2), 74-88. DOI: https://doi.org/10.1016/0140-9883(83)90014-2 + +## Code reference +References for each minted software release for all code involved. + +These are generated by Zenodo automatically when conducting a release when Zenodo has been linked to your GitHub repository. The Zenodo references are built by setting the author order in order of contribution to the code using the author's GitHub user name. This citation can, and likely should, be edited without altering the DOI. + +If you have modified a codebase that is outside of a formal release, and the modifications are not planned on being merged back into a version, fork the parent repository and add a `.` to the version number of the parent and construct your own name. For example, `v1.2.5.hydro`. + +Human, I.M. (2021, April 14). Project/repo:v0.1.0 (Version v0.1.0). Zenodo. http://doi.org/some-doi-number/zenodo.7777777 + +## Data reference + +### Input data +Reference for each minted data source for your input data. For example: + +Human, I.M. (2021). My input dataset name [Data set]. DataHub. https://doi.org/some-doi-number + +### Output data +Reference for each minted data source for your output data. For example: + +Human, I.M. (2021). My output dataset name [Data set]. DataHub. https://doi.org/some-doi-number + +## Contributing modeling software +| Model | Version | Repository Link | DOI | +|-------|---------|-----------------|-----| +| model 1 | version | link to code repository | link to DOI dataset | +| model 2 | version | link to code repository | link to DOI dataset | +| component 1 | version | link to code repository | link to DOI dataset | + +## Reproduce my experiement +Fill in detailed info here or link to other documentation that is a thorough walkthrough of how to use what is in this repository to reproduce your experiment. + + +1. Install the software components required to conduct the experiement from [Contributing modeling software](#contributing-modeling-software) +2. Download and install the supporting input data required to conduct the experiement from [Input data](#input-data) +3. Run the following scripts in the `workflow` directory to re-create this experiment: + +| Script Name | Description | How to Run | +| --- | --- | --- | +| `step_one.py` | Script to run the first part of my experiment | `python3 step_one.py -f /path/to/inputdata/file_one.csv` | +| `step_two.py` | Script to run the last part of my experiment | `python3 step_two.py -o /path/to/my/outputdir` | + +4. Download and unzip the output data from my experiment [Output data](#output-data) +5. Run the following scripts in the `workflow` directory to compare my outputs to those from the publication + +| Script Name | Description | How to Run | +| --- | --- | --- | +| `compare.py` | Script to compare my outputs to the original | `python3 compare.py --orig /path/to/original/data.csv --new /path/to/new/data.csv` | + +## Reproduce my figures +Use the scripts found in the `figures` directory to reproduce the figures used in this publication. + +| Script Name | Description | How to Run | +| --- | --- | --- | +| `generate_figures.py` | Script to generate my figures | `python3 generate_figures.py -i /path/to/inputs -o /path/to/outuptdir` | diff --git a/workflow/README.md b/workflow/README.md new file mode 100644 index 0000000..32466e8 --- /dev/null +++ b/workflow/README.md @@ -0,0 +1 @@ +## This is the directory to place scripts or instructions in for recreating your experiment