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.

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, forest (scikit-learn), 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,sklearn]"
pytest

Release files for timesift 0.3.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.3.0
File Size Uploaded
timesift-0.3.0.tar.gz 616.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for timesift 0.3.0
File
timesift-0.3.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
timesift-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
timesift-0.3.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
timesift-0.3.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
timesift-0.3.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.3.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
timesift-0.3.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
timesift-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
timesift-0.3.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Total release size: 3.1 MB

Release files / timesift-0.3.0.tar.gz

Download URL timesift-0.3.0.tar.gz
Size 616.7 kB
Tags Source
SHA-256 checksum
How to use checksums
dc6432834c479381395f5cb4d6bff8482b46a4c1d8a160f11a839f7b006261eb
BLAKE2b-256 checksum
How to use checksums
56d9ecae35685b97b7a3943ad3a890f91d9d89cb99800907db8759bf4f7e1be8
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp313-cp313-win_amd64.whl
Size 417.4 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
b3b4f60605ccfc3d4f8c65ee678b72428af9d421304569df82305d59be59400a
BLAKE2b-256 checksum
How to use checksums
b360e9bb6c7dbf5c176c7db775c40175b3c04c816f955e21f495e93940f0b1c2
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 217.0 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5644047fb6a315b81e12cd79b5eeba105645e694b88fd06f6b9dbf014403bc4c
BLAKE2b-256 checksum
How to use checksums
c7a45d92b395b8650270c9ac2ecfbefbf4e8a38332b4a227a55fd8bd0662025e
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Size 200.0 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
825d967749d18b959a1a35822b28f2131870494712119e19f416c2eb49166435
BLAKE2b-256 checksum
How to use checksums
aae78c7e1910d1b1e22742cbf2411fb1a736705e389c4207c1a307274e4e8491
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp312-cp312-win_amd64.whl
Size 417.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
f4c21eabf4520ecb269c53c98eb68b4dc3792089a9d608a45f02923bf3775a9d
BLAKE2b-256 checksum
How to use checksums
9a7b384615fa7764cb8e371c305bc9ef51f524fcdc53e431ae2a60520a99505d
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 217.0 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d0df539fe546f044f53c09bdf652643722c3a244944153a58a135c497b55ad11
BLAKE2b-256 checksum
How to use checksums
d96e9ac6ff8170da0beaea0ea1da7be19104c15ed6af0b352b70e0e247041e06
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Size 200.0 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
405ba16e93ca402fccba3fe30374df2917d7243ffe7b43d3ba5ee3d2a7a5c9c2
BLAKE2b-256 checksum
How to use checksums
766a31031cd17472fb1eab891734b521194707e505857150cdb940269cd5f824
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp311-cp311-win_amd64.whl
Size 417.5 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
479cdb811150466fa03a59d433ef8d1271e5beb4165f2732fbb68a863e2aed39
BLAKE2b-256 checksum
How to use checksums
02c814877d992fae421767f3ef72c4eb3be2e229b55ee7f209982ffd98b2af32
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 217.4 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8cf822a70d0689a695a9280be44584411b0e1b6a281f82395a99c87c3265b042
BLAKE2b-256 checksum
How to use checksums
e08a17ec38374da801d01555b8e2a517a1d4f4464c84c7df0901826350d76ec6
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 Sep 21, 2026.

Transparency log

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

Download URL timesift-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Size 200.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7357218e89e24448de00434ab75a0f17e118e2aba0d5468abab79634296d6799
BLAKE2b-256 checksum
How to use checksums
f48a506530aa7c0734e336607070a62f27d70c221caa7ed85731b8902681bb34
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 Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.2

10 release files

0.3.1

10 release files

This release

0.3.0 This release

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