# camdavidsonpilon/lifelines architecture

> Architecture diagram of the GitHub repository camdavidsonpilon/lifelines, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/camdavidsonpilon/lifelines
- Repository: https://github.com/camdavidsonpilon/lifelines

## Overview

lifelines is a Python survival-analysis library for estimating event-time distributions and covariate effects when observations may be censored. A researcher supplies duration, event, and optional covariate data; a suitable fitter estimates survival, hazard, or regression quantities, which can then support visualization and statistical evaluation. The tree documents nonparametric, parametric, regression, and time-varying model families, plus data preparation and calibration. Sampled excerpts show shared fitting utilities and plotting/statistics behavior; links among unsampled fitter implementations are kept at the subsystem level.

Main entry points: [`lifelines/fitters/coxph_fitter.py`](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/coxph_fitter.py) (Cox regression), [`lifelines/fitters/__init__.py`](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/__init__.py) (Fitter foundations), [`lifelines/fitters`](https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters) (Nonparametric fitters), [`lifelines/fitters/cox_time_varying_fitter.py`](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/cox_time_varying_fitter.py) (Time-varying Cox)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_dataset_loaders["Example datasets<br/>[__init__.py]"]
  node_data_utils["Timeline utilities<br/>[__init__.py]"]
end

subgraph group_models["Survival models"]
  node_nonparametric["Nonparametric fitters"]
  node_semi_parametric["Cox regression<br/>[coxph_fitter.py]"]
  node_time_varying["Time-varying Cox"]
  node_parametric["Parametric fitters"]
  node_aft["AFT regression"]
  node_fit_base["Fitter foundations<br/>[__init__.py]"]
end

subgraph group_analysis["Analysis tools"]
  node_statistics["Survival tests<br/>[statistics.py]"]
  node_concordance["Concordance scoring<br/>[concordance.py]"]
  node_calibration["Model calibration<br/>[calibration.py]"]
  node_plotting["Survival plots<br/>[plotting.py]"]
end

subgraph group_support["Shared runtime"]
  node_shared_utils["Numerical utilities<br/>[__init__.py]"]
end

node_researcher(("Researcher"))
node_survival_data["Event data"]
node_estimates["Fitted estimates"]

node_researcher -->|"provides data"| node_survival_data
node_researcher -->|"loads examples"| node_dataset_loaders
node_dataset_loaders -->|"returns data"| node_survival_data
node_researcher -->|"prepares timelines"| node_data_utils
node_data_utils -->|"transforms data"| node_survival_data
node_researcher -->|"fits model"| node_nonparametric
node_researcher -->|"fits model"| node_semi_parametric
node_researcher -->|"fits model"| node_time_varying
node_researcher -->|"fits model"| node_parametric
node_researcher -->|"fits model"| node_aft
node_nonparametric -->|"uses foundations"| node_fit_base
node_semi_parametric -->|"uses foundations"| node_fit_base
node_time_varying -->|"uses utilities"| node_shared_utils
node_semi_parametric -->|"uses utilities"| node_shared_utils
node_parametric -->|"uses foundations"| node_fit_base
node_aft -->|"uses foundations"| node_fit_base
node_nonparametric -->|"produces estimates"| node_estimates
node_semi_parametric -->|"produces estimates"| node_estimates
node_time_varying -->|"produces estimates"| node_estimates
node_parametric -->|"produces estimates"| node_estimates
node_aft -->|"produces estimates"| node_estimates
node_researcher -->|"tests hypotheses"| node_statistics
node_researcher -->|"scores predictions"| node_concordance
node_researcher -->|"checks calibration"| node_calibration
node_researcher -->|"visualizes estimates"| node_plotting
node_statistics -->|"evaluates models"| node_estimates
node_concordance -->|"scores predictions"| node_estimates
node_calibration -->|"assesses calibration"| node_estimates
node_plotting -->|"plots estimates"| node_estimates

click node_dataset_loaders "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/datasets/__init__.py"
click node_data_utils "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/utils/__init__.py"
click node_nonparametric "https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters"
click node_semi_parametric "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/coxph_fitter.py"
click node_time_varying "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/cox_time_varying_fitter.py"
click node_parametric "https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters"
click node_aft "https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters"
click node_fit_base "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/__init__.py"
click node_statistics "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/statistics.py"
click node_concordance "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/utils/concordance.py"
click node_calibration "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/calibration.py"
click node_plotting "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/plotting.py"
click node_shared_utils "https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/utils/__init__.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_dataset_loaders,node_data_utils toneBlue
class node_nonparametric,node_semi_parametric,node_time_varying,node_parametric,node_aft,node_fit_base toneAmber
class node_statistics,node_concordance,node_calibration,node_plotting toneMint
class node_shared_utils toneRose
class node_researcher,node_survival_data,node_estimates toneIndigo
```

## Components

### Data preparation

- [Example datasets](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/datasets/__init__.py): `lifelines/datasets/__init__.py`
- [Timeline utilities](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/utils/__init__.py): `lifelines/utils/__init__.py`

### Survival models

- [Nonparametric fitters](https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters): `lifelines/fitters`
- [Cox regression](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/coxph_fitter.py): `lifelines/fitters/coxph_fitter.py`
- [Time-varying Cox](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/cox_time_varying_fitter.py): `lifelines/fitters/cox_time_varying_fitter.py`
- [Parametric fitters](https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters): `lifelines/fitters`
- [AFT regression](https://github.com/camdavidsonpilon/lifelines/tree/master/lifelines/fitters): `lifelines/fitters`
- [Fitter foundations](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/fitters/__init__.py): `lifelines/fitters/__init__.py`

### Analysis tools

- [Survival tests](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/statistics.py): `lifelines/statistics.py`
- [Concordance scoring](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/utils/concordance.py): `lifelines/utils/concordance.py`
- [Model calibration](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/calibration.py): `lifelines/calibration.py`
- [Survival plots](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/plotting.py): `lifelines/plotting.py`

### Shared runtime

- [Numerical utilities](https://github.com/camdavidsonpilon/lifelines/blob/master/lifelines/utils/__init__.py): `lifelines/utils/__init__.py`

### Other components

- **Researcher**
- **Event data**
- **Fitted estimates**

## Connections

- Researcher → Event data: provides data
- Researcher → Example datasets: loads examples
- Example datasets → Event data: returns data
- Researcher → Timeline utilities: prepares timelines
- Timeline utilities → Event data: transforms data
- Researcher → Nonparametric fitters: fits model
- Researcher → Cox regression: fits model
- Researcher → Time-varying Cox: fits model
- Researcher → Parametric fitters: fits model
- Researcher → AFT regression: fits model
- Nonparametric fitters → Fitter foundations: uses foundations
- Cox regression → Fitter foundations: uses foundations
- Time-varying Cox → Numerical utilities: uses utilities
- Cox regression → Numerical utilities: uses utilities
- Parametric fitters → Fitter foundations: uses foundations
- AFT regression → Fitter foundations: uses foundations
- Nonparametric fitters → Fitted estimates: produces estimates
- Cox regression → Fitted estimates: produces estimates
- Time-varying Cox → Fitted estimates: produces estimates
- Parametric fitters → Fitted estimates: produces estimates
- AFT regression → Fitted estimates: produces estimates
- Researcher → Survival tests: tests hypotheses
- Researcher → Concordance scoring: scores predictions
- Researcher → Model calibration: checks calibration
- Researcher → Survival plots: visualizes estimates
- Survival tests → Fitted estimates: evaluates models
- Concordance scoring → Fitted estimates: scores predictions
- Model calibration → Fitted estimates: assesses calibration
- Survival plots → Fitted estimates: plots estimates
