Skip to main content

Random Forests for Change Point Detection

Project description

Random Forests for Change Point Detection

Change point detection aims to identify structural breaks in the probability distribution of a time series. Existing methods either assume a parametric model for within-segment distributions or are based on ranks or distances and thus fail in scenarios with a reasonably large dimensionality.

changeforest implements a classifier-based algorithm that consistently estimates change points without any parametric assumptions, even in high-dimensional scenarios. It uses the out-of-bag probability predictions of a random forest to construct a classifier log-likelihood ratio that gets optimized using a computationally feasible two-step method.

See [1] for details.

Installation

To install from conda-forge (recommended), run

conda install -c conda-forge changeforest

To install from PyPI, run

pip install changeforest

Example

In the following example, we perform random forest-based change point detection on a simulated dataset with n=600 observations and covariance shifts at t=200, 400.

In [1]: import numpy as np
   ...: 
   ...: Sigma = np.full((5, 5), 0.7)
   ...: np.fill_diagonal(Sigma, 1)
   ...: 
   ...: rng = np.random.default_rng(12)
   ...: X = np.concatenate(
   ...:     (
   ...:         rng.normal(0, 1, (200, 5)),
   ...:         rng.multivariate_normal(np.zeros(5), Sigma, 200, method="cholesky"),
   ...:         rng.normal(0, 1, (200, 5)),
   ...:     ),
   ...:     axis=0,
   ...: )

The simulated dataset X coincides with the change in covariance (CIC) setup described in [1]. Observations in the first and last segments are independently drawn from a standard multivariate Gaussian distribution. Observations in the second segment are i.i.d. normal with mean zero and unit variance, but with a covariance of ρ = 0.7 between coordinates. This is a challenging scenario.

In [2]: from changeforest import changeforest
   ...: 
   ...: result = changeforest(X, "random_forest", "bs")
   ...: result
Out[2]: 
                    best_split max_gain p_value
(0, 600]                   400   14.814   0.005
 ¦--(0, 400]               200   59.314   0.005
 ¦   ¦--(0, 200]             6    -1.95    0.67
 ¦   °--(200, 400]         393   -8.668    0.81
 °--(400, 600]             412   -9.047    0.66

In [3]: result.split_points()
Out[3]: [200, 400]

changeforest correctly identifies the change points at t=200 and t=400. The changeforest function returns a BinarySegmentationResult. We use its plot method to investigate the gain curves maximized by the change point estimates:

In [4]: result.plot().show()

Change point estimates are marked in red.

For method="random_forest" and method="knn", the changeforest algorithm uses a two-step approach to find an optimizer of the gain. This fits a classifier for three split candidates at the segment's 1/4, 1/2 and 3/4 quantiles, computes approximate gain curves using the resulting classifier log-likelihood ratios and selects the overall optimizer as a second guess. We can investigate the gain curves from the optimizer using the plot method of OptimizerResult. The initial guesses are marked in blue.

In [5]: result.optimizer_result.plot().show()

One can observe that the approximate gain curves are piecewise linear, with maxima around the true underlying change points.

The BinarySegmentationResult returned by changeforest is a tree-like object with attributes start, stop, best_split, max_gain, p_value, is_significant, optimizer_result, model_selection_result, left, right and segments. These can be interesting to investigate the output of the algorithm further.

The changeforest algorithm can be tuned with hyperparameters. See here for their descriptions and default values. In Python, the parameters can be specified with the Control class, which can be passed to changeforest. The following will build random forests with 50 trees:

In [6]: from changeforest import Control
   ...: changeforest(X, "random_forest", "bs", Control(random_forest_n_estimators=50))
Out[6]: 
                    best_split max_gain p_value
(0, 600]                   416    7.463    0.01
 ¦--(0, 416]               200   43.935   0.005
 ¦   ¦--(0, 200]           193  -14.993   0.945
 ¦   °--(200, 416]         217    -9.13   0.085
 °--(416, 600]             591   -12.07       1 

The changeforest algorithm still detects change points at t=200, but is slightly off with t=416.

Due to the nature of the change, method="change_in_mean" is unable to detect any change points at all:

In [7]: changeforest(X, "change_in_mean", "bs")
Out[7]: 
          best_split max_gain p_value
(0, 600]         589    8.625  

References

[1] M. Londschien, P. Bühlmann and S. Kovács (2023). "Random Forests for Change Point Detection" Journal of Machine Learning Research

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

changeforest-1.1.3.tar.gz (368.7 kB view details)

Uploaded Source

Built Distributions

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

changeforest-1.1.3-cp312-none-win_amd64.whl (319.0 kB view details)

Uploaded CPython 3.12Windows x86-64

changeforest-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

changeforest-1.1.3-cp312-cp312-macosx_11_0_arm64.whl (468.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

changeforest-1.1.3-cp312-cp312-macosx_10_12_x86_64.whl (480.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

changeforest-1.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (943.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

changeforest-1.1.3-cp311-none-win_amd64.whl (318.7 kB view details)

Uploaded CPython 3.11Windows x86-64

changeforest-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

changeforest-1.1.3-cp311-cp311-macosx_11_0_arm64.whl (469.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

changeforest-1.1.3-cp311-cp311-macosx_10_12_x86_64.whl (481.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

changeforest-1.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (945.4 kB view details)

Uploaded CPython 3.11macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

changeforest-1.1.3-cp310-none-win_amd64.whl (319.0 kB view details)

Uploaded CPython 3.10Windows x86-64

changeforest-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

changeforest-1.1.3-cp310-cp310-macosx_11_0_arm64.whl (469.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

changeforest-1.1.3-cp310-cp310-macosx_10_12_x86_64.whl (481.6 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

changeforest-1.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (945.4 kB view details)

Uploaded CPython 3.10macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

changeforest-1.1.3-cp39-none-win_amd64.whl (319.8 kB view details)

Uploaded CPython 3.9Windows x86-64

changeforest-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

changeforest-1.1.3-cp39-cp39-macosx_11_0_arm64.whl (469.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

changeforest-1.1.3-cp39-cp39-macosx_10_12_x86_64.whl (481.9 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

changeforest-1.1.3-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (945.9 kB view details)

Uploaded CPython 3.9macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

changeforest-1.1.3-cp38-none-win_amd64.whl (319.1 kB view details)

Uploaded CPython 3.8Windows x86-64

changeforest-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

changeforest-1.1.3-cp38-cp38-macosx_11_0_arm64.whl (470.2 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

changeforest-1.1.3-cp38-cp38-macosx_10_12_x86_64.whl (482.1 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

changeforest-1.1.3-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (946.2 kB view details)

Uploaded CPython 3.8macOS 10.12+ universal2 (ARM64, x86-64)macOS 10.12+ x86-64macOS 11.0+ ARM64

File details

Details for the file changeforest-1.1.3.tar.gz.

File metadata

  • Download URL: changeforest-1.1.3.tar.gz
  • Upload date:
  • Size: 368.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for changeforest-1.1.3.tar.gz
Algorithm Hash digest
SHA256 4c1175490390d9573f76fbecb86297ea310d1a8be177c3a6a95db0852484f2a0
MD5 ac54772548251dcd4c9e752121e79f5b
BLAKE2b-256 0857da6783e99d73f94b6d6f0b4dad052db43bc27ed69f8b9d464c81071d7ccc

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 853e43712f46d6097728ce5db74654f67af1476b35cc5c31877f8e57fa1a0b5b
MD5 1e7f3917000de536c5a429741be1c3b1
BLAKE2b-256 57af5557e3ee393bb82bfa3ad6a57a894c8f41b62aa0c7bf74382f81987ec7ba

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 010ed6e1d9ff786bff1e41d11ca4ea28f74e24cef9f63a93db6284c9a4bb6310
MD5 82b502138f86e20aca1c0df7658d0485
BLAKE2b-256 91e1d67dfcbab000432eb85f452d3973c0c3c1a9a132f7f0363c808c6e226e46

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8bbf307d7c42063be6472ed226ef7140caf7f12d043088e49b4846eff80c6807
MD5 7db384b6e0cb4c1499352703952d9bba
BLAKE2b-256 6143d40f24a3f525b8d2debd640653cc1642c34c75dd3cf8c267aa092e1db3a1

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e79a96cdf8823f6b3a4c3c8cad9d84a0b949e526f120b04baefc2c57b5859b61
MD5 99c7d55bb6e48ab6f6fca9f2e57be170
BLAKE2b-256 e0d9d65d3c06dd9f3e03df023d9aa24e9709e92c8c4423d457ac0c615a412bfe

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 cda0acd40e70136cf796262d643d39322c65531823a7e5cfacad8570e0dd5dd2
MD5 51c2b6e727b8def687eb1eeed0970daa
BLAKE2b-256 5e9110c351affad7ba020f577f6f4a2a0f3b9e14c9d1ccc6e3a386e8d57a2af2

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 9efe71142055f0d23f86488b168870f105570713d3053781e46d7ed84cc69922
MD5 e28783bf1bbedfb2d3129763a1ebef7f
BLAKE2b-256 6163b82e2e45b616c4933d2c958eea1e4f6cd35cd39c0eabe77098def9b49516

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 25c60a1d60a03be12e700167ebad60faf771bfb55ebaa538a4409a5a44243355
MD5 92a1a428693570ca80c8bba7763e6561
BLAKE2b-256 bf73798fe8dd164687dcf4a7223fa503a8a212e4908565743d7c301b44a786eb

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6e4b0bc159df79e66d220cf78839f95b195ad270073e5e0e7683bfc320229445
MD5 fb55751171490668cf41619feda1c062
BLAKE2b-256 b83e78b177db69ceadaad99d112cd9530658841b9fc91dc244c77f88b9a6db79

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dfd4f35d486786e7fcdee6f3a89b62749f817977849f6c7f724869f277c0789e
MD5 f31e9bb19209c0e230bc5f57492dd132
BLAKE2b-256 357eac448c340b8b7a1100410390fb2afa1cae3d813b096cf793f5337e0d4a8e

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 b3146d017b309b0b0eaa927399ca9c9d63a93373463910acedf1d16d31549332
MD5 bf9540cb6ffe20ad25bf18231a0594c0
BLAKE2b-256 8c77bb333aafe28633121a9aa1d94dab301d921fd8720c696ae3a217edc84a20

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 3532de5de3b87264f959e94920bbcb2238a672231760281ff671f46c9f25d4cf
MD5 6989ef0d31f86b14890006bec07efcb7
BLAKE2b-256 a4542b44de936bd524c8400e9bac83e84a7079480a30144ef5a7db46ca393cc0

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 42ad383cdc71e5991e89166763c77fe61a7d955709738e8d3dcf8192fcb73726
MD5 9cfb03b14ee1e3819736eb7ae5f883f3
BLAKE2b-256 29e4c8cf274387878bea5ff30764b9c07cfcef5b0779b3fe64a887944d6bc72b

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1321eef583a549c62e2d0ddcf01b361476f166dff57fd7d053e603d62c6051d8
MD5 bb7edf2a5e3e1f29a061897fc193f782
BLAKE2b-256 3a8e7f8815a5d18e68de8b56f681c2020e5f58036c89d1c34d74aeaaf244e98f

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 84e88c090faa761add58342f6d39cb66480f5823c0abe418fca2a8f69879c0c9
MD5 8f9371d2e76afb5233768129db9ae7eb
BLAKE2b-256 b500f9fd038929e661d64d0fd773f597c0ada64039363d50f61b0247e029c926

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 52b774c5fe159a18c59d135561b24cf4e3d1c8c934a29a6c4d3835cb1cdadd87
MD5 2a8d26500c7079ce46e31293028c2674
BLAKE2b-256 7a7e099806b60b0bcebdb63728851470420a3904ce3a13d9a074e965e420302b

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp39-none-win_amd64.whl.

File metadata

  • Download URL: changeforest-1.1.3-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 319.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for changeforest-1.1.3-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 b5fd7a3d52958388bddb2737f4abac105d81e5f48ed2b567c17d14c432ee52cd
MD5 ec83f1b1aba0dbebba4fc3bf6d624edc
BLAKE2b-256 8ed0020c2e5049d9ea9a014ef69244e2422ff89885514227f64ba2b51e26f658

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7e09abe5d658f69da8a165680185aeab0afeb928177ba11bc3b941b2b6dee8a
MD5 ded68521eac86cad548d4a87507dce24
BLAKE2b-256 6766b5a1ea943a769e0e5cacb1ae91ca5cb5983447f08100dbf42f78d707e8b0

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f11280298a91acc6712e2951a9eb1aed5ab3d318deb154198868c56e05f4962
MD5 50c65cc4a9a43066fbf2b77c7e8fcc01
BLAKE2b-256 91d74ed45ee89ed66d5b3c0e3c944752659fb4f895716af4c685092425d28bd4

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 19153185eb23d8be254fb5aa0fde07e8c0c3dc78101fe55258f8adb8a3b6154e
MD5 3da0ea02b1d2bee98dc2d3f2561ed483
BLAKE2b-256 18553bd66bf4db80bccd6c814875449f9865ee902f93cc86db05267ecebb536e

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 efd48455232d10282e74600e102a75e454e61be017e4bebe51e4b17fb336391e
MD5 df06fe058db9181aa6e08cd896a3a824
BLAKE2b-256 41989a79991e017e3a058d1c2dee6eb51c21dc8a46564ebf47d7846f5ce40fba

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp38-none-win_amd64.whl.

File metadata

  • Download URL: changeforest-1.1.3-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 319.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for changeforest-1.1.3-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 15c6dba6d1bf5485ec9e9042ea3aee53189777acd999d6ee342a86bb5692feb5
MD5 2d84047d7e48d53c8c0b0060cd7242b3
BLAKE2b-256 eb72f71713cc34fd04332a433b98a2a881785b6eaf442a65f127fa2559466cc4

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7af8f1d0bb45a212ff07f63f3723c8bd2fe16bdc9949c43e297c96631953ecae
MD5 f2a5216204fb8a8ae885cc7fc39254c6
BLAKE2b-256 8594c646c4cbd47ebc1a90e195c5e7f8d92693f86141a766d4e0a0dfbae6a353

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 79ac6a9507e35b713560722fcbf51b8ad3c510b78566dc28f58243d1cb47b70a
MD5 b397393ab53c7d34a212e4fd772897a3
BLAKE2b-256 763e48fa70415067675ee6b121fca0f20cbd0a84e8f2c8569421229ae82c61c0

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9009d9664ffcd825ab25e81c63302c6dc8e92032873c55aed5116f93aa99697d
MD5 ab2ed37d7567097286e8f503c8207207
BLAKE2b-256 efab7458cf04470deee143653a7a494ea6d7ce9d74010df4e2ce014c5e6a8395

See more details on using hashes here.

File details

Details for the file changeforest-1.1.3-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.3-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 cda7c8f69590a5192b66b9a80fd812a97e0a501b457e1847f7cfae7221e73442
MD5 11b8244ab497fefc0995faab980208a7
BLAKE2b-256 b5b06cedee09cd9b0296063d985e056ae70ef6bc55b48bd7fe96ecb765a8bdd1

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