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
โ”‚
โ”œโ”€โ”€ tests/                # Testes automatizados
โ”‚   โ”œโ”€โ”€ test_cphm.py
โ”‚   โ”œโ”€โ”€ test_cmm.py
โ”‚   โ”œโ”€โ”€ test_tdcm.py
โ”‚   โ”œโ”€โ”€ test_thmm.py
โ”‚
โ”œโ”€โ”€ examples/             # Exemplos de uso
โ”‚   โ”œโ”€โ”€ run_cphm.py
โ”‚   โ”œโ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ pyproject.toml        # Configurado com Poetry
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE
โ”œโ”€โ”€ .gitignore

๐Ÿง  License

MIT License. See LICENSE 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.

๐Ÿ“‘ 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.

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.3.tar.gz (10.4 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.3-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gen_surv-1.0.3.tar.gz
  • Upload date:
  • Size: 10.4 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.3.tar.gz
Algorithm Hash digest
SHA256 c6f5fba754d22a5ebf91dbd38c0e53b47789fa78bbf0c36923f99833b19d2198
MD5 3aee87eb2ae6a2e259ef146c5fddfab0
BLAKE2b-256 917239bf9256cd9d1e771209552ff72357f3f60269438c1c3a457f7193630eb8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: gen_surv-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 13.4 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6f877182a70e7aff62b73abb36f93fa33c6708f926c4f51ecc55539afbd1af21
MD5 1d03bac711da66a7e0d758cea5de94d9
BLAKE2b-256 36dff3a791d3c6d5e20295ee8cd48b82c248d9fabed35c19f8b3ff29980712f4

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