This repository serves as a robust template for organizing and managing research projects, from data acquisition to manuscript preparation and presentation.
To begin a new project using this template, follow these steps:
-
Create a new repository from this template:
-
Click the "Use this template" button (a green button near the top right).
-
Choose "Create a new repository."
-
Select an owner (your GitHub username or an Organization's name), provide a repository name (e.g., my-awesome-research-project), and choose its visibility (public or private).
-
Click "Create repository from template."
-
-
Clone your new repository:
git clone https://github.com/your-username/your-new-repository-name.git
cd your-new-repository-name-
Customize the README:
-
Update this top-level README.md with a concise project title, description, and any initial setup instructions specific to your project.
-
Populate the README.md files within each subdirectory with relevant details as your project progresses.
-
Below is an overview of the repository layout:
.
├── 01_data/ # All project data
│ ├── raw/ # Original, immutable data (do not modify)
│ ├── external/ # Data from outside sources (e.g., public datasets)
│ ├── processed/ # Cleaned/transformed data (outputs from scripts)
│ └── README.md # Data sources, descriptions, processing steps
├── 02_analysis/ # Analysis scripts and utilities
│ ├── 01_data_cleaning.R # Example: data cleaning script (R)
│ ├── 02_exploratory_analysis.py # Example: exploratory analysis (Python)
│ ├── 03_modeling.R # Example: modeling script (R)
│ ├── utils/ # Reusable functions or modules
│ └── README.md # Analysis workflow and script purposes
├── 03_manuscript/ # Manuscript drafts, figures, documents
│ └── README.md # Track manuscript progress, submission plans, authors
├── 04_presentation/ # Materials for talks, posters, slides
│ └── README.md # Summarize presentations (title, date, format)
├── 05_misc/ # Supplementary files (proposals, notes, etc.)
│ └── README.md # Describe contents
└── README.md # Project overview and setup instructions
-
Reproducibility:
- Immutability of Raw Data: Never modify files in
01_data/raw/. Perform all cleaning and transformation programmatically or on copies, saving outputs to01_data/processed/. - Environment Documentation: Record your computational environment (e.g.,
requirements.txtfor Python,renv.lockfor R) to enable others to replicate your setup.
- Immutability of Raw Data: Never modify files in
-
Version Control:
- Commit changes frequently with clear, descriptive messages.
- Use branches for new features or analyses.
- Use
.gitignore: Add files and directories to.gitignoreto prevent tracking unnecessary or auto-generated content (e.g., intermediate results, logs, or large files). For example, you may choose not to track01_data/processed/since processed data should be reproducible by running scripts.
-
Clear Documentation:
- Keep all
README.mdfiles up to date. - Comment code to explain critical steps and assumptions.
- Keep all
-
Sensitive Information:
- Never commit sensitive data or API keys to the repository.
-
Large Files: