#genesis #neuroscience #xppaut #legacy

app oldies-gui

Modern GUI for OldiesRules - Real-time visualization with egui

1 unstable release

0.1.0 Jan 22, 2026

#2019 in Math

MIT/Apache

230KB
4.5K SLoC

ðŸŽļ OldiesRules

DOI Rust License GitHub Stars

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

OldiesRules 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:

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