{"id":28065698,"url":"https://github.com/tgoelles/cookiecutter_science","last_synced_at":"2025-05-12T14:32:52.897Z","repository":{"id":58843523,"uuid":"433836416","full_name":"tgoelles/cookiecutter_science","owner":"tgoelles","description":"A template for science projects. 🧑‍🔬📊","archived":false,"fork":false,"pushed_at":"2025-03-18T20:15:13.000Z","size":184,"stargazers_count":8,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-18T21:24:51.715Z","etag":null,"topics":["cookiecutter","cookiecutter-template","cross-architecture","cross-platform","data-science","devcontainer","docker","julia","latex","m1-mac","python","r","science","vscode"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tgoelles.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-01T13:23:32.000Z","updated_at":"2025-02-06T14:03:11.000Z","dependencies_parsed_at":"2025-03-18T21:34:32.563Z","dependency_job_id":null,"html_url":"https://github.com/tgoelles/cookiecutter_science","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgoelles%2Fcookiecutter_science","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgoelles%2Fcookiecutter_science/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgoelles%2Fcookiecutter_science/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tgoelles%2Fcookiecutter_science/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tgoelles","download_url":"https://codeload.github.com/tgoelles/cookiecutter_science/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253754968,"owners_count":21958934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cookiecutter","cookiecutter-template","cross-architecture","cross-platform","data-science","devcontainer","docker","julia","latex","m1-mac","python","r","science","vscode"],"created_at":"2025-05-12T14:31:58.817Z","updated_at":"2025-05-12T14:32:52.861Z","avatar_url":"https://github.com/tgoelles.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cookiecutter for Science Projects\n\nA cookiecutter template for science and data science projects that include data, code, and dissemination.\n\n- Optimized for data-based publications\n- Optimized for use with VS Code\n- Docker-based, version-controlled environment using VS Code Dev Containers\n- uv based environment inside the Dev Container\n- to add a package just follow to uv workflow: use the VS code terminal and to go the code folder and run: uv add pandas\n- use of Dev container Features with pre-installed, Python andLaTeX\n- Setup for use with Python but could also be addapted for Julia, and R\n- Make commands for: collecting data, generating, figures, typsetting latex, clean temp files, clean demo files\n- use of VS Code tasks to trigger data collection, plotting and paper compilation\n- LaTeX-based paper\n- Added path definitions in the `project_package` Python module\n- [Kedro](https://kedro.org/)-inspired data folder structure\n- filled with a demo - which can be cleaned with \"make delete_demo\"\n- used in at least [5 papers](https://www.researchgate.net/profile/Thomas-Goelles)\n\nFor more detailed information, please see the [README of the resulting project](./%7B%7B%20cookiecutter.repo_name%20%7D%7D/README.md).\n\n## Quick Start\n\n```bash\ncookiecutter https://github.com/tgoelles/cookiecutter_science\n```\n\n## File Structure\n\n```\n├── Makefile                        \t    #  Automation script for common tasks\n├── README.md                       \t    #  Project overview and instructions\n├── code                                   #  Python Source code and notebooks\n│   ├── notebooks                          #  Jupyter notebooks for analysis\n│   │   └── exploratory                    #  Exploratory data analysis\n│   │       └── 1.0-tg-example.ipynb       #  Example exploratory notebook\n│   └── project_package                    #  The project package where refined code goes\n│       ├── pyproject.toml                 #  project_package dependencies and configuration\n│       └── src                            #  Source code directory\n│           └── project_package      \t    #\n│               ├── __init__.py            #\n│               ├── data                   #  Data processing module and scripts\n│               │   ├── __init__.py        #\n│               │   ├── config.py          #  Configuration settings\n│               │   ├── example.py         #  Example script\n│               │   ├── import_data.py     #  Data import functions\n│               │   └── make_dataset.py    #  Dataset creation script, used by make data\n│               ├── tools                  #  Utility scripts\n│               │   ├── __init__.py        #\n│               │   └── convert_latex.py   #  LaTeX conversion script\n│               └── visualization          #  Visualization module and scripts\n│                   ├── __init__.py        #\n│                   ├── make_plots.py      #  Plot generation functions\n│                   └── visualize.py       #  Data visualization utilities\n├── data                                   #\n│   ├── 01_raw                             #  Raw data, do not change the data in there\n│   │   └── demo.csv                       #  Example raw data file\n│   ├── 02_intermediate                    #  Processed but unrefined data\n│   │   └── demo_clean.csv                 #  Example cleaned data file\n│   ├── 03_primary                         #  Primary processed datasets\n│   ├── 04_feature                         #  Feature-engineered datasets\n│   ├── 05_model_input                     #  Data ready for modeling\n│   ├── 06_models                          #  Trained models\n│   ├── 07_model_output                    #  Model predictions/results\n│   └── 08_reporting                       #  Reports and summaries\n├── dissemination                          #  Outputs for publication/presentation\n│   ├── figures                            #  Figures and plots go in here\n│   │   └── demo.png                       #  Example figure\n│   ├── papers                             #  LaTeX desimition for paper or Thesis\n│   │   ├── paper.pdf                      #  Final paper output\n│   │   └── paper.tex                      #  LaTeX source for the paper\n│   └── presentations                      #  Presentation slides and materials\n├── literature                             #  References and related work\n│   └── references.bib                     #  Bibliography file\n├── pyproject.toml                         #  All Project dependencie and tool settings, managed by uv\n└── uv.lock                                #  Dependency lock file for reproducibility\n```\n\n## Tasks\n\nUse of VS Code tasks:\n\n![VS code Tasks](Tasks.png)\n\n## Requirements\n\n- **Git**: Should be part of your OS or install it [here](https://github.com/git-guides/install-git)\n- **GitHub account**\n- **GitHub CLI**: Install from [here](https://cli.github.com/)\n- **Docker Desktop**: Install from [here](https://www.docker.com/products/docker-desktop/)\n- **VS Code**: Install from [here](https://code.visualstudio.com/)\n- **VS Code Extension: Remote Development**: Install from [here](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)\n- **Cookiecutter Python package**: Install like this:\n\n```bash\npip install cookiecutter\n```\n\nFor Mac users:\n\n```bash\nbrew install cookiecutter\n```\n\n## Getting Started\n\n1. Navigate to the folder where you want to create the project (on your local drive):\n\n   ```bash\n   cookiecutter https://github.com/tgoelles/cookiecutter_science\n   ```\n\n2. Answer the questions prompted by cookiecutter.\n3. A new VS Code window will open automatically.\n4. Click \"OK\" to reopen the folder in a container (only asked the first time).\n5. Read the README.md in the generated project folder.\n\n## Git and GitHub\n\nCookiecutter can generate a GitHub repository for you. This initializes the git repo and pushes it to GitHub. You can then invite your team members to join the project.\n\n- Each team member works on their local version of the project, regularly committing and pushing changes.\n- Avoid working on the same folder over a network.\n\n### Note for Windows Users\n\nIf you want to use git inside the container (recommended), you need to clone the repo from WSL, as Windows may mess up the `.git` folder. Git inside the container uses the same `.gitconfig` as Windows, which is copied into the container.\n\nEnsure `user.email` and `user.name` are set (in PowerShell):\n\n```bash\ngit config --global user.name \"your_name\"\ngit config --global user.email \"your_email@gmail.com\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftgoelles%2Fcookiecutter_science","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftgoelles%2Fcookiecutter_science","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftgoelles%2Fcookiecutter_science/lists"}