This Python project models bacterial population growth using algorithms suited for real-world microbiology research. It's designed to simulate fission events under various conditions and visualize growth patterns clearly.
- 📊 Naive vs Sophisticated model comparison
- ⏱️ Time to reach a target population
- 🧬 Side-by-side sophisticated model comparison
- 📋 Detailed projection tables showing population changes per step
- 📈 Graphical simulation of fission frequency changes with:
- Dark-mode graphs
- Zoomed-in insets for dense data ("minute", "second")
(1) Compare naive and sophisticated models
(2) Time to reach a target population
(3) Compare two sophisticated models
(4) Generate detailed projections
(5) Simulate increase in fission frequency
You enter values for both models (initial population, growth rate, time unit, etc.).
It then calculates how large the population would grow after a chosen amount of time using:
- Naive model: simple linear growth
- Sophisticated model: compound growth with fission frequency
Both results are displayed for comparison.
You input a target population and model parameters.
The program simulates growth using the sophisticated model, repeating small steps until the population reaches the target.
It prints how many fission events (and how much time) it took to get there.
You enter values for two different sophisticated models.
The program simulates both models over the same time period and shows how their final populations compare.
This helps explore how fission frequency or growth rates affect outcomes.
You can choose a population target or time-based projection.
The program prints a table that shows, for every fission event:
- Opening population
- Growth added
- Closing population
It's useful for visualizing how small changes accumulate over time.
This module models what happens if you increase how often fission happens.
It simulates 5 scenarios:
- quarter-day
- 2-hour
- hour
- minute
- second
For each one, it generates a graph and saves it in thegraphs/
folder.
Graphs for "minute" and "second" include zoomed-in views to highlight small changes.
- Go to the Releases page
- Download the Source code (.zip) from the latest/desired release
- Unzip it on your computer
- Open a terminal in the unzipped folder
- Install dependencies:
pip install matplotlib tabulate termcolor
- Run the main script:
python main.py
- Follow the prompts in the terminal
Graphs will be saved to the graphs/
folder with timestamped filenames.
- Run the program:
python main.py
- Follow the prompts in the terminal.
Graphs will be saved to the graphs/
folder with timestamped filenames.
/graphs → auto-generated graph images (ignored by Git)
/main.py → main program
/.gitignore → excludes graphs folder from tracking
/README.md → this file
/presentation → folder with presenting files, and example graphs
Install required packages:
pip install matplotlib tabulate termcolor
Population doubles every 6 hours — clear exponential growth pattern.
Growth is slightly smoother than quarter-day, with more steps.
Finer-grained growth: more consistent curve forming.
Very small changes per step — zoomed inset shows early growth stages.
Extremely small growth increments — almost continuous curve.
View the design and explanation slides here:
🔗 Download presentation slides (PPTX)
This project is accompanied by a formal investigation report that explains the design, logic, and outcomes in detail.
Make sure to open this alongside the PowerPoint for full documentation.
André Nijman
Year 9 Perth Modern School Student
Mathematics Investigation Semester 1 2025