An interactive web application for exploring microbiome distributions and their correlation with population health factors. Built as a data-driven visualization tool with a responsive design – and embedded in a modern DevOps workflow with Docker containerization, CI/CD with Github Actions and automatic deployment to Render.
The human gut contains a rich microbiome whose composition can reflect or influence various aspects of population health. This project provides interactive visualizations to:
- Explore microbiome abundance distributions
- Investigate correlations between microbial species and population groups
- Reveal patterns and clusters in microbiome data
human-intestinal-ecosystem.onrender.com
- Frontend: JavaScript, D3.js, HTML5, CSS3
- Backend: Flask (Python)
- Data Handling: Pandas, Numpy, sklearn, JSON
- Visualization: D3.js interactive SVGs
- CI/CD: GitHub Actions
- Deployment: Auto-deploy to Render
- Containerization: Docker, Docker Compose v2
- Version Control Workflow: Git, feature branches, pull requests
- Dockerized development and production environments
- GitHub Actions CI/CD with:
- Linting, unit tests, notebook execution, dead link check
- Production image build and local server test
- Auto-deployment to Render
- Live smoke tests of the deployed site
- One-click dev container for VS Code
Leonard Siegert (https://github.com/leonardsiegert)
- Clustering visualizations and interactive selection (D3.js)
- Histogram visualization (co-developed)
- Data preprocessing and project structure organization
- Responsive design for mobile and desktop
- Flask server co-development and GitHub management
- Dockerization and CI/CD setup
- README writing
Dexter Früh (https://github.com/dexterfrueh)
- Sunburst and tree visualizations (D3.js)
- Histogram visualization (co-developed)
- Side-by-side layout and selection syncing across views
- Code cleanup and documentation with docstrings
- Flask server co-development and GitHub management
We followed a real-world Git workflow: using feature branches, code reviews, and pull requests to simulate a professional development process.
- Designing mobile-responsive data visualizations with D3
- Collaborative software engineering practices via GitHub
- Building production-ready Flask apps with Docker
- Deploying containerized apps on cloud platforms like Render
- Managing CI/CD workflows with GitHub Actions
- Writing clear documentation and modular code
git clone git@github.com:leonardsiegert/human-intestinal-ecosystem.git
cd human-intestinal-ecosystemdocker compose up --build prodThis starts the production web server (Gunicorn) at http://localhost:8000.
docker compose run --build --service-ports dev bashThis opens an interactive terminal in the container.
From there, you can:
python app/app.pycd data
jupyter notebook --ip=0.0.0.0 --port=8888 --allow-rootThen open http://localhost:8888 in your browser.
docker compose downAll builds and tests are continuously run in GitHub Actions. See .github/workflows/ for the full CI/CD pipeline.
If you use Visual Studio Code, you can launch a fully-configured containerized environment instantly:
- Install the Dev Containers extension
- Open this repository in VS Code
- When prompted, select "Reopen in Container"
This will:
- Build and start the Docker development container
- Mount the project inside
- Forward ports (Flask, Gunicorn, Jupyter)
- Install recommended extensions for Python and Jupyter
With conda:
conda create --name venv pip
conda activate venvOtherwise:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activatepip install -r requirements.txtFor development server:
python app/app.pyThen open http://localhost:5000 in your browser.
For production server:
gunicorn app.app:appThen open http://localhost:8000 in your browser.
Lahti, L. et al. Tipping elements in the human intestinal ecosystem. Nat. Commun. 5:4344 doi: 10.1038/ncomms5344 (2014).
Via datadryad: https://doi.org/10.5061/dryad.pk75d
The data is in the public domain — you are free to copy, modify, distribute, and use the data for any purpose, including commercial use, without asking permission:
https://creativecommons.org/publicdomain/zero/1.0/
This project is licensed under the GNU General Public License v3.0
You are free to use, modify, and distribute this software under the same license, provided you disclose source code and keep derivative works open.
