Skip to main content

A Python package for simulating survival data, inspired by the R package genSurv

Project description

gen_surv

Coverage Docs PyPI Tests Python

gen_surv is a Python package for simulating survival data under a variety of models, inspired by the R package genSurv. It supports data generation for:

  • Cox Proportional Hazards Models (CPHM)
  • Continuous-Time Markov Models (CMM)
  • Time-Dependent Covariate Models (TDCM)
  • Time-Homogeneous Hidden Markov Models (THMM)

๐Ÿ“ฆ Installation

poetry install

โœจ Features

  • Consistent interface across models
  • Censoring support (uniform or exponential)
  • Easy integration with pandas and NumPy
  • Suitable for benchmarking survival algorithms and teaching
  • Accelerated Failure Time (Log-Normal) model generator
  • Command-line interface powered by Typer

๐Ÿงช Example

from gen_surv import generate

# CPHM
generate(model="cphm", n=100, model_cens="uniform", cens_par=1.0, beta=0.5, covar=2.0)

# AFT Log-Normal
generate(model="aft_ln", n=100, beta=[0.5, -0.3], sigma=1.0, model_cens="exponential", cens_par=3.0)

# CMM
generate(model="cmm", n=100, model_cens="exponential", cens_par=2.0,
         qmat=[[0, 0.1], [0.05, 0]], p0=[1.0, 0.0])

# TDCM
generate(model="tdcm", n=100, dist="weibull", corr=0.5,
         dist_par=[1, 2, 1, 2], model_cens="uniform", cens_par=1.0,
         beta=[0.1, 0.2, 0.3], lam=1.0)

# THMM
generate(model="thmm", n=100, qmat=[[0, 0.2, 0], [0.1, 0, 0.1], [0, 0.3, 0]],
         emission_pars={"mu": [0.0, 1.0, 2.0], "sigma": [0.5, 0.5, 0.5]},
         p0=[1.0, 0.0, 0.0], model_cens="exponential", cens_par=3.0)

โŒจ๏ธ Command-Line Usage

Install the package and use python -m gen_surv to generate datasets without writing Python code:

python -m gen_surv dataset aft_ln --n 100 > data.csv

๐Ÿ”ง Available Generators

Function Description
gen_cphm() Cox Proportional Hazards Model
gen_cmm() Continuous-Time Multi-State Markov Model
gen_tdcm() Time-Dependent Covariate Model
gen_thmm() Time-Homogeneous Markov Model
gen_aft_log_normal() Accelerated Failure Time Log-Normal
genSurvPy/
โ”œโ”€โ”€ gen_surv/             # Pacote principal
โ”‚   โ”œโ”€โ”€ __main__.py       # Interface CLI via python -m
โ”‚   โ”œโ”€โ”€ cphm.py
โ”‚   โ”œโ”€โ”€ cmm.py
โ”‚   โ”œโ”€โ”€ tdcm.py
โ”‚   โ”œโ”€โ”€ thmm.py
โ”‚   โ”œโ”€โ”€ censoring.py
โ”‚   โ”œโ”€โ”€ bivariate.py
โ”‚   โ”œโ”€โ”€ validate.py
โ”‚   โ””โ”€โ”€ interface.py
โ”œโ”€โ”€ tests/                # Testes automatizados
โ”‚   โ”œโ”€โ”€ test_cphm.py
โ”‚   โ”œโ”€โ”€ test_cmm.py
โ”‚   โ”œโ”€โ”€ test_tdcm.py
โ”‚   โ”œโ”€โ”€ test_thmm.py
โ”œโ”€โ”€ examples/             # Exemplos de uso
โ”‚   โ”œโ”€โ”€ run_aft.py
โ”‚   โ”œโ”€โ”€ run_cmm.py
โ”‚   โ”œโ”€โ”€ run_cphm.py
โ”‚   โ”œโ”€โ”€ run_tdcm.py
โ”‚   โ””โ”€โ”€ run_thmm.py
โ”œโ”€โ”€ docs/                 # Documentaรงรฃo Sphinx
โ”‚   โ”œโ”€โ”€ source/
โ”‚   โ””โ”€โ”€ ...
โ”œโ”€โ”€ scripts/              # Utilidades diversas
โ”‚   โ””โ”€โ”€ check_version_match.py
โ”œโ”€โ”€ tasks.py              # Tarefas automatizadas com Invoke
โ”œโ”€โ”€ TODO.md               # Roadmap de desenvolvimento
โ”œโ”€โ”€ pyproject.toml        # Configurado com Poetry
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENCE
โ””โ”€โ”€ .gitignore

๐Ÿง  License

MIT License. See LICENCE for details.

๐Ÿ”– Release Process

This project uses Git tags to manage releases. A GitHub Actions workflow (version-check.yml) verifies that the version declared in pyproject.toml matches the latest Git tag. If they diverge, the workflow fails and prompts a correction before merging. Run python scripts/check_version_match.py locally before creating a tag to catch issues early.

๐ŸŒŸ Code of Conduct

Please read our Code of Conduct to learn about the expectations for participants in this project.

๐Ÿค Contributing

Please read CONTRIBUTING.md for guidelines on setting up your environment, running tests, and submitting pull requests.

๐Ÿ”ง Development Tasks

Common project commands are defined in tasks.py and can be executed with Invoke:

poetry run inv -l  # list available tasks
poetry run inv test  # run the test suite

๐Ÿ“‘ Citation

If you use gen_surv in your work, please cite it using the metadata in CITATION.cff. Many reference managers can import this file directly.

Author

Diogo Ribeiro โ€” ESMAD - Instituto Politรฉcnico do Porto

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

gen_surv-1.0.7.tar.gz (11.1 kB view details)

Uploaded Source

Built Distribution

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

gen_surv-1.0.7-py3-none-any.whl (13.7 kB view details)

Uploaded Python 3

File details

Details for the file gen_surv-1.0.7.tar.gz.

File metadata

  • Download URL: gen_surv-1.0.7.tar.gz
  • Upload date:
  • Size: 11.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.9.13 Darwin/24.5.0

File hashes

Hashes for gen_surv-1.0.7.tar.gz
Algorithm Hash digest
SHA256 33a8972e0b69e7f43092e2f7cd8bd54ab06b6d8923853bd3695917210a4709ec
MD5 258e09fc4923e7375b70163f30c67d28
BLAKE2b-256 4b7dac9b6131edea0bd1e32f531a3f7e4f7b87eaabbdf3bbbaf022a91493cd3e

See more details on using hashes here.

File details

Details for the file gen_surv-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: gen_surv-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 13.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.9.13 Darwin/24.5.0

File hashes

Hashes for gen_surv-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 80d2bdd6052396770ace3e99c0905346387ddfbd4050df8180f653813b3cea63
MD5 0764d7c7f31a01866bda8c99955dbf64
BLAKE2b-256 8b8393ab80ef0475a8e05bdec26c7b185d18d0653922e8f96432e7122646ed1d

See more details on using hashes here.

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