1 unstable release
| 0.1.0 | Jan 22, 2026 |
|---|
#2019 in Math
230KB
4.5K
SLoC
ðļ OldiesRules
Revival of Classic Academic Simulators in Rust
Decades of scientific validation. Modern safety and performance.
OldiesRules provides modern, safe, high-performance Rust implementations of legendary simulation software that is abandoned, unmaintained, or running on obsolete platforms.
ð Quick Start
# Install CLI
cargo install --git https://github.com/Yatrogenesis/OldiesRules oldies-cli
# Install GUI
cargo install --git https://github.com/Yatrogenesis/OldiesRules oldies-gui
# Interactive mode
oldies
# Or run directly
oldies genesis model.g
oldies neuron cell.hoc
âĻ Features
- 7 Classic Simulators - GENESIS, NEURON, XPPAUT, AUTO, COPASI, Brian, NEST
- Modern GUI - Real-time visualization with egui
- Interactive CLI - Fuzzy search, progress bars, wizard mode
- Full Compatibility - Parse original file formats
- Cross-Platform - Windows, macOS, Linux
ð§ Supported Simulators
| Simulator | Era | Original | Purpose | Status |
|---|---|---|---|---|
| GENESIS | 1988 | SLI + C | Compartmental neural modeling | â Complete |
| NEURON | 1984 | HOC + NMODL | Cable equation, ion channels | â Complete |
| XPPAUT | 1990s | C + FORTRAN | Bifurcation analysis | â Complete |
| AUTO | 1980s | FORTRAN | Continuation algorithms | â Complete |
| COPASI | 2004 | C++ + SBML | Biochemical networks | â Complete |
| Brian | 2008 | Python | Spiking neural networks | â Complete |
| NEST | 2001 | C++ + SLI | Large-scale networks | â Complete |
ðŊ Interactive Mode
$ oldies
ðļ OLDIES RULES - Legacy Simulators Reborn
âââââââââââââââââââââââââââââââââââââââââââ
? Select a simulator or action (type to search):
âš ð§ GENESIS - Compartmental modeling (1988)
⥠NEURON - Cable equation (1984)
ð XPPAUT - Bifurcation analysis (1990s)
ð AUTO - Continuation (1980s)
ð§Ž COPASI - Biochemical networks (2004)
ðĨ Brian - Spiking networks (2008)
ð NEST - Large-scale simulation (2001)
? Enter path to model file: model.g
â đ Parsing SLI script...
â đ Building element tree...
â đ Connecting messages...
â đ Simulating 100ms...
â
Simulation complete!
Duration: 1.23s
Timesteps: 10,000
ðĨïļ GUI Application
oldies-gui

- Simulator Selection - Choose from 7 classic simulators
- Parameter Editor - Modify model parameters in real-time
- Live Plotting - Watch variables evolve during simulation
- Data Export - CSV, JSON, HDF5 output formats
ðĶ Crates
| Crate | Description |
|---|---|
oldies-core |
Shared types: ODEs, channels, time series |
oldies-cli |
Interactive command-line interface |
oldies-gui |
Graphical interface with egui |
genesis-rs |
GENESIS neural simulator |
neuron-rs |
NEURON simulator (HOC/NMODL parser) |
xppaut-rs |
XPPAUT bifurcation analysis |
auto-rs |
AUTO continuation algorithms |
copasi-rs |
COPASI/SBML biochemical networks |
brian-rs |
Brian spiking networks |
nest-rs |
NEST large-scale simulator |
modeldb-rs |
ModelDB model importer |
ðŽ Examples
GENESIS - Hodgkin-Huxley Neuron
use genesis_rs::{GenesisSimulation, objects};
let mut sim = GenesisSimulation::new();
// Create compartment
objects::compartment(&mut sim, "/cell/soma");
// Add ion channels
objects::na_channel(&mut sim, "/cell/soma/Na");
objects::k_channel(&mut sim, "/cell/soma/K");
// Inject current
objects::inject(&mut sim, "/cell/soma", 0.1); // 0.1 nA
// Run 100 ms
sim.run(100.0);
XPPAUT - Lorenz Attractor
use xppaut_rs::{BifurcationAnalyzer, examples};
let model = examples::lorenz(10.0, 28.0, 8.0/3.0);
let analyzer = BifurcationAnalyzer::new(model);
// Find and classify fixed points
let fixed_points = analyzer.find_fixed_points();
for fp in &fixed_points {
println!("{:?} - Stable: {}", fp.state, fp.stable);
}
// Detect Hopf bifurcation
let hopf = analyzer.detect_hopf_bifurcation("rho", 0.0..50.0);
NEURON - Ion Channel
use neuron_rs::{Section, Mechanism};
let mut soma = Section::new("soma");
soma.set_length(20.0); // Ξm
soma.set_diameter(20.0);
// Insert Hodgkin-Huxley mechanism
soma.insert(Mechanism::HH);
// Run simulation
let v = soma.record("v");
neuron_rs::finitialize(-65.0);
neuron_rs::continuerun(100.0);
Brian - Spiking Network
use brian_rs::{NeuronGroup, Synapses, Network, equations};
let eqs = equations!("dv/dt = (I - v) / tau : volt");
let group = NeuronGroup::new(100, eqs);
let synapses = Synapses::new(&group, &group);
synapses.connect(0.1); // 10% connection probability
let mut net = Network::new();
net.add(group);
net.add(synapses);
net.run(1.0); // 1 second
ðĄ Why Revive These Simulators?
| Problem | OldiesRules Solution |
|---|---|
| Research papers unreproducible | Run original models natively |
| Legacy code has buffer overflows | Rust memory safety |
| Single-threaded 1990s code | Modern parallelism with Rayon |
| Cryptic FORTRAN-77 | Clean, documented Rust |
| Abandoned projects | Active maintenance |
| Platform-specific binaries | Cross-platform Rust |
ð Ecosystem
OldiesRules is part of the Yatrogenesis scientific computing suite:
- HumanBrain - GPU neural simulation at biological scale
- Rosetta - Legacy code transpiler
- Stochastic-Framework - Pattern detection
Integration
use humanbrain::Neuron;
use oldies_rs::modeldb;
// Import ModelDB model
let model = modeldb::import(3670)?; // Traub model
// Use in HumanBrain simulation
let neuron: Neuron = model.into();
ðĨ Installation
# CLI only
cargo install --git https://github.com/Yatrogenesis/OldiesRules oldies-cli
# GUI + CLI
cargo install --git https://github.com/Yatrogenesis/OldiesRules oldies-gui
cargo install --git https://github.com/Yatrogenesis/OldiesRules oldies-cli
# From source
git clone https://github.com/Yatrogenesis/OldiesRules
cd OldiesRules
cargo build --release
# Run
./target/release/oldies # CLI
./target/release/oldies-gui # GUI
ð Comparison with Original
| Feature | Original | OldiesRules |
|---|---|---|
| Language | C/FORTRAN/C++ | Rust |
| Memory Safety | â | â |
| Parallel | Limited | Rayon + GPU |
| Cross-platform | Partial | â |
| Modern tooling | â | Cargo, tests, docs |
| File format support | Native only | All formats |
ðĪ Contributing
We welcome contributions! Areas of interest:
- Additional model file parsers
- More example models
- Performance optimizations
- Documentation improvements
ð License
MIT OR Apache-2.0
"They don't make 'em like they used to. But we can make 'em better."
Dependencies
~17â63MB
~1M SLoC