Skip to main content

Point process library with Hawkes specialization. Rust-accelerated MLE, EM, online, and Bayesian inference.

Project description

intensify

PyPI Python License: MIT CI

A Python library for point process modeling — Poisson, Cox, and Hawkes — with a Rust-backed implementation of the likelihood, gradient, and simulation hot paths. Provides closed-form gradients, Ogata thinning, cluster simulation, and time-rescaling goodness-of-fit diagnostics.

pip install intensify

Binary wheels are published for Linux (x86_64, aarch64), macOS (Intel and Apple Silicon), and Windows (x86_64) on Python 3.10–3.12. Source builds require a Rust toolchain; install via pip install 'intensify[fast]'.

Quickstart

import numpy as np
import intensify as its

# Simulate event times from a self-exciting process.
model = its.Hawkes(mu=0.6, kernel=its.ExponentialKernel(alpha=0.55, beta=1.4))
events = model.simulate(T=80.0, seed=1)

# Fit mu, alpha, and beta jointly from the observed events.
result = model.fit(events, T=80.0)

print(f"Branching ratio: {result.branching_ratio_:.3f}")
print(f"Log-likelihood:  {result.log_likelihood:.3f}")
print(f"Fitted params:   {result.flat_params()}")

# Visualize the fitted intensity.
fig = its.plot_intensity(result)
fig.savefig("quickstart_intensity.png", dpi=160)

Representative output:

Branching ratio: 0.547
Log-likelihood:  -66.671
Fitted params:   {'mu': 0.6271952244498643, 'alpha': 0.5470266035451343, 'beta': 1.0562059205150198}

Fitted Hawkes conditional intensity

Additional workflows:

# Multivariate connectivity: estimate directed excitation strengths.
kernels = [
    [its.ExponentialKernel(0.20, 1.0), its.ExponentialKernel(0.05, 1.0)],
    [its.ExponentialKernel(0.10, 1.0), its.ExponentialKernel(0.25, 1.0)],
]
mh = its.MultivariateHawkes(n_dims=2, mu=[0.5, 0.6], kernel=kernels)
mv_events = mh.simulate(T=100.0, seed=4)
mv_result = mh.fit(mv_events, T=100.0, fit_decay=False)
print(mv_result.connectivity_matrix())

# Goodness of fit: time-rescaling theorem residuals.
from intensify.core.diagnostics.goodness_of_fit import time_rescaling_test

ks_stat, p_value = time_rescaling_test(result)
print(f"KS stat={ks_stat:.3f}, p={p_value:.3f}")

# Cox process: latent, time-varying intensity for event-stream data.
lgcp = its.LogGaussianCoxProcess(n_bins=80, mu_prior=-0.2, sigma_prior=0.6)
events = lgcp.simulate(T=10.0, seed=11)
print(len(events), "events from an LGCP prior sample")

Features

  • Process families:
    • Poisson: HomogeneousPoisson, InhomogeneousPoisson (callable intensity or piecewise-constant rates).
    • Cox: LogGaussianCoxProcess (LGCP), ShotNoiseCoxProcess.
    • Hawkes: univariate, multivariate, marked, nonlinear (softplus, sigmoid, relu, identity links), multivariate-nonlinear, and signed (inhibitory).
  • Kernels: exponential, sum-of-exponentials, power-law, approximate power-law (Bacry–Muzy), and nonparametric (piecewise-constant). Each kernel is supported across all MLE code paths.
  • Inference: MLE with hand-derived closed-form gradients (no autodiff in the hot path); recursive O(N) likelihood for exponential-family kernels; EM and online (streaming) updates routed through the same Rust core; optional Bayesian MCMC via NumPyro ([bayesian] extra).
  • Diagnostics: time-rescaling theorem (KS and QQ on inter-compensator increments), AIC/BIC, and residual intensity.
  • Simulation: Ogata thinning (general) and cluster/branching (Galton–Watson), both implemented in Rust.
  • Stationarity enforcement: projected gradient for multivariate Hawkes; the spectral radius of the kernel-norm matrix is stored as branching_ratio_ on every multivariate FitResult.
  • Architecture: Rust core (intensify._libintensify) for kernel, likelihood, gradient, and simulation hot paths. Pure-Python user-facing API. The package raises ImportError at import time if the compiled extension is unavailable.

Comparison with tick

tick is the established Python library for Hawkes-process inference. intensify covers a broader set of process families and kernels, and its exponential-Hawkes path is competitive with tick on wall-clock time while requiring less manual configuration. The summary below is intended as a quick orientation for users choosing between the two; both libraries remain valuable, and tick is a sensible choice when its feature set is sufficient.

Feature coverage

Capability intensify tick
Inhomogeneous Poisson (arbitrary rate function or piecewise-constant) yes simulation only
Log-Gaussian Cox Process (LGCP) yes
Shot-Noise Cox Process yes
Joint MLE of (μ, α, β); Hawkes decay fit from data yes decay must be supplied
MLE for power-law, approximate-power-law, and nonparametric kernels yes
Marked Hawkes fit with any kernel yes
Nonlinear (softplus/sigmoid/relu) Hawkes; signed kernels yes
Multivariate stationarity enforcement (projected gradient) yes
Time-rescaling test on inter-compensator increments yes yes
Python 3.10–3.12 support, prebuilt wheels yes 3.8 only, C++ build

Performance

The benchmark suite builds seeded synthetic Hawkes datasets, fits the same model repeatedly, and reports median wall time over three runs. The comparison with tick locks the exponential decay β, because tick requires the user to supply it; intensify also runs in joint-decay mode, where β is estimated from data. Full methodology and reproduction commands are in docs/benchmarks.md.

Multivariate exponential, decay-given (mv_exp_5d), median wall time:

N tick (ms) intensify 0.3.1 (ms)
501 1.0 0.5
2,249 2.0 0.8
9,271 6.0 2.4
27,519 15.0 6.9
91,249 48.0 22.2

Parameter-recovery RMSE on the same problems is within 0.01 of tick at every N, and slightly lower at the larger sizes (full table in docs/benchmarks.md).

In joint-decay mode — where the kernel decay is fit alongside μ and α rather than supplied by the user — mv_exp_5d at N=1099 runs in about 14 ms. This is the path most lab users want, since avoiding a separate cross-validation loop over β is one of the practical motivations for the library. tick does not provide a comparable mode.

For kernels outside the exponential family — power-law, approximate-power-law, nonparametric, signed, marked, and nonlinear — intensify provides MLE paths that tick does not. The nonparametric path is viable at modest N: a 500-event fit completes in under one second using the binary-search bin lookup introduced in 0.3.0.

Documentation

Full documentation: https://hillmatt7.github.io/intensify

Citation

If you use intensify in academic work, please cite it:

@software{intensify,
  author = {Hill, Matthew},
  title  = {intensify: A Python point process library with Rust-backed inference},
  year   = {2026},
  url    = {https://github.com/hillmatt7/intensify}
}

See CITATION.cff for the machine-readable form.

Contributing and changes

License

MIT — see LICENSE.

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

intensify-0.3.2.tar.gz (114.5 kB view details)

Uploaded Source

Built Distributions

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

intensify-0.3.2-cp312-cp312-win_amd64.whl (328.7 kB view details)

Uploaded CPython 3.12Windows x86-64

intensify-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (433.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

intensify-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (411.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

intensify-0.3.2-cp312-cp312-macosx_11_0_arm64.whl (393.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

intensify-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl (418.0 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

intensify-0.3.2-cp311-cp311-win_amd64.whl (328.7 kB view details)

Uploaded CPython 3.11Windows x86-64

intensify-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (431.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

intensify-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (410.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

intensify-0.3.2-cp311-cp311-macosx_11_0_arm64.whl (395.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

intensify-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl (418.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

intensify-0.3.2-cp310-cp310-win_amd64.whl (328.8 kB view details)

Uploaded CPython 3.10Windows x86-64

intensify-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (431.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

intensify-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (410.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

intensify-0.3.2-cp310-cp310-macosx_11_0_arm64.whl (395.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

intensify-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl (418.7 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file intensify-0.3.2.tar.gz.

File metadata

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

File hashes

Hashes for intensify-0.3.2.tar.gz
Algorithm Hash digest
SHA256 6cf56105bc9c99d5752dc6fee92c5ba8b539dbd18e2eb3c2bdf6622df6b6824b
MD5 33be6a8349ee56b7da9fa70b9135fd46
BLAKE2b-256 fe850f1ceb2a94d270d253b017b4835c4a24986ce5c06d12d4067961aacc5357

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2.tar.gz:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: intensify-0.3.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 328.7 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 db4c088b9464823b04e8b85e5663f18909c281252d561029a870652641fc3b04
MD5 94e9659cd786152753ad433bb604255f
BLAKE2b-256 bfba44c5ed3d61cd139fbf5c75465d6ba5e8c16f98fca272d6cfeb3093eec28c

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c66a3c518ca5d7c951d29e7b18f976ccf521cea5a6f5d2feeb94e8b4e6fb68a
MD5 d4bce325cafc4c3abdeeb04aa4c1ab30
BLAKE2b-256 06ee701e8ff3e7df2cde53ee07e23d2447af242213fff4a88e3941bf3aaed078

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 59a098324fd07b3bf03cc49d6eb94c346738d91416f2bda6ba14d440eb3dce50
MD5 3b8c2e3c14eb9d6f43a8a19aad784053
BLAKE2b-256 43788f08aac44dc8a909a68e5fa7537e10a466344916c9b0314d91a7e0a83dd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca40c7f15b76a73af3d2979dbe6e7b7600d1245ee88b9abdec67208e4d887761
MD5 0e6bce2069b6a04a82bb2331986bd984
BLAKE2b-256 74c9175ca4efb3a1ca45e879cd4ea4699ad8216f91c09a5907758a5856031bdb

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0b42a4edd23b5e727ba30509f51f88df8999c86209437e8e75c0a2286d1bac98
MD5 8eecb602b67af7efb9157d9d923b854d
BLAKE2b-256 9f6aaa580672e67cc875f68a848fa89ae892f07f4cc5f9751e83001ffa91b2b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: intensify-0.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 328.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8ec577c0588173ca41c59b08a84d18c5375ed9e1e4c1c9e9861e9cccb7c50c8f
MD5 98ab753d2970d36e182c15ff477e8e9e
BLAKE2b-256 f449f52b447de7edddd8f61219daf91a4a4213b35b11f223b1917e1209c017c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0af9790c7dd992efb596b6509d2eadcab74f8770f47d2745248530c1368a7cb4
MD5 60b8e33bec5dc236467cf52f568ab2c3
BLAKE2b-256 eae3d14d13532e77a093b010232ee19528c229a30a808757746463c11ad8edc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ccd3d70baf49ceff739fccccbdae30e8e8df7d76a0b2e59747697b0866dc806f
MD5 dd3f3d81663eac7caf4ea181ed8d233d
BLAKE2b-256 7a86576b1496de67a9aa30f903af40ed3e1032b5116900f50d008fa90001fa00

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c8745f6857bf7c87ed3c18bbd6860f25f543a5c50b37efc0f86411907954ffc1
MD5 4aa824eac7332d67af68973859fece85
BLAKE2b-256 ef648182c0d30aaf5b1fb33ab01e7b993a3ec36e644c6d8eb0861ea24ff74629

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 903b495c8df60865af44bc6edcca211a2a2dd8478cdb662fbe64a03b7e5599ae
MD5 b27516fd07f98d7474dc7969864ba406
BLAKE2b-256 335d4fa4c127a7679f3acd4a4bda8c7a7b3c3b6b35a1d23e81ac2206fb952bc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: intensify-0.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 328.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for intensify-0.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e3153bdc85d75e470b4b996d3a3ab258661a380d0dcf3d709572faeb3ee49020
MD5 e329794bc88b3723dba452f22ec28b38
BLAKE2b-256 42dd8c028f81230669f3d35b94a13689d4a358fff57d67910ef3c5eae65e1686

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0650e148b649fdab18daa8fd88ca8dbfa456c7bcad24c6628ca38bc14e9cc9b
MD5 0e3ce2ef680c795e360b6c013a5b9fb8
BLAKE2b-256 2cb4889d0db25e371d73617a158644ae503841f3e096e05a30d2bf33fbe48e7a

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ec23e5be5dae76d816662f632757ffcf7d077d8c55748387f607057bdf972f3f
MD5 90da6637736dba7eec1b95eee9a22562
BLAKE2b-256 f8ea560d3ce56e4e6f8d6226d578e85befe94076592f40276bbf8fd41ef78972

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d576bf3020b73078b41d2f3b72d5744e8f111dfa8ee9a73de9d85e2c026fdfe
MD5 fe41caf883c713bcd6554989aeb48583
BLAKE2b-256 c519803c9b8c8f80f40799c5cdfffe90b5aff06e3e08acf0d7ee41814a6d88e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on hillmatt7/intensify

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

File details

Details for the file intensify-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for intensify-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3ca77a98e76b55ee458f537d42a90341432489e7bc5b5f94d1bdb1f7cfef85fd
MD5 1e6078f51ec94c77df77feb0324a715d
BLAKE2b-256 c9a8709118fbc7aca95f82a4bfcaa862513f2361109e21c1ab89350c8644839d

See more details on using hashes here.

Provenance

The following attestation bundles were made for intensify-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl:

Publisher: publish.yml on hillmatt7/intensify

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