Skip to main content

Agent-Based Synthetic Educational Data Generation for ODL Research

Project description

SynthEd: From synthetic data to simulated learners

GitHub release CI pytest Python 3.10+ Code style: ruff codecov DOI License: MIT

Agent-based simulation environment for Open & Distance Learning (ODL) research. SynthEd generates behaviorally grounded and temporally coherent learning trajectories by combining persona-driven agent modeling with 11 established theoretical frameworks. Built for researchers in learning analytics, educational data mining, and dropout prediction.

pip install -e ".[dev]"
python run_pipeline.py --n 200      # or: pip install synthedu

From statistical similarity to behavioral fidelity. Traditional synthetic data methods optimize for distributional match. SynthEd optimizes for behavioral coherence -- each data point emerges from a simulated student's evolving motivations, decisions, and life context.


Why SynthEd?

Challenge Traditional Approach SynthEd Approach
Privacy regulations (GDPR/KVKK) Anonymization (re-identification risk) Agents are fictional -- no real individuals
Class imbalance in dropout data Oversampling (SMOTE) -- loses context Parameter-level control of dropout rates
Temporal incoherence GAN/VAE post-hoc smoothing Persona + memory produces coherent trajectories

Key Features

  • 11 Theory Modules -- Tinto, Bean & Metzner, Kember, SDT, Garrison CoI, Moore, Rovai, Baulke, Epstein & Axtell, Gonzalez, Unavoidable Withdrawal
  • Trait-Based Calibration -- Sobol sensitivity (69 params) + NSGA-II multi-objective optimization against real OULAD data
  • Multi-Semester Simulation -- Carry-over mechanics for engagement, GPA, coping, dropout phases
  • GPA Feedback Loop -- Cumulative GPA anchors cost-benefit, non-fit perception, and competence beliefs
  • OULAD-Compatible Export -- 7-table CSV matching the Open University Learning Analytics Dataset schema
  • Adaptive Parameter Bounds -- auto_bounds() adjusts calibration space when demographics change
  • 5-Level Validation Suite -- 21 statistical tests (distributions, correlations, temporal coherence, privacy, backstory)
  • Optional LLM Enrichment -- Persona-grounded narrative backstories via OpenAI, Ollama, or any compatible provider
  • Default Benchmark Profile -- Customizable via PersonaConfig, InstitutionalConfig, GradingConfig with CLI report generation
  • InstitutionalConfig -- 5 institution-level quality parameters that modulate theory constants
  • GradingConfig -- Configurable grading policy: Beta/Normal/Uniform grade distributions, weighted semester grades (midterm/final), dual-hurdle pass requirements, exam-only and continuous assessment modes, floor-adjusted transcript scale for outcome classification (Distinction/Pass/Fail)
  • EngineConfig -- 70 frozen engine constants with validation (weight sums, ordering, positivity), overridable via dataclasses.replace()
  • NSGA-II Calibration -- Multi-objective optimization with Pareto front, parallel --workers N support
  • Relative Grading -- grading_method="relative" with t-score cohort normalization, automatic fallback for small/homogeneous cohorts

Quick Start

git clone https://github.com/theaiagent/SynthEd.git
cd SynthEd
pip install -e ".[dev]"              # Dev install (no LLM)
pip install -e ".[dev,llm]"          # Dev install with LLM support
python run_pipeline.py              # 200 students, 14 weeks
python run_pipeline.py --n 500      # Custom population
python run_pipeline.py --oulad      # OULAD-compatible export
python run_pipeline.py --benchmark  # Run default benchmark profile
python run_calibration.py --workers 4  # Parallel NSGA-II calibration
from synthed.pipeline import SynthEdPipeline
from synthed.pipeline_config import PipelineConfig

config = PipelineConfig(output_dir="./output", seed=42)
pipeline = SynthEdPipeline(config=config)
report = pipeline.run(n_students=300)
print(f"Dropout: {report['simulation_summary']['dropout_rate']:.1%}")

Use Cases

  1. Dropout Prediction -- Generate labeled training data with known ground-truth trajectories
  2. Intervention Simulation -- Model "what-if" scenarios by adjusting population parameters
  3. Privacy-Safe Benchmarking -- Share synthetic datasets publicly for reproducible research

Documentation

Document Content
User Guide Installation, configuration, calibration pipeline, OULAD export, LLM enrichment, troubleshooting
Theory & Architecture 11 theoretical anchors, factor clusters, architecture diagram, project structure, validation suite, test inventory

Roadmap

  • Multi-semester simulation with carry-over
  • 11 theory modules (Tinto, Bean & Metzner, Kember, SDT, Garrison, Moore, Rovai, Baulke, Epstein & Axtell, Gonzalez, Unavoidable Withdrawal)
  • Trait-based calibration (Sobol + Optuna + OULAD validation)
  • Benchmark reports with CLI (--benchmark)
  • OULAD-compatible 7-table export
  • LLM enrichment with cost control and streaming
  • Disability severity (Beta distribution)
  • InstitutionalConfig (5 quality parameters modulating theory constants)
  • NSGA-II multi-objective calibration with Pareto front
  • Spectrum refactoring (binary -> continuous for family/internet)
  • GraphRAG integration (curriculum modeling)
  • LLM-augmented mode (forum posts, assignment text)
  • Parquet/Arrow export
  • PyPI package publication (pip install synthedu)
  • Interactive dashboard

Legal Disclaimer

SynthEd generates entirely fictional synthetic data. No real individuals are represented or identifiable. Outputs are intended for research, development, and educational purposes. SynthEd is under active development -- APIs and output formats may change between versions.

See full Legal Disclaimer and Responsible Use guidelines.


Contributing

Contributions welcome! See the User Guide for development setup.

ruff check synthed/ tests/
python -m pytest tests/ -v --tb=short

License

MIT License. See LICENSE.

Citation

If you use SynthEd in your research, please cite using the CITATION.cff file or the Zenodo DOI above.

Contributors

Contributor Role
Halis Aykut Cosgun Lead Developer, Data Scientist & AI Engineer, Researcher -- Yozgat Bozok University
Evrim Genc Kumtepe Research Advisor -- Anadolu University
Claude (Anthropic) AI pair programmer -- implementation, testing, code review

Acknowledgments

Conceptually inspired by TinyTroupe (Microsoft), MiroFish, and Agent Lightning. OULAD reference data: Kuzilek et al. (2017).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

synthedu-1.4.0.tar.gz (224.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

synthedu-1.4.0-py3-none-any.whl (141.8 kB view details)

Uploaded Python 3

File details

Details for the file synthedu-1.4.0.tar.gz.

File metadata

  • Download URL: synthedu-1.4.0.tar.gz
  • Upload date:
  • Size: 224.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for synthedu-1.4.0.tar.gz
Algorithm Hash digest
SHA256 0aa982ca841542649df58b82d399574f95bd561685e4cc48ac247e1d7fbccfe6
MD5 50a49bb08b66ca11601a77bb0823209a
BLAKE2b-256 dc5a2d7d1b5b572a80e8750d3e2b5e2d4ffd01b6a0aeea1c9bbb9bd42987b193

See more details on using hashes here.

Provenance

The following attestation bundles were made for synthedu-1.4.0.tar.gz:

Publisher: publish.yml on theaiagent/SynthEd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file synthedu-1.4.0-py3-none-any.whl.

File metadata

  • Download URL: synthedu-1.4.0-py3-none-any.whl
  • Upload date:
  • Size: 141.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for synthedu-1.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 81840d3ea9f0d1069eeef50e54e059fdd10f9a1bca407b3634aad27f0727ea2d
MD5 f70fc84d627e5a544d7a4b1b7a6a1e69
BLAKE2b-256 818d6256adbd2b23e31318c55e939c3afac4e67dec41bcc4022c966ba789f069

See more details on using hashes here.

Provenance

The following attestation bundles were made for synthedu-1.4.0-py3-none-any.whl:

Publisher: publish.yml on theaiagent/SynthEd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page