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.4.tar.gz (368.8 kB view details)

Uploaded Source

Built Distributions

changeforest-1.1.4-cp312-none-win_amd64.whl (319.3 kB view details)

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

changeforest-1.1.4-cp312-cp312-macosx_11_0_arm64.whl (471.2 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

changeforest-1.1.4-cp312-cp312-macosx_10_12_x86_64.whl (481.3 kB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

changeforest-1.1.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (946.1 kB view details)

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

changeforest-1.1.4-cp311-none-win_amd64.whl (318.9 kB view details)

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

changeforest-1.1.4-cp311-cp311-macosx_11_0_arm64.whl (471.8 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

changeforest-1.1.4-cp311-cp311-macosx_10_12_x86_64.whl (482.4 kB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

changeforest-1.1.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (947.8 kB view details)

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

changeforest-1.1.4-cp310-none-win_amd64.whl (319.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

changeforest-1.1.4-cp310-cp310-macosx_11_0_arm64.whl (471.8 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

changeforest-1.1.4-cp310-cp310-macosx_10_12_x86_64.whl (482.5 kB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

changeforest-1.1.4-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (947.9 kB view details)

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

changeforest-1.1.4-cp39-none-win_amd64.whl (319.9 kB view details)

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

changeforest-1.1.4-cp39-cp39-macosx_11_0_arm64.whl (471.9 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

changeforest-1.1.4-cp39-cp39-macosx_10_12_x86_64.whl (482.7 kB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

changeforest-1.1.4-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (947.6 kB view details)

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

changeforest-1.1.4-cp38-none-win_amd64.whl (319.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

changeforest-1.1.4-cp38-cp38-macosx_11_0_arm64.whl (472.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

changeforest-1.1.4-cp38-cp38-macosx_10_12_x86_64.whl (482.9 kB view details)

Uploaded CPython 3.8 macOS 10.12+ x86-64

changeforest-1.1.4-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (948.1 kB view details)

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

File details

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

File metadata

  • Download URL: changeforest-1.1.4.tar.gz
  • Upload date:
  • Size: 368.8 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.4.tar.gz
Algorithm Hash digest
SHA256 b07f7da19e613ba04e613618e80e1cee4c2017f2c1f662f35cc59504f6669136
MD5 6c16d13ca56d9af1d2c0f5cb6f64fa6b
BLAKE2b-256 67afebca11be1424948e04d5c912b1b22512d7df59c2ed696a1b7b2140e919a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 af777c2db071600c12570598f38f1cd799ca0bca3f62ac3bf666410449b6ca0f
MD5 b445d72b5dcb0c05da802116bb49fa9e
BLAKE2b-256 631f565eac9fb7a77a69732a15f683cf8a07721e2740899214ae5c944d889dd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 36dbae651a1b49279d14fd114e7772dcd85c46af9d86ee12dfb69f9282a1fe45
MD5 446e8f301945640d6b276683d095e4ce
BLAKE2b-256 4cec318518bbc64c2b843b428c145e271477c59cd5769a84d0b9416a838fcbba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 676a549e6478dd646a736baa6aa7207d37c86ae058bf13c3a916c598ec052680
MD5 af5fae3daa3eba00179b709d038c89f1
BLAKE2b-256 17d7112f73a11fd4285866959d26240c4a97370d020c2b9633d6fe1b840356b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 01c2de3ce7e38660a6e3259123db9fe52d9455b874e493449780ff6a095fcdc2
MD5 05c4caa1d17c5eb7ef4a1fb184f609d8
BLAKE2b-256 a7da86525aa0bce0570fc6c2e854ec589661264801c61b798ebd0df3c7f862d9

See more details on using hashes here.

File details

Details for the file changeforest-1.1.4-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.4-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 298d4d3162ace6b78f1c43dfafff47f7e11c0f6c3e64e896645c631909863e4e
MD5 39af36726a4e210ab5b863b0222e1235
BLAKE2b-256 39f6452c880ad871cb1502394ae3429fd6b05b13f07ef7f794eabdca4400b241

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 20ab022f50110220b9a0af440b2d712818886f4af335244fa305ef4e9cccc3c8
MD5 4cc643c629c82a229dd6c08bb24691e2
BLAKE2b-256 faa9cb30593670cbdc83f72c20210b8dafed60533d42afab8abe82e9d11c4bb0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6eb2c6ec1cc939414a7e970abb38bab933380f14840836e7a842935c568f7be8
MD5 6d70ce9564614445e643893ab73f98f3
BLAKE2b-256 b4e0b91db1aa7ae4d3765c6961fd8c09bac065953392ff5204407c8335d0c25d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b108310e83c891a7651b556e101a3b0e7b1c5d99d755f202058f78268a84e4cf
MD5 fbd38f3b084c3ebd5632a29a569e596e
BLAKE2b-256 70d4c0ec9385faa252dde3ae6c80962d30a6e26240b96c626587ffc885a261aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d37fb8e6441ffc47e5f1e6f18b2c971794a9684690a1ea7db6fc93989f561d57
MD5 6418998599149ce5db6d9b9598997a2a
BLAKE2b-256 c4666a372ef93ebcbac85462609fd075e5141b6d2a8ef8c2560b91ebe1a1f51e

See more details on using hashes here.

File details

Details for the file changeforest-1.1.4-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.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 579dd0f39bf8dd4be20ce62ac79717566e01113c187ab64cca1d383ce617f49d
MD5 8b483a376661e94343879a5358aa426b
BLAKE2b-256 02044304496938a86665eff52389328cbce2d945989c2872be9e377d422be6c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 14af748c5ed90d0fd3ef5010d5294181ab4cf712811fe5ec8e41d3a86c1c4f8f
MD5 4b7ece63689b1a1cde0b0ceca1c7735c
BLAKE2b-256 751f0f0547e0485384cbf7f051965f12a354ed7d72ae47a2739d5d85428726fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 47710f01b83c81aa706acd13ce726ff0775e09ce1903a0cfd221d57c423e626f
MD5 35fa5001a02a84f5e13276437136feed
BLAKE2b-256 330c1eefc962bcd3f082c754265524d7d3b9e8d9839ba4c3ff335ab7ba67deba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3ee3a4c66e752e20d7aea9a5160f46884bb61f200a6079c76e988f07099d161
MD5 40e7c98487f4fe68d4762084d027b455
BLAKE2b-256 d76de941363cf7f1a3bd9419383cd1bc0940a7f908f95c8cdb70938f35022ada

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a29df97759b6f0bea2292155e01d730caa4769ffbc530b9dcefc1bf8d97650c6
MD5 7ac541a90988315f7693f10e8843cbef
BLAKE2b-256 07db518f9f8fb6215d06092c03ac3d43baa15fd652d1ed7eda709fe61c718d7c

See more details on using hashes here.

File details

Details for the file changeforest-1.1.4-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.4-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 c265fdba8dbbb1485d7cf5e35ffbfed34c30d3945a50669a33b3ff3276557ffb
MD5 22d0e11994458bbb6c31ae99a60775df
BLAKE2b-256 820b70c92e5ba24fa2ac1ed8f921f8cee247c4f27b2342ca51382a86fe6b1c5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 e0744fe70da1e1e762f0c95e840fb90627979f20c9d84ac35541b201526465d3
MD5 a141c27d819ea1083ee6504662af8fd4
BLAKE2b-256 8c1bc411b5a0527b1a2b87463db43a889221836577014af8261f1c190e0c3c6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89aa6677a46857b0a2ea17e7157d6132fabfd9f1fb9e808237461184423524dd
MD5 9f43860dda22e2f0b86e955661ecef10
BLAKE2b-256 85eab84cba0f52b1b063c7d77002085f3bf0d0a8c65fc548e65bacbe819d9f6a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 67ec593535c4558253c9e3987094460a567ac079b4a49a6151fc7c4def326ea0
MD5 ef9a8b00cbb6f08447900356482de273
BLAKE2b-256 9b7418f441221a0712f56f6ee112d6492a6d6205172a685961ee68ae0a782d4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 53825c4364648f53fa1eb18aa86c54a103c45550632bd8d3eb758b54d5ba7e78
MD5 2de7bbcb1ced94081ec301b4f4aaba8d
BLAKE2b-256 5246237de387012fa0b67ab82dcd6e18b889182362c9c8c14065a0866f954ab5

See more details on using hashes here.

File details

Details for the file changeforest-1.1.4-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.4-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 7a8468bc94f5528e820f9032242b393ab0cba3b84f8a45ece7635e2395345dea
MD5 007c9fe077532887a8026713c2c3c508
BLAKE2b-256 329416c6a4358a8c37ae6178ebdb5a4f6c1db6cc7e0246f488825c426ee98d67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 ae338a6cca77a449c3b1f60f9a96298e68e7072ee0bcd13fde368c170696bfe1
MD5 297877a82f5f3c36bc070f5d95609b37
BLAKE2b-256 a26ab0385cf3f4b38c278d38c1243e8bdffc242230321e31a60a2385ac34c6d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3035c9adce8313ace53b1905139ff0bdcdf382b6da1206555e7fe84f487aece8
MD5 63931c598b5714b6bc0837879e834c9d
BLAKE2b-256 05afa1de461f41974350212c6b400f0e092ac43e9a948411b70690493a09c34b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e85751b79ce34df8fb40ec93221f0b085b7c215c1b0fabf2b6872d284af5bffd
MD5 29f6cef4fed8cd524ab01994115bd8d8
BLAKE2b-256 236719769dc91333a5012f9365d106dbd2ae207b0513227a47c5eb1597948f21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changeforest-1.1.4-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e74ec4026e77b0d87f1bca3fc70f11cd412858a82582934f2ca3fa9f6afbc0df
MD5 d42424e77c0c4038454e01c1f710acc0
BLAKE2b-256 e9a63af0b822f6a585a1be82c6bf8f34a560c4e3dbddf5c8fec56427d11f855f

See more details on using hashes here.

File details

Details for the file changeforest-1.1.4-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.4-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 3da834b7f9216a26b86f6ae62c01a3ce2ebeb47aa95f14d98a0866e989a0c6e6
MD5 f009f14183baea5984f59e55b09ee398
BLAKE2b-256 0c20eda2c277db554d7335dc3316595a0aa2d1fda7717021e2e62ff171d76856

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page