Skip to main content

timesift (Python)

The Python side of timesift. It fits and compares representations of time-varying data against a prediction target, from the same one call the R package offers, and it answers to ../inst/spec/representation.md, the document both implementations answer to.

import timesift as ts

fit = ts.timesift(plots, logger, y="sp_*", id="plot_id", time="datetime",
                  models=[ts.elasticnet(), ts.forest()],
                  sift=ts.grains("day", "week", "month"),
                  resampling=ts.cv(v=5))
print(ts.summary(fit))
timesift  80 targets, 4 responses, 5-fold random CV, tss

candidate                    mean    won  responses
forest / week               0.503      0  separate
elasticnet / month          0.504      0  separate
forest / month              0.507      1  separate
elasticnet / day            0.515      1  separate
elasticnet / week           0.528      1  separate
forest / day                0.535      1  separate
ensemble                    0.571      -

weights  elasticnet / week 0.37   elasticnet / day 0.22   forest / month 0.17   elasticnet / month 0.12   forest / day 0.09   forest / week 0.04

targets and series are mappings of column name to array, which a data frame satisfies. y, x and static are selections over their own table: a column name, a list of names, a glob such as "sp_*", or a function of a name. fit.predict(targets, series) rebuilds each member's representation for the new rows and combines them, and type="binary" cuts each response at a threshold learned from the fit's own out-of-fold predictions.

What is here

  • timesift, Timesift: the entry point and the fitted run, carrying its candidates, its scores, its out-of-fold predictions and its stack.
  • native, grain, multigrain, lookback and the sets grains and lookbacks: what a representation is, before any record has been read. build_representation turns one into the array a learner is handed.
  • grain_matrix, lookback_matrix, calendar_channels, bind_channels, feature_matrix, timesift_set: the arrays themselves, reachable without the fitting layer. coverage is the count of readings per unit and bin, which is where a refused record's gaps are read off.
  • cv, grouped_cv, fold_map, read_folds, scorable_cells: the split, and which cells admit a score.
  • elasticnet, stepwise, tree, forest, mlp, cnn, rescnn (torch), and Learner for one of your own. train_control carries how any of the neural ones is trained.
  • ensemble, ensemble_fit, ensemble_combine, ensemble_weights: the stack over the candidates' out-of-fold predictions.
  • tss, roc_auc, kappa_score, model_agreement, decision_threshold: the metrics.
  • grain_ladder, select_grain, paired_contrast, tss_inflation, implied_skill: fitting across a set of grains on its own, comparing two arms cell by cell, and reading a level that was taken at its own best threshold.
  • occlusion: hold each bin or each channel back and rescore, without refitting. It takes a run or a ladder.
  • register_learner, register_metric, register_response: the three registries the fitting path reads.

The mixed-model grain contrast the R side offers as grain_contrasts() has no counterpart here. The contract's last section carries the rest of what each language holds.

The binning and the reduction are not written here. They are ../src/ts_core.cpp, the same implementation the R package compiles, reached through the _core extension that ../CMakeLists.txt builds with nanobind. What is written here is the boundary: resolving the columns, resolving the zone, and putting the result into a TimesiftMatrix.

At runtime the package needs numpy alone. A learner that needs a package declares it and stops without it.

The time zone

grain_matrix takes a tz argument. Left at None the instants are taken as already expressed in the calendar to bin by, which is what a zone-free datetime64 says. Given a zone name they are read as UTC and binned by that zone's clock, which is what the R side does for a series carrying a tzone. The same instants and the same zone give the same answer in both languages, and digests.csv carries zone rows that pin it.

A time column that carries a zone of its own names the calendar the same way, so a pandas column in Europe/Vienna bins by Vienna days without being told to. Naming a different zone in tz beside one the column carries is an error rather than a silent choice between the two.

The fold map crosses the language boundary; the fold builder does not

fold_map draws on numpy's random stream and the R side draws on R's, so the same seed gives different maps. Where both languages must see identical splits, build the map once and read it in the other with read_folds. The map is an artifact, like the response and the representation.

Two rules govern this directory

  • tests/oracle.py is implemented from the spec, not transcribed from the R source. It is the NumPy representation as it was written before the two languages shared a core, kept because reading the R code and copying it would reproduce its bugs and hide its assumptions. Nothing imports it outside the suite; it exists so the shared core is checked against an implementation that shares none of its code.
  • A digest mismatch is a bug, never a fixture to regenerate. Regenerating fixtures happens on the R side, deliberately, in its own commit, and only when the spec changed with it.

The project directory is the repository root, because a source distribution cannot reach above itself and the shared sources are not vendored into a second copy. Build and test from there:

pip install -e ".[test,torch]"
pytest

Metadata

Release files for timesift 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for timesift 0.5.0
File Size Uploaded
timesift-0.5.0.tar.gz 1.3 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for timesift 0.5.0
File
timesift-0.5.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
timesift-0.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
timesift-0.5.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
timesift-0.5.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
timesift-0.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
timesift-0.5.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
timesift-0.5.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
timesift-0.5.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
timesift-0.5.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 5.9 MB

Release files / timesift-0.5.0.tar.gz

Download URL timesift-0.5.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
b652f223707153a5955be4cadc11fcbcc44730f7776d0b4ecbc65e7585de88f0
BLAKE2b-256 checksum
How to use checksums
3a6f4305b3c71aaab49cde95dbccc430a87166192cbee6068d7ce28b11ebd178
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp313-cp313-win_amd64.whl

Download URL timesift-0.5.0-cp313-cp313-win_amd64.whl
Size 657.9 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4bf8aa1459dca22ec60a5c2be8370d151bd6a1d12dc7b3df3d0fa753a79a9bf4
BLAKE2b-256 checksum
How to use checksums
eaf6a876b322cfa9ffc313d2e15a4fc3322f1c4f4a9345a1e69143db57e4bdd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL timesift-0.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 469.7 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2cc51869aaabd81ec9a819ee4050b4b694945ffeb0d2292c74d3908074ff4f39
BLAKE2b-256 checksum
How to use checksums
13a29aea974ea71f1b57c42fb62e7b55ae871161ff35040f65a85a0c3155ddf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL timesift-0.5.0-cp313-cp313-macosx_11_0_arm64.whl
Size 425.1 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
fd8e5cf5eb594b68a7dd04bf0bc24eccaf30b897fcfd193b04610c0a5140c12e
BLAKE2b-256 checksum
How to use checksums
3d143cb1a42b117fece67de6af0217c1898a514ce837016c8ab3a0f1ea095d55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp312-cp312-win_amd64.whl

Download URL timesift-0.5.0-cp312-cp312-win_amd64.whl
Size 657.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
3c1eee18b78b6e6f81fdd33b23fe2c9bc6f64708ff82edc4fb32d1d7af0e2c00
BLAKE2b-256 checksum
How to use checksums
c10b654f8822b4d551a644b87d4ffae194b27cbde0f2e91ce843baf3c9d528d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL timesift-0.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 469.7 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
02ef205f54b9118f273243fc2633522da9dc688b16798000b50134259bcb41b0
BLAKE2b-256 checksum
How to use checksums
e1f22f1e342859aa77aa483de8d1492cf460dbe2b2c37aae7ecf3d9a208b30fd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL timesift-0.5.0-cp312-cp312-macosx_11_0_arm64.whl
Size 425.1 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5044d08aa7f1c25349031eae1be9308688201d346b37ccbffeff5ebd68999e80
BLAKE2b-256 checksum
How to use checksums
c36d4bf52379cdb3de605545621e4c60af3d54e3e11f79e440cc069b12b2493b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp311-cp311-win_amd64.whl

Download URL timesift-0.5.0-cp311-cp311-win_amd64.whl
Size 657.7 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ad310d8a1d02a69253b5f561e9cd858eddd7a8293b244184ea5d8a2fc1738fbd
BLAKE2b-256 checksum
How to use checksums
4c4de0b566f0f7adc56ccbf3f5f6f0889a7eb8b1a5c0907889a83be8a2abdce8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL timesift-0.5.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 470.3 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3319a818f6c98e1f9c69d9e0265237dd2be638ae352f1e716983972aab5f0dd9
BLAKE2b-256 checksum
How to use checksums
55f0f99cfe6b11e0d9558ed27cca513a53182ec2e8d50a869ad003c53e59f6e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release files / timesift-0.5.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL timesift-0.5.0-cp311-cp311-macosx_11_0_arm64.whl
Size 425.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
72a748bf38f0ea97df229e6e362b7548fe0f30ba5eb2d778ee0f7867f58acb87
BLAKE2b-256 checksum
How to use checksums
494796a3539d268a6b6d653b6c4e3dc02ae49571f0a786edba329a621a66cc7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

10 release files

0.4.0

10 release files

0.3.2

10 release files

0.3.1

10 release files

0.3.0

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page