Skip to content

Methods compared

Ways to assemble a long series from a pool of N generated windows (which K windows, in what order, how the seams are processed) and long-series generators. vae_zseries is zseries, the proprietary assembler of zypl.ai (under development), on the same pool: its results are published (Config.frozen_methods), its code is not part of the repository. Its results and those of its seam-processing variants vae_zseries_{xfade,wsola,quilt} enter the tables and the analysis as published; the pipeline does not run them.

Only methods whose series enter the benchmark tables are listed here: each outputs a series of length K·T in the same channels and enters the utility test of BENCHMARK.md (Protocol: utility) like any other series. Methods that were considered but not included are in LITERATURE.md.

In the benchmark (BENCHMARK.md) all profiles use all methods of sections A and B except CSDI, plus Diffusion-TS, Chronos, TimesFM and Timestral from section C; the noise twin vae_rand_b runs in mid and max only. All methods of A and B take the same VAE pool (min: 300 windows); the methods of B are applied on top of the vae_zseries path (published results; max: in addition on top of every assembler except the random path and vae_quilting, run by the pipeline).

Each alternative assembler uses the seam criterion of its own literature, nothing taken from vae_zseries. The three solvers (greedy, ATSP, PCTSP) are general-purpose optimisers without a seam criterion of their own; they get the jump at the seam — the Euclidean distance between the last point of a window and the first point of the next, over every channel (value and hour of week, all on [0, 1]) — the frame distance of video textures (Schödl et al. 2000).

Method In the benchmark Implementation
Random path vae_rand (control); vae_rand_b — a second random order, noise estimate (mid, max) marathonts/bench/assemblers.py random, random_b
Greedy nearest neighbour vae_greedy (start from a random window) greedy
ATSP, LKH vae_atsp atsp (elkai)
Prize-collecting TSP vae_pctsp (up to 2000 solutions, no more than 60 s per unit) pctsp (OR-Tools)
Matched-block bootstrap vae_mbb (Gaussian kernel, h = median jump) mbb
k-nearest-neighbour resampling vae_knn (k = round(√N), weights ∝ 1/rank) knn
Image quilting vae_quilting (overlap of 12 points, tolerance 0.1) quilt_sel + joiner quilt
Kernel herding + random order vae_herding herding
zseries vae_zseries (published results) — (code not part of the repository)
Overlap-add / crossfade vae_zseries_xfade (overlap of 12 points; published results); max: vae_<assembler>_xfade marathonts/bench/joiners.py crossfade
WSOLA vae_zseries_wsola (shift of up to 12 points; published results); max: vae_<assembler>_wsola wsola
Image quilting (boundary cut only) vae_zseries_quilt (published results); max: vae_<assembler>_quilt quilt
Seam inpainting: CSDI no (requires a separately trained diffusion model) —
Diffusion-TS diffusion_ts (min, mid: trained once per dataset; max: on every seed) marathonts/bench/generators/builtin.py
Chronos chronos marathonts/bench/generators/builtin.py
TimesFM 3.0 timesfm (median forecast, the whole train as context, up to 15 360 points) marathonts/bench/generators/builtin.py
Timestral 209M timestral (median forecast, the whole train as context, up to 32 768 points) marathonts/bench/generators/builtin.py
TimeGAN no (candidate: pool generator, EXTENDING.md) —

"In-house" in the "Code" column means that there is no ready-made library, but the method takes 10–40 lines on top of the pool (marathonts/bench/assemblers.py).

A. Same window pool, different selection and order

A comparison of assembly proper: the generator and the pool are the same for all. Every method draws K windows without repeats.

Method Idea Year Paper Code
Random path K random windows from the pool in random order — — BENCHMARK.md, What is compared
Greedy nearest neighbour At each step the window with the smallest jump at the seam is taken — — in-house
ATSP, Lin–Kernighan–Helsgaun Shortest Hamiltonian path over the matrix of jumps at the seams 2000 Helsgaun K. An effective implementation of the Lin–Kernighan traveling salesman heuristic. EJOR 126(1), 2000 elkai — github.com/fikisipi/elkai. The tour is built over all N windows, and the best segment of length K is taken from it. LKH licence: non-commercial only
Prize-collecting TSP (selection of K out of N + order) A route that may skip vertices at a penalty — subset selection and order at the same time 1989 Balas E. The prize collecting traveling salesman problem. Networks 19(6), 1989 Google OR-Tools, routing + AddDisjunction — github.com/google/or-tools (Apache 2.0). Costs converted to integers, exactly K windows via a visit counter
Matched-block bootstrap The next block is drawn with a kernel of how well its beginning matches the end of the current block 1998 Carlstein E., Do K.-A., Hall P., Hesterberg T., Künsch H. Matched-block bootstrap for dependent data. Bernoulli 4(3), 1998 in-house: P(i→j) ∝ exp(−½ (jump_ij / h)²), h = median jump
k-nearest-neighbour resampling The next piece is the successor of one of the k nearest neighbours of the current state, drawn with weight ∝ 1/rank; k = √n 1996 Lall U., Sharma A. A nearest neighbor bootstrap for resampling hydrologic time series. Water Resources Research 32(3), 1996 in-house: the k windows whose first point is nearest to the last point of the current window
Image quilting The next patch overlaps the current one; it is drawn at random among the patches whose overlap error is within (1 + ε) of the best, and the overlap is cut along the minimum-error boundary 2001 Efros A., Freeman W. Image quilting for texture synthesis and transfer. SIGGRAPH 2001 in-house: overlap of 12 points, ε = 0.1, sum of squared differences of the value channel; the cut — joiner quilt
Kernel herding / MMD selection + random order Windows that minimise MMD to train are selected greedily; the order is random — separates the effect of selection from the effect of order 2010 Chen Y., Welling M., Smola A. Super-samples from kernel herding. UAI 2010; MMD: Gretton A. et al. A kernel two-sample test. JMLR 13, 2012 in-house; a similar submodular selection — apricot-select, github.com/jmschrei/apricot
zseries (vae_zseries) The proprietary assembler of zypl.ai (under development); its results are published, its code is not part of the repository — — —

The seam cost of the solvers: Schödl A., Szeliski R., Salesin D., Essa I. Video textures. SIGGRAPH 2000.

B. Seam processing

Applied on top of the vae_zseries path (min, mid: the published results vae_zseries_{xfade,wsola,quilt}; max: in addition on top of every assembler except the random path and vae_quilting, which has its own boundary cut). Because of the overlap the series is shorter than K·T, so additional windows are taken to reach the required length.

Method Idea Year Paper Code
Overlap-add / crossfade Windows overlap by o points and are blended with window weights (Hann) 1977 Allen J., Rabiner L. A unified approach to short-time Fourier analysis and synthesis. Proc. IEEE 65(11), 1977 in-house + scipy.signal.windows.hann
WSOLA Before blending, the next window is shifted within a tolerance to maximise the correlation in the overlap 1993 Verhelst W., Roelands M. An overlap-add technique based on waveform similarity (WSOLA). ICASSP 1993 in-house
Image quilting (min-error boundary cut) In the overlap zone a cut with minimum error is sought (DP); in 1D — the join point with min |a−b| 2001 Efros A., Freeman W. Image quilting for texture synthesis and transfer. SIGGRAPH 2001 in-house
Seam inpainting: CSDI A diffusion model fills in the zone around the seam, conditioned on both neighbouring windows 2021 Tashiro Y., Song J., Song Y., Ermon S. CSDI: Conditional score-based diffusion models for probabilistic time series imputation. NeurIPS 2021 github.com/ermongroup/CSDI. Must be trained on the train windows

C. Another generator or long-series generation without assembly

A comparison of the whole "VAE + assembly" approach, not only of the assembly: the generator changes.

Method Idea Year Paper Code
Diffusion-TS (autoregressive continuation) A diffusion transformer; the next window is generated in imputation mode, conditioned on the tail of the previous one 2024 Yuan X., Qiao Y. Diffusion-TS: Interpretable diffusion for general time series generation. ICLR 2024 github.com/Y-debug-sys/Diffusion-TS. Must be trained on the same windows
Chronos (trajectory sampling) A pretrained foundation model; a trajectory of length K·T is sampled from the tail of train without training 2024 Ansari A. F. et al. Chronos: Learning the language of time series. TMLR 2024 github.com/amazon-science/chronos-forecasting (Apache 2.0). Univariate: K·T steps (5040 in min) are generated in chunks, the calendar is computed from time
TimesFM (median forecast) A pretrained decoder-only foundation model (Google), zero-shot; the K·T steps after train are its median forecast in one pass. No sampling: the same series on every seed 2024 (3.0: 2026) Das A., Kong W., Sen R., Zhou Y. A decoder-only foundation model for time-series forecasting. ICML 2024 github.com/google-research/timesfm (code Apache 2.0, weights of 3.0: TimesFM Non-Commercial License v1.0)
Timestral (median forecast) A pretrained foundation model (Mistral), zero-shot; the K·T steps after train are its median forecast, block by block (1024 steps) with the median fed back. No sampling 2026 Mistral AI. Timestral (announcement, 15 October 2026; no paper yet) github.com/mistralai/timestral (code Apache 2.0, weights Modified MIT)
TimeGAN (pool generator replacement) A GAN with a supervised one-step-ahead loss in latent space; the TimeGAN pool is assembled by every assembler of the suite 2019 Yoon J., Jarrett D., van der Schaar M. Time-series generative adversarial networks. NeurIPS 2019 tsgm; github.com/jsyoon0823/TimeGAN