(Part 7 of series Blueprint for a Modern Research Computing Environment)
Follow me :
This article establishes a reusable project structure for research code, sets the rule that raw data is never modified, and separates data storage from code storage entirely. It also covers naming conventions, writing a README, what belongs on GitHub versus what doesn’t, and where research data can live — locally, in the cloud, or published with a citable DOI.
You’ve been building project_1 throughout this series. So far, the focus has been on tools — installing, configuring, connecting. But as your projects grow, how you organize them matters as much as the code itself.
A well-organized project is easier to understand, easier to share, and easier to come back to after six months away.
By the end, you’ll have:
AI tools (like Claude, Grok, Gemini, or ChatGPT) give the best troubleshooting advice when they have the exact text of the tutorial. To ensure the AI understands what you are trying to build, we will give it the actual file.
1. Download the tutorial file
2. Upload it to your AI
Part7.md into the chat).3. Ask for Help Copy and paste this exact prompt into the chat along with your file:
I have attached the markdown file for the tutorial I am following. Please read it so you understand the specific environment I am trying to build.
I need help with the following:
Step [X]: [paste exact step text from the blog]
Command I ran: [paste exact command]
What happened: [paste full output/error — if the terminal was truly blank, say so explicitly]
Please help me troubleshoot and fix this error. You can use your general knowledge to solve the problem, but your solution MUST align with the architecture and tools taught in the attached file. Do not suggest alternative setups that contradict the tutorial. Once fixed, tell me what to do next in the article.
To go deeper on a step before you run a command:
I have attached the
Part7.mdfile. Look at Step [X] and explain exactly what the command does and why we are doing it before I run it.
Think of this series as the roadmap and your AI assistant as your learning companion.
Imagine coming back to a project after six months. Files named script_final_v3_FINAL.py. Data mixed in with code. No README. No idea which script to run first.
This is more common than it should be — especially in research, where the pressure is to get results, not to organize files. Good organization costs almost nothing upfront and saves enormous time later.
Here is a structure that works for most research projects:
project_1/
├── notebooks/ ← .ipynb files for exploration
├── scripts/ ← .py files for automation and pipelines
├── results/
│ ├── figures/ ← plots and visualizations
│ └── outputs/ ← model outputs, tables, summaries
├── environment.yml ← Conda environment definition
├── .gitignore ← files Git should ignore
└── README.md ← what this project is and how to use it
The key principle: separate your inputs (data), your process (notebooks and scripts), and your outputs (results).
Create this structure:
cd ~/project_1
mkdir -p notebooks scripts results/figures results/outputs
touch README.md
Never modify raw data. Ever.
Your raw data folder is read-only in practice — you load from it, you never write to it. If you need to clean or transform data, save the result to a separate processed folder.
We follow this split:
/home/yourusername/projects//mnt/d/ (or whichever Windows drive you use)Keep data outside project_1 because it is often large, doesn’t need version control, and is shared across projects.
Create this on your Windows drive (or Linux equivalent):
mkdir -p /mnt/d/datasets/project_1/raw
mkdir -p /mnt/d/datasets/project_1/processed
clean_temperature_data.py).scripts/).temperature_2024_01_raw.csv) and versions (v2.csv).01_explore.ipynb).A README is the front door of your project. Open and fill it in:
cd ~/project_1
nano README.md
Include sections for: What this is, Data location, How to run, Environment setup, and Results.
GitHub is for code — not data.
.gitignore, environment files, small plots.Add large items to .gitignore:
nano ~/project_1/.gitignore
~/project_1/ for code, /mnt/d/datasets/ for data).If your research involves scientific data, you’ll likely encounter formats like netCDF, HDF5, and GRIB. These require specific libraries like xarray or h5py. For geoscientific workflows, explore Project Pythia.
What You’ve Done:
.gitignore and README best practicesNext: Part 8 — Enabling GPU Computing in WSL2 and Linux with CUDA | Previous: Part 6 — Git and GitHub for Reproducible Research